Last updated
03.07.2025 at 17:42

Payment Processing

How payments are handled, from initiation to confirmation

Payment Flow

Our payment system is built on Stripe to ensure security and reliability. The process is designed to be seamless for both clients and partners.

  • Initiation A payment is initiated when a client books a service (B2C) or when a partner creates a booking for a client (B2B).
  • Payment Methods Users are directed to a secure Stripe Checkout session, supporting cards, Apple Pay, Google Pay, QR codes, and other local payment options.
  • Confirmation Upon successful payment, Stripe sends a confirmation, and the booking status is updated to "Confirmed".
  • Failure Handling If a payment fails, the user is notified, and the booking is not confirmed. The 15-minute hold is released.

Stripe Webhooks

We use Stripe webhooks to receive real-time notifications about payment events, ensuring our system is always up-to-date.

  • Endpoint /api/stripe-webhook is the dedicated endpoint for receiving events from Stripe.
  • Signature Verification Every incoming webhook is cryptographically signed and verified to ensure it originated from Stripe.
  • Events Handled We handle key events like checkout.session.completed, payment_intent.succeeded, and payment_intent.payment_failed.
  • Idempotency Webhook handlers are designed to be idempotent to prevent duplicate processing of the same event.