Chapters
Guide › Manage the business
Guests paying at the table
With online payments, guests pay their check from their phone at the table: all that is left or a share, with a tip, on your payment provider's page. Sofrito records the payment on the check when the provider confirms it, and the check closes (with its invoice or receipt) when nothing is left to pay, as with any payment.
Before you start
- Online payments run on Sofrito Cloud. On a Sofrito Hub, open your back office at sofritopos.app to set them up: the hub records the payments on its checks all the same.
- People who manage payment methods set up online payments; people who can see Reports see the latest payments.
- Your guest pages must be published, with a QR code on each table: see Your menu online and table QR codes.
- You need an account with a payment provider. Sofrito works with Paystack (South Africa and other countries it serves). To try everything first, use Sofrito's test provider: no money moves.
- Guests can pay with the test provider, or a provider's test keys, only while the location issues training documents (Settings › Invoicing, Issue training documents): no real check closes with nobody paying.
Set up online payments
- In the back office, select Settings › Online payments.
- Choose the Provider:
- Sofrito test provider: give any Test secret of your own. A page of Sofrito's with Approve and Decline stands in for the provider's.
- Paystack: give your Secret key, from Paystack's dashboard (Settings › API Keys & Webhooks). A key starting
sk_test_takes test payments only.
- Leave Online payments on and Guests pay at the table on.
- Select Set up online payments.
- For Paystack: copy the Address for the provider's notifications and paste it in Paystack's dashboard as the Webhook URL. Paystack tells Sofrito about each payment there.
Your keys are kept sealed and never shown again: the field says only how a key ends. To change one, type the new key and save.
You can't change the provider (or between its test and live keys), or remove it, while a payment is on its way with it or money is due back through it: wait until those are done.
What guests do
- A guest opens the table's QR code and selects Pay the bill.
- If their phone hasn't joined the table yet, they type the 6-digit table code your staff give them (it is on the check, on the till).
- They see the bill: the total, what is paid, and what is left. They choose All of it or A share, a tip, and (for Paystack) an email address for their receipt.
- They select Pay and pay on the provider's page.
- Back on the table's page, they see what the restaurant sees: Waiting for the payment to be confirmed, then Paid, or Not paid. Nothing was taken.
Only the provider's word counts, never the guest's browser. If two people at a table pay at once, Sofrito doesn't let them pay more than is left between them: while one guest's payment is open, the others read that someone is paying the rest. A guest who left the provider's page without paying finds their payment offered back on the table's page.
If the check was paid at the till while the guest was on the provider's page, their phone says the bill was already paid and that their money goes back to them.
When a payment arrives
The check takes the payment at once: on your tills, the check shows it like any other payment, with the provider's reference, and the tills and the back office show Table 4 paid 12,50 € online. When nothing is left to pay, the check closes and its document is issued, once.
If the check got smaller while the guest was paying (a dish voided), or someone paid it at the till meanwhile, Sofrito records only what was still due, and gives the rest back to the guest through the provider by itself. Settings › Online payments lists each payment with what became of it, to set against the provider's own report.
When something needs you
What Sofrito noticed (on the Automations screen and the dashboard) tells you when:
- the provider confirmed another amount than the guest asked to pay: nothing was recorded on the check. Look at the payment in the provider's dashboard;
- a guest's payment isn't on their check yet half an hour after the provider confirmed it (a Sofrito Hub that serves hasn't recorded it): look at the check before taking another payment;
- a check paid online didn't close, because closing it needs something only staff can give (in Portugal, the buyer's name and address above 1 000 €): close it at the till;
- the guest's bank took a payment back (a chargeback or a dispute): refund the check, or dispute it with the provider;
- the provider gave a payment back that the check had taken (a refund made in its dashboard): if nobody refunded the check at the till, refund it there too;
- a guest's payment went back to them: no till recorded it in six days;
- money couldn't be given back to a guest: give it back another way;
- a refund to a guest may not have been made: Sofrito asked the provider for it but never heard whether it was made, looked for it for a day, and doesn't ask twice. Check in the provider's dashboard, and give it back there only if it isn't;
- a refund to a guest hasn't arrived in two weeks: the provider took it, and still hasn't said it reached the guest. Check in the provider's dashboard;
- a refund you were told couldn't be made reached the guest after all: if you gave it back another way too, the guest has it twice.
Settle a refund the provider never settled
Once you have checked in the provider's dashboard, say what became of the refund, so Sofrito stops waiting for it (and you can change or remove the provider again):
- Select Settings › Online payments.
- Under Latest online payments, find the payment that says the money is being given back or checked with the provider.
- Select It was given back if the dashboard shows it, or It wasn't if it doesn't (then give it back another way), and select it again to confirm.
This needs Manage payment methods, and is written in the audit log. If the provider later says otherwise, its word counts, and What Sofrito noticed tells you.
You can't change the provider, give it other keys or remove it while a payment or a refund is still on its way with it.
Good practice
- Try the whole path with the test provider, or Paystack's test keys, before you take real payments.
- Keep the table codes private to each table's party: they are what lets a phone see and pay that check.
- Look at Settings › Online payments at the end of the day, against the provider's report.