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

# List required recipient fields

> Returns recipient fields required for the requested order route before creating an order.



## OpenAPI

````yaml https://api.sandbox.conduit.financial/v2/api-docs/openapi.json get /orders/requirements
openapi: 3.0.0
info:
  title: Conduit Sandbox API
  description: >-
    **Sandbox API** — clients integrate against this surface to exercise happy
    and unhappy paths without consuming real KYC/PSP credits or moving real
    money. Customer KYC, banking partners, and crypto custody are stubbed;
    org-level KYB runs against real providers. Simulation endpoints under
    `/v2/sandbox/*` drive specific scenarios.


    Internal and portal endpoints are excluded from this spec.
  version: '2.0'
  contact: {}
servers:
  - url: https://api.sandbox.conduit.financial/v2
    description: Sandbox
  - url: https://api.conduit.financial/v2
    description: Production
security:
  - api-key: []
tags:
  - name: Customers
  - name: Registered Addresses
  - name: Wallets
  - name: Wallet Signers
  - name: Signing Quorum
  - name: Virtual Accounts
  - name: Applications
  - name: RFIs
  - name: Documents
  - name: Verifications
  - name: Signing Requests
  - name: Transactions
  - name: Payouts
  - name: Whitelist Recipients
  - name: Orders
  - name: Asset Chain Pairs
  - name: Quotes
  - name: Webhook Endpoints
  - name: Webhook Deliveries
  - name: Webhook Event Types
  - name: Features
  - name: Customer Onboarding
  - name: Markup
  - name: Sandbox
paths:
  /orders/requirements:
    get:
      tags:
        - Orders
      summary: List required recipient fields
      description: >-
        Returns recipient fields required for the requested order route before
        creating an order.
      operationId: OrdersController_getRequirements_v2
      parameters:
        - name: sourceCode
          required: true
          in: query
          description: Source asset code (e.g. `USDC`, `USD`).
          schema:
            type: string
            enum:
              - USD
              - EUR
              - GBP
              - CHF
              - JPY
              - CAD
              - AUD
              - NZD
              - SGD
              - HKD
              - CNY
              - KRW
              - INR
              - BRL
              - MXN
              - ARS
              - CLP
              - COP
              - PEN
              - ZAR
              - NGN
              - KES
              - GHS
              - EGP
              - AED
              - SAR
              - ILS
              - TRY
              - PLN
              - CZK
              - HUF
              - SEK
              - NOK
              - DKK
              - THB
              - IDR
              - MYR
              - PHP
              - VND
              - TWD
              - USDC
              - USDT
              - DAI
              - EURC
              - PYUSD
              - OUSD
              - BTC
              - ETH
              - SOL
              - TRX
              - XLM
              - POL
        - name: sourceChain
          required: false
          in: query
          description: >-
            Source chain when the source asset is a crypto token (e.g.
            `ethereum`). Omitted for fiat sources.
          schema:
            type: string
            enum:
              - ethereum
              - base
              - solana
              - polygon
              - tron
              - stellar
              - tempo
        - name: destinationCode
          required: true
          in: query
          description: Destination asset code (e.g. `USD`, `USDC`).
          schema:
            type: string
            enum:
              - USD
              - EUR
              - GBP
              - CHF
              - JPY
              - CAD
              - AUD
              - NZD
              - SGD
              - HKD
              - CNY
              - KRW
              - INR
              - BRL
              - MXN
              - ARS
              - CLP
              - COP
              - PEN
              - ZAR
              - NGN
              - KES
              - GHS
              - EGP
              - AED
              - SAR
              - ILS
              - TRY
              - PLN
              - CZK
              - HUF
              - SEK
              - NOK
              - DKK
              - THB
              - IDR
              - MYR
              - PHP
              - VND
              - TWD
              - USDC
              - USDT
              - DAI
              - EURC
              - PYUSD
              - OUSD
              - BTC
              - ETH
              - SOL
              - TRX
              - XLM
              - POL
        - name: destinationChain
          required: false
          in: query
          description: >-
            Destination chain when the destination asset is a crypto token.
            Omitted for fiat destinations.
          schema:
            type: string
            enum:
              - ethereum
              - base
              - solana
              - polygon
              - tron
              - stellar
              - tempo
        - name: destinationCountry
          required: false
          in: query
          description: >-
            Beneficiary country ISO 3166-1 alpha-2 or alpha-3 code. Required
            when the destination is a fiat bank rail; informational only —
            requirements are selected by rail (domestic rails always target a US
            account; `swift` is country-agnostic).
          schema:
            type: string
        - name: paymentRail
          required: false
          in: query
          description: >-
            Payment rail for the outbound leg when applicable. Conduit may
            resolve this server-side when unambiguous. Input is case-insensitive
            (`fedwire` and `FEDWIRE` both work); the documented wire value is
            lowercase (`fedwire`).
          schema:
            enum:
              - rtp
              - fedwire
              - ach
              - ach_same_day
              - swift
              - fednow
              - sepa
              - faster_payments
              - chaps
            type: string
        - name: recipientType
          required: false
          in: query
          description: Whether the recipient is an individual or a business.
          schema:
            type: string
            enum:
              - individual
              - business
        - name: recipientRail
          required: false
          in: query
          description: >-
            Set to `crypto` to discover the fields for a crypto autoPayout
            recipient (an ONRAMP chains a crypto Withdrawal to an on-chain
            address). `crypto` is the only accepted value — fiat rails are
            derived from the fiat dimensions, which are mutually exclusive with
            it (`destinationCountry`/`paymentRail`/`recipientType`). Input is
            case-insensitive; the documented wire value is lowercase (`crypto`).
          schema:
            type: string
            enum:
              - crypto
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecipientRequirementsResponseDto'
        '400':
          description: >-
            **INVALID_OID_FORMAT**: A path or query parameter expected a valid
            object identifier but received a value that does not match the
            expected format.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorDto'
              example:
                type: INVALID_OID_FORMAT
                title: Invalid Object ID Format
                status: 400
                detail: >-
                  A path or query parameter expected a valid object identifier
                  but received a value that does not match the expected format.
                resolution: >-
                  Verify that all IDs in the request URL and query parameters
                  are correctly formatted. IDs are typically prefixed strings
                  like 'cus_...', 'app_...', or 'doc_...'.
                docs: https://conduit-v2.mintlify.app/errors#invalid-oid-format
                instance: /v2/...
                correlationId: 00469ea4-52c1-4ffa-bd05-9f28b236a5fe
                timestamp: '2026-01-15T09:30:00.000Z'
        '401':
          description: >-
            **API_KEY_MISSING**: The request did not include an API key. All API
            requests must be authenticated.


            **API_KEY_INVALID**: The provided API key is not recognized or has
            been revoked.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetailDto'
              example:
                type: API_KEY_MISSING
                title: API Key Missing
                status: 401
                detail: >-
                  The request did not include an API key. All API requests must
                  be authenticated.
                resolution: >-
                  Include your API key in the 'x-api-key' header with every
                  request.
                docs: https://conduit-v2.mintlify.app/errors#api-key-missing
                instance: /v2/...
                correlationId: 00469ea4-52c1-4ffa-bd05-9f28b236a5fe
                timestamp: '2026-01-15T09:30:00.000Z'
        '403':
          description: >-
            **ORGANIZATION_ACCESS_SUSPENDED**: Conduit has suspended this
            organization's access. Requests with the organization's API keys and
            from its users are refused until Conduit restores access.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetailDto'
              example:
                type: ORGANIZATION_ACCESS_SUSPENDED
                title: Organization Access Suspended
                status: 403
                detail: >-
                  Conduit has suspended this organization's access. Requests
                  with the organization's API keys and from its users are
                  refused until Conduit restores access.
                resolution: Contact Conduit support.
                docs: >-
                  https://conduit-v2.mintlify.app/errors#organization-access-suspended
                instance: /v2/...
                correlationId: 00469ea4-52c1-4ffa-bd05-9f28b236a5fe
                timestamp: '2026-01-15T09:30:00.000Z'
        '422':
          description: >-
            **UNSUPPORTED_PAIR**: The requested source and destination asset
            pair is not supported. `details` carries `sourceChain` and
            `destinationChain` alongside `sourceAsset` and `destinationAsset` —
            `null` for a fiat asset, which carries no chain — so you can tell a
            chain-specific refusal from an asset-wide one.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetailDto'
              example:
                type: UNSUPPORTED_PAIR
                title: Unsupported Pair
                status: 422
                detail: >-
                  The requested source and destination asset pair is not
                  supported. `details` carries `sourceChain` and
                  `destinationChain` alongside `sourceAsset` and
                  `destinationAsset` — `null` for a fiat asset, which carries no
                  chain — so you can tell a chain-specific refusal from an
                  asset-wide one.
                resolution: >-
                  Submit a supported source/destination asset combination and
                  chain, or contact Conduit if this pair should be available.
                docs: https://conduit-v2.mintlify.app/errors#unsupported-pair
                instance: /v2/...
                correlationId: 00469ea4-52c1-4ffa-bd05-9f28b236a5fe
                timestamp: '2026-01-15T09:30:00.000Z'
        '429':
          description: >-
            **RATE_LIMITED**: Too many requests. This error is returned by three
            independent checks: the per-organization bucket applied to every
            authenticated API request; the per-IP bucket applied to
            unauthenticated traffic before an API key is validated; and the
            per-IP bucket applied when repeated invalid API keys are submitted
            from the same address. Honor the Retry-After header (also exposed as
            retryAfterSeconds in the body) before retrying. Current limits and
            remaining budget are visible in X-RateLimit-Limit (the bucket size),
            X-RateLimit-Remaining, and X-RateLimit-Reset (seconds until the
            bucket refills) on every response once your API key is accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitedErrorDto'
              example:
                type: RATE_LIMITED
                title: Rate Limited
                status: 429
                detail: >-
                  Too many requests. This error is returned by three independent
                  checks: the per-organization bucket applied to every
                  authenticated API request; the per-IP bucket applied to
                  unauthenticated traffic before an API key is validated; and
                  the per-IP bucket applied when repeated invalid API keys are
                  submitted from the same address. Honor the Retry-After header
                  (also exposed as retryAfterSeconds in the body) before
                  retrying. Current limits and remaining budget are visible in
                  X-RateLimit-Limit (the bucket size), X-RateLimit-Remaining,
                  and X-RateLimit-Reset (seconds until the bucket refills) on
                  every response once your API key is accepted.
                resolution: >-
                  Sleep until Retry-After seconds have elapsed, then retry. For
                  sustained workloads exceeding the per-organization defaults,
                  request a rate-limit increase through your support contact.
                docs: https://conduit-v2.mintlify.app/errors#rate-limited
                instance: /v2/...
                correlationId: 00469ea4-52c1-4ffa-bd05-9f28b236a5fe
                timestamp: '2026-01-15T09:30:00.000Z'
                retryAfterSeconds: 3
        '500':
          description: >-
            **INTERNAL_ERROR**: An unexpected error occurred while processing
            your request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetailDto'
              example:
                type: INTERNAL_ERROR
                title: Internal Error
                status: 500
                detail: An unexpected error occurred while processing your request.
                resolution: >-
                  Retry the request after a brief delay. If the error persists,
                  contact support and include the correlationId from the error
                  response for investigation.
                docs: https://conduit-v2.mintlify.app/errors#internal-error
                instance: /v2/...
                correlationId: 00469ea4-52c1-4ffa-bd05-9f28b236a5fe
                timestamp: '2026-01-15T09:30:00.000Z'
components:
  schemas:
    RecipientRequirementsResponseDto:
      type: object
      properties:
        destinationRecipient:
          type: string
          enum:
            - required
            - none
        reason:
          type: string
        fields:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: >-
                  Where the value belongs in the create body, as a dotted path —
                  not a display label. `destination.recipient.accountNumber`
                  means `{ destination: { recipient: { accountNumber } } }`.
                example: destination.recipient.accountNumber
              type:
                type: string
                enum:
                  - string
                  - number
                  - boolean
                  - date
                  - email
                description: >-
                  Kind of value to send. `date` and `email` are sent as JSON
                  strings.
              required:
                type: boolean
                description: >-
                  Whether the field must always be sent. A field that is
                  required only in some cases carries `requiredWhen` instead.
              minLength:
                description: Shortest accepted value, for a string field.
                type: number
              maxLength:
                description: Longest accepted value, for a string field.
                type: number
              pattern:
                description: >-
                  Regular expression the value must match. Anchor it yourself
                  unless it already starts with ^ and ends with $.
                type: string
              enum:
                description: Closed set of accepted values. Send one of them verbatim.
                type: array
                items:
                  type: string
              validator:
                description: >-
                  An extra checksum rule beyond `pattern`: `ABA` for a US
                  routing number, `IBAN` for an international account number.
                type: string
                enum:
                  - aba
                  - iban
              requiredWhen:
                description: >-
                  Makes the field required only when this condition holds. The
                  condition reads another field in the same body by its `name`.
                anyOf:
                  - type: object
                    properties:
                      field:
                        type: string
                        description: The `name` of the field this condition reads.
                      equals:
                        type: string
                        description: The condition holds when that field has this value.
                    required:
                      - field
                      - equals
                    additionalProperties: false
                  - type: object
                    properties:
                      field:
                        type: string
                        description: The `name` of the field this condition reads.
                      notIn:
                        minItems: 1
                        type: array
                        items:
                          type: string
                        description: >-
                          The condition holds when that field's value is none of
                          these.
                    required:
                      - field
                      - notIn
                    additionalProperties: false
              mustEqual:
                description: >-
                  The field must carry exactly this value. Used for attestations
                  that only one answer can satisfy.
                anyOf:
                  - type: string
                  - type: boolean
                  - type: number
            required:
              - name
              - type
              - required
        fieldDescriptors:
          type: array
          items:
            type: object
            properties:
              pointer:
                type: string
                description: >-
                  RFC 6901 JSON Pointer to the field in the submission payload.
                  Always starts with /. Array indices appear as integers.
                example: /businessInfo/taxId
              label:
                type: string
                description: Human-readable label for display
                example: Tax Identification Number
              helpText:
                description: >-
                  One-line guidance for the field, intended to render as a
                  tooltip / info pill next to the label. Plain text, no markup.
                  For `businessInfo.taxId` and `businessInfo.businessEntityId`
                  this is the country-specific identifier description from
                  `countries.json` (with the issuing authority prefixed when
                  known, e.g. 'Issued by HMRC.'). For other fields it is
                  universal copy from the server-side field registry. Silently
                  absent when neither source has guidance on file. See
                  api-conventions §5.1.5.
                example: >-
                  Issued by HMRC. 10-digit number; auto-assigned on CT
                  registration; appears on HMRC correspondence. VAT Registration
                  Number (GB + 9 digits; XI prefix for NI–EU trade) is
                  supplementary — collect separately if VAT-registered.
                type: string
              type:
                type: string
                enum:
                  - string
                  - number
                  - integer
                  - boolean
                  - date
                  - datetime
                  - email
                  - url
                  - phone
                  - country
                  - enum
                  - stringArray
                  - enumArray
                description: Data type of the field
                example: string
              required:
                type: boolean
                description: Whether the field is required at submit
              group:
                description: >-
                  Section grouping code for renderers. Stable camelCase token
                  drawn from a closed set per discovery context (onboarding
                  today: `businessInfo`, `companyClassification`,
                  `registeredAddress`, `operatingAddress`, `businessActivity`,
                  `activity`, `regulatoryHistory`, `certification`,
                  `customAnswers`; `activity` carries an individual subject's
                  own activity envelope, where `businessActivity` carries a
                  business subject's; `customAnswers` carries operator-authored
                  questions). Omitted on top-level scalars without a section and
                  on fields nested inside `individualRequirements[].fields[]`
                  (already a logical group). Presentation metadata; submit
                  ignores it.
                type: string
              mustEqual:
                description: >-
                  Required-with-const marker. Submit enforces strict equality on
                  the field value (not just presence). Most common case:
                  legal-certification booleans
                  (`certification.termsAndConditions: { required: true,
                  mustEqual: true }`) where `false` submits are rejected.
                  Omitted when not constrained to a single value.
                anyOf:
                  - type: boolean
                  - type: string
                  - type: number
              constraints:
                description: >-
                  Per-value limits on this field alone, enforceable client-side.
                  Satisfying them does not by itself clear submit: a value must
                  also satisfy the field's `allowedValues`, its `mustEqual`, and
                  every `conditionalOverride` whose conditions hold. Some
                  `pattern` values state only a canonical spelling, and submit
                  can accept equivalent spellings such a pattern does not list.
                type: object
                properties:
                  pattern:
                    description: >-
                      Regex stating the canonical form of the value. A value
                      that matches it is in the form submit expects; for some
                      fields, submit is more lenient than this pattern and can
                      accept spellings it does not state, so a value outside it
                      is not always refused.
                    example: ^\d{2}\.\d{3}\.\d{3}/\d{4}-\d{2}$
                    type: string
                  example:
                    description: Example value matching the pattern
                    example: 12.345.678/0001-95
                    type: string
                  format:
                    description: >-
                      Advertised server-enforced semantic format marker. Closed
                      enum: `safeString` (structured short fields — rejects
                      control characters, HTML tags, and punctuation outside the
                      documented allowlist), `prose` (free-text fields — allows
                      ordinary punctuation and multi-line text, rejecting
                      control characters, invisible-format characters,
                      line/paragraph separators, and lone surrogates) or `ip`
                      (an IPv4 or IPv6 address — no zone identifier, no leading
                      zeros in IPv4 octets). The server enforces the rule at
                      submit; the marker advertises it so clients can
                      pre-validate. Arbitrary regex aliases belong in `pattern`.
                    type: string
                    enum:
                      - safeString
                      - prose
                      - ip
                  minLength:
                    description: Minimum string length
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  maxLength:
                    description: Maximum string length
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  min:
                    description: Minimum numeric value
                    type: number
                  max:
                    description: Maximum numeric value
                    type: number
                  minDate:
                    description: >-
                      Earliest allowed date as ISO 8601 (YYYY-MM-DD) or the
                      literal 'today'
                    example: '1800-01-01'
                    type: string
                  maxDate:
                    description: >-
                      Latest allowed date as ISO 8601 (YYYY-MM-DD) or the
                      literal 'today'
                    example: today
                    type: string
                  maxDateTime:
                    description: >-
                      Latest allowed instant for a datetime field: the literal
                      'now'. A value up to five minutes ahead of the server
                      clock is accepted to absorb clock skew.
                    example: now
                    type: string
                    enum:
                      - now
                  minAgeYears:
                    description: Minimum age in years (for date-of-birth-style fields)
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  maxAgeYears:
                    description: Maximum age in years (for date-of-birth-style fields)
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  checksum:
                    description: >-
                      A check digit rule the value must pass beyond `pattern`:
                      `aba` for a US routing number, `iban` for an international
                      bank account number (mod-97).
                    type: string
                    enum:
                      - aba
                      - iban
                additionalProperties: false
              conditions:
                description: >-
                  Conditional applicability rules. The field applies (is shown /
                  required) only when every condition evaluates true against the
                  current submission. Empty / absent means unconditional.
                type: array
                items:
                  type: object
                  properties:
                    pointer:
                      type: string
                      description: >-
                        RFC 6901 JSON Pointer to the submitted-data field this
                        condition reads. Resolution is governed by the sibling
                        scope (root by default; person-scoped when
                        scope='person').
                      example: /companyClassification/legalStructure
                    operator:
                      type: string
                      enum:
                        - eq
                        - in
                        - not_in
                        - exists
                        - is_true
                        - is_false
                      description: >-
                        Comparison operator. The field is required / applies
                        only when the condition evaluates true against the
                        current submitted data.
                      example: eq
                    value:
                      description: Single comparison value, used with eq / exists operators
                      type: string
                    values:
                      description: >-
                        Array of comparison values, used with in / not_in
                        operators
                      type: array
                      items:
                        type: string
                    scope:
                      description: >-
                        Evaluation scope for `pointer`. Default `root` evaluates
                        against the top-level submission; `person` evaluates
                        against the current `ownership.persons[i]` row (used
                        inside `individualRequirements[].fields[].conditions`).
                      type: string
                      enum:
                        - root
                        - person
                  required:
                    - pointer
                    - operator
                  additionalProperties: false
              allowedValues:
                description: >-
                  Allowed values for enum / enumArray fields. The submitted
                  value MUST be one of these.
                example:
                  - LLC
                  - CORPORATION
                  - PARTNERSHIP
                type: array
                items:
                  type: string
              options:
                description: >-
                  Structured per-option metadata for enum fields with display /
                  grouping hints (label, abbr, description, category). `value`
                  mirrors an entry in `allowedValues`. Present when the
                  projector has localized data to surface (e.g. country-specific
                  legal structures); enum fields without rich metadata use
                  `allowedValues` alone.
                type: array
                items:
                  type: object
                  properties:
                    value:
                      type: string
                      description: >-
                        Submitted value. Must be one of the entries in the
                        sibling `allowedValues` array.
                      example: Sociedad Anónima
                    label:
                      type: string
                      description: Human-readable label for display
                      example: Sociedad Anónima
                    abbr:
                      type: string
                      description: Short-form / acronym for the option
                      example: S.A.
                      nullable: true
                    description:
                      description: Long-form description of the option
                      type: string
                    category:
                      type: string
                      enum:
                        - Corp
                        - LLC
                        - Sole Proprietorship
                        - Partnership
                        - Other
                        - regulatory_review
                      description: >-
                        Out-of-band metadata for an option that affects how it
                        should be rendered or handled. Values: the
                        legal-structure canonical bucket (`Corp` / `LLC` / `Sole
                        Proprietorship` / `Partnership` / `Other`) — used to map
                        the localised `value` to a standardised type; and
                        `regulatory_review` — indicates this option is subject
                        to additional regulatory review and may warrant a
                        pre-submission warning to the user. Silently absent on
                        options that carry no such metadata.
                  required:
                    - value
                    - label
                  additionalProperties: false
              conditionalOverrides:
                description: >-
                  Extra constraints that apply only while their own conditions
                  hold. Each element carries a `conditions` array read exactly
                  like the field's own `conditions` — every condition must hold,
                  and `scope: 'person'` resolves the pointer against the current
                  `ownership.persons[i]` row — plus the `constraints` submit
                  adds for that case. Three cases ship. An address states what
                  submit keys on that address's own country: a person's
                  `/address/state` carries the US subdivision pattern and
                  `/address/postalCode` the US ZIP pattern while that same
                  person's `/address/country` is `USA` (`scope: 'person'`), and
                  the business's `/operatingAddress/state` and
                  `/operatingAddress/postalCode` carry the same two while
                  `/operatingAddress/country` is `USA`, read at the root of the
                  body because the condition names no scope. A person's
                  `/taxIdNumber` carries the US Social Security Number pattern
                  while that same person's `/taxIdType` is `SSN`. When two or
                  more requirement rules declare one field and a rule's check
                  depends on a condition discovery cannot settle (most often a
                  `scope: 'person'` condition), that rule's check is an element
                  too: its `constraints` and, for an enum field, its
                  `allowedValues`. Some overrides' `pattern` states only the
                  canonical value to send, not the full set submit accepts: the
                  US subdivision pattern states the two-letter code with or
                  without the `US-` prefix, while submit also accepts the full
                  state name and other spellings. Apply every element whose
                  conditions hold ON TOP OF the field's own `constraints`, never
                  in place of them: the value must match the field-level
                  `pattern` and every override `pattern` that applies, and a
                  bound named twice tightens to the stricter value. The property
                  is additive and a client may ignore it, in which case the
                  field reads exactly as it did before the property existed and
                  submit can still reject a value the override would have named.
                  Silently absent when the field carries no conditional case.
                type: array
                items:
                  type: object
                  properties:
                    conditions:
                      type: array
                      items:
                        type: object
                        properties:
                          pointer:
                            type: string
                            description: >-
                              RFC 6901 JSON Pointer to the submitted-data field
                              this condition reads. Resolution is governed by
                              the sibling scope (root by default; person-scoped
                              when scope='person').
                            example: /companyClassification/legalStructure
                          operator:
                            type: string
                            enum:
                              - eq
                              - in
                              - not_in
                              - exists
                              - is_true
                              - is_false
                            description: >-
                              Comparison operator. The field is required /
                              applies only when the condition evaluates true
                              against the current submitted data.
                            example: eq
                          value:
                            description: >-
                              Single comparison value, used with eq / exists
                              operators
                            type: string
                          values:
                            description: >-
                              Array of comparison values, used with in / not_in
                              operators
                            type: array
                            items:
                              type: string
                          scope:
                            description: >-
                              Evaluation scope for `pointer`. Default `root`
                              evaluates against the top-level submission;
                              `person` evaluates against the current
                              `ownership.persons[i]` row (used inside
                              `individualRequirements[].fields[].conditions`).
                            type: string
                            enum:
                              - root
                              - person
                        required:
                          - pointer
                          - operator
                        additionalProperties: false
                      description: >-
                        Conditions that must ALL hold for this override to
                        apply. Same shape and evaluation as `conditions` on the
                        field itself, `scope` included.
                    constraints:
                      type: object
                      properties:
                        pattern:
                          description: >-
                            Regex stating the canonical form of the value. A
                            value that matches it is in the form submit expects;
                            for some fields, submit is more lenient than this
                            pattern and can accept spellings it does not state,
                            so a value outside it is not always refused.
                          example: ^\d{2}\.\d{3}\.\d{3}/\d{4}-\d{2}$
                          type: string
                        example:
                          description: Example value matching the pattern
                          example: 12.345.678/0001-95
                          type: string
                        format:
                          description: >-
                            Advertised server-enforced semantic format marker.
                            Closed enum: `safeString` (structured short fields —
                            rejects control characters, HTML tags, and
                            punctuation outside the documented allowlist),
                            `prose` (free-text fields — allows ordinary
                            punctuation and multi-line text, rejecting control
                            characters, invisible-format characters,
                            line/paragraph separators, and lone surrogates) or
                            `ip` (an IPv4 or IPv6 address — no zone identifier,
                            no leading zeros in IPv4 octets). The server
                            enforces the rule at submit; the marker advertises
                            it so clients can pre-validate. Arbitrary regex
                            aliases belong in `pattern`.
                          type: string
                          enum:
                            - safeString
                            - prose
                            - ip
                        minLength:
                          description: Minimum string length
                          type: integer
                          minimum: -9007199254740991
                          maximum: 9007199254740991
                        maxLength:
                          description: Maximum string length
                          type: integer
                          minimum: -9007199254740991
                          maximum: 9007199254740991
                        min:
                          description: Minimum numeric value
                          type: number
                        max:
                          description: Maximum numeric value
                          type: number
                        minDate:
                          description: >-
                            Earliest allowed date as ISO 8601 (YYYY-MM-DD) or
                            the literal 'today'
                          example: '1800-01-01'
                          type: string
                        maxDate:
                          description: >-
                            Latest allowed date as ISO 8601 (YYYY-MM-DD) or the
                            literal 'today'
                          example: today
                          type: string
                        maxDateTime:
                          description: >-
                            Latest allowed instant for a datetime field: the
                            literal 'now'. A value up to five minutes ahead of
                            the server clock is accepted to absorb clock skew.
                          example: now
                          type: string
                          enum:
                            - now
                        minAgeYears:
                          description: >-
                            Minimum age in years (for date-of-birth-style
                            fields)
                          type: integer
                          minimum: -9007199254740991
                          maximum: 9007199254740991
                        maxAgeYears:
                          description: >-
                            Maximum age in years (for date-of-birth-style
                            fields)
                          type: integer
                          minimum: -9007199254740991
                          maximum: 9007199254740991
                        checksum:
                          description: >-
                            A check digit rule the value must pass beyond
                            `pattern`: `aba` for a US routing number, `iban` for
                            an international bank account number (mod-97).
                          type: string
                          enum:
                            - aba
                            - iban
                      additionalProperties: false
                      description: >-
                        Constraints submit adds while the conditions hold. They
                        narrow the field, never widen it, and they do not
                        replace the field's own `constraints`: `pattern` is a
                        SECOND regex that states the canonical form for this
                        case, applied as well as the field-level `pattern`, and
                        a bound named on both takes whichever value is stricter.
                        As at field level, submit can be more lenient than some
                        of these patterns state. `example` is a value valid
                        under this override. Empty when the override narrows
                        only `allowedValues`.
                    allowedValues:
                      description: >-
                        Allowed values for an enum / enumArray field while the
                        conditions hold: a subset of the field's own
                        `allowedValues`. Submit refuses a value outside it in
                        that case. Omitted when the override does not narrow the
                        values.
                      example:
                        - SSN
                      type: array
                      items:
                        type: string
                  required:
                    - conditions
                    - constraints
                  additionalProperties: false
            required:
              - pointer
              - label
              - type
              - required
          description: >-
            The fields to send, in the same shape that `fields` has on the
            onboarding and feature requirements endpoints. `pointer` is an RFC
            6901 JSON Pointer to the place of the value in the create request
            body. A field that has `conditions` is required only while every
            condition holds. `fields` gives the same fields in its earlier
            shape.
      required:
        - destinationRecipient
        - fields
        - fieldDescriptors
    ValidationErrorDto:
      type: object
      properties:
        type:
          type: string
          description: Machine-readable error code
          example: CUSTOMER_NOT_FOUND
        title:
          type: string
          description: Human-readable error type label
          example: Customer Not Found
        status:
          type: number
          description: HTTP status code
          example: 404
        detail:
          type: string
          description: Human-readable explanation of this occurrence
          example: Customer with id cus_034A0gCCVsxdV2PjHLx9k1 not found
        resolution:
          type: string
          description: What the developer should do to resolve this error
          example: >-
            Verify the customer ID. Check you are using the correct API key for
            this organization.
        docs:
          type: string
          description: URL to error documentation
          example: https://conduit-v2.mintlify.app/errors#customer-not-found
        instance:
          type: string
          description: Request path that produced the error
          example: /v2/customers/cus_034A0gCCVsxdV2PjHLx9k1
        correlationId:
          description: Request correlation ID
          example: 00469ea4-52c1-4ffa-bd05-9f28b236a5fe
          type: string
        timestamp:
          type: string
          description: ISO 8601 UTC timestamp
          example: '2026-04-27T20:00:00.000Z'
        details:
          description: >-
            Additional structured data for domain-specific errors (e.g. missing
            field lists, pair info)
        errors:
          type: array
          items:
            type: object
            properties:
              pointer:
                type: string
                description: JSON pointer to the invalid field
                example: /email
              detail:
                type: string
                description: What is wrong with this field
                example: Invalid email format
              allowedValues:
                description: The values this field accepts, when it is a closed set
                example:
                  - ach
                  - fedwire
                  - rtp
                type: array
                items:
                  type: string
              category:
                description: >-
                  Class of blocker (requirements-validator output only). 'field'
                  = form-field gap, 'document' = missing or insufficient
                  document (including per-UBO document slots), 'individual' =
                  required person missing.
                example: field
                type: string
                enum:
                  - field
                  - document
                  - individual
            required:
              - pointer
              - detail
      required:
        - type
        - title
        - status
        - detail
        - resolution
        - docs
        - instance
        - timestamp
    ProblemDetailDto:
      type: object
      properties:
        type:
          type: string
          description: Machine-readable error code
          example: CUSTOMER_NOT_FOUND
        title:
          type: string
          description: Human-readable error type label
          example: Customer Not Found
        status:
          type: number
          description: HTTP status code
          example: 404
        detail:
          type: string
          description: Human-readable explanation of this occurrence
          example: Customer with id cus_034A0gCCVsxdV2PjHLx9k1 not found
        resolution:
          type: string
          description: What the developer should do to resolve this error
          example: >-
            Verify the customer ID. Check you are using the correct API key for
            this organization.
        docs:
          type: string
          description: URL to error documentation
          example: https://conduit-v2.mintlify.app/errors#customer-not-found
        instance:
          type: string
          description: Request path that produced the error
          example: /v2/customers/cus_034A0gCCVsxdV2PjHLx9k1
        correlationId:
          description: Request correlation ID
          example: 00469ea4-52c1-4ffa-bd05-9f28b236a5fe
          type: string
        timestamp:
          type: string
          description: ISO 8601 UTC timestamp
          example: '2026-04-27T20:00:00.000Z'
        details:
          description: >-
            Additional structured data for domain-specific errors (e.g. missing
            field lists, pair info)
      required:
        - type
        - title
        - status
        - detail
        - resolution
        - docs
        - instance
        - timestamp
    RateLimitedErrorDto:
      type: object
      properties:
        type:
          type: string
          description: Machine-readable error code
          example: CUSTOMER_NOT_FOUND
        title:
          type: string
          description: Human-readable error type label
          example: Customer Not Found
        status:
          type: number
          description: HTTP status code
          example: 404
        detail:
          type: string
          description: Human-readable explanation of this occurrence
          example: Customer with id cus_034A0gCCVsxdV2PjHLx9k1 not found
        resolution:
          type: string
          description: What the developer should do to resolve this error
          example: >-
            Verify the customer ID. Check you are using the correct API key for
            this organization.
        docs:
          type: string
          description: URL to error documentation
          example: https://conduit-v2.mintlify.app/errors#customer-not-found
        instance:
          type: string
          description: Request path that produced the error
          example: /v2/customers/cus_034A0gCCVsxdV2PjHLx9k1
        correlationId:
          description: Request correlation ID
          example: 00469ea4-52c1-4ffa-bd05-9f28b236a5fe
          type: string
        timestamp:
          type: string
          description: ISO 8601 UTC timestamp
          example: '2026-04-27T20:00:00.000Z'
        details:
          description: >-
            Additional structured data for domain-specific errors (e.g. missing
            field lists, pair info)
        retryAfterSeconds:
          type: integer
          minimum: 0
          exclusiveMinimum: true
          maximum: 9007199254740991
          description: Seconds to wait before retrying
          example: 3
      required:
        - type
        - title
        - status
        - detail
        - resolution
        - docs
        - instance
        - timestamp
        - retryAfterSeconds
  securitySchemes:
    api-key:
      type: apiKey
      in: header
      name: x-api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.