Financial account features
Learn about the features available for financial accounts.
You add features to financial accounts to provide the functionality that enables you to move money between accounts, attach payment cards, and more. You typically assign the Feature
objects you want when creating FinancialAccount
objects, but you can add or remove them at any time. Some Features
require that the connected account associated with the financial account have particular capabilities active. For example, a connected account must have the card_
capability active before you can request the card_
feature on the financial account attached to that connected account.
Available features
The following table lists the available Features
for a FinancialAccount
and the capabilities the associated connected account must have active to add them.
Note
You must request or have the following capabilities active before you can request the treasury
capability for connected accounts:
transfers
card_
payments
Feature | Description | Required capabilities |
---|---|---|
card_ | Allows the creation of a Card object associated with this financial account. | card_ |
deposit_ | Requests FDIC insurance eligibility for the financial account. | treasury |
financial_ | Triggers the creation of a FinancialAddress object of type ABA associated with this financial account. When this feature is active, the address can receive money over ACH or wire, and external bank accounts can debit it. | treasury |
inbound_ | Allows creation of InboundTransfer objects to fund the financial account by debiting an external US bank account. | treasury , us_ |
intra_ | Enables this financial account to send money to or receive money from other financial accounts over the stripe network. Both financial accounts (originator and recipient) need this feature enabled for stripe network outbound payments to work. | treasury |
outbound_ | Allows this financial account to send ACH transfers using the OutboundPayment objects of the Stripe API. | treasury , us_ |
outbound_ | Allows this financial account to send US domestic wire transfers using OutboundPayment objects of the Stripe API. | treasury |
outbound_ | Allows this financial account to send ACH transfers using OutboundTransfer objects of the Stripe API. | treasury , us_ |
outbound_ | Allows this financial account to send US domestic wire transfers using OutboundTransfer objects of the Stripe API. | treasury |
Same-day ACH
Beta
Same-day ACH is currently in beta with limited availability, subject to Stripe review and approval. To request access, email treasury-support@stripe.com.
If you don’t have access, API calls that include same-day ACH features or parameters return an error.
The following features enable financial accounts to use same-day ACH functionality. You must request the corresponding *.
feature on a financial account to use it. For example, to enable a financial account to send a same-day OutboundPayment, you must request outbound_
and outbound_
on that financial account:
Feature | Description | Required capabilities |
outbound_ | Allows this financial account to send ACH transfers using OutboundPayment objects that arrive in the destination account within the same business day. | treasury , us_ |
outbound_ | Allows this financial account to send ACH transfers using OutboundTransfer objects that arrive in the destination account within the same business day. | treasury , us_ |
inbound_ | Allows creation of InboundTransfer objects to fund the financial account within the same business day. | treasury , us_ |
Requesting features
Typically, you request features on your Treasury financial account when you create the financial account. The following request creates a financial account and requests features in the same call.
If you’re working with existing financial accounts, use POST /v1/treasury/financial_
to request additional features.
Feature activation
After you request a feature and satisfy all verification requirements to onboard the connected account to your platform, the feature activates. For some features, activation can be instantaneous (for example, card_
). Other features, such as financial_
, activate asynchronously. The following API call creates a financial account and requests the ‘financial_addresses.aba’ and ‘card_issuing’ features.
When you request features on financial account creation, the response indicates their status in the active_
, pending_
, and restricted_
properties. For more information, see the Retrieving features section.
{ "object": "treasury.financial_account", "created": 1612927106, "id": "fa_123", "country": "US", "supported_currencies": ["usd"], "active_features": ["card_issuing"], "pending_features": ["financial_addresses.aba"], "restricted_features": [], // No FinancialAddress added as the financial_addresses.aba feature is not yet active "financial_addresses": [], "livemode": true, "status": "open", ... }
You can use GET /v1/treasury/financial_
to retrieve the features for the financial account created in the previous example.
The response shows financial_
with a status
of pending
and status_
with a code
of activating
.
{ "object": "treasury.financial_account_features", "financial_addresses": { "aba": { "requested": true, "status": "pending", "status_details": [ { "code": "activating" } ] } }, "card_issuing": { "requested": true, "status": "active", "status_details": [] }, ... }
A feature can remain in this state for up to 30 minutes while Stripe communicates with external systems. When the financial_
feature activates, the financial account receives a FinancialAddress
object and triggers a treasury.
webhook.
The following request retrieves the FinancialAccount
details with the financial_
details expanded.
The response provides the account details, including the complete financial address information.
{ "object": "treasury.financial_account", "id": "{{FINANCIAL_ACCOUNT_ID}}", "country": "US", "supported_currencies": ["usd"], "active_features": ["card_issuing", "financial_addresses.aba"], "pending_features": [], "restricted_features": [], "financial_addresses": [ { "type": "aba", "supported_networks": ["ach", "domestic_wire_us"], "aba": { "account_number_last4": "7890", "account_number": "1234567890", "routing_number": "000000001", "bank_name": "Goldman Sachs" } } ], "livemode": true, ... }
The financial account can now receive credits or debits to this ABA financial address.
Removing features
To remove a feature, use POST /v1/treasury/financial_
and set the value of the feature to false
.
If successful, you receive the Features
object as a response with the feature you removed absent from the object.
Retrieving features
To retrieve the features of a financial account, use GET /v1/treasury/financial_
.
The JSON response provides the feature details defined by three properties:
requested
: Indicates whether the feature has been requested.status
: Describes the current state of the feature:active
,pending
, orrestricted
.status_
: Array of hashes containing a code and resolution.details
{ "card_issuing": { "requested": true, "status": "active", "status_details": [] }, "deposit_insurance": { "requested": true, "status": "restricted", "status_details": [ { "code": "requirements_past_due", "resolution": "provide_information" } ] } }
The following table identifies the possible combinations of status
and status_
.
Status | Status details code | Status details resolution | Description |
---|---|---|---|
pending | activating | Stripe is currently activating the feature. | |
pending | requirements_ | The requirements for the associated capability on the connected account have been submitted but haven’t completed verification. | |
restricted | requirements_ | provide_ | The connected account has requirements that must be fulfilled before this feature can be enabled. |
restricted | rejected_ | contact_ | The account is rejected because this type of business isn’t currently supported. For more information, email treasury-support@stripe.com. |
restricted | rejected_ | contact_ | The account is rejected for other reasons. For more information, email treasury-support@stripe.com. |
restricted | restricted_ | remove_ | The platform has restricted this feature using the platform_restrictions hash. |
restricted | financial_ | This feature is unavailable because the financial account is closed. | |
restricted | restricted_ | contact_ | This feature is restricted for other reasons. For more information, email treasury-support@stripe.com. |
Restricted features
You can restrict money movement in financial accounts on your platform to disallow inbound flows (inbound_
), outbound flows (outbound_
), or both types of flows. To do so, use the platform_restrictions hash. Restricting a flow affects the financial account’s features that rely completely or partially on that flow. For example, to prevent money from moving out of a financial account, call POST /v1/treasury/financial_
.
If successful, the response returns the financial account object with the appropriate flow set as restricted
.
{ "object": "treasury.financial_account", "id": "{{FINANCIAL_ACCOUNT_ID}}", "status": "open", ... "platform_restrictions": { "inbound_flows": "unrestricted", "outbound_flows": "restricted" }, "active_features": ["card_issuing", "deposit_insurance", "inbound_transfers.ach"], "pending_features": [], "restricted_features": ["financial_addresses.aba", "intra_stripe_flows", "outbound_payments.ach", "outbound_payments.us_domestic_wire", "outbound_transfers.ach", "outbound_transfers.us_domestic_wire"] }
As the previous response shows, restricting outbound_
on the FinancialAccount adds financial_
, intra_
, and inbound_
to the restricted_
array.
Features in the restricted_
array can be fully or partially restricted. For example, financial_
is part of the restricted_
array in the preceding response because restricting outbound_
prevents debits to the financial address. However, that financial address can still receive ACH or wire transfers, because inbound_
aren’t restricted.
Similarly, the intra_
feature is restricted because the outbound_
restriction prevents using this financial account as the source of an outbound payment to another financial account. However, the financial account can still be the destination of an outbound payment, so the feature isn’t completely restricted.
The following request retrieves feature details for a financial account with restricted flows.
The response provides the Feature
object that includes status_
with a code of restricted_
. The restriction
property provides a reference to the platform_
applied.
{ "object": "treasury.financial_account_features", "financial_addresses": { "aba": { "requested": true, "status": "restricted", "status_details": [ { "code": "restricted_by_platform", "resolution": "remove_restriction", "restriction": "inbound_flows" } ] } }, ... }
The following table outlines the impacts to features by platform_
.
Note
Restricting inbound flows for the financial_
feature doesn’t block inbound wires.
Impact of platform restrictions on features
The following table shows the effects of inbound_
and outbound_
platform restrictions on individual features:
Feature | inbound_flows | outbound_flows |
---|---|---|
card_ | N/A | N/A |
deposit_ | N/A | N/A |
financial_ | Prevents the ABA financial address from receiving credits over ACH. | Prevents debits from the ABA financial address. |
inbound_ | Disables the feature. | N/A |
intra_ | Prevents the financial account from receiving outbound payments from other financial accounts. | Outbound payments can’t be made from this financial account to other financial accounts. |
outbound_ | N/A | Disables the feature. |
outbound_ | N/A | Disables the feature. |
outbound_ | N/A | Disables the feature. |
outbound_ | N/A | Disables the feature. |
Webhooks
To perform an action with webhooks when one or more features have transitioned to a certain status, compare your local state with the latest state of the feature. Although the previous_
property of the treasury.
webhook also indicates which features have changed from one status to another, events can be duplicated or received out of order. For more information, see the webhooks best practices.
account.
updated - When requesting new features, the platform might get an
account.
webhook indicating that theupdated requirements
hash has changed with fields added topending_
.verification
- When requesting new features, the platform might get an
treasury.
financial_ account. features_ status_ updated - Indicates that one or more features have changed status, reflected in changes to the
active_
,features pending_
orfeatures restricted_
arrays.features
- Indicates that one or more features have changed status, reflected in changes to the