Skip to main content

Pay at Table

The "Pay at Table" (PAT) integration allows waiters to retrieve and pay for orders on a POS, via Dojo card machines. This integration communicates with the POS system to retrieve open orders and notify the POS system about payments via the EPOS Data API.

We recommend reading our documentation on Orders before beginning this integration, as this is the main entity which the Pay at Table integration depends upon: the Dojo card machines will display payable orders which are returned from the POS system via the SearchOrders capability, lock and unlock orders via the CreateOrderLock and DeleteOrderLock capabilities, and provide payments to be recorded via the RecordOrderPayment capability. Dojo may also request to extend the length of the table lock by invoking the ExtendOrderLock capability.

Integration

You can integrate into the PAT flow using a combination of the REST API, and/or the WebSockets API implementation of the EPOS Data API, depending on your POS system's architecture. If you're unsure as to which implemenation option would best suit your system please contact your Partnership Development Manager (PDM).

The following capabilities are required to be implemented for Pay at Table:

SearchOrders

Bookings
Order & Pay
Pay at Table
QR Pay

POST REST /v1/orders

REQUEST
RESPONSE
WS GetOrderByIdV1

This capability enables searching for orders based on various criteria. It supports filtering and pagination to help Dojo products efficiently find orders within the POS system. Each Dojo product has different requirements on what filters must be implemented which can be found on the product documentation page(s).

GetOrderById

Bookings
Order & Pay
Pay at Table
QR Pay

GET REST /v1/orders/{orderId}

REQUEST
RESPONSE
WS GetOrderByIdV1

This capability enables the POS system to retrieve detailed information about a specific order using its unique order ID. This is crucial for order tracking and status updates.

CreateOrderLock

Pay at Table

POST REST /v1/orders/{orderId}/lock

This capability allows Dojo to fetch the latest and full state of the order from the POS system. This will include a unique lockId and offer the POS the opportunity to "lock" the table to prevent further changes while payment is being made, although this is not mandatory.

DeleteOrderLock

Pay at Table

DELETE REST /v1/orders/{orderId}/locks/{lockId}

REQUEST
RESPONSE
WS DeleteOrderLockV1

This capability, when requested, gives the opportunity for the POS to allow further actions and updates to the order if these were previously disabled by a CreateOrderLock.

ExtendOrderLock

Pay at Table

PUT REST /v1/orders/{orderId}/locks/{lockId}

This capability allows Dojo to extend the length of a requested Order lock if required by the card machine. With this implemented Dojo will request locks with shorter expiries and extend them when needed, this reduces the chance of a lock being held on an order for a long period of time when there is a communication breakdown between Dojo and the POS.

RecordOrderPayment

Order & Pay
Pay at Table
QR Pay

POST REST /v1/orders/{orderId}/record-payment

This capability allows Dojo to record a payment against an order. All payments recorded this way will be sent with their paymentIntentId which is unique and can be used for both deduplication and to control the lifecycle of the payment with operations like Get and Reversal.