Send a message to a POS terminal
curl -X POST "https://test-api.kashier.io/v3/payment/pos/messages/YOUR_TERMINAL_SERIAL" \ -H "Content-Type: application/json" \ -d '{ "event": "sale", "data": { "message": { "amount": "100.00", "currency": "EGP", "merchantOrderId": "ORD123456", "transactionType": "sale", "printReceipt": true, "metaData": {}, "reconciliation": { "webhookUrl": "https://your-website.com/kashier-pos-webhook" } } } }'{ "status": "string", "body": {}}Relays a JSON message to one of your POS terminals. Kashier authenticates you as the merchant, confirms the terminal belongs to your account, and forwards the message to the terminal in real time over its websocket connection.
Two events are used by merchant backends:
- sale — start a card-present payment on the terminal. Kashier additionally checks that data.message.merchantOrderId has not already been paid.
- details — pull the details of a transaction you already know the transactionId of.
A 200 only means the message reached the terminal. The card-present result (approved / declined) arrives later on the data.message.reconciliation.webhookUrl you supplied, carrying a transactionResponseCode. If the terminal is powered off or otherwise not connected, the call fails with 404.
Only the top-level event and data are validated by Kashier; everything inside data.message is relayed verbatim and is enforced by the terminal application.
Authorization
secretKey Merchant secret key used to identify the merchant, obtained from Kashier's dashboard. Pass the raw secret key value in the Authorization header (NOT a "Bearer" token).
In: header
Path Parameters
The serial number of the POS terminal, which is the address the message is delivered to. (Some older guides call this path parameter POSSerialNumber; the value is the terminal serial number either way.)
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
A message relayed to the terminal. Only event and data are validated by Kashier; the contents of data.message are enforced by the terminal application.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
Get request transactions GET
Returns the transactions that belong to a specific request, paginated. Rows an agent removed from the request stay on it and come back with selected: false and an unselectedAt timestamp; use the se…
Generate a POS payment QR code POST
Generates a QR code that a customer scans with their phone to open a Kashier hosted payment page for the order, instead of presenting a card at the terminal. The response carries the QR image as a…