Customers pay through a public, token-authenticated checkout endpoint
(GET /api/checkout/[quoteId],
apps/web/src/app/api/checkout/[quoteId]/route.ts), which creates a
Stripe PaymentIntent on the contractor organization's own connected
Stripe account (Stripe Connect). If the organization hasn't completed
Stripe Connect onboarding, that endpoint returns "Provider has not
connected their Stripe account" and the quote can't be paid; see
Troubleshooting.
Staff connect Stripe from Settings → Integrations → Stripe
(apps/web/src/app/(authenticated)/settings/integrations/stripe/stripe-connect-content.tsx).
TODO(owner, likely product + integrations): write the full guide covering
the Stripe Connect onboarding steps from that settings page, what
PAYABLE_QUOTE_STATUSES
(apps/web/src/lib/validations/checkout.ts) requires before a quote can
be paid, and how the application fee/transaction-fee percent
(getTransactionFeePercent, apps/web/src/lib/billing/payment-collection.ts)
is set.