Use the Accounts v2 API in your existing integration
Learn how to update integrations built on Accounts v1 and Customers v1.
Follow this guide if you want to update your Accounts v1 and Customers v1 Connect platform integration to gain access to the following Accounts v2 features:
- Associate your connected accounts with payments they make to your platform without creating Customer objects.
- Avoid network costs by allowing connected accounts to pay your platform using their Stripe balance.
- Enable your connected accounts to hold funds on your platform using Treasury v2.
If you don’t need Accounts v2 features, you can continue to use your Accounts v1 and Customers v1 platform integration.
Use v2 endpoints for all your accounts
You can use the Accounts v2 API with your existing v1 Accounts without making any changes to them.
Account creation delay
A new v1 Account might require up to 10 minutes before you can use it with an Accounts v2 endpoint. When the Account is ready for API v2 requests, it sends a v2. webhook event.
Add a customer configuration
Adding the customer configuration to an Account allows you to provide the Account ID in any API request that accepts a Customer ID, such as creating a subscription. Instead of providing a Customer ID in the customer parameter, you provide the Account ID in the customer_ parameter.
The following example uses the Accounts v2 API to add the customer configuration to an existing v1 Account, then updates an existing subscription to charge the Account using its Stripe balance.
- Update the
Accountto add thecustomerconfiguration.
curl -X POST https://api.stripe.com/v2/core/accounts/acct_1abc \ -H "Authorization: Bearer sk_test_Hrs6SAopgFPF0bZXSN3f6ELN" \ -H "Stripe-Version: 2026-07-29.preview" \ --json '{ "configuration": { "customer": { "capabilities": { "automatic_indirect_tax": { "requested": true } } } }, "include": [ "configuration.customer", "identity" ] }'
- Retrieve the connected account to confirm it has the
card_capability in the merchant configuration. This capability must be active in order to use the Stripe balance as a payment method.payments
curl -X POST https://api.stripe.com/v2/core/accounts/acct_1abc \ -H "Authorization: Bearer sk_test_Hrs6SAopgFPF0bZXSN3f6ELN" \ -H "Stripe-Version: 2026-07-29.preview" \ --json '{ "include": [ "configuration.merchant", "identity", "defaults" ] }'
- Add the connected account’s Stripe balance as a payment method.
curl https://api.stripe.com/v1/setup_intents \ -u "sk_test_Hrs6SAopgFPF0bZXSN3f6ELN:" \ -d customer_account=acct_1abc \ -d "payment_method_types[]=stripe_balance" \ -d confirm=true \ -d usage=off_session \ -d "payment_method_data[type]=stripe_balance"
- Create a subscription that charges the connected account using its Stripe balance.
curl https://api.stripe.com/v1/subscriptions \ -u "sk_test_Hrs6SAopgFPF0bZXSN3f6ELN:" \ -d customer_account=acct_1abc \ -d payment_behavior=default_incomplete \ -d "items[0][price]={{PRICE_ID}}" \ -d "payment_settings[save_default_payment_method]=on_subscription"
You no longer need to maintain a separate Customer object to accept subscription payments from this connected account.
Transition your integration in stages
Because you can use both the Accounts v1 and v2 APIs with your Accounts, you can update your integration at the pace that meets your business needs. For example, you can:
- Call
/v2/core/accountsendpoints forAccountscreated using API v1. - Call
/v1/accountsendpoints forAccountscreated using API v2. - Call
/v1/customersendpoints forAccountswith the customer configuration. - Use the Events API v2 to listen for changes to objects created using either API version.
These compatibilities let you update your integration in stages, without maintaining multiple versions in production or updating your entire integration at once.
We recommend updating your integration in this order:
- Set up a new endpoint to listen to v2 Events.
- Change your
AccountandCustomercreatecalls to create customer-configuredAccountsusing/v2/core/accounts. - Change your
AccountandCustomerupdatecalls to use/v2/core accounts. - Change your
AccountandCustomerretrievecalls to use/v2/core/accounts.
Use v2 Accounts in v1 endpoints
If you reference v2 objects in v1 endpoints, the response returns the v2 data in the v1 object structure. For example,
- Referencing a v2
Accountin a/v1/accountsendpoint returns the data in the structure of a v1Account. - Referencing a v2
Accountin a/v1/customersendpoint returns the data in the structure of a v1Customer, and includes both thecustomerID andcustomer_ID.account
You can use customer-configured Accounts in the Customers v1 API, but you can’t reference v1 Customers in the Accounts v2 API. You must either migrate customer data into a new customer-configured Account, or update an existing connected account to add the customer configuration.
Webhook events
v2 Accounts send both v1 (snapshot) Events and v2 (thin) Events. The v1 events depend on the updated configuration. For example, updating properties of the merchant configuration emits v1 account. events, while updating properties of the customer configuration emits v1 customer. events.
We recommend setting up new endpoints to listen to v2 events.
Webhooks for Connect users listen for events in different scopes, depending on the source of the event:
- Your account: Most events triggered by resources that exist in your account. That includes most requests made using your API keys and without authenticating as another Stripe account, such as:
v2.events for v2core. account. * Accountsin your account- Events for
Customersin your account - Events for direct charges on your account
- Events for indirect charges on your account for your connected accounts
- Connected accounts: Events triggered by resources that exist in connected accounts and some resources that exist in your account, such as:
v2.events for v2core. account. * Accountsrepresenting customers and recipients of your connected accounts- v1
account.events for both v1 and v2updated Accountsrepresenting customers and recipients of your connected accounts - Direct charges for customers of your connected accounts
Event scopes for v2 Accounts representing connected accounts
v2 Account objects trigger both v1 and v2 Events, which can have different scopes. For events triggered by connected accounts, v2 Events use the Your account scope, while v1 Events use the Connected accounts scope, even when triggered by the same v2 Account.
The behavior of v2 Account events differs from that of v1 Account events, in that all events associated with v1 Account objects use the Connected accounts scope.
The following table describes which scope to select when you create a webhook:
| Event source | Event scope |
|---|---|
Updates to v1 Account objects representing connected accounts | Connected accounts |
Updates to v2 Account objects representing connected accounts |
|
Updates to Customer objects representing connected accounts | Your account |
Updates to v2 Account objects representing customers of connected accounts that pay direct charges |
|
Updates to Customer objects representing customers of connected accounts that pay direct charges | Connected accounts |
Updates to v2 Account objects representing customers of connected accounts that pay indirect charges created on the platform |
|
Updates to Customer objects representing customers of connected accounts that pay indirect charges created on the platform | Your account |
| Direct charges paid to connected accounts | Connected accounts |
Updates to Invoices and Subscriptions that connected accounts charge their customers using direct charges | Connected accounts |
| Indirect charges created on the platform for customers of connected accounts | Your account |
Updates to Invoices and Subscriptions that customers of connected accounts pay using indirect charges created on the platform | Your account |
| Direct charges created on the platform, including charges paid by connected accounts | Your account |
To listen to v2 Events triggered by Accounts representing your connected accounts:
- Open the Webhooks tab in Workbench.
- Create a new event destination, or modify an existing one.
- In the Events from section, select Your account.
- In the Events section, select the v2 event types you want the webhook to listen to, then click Continue.
- Select the Destination type and click Continue.
- Complete the endpoint setup by following the interactive builder for the selected destination type.
Account version differences in the Events v2 API
Most v2. event types don’t correspond directly to v1. event types. For example, changing any property on an Account triggers a v1. event. However, the same action might trigger property-specific events for v2, such as v2. or v2..
We send the v2. event only for updates to top-level properties, such as dashboard or display_, that don’t trigger one of the more specific update events.
Accounts API v2 limitations
You must use Accounts v1 in the following cases:
- Using OAuth to authenticate connected accounts
- Signing connected accounts to a recipient service agreement
- To request or manage the following capabilities:
treasurycard_issuing_ * - deprecated capabilities such as
legacy_payments - deprecated payment methods
- certain payment methods in public or private preview
Cross-border payouts
Use Global payouts to send cross-border payouts.