Account capabilities

Capabilities describe what a connected account can do (e.g., which payment methods it can process) and the associated information requirements that need to be satisfied.

The capabilities you choose for a connected account determine the associated information requirements you need to collect for that account. To make onboarding as easy as possible, only request the capabilities you need. The more capabilities you request, the more information you must collect.

You can start by completing the platform profile to understand which capabilities might be appropriate for your platform.

Supported capabilities

The following is a list of available capabilities. Click on the items to get more information about them:

Transfers

You can transfer funds to connected accounts that have the transfers capability. On-demand platforms often use it to pay their connected accounts. For example, a ride-hailing platform could use this capability so they can pay their drivers. The following diagram illustrates the flow of funds and the relationship between the customer, platform, and connected account.

Relationship between the customer, connected account, and platform.

Your customer's bank statement displays your platform's information, and not that of the connected account, when you process charges using the transfers capability. The reason for this is because your platform processes the charges (as opposed to the connected account).

You can use the following account and charge types:

Account types Charge types Stripe's recommendation
Express with destination charges

Cross-border transfers

Moving money across country borders introduces additional requirements. Transfers are not supported cross-border, except in the European Union (EU) where transfers between SEPA countries, other than the United Kingdom (GB), are supported.

When a platform account is in a different country from the connected account, charges must be made directly on the connected account (using card_payments), or with the connected account specified as the settlement merchant (using on_behalf_of).

If you don't want charges to be made directly on the connected account, create a platform account in that same region and onboard accounts to that account. Depending on your business structure, this might require creating a legal entity in that region and additional work to onboard users to the new platform account.

Card payments

Connected accounts with the card payments capability can receive payments from your platform as well as process card payments and ACH payments directly. An e-commerce storefront with this capability, for example, would be able to collect their own payments. The following diagram helps illustrate the flow of funds and the relationship between the customer, platform, and connected account:

Relationship between the customer, connected account, and platform.

For an account to have this capability, you must request both card_payments and transfers.

Connected accounts with this capability have their statement descriptor displayed on the customer's bank statement, not the platform's.

You can use the following account and charge types:

Account types Charge types Stripe's recommendation
Standard with direct charges

U.S. tax reporting

The U.S. Internal Revenue Service (IRS) requires some platforms to file 1099 forms with the IRS between January and March, and to deliver the reporting of those filings to their users by January 31. As a result, these platforms need to collect additional user information.

If your platform has federal 1099 filing requirements and you decide to file through Stripe, you can use the tax_reporting_us_1099_misc and tax_reporting_us_1099_k capabilities to collect the necessary personal and business information from your users.

1099-MISC form

Many types of payments require an IRS Form 1099-MISC, such as payments to non-employees or contractors, royalties, prizes, and so forth. The tax_reporting_us_1099_misc capability helps you collect the required information for Form 1099-MISC. For example, a dog-walking platform could use the tax_reporting_us_1099_misc capability to collect the necessary information from their dog walkers for tax filing season.

1099-K form

A 1099-K form reports payments received from credit card transactions and third-party payment networks. Traditionally, third-party settlement organizations have used Form 1099-K to report their gross payment transactions in a calendar year. For example, an e-commerce platform would use the tax_reporting_us_1099_k capability to collect the necessary information from each storefront for tax filing season.

Bank debits and transfers

Bank debits and transfers use common regional standards to accept payments directly from your customer’s bank accounts. You can request direct debit and credit transfer capabilities for your connected accounts based on the customers that they serve.

By default, the platform is the settlement merchant for destination charges. Make sure your platform is in a supported country listed in the table below.

You can change the settlement merchant to be the connected account instead with on_behalf_of. If you choose to do this, make sure the connected account has the appropriate capability and is in one of the supported countries outlined below.

Capability Customer location Availability
Bacs Direct Debit bacs_debit_payments GB Platform must be in GB.
BECS Direct Debit au_becs_debit_payments AU Platform must be in AU.
Capability Customer location Availability
Bacs Direct Debit bacs_debit_payments GB Connected account must be in GB.
BECS Direct Debit au_becs_debit_payments AU Connected account must be in AU.

Multiple capabilities

Requesting multiple capabilities for a connected account is common but consider the following if you do this:

  • Capabilities operate independently of each other.
  • If a connected account is set with both card_payments and transfers, then both capabilities become disabled if the status of either one is inactive.
  • You can request or unrequest any capability for a connected account at any time during the account’s lifecycle.

Capabilities also allow you to collect information for multiple purposes at the same time, so users are not asked to submit the same information more than once. An example would be collecting both required tax information and the information required for a requested capability. If you’re onboarding a user with the transfers capability and they’re required to file an IRS FORM 1099-MISC (a U.S. federal tax reporting form), you could collect information for both at the same time.

Create an account with capabilities

Capabilities are set on the Account object. To find the list of available capabilities, use the list_capabilities endpoint. Account creation differs by account type. You can read more about creating Standard, Express, and Custom accounts in their respective sections.

curl https://api.stripe.com/v1/accounts \ -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d type=custom \ -d "requested_capabilities[]"=card_payments \ -d "requested_capabilities[]"=transfers

Information requirements vary depending on the capability, but they often relate to identity verification or other information specific to a payment type.

When your connected account is successfully created, you can view what its requirements are:

curl https://api.stripe.com/v1/accounts/{{CONNECTED_STRIPE_ACCOUNT_ID}} \ -u sk_test_4eC39HqLyjWDarjtT1zdp7dc:

In the response, check the requirements hash to see what information is needed. The values for payouts_enabled and charges_enabled indicate whether payouts and charges can be made for the account.

More about capabilities

The basics of account creation are covered above. However, there can be instances where you’ll want to preview information requirements or manage capabilities on existing accounts. The following sections describe how to perform these actions using the Capabilities API.

Preview information requirements

You can preview what information is needed from your user for a particular capability either before or after that capability has been requested.

When you request capabilities, account.updated webhooks fire and the account’s requirements might change. If you preview the requirements first, collect what’s required for the account, and then request the capability, you can assist in enabling charges and payouts for the account more quickly. You also avoid the possibility of the account getting disabled since the information was already collected in advance.

Below is an example that lists the requirements for the card_payments capability for a specific account.

curl https://api.stripe.com/v1/accounts/{{CONNECTED_STRIPE_ACCOUNT_ID}}/capabilities/card_payments \ -u sk_test_4eC39HqLyjWDarjtT1zdp7dc:

In the response, check the requirements hash to see what information is needed:

{ "id": "card_payments", "object": "capability", "account": "{{CONNECTED_STRIPE_ACCOUNT_ID}}", "requested": false, "requested_at": null, "requirements": { "past_due": [], "currently_due": ["company.tax_id", ...], "eventually_due": [...], "disabled_reason": ..., "current_deadline": ..., }, "status": "unrequested" }

The value for status identifies whether the capability has been requested. When it is requested, requirements are activated for the account.

While these steps demonstrate how to preview a capability’s requirements before requesting it, you can use the same endpoint to view what the current requirements are for a capability. This can help you stay informed of what a capability’s requirements are and also of any requirement changes.

Request and unrequest capabilities Express accountsCustom accounts

After account creation, you can request additional capabilities. Do this by setting requested to true, specifying which capability you want, and which connected account it’s for. If the capability request is successful, the API returns requested: true in the response.

If you prefer, you can request and unrequest an account’s capabilities from the Dashboard instead of using the API.

As an example, below is a transfers capability request for a specific connected account:

curl https://api.stripe.com/v1/accounts/{{CONNECTED_STRIPE_ACCOUNT_ID}}/capabilities/transfers \ -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \ -d requested=true

You can also unrequest capabilities for an account, just use the same API call but set requested to false instead.

See also

Was this page helpful?
Questions? Contact us.
Developer tutorials on YouTube.
You can unsubscribe at any time. Read our privacy policy.