# Create an OutboundPayment object

Creates an OutboundPayment.

## Request

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

### Response

```json
{
  "id": "obp_test_65OAfT9tVl3u223h0he16NybHIZ4SQ3LORe4rpuNGDIKCO",
  "object": "v2.money_management.outbound_payment",
  "amount": {
    "value": 1000,
    "currency": "usd"
  },
  "from": {
    "debited": {
      "value": 1000,
      "currency": "usd"
    },
    "financial_account": "fa_test_65NybHaQx7KJxDc22rZ16NybHIZ4SQ3LORe4rpuNGDIXEO"
  },
  "to": {
    "credited": {
      "value": 1000,
      "currency": "usd"
    },
    "recipient": "acct_test_61Nyc6oHjbwlpjhvd66Nyc6oZ4SQv89ZZAqvHiCECJ3g",
    "payout_method": "usba_test_61Nyd9YFBVUzLyxXZ16Nyc6oZ4SQv89ZZAqvHiCEC9VQ"
  },
  "delivery_options": {
    "bank_account": "automatic"
  },
  "statement_descriptor": "Payment for streaming earnings",
  "cancelable": true,
  "description": "Streamer earnings",
  "status": "processing",
  "status_transitions": {},
  "receipt_url": "https://payments.stripe.com/transaction_receipt/CCMaIwohd2tzcF90ZXN0XzZOeWJISVo0U1EzTE9SZTRycHVOR0RJKOPfpqIGMgZn4xRNQi06oQGUu_fPQJBHgptVXysoOIKNwdFbokEtoKYNk662ox8FRx8ldoJpnlZyFXloJjMW5AQ5dqSks8HidH5PkHyYO91-dYHRZ8kj93mfh2l_efexFDN6EmiZj21RiNDALXuagy2MHFmfrkh6ZiAnjp-MOgqg8IM1RA5Ry5IDL-21Xiair1jWxuVJb3inbrbntL3nk6yjUtXcd_QLofG-Sj2Yz9-NEA",
  "created": "2023-04-26T23:12:35.952Z",
  "expected_arrival_date": "2023-04-28T00:00:00Z",
  "recipient_notification": {
    "setting": "configured"
  },
  "livemode": false
}
```

## Parameters

- [`amount`](https://docs.stripe.com/api/v2/money-management/outbound-payments/create.md?query=amount) (object, required)
  The “presentment amount” to be sent to the recipient.

- [`from`](https://docs.stripe.com/api/v2/money-management/outbound-payments/create.md?query=from) (object, required)
  From which FinancialAccount and BalanceType to pull funds from.

- [`to`](https://docs.stripe.com/api/v2/money-management/outbound-payments/create.md?query=to) (object, required)
  To which payout method to send the OutboundPayment.

- [`delivery_options`](https://docs.stripe.com/api/v2/money-management/outbound-payments/create.md?query=delivery_options) (object, optional)
  Delivery options to be used to send the OutboundPayment.

- `description` (string, optional)
  An arbitrary string attached to the OutboundPayment. Often useful for displaying to users.

- `metadata` (map, optional)
  Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.

- `outbound_payment_quote` (string, optional)
  The quote for this OutboundPayment. Only required for countries with regulatory mandates to display fee estimates before OutboundPayment creation.

- [`recipient_notification`](https://docs.stripe.com/api/v2/money-management/outbound-payments/create.md?query=recipient_notification) (object, optional)
  Details about the notification settings for the OutboundPayment recipient.

## Returns

## Response attributes

- `id` (string)
  Unique identifier for the OutboundPayment.

- `object` (string, value is "v2.money_management.outbound_payment")
  String representing the object’s type. Objects of the same type share the same value of the object field.

- [`amount`](https://docs.stripe.com/api/v2/money-management/outbound-payments/create.md?query=amount) (object)
  The “presentment amount” for the OutboundPayment.

- `cancelable` (boolean)
  Returns true if the OutboundPayment can be canceled, and false otherwise.

- `created` (timestamp)
  Time at which the OutboundPayment was created. Represented as a RFC 3339 date & time UTC value in millisecond precision, for example: 2022-09-18T13:22:18.123Z.

- [`delivery_options`](https://docs.stripe.com/api/v2/money-management/outbound-payments/create.md?query=delivery_options) (object, nullable)
  Delivery options to be used to send the OutboundPayment.

- `description` (string, nullable)
  An arbitrary string attached to the OutboundPayment. Often useful for displaying to users.

- `expected_arrival_date` (timestamp, nullable)
  The date when funds are expected to arrive in the payout method. This field is not set if the payout method is in a `failed`, `canceled`, or `returned` state. Represented as a RFC 3339 date & time UTC value in millisecond precision, for example: 2022-09-18T13:22:18.123Z.

- [`from`](https://docs.stripe.com/api/v2/money-management/outbound-payments/create.md?query=from) (object)
  The FinancialAccount that funds were pulled from.

- `livemode` (boolean)
  Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.

- `metadata` (map, nullable)
  Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.

- `outbound_payment_quote` (string, nullable)
  The quote for this OutboundPayment. Only required for countries with regulatory mandates to display fee estimates before OutboundPayment creation.

- `receipt_url` (string, nullable)
  A link to the Stripe-hosted receipt for this OutboundPayment. The receipt link remains active for 60 days from the OutboundPayment creation date. After this period, the link will expire and the receipt url value will be null.

- [`recipient_notification`](https://docs.stripe.com/api/v2/money-management/outbound-payments/create.md?query=recipient_notification) (object)
  Details about the OutboundPayment notification settings for recipient.

- `statement_descriptor` (string)
  The description that appears on the receiving end for an OutboundPayment (for example, bank statement for external bank transfer). It will default to `STRIPE` if not set on the account settings.

- `status` (enum)
  Current status of the OutboundPayment: `processing`, `failed`, `posted`, `returned`, `canceled`. An OutboundPayment is `processing` if it has been created and is processing. The status changes to `posted` once the OutboundPayment has been “confirmed” and funds have left the account, or to `failed` or `canceled`. If an OutboundPayment fails to arrive at its payout method, its status will change to `returned`.
Possible enum values:
  - `canceled`
    A user canceled the OutboundPayment before posting. Stripe returns the funds to the user by voiding the pending Transaction.

  - `failed`
    The OutboundPayment failed to confirm. Stripe returns the funds to the user by voiding the pending Transaction.

  - `posted`
    The OutboundPayment posted and funds have left the account. The underlying Transaction posts.

  - `processing`
    The OutboundPayment starting state. Funds are “held” by a pending Transaction (but are still part of the current balance). The OutboundPayment might be cancelable by the user, depending on the value of the cancelable field.

  - `returned`
    The OutboundPayment failed to successfully arrive at the destination. Funds return to the user with a second posted Transaction attached to the same flow.

- [`status_details`](https://docs.stripe.com/api/v2/money-management/outbound-payments/create.md?query=status_details) (object, nullable)
  Status details for an OutboundPayment in a `failed` or `returned` state.

- [`status_transitions`](https://docs.stripe.com/api/v2/money-management/outbound-payments/create.md?query=status_transitions) (object, nullable)
  Hash containing timestamps of when the object transitioned to a particular status.

- [`to`](https://docs.stripe.com/api/v2/money-management/outbound-payments/create.md?query=to) (object)
  To which payout method the OutboundPayment was sent.

- [`trace_id`](https://docs.stripe.com/api/v2/money-management/outbound-payments/create.md?query=trace_id) (object)
  A unique identifier that can be used to track this OutboundPayment with recipient bank. Banks might call this a “reference number” or something similar.

## Error Codes

| HTTP status code | Code | Description |
| --- | --- | --- |
| 400 | account_not_configured_as_recipient | Error returned when the recipient account in the OutboundPayment request is not configured as a recipient. |
| 400 | amount_too_large_for_payout_method | Error returned when the specified amount exceeds the payout method’s amount limits. |
| 400 | amount_too_large_for_selected_delivery_option | Error returned when user selected a delivery option but the specified amount exceeds the method limits. |
| 400 | card_payout_method_not_supported | Error returned when the provided Card payout method is not eligible for outbound payment or outbound transfer. |
| 400 | cop_not_accepted | Error returned when the Confirmation of Payee is not accepted. |
| 400 | default_payout_method_config_not_found | Error returned when a payout method is not provided in the OutboundPayment request and the recipient account does not have a default payout method. |
| 400 | delivery_option_not_supported | Error returned when the selected delivery option is not supported for the payout method. |
| 400 | financial_address_creation_required | Error returned when there is no active financial address required for GB OBPs or OBTs. |
| 400 | from_balance_unsupported_currency | Error returned when the balance type in the OutboundPayment/OutboundTransfer request does not support the provided currency. |
| 400 | fx_quote_expired | Error returned when rate locking in the used OBPQ is expired. |
| 400 | insufficient_funds | Error returned when the balance of provided financial account and balance type in the OutboundPayment/OutboundTransfer request does not have enough funds. |
| 400 | invalid_payout_method_country | Error returned when the payout method country does not match the recipient account country. |
| 400 | large_rate_drift | Error returned when the FX rate drift beyond threshold. |
| 400 | no_suitable_delivery_options_for_large_amount | Error returned when user does not specify the delivery option or provides automatic, and the amount exceeds all the possible delivery options for this payout method. |
| 400 | outbound_payment_not_allowed | Error returned when the user is not allowed to make this OutboundPayment request. |
| 400 | outbound_payment_quote_mismatch | Error returned when key money movement fields on outbound payment quote creation request don’t match outbound payment creation request, including from, to, amount and delivery_options. |
| 400 | outbound_payment_quote_missing | Error returned when outbound payment quote is missing for CBPs that requires fee and amount estimates prior to OBP initiation. |
| 400 | outbound_payment_recipient_verification_already_consumed | Error returned when the provided recipient verification has been used for another payment. |
| 400 | outbound_payment_recipient_verification_awaiting_acknowledgement | Error returned when provided recipient verification has not been acknowledged. |
| 400 | outbound_payment_recipient_verification_expired | Error returned when provided recipient verification is expired. |
| 400 | outbound_payment_recipient_verification_missing | Error returned when recipient verification is missing for OBPs which requires recipient verification prior to OBP initiation. |
| 400 | outbound_payment_recipient_verification_payout_method_mismatch | Error returned when payout method on recipient verification creation request don’t match outbound payment creation request. |
| 400 | outbound_payment_recipient_verification_recipient_mismatch | Error returned when recipient on recipient verification creation request don’t match outbound payment creation request. |
| 400 | outbound_payment_recipient_verification_recipient_name_outdated | Error returned when the recipient account name of the recipient verification no longer matches the verified name. |
| 400 | payout_method_expired | Error returned when the provided payout method is expired. |
| 400 | payout_method_unsupported_currency | Error returned when the payout method does not support the request’s payout method currency. |
| 400 | recipient_amount_limit_exceeded | Error returned when the recipient’s recent total amount in outbound payments has exceeded its limit. |
| 400 | recipient_count_limit_exceeded | Error returned when the recipient’s recent outbound payment count has exceeded its limit. |
| 400 | recipient_email_does_not_exist | Error returned when the user enables notifications in the OutboundPayment request, but an email is not set up on the recipient account. |
| 400 | recipient_feature_not_active | Error returned when recipient does not have the active features required to receive funds from this OutboundPayment request. |
| 400 | recipient_feature_not_active_for_suitable_delivery_option | Error returned when user does not specify the delivery option or provides automatic, and recipient feature is not active for suitable delivery option. |
| 400 | storer_capability_missing | The required storer capabilities are missing. |
| 400 | storer_capability_not_active | The required storer capabilities are not active. |
| 400 | unsupported_currency | The currency is not supported for Financial Accounts. |
| 404 | from_balance_type_not_found | Deprecated. Error returned when balance type of provided financial account in the OutboundPayment/OutboundTransfer request cannot be identified. |
| 404 | from_financial_account_not_found | Error returned when financial account in the OutboundPayment/OutboundTransfer request cannot be identified. |
| 404 | outbound_payment_recipient_verification_not_found | Error returned when the provided recipient verification cannot be identified. |
| 404 | payout_method_invalid | Error returned when the payout method in the OutboundPayment/OutboundTransfer request cannot be identified. |
| 404 | to_recipient_not_found | Error returned when the recipient account in the OutboundPayment request cannot be identified. |
| 409 | idempotency_conflict | An idempotent retry results in resource conflicts. |
| 409 | idempotency_error | An idempotent retry occurred with different request parameters. |
