Public preview
Send money to recipients and financial accounts you don't own Public preview
Learn how to create outbound payments to move money out of financial accounts to third parties.
OutboundPayment objects represent push-based transfers from:
- A platform’s financial accounts to a financial account owned by connected accounts.
- Financial accounts owned by one connected account to a financial account owned by another connected account under the same platform.
- Financial accounts of a connected account to one of the platform’s financial accounts.
- Financial accounts of a connected accounts any third party recipient.
Note
To move funds between financial accounts and other accounts owned by the same entity, use OutboundTransfers instead.
Source currency:
You can create the following types of OutboundPayment:
| From a financial account to: | Payout method | Recipient capability | Expected arrival time |
|---|---|---|---|
| Another financial account under a different account | — | — | Immediate |
| An external UK recipient (third party payout) | Faster Payments (FPS) | bank_accounts.local | Immediate |
| An external recipient (third party payout) with FX | Cross-border | Varies by country | Typically 1-7 days (varies by country) |
Move money from a platform to connected account
To move funds from your platform’s financial account to a connected account’s financial account, create an OutboundPayment without the Stripe-Context header:
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
Note
When moving funds from your platform’s financial account, don’t include the Stripe-Context header. The platform financial account is automatically used as the source of funds.
Move money between connected accounts’ financial accounts
Use Outbound Payments to create an outbound payment:
This example creates an outbound payment between two financial accounts of different connected accounts (under your platform). Set the recipient_notification.setting to none so that a Stripe notification isn’t sent to the recipient.
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
Note
To move funds from your platform’s financial account to a connected account’s financial account, don’t specify the Stripe-Context header.
Use a similar request to move funds from your connected account’s financial account to your platform’s financial account.
Create an OutboundPayment to a third party recipient
To pay a third party recipient, first create and onboard a recipient-configured connected account to generate an account ID and a payout method ID that you need for the transaction.
Then create an outbound payment.
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
Send an OutboundPayment cross-border or to a recipient in a different currency
Stripe supports sending money in local currency to recipients in many different countries. Before making a cross-border outbound payment, review:
- Payout amounts for country-specific information about currencies and minimum payment amounts
- Recipient payout methods
Note
To get access to cross-border Outbound Payments to external bank accounts, contact . Cross-border transfers between financial accounts are enabled by default.
Create an OutboundPaymentQuote to understand applicable FX and fees before making a cross-border outbound payment.
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
The response contains the estimated fees, currency exchange rate, and payout amounts prior to creating the payment. The FX quote is valid for 5 minutes. If you don’t create an outbound payment within 5 minutes, you need to request a new quote.
{
"id": "{{OUTBOUND_PAYMENT_QUOTE_ID}}",
"object": "v2.money_management.outbound_payment_quote",
"amount": {
"value": 30000,
"currency": "usd"
},
"created": "2025-09-09T09:21:17.201Z",
"delivery_options": null,
"estimated_fees": [
{
"amount": {
"value": 0,
"currency": "usd"
},
"type": "cross_border_payout_fee"
},
{
"amount": {
"value": 300,
"currency": "usd"
},
"type": "standard_payout_fee"
},
{
"amount": {
"value": 100,
"currency": "usd"
},
"type": "foreign_exchange_fee"
}
],
"from": {
"debited": {
"value": 30000,
"currency": "usd"
},
"financial_account": "{{FINANCIAL_ACCOUNT_ID}}"
},
"fx_quote": {
"lock_duration": "five_minutes",
"lock_expires_at": "2025-09-09T09:26:17.000Z",
"lock_status": "active",
"rates": {
"usd": {
"exchange_rate": "1.133"
}
},
"to_currency": "eur"
},
"to": {
"credited": {
"value": 34443,
"currency": "eur"
},
"payout_method": "{{RECIPIENT_PAYOUT_METHOD_ID}}",
"recipient": "{{RECIPIENT_ACCOUNT_ID}}"
},
"livemode": false
}
When creating the payout with OutboundPayment, provide the quote to acknowledge the fees associated with the payout.
At this point, you have all the necessary pieces to pay the recipient from the connected account’s financial account using the Create an OutboundPayment endpoint.
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
Send an OutboundPayment in USD Private preview
Available in:
You can send US outbound payments using the following methods:
| Method | Capability | Speed | Reversible |
|---|---|---|---|
| ACH (Standard) | bank_accounts.local | Typically 2-3 business days | Yes |
| Wire | bank_accounts.wire | Same business day | No |
| RTP (Real-Time Payments) Private preview | bank_accounts.instant | Seconds to minutes | No |
| Push-to-card Private preview | cards | Immediate | No |
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
For payroll payments, set "purpose": "payroll" to comply with the related setting requirements.
