# Transfer Reversals

This section details how to manage transfer reversals within the Stripe API. Transfer reversals allow you to reverse a previously created transfer.

## The Transfer Reversal Object

The Transfer Reversal object represents a reversal of a transfer.

| Attribute          | Type   | Description                                                                                                                               |
| :----------------- | :----- | :---------------------------------------------------------------------------------------------------------------------------------------- |
| `id`               | string | Unique identifier for the object.                                                                                                         |
| `object`           | string | String representing the object’s type. Objects of the same type share the same value.                                                     |
| `amount`           | integer | Amount (in cents) reversed.                                                                                                               |
| `balance_transaction` | string | The Balance Transaction object that describes the effect of the reversal on the account’s balance.                                        |
| `created`          | timestamp | Time at which the object was created. Measured in seconds since the Unix epoch.                                                           |
| `currency`         | enum   | Three-letter ISO currency code, in lowercase. Must be a supported currency.                                                               |
| `destination_payment_refund` | string | The Refund object created on the destination payment.                                                                                     |
| `metadata`         | object | 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. |
| `source_refund`    | string | The Refund object created on the source of funds.                                                                                         |
| `transfer`         | string | The Transfer object that was reversed.                                                                                                    |

## Create a transfer reversal

This API method creates a transfer reversal.

**POST** `/v1/transfers/:id/reversals`

### Parameters

*   **`amount`** (integer, optional)
    *   The amount to reverse, in cents. If not provided, the entire transfer amount will be reversed.
*   **`metadata`** (object, 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. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata.

### Returns

*   A `transfer_reversal` object.

## Update a reversal

Updates the specified reversal by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

**POST** `/v1/transfers/:id/reversals/:id`

### Parameters

*   **`metadata`** (object, 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. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata.

### Returns

*   Returns the `transfer_reversal` object if the update succeeded. This call will raise an error if update parameters are invalid.

## Retrieve a reversal

By default, you can see the 10 most recent reversals stored directly on the transfer object, but you can also retrieve details about a specific reversal stored on the transfer.

**GET** `/v1/transfers/:id/reversals/:id`

### Parameters

*   No parameters.

### Returns

*   Returns the `transfer_reversal` object.

## List all reversals

You can see a list of the reversals belonging to a specific transfer. Note that the 10 most recent reversals are always available by default on the transfer object. If you need more than those 10, you can use this API method and the `limit` and `starting_after` parameters to page through additional reversals.

**GET** `/v1/transfers/:id/reversals`

### Parameters

*   **`ending_before`** (string, optional)
    *   A cursor for use in pagination: only return reversals that come before this reversal ID.
*   **`limit`** (integer, optional)
    *   A limit on the number of objects to be returned.
*   **`starting_after`** (string, optional)
    *   A cursor for use in pagination: only return reversals that come after this reversal ID.

### Returns

*   A dictionary with a `data` property that contains an array of up to `limit` reversals, starting after reversal `starting_after`. Each entry in the array is a separate reversal object. If no more reversals are available, the resulting array will be empty. If you provide a non-existent transfer ID, this call raises an error.