# Retrieve recipient account requirements dynamically (step-by-step)

POST the same recipient account payload that you will POST to /v1/accounts.

Use this endpoint after setting any field that has refreshRequirementsOnChange=true in the GET response,
to discover any additional required fields.

See the GET endpoint for a full overview of how the account requirements flow works.

Endpoint: POST /v1/quotes/{quoteId}/account-requirements
Security: UserToken

## Path parameters:

  - `quoteId` (string, required)
    Quote ID (supports long or UUID based IDs).

## Query parameters:

  - `originatorLegalEntityType` (string)
    Legal entity type override for the actual sender.
    Enum: "BUSINESS", "PRIVATE"

## Header parameters:

  - `Accept-Minor-Version` (integer)
    Set to 1 to enable v1.1.
    Enum: 1

  - `X-External-Correlation-Id` (string)
    Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.
    Example: "f47ac10b-58cc-4372-a567-0e02b2c3d479"

## Request fields (application/json):

  - `currency` (string)
    3 character currency code.
    Example: "GBP"

  - `type` (string)
    Recipient account type (currency/route-specific), e.g. sort_code, iban, email.
    Example: "sort_code"

  - `profile` (integer)
    Personal or business profile ID of the sender. It is highly advised to pass the business profile ID in this field if your business account is managed by multiple users, so that the recipient can be accessed by all users authorized on the business account.
    Example: 30000000

  - `accountHolderName` (string)
    Recipient full name.
    Example: "John Doe"

  - `ownedByCustomer` (boolean)
    Indicates whether the recipient account is owned by the profile owner (self-transfer), such as a user sending money to their own account in another country or currency. Set to true for self-transfers. We strongly recommend setting this field, as distinguishing self-transfers from third-party transfers improves routing and processing efficiency.
    Example: true

  - `details` (object)
    Currency/route-specific recipient fields. Common examples include legalType, sortCode, accountNumber, email, dateOfBirth, etc. Use account-requirements APIs to determine what is required.

  - `details.legalType` (string)
    Recipient legal type (when applicable).
    Enum: "PRIVATE", "BUSINESS"

  - `details.sortCode` (string)
    Sort code (GBP example).
    Example: "040075"

  - `details.accountNumber` (string)
    Account number (GBP example).
    Example: "37778842"

  - `details.dateOfBirth` (string)
    Date of birth in ISO 8601 date format (Optional for GBP example).
    Example: "1961-01-01"

## Response 200 fields (application/json):

  - `type` (string)
    Requirement group identifier (route/payout-method specific).
    Example: "south_korean_paygate"

  - `title` (string)
    Human-readable title for the requirement group.
    Example: "PayGate"

  - `usageInfo` (string)
    Optional usage/help text.

  - `fields` (array)
    List of UI field groups to collect required data.

  - `fields.name` (string)
    Display name of this group.
    Example: "E-mail"

  - `fields.group` (array)
    The actual fields within this group.

  - `fields.group.key` (string)
    Key to include in JSON when submitting recipient details.
    Example: "email"

  - `fields.group.name` (string)
    Human-readable label.
    Example: "E-mail"

  - `fields.group.type` (string)
    UI field type.
    Example: "text"

  - `fields.group.refreshRequirementsOnChange` (boolean)
    If true, changing this field can alter requirements; call the POST account-requirements endpoint with updated data to refresh requirements.

  - `fields.group.required` (boolean)
    Indicates whether this field is mandatory.
    Example: true

  - `fields.group.displayFormat` (string)
    Optional display formatting hint.

  - `fields.group.example` (string)
    Example value for the field (may be empty string).
    Example: "example@example.ex"

  - `fields.group.minLength` (integer)
    Minimum allowed length, when applicable.

  - `fields.group.maxLength` (integer)
    Maximum allowed length, when applicable.

  - `fields.group.validationRegexp` (string)
    Regex pattern for validation, when applicable.
    Example: "^[^\\s]+@[^\\s]+\\.[^\\s]{2,}$"

  - `fields.group.valuesAllowed` (array,null)
    Allowed values for select/radio inputs; null for free-text/date inputs.

  - `fields.group.valuesAllowed.key` (string)
    Machine-readable value.
    Example: "PRIVATE"

  - `fields.group.valuesAllowed.name` (string)
    Human-readable value label.
    Example: "Person"

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


