One link per share
Every participant receives a hosted checkout link with an independently trackable status.
Pay at the table and split the bill
A guest can pay the whole bill or split it equally. The server calculates every share in minor currency units, then prepares an independent hosted link and status for each participant.

Zadira Dine
Laravel accepts a split count from 2 to 12 and divides the trusted order total in minor units. Any remainder is distributed deterministically so the shares always add up to the exact bill.
Every participant receives a hosted checkout link with an independently trackable status.
Payment creation uses an idempotency key so a retry cannot silently create duplicate payment groups.
Guests continue to the approved provider instead of entering card numbers in the restaurant app.
A SAR 100.01 bill is stored as 10,001 halalas.
The guest chooses to split the bill across three people.
The result is SAR 33.34 + 33.34 + 33.33, with no missing or extra halala.
The admin shows each share state and the overall bill settlement state.
The current gateway is a demo used to show the flow. Production requires an approved provider, a merchant account, server-side secrets, webhook configuration, and independent security and compliance review.
No. It uses a demo gateway and never charges a card. A real merchant provider and credentials are required for production.
No. The architecture uses a provider-hosted checkout page and the restaurant interface contains no card-number fields.
The server divides the total in minor units and distributes the remainder across the first shares, so the exact total always matches.
Try the non-charging flow, then discuss the payment provider that fits your operation.