# Validate transfer requirements

Exposes transfer-specific requirements based on the sender, quote, and target recipient account. Requirements vary by currency route, transfer amount, and regulatory region.

For example, the maximum allowed length of reference text varies — the US payment system (ACH) supports 10 characters only, but transfers within Mexico allow up to 100 characters. Similarly, depending on the chosen currencies and the amount to be transferred, Wise may require additional details such as source of funds or transfer purpose.

We highly recommend verifying transfer requirements before submitting any transfer to avoid delays caused by missing details.

{% admonition type="success" name="Integration guide" %}
See the Transfer Requirements guide for step-by-step integration instructions and a list of common requirement fields.
{% /admonition %}

Endpoint: POST /v1/transfer-requirements
Security: UserToken, PersonalToken

## Request fields (application/json):

  - `targetAccount` (integer, required)
    Recipient account ID

  - `quoteUuid` (string, required)
    V2 quote ID

  - `customerTransactionId` (string)
    Unique identifier for the transfer request

  - `originatorLegalEntityType` (string)
    Type of sender. Required from March 2026 for Correspondent Send integrations
    Enum: "PRIVATE", "BUSINESS"

  - `details` (object)

  - `details.reference` (string)

  - `details.sourceOfFunds` (string)

  - `details.sourceOfFundsOther` (string)

  - `details.transferPurpose` (string)

  - `details.transferPurposeSubTransferPurpose` (string)

  - `details.transferPurposeInvoiceNumber` (string)

  - `details.transferNature` (string)

## Response 200 fields (application/json):

  - `type` (string)
    Resource type
    Example: "transfer"

  - `fields` (array)

  - `fields.name` (string)
    Field description

  - `fields.group` (array)

  - `fields.group.key` (string)
    Name of the field to include in the JSON

  - `fields.group.name` (string)
    Field description

  - `fields.group.type` (string)
    Display type of field (e.g. text, select)

  - `fields.group.refreshRequirementsOnChange` (boolean)
    Whether to call POST transfer-requirements again once the field value is set to discover required lower level fields

  - `fields.group.required` (boolean)
    Indicates if the field is mandatory

  - `fields.group.displayFormat` (string,null)
    Display format pattern

  - `fields.group.example` (string,null)
    Example value

  - `fields.group.minLength` (integer,null)
    Minimum valid length of field value

  - `fields.group.maxLength` (integer,null)
    Maximum valid length of field value

  - `fields.group.validationRegexp` (string,null)
    Regexp validation pattern

  - `fields.group.valuesAllowed` (array,null)
    List of allowed values

  - `fields.group.valuesAllowed.key` (string)
    Value key

  - `fields.group.valuesAllowed.name` (string)
    Value name

  - `fields.group.validationAsync` (string,null)
    Deprecated. This validation will instead be performed when submitting the request


