Stripe and Paid Bookings
This page is the developer-side companion to the organisation billing and paid booking user guides. Use it when you need to understand the billing flow or integrate with the paid booking API.
Booking State Machine
Free booking
draft request -> confirmed reservation
Payment-required booking
draft request -> pending_payment reservation -> Stripe Checkout -> webhook success -> confirmed reservation
Key points:
- the reservation is created before Stripe succeeds
- the reservation is not fully confirmed until the webhook updates it
- the browser redirect is helpful UX, but not the payment source of truth
API Surfaces
- organisation billing:
PATCH /api/organisations/:id/billingGET /api/organisations/:id/stripe/statusPOST /api/organisations/:id/stripe/onboarding-linkPOST /api/organisations/:id/stripe/dashboard-linkPOST /api/organisations/:id/stripe/disconnect
- public booking:
POST /api/public/booking/organisations/:slug/reserveGET /api/public/booking/organisations/:slug/checkout-statusPOST /api/payments/stripe/webhook
Safety Notes
- Never commit live Stripe keys.
- Never log webhook secrets, full Checkout URLs with sensitive query state, or raw customer payment data.
- Keep documentation screenshots free of real emails, phone numbers, and customer names.