> ## Documentation Index
> Fetch the complete documentation index at: https://developer.madhousewallet.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get account requirements

> Returns the list of account types and their required fields for a given target currency. Call this **before** creating a recipient to know which fields to collect.

Each account type (e.g. `iban`, `sort_code`, `aba`) has a set of fields. Some fields have `refreshRequirementsOnChange: true` — when a user changes these, POST the current form state back to this endpoint to receive an updated field list (e.g. switching `legalType` from `PRIVATE` to `BUSINESS` may add a company name field).

**Rate limit:** 500 requests/minute.



## OpenAPI

````yaml /openapi.json get /api/payouts/account-requirements
openapi: 3.0.3
info:
  title: MW Payouts API
  version: 1.0.0
  description: >-
    The MW Payouts API lets you programmatically retrieve exchange-rate quotes,
    calculate platform fees, and submit USDC-to-fiat payout transfers on behalf
    of your account.


    All requests must be authenticated with an API key obtained from the
    **Developers** section of the dashboard. API keys are for **server-side use
    only** — never embed them in client-side code.
  contact:
    name: MW Support
    email: support@madhousewallet.com
servers:
  - url: https://business.madhousewallet.com
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Payouts
    description: USDC-to-fiat payout operations
  - name: Recipients
    description: Payout recipient management
paths:
  /api/payouts/account-requirements:
    get:
      tags:
        - Recipients
      summary: Get account requirements
      description: >-
        Returns the list of account types and their required fields for a given
        target currency. Call this **before** creating a recipient to know which
        fields to collect.


        Each account type (e.g. `iban`, `sort_code`, `aba`) has a set of fields.
        Some fields have `refreshRequirementsOnChange: true` — when a user
        changes these, POST the current form state back to this endpoint to
        receive an updated field list (e.g. switching `legalType` from `PRIVATE`
        to `BUSINESS` may add a company name field).


        **Rate limit:** 500 requests/minute.
      operationId: getAccountRequirements
      parameters:
        - name: currency
          in: query
          required: true
          schema:
            type: string
            example: EUR
          description: >-
            ISO 4217 target currency code. Supported currencies (81): AED, ALL,
            ARS, AUD, BAM, BDT, BHD, BMD, BOB, BRL, BWP, CAD, CHF, CLP, CNY,
            COP, CRC, CVE, CZK, DKK, DOP, EGP, EUR, GBP, GEL, GHS, GMD, GNF,
            GTQ, HKD, HNL, HUF, IDR, ILS, INR, ISK, JPY, KES, KGS, KHR, KRW,
            KWD, LAK, LKR, MAD, MNT, MOP, MUR, MXN, MYR, NAD, NGN, NIO, NOK,
            NPR, NZD, OMR, PEN, PHP, PKR, PLN, PYG, QAR, RON, RSD, RWF, SAR,
            SCR, SEK, SGD, SRD, THB, TND, TRY, TZS, UAH, UGX, USD, UYU, VND,
            ZAR.
      responses:
        '200':
          description: Account requirements returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          example: iban
                        title:
                          type: string
                          example: IBAN
                        fields:
                          type: array
                          items:
                            type: object
                            properties:
                              name:
                                type: string
                                example: IBAN
                              group:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    key:
                                      type: string
                                      example: iban
                                    name:
                                      type: string
                                      example: IBAN
                                    type:
                                      type: string
                                      enum:
                                        - text
                                        - select
                                        - radio
                                        - date
                                    required:
                                      type: boolean
                                    example:
                                      type: string
                                      nullable: true
                                    minLength:
                                      type: integer
                                      nullable: true
                                    maxLength:
                                      type: integer
                                      nullable: true
                                    validationRegexp:
                                      type: string
                                      nullable: true
                                    refreshRequirementsOnChange:
                                      type: boolean
                                    valuesAllowed:
                                      type: array
                                      nullable: true
                                      items:
                                        type: object
                                        properties:
                                          key:
                                            type: string
                                          name:
                                            type: string
              example:
                data:
                  - type: iban
                    title: IBAN
                    fields:
                      - name: Legal type
                        group:
                          - key: legalType
                            name: Legal type
                            type: select
                            required: true
                            refreshRequirementsOnChange: true
                            valuesAllowed:
                              - key: PRIVATE
                                name: Person
                              - key: BUSINESS
                                name: Business
                      - name: IBAN
                        group:
                          - key: iban
                            name: IBAN
                            type: text
                            required: true
                            refreshRequirementsOnChange: false
                            example: DE89370400440532013000
                            minLength: 14
                            maxLength: 42
                            validationRegexp: ^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$
        '400':
          description: Missing or invalid currency
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit exceeded (500 req/min)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
          description: Human-readable error message
      required:
        - error
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Pass your API key as a Bearer token: `Authorization: Bearer
        mw_live_<keyId>_<secret>`

````