API Reference
All Pay At Table communication happens over a WebSocket. Your EPoS connects to yetipay's PAT endpoint, and both sides use JSON-RPC for requests and responses.
info
The full AsyncAPI spec was previously at /api/pat/epos. Use the original spec for complete schema details.
Connection
Your POS opens a WebSocket connection to the yetipay PAT endpoint. Every message — table lists, locks, receipts, payments, unlocks — uses the JSON-RPC format.
Messages
| Message | Direction | Description |
|---|---|---|
tableListRequest | Terminal → EPoS | Requests the list of open tables |
tableListResponse | EPoS → Terminal | Your response. Array of table IDs (or empty). Include currency if you return any tables. |
tableLockRequest | Terminal → EPoS | Sent after the waiter picks a table. Contains tableId. |
tableLockResponse | EPoS → Terminal | Your response. Set confirmed to true to grant the lock. If true, include amount (minor units) and currency. |
posReceiptRequest | Terminal → EPoS | Terminal wants a receipt printed before payment |
posReceiptResponse | EPoS → Terminal | Your response. receiptLines — ordered list of printable lines (text, separators, barcode, image). |
transactionResponse | Terminal → EPoS | Sent after the terminal takes one or more payments. Totals plus breakdown (method, scheme, amounts, auth code, etc.). |
finalPOSReceiptRequest | Terminal → EPoS | Requests a final receipt after payment (if connection string includes final-pos-receipt) |
finalPOSReceiptResponse | EPoS → Terminal | Your response. Same line-based format as posReceiptResponse. |
tableUnlock | Terminal → EPoS | Terminal is done. EPoS can make the table editable again. |
errorMessage | Either | Something went wrong. Code and message. Some include userMessage to show staff (e.g. terminal unavailable). |