Skip to content

Choose your Stripe flow

Start with the Stripe flow your product already uses. Proxy does not require a new payment UI, and the technical path ID is only needed after you choose.

One-time payments

The payer completes one purchase. Continue to the one-time choices below.

Subscriptions

Stripe creates or updates a recurring Subscription. Continue to the subscription choices below.

Both

Choose one path for each purchase type. You can share one Stripe configuration, but implement and validate the one-time and subscription guides separately.

Question 2: Does Checkout create the Stripe object?

Section titled “Question 2: Does Checkout create the Stripe object?”

This is the most important distinction.

Choose this branch when your server creates a Checkout Session and Stripe Checkout creates the PaymentIntent or Subscription behind it.

  • Hosted redirect — recommended: Stripe hosts the payment page.
  • Embedded: your page mounts Stripe Embedded Checkout.
  • Custom / Elements: your page composes an Elements UI, but it is still backed by a Checkout Session.

If your code calls openCheckout, you are in this branch. An Elements UI does not automatically mean a direct PaymentIntent.

Choose this branch when your code creates the PaymentIntent, SetupIntent, or Subscription without a Checkout Session.

  • For a one-time payment, your server creates a PaymentIntent and your existing UI confirms it.
  • For a subscription, your server either collects a payment method with a SetupIntent first or uses an already authorized saved PaymentMethod.

Question 3: Where should the payer enter payment details?

Section titled “Question 3: Where should the payer enter payment details?”

Only answer this when you chose Stripe Checkout.

Choice Best when Tradeoff
Hosted redirect — recommended You want the fastest and simplest start. The payer briefly leaves your page for Stripe.
Embedded Checkout You want Stripe’s Checkout UI inside your page. More client integration and newer SDK requirements.
Custom Checkout with Elements Your page needs a custom Elements layout while Checkout still creates the payment or subscription. Most presentation control and the highest compatibility floor.

Every result below assumes the same Stripe connection, Proxy API keys, SDK installation, hosted handoff configuration, and durable handoff endpoint. Complete Before You Code, Install SDKs, and Create the Handoff Link once, then return to the selected terminal guide. The rest of that quickstart implements the recommended hosted one-time path; do not copy its hosted presentation or Stripe client into an embedded, custom, direct, or subscription result. Create the Stripe client in the selected terminal guide with the request API version reported by that path’s stripe doctor output.

Hosted Checkout — recommended

Stripe Checkout creates the PaymentIntent and redirects the payer.

Implement hosted Checkout →

Technical ID after selection: OT-CO-H

Embedded Checkout

Stripe Checkout creates the PaymentIntent in an embedded Checkout surface.

Implement embedded Checkout →

Technical ID after selection: OT-CO-E

Custom Checkout with Elements

A Checkout Session backs your custom Elements-based payment UI.

Implement custom Checkout →

Technical ID after selection: OT-CO-C

Direct after SetupIntent

Your existing UI collects a payment method, then your server creates the Subscription.

Implement a direct subscription →

Technical ID after selection: SUB-SI

Direct with saved payment method

An authorized shared billing account has already selected the payment method; your server creates the Subscription.

Implement a saved-method subscription →

Technical ID after selection: SUB-SAVED

  1. Complete the shared Stripe setup above, then open the selected guide and confirm its path-specific prerequisites.
  2. Run the guide’s proxy stripe doctor --path … --format json command for canonical versions, permissions, events, and unsupported options.
  3. Build with Stripe test-mode credentials and one durable Proxy handoff per intended order.
  4. Verify the ready, already-paid, action-required, and unavailable states described by the guide.
  5. Treat signed provider and Proxy events as wakeups to read current state; do not fulfill from a browser redirect.

The matrix below is for agents and experienced implementers who already chose a flow. Human labels remain first; internal IDs are secondary routing details.

Show the full path-to-guide matrix
Human pathTechnical IDStripe object creationPresentationGuide
One-time payment with hosted Checkout
Recommended default
OT-CO-HStripe Checkout creates the PaymentIntentHosted redirectOpen guide
One-time payment with embedded CheckoutOT-CO-EStripe Checkout creates the PaymentIntentCheckout embedded in your pageOpen guide
One-time payment with custom CheckoutOT-CO-CStripe Checkout creates the PaymentIntentYour Elements-based payment UIOpen guide
One-time payment with your PaymentIntentOT-PIYour server creates the PaymentIntent directlyYour existing Elements or native UIOpen guide
Subscription with hosted Checkout
Recommended default
SUB-CO-HStripe Checkout creates the SubscriptionHosted redirectOpen guide
Subscription with embedded CheckoutSUB-CO-EStripe Checkout creates the SubscriptionCheckout embedded in your pageOpen guide
Subscription with custom CheckoutSUB-CO-CStripe Checkout creates the SubscriptionYour Elements-based payment UIOpen guide
Subscription after collecting a payment methodSUB-SIYour server creates a SetupIntent, then the SubscriptionYour existing Elements or native UIOpen guide
Subscription with an authorized saved payment methodSUB-SAVEDYour server creates the Subscription directlyNo new payment UI unless Stripe requires customer actionOpen guide

Availability, minimum package/API versions, permissions, events, and unsupported options are generated from the canonical Stripe capability manifest. Run proxy stripe doctor --path <technical-id> --format json after selecting a path.

For exact read permissions and webhook events, continue to Stripe events and permissions. For package/API version floors, use Stripe compatibility.