---
api: 'Merchant API'
---

# Create a disbursement

Send money from your merchant account to a customer's card or Revolut Pay account, for example to pay out winnings or refund a deposit.

The disbursement destination can be a card, provided as raw card details, or a payment method previously saved for the customer. To save a card for future disbursements, set `save` to `true` in the card destination and provide the `customer` object.

You can link the disbursement to the customer's original payment by providing `initial_payment_id`. When provided, the disbursement currency must match the currency of the initial payment, and the amount must not exceed 10 times the initial payment amount.

:::warning
This operation is available to merchants with the gambling merchant category code (MCC 7995) only.
:::

:::info
If you collect and pass raw card details, you must be [PCI DSS compliant](https://www.pcisecuritystandards.org/standards/pci-dss/).
:::

A disbursement is asynchronous. Track its state with the [Retrieve a disbursement endpoint](https://developer.revolut.com/docs/api/merchant#retrieve-disbursement), or by subscribing to the `DISBURSEMENT_COMPLETED` and `DISBURSEMENT_DECLINED` webhook events.

:::note
In the sandbox environment, any card number can be used for testing:

| Amount | Result |
| ------ | ------ |
| `500` | The disbursement completes successfully. |
| `2000` | The disbursement is declined with the `insufficient_funds` reason. |
| `3000` | The disbursement is declined with the `high_risk` reason. |
:::

## Endpoint

POST `/api/disbursements`

## Parameters

### header parameters

- `Idempotency-Key` (string, optional)
  The `Idempotency-Key` ensures that requests are processed only once, preventing multiple executions of the same operation due to retries or duplicate requests.
  
  This header is optional and can accept any unique string value the merchant uses.
  
  A recommended practice is to use a unique identifier from your system (such as the entity's ID or a request UUID) as the idempotency key. This facilitates tracking and managing requests effectively.

## Request body

### Attributes

- `amount` (integer)
    The amount of the disbursement in minor currency units. For example, `7034` represents €70.34.
- `currency` (string)
    [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.
    
    :::info
    For more information about the supported currencies, see: [Help Center](https://help.revolut.com/business/help/merchant-accounts/payments/in-which-currencies-can-i-accept-payments/).
    :::
- `destination` (object)
    The destination of the disbursement: the details of a card, or a payment method previously saved with Revolut.
    
    Use the `type` field to determine the destination variant.
- `customer` (object, optional)
    The customer to disburse funds to.
    
    Use the `type` field to determine the customer variant.
    
    :::warning
    Required when the destination card is saved with `save: true` or when the destination is a saved payment method.
    :::
- `reference` (string, optional)
    A custom reference for the disbursement, useful for reconciliation. For example, a withdrawal ID from your system.
- `initial_payment_id` (string, optional)
    The ID of the customer's original payment, processed with Revolut, that links this disbursement to the customer's deposit.

## Returns

### 201

Disbursement created

#### Response attributes

- `id` (string)
    Permanent disbursement ID used for disbursement operations.
- `state` (enum)
    The current state of the disbursement.
    
    | State | Description |
    | ----- | ----------- |
    | `pending` | The disbursement has been created and is awaiting processing. |
    | `processing` | The disbursement is being processed by Revolut and the card schemes. |
    | `completed` | The disbursement was successfully sent to the destination. |
    | `declined` | The disbursement could not be completed. When present, the `reason` field explains why. |
    Possible enum values:

    - `pending`
    - `processing`
    - `completed`
    - `declined`
- `created_at` (string)
    The time the disbursement was created.
- `updated_at` (string)
    The time the disbursement was last updated.
- `reason` (enum, optional)
    The reason the disbursement was declined. Only returned when the state is `declined`.
    
    | Value | Description |
    | ----- | ----------- |
    | `merchant_pocket_not_found` | The merchant currency pocket for the disbursement currency was not found. |
    | `insufficient_funds` | The merchant account does not have enough funds for the disbursement currency. |
    | `high_risk` | The disbursement was flagged as high risk. |
    | `unknown` | The disbursement was declined for an unknown reason. |
    | `technical_error` | The disbursement failed due to a technical error. |
    | `pick_up_card` | The card scheme declined the disbursement and requested the card to be picked up. |
    | `do_not_honour` | The card scheme declined the disbursement. |
    | `invalid_amount` | The card scheme rejected the disbursement amount. |
    | `invalid_card` | The card number is invalid. |
    | `expired_card` | The card is expired. |
    | `transaction_not_allowed_for_cardholder` | The cardholder is not allowed to receive this disbursement. |
    | `restricted_card` | The card is restricted and cannot receive disbursements. |
    | `suspected_fraud` | The disbursement is suspected of being fraudulent. |
    | `issuer_not_available` | The card issuer is currently unavailable to authorize the disbursement. |
    | `withdrawal_frequency_exceeded` | The frequency of withdrawals to the card has exceeded the allowed limit. |
    | `law_violation` | The disbursement violates legal regulations. |
    | `security_violation` | The disbursement violates security protocols. |
    | `invalid_transaction` | The disbursement is invalid. |
    | `new_card_not_unblocked` | The new card has not been unblocked by the issuer. |
    | `rejected_by_customer` | The disbursement was rejected by the cardholder. |
    Possible enum values:

    - `merchant_pocket_not_found`
    - `insufficient_funds`
    - `high_risk`
    - `unknown`
    - `technical_error`
    - `pick_up_card`
    - `do_not_honour`
    - `invalid_amount`
    - `invalid_card`
    - `expired_card`
    - `transaction_not_allowed_for_cardholder`
    - `restricted_card`
    - `suspected_fraud`
    - `issuer_not_available`
    - `withdrawal_frequency_exceeded`
    - `law_violation`
    - `security_violation`
    - `invalid_transaction`
    - `new_card_not_unblocked`
    - `rejected_by_customer`
- `destination` (object)
    The destination the disbursement was sent to.
    
    The response shows the actual destination type, even when the disbursement was created with a `saved_payment_method` destination: a `card` or the customer's Revolut Pay account. 
    
    When the destination is a saved payment method, its `id` is also returned - you can reuse it as the `saved_payment_method` destination in future disbursement requests.
  - `destination.type` (enum)
      The type of the destination the disbursement was sent to.
      
      | Destination type | Description |
      | ---------------- | ----------- |
      | `card` | The disbursement was sent to a card. |
      | `revolut_pay` | The disbursement was sent to the customer's Revolut Pay account. |
      Possible enum values:

      - `card`
      - `revolut_pay`
  - `destination.id` (string, optional)
      Unique identifier for the payment method.
  - `destination.last_four` (string, optional)
      The last four digits of the payment card number.
- `amount` (integer)
    The amount of the disbursement in minor currency units. For example, `7034` represents €70.34.
- `currency` (string)
    [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.
    
    :::info
    For more information about the supported currencies, see: [Help Center](https://help.revolut.com/business/help/merchant-accounts/payments/in-which-currencies-can-i-accept-payments/).
    :::
- `reference` (string, optional)
    A custom reference for the disbursement, useful for reconciliation. For example, a withdrawal ID from your system.

## Error responses

| HTTP status code | Description |
| --- | --- |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 422 | Unprocessable Entity |
| 500 | Internal Server Error |
