STRYK, POS API
Connect your POS to STRYK
Room charges from restaurant and bar: setup, API contract and safe retries.
Loading …
1Setup
First confirm with your till supplier that it can call the STRYK API. STRYK receives room charges; a till offering its own API or OAuth needs a suitable adapter. Generating a key does not establish vendor compatibility. In POS → Setup, create an outlet with a valid tax, issue an outlet-restricted key and share this guide with the supplier. GET /ping checks connectivity; a controlled room charge verifies the write process.
2Keys & security
The complete key starts with pos_live_ and is returned only at creation. The eye changes visibility only; Copy always copies the complete value. Later only its identifier remains. Use keys server-side over HTTPS, never in browser code or logs. Before rotation reconcile pending receipts using the old key: references and lookups belong to that key. Never replay old receipts under a new key. Then revoke the old key.
3Room account & amounts
Before posting, verify guest and room using /accounts or /room-lookup. Only physically checked-in stays that have not checked out can be charged. Respect allowCharge, No-Post, credit limits and a closed invoice account. Send bookingId and room together to disambiguate room moves and multi-room stays. Prices are positive gross amounts in hotel currency; tax must be configured for the service date. Quantity rounds to three decimals, money to two. Send chargedAt with a timezone; posting after checkout is not supported.
4Posting & retries
Each item needs a permanent unique externalRef. After a timeout, GET /charges/{externalRef} first: reconcile an existing result; only on 404 resend the same request with the same key and reference. Exact replay returns 201 with idempotentReplay=true. Changed content or a cancelled reference returns 409. Up to 50 items post atomically. On 429 wait at least 60 seconds and retry with backoff; the limit is 100 requests per minute per key.
5Cancellation & invoice
DELETE /charges/{externalRef} cancels an open item belonging to the connection; repeated cancellation has no duplicate effect. Transferred invoice items cannot be cancelled this way: correct them in Finance. Posting to a room is not a payment. Open items are transferred to the invoice during checkout. If staff enter a receipt during an outage, record its reference and reconcile before later API submission to prevent duplicates.
6Webhooks & acceptance
Optional webhooks report charge.posted and charge.cancelled. Configure a separate webhook secret and verify HMAC-SHA256 against the unchanged raw request body. X-STRYK-Webhook-Id identifies the subscription, not a unique delivery. Deduplicate using event and data.chargeId; do not assume delivery order. Before acceptance test connectivity, a controlled real charge, retry, No-Post, limits, multi-room stays, cancellation, invoice transfer and webhook retries. This documentation never sends charges.