Skip to content
Create account or Sign in
The Stripe Docs logo
/
Ask AI
Create accountSign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
APIs & SDKsHelp
OverviewAccept a paymentUpgrade your integration
Online payments
OverviewFind your use case
Use Payment Links
Use a prebuilt checkout page
Build a custom integration with Elements
Build an in-app integration
Use Managed Payments
Recurring payments
In-person payments
Terminal
Payment methods
Add payment methods
Manage payment methods
Faster checkout with Link
Payment operations
Analytics
Balances and settlement time
Compliance and security
Currencies
Declines
Disputes
Radar fraud protection
Payouts
ReceiptsRefunds and cancellations
Advanced integrations
Custom payment flows
Flexible acquiring
Off-Session Payments
    Overview
Multiprocessor orchestration
Beyond payments
Incorporate your company
Crypto
Agentic commerce
Machine payments
Financial Connections
Climate
Verify identities
United States
English (United States)
  1. Home/
  2. Payments/
  3. Off-Session Payments

The Off-Session Payments APIPrivate preview

Create your own payment flow for recurring and unscheduled payments.

The Off-Session Payments API has the following features:

  • Retry a payment using smart retries: Configure a retry strategy using AI inference to choose the best times to retry failed payments that increase the chance of a successful payment.

  • Process payments on multiple processors: Route payments to any of the Stripe-supported processors, or automatically route payments created through the Off-Session Payments API and other supported payments APIs.

How it works

With a single API request, you can initiate a payment and let Stripe handle retries for you.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -X POST https://api.stripe.com/v2/payments/off_session_payments \ -H "Authorization: Bearer
sk_test_BQokikJOvBiI2HlWgH4olfQ2
"
\ -H "Stripe-Version: 2025-11-17.preview" \ --json '{ "amount": { "value": 1000, "currency": "usd" }, "customer":
"{{CUSTOMER_ID}}"
, "payment_method":
"{{PAYMENT_METHOD_ID}}"
, "cadence": "recurring", "metadata": {}, "retry_details": { "retry_strategy": "best_available" } }'

See the full Off-Session Payments API reference for more details.

Compatible APIs

Stripe offers three core payments APIs compatible with Off-Session Payments that allow you to accept various types of payments from your customers. You can integrate these APIs into the Stripe prebuilt payment interfaces. The APIs serve different use cases, depending on how you structure your checkout flow and how much control you require.

  • Use the Checkout Sessions API to handle collection and setup of payment information with a prebuilt payment form that presents the customer’s complete checkout flow. With the Checkout Sessions API, you can save a payment for future use with a payment or without an initial payment, depending on your payment flow. Build a checkout page with the Checkout Sessions API.

  • Use the Payment Intents API to implement the payment step only, but with more control. Unlike the Checkout Sessions API, which requires line item details, you only pass in the final amount you want to charge. Use this for advanced payment flows where you want to manually compute the final amount. Build an advanced integration with the Payment Intents API.

  • Use the Setup Intents API to save a customer’s payment details without an initial payment. Use this when you want to onboard customers now, set them up for payments, and charge them in the future. Use this integration to set up recurring payments, or to create one-time payments with a final amount determined later, often after the customer receives your service. Build an advanced integration with the Setup Intents API.

Compliance

You’re responsible for your compliance with all applicable laws, regulations, and network rules when saving a customer’s payment details. These requirements generally apply if you want to save your customer’s payment method for future use, such as displaying a customer’s payment method to them in the checkout flow for a future purchase or charging them when they’re not actively using your website or app. Add terms to your website or app that state how you plan to save payment method details and allow customers to opt in.

When you save a payment method, you can only use it for the specific usage you’ve included in your terms. To charge a payment method when a customer is offline and save it as an option for future purchases, make sure that you explicitly collect consent from the customer for this specific use. For example, include a “Save my payment method for future use” checkbox to collect consent.

To charge a customer when they’re offline, make sure your terms include the following:

  • The customer’s agreement to your initiating a payment or a series of payments on their behalf for specified transactions.
  • The anticipated timing and frequency of payments (for example, if the charges are for scheduled installments, subscription payments, or unscheduled top-ups).
  • How you determine the payment amount.
  • Your cancellation policy, if the payment method is for a subscription service.

Make sure you keep a record of your customer’s written agreement to these terms.

Was this page helpful?
YesNo
  • Need help? Contact Support.
  • Chat with Stripe developers on Discord.
  • Check out our changelog.
  • Questions? Contact Sales.
  • LLM? Read llms.txt.
  • Powered by Markdoc
On this page