Payment providers

Operating and trust Stripe accounts, and the payment webhook.

Route: /dashboard/platform/payment-providers. Adapters live in features/integrations/payment (stripe, paypal, manual).

Two Stripe accounts are kept apart so trust funds never mix with operating funds.

ProviderCodeAccountSecret key variable
Stripe (operating account)pp_stripe_operatingoperatingSTRIPE_SECRET_KEY
Stripe (trust / IOLTA account)pp_stripe_trusttrustSTRIPE_TRUST_SECRET_KEY

Add the providers

Press add Stripe providers. It creates whichever of the two records is missing and marks them installed.

Set keys

Set the secret key variables on the server.

Add the webhook

Point Stripe at /api/payment-webhooks/[providerId], using the provider record's id. The route verifies the signature, handles checkout.session.completed and payment_intent.succeeded, and reconciles the payment named in the event metadata. Events are deduplicated by event id.

Toggle

Install or uninstall a provider with its toggle.

Payments can also be recorded by hand with recordManualPayment.

On this page