Skip to content

Checkout

Checkout is the process where a member commits to a purchase. It covers every revenue type — hourly reservations, monthly lockouts, credit packages, waitlist deposits, and organization dedicated rooms. Some flows are self-service (the member picks terms themselves); others start with a staff invitation that sets terms in advance.

Invitations vs Self-Service

Self-service checkout — the member chooses the terms on the public site and commits. Used for hourly reservations and most credit purchases.

Invitation checkout — staff configures the purchase in advance (price, resource, access details, billing date) and sends the member a link. The member opens the link, reviews the pre-set terms, and commits. Used for:

  • Monthly lockout offers
  • Waitlist deposit payment
  • Organization dedicated room subscriptions
  • Legacy tenant migration onboarding

An invitation is tied to a specific member — the link cannot be used by a different account. Invitations that rely on a pre-authorized payment method (migrations, and other setup-intent flows) are not consumed until the payment method successfully attaches; a failed or abandoned attempt leaves the invitation available for retry.

Staff can resend an invitation at any time before it is consumed.

What Happens When a Member Commits

When a member confirms a checkout, the system:

  1. Creates or updates the business record for what they're buying. The record exists in the database before the payment is charged.
  2. Creates a payment record linked to that business record, in pending status.
  3. Sends the charge request to Stripe (immediate payment, subscription, or setup for future billing).

The specific business record depends on the purchase type:

  • Hourly reservations — created as active bookings with access codes provisioned for the scheduled window.
  • Monthly lockouts — created as active lockouts with access granted, regardless of payment timing.
  • Credit packages — created in a pending state. The credit balance is not granted until payment confirms.
  • Waitlist deposits — the waitlist entry already exists (either staff-created or self-created). The deposit payment is attached to it.
  • Organization dedicated rooms — created as active reservations tied to the organization.

This optimistic pattern means members get immediate access or confirmation without waiting for bank transfers to clear. The tradeoff is that failed payments must roll back the granted access or benefit.

Payment Outcomes

Payment succeeds — the pending payment record transitions to paid. Fulfillment actions run: confirmation emails, staff notifications, calendar invites, and any deposit credits are applied.

Payment fails on submission (card declined, 3D Secure abandoned) — the member stays on the checkout page, sees an error, and can retry or abandon. Any record that was created as part of the attempt is rolled back.

Payment fails later (ACH bounce, subscription payment failure after Stripe exhausts its retry cycle) — fulfillment must be reversed:

  • Hourly reservations are cancelled and access codes are revoked.
  • Monthly lockouts have their access revoked and the reservation is ended once Stripe exhausts retries.
  • Credit packages never grant credits, so no rollback is needed.
  • Waitlist deposits leave the entry in its pre-deposit state.

See Payments for the full payment lifecycle and dunning behavior.

Stripe Customer Balance Credits

Members can accumulate Stripe customer balance credits from prior refunds (cancellation within 24 hours of an hourly booking, waitlist cancellation, etc.). These credits apply automatically to subsequent charges, reducing the amount billed to the payment method.

If an invoice is fully covered by customer balance, no payment method is charged but the payment still records as paid with a zero-amount charge.

Confirmation

After a member commits, the confirmation page polls the payment record until it resolves. For card payments this is usually instant; for ACH the confirmation shows "processing" until the bank transfer clears (several days later). Members can close the page and receive an email once the payment resolves.

Cross-Domain Notes

  • Waitlist deposits applied to a first lockout invoice — see Waitlist.
  • Referral and promo codes applied at checkout — see Referrals.
  • Migration invitations that set up payment for pre-migration tenants — see Migrations.
  • Attribution (which ad campaign drove a conversion) is captured at checkout initialization and attached to the resulting purchase record.