Accounts v2 APIPublic preview
Learn how to use the Accounts v2 API to represent your connected accounts on Stripe.
The Accounts v2 API allows you to represent your user as a single entity on Stripe.
This API structure provides:
- A single entity that represents a connected account for all of its activity across multiple configurations
- Structured identity data about the individual or business represented by the account
- Variable configurations that support cross-product adoption and upgrades
- Capabilities representing configuration-based functionality that depends on specific requirements
How Account calls return data
By default, Accounts v2 calls return values for certain properties and null for other properties, regardless of their actual values. To retrieve additional property values, request them using the include parameter.
The following example creates an Account without specifying any return properties to include:
The response returns values only for properties that it returns by default. It returns null for other properties, even the ones that the request assigned values to.
{ "id": "acct_123", "object": "v2.core.account", "applied_configurations": [ "customer" ], "created": "2024-07-07T21:41:41.132Z", "display_name": "Furever", "configuration": null, "contact_email": "contact@test.com", "requirements": null, "identity": null, "defaults": null, "livemode": false }
To populate additional properties in the response, specify them in the include parameter. For configurations, you must specify individual configuration types explicitly. Any configuration not requested returns a null value, regardless of its data.
The following example assigns customer and merchant configurations, but only requests the customer configuration in the include parameter.
The response shows how omitting configuration. from the include array returns a null value for the merchant configuration, even though the request specifies values for it. The null value indicates only that the request’s include parameter didn’t specify that property.
{ "id": "acct_123", "object": "v2.core.account", "applied_configurations": [ "customer", "merchant" ], "configuration": { "customer": { "automatic_indirect_tax": { "exempt": "none", "ip_address": null, "location": null, "location_source": "identity_address" }, "billing": { "default_payment_method": null, "invoice": { "custom_fields": [], "footer": null, "next_sequence": 1, "prefix": "KD5JNJLZ", "rendering": null } }, "capabilities": { "automatic_indirect_tax": { "requested": true, "status": "restricted", "status_details": [ { "code": "requirements_past_due", "resolution": "provide_info" } ] } }, "shipping": null, "test_clock": null }, "merchant": null, "recipient": null }, "requirements": "{...}" }
Understand Account creation in API v2
When you create an Account, you must provide identifying information about the entity it represents and define one or more configurations that control its behavior.
Identity information
Populate the identity hash with information about the individual or business that the Account represents. The specific parameters depend on the nature of the entity.
You can add a representative person to an Account by creating an associated Person object, as in the following example.
Configurations
Each Account has one or more configurations that represent different business personas, such as a merchant or customer. They define how the Account interacts with Stripe products.
Each configuration type includes certain capabilities, which enable configuration-specific functionality when associated requirements are met. Instead of simply enabling a capability, you request it, which triggers collection of that capability’s requirements. The capability activates when Stripe verifies that its requirements are met.
Populate the configuration parameter for the Account with one or more of the following configuration types, depending on the functionality you want to provide.
Customer
The customer configuration allows a connected account to make payments to your platform and activates functionality in products such as Billing. It includes the automatic_ capability, helps you collect the information you need to calculate taxes on the invoices, subscriptions, and payment links for the Account.
Merchant
The merchant configuration allows the controlling platform to create charges for the Account. It includes the card_ capability, which is required for the Account to accept card payments.
Recipient
The recipient configuration allows an Account to receive funds other than direct payments, such as payouts from a Connect platform. It includes the stripe_ capability, which allows the Stripe balance for the Account to receive fund transfers and is required for functionality such as destination charges.
How capabilities work
To activate a capability, you must first request it by setting its requested property to true. That triggers collection of the capability’s requirements, which is handled by Stripe or your platform, depending on the responsibilities properties for the Account. Requirements can involve identity and compliance documentation, and risk data. When Stripe verifies that a capability’s requirements are fulfilled, it becomes active.
Requirements
Requirements describe the information required by Stripe to enable capabilities for the Account, and can include:
- The type of information
- Why Stripe needs the information
- Whether the requirement is past due (The “deadline” can be a date or some other type of threshold, such as a certain volume of payments)
- Consequences that Stripe imposes at the deadline if we can’t verify the information with acceptable documentation, such as suspending certain functionality or stopping payouts from the Stripe balance for the
Account - Who must take action
Company representatives
Some capabilities might require you to create a Person object for the Account with relationship. set to true.
In addition to any capability-specific consequences, if a capability has past-due requirements, its status becomes restricted, with a status_ of requirements_.
The following example requests the stripe_ capability, which belongs to the recipient configuration. It assumes that the Account already has the recipient configuration.
To see all the requirements for the requested capabilities for an Account, retrieve the Account and specify both requirements and the assigned configuration types in the include parameter.
The following example returns the status and requirements for capabilities belonging to the recipient configuration.
In the example response, the stripe_ capability has been requested, but its requirements are past due. Because the request didn’t ask for the customer or merchant configurations, they return null values even if they’re defined on the Account.
{ "id": "acct_123", "object": "v2.core.account", "applied_configurations": [ "recipient" ], "configuration": { "customer": null, "merchant": null, "recipient": { "capabilities": { ... "stripe_balance": { "payouts": { "requested": true, "status": "restricted", "status_details": [ { "code": "requirements_past_due", "resolution": "provide_info" } ] }, "stripe_transfers": { "requested": true, "status": "restricted", "status_details": [ { "code": "requirements_past_due", "resolution": "provide_info" } ] } } }, ... } }, "contact_email": "furever_contact@example.com", "created": "2025-04-01T20:29:43.000Z", "dashboard": "full", "identity": null, "defaults": null, "display_name": "Furever", "metadata": {}, "requirements": { "collector": "stripe", "entries": [ { "awaiting_action_from": "user", "description": "identity.business_details.address.country", "errors": [], "impact": { "restricts_capabilities": [ { "capability": "card_payments", "configuration": "merchant", "deadline": { "status": "past_due" } }, { "capability": "stripe_balance.stripe_transfers", "configuration": "recipient", "deadline": { "status": "past_due" } }, { "capability": "stripe_balance.payouts", "configuration": "recipient", "deadline": { "status": "past_due" } } ] }, "minimum_deadline": { "status": "past_due" }, "reference": null, "requested_reasons": [ { "code": "routine_onboarding" } ] }, ... ], "summary": { "minimum_deadline": { "status": "past_due", "time": null } } } }
The following variables affect the requirements imposed on an Account:
- Requested capabilities
- The origin country for the
Account - The entity type for the
Account
A requirement’s impact describes how capabilities are affected when that requirement is past due. Its minimum_ is the earliest deadline status across all capabilities listed in its impact. To prioritize your requirements collection, inspect the deadline. for each impact.
Most Stripe users satisfy requirements during account onboarding. Regardless of which onboarding flow you use, you can choose from two strategies:
- Incremental: Collect only the minimum requirements during onboarding, meaning those with a status of
currently_ordue past_.due - Upfront: Collect all requirements during onboarding, regardless of their deadline status.
Monitor requirement updates
Because laws and regulations can change at any time, Stripe continuously updates our compliance and risk systems. That can affect the requirements for your connected accounts’ capabilities. To avoid interruption to their business, you must continuously monitor their capability and requirement statuses and implement processes to update requirements as needed.
Reference Accounts v2 objects in v1 requests
You can reference a v2 Account ID in other Stripe APIs in either an account or customer_ parameter.
- A request with a
customerparameter can accept the ID of a v2Account, but you must provide it in thecustomer_parameter instead of theaccount customerparameter. TheAccountmust have thecustomerconfiguration. - A request with an
accountparameter can accept the ID of any v2Accountin that parameter.
Information for Accounts v1 users
If your platform currently uses Accounts v1 and Customers v1, you can start using Accounts v2 in addition to them. However, you can’t use API v2 to manage Account and Customer objects created in API v1. Your platform must handle v1 and v2 objects separately.
Preview considerations
Accounts v2 allows you to use a single, configurable account for each business on your platform that collects payments directly. The preview release doesn’t support Financial Accounts for platforms, Issuing, or payment methods that are in preview. You can still use Financial Accounts for platforms, Issuing, or payment methods in preview with Accounts v1.
Enable Accounts v2 for your Connect platform from your Dashboard.