Free cash register

Kash.click, free online POS software since 2011

Follow Us

Help Center

This help will guide you through the setup and usage of our point of sale cash register software.

Search by keyword in the help section:

Webhook (HTTP notifications)

Kash.click supports two families of webhooks: legacy webhooks, preserved for backward compatibility, and new generation JSON webhooks intended for integrations with Zapier, Make, n8n, Pipedream or your own services.

To create, modify, list, or view JSON webhook logs, see the page Webhook management.

Next-generation JSON webhooks

Each delivery is sent via POST with a stable JSON body and signature headers. Unnecessary sensitive data is not exposed in customer, product, and checkout closing objects.

Common JSON envelope

FieldDescription
idUnique identifier of the event, prefix evt_.
typeEvent type, for example sale.created.
created_atDate UTC ISO-8601 of event creation.
account_idKash.click store ID.
dataObject containing useful business data.
{ "id": "evt_6e6f9d9e7c7c4d71b97c2f51", "type": "sale.created", "created_at": "2026-07-16T10:00:00Z", "account_id": 123, "data": {  "sale": {   "id": 98765,   "number": 42,   "total": 59.9,   "paid": 59.9,   "is_refund": false,   "cashbox_id": 7,   "delivery_method": "Counter sale"  },  "customer": {   "id": 456,   "name": "Martin",   "surname": "Julie",   "email": "julie@example.com"  },  "items": [],  "payments": [],  "invoice": {   "id": 98765,   "number": 42,   "pdf_url": "https://php7.enregistreuse.fr/workers/webpages/downloadInvoice.php?idcommande=98765&verif=..."  } }}

Headers sent

HeaderAmount
Content-Typeapplication/json
User-AgentKash.click Webhooks/1.0
X-Kash-EventType of event sent.
X-Kash-DeliveryUnique delivery identifier, prefix del_.
X-Kash-TimestampUnix uses timestamps for signatures.
X-Kash-Signaturev1= , present when the webhook has a secret.

Signature verification

The signature is calculated using the shared secret of the webhook, on the timestamp, a dot, then the raw JSON body exactly received.

expected = "v1=" + hex_hmac_sha256(X-Kash-Timestamp + "." + raw_body, webhook_secret)
$timestamp = $_SERVER["HTTP_X_KASH_TIMESTAMP"];$signature = $_SERVER["HTTP_X_KASH_SIGNATURE"];$body = file_get_contents("php://input");$expected = "v1=".hash_hmac("sha256", $timestamp.".".$body, $secret);if (!hash_equals($expected, $signature)) {  http_response_code(401);  exit;}if (abs(time() - intval($timestamp)) > 300) {  http_response_code(401);  exit;}

Types of events available

Type Triggering Data Main payload
customer.created Creating a client from the API or interface. customer data.customer
customer.updated Modifying a client from the API or interface. customer data.customer
sale.created Order confirmed, no refund. sale, customer, items, payments, invoice data.sale, data.customer, data.items, data.payments, data.invoice
sale.refunded Refund order validated. sale, customer, items, payments, invoice data.sale.is_refund vaut true
sale.paid Order completed or fully paid for. sale, customer, items, payments, invoice data.sale, data.customer, data.items, data.payments, data.invoice
product.created Creating an article from the API or the interface. product data.product
product.updated Modifying an article from the API or the interface. product data.product
stock.low The stock falls below the configured alert threshold. product, stock data.product, data.stock
stock.out The stock drops to zero. product, stock data.product, data.stock
order.sent_to_preparation Order sent for preparation. sale, customer, items, payments, invoice Meme structure que les events de vente.
order.preparation_completed Order preparation complete. sale, customer, items, payments, invoice Meme structure que les events de vente.
delivery.started Delivery has started. sale, customer, items, payments, invoice Meme structure que les events de vente.
day_closing.created Cash register closure created. day_closing data.day_closing
The dedicated events invoice.created, invoice.paid, appointment.created, and appointment.cancelled are not exposed in this version of the code. Invoice information is included in the sales events via data.invoice.

Details of data objects

data.customer

Sent for customer.created, customer.updated, and included in sales events when an order is linked to a customer.

FieldDescription
idInternal customer identifier.
nameSurname
surnameFirst name
titleTitle
emailEmail
phoneMain telephone number.
phone2Secondary telephone number.
addressline1Address line 1
addressline2Address line 2
postcodePostcode
cityCity
countryCountry
customer_group_idCustomer group identifier.
accounting_codeCustomer accounting code.

data.product

Sends for product.created, product.updated, stock.low and stock.out.

FieldDescription
idInternal identifier of the article.
titleLong title.
short_titleShort title
descriptionDescription
priceSelling price
buying_pricePurchase price
barcodeBarcode.
department_idDepartment identifier.
vat_idVAT rate identifier.
stockQuantity available.
stock_alertArticle-specific alert threshold.
unit_idUnit identifier.
unavailable1 if the item is unavailable.
shop_hidden1 if the item is a mask from the online store.

data.stock

Ships only with stock.low and stock.out.

FieldDescription
previousStock before the operation.
currentStock after the operation.
deltaApplied variation.
alert_thresholdThreshold used to trigger stock.low.

data.sale

Sends for sale.created, sale.refunded, sale.paid, order.sent_to_preparation, order.preparation_completed and delivery.started.

FieldDescription
idInternal order identifier.
numberAccounting number / number visible when available.
titleOrder title.
created_atOrder creation date.
validated_atOrder validation date.
value_atValue date
totalTotal order amount.
paidAmount paid known at the time of the event.
is_refundtrue if the event corresponds to a refund.
cashbox_idCash register ID.
delivery_methodDelivery method label.
delivery_method_idDelivery method identifier.
FieldDescription
paymentsOrder payment table. The main fields are id, idModePaiement, idTypePaiement, datePaiement, montantPaye and montantVerse.
itemsTable of order item lines. It includes the business fields of the order line, including item, quantity, price and VAT when available.

data.invoice

Included in sales and order cycle events.

FieldDescription
idInternal identifier of the order/invoice.
numberInvoice number visible when available.
pdf_urlPDF download URL.

data.day_closing

Sends for day_closing.created.

FieldDescription
cashbox_idCash register ID.
cashbox_nameCash register name
totalTotal cash over the period.
opened_atUTC ISO-8601 opening date.
closed_atUTC ISO-8601 closing date.

Reliability and retries

  • An HTTP 2xx response marks the delivery as successful.
  • Other responses or network errors remain pending until the next attempt.
  • The retry intervals are 1 minute, 5 minutes, 15 minutes, 1 hour, then 6 hours.
  • After 5 attempts, the delivery status changes to failed.
  • Each attempt stores the date, HTTP code, a response snippet, and the error message.

Historical Webhooks

The old saleWebhookURL and openingWebhookURL fields are still supported. They submit application/x-www-form-urlencoded forms and do not replace the new generation JSON webhooks.

historical command webhook

The URL configured for sales is called when an order is validated or completed.

  • type : validated or terminated
  • isRefund : true/false if refund
  • orderID : order accounting number
  • orderInternalID : internal order identifier
  • creationDate, validationDate, valueDate : dates in timestamp
  • price, paid : order amounts
  • clientID, client : client identifier and JSON
  • cashBoxID, deliveryMethod : checkout and delivery
  • PDFinvoice : PDF invoice link
  • items, VATs, VAT, payments : JSON articles, VAT and payments
  • HMAC_SHA256, signatureVerificationURL : historical signature and verification URL

Historical webhook for opening/closing cash registers

The URL configured for cash register openings and closings is called when cash register state changes.

  • type : cashBox_close Or cashBox_open
  • total : Total cash received during the period, for cashBox_close
  • opened, closed : opening and closing dates
  • signatureVerificationURL : URL to verify the historical signature
Register now
Licence Creative Commons This document is made available under the terms of the licence Creative Commons Attribution 4.0 International (CC BY 4.0) .