# Send payouts

Learn how to send money to recipients in more than 160 countries.

Send payouts to recipients from your [financial account](https://docs.stripe.com/treasury.md#financial-accounts-for-global-payouts) in Stripe Treasury. Speed and cost vary by [payout method](https://docs.stripe.com/global-payouts/payout-methods.md).

### Interested in getting early access to cross-border payouts?

Enter your email to request access.

```bash
curl https://docs.stripe.com/preview/register \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Referer: https://docs.stripe.com/global-payouts/send-money" \
  -d '{"email": "EMAIL", "preview": "cross_border_payouts_preview"}'
```

## How to send money

You can send payouts from the Dashboard or with the API.

#### Dashboard

To send payouts to recipients directly from the Dashboard:

1. Go to Treasury > **[Payouts](https://dashboard.stripe.com/global-payouts/payouts)**.
2. Click **Send money**.
3. Search and choose from the recipient list, or click **Add new recipient**. Click **Continue**.
4. Choose the amount you want to send.
   - If you’re sending a cross-border payout and converting currencies, you can specify either the sending amount or the amount the recipient receives in the local currency.
5. Choose the payout method you want to use.
6. (Optional) You can add an internal note to reference when managing payouts. Notes are visible only to you and limited to 50 characters.
7. (Optional) If you want Stripe to send a confirmation email to your recipients on your behalf, select the box.
8. Click **Review**, then review the details and click **Send**.
   - If you’re sending a cross-border payout and converting currencies, the exchange rate might be updated. If so, the updated rate and the estimated payout amount and fees are shown. The rate on the review page is the finalized rate.

After you send the payout to the recipient, track your payout status on the [Payouts](https://dashboard.stripe.com/global-payouts/payouts) page. See [Monitor and manage payouts](https://docs.stripe.com/global-payouts/manage-payouts.md#view-payout-status) for more detail on payout statuses and how to view them.

## Confirmation of Payee (UK only)

When you send a GBP payout from a UK financial account to a UK bank account, Confirmation of Payee (CoP) requires you to check that the recipient’s legal name and business type match the details their bank has on file.

Stripe helps you meet this requirement by running the check in the Dashboard when you add the recipient’s UK bank account. If you send money to an existing bank account that hasn’t been checked, it shows a `Not verified` badge. Click **Verify** to run the check.

Depending on the result:

- **Match**: Stripe shows `Bank account verified`, and you can send the payout.
- **Partial Match or No Match**: The recipient’s legal name, business type, or both don’t match the bank’s records. Click **Edit** to correct the recipient’s details and run the check again, or click **Continue without match** to proceed.
- **Unavailable**: Stripe couldn’t verify the details with the recipient’s bank. Review the bank details, then click **Continue without match** if you want to proceed.

Only continue without a match if you’re confident the bank account belongs to the intended recipient. Funds sent to the wrong bank account might not be recoverable.

#### API

## Choose an API

The PayoutIntents API and the OutboundPayments API both send payouts to recipients. They differ in how much of the payout workflow Stripe guides you through.

- **PayoutIntents API (private preview)**: A PayoutIntent guides you through each stage of a payout, from preparation and review to sending and handling failures. Use it to preview fees and exchange rates before you send money. Use it to schedule payouts or handle failed and returned payouts on the same object.
- **OutboundPayments API**: Each OutboundPayment is a single payout attempt that Stripe sends when you create it. Use it if your integration already handles payout decisions and failures.

The PayoutIntents API is in private preview. [Request access](https://docs.stripe.com/global-payouts/send-money.md#payout_intents_preview).

### Get access to PayoutIntents.

Enter your email to request access.

```bash
curl https://docs.stripe.com/preview/register \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Referer: https://docs.stripe.com/global-payouts/send-money" \
  -d '{"email": "EMAIL", "preview": "payout_intents_preview"}'
```

The PayoutIntents API is available for senders in the US and the UK.

| Feature | PayoutIntents API | OutboundPayments API |
| --- | --- | --- |
| Sending | By default, Stripe sends the payout after you create the PayoutIntent. To review the payout before sending it, set `confirmation_method` to `manual`, then confirm the PayoutIntent. Some payouts require confirmation for regulatory reasons, even when `confirmation_method` is `automatic`. | Stripe sends the payout when you create the OutboundPayment. You don’t need to complete a separate confirmation step. |
| Fees and currency conversion | The PayoutIntent includes estimated fees and the exchange rate quote. | Not supported. |
| Scheduling | To send the payout on a future date, set `schedule_options.execute_on`. | Not supported. Stripe sends the payout when you create it. |
| Failed and returned payouts | The PayoutIntent status changes to `requires_action`. To retry, update the PayoutIntent, or confirm it to retry without changes. You can also cancel it. | The OutboundPayment status changes to `failed` or `returned`. To try again, create a new OutboundPayment. |

## Use API keys

Sandbox secret keys work with the Global Payouts APIs, but full-access secret keys (`sk_live_...`) don’t work in live mode. For live requests, use a [restricted API key](https://docs.stripe.com/keys/restricted-api-keys.md). For a standard integration, [create one in the Dashboard](https://dashboard.stripe.com/apikeys/create) with these permissions:

- `Recipient Configuration: Write`
- `Money Management Financial Accounts: Read`
- `Money Management Payout Methods: Write`
- `Money Management Outbound Payments: Write`
- `Money Management Payout Intents: Write`

If you haven’t set up a recipient, see [Create recipients](https://docs.stripe.com/global-payouts/recipient-creation.md).

## Look up your FinancialAccount and recipient IDs

First, get your FinancialAccount ID using the [FinancialAccount API v2](https://docs.stripe.com/api/v2/money-management/financial-accounts.md?api-version=preview). The FinancialAccount API response includes your available funds in `balance.available`. If your business has multiple FinancialAccounts (for example, separate `storage` and `payments` accounts), use the `types` parameter to filter for `payments` accounts and retrieve the one you want to pay out from.

```curl
curl https://api.stripe.com/v2/money_management/financial_accounts \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview"
```

Then use the [Accounts v2 API](https://docs.stripe.com/api/v2/core/accounts.md) to get the recipient’s Account ID. In the API response, check the `status` of the recipient’s capabilities to confirm that `status` is set to `active`. This ensures you have all the required information to complete a payout. Otherwise, your payout might fail. If you haven’t created the recipient yet, see [Create a recipient](https://docs.stripe.com/global-payouts/recipient-creation.md#create-recipients-with-no-code).

You also have the option to inspect a recipient’s available payout methods or set a default payout method. See [View all payout methods for a recipient](https://docs.stripe.com/global-payouts/recipient-creation.md#view-all-payout-methods-for-a-recipient) and [Set a default payout method for a recipient](https://docs.stripe.com/global-payouts/recipient-creation.md#set-a-default-payout-method-for-a-recipient).

If your recipient doesn’t have any payout methods, you can create them using the API. Learn more about [creating payout methods for your recipients](https://docs.stripe.com/global-payouts/recipient-creation.md#create-payout-methods-for-your-recipients), and see [View all payout methods for a recipient](https://docs.stripe.com/global-payouts/recipient-creation.md#view-all-payout-methods-for-a-recipient) to retrieve them.

#### PayoutIntents API

The PayoutIntents API is in private preview. [Request access](https://docs.stripe.com/global-payouts/send-money.md#payout_intents_preview).

Use the PayoutIntents API to choose a payout method and review fees and timing before you send money.

To send a payout with the PayoutIntents API:

- [Create the PayoutIntent](https://docs.stripe.com/global-payouts/send-money.md#submit-a-payout-with-payoutintents). You can also [choose payment networks](https://docs.stripe.com/global-payouts/send-money.md#select-a-payment-network) or [schedule the payout](https://docs.stripe.com/global-payouts/send-money.md#schedule-a-payout-intent) for a future date.
- If the PayoutIntent requires confirmation, [review and confirm it](https://docs.stripe.com/global-payouts/send-money.md#review-payout-intent-details-and-fees). Confirmation is required if you set `confirmation_method` to `manual`, and for UK cross-border payouts.
- [Inspect the payout status](https://docs.stripe.com/global-payouts/send-money.md#inspect-a-payoutintent), and [handle payouts that require action](https://docs.stripe.com/global-payouts/send-money.md#handle-payouts-that-require-action).

## Select a payment network

You can specify the payment networks for a payout by setting `to.payout_method_options.bank_account.preferred_networks` when you create a PayoutIntent. Stripe selects the most appropriate network from the list you provide.

| Sender country | Available networks |
| --- | --- |
| United States (domestic) | `ach`, `fedwire` |
| United Kingdom (domestic) | `fps` |
| Eurozone (domestic) | `sepa` |
| Cross-border | `ach`, `fps`, `sepa`, `swift` |

If you don’t specify `preferred_networks`, Stripe selects the most appropriate network based on the recipient’s payout method and capabilities.

## Submit a payout 

Use the [Payout Intents API](https://docs.stripe.com/api/v2/money-management/payout-intents/create.md?api-version=preview) to make a payout to a recipient. You must provide the following parameters to create a payout:

| Required information | API parameter |
| --- | --- |
| Financial Account ID | `from.financial_account` |
| From currency | `from.currency` |
| Recipient ID | `to.recipient` |
| (Optional) Payout method ID | `to.payout_method` |
| (Optional) Preferred payment network | `to.payout_method_options.bank_account.preferred_networks` |
| (Optional) Confirmation method | `confirmation_method` |
| Amount in minor units (for example, 100 = 1 USD) | `amount.value` |
| Currency | `amount.currency` |

```curl
curl -X POST https://api.stripe.com/v2/money_management/payout_intents \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  --json '{
    "from": {
        "financial_account": "{{FINANCIALACCOUNTID_ID}}",
        "currency": "usd"
    },
    "to": {
        "recipient": "{{ACCOUNTIDGLOBALPAYOUTS_ID}}",
        "payout_method": "{{PAYOUTMETHODID_ID}}",
        "payout_method_options": {
            "bank_account": {
                "preferred_networks": [
                    "ach"
                ]
            }
        }
    },
    "amount": {
        "value": 1999,
        "currency": "usd"
    },
    "description": "Streamer earnings"
  }'
```

By default, `confirmation_method` is `automatic`, and the PayoutIntent moves to `pending` without further action unless a regulatory requirement mandates confirmation. To review every payout before Stripe sends it, set `confirmation_method` to `manual`. You can’t change `confirmation_method` after you create the PayoutIntent.

After you create the PayoutIntent, check its `status` in the response. If the status is `requires_action`, the payout needs confirmation before Stripe sends it. See [Review and confirm the payout](https://docs.stripe.com/global-payouts/send-money.md#review-payout-intent-details-and-fees).

## Review and confirm the payout 

When a PayoutIntent requires confirmation, its status is `requires_action` and `next_action.type` is `confirm`. `next_action.confirm.reason` is `manually_requested` if you set `confirmation_method` to `manual`, or `automatically_required` if a regulatory requirement mandates confirmation.

Review the following fields on the PayoutIntent:

- `estimated_fees`: The estimated fees for the payout, by fee type.
- `fx_quote`: For payouts that convert currencies, the exchange rate. If the rate is locked, `fx_quote.lock_expires_at` shows when the lock expires and `fx_quote.lock_status` is `active`.
- `from.debited` and `to.credited`: The estimated amounts debited from your financial account and credited to the recipient, with the exchange rate applied.

After the sender reviews the details, confirm the PayoutIntent. Confirming moves the PayoutIntent to `pending`.

```curl
curl -X POST https://api.stripe.com/v2/money_management/payout_intents/poi_1234/confirm \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview"
```

If the exchange rate lock expired before you confirm, the request fails with `payout_intent_fx_quote_expired`. Get a new rate with [refresh FX quote](https://docs.stripe.com/api/v2/money-management/payout-intents/fx-quote.md?api-version=preview), review the updated `fx_quote`, amounts, and `estimated_fees`, then confirm again.

```curl
curl -X POST https://api.stripe.com/v2/money_management/payout_intents/poi_1234/fx_quote \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview"
```

## Verify recipient names 

If you send a PayoutIntent in GBP from a UK financial account to a UK bank account, perform a Confirmation of Payee check when you add the recipient’s bank account. See [Confirmation of Payee check](https://docs.stripe.com/global-payouts/recipient-creation.md?dashboard-or-api=api#confirmation-of-payee-check).

## Set additional ACH options 

For ACH payouts to US bank accounts, set `preferred_networks` to `ach` and use `to.payout_method_options.bank_account.preferred_network_options.ach` to control how Stripe sends the payout:

- `transaction_purpose`: Set to `payroll` for payroll payouts. NACHA rules require originators to identify payroll payouts to recipients in the US.

```curl
curl -X POST https://api.stripe.com/v2/money_management/payout_intents \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  --json '{
    "from": {
        "financial_account": "{{FINANCIALACCOUNTID_ID}}",
        "currency": "usd"
    },
    "to": {
        "recipient": "{{ACCOUNTIDGLOBALPAYOUTS_ID}}",
        "payout_method": "{{PAYOUTMETHODID_ID}}",
        "payout_method_options": {
            "bank_account": {
                "preferred_networks": [
                    "ach"
                ],
                "preferred_network_options": {
                    "ach": {
                        "transaction_purpose": "payroll"
                    }
                }
            }
        }
    },
    "amount": {
        "value": 1999,
        "currency": "usd"
    },
    "description": "Payroll"
  }'
```

## Handle payouts that require action

A PayoutIntent moves to `requires_action` when it needs confirmation or when its payout fails or is returned. Stripe doesn’t retry or reroute payouts automatically. Listen for the `v2.money_management.payout_intent.requires_action` event, then check `next_action.type`:

- `confirm`: The payout needs review before Stripe sends it. See [Review and confirm the payout](https://docs.stripe.com/global-payouts/send-money.md#review-payout-intent-details-and-fees).
- `handle_failure`: The payout failed or was returned. `next_action.handle_failure.failure_reason` describes the cause, for example, `insufficient_funds` or `payout_method_closed`.

To fix a failed payout, [update the PayoutIntent](https://docs.stripe.com/api/v2/money-management/payout-intents/update.md?api-version=preview), for example, with a different `to.payout_method`. You can update a PayoutIntent while its status is `pending` or `requires_action`.

```curl
curl -X POST https://api.stripe.com/v2/money_management/payout_intents/poi_1234 \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  --json '{
    "to": {
        "payout_method": "{{PAYOUTMETHODID_ID}}"
    }
  }'
```

After you update the PayoutIntent, check its `status` in the response:

- `pending`: Stripe started a new payout attempt. You don’t need to take any other action.
- `requires_action` with `next_action.type` set to `confirm`: The updated payout needs review before Stripe sends it. See [Review and confirm the payout](https://docs.stripe.com/global-payouts/send-money.md#review-payout-intent-details-and-fees).

To retry a failed payout without changing it (for example, after you add funds to your financial account), [confirm the PayoutIntent](https://docs.stripe.com/api/v2/money-management/payout-intents/confirm.md?api-version=preview). If its exchange rate lock expired, refresh the FX quote first. If a scheduled payout fails, create a new PayoutIntent instead of retrying it.

Each retry creates a new payout attempt. If the attempt fails or is returned, the PayoutIntent moves back to `requires_action`.

If you don’t want to send the payout, cancel the PayoutIntent.

```curl
curl -X POST https://api.stripe.com/v2/money_management/payout_intents/poi_1234/cancel \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview"
```

## Inspect payout status 

Call the [Payout Intents API](https://docs.stripe.com/api/v2/money-management/payout-intents/retrieve.md?api-version=preview) to inspect payouts, including their status. Specify the PayoutIntent ID in the request.

```curl
curl https://api.stripe.com/v2/money_management/payout_intents/poi_1234 \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview"
```

Learn more about [managing payouts](https://docs.stripe.com/global-payouts/manage-payouts.md).

## Listen for payout events 

Use [webhooks](https://docs.stripe.com/webhooks.md) to track payouts instead of polling. For a PayoutIntents integration, listen for the following events:

| Event | What to do |
| --- | --- |
| `v2.money_management.payout_intent.requires_action` | Check `next_action.type`. Confirm the payout, or fix and retry it. See [Handle payouts that require action](https://docs.stripe.com/global-payouts/send-money.md#handle-payouts-that-require-action). |
| `v2.money_management.payout_intent.posted` | The funds left your financial account. Mark the payout as sent. |
| `v2.money_management.payout_intent.canceled` | Stripe won’t send the payout. Update your records. |

The `created` and `processing` events are optional. Use them if you show progress before the payout posts.

You also receive `v2.money_management.outbound_payment` events for each payout attempt. You don’t need to handle them if you listen for the PayoutIntent events above, except to learn when Stripe holds a payout attempt for review. For that, listen for `v2.money_management.outbound_payment.under_review`. See [Payout risk review](https://docs.stripe.com/global-payouts/manage-payouts.md#payout-risk-review).

V2 APIs send thin events, so retrieve the PayoutIntent to get its current state. See [V2 events](https://docs.stripe.com/api/v2/core/events.md). Verify webhook signatures to confirm that events came from Stripe. See [verify events](https://docs.stripe.com/webhooks.md#verify-events). For the full list of payout events, see [View changes in payout state](https://docs.stripe.com/global-payouts/manage-payouts.md#view-changes-in-payout-state).

#### OutboundPayments API

Use the OutboundPayments API if you want to manage each payout attempt directly. You’re responsible for handling retries, rerouting, and any pre-payout compliance checks yourself. For most integrations, use the PayoutIntents API instead.

To send a payout with the OutboundPayments API:

- If you pay a UK bank account in GBP from a UK financial account, [verify the recipient’s name](https://docs.stripe.com/global-payouts/send-money.md#verify-recipient-names-with-the-recipient-verifications-api).
- [Submit the payout](https://docs.stripe.com/global-payouts/send-money.md#submit-a-payout).
- [Inspect the payout status](https://docs.stripe.com/global-payouts/send-money.md#inspect-payout-status), and [handle failed or returned payouts](https://docs.stripe.com/global-payouts/send-money.md#handle-failed-and-returned-outbound-payments).

## Verify recipient names 

If you send an OutboundPayment in GBP from a UK financial account to a UK bank account, perform a Confirmation of Payee check when you add the recipient’s bank account. See [Confirmation of Payee check](https://docs.stripe.com/global-payouts/recipient-creation.md?dashboard-or-api=api#confirmation-of-payee-check).

## Submit a payout

Use the [OutboundPayments API v2](https://docs.stripe.com/api/v2/money-management/outbound-payments.md?api-version=preview) to make a payout to a recipient. You must provide the following parameters to create a payout:

| Required information | API parameter |
| --- | --- |
| Financial Account ID | `from.financial_account` |
| From currency | `from.currency` |
| Recipient ID | `to.recipient` |
| (Optional) Payout method | `to.payout_method` |
| Amount in minor units (for example, 100 = 1 USD) | `amount.value` |
| Currency | `amount.currency` |

```curl
curl -X POST https://api.stripe.com/v2/money_management/outbound_payments \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  --json '{
    "from": {
        "financial_account": "{{FINANCIALACCOUNTID_ID}}",
        "currency": "usd"
    },
    "to": {
        "recipient": "{{ACCOUNTIDGLOBALPAYOUTS_ID}}",
        "payout_method": "{{PAYOUTMETHODID_ID}}"
    },
    "amount": {
        "value": 1999,
        "currency": "usd"
    },
    "description": "Streamer earnings"
  }'
```

## Inspect payout status

Call the [OutboundPayments API v2](https://docs.stripe.com/api/v2/money-management/outbound-payments/retrieve.md?api-version=preview) to inspect a payout, including its status. Specify the OutboundPayment ID in the request.

```curl
curl https://api.stripe.com/v2/money_management/outbound_payments/obp_1234 \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview"
```

Learn more about [managing payouts](https://docs.stripe.com/global-payouts/manage-payouts.md).

## NACHA payroll compliance

When sending funds for payroll purposes to recipients in the US with ACH, NACHA rules require the originator to explicitly identify the payouts as such. When sending an OutboundPayment, set the `purpose` parameter to `payroll` to ensure compliance with this requirement.

## Handle failed and returned payouts 

If an OutboundPayment fails or is returned, its status changes to `failed` or `returned`, and Stripe returns the funds to your financial account. Stripe doesn’t retry the payout. Fix the cause (for example, by asking the recipient to update their bank account details) then create a new OutboundPayment. See [Manage returned payouts](https://docs.stripe.com/global-payouts/manage-payouts.md#manage-returned-payouts).

## Listen for payout events 

Use [webhooks](https://docs.stripe.com/webhooks.md) to track payouts instead of polling. For an OutboundPayments integration, listen for the following events:

| Event | What to do |
| --- | --- |
| `v2.money_management.outbound_payment.posted` | The funds left your financial account. Mark the payout as sent. |
| `v2.money_management.outbound_payment.failed` | The payout failed and Stripe returned the funds. Fix the cause, then create a new OutboundPayment. |
| `v2.money_management.outbound_payment.returned` | The recipient’s bank returned the payout. Fix the cause, then create a new OutboundPayment. See [Manage returned payouts](https://docs.stripe.com/global-payouts/manage-payouts.md#manage-returned-payouts). |
| `v2.money_management.outbound_payment.under_review` | Stripe is holding the payout for review, which can delay its arrival. See [Payout risk review](https://docs.stripe.com/global-payouts/manage-payouts.md#payout-risk-review). |

If you cancel payouts, also listen for `v2.money_management.outbound_payment.canceled`. The `created` and `updated` events are optional. You don’t need them to track a payout’s status if you listen for the events above.

V2 APIs send thin events, so retrieve the OutboundPayment to get its current state. See [V2 events](https://docs.stripe.com/api/v2/core/events.md). Verify webhook signatures to confirm that events came from Stripe. See [verify events](https://docs.stripe.com/webhooks.md#verify-events). For the full list of payout events, see [View changes in payout state](https://docs.stripe.com/global-payouts/manage-payouts.md#view-changes-in-payout-state).

After you submit a payout, Stripe can hold it for review or reject it. See [Payout risk review](https://docs.stripe.com/global-payouts/manage-payouts.md#payout-risk-review) to understand processing delays and review outcomes.

For minimum and maximum payout amounts by country, see [Payout amounts](https://docs.stripe.com/global-payouts/payout-methods.md#payout-amounts).

## Additional features

Use these features to extend the standard payout flow for specific use cases.

### Schedule a payout 

You can schedule a payout to send on a future date, up to 180 days ahead, in the Dashboard or with the PayoutIntents API. Stripe doesn’t hold funds for a scheduled payout.

#### Dashboard

[Contact support](https://support.stripe.com/) to get access to this feature. If you have insufficient funds on the scheduled payout date, the payout fails and you receive an email.

To schedule a future payout:

1. After clicking **Send money** and selecting the payout amount and recipient, click the calendar icon (:calendar:) in the `When` field.
2. In the calendar, select the date that you want to send the payout.
3. Click **Continue**. After reviewing the payout details, click **Schedule**.

To view your scheduled payouts, go to the [Scheduled](https://dashboard.stripe.com/global-payouts/payouts?status%5B0%5D=pending&type%5B0%5D=payout_intent) tab.

#### API

To schedule payouts with the API, you need access to the PayoutIntents API private preview. [Request access](https://docs.stripe.com/global-payouts/send-money.md#payout_intents_preview).

Set `schedule_options.execute_on` to a date in `YYYY-MM-DD` format when you create the PayoutIntent. The date must be between tomorrow and 180 days from today. Stripe starts sending the payout at 09:00 on that date in your country’s local time zone, for example, `America/New_York` for US senders and `Europe/London` for UK senders. The funds might arrive later, depending on the payment network.

The PayoutIntent stays `pending` until the scheduled date. On that date, Stripe creates the OutboundPayment and the PayoutIntent moves to `processing`. If you don’t set `schedule_options`, Stripe sends the payout immediately. To change a scheduled payout before its send date, [update the PayoutIntent](https://docs.stripe.com/api/v2/money-management/payout-intents/update.md?api-version=preview).

```curl
curl -X POST https://api.stripe.com/v2/money_management/payout_intents \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  --json '{
    "from": {
        "financial_account": "{{FINANCIALACCOUNTID_ID}}",
        "currency": "usd"
    },
    "to": {
        "recipient": "{{ACCOUNTIDGLOBALPAYOUTS_ID}}",
        "payout_method": "{{PAYOUTMETHODID_ID}}"
    },
    "amount": {
        "value": 1999,
        "currency": "usd"
    },
    "schedule_options": {
        "execute_on": "2026-11-15"
    },
    "description": "Streamer earnings"
  }'
```

You can’t schedule a PayoutIntent that requires confirmation, including one with `confirmation_method` set to `manual`.

If your financial account doesn’t have enough funds on the scheduled date, the PayoutIntent moves to `requires_action` with `next_action.handle_failure.failure_reason` set to `insufficient_funds`. Stripe doesn’t retry the payout when funds arrive. To send the payout, add funds and create a new PayoutIntent.

### Statement descriptors

Statement descriptors explain charges or payments on bank statements. By default, a payout recipient sees [your account’s statement descriptor](https://docs.stripe.com/get-started/account/statement-descriptors.md#static).

#### Customize statement descriptors

You can customize the descriptor for each payout when you create it.

#### Dashboard

When creating a payout in the Dashboard, enter a custom statement descriptor in the **Statement descriptor** field.

#### API

When creating an OutboundPayment, set `statement_descriptor` to a custom statement descriptor.

```curl
curl -X POST https://api.stripe.com/v2/money_management/outbound_payments \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  --json '{
    "from": {
        "financial_account": "{{FINANCIALACCOUNTID_ID}}",
        "currency": "usd"
    },
    "to": {
        "recipient": "{{ACCOUNTIDGLOBALPAYOUTS_ID}}"
    },
    "amount": {
        "value": 1999,
        "currency": "usd"
    },
    "description": "Streamer earnings",
    "statement_descriptor": "Payment for streaming"
  }'
```
