The PAC API supports one or more simultaneous WebSocket connections to drive one or more terminals. This is to allow for multiple EPoS systems to interact with the same pool of terminals.
The PAT API can only interact with one WebSocket connection at a time. This ensures an integrating EPoS system has only one point of entry for requests from terminals. Should multiple connections be made, the last to connect will be the one to receive terminal requests with the other connections being discontinued (see the "Connection Discontinued" error message for more details).
Useful for when it is unknown which terminals are connected (e.g. when deciding to which terminal to send a transaction).
Useful for when it is unknown which terminals are connected or when searching for a terminal that can handle a specific request.
N/A
Identical to a "Terminals Details" Response.
Similar to a "Connected Terminals" request except this request returns details for a specific terminal. Useful if trying to find out the status of a specific terminal.
Similar to a "Connected Terminals" request except this request requires a list of TPIs for which the EPoS is requesting details. Useful for when the connected terminals are already known or if trying to find out the status of a specific terminal(s).
N/A
Identical to a "Connected Terminals" Response.
While this request is being processed other requests and notifications could be sent to Connect or to the EPoS, these include:
For a summary of how this request can flow, please see the Websocket PAC Transaction Flow.
While this request is being processed other requests and notifications could be sent to Connect or to the EPoS, these include:
For a summary of how this request can flow, please see the Websocket PAC Transaction Flow.
While this request is being processed other requests and notifications could be sent to Connect or to the EPoS, these include:
For a summary of how this request can flow, please see the Websocket PAC Transaction Flow.
The 'transactionResult' property in this message is what should be actioned to determine the result of this transaction request.
In the case of a response having a 'transactionResult' value of 'TIMED_OUT', it will be unknown to the EPoS if the transaction was successful or unsuccessful. To accommodate for this exceptional circumstance we recommend the EPoS has the ability to manually record the payment in case the actual result of the transaction was successful.
All receipts by default are printed on the terminal even when they are returned to the EPoS.
The number and type of receipts provided can differ depending on what receipts the terminal generates. Due to this, we recommend not relying on any information contained within the 'receiptLines' property, only store and/or print the receipt(s). Examples of receipt behaviour include:
Please see the Configuration Options page for more information about terminal receipt printing options and contactless Customer receipt options.
If transaction information (including a duplicate receipt) is required again and no new transactions have already taken place on the terminal, a Duplicate request can be made to get this information.
For a summary of how we recommend this perform transaction response is handled by the EPoS, please see the Websocket PAC Transaction Flow.
The 'transactionResult' property in this message is what should be actioned to determine the result of this transaction request.
In the case of a response having a 'transactionResult' value of 'TIMED_OUT', it will be unknown to the EPoS if the transaction was successful or unsuccessful. To accommodate for this exceptional circumstance we recommend the EPoS has the ability to manually record the payment in case the actual result of the transaction was successful.
All receipts by default are printed on the terminal even when they are returned to the EPoS.
The number and type of receipts provided can differ depending on what receipts the terminal generates. Due to this, we recommend not relying on any information contained within the 'receiptLines' property, only store and/or print the receipt(s). Examples of receipt behaviour include:
Please see the Configuration Options page for more information about terminal receipt printing options and contactless Customer receipt options.
If transaction information (including a duplicate receipt) is required again and no new transactions have already taken place on the terminal, a Duplicate request can be made to get this information.
For a summary of how we recommend this perform transaction response is handled by the EPoS, please see the Websocket PAC Transaction Flow.
A transaction can also be cancelled using the 'Cancel' button on the terminal. There are situations where the cancel button on the terminal can cancel a transaction but this cancel request will fail - this is dependent on terminal type.
A transaction can also be cancelled using the 'Cancel' button on the terminal. There are situations where the cancel button on the terminal can cancel a transaction but this cancel request will fail - this is dependent on terminal type.
N/A
If the cancel request was successful then the Perform Transaction request will also receive a response.
The reports a terminal can complete are:
The reports a terminal can complete are:
We recommend this information is stored or printed for the purposes of reconciliation.
We recommend this information is stored or printed for the purposes of reconciliation.
If the terminal's printer is enabled, it will print the Duplicate Customer receipt.
If the terminal's printer is enabled, it will print the Duplicate Customer receipt.
N/A
N/A
The terminal will remain in a 'BUSY' state until this request is replied to / times out, and until the transaction this request applies to has provided a response.
If the terminal's printer is disabled, the receipt in this request should be printed for the customer to sign and for the merchant to verify. This receipt should then be kept by the merchant as proof of sale. We recommend not relying on any information contained within the 'receiptLines' property, only print the receipt.
A final customer receipt (and a final merchant receipt in the case of signature non-acceptance) will be provided in the Perform Transaction response.
The terminal will remain in a 'BUSY' state until this request is replied to / times out, and until the transaction this request applies to has provided a response.
If the terminal's printer is disabled, the receipt in this request should be printed for the customer to sign and for the merchant to verify. This receipt should then be kept by the merchant as proof of sale. We recommend not relying on any information contained within the 'receiptLines' property, only print the receipt.
A final customer receipt (and a final merchant receipt in the case of signature non-acceptance) will be provided in the Perform Transaction response.
If an accepted response is provided a Perform Transaction response should shortly be received.
If a not accepted response is provided the terminal will attempt to reverse the transaction and a final response will be provided in the Perform Transaction response.
If an accepted response is provided a Perform Transaction response should shortly be received.
If a not accepted response is provided the terminal will attempt to reverse the transaction and a final response will be provided in the Perform Transaction response.
Terminal notifications are provided to be displayed on an EPoS, so the user can be informed of the current state of a transaction on a terminal.
The only way we recommend relying on these notifications other than to be displayed is for the enabling/disabling of the EPoS users ability to send a Cancel Transaction request.
Terminal notifications are provided to be displayed on an EPoS, so the user can be informed of the current state of a transaction on a terminal.
The only way we recommend relying on these notifications other than to be displayed is for the enabling/disabling of the EPoS users ability to send a Cancel Transaction request.
Please note not all error messages are sent in reply to a request, so the 'id' element may be excluded.
A table of error message codes is below:
Please note not all error messages are sent in reply to a request, so the 'id' element may be excluded.
A table of error message codes is below:
N/A
N/A
This is requested when the PDQ needs to display a list of currently open tables.
Should this request not be replied to within the timeout, it will be assumed that there are no open tables.
This is requested when the PDQ needs to display a list of currently open tables.
Should this request not be replied to within the timeout, it will be assumed that there are no open tables.
The 'tpi' value in this request is reserved for future use and for the time being will be set to its default value.
This list will be displayed on the terminal for the user to choose which table they would like to lock. On the user selecting a table the terminal will make a Table Lock Request before it attempts to complete the sale.
If there are no tables to lock, the tables value should be an empty array.
This list will be displayed on the terminal for the user to choose which table they would like to lock. On the user selecting a table the terminal will make a Table Lock Request before it attempts to complete the sale.
If there are no tables to lock, the tables value should be an empty array.
This request confirms to the terminal that it has the lock on a table, and that an EPoS user will be unable to change that table while the terminal is processing the transaction.
When the transaction has finished the terminal will send a Table Unlock Notification so the EPoS can unlock the table for use again, as well as a Transaction Response providing details of the transaction.
If the terminal's Waiter Id prompt is disabled, the 'WaiterId' value will be set to it's default value.
Should this request not be replied to within the timeout, it will be assumed that the table cannot be locked.
This request confirms to the terminal that it has the lock on a table, and that an EPoS user will be unable to change that table while the terminal is processing the transaction.
When the transaction has finished the terminal will send a Table Unlock Notification so the EPoS can unlock the table for use again, as well as a Transaction Response providing details of the transaction.
If the terminal's Waiter Id prompt is disabled, the 'WaiterId' value will be set to it's default value.
Should this request not be replied to within the timeout, it will be assumed that the table cannot be locked.
The 'tpi' value in this request is reserved for future use and for the time being will be set to its default value.
Once a terminal has confirmation of a table lock, it will prompt the user asking if they would like a receipt for the table, which if requested will invoke a POS Receipt Request.
Once a terminal has confirmation of a table lock, it will prompt the user asking if they would like a receipt for the table, which if requested will invoke a POS Receipt Request.
This is requested when a PDQ user wishes to print an EPoS receipt on the PDQ.
Should this request not be replied to within the timeout, a blank receipt will be sent to the terminal so the user can continue with the transaction.
This is requested when a PDQ user wishes to print an EPoS receipt on the PDQ.
Should this request not be replied to within the timeout, a blank receipt will be sent to the terminal so the user can continue with the transaction.
The 'tpi' value in this request is reserved for future use and for the time being will be set to its default value.
This is requested when a PDQ user wishes to print an EPoS receipt on the PDQ.
Should this request not be replied to within the timeout, a blank receipt will be sent to the terminal so the user can continue with the transaction.
The 'tpi' value in this request is reserved for future use and for the time being will be set to its default value.
The receipt is defined by an ordered array of receipt lines. Detailed information on how these can be defined can be found in the JSON schema above, but in summary each line can be an object of type:
The receipt is defined by an ordered array of receipt lines. Detailed information on how these can be defined can be found in the JSON schema above, but in summary each line can be an object of type:
This is requested if final-pos-receipt has been sent in the connection string. It is sent following the transactionResponse and prints a final receipt on the terminal following any payments.
Should this request not be replied to within the timeout, a blank receipt will be sent to the terminal so the user can continue with the transaction.
The response follows the same format as a standard posReceiptRequest. The receipt is defined by an ordered array of receipt lines. Detailed information on how these can be defined can be found in the JSON schema above, but in summary each line can be an object of type:
If no transaction response is received, it can be assumed that no payments have taken place against the table.
To accommodate for the exceptional circumstance of a transaction response not being received for a table and there being no terminal currently processing a transaction for that table, we recommend the EPoS has the ability to manually record any payments taken for a table. This could be restricted to specific users or within a supervisor menu to prevent confusion with the normal transaction flow.
Please see the FAQs for details about when the amountCashback value will be set.
If no transaction response is received, it can be assumed that no payments have taken place against the table.
To accommodate for the exceptional circumstance of a transaction response not being received for a table and there being no terminal currently processing a transaction for that table, we recommend the EPoS has the ability to manually record any payments taken for a table. This could be restricted to specific users or within a supervisor menu to prevent confusion with the normal transaction flow.
Please see the FAQs for details about when the amountCashback value will be set.
If no transaction response is received, it can be assumed that no payments have taken place against the table.
To accommodate for the exceptional circumstance of a transaction response not being received for a table and there being no terminal currently processing a transaction for that table, we recommend the EPoS has the ability to manually record any payments taken for a table. This could be restricted to specific users or within a supervisor menu to prevent confusion with the normal transaction flow.
Please see the FAQs for details about when the amountCashback value will be set.
To accommodate for the edge case of an unlock notification not being received and there being no terminal currently processing a transaction (and hence holding the lock) for that table, we recommend the EPoS has the ability to manually unlock a table. This could be restricted to specific users or within a supervisor menu to prevent confusion with the normal transaction flow.
To accommodate for the edge case of an unlock notification not being received and there being no terminal currently processing a transaction (and hence holding the lock) for that table, we recommend the EPoS has the ability to manually unlock a table. This could be restricted to specific users or within a supervisor menu to prevent confusion with the normal transaction flow.
This is only available for 'END_OF_DAY' reports. This notification will not be sent for other report types.
This is only available for 'END_OF_DAY' reports. This notification will not be sent for other report types.