Create a subscription (existing subscriber)
Create a subscription (existing subscriber)
When a customer already has an active subscription with you and wants to start paying with HSA/FSA
funds, you provision a token on its own—no charge, no order. create_payment_token runs the same
survey and card entry as a new subscriber, minus the payment.
This flow is a variant of New Subscriber. Read that page for the shared parts; this page covers only what differs.
When to use this flow
Use create_payment_token when the customer is mid-subscription and there’s nothing to charge right
now—you’re switching their payment method for future billing periods. If you’re charging them today,
use create_payment_session with tokenize: true instead.
How this differs from a new subscriber
Because no payment session exists, there’s no payment_session_complete webhook and nothing to
fulfill. The only outcome that matters is whether a token gets provisioned.
Create the token
order_items still matters: the LMN is scoped to what the customer is subscribed to, so send the
items in their current subscription.
Store the provision_token_request_id against the customer. It comes back on the
payment_token_updated webhook, and it’s how you match the eventual token to the right subscription.
On failure, the response carries an error enum and a message describing the problem—useful while
you’re building.
What happens next
Redirect the customer to the redirect_url. From here the flow is identical to a new subscriber:
they complete the health survey, enter their HSA/FSA card, and return to your success_url, where you
show a “payment method saved” message. See How the flow
works.
There’s no need to poll
retrieve_provision_token_request
for status. The
payment_token_updated webhook tells
you when the token is ready.
Wait for payment_token_updated before charging. A token isn’t guaranteed—if the customer abandons the
survey or no LMN is issued, the webhook never fires and no token exists. Returning to your
success_url is not confirmation.