Stripe | Financial Infrastructure to Grow Your Revenue

Stripe | Financial Infrastructure to Grow Your Revenue

4466 articles

Fund a financial account


Public preview

Fund a financial account Public preview

Learn how to move money into a financial account balance.

You have the following options to fund a financial account:

Funding methodAvailability for outbound payments and transfersWhere to initiate
Send funds from a Stripe payments balanceInstantStripe API
Send funds from your external bank account to a FinancialAddress1 business day (7 days initially for the first 5000 GBP in funding)From your bank
Use inbound transfers from a linked external bank account2-6 business daysStripe API
Submit a check using remote capture2–6 business daysStripe API
Send funds from an existing financial accountInstantStripe API
Simulate a received credit (Sandbox only)InstantStripe API
Use automatic transfer rulesInstant (when rule triggers)Stripe API

Send funds from a Stripe Payments balance

As the platform, you can move money from your payments Balance to your financial accounts or from your connected accounts’ payments balance to their financial accounts.

When testing, you can use Stripe test cards, as in the following example. Test cards allow you to fund your Stripe payments balance instantly so you can test moving those funds to your financial account without waiting.

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

The following example moves funds from a platform’s balance to its financial account:

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

To move money from your connected account’s payments balance, pass the Stripe-Account to identify the connected account as the target of the request:

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Send funds from an external bank account

You should only credit financial accounts using external bank accounts that you own.

To get the bank credentials for your financial account, you must create a FinancialAddress.

To create a financial address for your financial account, use the Create FinancialAddress API.

Create a financial address when you need to receive funds into a financial account or enable outbound payments to third parties. Specify the type corresponding to the country of the financial account to make sure we provision the correct address credentials (such as a US routing number, British sort code, or EU the related setting).

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

If successful, the response provides the ID for the financial address, along with the relevant credentials for the jurisdiction.

{
 "id": "{{FINANCIAL_ADDRESS_ID}}",
 "object": "v2.money_management.financial_address",
 "credentials": {
 "type": "us_bank_account",
 "us_bank_account": {
 "account_number": "123456890",
 "routing_number": "110000000",
 "bic": "TSTEZ122",
 "bank_name": "STRIPE TEST BANK",
 "last4": "6890"
 }
 },
 "status": "active",
 "financial_account": "fa_6504m3x1JLdhVIIIT1A16O0lef0dSQgZ0EhGyZsQCXQ28m",
 "created": "2023-03-30T17:32:06.665Z",
 "currency": "usd"
}

After you create a financial address, it starts in a pending status while Stripe provisions the bank details. When the status becomes active, you can retrieve the credentials (bank details) and share them to receive funds. You can monitor incoming funds using received credits.

You can use the Get FinancialAddress API to fetch details about the financial address:

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

After you retrieve the FinancialAddress, you can view the account credentials, such as a US routing number, British sort code, or European the related setting, which you can use to send money from your external bank account.

To list financial addresses associated with your financial account, use the List Financial Addresses API. You can use different parameters to filter out financial addresses for your financial account.

The following example request lists all financial addresses for the account:

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

In the US, connected accounts can fund USD financial accounts by sending ACH, RTP, or wire transfers to the financial address credentials. RTP funds are typically available within minutes.

Funding methodFunds availableWhere to initiate
ACH0–3 business daysFrom your bank
RTPTypically within minutesFrom your bank
WireSame dayFrom your bank

Note

RTP funding is available only for financial accounts in the US. If your Stripe account is outside the US, you can fund your USD financial account using ACH or a wire.

Use inbound transfers from a linked external bank account Private preview

Available in:

If you’re a platform in the US, you can use inbound transfers to debit your connected account’s linked external bank account to fund their Stripe financial account.

You embed a component in your platform where users link and verify their bank account for instant verification with no microdeposits or waiting period. Stripe:

  • Verifies ownership and obtains proof that the account holder authorized the debit.
  • Secures a mandate for legal authorization to pull funds on an ongoing basis.
  • Generates a tokenized credential representing the account and routing numbers securely vaulted as a reusable usba _ * payment method.

Your connected account must have the money_manager configuration and active business_storage.inbound.usd capability to use inbound transfers to fund their financial accounts from their external bank account.

Authenticate the external account

Create an AccountSession on your server to render either the account_management or account_onboarding embedded component requesting the external_account_collection feature. This allows your connected account to link their external bank account to Stripe through the component UI.

Command Line

Select a language

cURL

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Alternatively, you can verify a US bank account using the API:

  1. Create a US bank account .
  2. Send microdeposits .
  3. Confirm the microdeposit amounts or descriptor code .

After the USBankAccount verification status becomes verified, you can use the resulting usba_* credential for inbound transfers.

Create an inbound transfer

You or your connected account can initiate an inbound transfer to move funds into their financial account from their linked external account.

You can render the financial_accounts embedded component to allow your connected account to transfer money from their linked external account to their financial account using the Move money user interface.

Transfer lifecycle

After creation, an inbound transfer moves through various states. Listen for and handle the following v2.money_management.inbound_transfer webhook events at each stage:

EventDescription
bank_debit_queuedTransfer created, waiting to send to the bank network.
bank_debit_processingDebit submitted to ACH, awaiting settlement.
bank_debit_succeededBank confirmed the debit.
availableFunds available in the financial account.
bank_debit_failedDebit failed, possibly because of insufficient funds or an invalid account.
bank_debit_returnedThe bank returned the debit after initial success (can occur days later).

Submit a check using remote capture Private preview

Available in:

Request access

Check acceptance requires separate access in addition to Treasury for platforms. If you already use Treasury for platforms, contact your Stripe representative to request this feature.

Platforms in the US can use Check Scan to fund their connected accounts’ financial accounts. Capture images of an endorsed check to create a US Paper Check object that you can include in a PaymentIntent. Payment funds become available in the connected account’s payments financial account.

Your connected account must have the money_manager configuration and the merchant configuration with an active us_paper_check_payments capability.

Command Line

Select a language

cURL

Stripe CLI

Ruby

No results

Send funds from an existing financial account

You can transfer funds between financial accounts using the OutboundTransfer or OutboundPayment APIs.

  • Use OutboundTransfer to transfer money between financial accounts owned by the same entity (for example, between two financial accounts owned by the same platform, or two financial accounts owned by the same connected account).
  • Use OutboundPayment for payments between different connected accounts, and payments to and from the platform and connected account.

Monitor received credits

Every transaction that adds funds to a financial account generates a ReceivedCredit object on the financial account, detailing how funds were sent and from what account, where possible.

For USD financial accounts in the US, funds can arrive through ACH, RTP, or wire transfers.

List received credits

List received credits to review a set of funding transactions for a financial account. Use parameters in the request to filter the results by created date or to limit responses.

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Get a received credit

Retrieve a received credit by its ID to review details such as the amount, status, and type of transfer.

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

{
 "id": "rc_test_123",
 "object": "v2.money_management.received_credit",
 "amount": {
 "value": 1,
 "currency": "usd"
 },
 "balance_transfer": {
 "payout_v1": "",
 "type": "outbound_payment"
 },
 "created": "2025-06-11T19:25:47.222Z",
 "description": "Received money from an FA",
 "financial_account": "fa_test_321",
 "receipt_url": "https://payments.stripe.com/transaction_receipt/…",
 "status": "succeeded",
 "status_details": null,
 "status_transitions": {
 "failed_at": null,
 "returned_at": null,
 "succeeded_at": "2025-06-11T19:25:47.222Z"
 },
 "type": "balance_transfer",
 "livemode": false
 }

Create a test received credit

Credit a financial address to add virtual funds and increase your financial account balance for testing.

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Set network to a supported value for the country and currency.

The response indicates if the simulation was successful, and you can check the balance of the financial account to confirm the increase.

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Set up automatic transfer rules

Automatic transfer rules enable platforms to automatically split funds from a connected account’s payments balance to a financial account during scheduled payouts. This eliminates the need for manual calculations and transfers.

Before setting up automatic transfer rules, make sure:

  • The connected account has at least one active financial account.
  • The connected account is on an automatic payout schedule.
  • The financial account supports the currency you want to transfer.

Configure automatic transfer rules

Use the Balance Settings API to configure automatic transfer rules for your connected accounts. You can set one financial account per currency as the automatic transfer destination.

You can also configure automatic transfer rules for users on a manual payout schedule.

Enable automatic payouts

Automatic payouts is disabled if payments.payouts.schedule.interval is set to manual. You must enable automatic payouts to activate the rules.

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Transfer a fixed amount

Transfer up to a specific amount to a financial account, with the remaining balance going to the connected account’s external bank account. When you use transfer_up_to_amount, the connected account must have a bank account configured for the currency. If the balance is less than transfer_up_to_amount, the entire balance is transferred to the financial account.

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Transfer all funds

Transfer all available funds to a financial account. When you use transfer_all, an external bank account isn’t required for the connected account.

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Update automatic transfer rules

Update a rule by submitting the complete configuration for the currency:

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Remove automatic transfer rules

Remove the automatic transfer rule for a currency:

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

.NET

No results

View the current configuration

Retrieve the current automatic transfer rules:

Command Line

Select a language

cURL

Stripe CLI

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Last verified 2026-09-24

Is this helpful?