# 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](/api-reference/legacy/recipient/recipientaccountrequirementsget) for a full overview of how the account requirements flow works.

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

## Security:

  - `UserToken` (unknown)
    http bearer JWT

## 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.

## Header parameters:

  - `Accept-Minor-Version` (integer)
    Set to `1` to enable v1.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](/guides/developer/headers/correlation-id).

## 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:

  - `200` (unknown)
    Updated account requirements based on provided data.

## 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.
    Example: null

  - `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.
    Example: false

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

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

  - `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.
    Example: null

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

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

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

  - `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

## Response 200 headers (application/json):

  - `X-External-Correlation-Id` (string)
    Echoed back when `X-External-Correlation-Id` was included in the request. [Learn more](/guides/developer/headers/correlation-id).
    Example: f47ac10b-58cc-4372-a567-0e02b2c3d479

  - `x-trace-id` (string)
    Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.
    Example: fba501b6d453b96789f52338f019341f

## Response 429:

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

## Response 429 headers (application/json):

  - `Retry-After` (integer)
    Number of seconds to wait before retrying the request.
    Example: 5

  - `X-Rate-Limited-By` (string)
    Identifies the rate limiter that triggered the 429 response.
    Example: wise-public-api

  - `X-External-Correlation-Id` (string)
    Echoed back when `X-External-Correlation-Id` was included in the request. [Learn more](/guides/developer/headers/correlation-id).
    Example: f47ac10b-58cc-4372-a567-0e02b2c3d479

  - `x-trace-id` (string)
    Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.
    Example: fba501b6d453b96789f52338f019341f

