Pay at table
Pay at table allows merchants to make transactions from the EFTPOS terminal instead of the POS, hence allowing them to make purchases away from their desk.
Important to know:
- You must first develop your integration and get it certified. Pay at table must be developed at the end and certified separately. Learn why this is required
- Multi-terminal mode can be used without Pay at table mode. Learn about Multi-pairing
Introduction
An example of Pay at table is at a restaurant when the waiter comes to your table with an EFTPOS terminal for you to pay your bill. This is convenient because you don't need to go to the POS at the desk to make your payment.
Pay at table is not only used in restaurants; it's used in many cases where the merchant needs to make transactions while walking around their establishment.
Normally, the POS starts transactions using the Spice API, but when Pay at table is enabled, the EFTPOS terminal starts transactions instead.
Develop Pay at table
Pay at table is an advanced feature that requires you to develop a database, an API, and a UI.
To understand how it works, let's use the previous example. When the waiter comes to your table, they enter your table number into the EFTPOS terminal. The terminal displays the bill for your table and you can then pay the bill.
The table and bill data are stored in your integration, and it provides an API that Spice uses to get this data and pass it to the terminal. The integration POS also provides a UI for managing tables.
Table database
Pay at table requires your integration to store several fields of data. Here is an example of a database containing these fields, but you may choose to store additional fields or even use a different database structure.
Operators These are the users who have access to making payments from the terminal. |
|
Operator ID | A unique string that identifies the operator. This string must only contain numbers since some terminals don’t accept other characters. |
---|
Tables These are the restaurant tables, hotel bookings, or another way of representing the customer. |
|
Table ID | A unique string that identifies the table; usually numbers are used. |
---|---|
Label | A string that can be used to identify the table, e.g. “long table at the back”. |
Is locked? | When true, the table is ‘locked’, preventing any transactions for the table. |
Operator ID | The operator who created the table. |
Bill ID | A foreign key. A table has a single bill. |
Bills A bill contains the amount owed and paid by a table. |
|
Bill ID | A unique string that identifies the bill. |
---|---|
Total amount | The full amount of money that needs to be paid or was paid. |
Outstanding amount | The amount of money that has not yet been paid. |
Payments A payment that has been made to pay a bill. |
|
Bill ID | A foreign key. A bill can have zero to many payments. |
---|---|
Amount | The amount of money paid. |
Payment type | This can be either “cash” or “card”. |
Table API
Your integration must provide an API with several endpoints that follow our specifications. Spice will call this API to access the table’s data and pay bills. You can find the specifications at the following links.
- GET /v1/tables
- GET /v1/tables/{tableId}
- GET /v1/bills/{billId}
- POST /v1/bills/{billId}
- GET /v1/operators
While a bill is being paid, ensure to 'lock' the table (set Is locked? to
true
) to prevent other terminals from making payments for the same table. This prevents duplicate payments. After the payment is complete, 'unlock' the table.
Table UI
Your integration must also provide a UI for the merchant to manage their tables, bills, and operators from the POS. The table UI should make it easy to view the open tables and perform actions on them.
Your UI must allow the user to perform the following actions.
Open a table | This creates a new table. |
Close a table | This removes an existing table. It will no longer be returned by the Table API. |
Edit bill | Change the total amount of a bill. |
Lock table (optional) |
Change a table’s Is locked? value to true to prevent any transactions from being made for the table. |
Unlock table (optional) |
Change a table’s Is locked? value to false to allow transactions to be made for the table. |
Create operator (optional) |
Create a new operator. |
Remove operator (optional) |
Remove an operator. |
Use Pay at table
After you have developed the Pay at table feature for your integration, it's time to start using it.
Enable Pay at table mode
In Spice, click the Settings tab > Pay at table > enable the Pay at table option.
Pair multiple terminals
When Pay at table is enabled, a Back to terminals button will appear at the top of the screen. Click this to go to the Terminals page where you can pair multiple terminals to the POS. Learn more about Multi-pairing
Make a payment from the terminal
You can now use this feature to make transactions from the terminal.
- On the POS, open at least one table and create an operator.
- On your Gecko Bank terminal, press the Pay at table button.
- Enter the Operator ID.
- Enter the Table number (the Table ID).
- Proceed to make the payment.
Make a payment from the POS
When Pay at table mode (or Multi-terminal mode) is enabled, you can still make transactions from the POS. Learn more
Certification
It is required that you develop your integration and get it certified before developing the Pay at table feature. Pay at table must be developed at the end and certified separately. This is because it is an advanced feature so it is easier to test it separately.
Pay at table has its own separate test suite: Spice Pay at table test suite.
Updated about 14 hours ago