---
api: 'Open Banking API'
---

# Create a draft payment

Before you begin, ensure that you've got an access token.
For information about getting the access token, see [Tutorial: Create your first draft payment](/docs/guides/build-banking-apps/tutorials/create-your-first-draft-payment).
Then, you can use the `/draft_payments` endpoint to create a draft payment on behalf of a user, and the draft payment appears in the user account where they can approve or reject.

In addition, you can use this endpoint to make multiple draft payments by creating new rows for new drafts with the supported CSV format shown in the following tables.

For each draft payment request you make, ensure that the same currency is used.
Upon a successful request for multiple draft payments, you receive a `DraftPaymentID` that represents all the draft payments associated with this request.

Please note that the maximum number of rows in a CSV file is 50 and all the payments must be in the same currency.

:::note
Download an [example CSV file](https://assets.revolut.com/api-docs/oba-api/draft_payments.csv).
:::

For the format of the CSV file, check the request body details.

See also [Tutorials: Work with draft payments](/docs/guides/build-banking-apps/tutorials/work-with-draft-payments).

## Endpoint

POST `/draft-payments`

## Parameters

### header parameters

- `x-idempotency-key` (string, required)
  Idempotency key in UUID format.

### query parameters

- `scheduledDate` (string, optional)
  The date and time when the draft payment is executed.
  
  :::note
  Any draft payment in the CSV file is created as a scheduled payment.
  :::

- `title` (string, optional)
  The title of draft payment

## Request body

For the format of the CSV file, check the table in the body description.

### Attributes

## Returns

### 201

Draft Payment Details

#### Response attributes

- `DraftPaymentId` (string)
    The ID of the draft payment.
- `RequestedExecutionDate` (string, optional)
    The execution date the draft payment is requested.
- `Status` (enum)
    The status of the draft payment.
    Possible enum values:

    - `Awaiting`
    - `Processed`
    - `Approved`
    - `Deleted`
- `Transfers` (array of object)
  - `Transfers[].Id` (string)
      The ID of the transfer.
  - `Transfers[].InstructedAmount` (object)
    - `Transfers[].InstructedAmount.Amount` (string)
        The amount of money.
    - `Transfers[].InstructedAmount.Currency` (string)
        [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code in upper case.
  - `Transfers[].Reference` (string)
      The reference of the draft payment.
  - `Transfers[].Status` (enum)
      The status of the draft payment.
      Possible enum values:

      - `Created`
      - `Pending`
      - `Completed`
      - `Failed`
      - `Deleted`
  - `Transfers[].Index` (integer, optional)
      The row number the draft payment represents in the CSV file.
  - `Transfers[].FailedReason` (string, optional)
      The reason of the `failed` draft payment.
  - `Transfers[].FailedReasonCode` (integer, optional)
      The reason code for the `failed` draft payment.

## Error responses

| HTTP status code | Description |
| --- | --- |
| 400 | Bad Request |
| 403 | Forbidden |
| 429 | Too Many Requests |
| 503 | Service Unavailable |
