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
Overview
Get started with Connect
Design your integration
    SaaS platform
      Quickstart
      Essential tasks
        Create a connected account
        Set up Dashboard access
        Onboard a connected account
        Accept a payment
        Collect platform fees
        Charge service fees
        Pay out to connected accounts
        Handle refunds and disputes
    Marketplace
Integration fundamentals
Example integrations
Account management
Onboard accounts
Configure account Dashboards
Work with connected account types
Payment processing
Accept payments
Pay out to accounts
Platform administration
Manage your Connect platform
Tax forms for your Connect platform
United States
English (United States)
HomePlatforms and marketplacesDesign your integrationSaaS platformEssential tasks

Charge SaaS fees to your connected accountsPublic preview

Use Billing to charge SaaS fee subscriptions directly to your connected accounts.

You can use Stripe Billing to charge your connected accounts a recurring subscription fee for using your platform.

Create a product with a recurring price

Create a product and price representing your subscription fee. You can use the API or the Dashboard.

In your Dashboard, go to the Product catalog and click + Create product. Create a product and assign a price to it. To configure the price as a subscription, select Recurring pricing and set the Billing period.

After you add the product and price, record the price ID to use later when you create a subscription. The price ID looks like price_xxxxxxxxxxxxxx. In the Dashboard, you can copy the price ID to the clipboard from the product details page. In the Pricing section, click the overflow menu () next to the subscription price, then click Copy price ID.

Create subscriptions to charge your connected accounts

You can collect SaaS subscription fees directly from a connected account’s Stripe balance. The connected account must meet the following requirements:

  • It must have both the merchant and customer configurations.
  • Its merchant configuration’s card_payments capability must be active.
  • Its available balance must have sufficient funds to make a full payment.

To implement a custom process for your connected account owners to purchase subscriptions, use a SetupIntent to attach a PaymentMethod to their Account object.

To attach payment from the account’s Stripe balance as the payment method when creating a SetupIntent, specify the following values:

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/setup_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -H "Stripe-Version: 2025-04-30.preview" \ -d "payment_method_types[]"=stripe_balance \ -d confirm=true \ -d customer_account=acct_xxxxxxxxxxxxxx \ -d usage=off_session \ -d "payment_method_data[type]"=stripe_balance

Successful creation of the SetupIntent returns data similar to the following:

{ "id": "seti_123", "object": "setup_intent", "customer": "cus_xxxxxxxxxxxxxx", "customer_account": "acct_xxxxxxxxxxxxxx", "payment_method": "pm_xxxxxxxxxxxxxx", "status": "succeeded" }

You can then create Subscriptions using the account’s attached PaymentMethod by passing the Account ID as the customer_account.

To create a subscription that collects payments from the account’s Stripe balance, set the payment method type explicitly, as in the following example.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/subscriptions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -H "Stripe-Version: 2025-04-30.preview" \ -d customer_account=acct_xxxxxxxxxxxxxx \ -d default_payment_method=pm_xxxxxxxxxxxxxx \ -d "items[0][price]"=price_xxxxxxxxxxxxxx \ -d "items[0][quantity]"=1 \ -d "payment_settings[payment_method_types][0]"=stripe_balance

Configure your integration to manage Stripe balance payment failures

When you collect a payment from a connected account’s Stripe balance, the account’s available balance must have sufficient funds to make the full payment. Otherwise, the payment fails. If you plan to collect payments directly from your connected accounts’ Stripe balances, we recommend configuring your integration to manage balance-related payment failures.

Avoid balance payment failures

Because payments from a connected account’s Stripe balance rely on its available funds, you can avoid payment failures by taking steps to maximize your connected accounts’ balances.

Tailor connected account payout schedules

Coordinate your payout schedules with your subscription billing cycles. For example, if you charge subscription fees on the first day of each month, and schedule weekly payouts on Mondays, then months with more Mondays have more payouts. Those months have lower available balances than months with fewer payouts, making payment failures more likely.

Another way to avoid payment failures due to payouts is to change to manual payouts before a subscription payment. At a set time before each subscription payment, if a connected account has sufficient available funds, switch it to manual payouts so the subscription payment gets paid before the automatic payout clears the account. After the subscription payment, resume automatic payouts.

Set a minimum balance on connected accounts

You can prevent automatic payouts from reducing a connected account’s available balance below a certain amount by defining a minimum balance for that account.

  1. Find the account in your Dashboard.
  2. From the account’s overflow menu (), select View Dashboard as….
  3. Click the gear icon and select Settings.
  4. Under Account Settings, click Business.
  5. Select the External payout accounts and scheduling tab.
  6. Turn on Keep a minimum amount in your payments balance and enter an amount.

You must manually set the minimum balance for each connected account.

Handle balance payment failures

Set up webhooks and event destinations to receive notifications about subscription payments. Identify payment failures by listening for the invoice.payment_failed event. When a payment fails:

  • The PaymentIntent status changes to requires_action.
  • The Subscription status remains incomplete for the current invoice.
  • The Subscription continues to generate invoices, which remain in draft status.

Automatic retries

Enable retries for failed balance payments due to insufficient available funds on recurring subscription invoices. Automatic retries schedules 2 payment attempts following an insufficient funds failure:

  • The first retry happens at least 24 hours after the failed payment.
  • If needed, the second retry happens on the next Sunday following the first retry.

This retry schedule aims to give your connected account time to accumulate more funds in their Stripe balance and to avoid conflicts with scheduled payouts.

You can enable retries for any amount for no additional fee.

Manually retrying

If a payment from a Stripe balance fails due to insufficient available funds, you can manually retry it by following these steps:

  1. Set the connected account’s payout schedule interval to manual.
  2. Listen for the next payment that comes into the connected account, then check the account’s available balance.
  3. If the available balance is equal to or greater than the subscription fee, set the unpaid invoice’s payment method to stripe_balance and retry it. Otherwise, continue listening for payments until the available balance is enough to pay the invoice.
  4. If the payment succeeds, restore the connected account’s normal payout schedule.

Instead of retrying a failed payment from a Stripe balance, you can try using a different payment method by specifying it directly on the invoice. You can also implement a flow that allows connected accounts to update their own subscription payment methods.

Next steps

When your connected accounts can accept payments and you’ve configured your monetization, set up payouts so your connected account can transfer their Stripe balance to their external account.

Was this page helpful?
YesNo
  • Need help? Contact Support.
  • Check out our changelog.
  • Questions? Contact Sales.
  • LLM? Read llms.txt.
  • Powered by Markdoc