Keep a Scan to pay sale for the customer to pay later
- Credentials, one of
- Station token
- OAuth access token
- Scopes
orders:write- Subscription
- Needs an active plan. Otherwise
403 subscription_locked. - Idempotency
- Send an
Idempotency-Keyheader. A retry with the same key does the work once.
The customer will pay later from the link they already have ("Pay later"). The sale is handed over and its stock taken now (the customer took it; stock may go below zero), and it waits in listTillWaiting until the money lands, by the link or recorded with settleTillWaiting. Nothing is cancelled, and the link lasts a week. status: paid when the money landed while the QR was up: finish it as a normal Scan to pay sale instead. Doing it twice changes nothing.
Till PINs: when the store uses them, the cashier is the one cashierTicket names (403 cashier_required without one).
Access: OAuth scope orders:write; write-gated by the subscription.
AuthorizationBearer <token>It may call only the operations whose x-stations lists its kind, on its own store, and acts through the access of the owner or admin who paired it. Unpairing it, or that person leaving the business, ends it (401 station_revoked).
storeId*stringA store the person can reach. Any other id answers 404, never 403.
orderId*stringIdempotency-Key*stringRequired on every write. Minted on the device when the person taps, reused on every retry. A write without one, or with one that does not match the pattern, is refused with 422 validation_error. Scoped to the token's subject, remembered 24 hours. A replay returns the first 2xx response with Idempotent-Replay: true; a request still running answers 409 in_flight; the same key with a different method, path or body answers 409 idempotency_key_reused; non-2xx results are not remembered. If the key store cannot be read nothing is processed and the answer is 503 idempotency_unavailable: retry with the same key.
^[A-Za-z0-9_-]{8,128}$application/json- body
cashierTicket?stringNeeded when the store uses till PINs.
OK
application/json- response
data*curl -X POST 'https://api.shopeazy.co/v1/merchant/stores/<storeId>/till/scan-to-pay/<orderId>/keep' \ -H 'Authorization: Bearer <access_token>' \ -H 'Idempotency-Key: <unique_key>' \ -H 'Content-Type: application/json' \ -d '{}'{ "data": { "status": "kept", "number": "string" }}Has the customer paid yet GET
`waiting`, `paid`, or `cancelled` (the order was cancelled). The till asks every few seconds while the QR is up and stops when it is closed: one order, read by id. Nothing is charged or changed. Access: OAuth scope `orders:read`; not write-gated.
Till sales waiting to be paid GET
Sales kept with `keepScanToPay` and not paid yet, oldest first: who still owes the merchant, and how much. A sale leaves the list once its money lands (from the link, or `settleTillWaiting`) or it is cancelled. Read from the server, so every till shows the same list. Access: OAuth scope `orders:read`; not write-gated.