Skip to content
Last updated

Transfer Requirements

Transfer requirements vary by currency route, transfer amount, and regulatory region. Use the transfer requirements endpoint to dynamically discover which fields are needed before creating a transfer. You can use this to build a dynamic UI that adapts to each transfer's specific needs.

Transfer requirements can change at any time. It is important to use this API to fetch requirements dynamically and avoid hardcoding them.

How it works

Step 1: Get initial requirements

Prepare the request body you would use to create a transfer, then post it to the transfer requirements endpoint to discover any additional required fields.

curl -i -X POST \
  https://api.wise.com/2026Q4/transfer-requirements \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-External-Correlation-Id: f47ac10b-58cc-4372-a567-0e02b2c3d479' \
  -d '{
    "targetAccount": 8692237,
    "quoteUuid": "8fa9be20-ba43-4b15-abbb-9424e1481050",
    "originatorLegalEntityType": "PRIVATE",
    "details": {
      "reference": "Invoice 2026-001",
      "sourceOfFunds": "verification.source.of.funds.salary",
      "transferPurpose": "verification.transfers.purpose.pay.bills"
    }
  }'

Step 2: Check for dynamic fields

Analyze the returned list of fields. The example response includes reference, sourceOfFunds and transferPurpose fields. The reference field is optional in this example. The sourceOfFunds and transferPurpose fields are required and both have refreshRequirementsOnChange: true, which indicates that additional fields may become required depending on the selected value.

Response
[ { "type": "transfer", "fields": [ { … }, { … }, { … } ] } ]

Step 3: Refresh with selected values

POST to the endpoint again with values set for all fields that have refreshRequirementsOnChange: true. For example, selecting a sourceOfFunds value of verification.source.of.funds.other may require an additional sourceOfFundsOther text field.

Step 4: Repeat until complete

Continue calling POST with updated values whenever a field with refreshRequirementsOnChange: true changes. Once all dynamic fields are resolved, you have the complete set of fields to compose a valid request to create a transfer.

Common requirement fields

As transfer requirements are part of a dynamic form, the list of options can change. The fields below are the most common requirements and when they apply, but others may be included. Always design your integration to work dynamically with this endpoint.

  • Transfer Reference (reference) — General reference or memo field. Mandatory for some transfers (required will be true). Use minLength, maxLength and validationRegexp in your interface to minimize errors.
  • Originator Legal Entity Type (originatorLegalEntityType) — Feature flag to identify the type of sender. Allowed values are PRIVATE or BUSINESS. Note this field is required from March 2026 for all new and existing Correspondent Send integrations.
  • Transfer Purpose (transferPurpose) — A select list of values to help understand the purpose of the transfer. Often required when transfers are over a certain size or through a particular route. As an option is selected, you must refresh requirements, as additional fields could become required.
  • Sub Transfer Purpose (transferPurposeSubTransferPurpose) — A secondary select list of values to further help understand the purpose of the transfer.
  • Source of Funds (sourceOfFunds) — A select list of values to help understand the source of the funds.
  • Transfer Nature (transferNature) — A select list of values to help understand the reason for the transfer, only for routes to and from BRL. Note that transfer nature needs to be added to a quote through creation or update in order to correctly calculate the IOF tax.
  • Transfer Purpose Invoice Number (transferPurposeInvoiceNumber) — Mandatory for trade related transfers (required will be true for these cases). Use minLength, maxLength and validationRegexp in your interface to minimize errors.

The originatorLegalEntityType field is currently optional, but will become required from March 2026 for all new and existing Correspondent Send Integrations. Please update your integration to include this field as soon as possible.

Transfers to-BRL or from-BRL require a transfer nature (see: transferNature). Transfer nature has some special handling:

  • Be aware when rendering this field that labels might be present more than once under the same key.
  • The chosen value must be added when creating a quote or via an update of an existing quote.
  • Failure to include a transfer nature as instructed will prevent the transfer from being sent.