# Cancel an OutboundTransfer object

Cancels an OutboundTransfer. Only processing OutboundTransfers can be canceled.

## Request

```curl
curl -X POST https://api.stripe.com/v2/money_management/outbound_transfers/obt_test_65OAfYe4XKyMwZeHlcV16NybHIZ4SQ3LORe4rpuNGDIRZw/cancel \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2025-11-17.preview"
```

### Response

```json
{
  "id": "obt_test_65OAfYe4XKyMwZeHlcV16NybHIZ4SQ3LORe4rpuNGDIRZw",
  "object": "v2.money_management.outbound_transfer",
  "from": {
    "financial_account": "fa_test_65NybHaQx7KJxDc22rZ16NybHIZ4SQ3LORe4rpuNGDIXEO",
    "debited": {
      "value": 50,
      "currency": "usd"
    }
  },
  "to": {
    "payout_method": "usba_test_61NyccB7UY8KzlWh916NybHIZ4SQ3LORe4rpuNGDIRWC",
    "credited": {
      "value": 50,
      "currency": "usd"
    }
  },
  "delivery_options": {
    "bank_account": "automatic"
  },
  "amount": {
    "value": 50,
    "currency": "usd"
  },
  "statement_descriptor": "Stripe payout",
  "cancelable": false,
  "description": "Paying out Stripe earnings",
  "status": "canceled",
  "status_transitions": {
    "canceled_at": "2023-04-26T23:18:28.412Z",
    "failed_at": null,
    "posted_at": null,
    "returned_at": null
  },
  "status_details": null,
  "created": "2023-04-26T23:18:16.777Z",
  "expected_arrival_date": "2023-04-28T00:00:00Z",
  "receipt_url": "https://payments.stripe.com/transaction_receipt/CCMaIwohd2tzcF90ZXN0XzZOeWJISVo0U1EzTE9SZTRycHVOR0RJKMTipqIGMgZpliO-zX86SJQFa58LOKNAWYRci6HJPA10Ddmocyf7MnhVX4NTkNJrO30nmnJBTIa-kVBovJDEAyzBer6TFulzAqpUbrzbxbWfX5UoXB3BQg",
  "livemode": false
}
```

## Parameters

- `id` (string, required)
  The ID of the OutboundTransfer to cancel.

## Returns

## Response attributes

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

- `object` (string, value is "v2.money_management.outbound_transfer")
  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-transfers/cancel.md?query=amount) (object)
  The “presentment amount” for the OutboundTransfer.

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

- `created` (timestamp)
  Time at which the OutboundTransfer 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-transfers/cancel.md?query=delivery_options) (object, nullable)
  Delivery options to be used to send the OutboundTransfer.

- `description` (string, nullable)
  An arbitrary string attached to the OutboundTransfer. 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-transfers/cancel.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.

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

- `statement_descriptor` (string)
  The description that appears on the receiving end for an OutboundTransfer (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 OutboundTransfer: `processing`, `failed`, `posted`, `returned`, `canceled`. An OutboundTransfer is `processing` if it has been created and is processing. The status changes to `posted` once the OutboundTransfer has been “confirmed” and funds have left the account, or to `failed` or `canceled`. If an OutboundTransfer fails to arrive at its payout method, its status will change to `returned`.
Possible enum values:
  - `canceled`
    A user canceled the OutboundTransfer before posting. Stripe returns the funds to the user by voiding the pending Transaction.

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

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

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

  - `returned`
    The OutboundTransfer 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-transfers/cancel.md?query=status_details) (object, nullable)
  Status details for an OutboundTransfer in a `failed` or `returned` state.

- [`status_transitions`](https://docs.stripe.com/api/v2/money-management/outbound-transfers/cancel.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-transfers/cancel.md?query=to) (object)
  To which payout method the OutboundTransfer was sent.

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

## Error Codes

| HTTP status code | Code | Description |
| --- | --- | --- |
| 400 | outbound_transfer_already_canceled | Error returned when user tries to cancel an OutboundTransfer that was already canceled. |
| 400 | outbound_transfer_not_cancelable | Error returned when user tries to cancel an OutboundTransfer that is not cancelable. |
| 404 | not_found | The resource wasn’t found. |
| 409 | idempotency_error | An idempotent retry occurred with different request parameters. |
