Pick your save flow
Two paths, depending on whether the user is also paying right now.
The rest of this page covers setup mode end-to-end, then shows how to charge a saved method later.
Save a payment method
1
Create a checkout configuration in setup mode
Create a checkout configuration without a plan to collect payment details without charging. Add metadata to be able to link the member and payment method to a customer in your system.
2
Direct the user to checkout
Use embedded checkout or redirect the user to save their payment method.The saved payment method is on the
- Embedded
- Redirect
onComplete result, so a virtual
terminal can charge it right away instead of waiting for a webhook. Whop
only completes the checkout once the method is stored, so
payment_method_id is always set here in setup mode.3
Handle completion
Listen for the The payment method is now saved and authorized for this member.
setup_intent.succeeded webhook to get the payment method ID. The CheckoutConfiguration and its metadata will be included on the SetupIntent, which you can use to link the member and payment method to a customer in your system.Keep the webhook even if you read
payment_method_id from onComplete — it is the only path that survives a closed tab, and the one that fires for the redirect flow.Charge a saved payment method
1
Get the payment method
List saved payment methods for a member or use the payment method ID from the setup intent in the previous step.
2
Create an off-session payment
Charge the payment method without customer interaction. The create payment endpoint returns a payment object immediately and processes the charge asynchronously.
3
Handle payment events
Listen for payment webhooks to track success or failure.
Save during checkout
To save a payment method while processing a payment, addsetupFutureUsage: "off_session" to the embedded checkout.
Next steps
Accept payments
One-time and subscription checkouts to pair with your save flow.
Embedded checkout
Drop checkout into your own site without redirects.
Listen to webhooks
Track
setup_intent.succeeded, payment.succeeded, and payment.failed.Billing portal
Let customers manage and remove their saved payment methods.

