---
api: 'Business API'
---

# Check transfer field requirements

Retrieve the list of conditionally required or applicable fields for a specific transfer destination together with their constraints.

:::note [Note]
This feature is not available in Sandbox.
:::

When creating a payment via the [`/pay` endpoint](https://developer.revolut.com/docs/api/business#create-payment), certain fields (such as `transfer_reason_code`, `charge_bearer`, or `exchange_reason_code`) become required or applicable depending on the source account, destination corridor, and business profile.
This read-only endpoint allows you to discover these contextual fields dynamically, along with their validation rules and available options.

:::tip
A **destination corridor** is a specific combination of bank country and currency representing a supported payment destination (e.g. GBP to GB, USD to US).
:::

Only the fields relevant to the specific context are returned.
Universally required fields (such as `amount`, `account_id`, `receiver`, and `request_id`) are always required and are intentionally excluded from this response.

:::note [Rate limiting]
Similarly to the `/pay` endpoint, this endpoint supports a load of 450 requests per minute.
:::

For more details, see the guides: **Check transfer field requirements** section in [Bank transfers](https://developer.revolut.com/docs/guides/manage-accounts/transfers/bank-transfers#check-transfer-field-requirements) or [Card transfers](https://developer.revolut.com/docs/guides/manage-accounts/transfers/card-transfers#check-transfer-field-requirements).

## Endpoint

POST `/pay/fields`

## Request body

### Attributes

- `account_id` (string)
    The ID of the account from which the transfer will be made.
- `receiver` (object)
    The details of the transfer recipient.
    
    If the counterparty has multiple payment methods available (e.g. 2 accounts, or 1 account and 1 card), you must specify the account (`account_id`) or card (`card_id`) to which you want to transfer the money.
  - `receiver.counterparty_id` (string)
      The ID of the receiving counterparty.
  - `receiver.account_id` (string, optional)
      The ID of the receiving counterparty's account. Used for bank transfers.
      
      If the counterparty has multiple payment methods available, use it to specify the account to which you want to send the money.
  - `receiver.card_id` (string, optional)
      The ID of the receiving counterparty's card.
      Used for card transfers.
      
      If the counterparty has multiple payment methods available, use it to specify the card to which you want to send the money.

## Returns

### 200

The applicable and conditionally required fields for the specified transfer destination

#### Response attributes

- `fields` (array of object)
    A list of applicable and conditionally required fields for the specific payment context.
  - `fields[].name` (string)
      The name of the field to be provided in the [`/pay` endpoint](https://developer.revolut.com/docs/business#create-payment) request body. 
      Matches the field names in the `/pay` endpoint exactly (e.g. `reference`, `transfer_reason_code`).
  - `fields[].required` (boolean)
      Indicates whether this field must be provided for the given transfer.
  - `fields[].validation` (object, optional)
      Validation rules applied to the field.
    - `fields[].validation.min_length` (integer, optional)
        The minimum allowed character length for the field value.
    - `fields[].validation.max_length` (integer, optional)
        The maximum allowed character length for the field value.
    - `fields[].validation.regex` (object, optional)
        Regular expression validation rules.
      - `fields[].validation.regex.pattern` (string)
          The regex pattern the field value must match.
      - `fields[].validation.regex.description` (string)
          A human-readable description of the regex constraint.
  - `fields[].options` (array of object, optional)
      A list of allowed values for the field (enum).
      If provided, the field value must be one of these options.
    - `fields[].options[].value` (string)
        The accepted value to be passed to the API.
    - `fields[].options[].default` (any, optional)
    - `fields[].options[].type` (any, optional)
    - `fields[].options[].description` (any, optional)

## Error responses

| HTTP status code | Description |
| --- | --- |
| 400 | Bad request  For example: - the request is invalid (e.g. malformed body, validation failure) - both `account_id` and `card_id` are provided in `receiver` (only one of these values can be provided in a single request) |
| 404 | Not found  Returned when the specified counterparty, account, or card was not found. |
