AccountRequirement
The fields a recipient account needs, for a quote's route.
Operations
Every route this entity exposes. Each route links to its own reference on this page.
| Method | Route | SDK operation | Returns |
|---|---|---|---|
POST |
/quotes/{quoteId}/account-requirements |
create |
Updated account requirements based on provided data |
GET |
/quotes/{quoteId}/account-requirements |
list |
Dynamic account requirements for building a recipient form |
Examples
One example per SDK, generated from the API model. The argument names are the parameters and fields of this entity, and the values are placeholders. The examples are not compiled or executed.
Golang
Construct client as shown in the Golang setup, then call the operations:
account_requirements, err := client.AccountRequirement(nil).List(map[string]any{"quote_id": "example"}, nil)
if err != nil {
panic(err)
}
fmt.Println(account_requirements)
created, err := client.AccountRequirement(nil).Create(map[string]any{"quote_id": "example", "ultimateBeneficiary": map[string]any{}}, nil)
if err != nil {
panic(err)
}
fmt.Println(created)
Lua
Construct client as shown in the Lua setup, then call the operations:
local account_requirements, err = client:AccountRequirement():list({ quote_id = "example" })
local created, err = client:AccountRequirement():create({ quote_id = "example", ultimateBeneficiary = {} })
PHP
Construct client as shown in the PHP setup, then call the operations:
$account_requirements = $client->AccountRequirement()->list(["quote_id" => "example"]);
$created = $client->AccountRequirement()->create(["quote_id" => "example", "ultimateBeneficiary" => []]);
Python
Construct client as shown in the Python setup, then call the operations:
account_requirements = client.AccountRequirement().list({"quote_id": "example"})
created = client.AccountRequirement().create({ "quote_id": "example", "ultimateBeneficiary": {} })
Ruby
Construct client as shown in the Ruby setup, then call the operations:
account_requirements = client.AccountRequirement.list({ "quote_id" => "example" })
created = client.AccountRequirement.create({ "quote_id" => "example", "ultimateBeneficiary" => {} })
TypeScript
Construct client as shown in the TypeScript setup, then call the operations:
const account_requirements = await client.AccountRequirement().list({ quote_id: "example" })
const created = await client.AccountRequirement().create({ quote_id: "example", ultimateBeneficiary: {} })
Fields
| Field | Type | Required | Description |
|---|---|---|---|
accountHolderName |
string |
No | Recipient full name. |
currency |
string |
No | 3-character currency code. |
details |
object |
No | Contains the details of the recipient account specific to its currency and type. |
fields |
array |
No | List of UI field groups to collect required data. |
ownedByCustomer |
boolean |
No | Indicates whether the recipient account is owned by the profile owner. |
profile |
integer |
No | Personal or business profile ID of the sender. |
title |
string |
No | Human-readable title for the requirement group. |
type |
string |
No | Recipient account type. |
ultimateBeneficiary |
one,object,null |
Yes | The details about the ultimate beneficiary for this recipient, if present. |
usageInfo |
string |
No | Optional usage/help text. |
create
POST /quotes/{quoteId}/account-requirements
Operation ID: recipientAccountRequirementsPost.
Authentication: bearer token (UserToken).
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
quoteId |
path |
string |
Yes | Quote ID (supports long or UUID-based IDs). |
originatorLegalEntityType |
query |
enum: BUSINESS, PRIVATE |
No | Legal entity type override for the actual sender. Correspondent partners must include the originatorLegalEntityType query parameter to ensure the correct requirements are returned in the response. This parameter indicates whether the actual sender is PRIVATE or BUSINESS. When not included, the request is assumed to be for a BUSINESS entity, as Wise has no way of knowing if the true sender on a third-party transfer is a business or private individual. |
Accept-Minor-Version |
header |
enum: 1 |
No | Set to 1 to ensure the response includes both the recipient name and email fields, which are required to support currencies such as KRW, JPY and RUB. |
X-External-Correlation-Id |
header |
string (uuid) |
No | Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more. |
Request body
application/json
| Property | Type | Required | Description |
|---|---|---|---|
accountHolderName |
string |
No | Recipient full name. |
currency |
string |
No | 3-character currency code. |
details |
object |
No | Contains the details of the recipient account specific to its currency and type. Common examples include legalType, sortCode, accountNumber, email, dateOfBirth, etc. Use the retrieve recipient account requirements endpoint to determine what is required for a specific recipient. |
details.accountNumber |
string |
No | Account number (GBP example). |
details.dateOfBirth |
string |
No | Date of birth in ISO 8601 date format. Only required for certain currency routes. Call the retrieve recipient account requirements endpoint to confirm. |
details.legalType |
enum: PRIVATE, BUSINESS |
No | Recipient legal type. |
details.sortCode |
string |
No | Sort code (GBP example). |
ownedByCustomer |
boolean |
No | Indicates whether the recipient account is owned by the profile owner. While optional, we recommend setting to true for self-transfers (such as a user sending money to their own account in another country or currency). Distinguishing self-transfers from third-party transfers improves routing and processing efficiency. |
profile |
integer (int64) |
No | Personal or business profile ID of the sender. We recommend passing the business profile ID if multiple users manage your business account so all users authorized on the business account can access the recipient. |
type |
string |
No | Recipient account type. These are currency/route-specific, for example, sort_code, iban, email. |
ultimateBeneficiary |
object,null |
No | The details about the ultimate beneficiary for this recipient, if present. If absent, the ultimate beneficiary is the recipient. |
ultimateBeneficiary.accountNumber |
string,null |
No | Ultimate beneficiary account number. |
ultimateBeneficiary.address |
object,null |
No | Ultimate beneficiary address. |
ultimateBeneficiary.address.city |
string |
No | |
ultimateBeneficiary.address.country |
string |
No | |
ultimateBeneficiary.address.firstLine |
string |
No | |
ultimateBeneficiary.address.postCode |
string |
No | |
ultimateBeneficiary.address.state |
string |
No | |
ultimateBeneficiary.bankAddress |
object,null |
No | Ultimate beneficiary bank address. |
ultimateBeneficiary.bankAddress.city |
string |
No | |
ultimateBeneficiary.bankAddress.country |
string |
No | |
ultimateBeneficiary.bankAddress.firstLine |
string |
No | |
ultimateBeneficiary.bankAddress.postCode |
string |
No | |
ultimateBeneficiary.bankAddress.state |
string |
No | |
ultimateBeneficiary.bankCode |
string,null |
No | Ultimate beneficiary bank code. |
ultimateBeneficiary.bankName |
string,null |
No | Ultimate beneficiary bank name. |
ultimateBeneficiary.name |
object |
Yes | Ultimate beneficiary name details. |
ultimateBeneficiary.name.fullName |
string |
Yes | Ultimate beneficiary full name. |
Responses
200: Updated account requirements based on provided data
application/json
| Property | Type | Required | Description |
|---|---|---|---|
[].fields |
array of object |
No | List of UI field groups to collect required data. |
[].fields[].group |
array of object |
No | The actual fields within this group. |
[].fields[].group[].displayFormat |
string |
No | Optional display formatting hint. |
[].fields[].group[].example |
string |
No | Example value for the field (may be empty string). |
[].fields[].group[].key |
string |
No | Key to include in JSON when submitting recipient details. |
[].fields[].group[].maxLength |
integer |
No | Maximum allowed length, when applicable. |
[].fields[].group[].minLength |
integer |
No | Minimum allowed length, when applicable. |
[].fields[].group[].name |
string |
No | Human-readable label. |
[].fields[].group[].refreshRequirementsOnChange |
boolean |
No | If true, changing this field can alter requirements; call the POST account-requirements endpoint with updated data to refresh requirements. |
[].fields[].group[].required |
boolean |
No | Indicates whether this field is mandatory. |
[].fields[].group[].type |
string |
No | UI field type. |
[].fields[].group[].validationAsync |
string |
No | Deprecated. This validation will instead be performed when submitting the request. |
[].fields[].group[].validationRegexp |
string |
No | Regex pattern for validation, when applicable. |
[].fields[].group[].valuesAllowed |
array,null |
No | Allowed values for select/radio inputs; null for free-text/date inputs. |
[].fields[].name |
string |
No | Display name of this group. |
[].title |
string |
No | Human-readable title for the requirement group. |
[].type |
string |
No | Requirement group identifier (route/payout-method specific). |
[].usageInfo |
string |
No | Optional usage/help text. |
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header
application/json
The response is object.
list
GET /quotes/{quoteId}/account-requirements
Operation ID: recipientAccountRequirementsGet.
Authentication: bearer token (UserToken).
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
quoteId |
path |
string |
Yes | Quote ID (supports long or UUID-based IDs). |
originatorLegalEntityType |
query |
enum: BUSINESS, PRIVATE |
No | Legal entity type override for the actual sender. Correspondent partners must include the originatorLegalEntityType query parameter to ensure the correct requirements are returned in the response. This parameter indicates whether the actual sender is PRIVATE or BUSINESS. When not included, the request is assumed to be for a BUSINESS entity, as Wise has no way of knowing if the true sender on a third-party transfer is a business or private individual. |
addressRequired |
query |
boolean |
No | When set to true, the response always returns address as required, even if not required by the specific currency route. Include this query parameter set to true to force the address requirement regardless of currency. {% admonition type="warning" %} Address requirement fields are subject to change. Be sure to build your integration in a way that handles unrecognized or changed fields. {% /admonition %} |
Accept-Minor-Version |
header |
enum: 1 |
No | Set to 1 to ensure the response includes both the recipient name and email fields, which are required to support currencies such as KRW, JPY and RUB. |
X-External-Correlation-Id |
header |
string (uuid) |
No | Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more. |
Responses
200: Dynamic account requirements for building a recipient form
application/json
| Property | Type | Required | Description |
|---|---|---|---|
[].fields |
array of object |
No | List of UI field groups to collect required data. |
[].fields[].group |
array of object |
No | The actual fields within this group. |
[].fields[].group[].displayFormat |
string |
No | Optional display formatting hint. |
[].fields[].group[].example |
string |
No | Example value for the field (may be empty string). |
[].fields[].group[].key |
string |
No | Key to include in JSON when submitting recipient details. |
[].fields[].group[].maxLength |
integer |
No | Maximum allowed length, when applicable. |
[].fields[].group[].minLength |
integer |
No | Minimum allowed length, when applicable. |
[].fields[].group[].name |
string |
No | Human-readable label. |
[].fields[].group[].refreshRequirementsOnChange |
boolean |
No | If true, changing this field can alter requirements; call the POST account-requirements endpoint with updated data to refresh requirements. |
[].fields[].group[].required |
boolean |
No | Indicates whether this field is mandatory. |
[].fields[].group[].type |
string |
No | UI field type. |
[].fields[].group[].validationAsync |
string |
No | Deprecated. This validation will instead be performed when submitting the request. |
[].fields[].group[].validationRegexp |
string |
No | Regex pattern for validation, when applicable. |
[].fields[].group[].valuesAllowed |
array,null |
No | Allowed values for select/radio inputs; null for free-text/date inputs. |
[].fields[].name |
string |
No | Display name of this group. |
[].title |
string |
No | Human-readable title for the requirement group. |
[].type |
string |
No | Requirement group identifier (route/payout-method specific). |
[].usageInfo |
string |
No | Optional usage/help text. |
401: Unauthorized
403: Forbidden
404: Not Found
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header
application/json
The response is object.