# Retrieve recipient account requirements dynamically

The details required to create a recipient account vary by currency, type, and receiving entity. To determine which fields are required to successfully create a specific recipient, send a request to this endpoint. The response returns an array of objects that indicate which recipient account types are available for the corridor, as well as the fields and related attributes that apply to the currency and account type.
You can then choose to use Wise’s dynamic forms to gather the required data from your customer, hard-code the requirements into your system, or use a combination of both hard-coded and dynamic forms.
If `refreshRequirementsOnChange` is `true` for any item in the response’s `fields` array, this indicates additional field requirements that are conditional to the specific data `key`. For example, when `address.country` is set to `US`, the `address.state` field becomes required. To retrieve additional requirements, use the [POST operation](/api-reference/recipient/recipientaccountrequirementspost) to requery and retrieve the updated requirements. For the `address.country = "US"` example, the response returns a list of valid state names.
#### Operation variants
You can query this endpoint either *with* or *without* a quote ID.
**With quote ID**
`GET /quotes/{quoteId}/account-requirements`
Recommended when using the quote-first transfer flow. The response returns the requirements for the currency corridor specified in that [authenticated quote resource](/api-reference/quote/quotecreate).
**Without quote ID**
`GET /account-requirements?source=EUR&target=USD&sourceAmount=1000`
Use this variation if you do not have a quote ID (as in recipient-first transfer flows). In this request, you specify the source currency, target currency, and source amount as query parameters and the response returns the relevant requirements.
The variation without a quote ID is not valid for some currencies, as some payout methods only surface when profile-context is known. For example, at the time of this writing, business payments to Chinese Yuan use a different payout method than what is revealed by `GET /account-requirements?source=USD&target=CNY&sourceAmount=1000`.
Confirm with your implementation team if certain corridors should not use the recipient-first transfer flow.
#### Accept minor versions header
All new integrations should use the `Accept-Minor-Version` header with the value set to `1`. This ensures the response includes both the recipient name and email fields, which are required to support currencies such as KRW, JPY and RUB. It also removes the need for manual name validation.

Endpoint: GET /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. 

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](/api-reference/third-party-transfer) is a business or private individual.

  - `addressRequired` (boolean)
    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 %}

## Header parameters:

  - `Accept-Minor-Version` (integer)
    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` (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).

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

