Subscriptions
Who is on which plan, what they have paid, and what happens when a renewal fails.
Admin → Subscriptions
What this screen shows
One row per billing term — not one row per restaurant. A restaurant that has been with you for six months has six rows, each with its own dates, amount and invoice number. That is deliberate: an invoice you have already issued must keep describing the period it was issued for.
The four states
| Status | Meaning |
|---|---|
| Pending | Checkout started but payment is not confirmed. It becomes active on its own when the payment lands. |
| Active | Paid and running. The restaurant has everything the plan grants. |
| Expired | The term ended and was not renewed. The account keeps working; the paid tier's extras stop. |
| Cancelled | Automatic renewal was stopped. The term still runs to its end date — cancelling is not a refund. |
How renewals happen
You do not renew anybody. The gateway charges the agreement on its own schedule and tells your site, which writes the new term and issues its invoice.
That message is the webhook, and it is the whole mechanism:
- Stripe reports each charge as
invoice.paid. - PayPal reports it as
PAYMENT.SALE.COMPLETED.
When a renewal is declined
A failed charge does not end the subscription immediately. The gateway keeps retrying on its own schedule, and the term is held open while it does — up to fourteen days.
The gateway decides how often to retry and when to give up; the fourteen days is only a ceiling, so a nonsense retry date cannot keep a dead subscription alive indefinitely. If the card is never approved, the term expires on that deadline.
Cancelling
A restaurant cancels from their own billing screen, which stops automatic renewal at the gateway. The paid term runs to its end date. You can also record an offline payment against a restaurant here — for a bank transfer or a deal agreed outside the platform.
Suspending a restaurant, rejecting a paid applicant, or suspending the owner's account does the same cancellation for you: the live agreement is stopped at the gateway and the owner is told, so a restaurant you have switched off is never billed for a plan it cannot use.
When it doesn't work
A restaurant paid but is still Pending
The confirmation has not arrived. Check the webhook badge on Settings → Payment; if it is grey or red, the payment cannot be recorded. The Reconcile payments scheduled task also re-checks the gateway and settles these — see Scheduled tasks.
A renewal was taken but no new term appeared
Same cause: the webhook did not arrive or was rejected. The gateway will show the charge; your site will not. Fix the webhook, and the gateway can redeliver the event.
The figures do not match my gateway dashboard
Amounts here include your platform tax; the gateway shows what it charged the card, which is the same figure. If they differ, check you are looking at the same account and the same mode — test and live are separate ledgers.
