---
title: "Validate transfer requirements"
method: POST
path: "/v1/transfer-requirements"
tags: ["transfer"]
---

# Validate transfer requirements

`POST /v1/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](/guides/developer/api-guides/transfer-requirements) for step-by-step integration instructions and a list of common requirement fields.
{% /admonition %}

## Headers

- `X-External-Correlation-Id` string, uuid

## Request body

- object
  - `targetAccount` integer, required — Recipient account ID
  - `quoteUuid` string, uuid, required — V2 quote ID
  - `customerTransactionId` string, uuid — Unique identifier for the transfer request
  - `originatorLegalEntityType` 'PRIVATE' | 'BUSINESS' — Type of sender. Required from March 2026 for Correspondent Send integrations
  - `details` object
    - `reference` string
    - `sourceOfFunds` string
    - `sourceOfFundsOther` string
    - `transferPurpose` string
    - `transferPurposeSubTransferPurpose` string
    - `transferPurposeInvoiceNumber` string
    - `transferNature` string

## Response `200`

Returns a list of transfer requirement objects describing the dynamic form fields.

- TransferRequirement[]
  - `type` string — Resource type
  - `fields` object[]
    - `name` string — Field description
    - `group` object[]
      - `key` string — Name of the field to include in the JSON
      - `name` string — Field description
      - `type` string — Display type of field (e.g. text, select)
      - `refreshRequirementsOnChange` boolean — Whether to call POST transfer-requirements again once the field value is set to discover required lower level fields
      - `required` boolean — Indicates if the field is mandatory
      - `displayFormat` string, nullable — Display format pattern
      - `example` string, nullable — Example value
      - `minLength` integer, nullable — Minimum valid length of field value
      - `maxLength` integer, nullable — Maximum valid length of field value
      - `validationRegexp` string, nullable — Regexp validation pattern
      - `validationAsync` string, nullable — Deprecated. This validation will instead be performed when submitting the request
      - `valuesAllowed` object[], nullable — List of allowed values
        - `key` string — Value key
        - `name` string — Value name

## Other responses

- `429` — Rate limit exceeded. Retry after the number of seconds specified in the `Retry-After` header.

---

[API](https://skmtc.net/wise/apis/platform-api.md) · [All operations](https://skmtc.net/wise/apis/platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/wise/platform-api/revisions/4907a1d269ab/schema)
