Skip to main content

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

MessageDirectionDescription
tableListRequestTerminal → EPoSRequests the list of open tables
tableListResponseEPoS → TerminalYour response. Array of table IDs (or empty). Include currency if you return any tables.
tableLockRequestTerminal → EPoSSent after the waiter picks a table. Contains tableId.
tableLockResponseEPoS → TerminalYour response. Set confirmed to true to grant the lock. If true, include amount (minor units) and currency.
posReceiptRequestTerminal → EPoSTerminal wants a receipt printed before payment
posReceiptResponseEPoS → TerminalYour response. receiptLines — ordered list of printable lines (text, separators, barcode, image).
transactionResponseTerminal → EPoSSent after the terminal takes one or more payments. Totals plus breakdown (method, scheme, amounts, auth code, etc.).
finalPOSReceiptRequestTerminal → EPoSRequests a final receipt after payment (if connection string includes final-pos-receipt)
finalPOSReceiptResponseEPoS → TerminalYour response. Same line-based format as posReceiptResponse.
tableUnlockTerminal → EPoSTerminal is done. EPoS can make the table editable again.
errorMessageEitherSomething went wrong. Code and message. Some include userMessage to show staff (e.g. terminal unavailable).