Save payment methods
Use saved payment methods to charge customers automatically for subscriptions, renewals, or usage-based billing. The customer saves their card once using a Whop hosted or embedded flow, and you can charge it any time after.
Pair this guide with webhooks: listen for setup_intent.succeeded to confirm the save, then for payment.succeeded / payment.failed to track future charges.
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
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.
Direct the user to checkout
Use embedded checkout or redirect the user to save their payment method.
Embedded
Redirect
Handle completion
Listen for the 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.
The example uses waitUntil from @vercel/functions to run the handler after responding 200. On other runtimes (Bun, Cloudflare Workers, Fastify, Hono) swap it for your framework’s equivalent background-task primitive or a job queue. See the webhooks guide for Python and Ruby handler equivalents.
The payment method is now saved and authorized for this member.
Charge a saved payment method
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.
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.
Save during checkout
To save a payment method while processing a payment, add setupFutureUsage: "off_session" to the embedded checkout.
The payment method will be saved after successful payment.

