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

# Create Payment Method

> Save a payment method for a user so it can be used with Checkout, Onramp, and Offramp orders

Saves a payment method for a user so it can be reused across Checkout, Onramp, and Offramp orders.

<Info>
  **Card payments** require PCI-DSS certification for production access. <a href="https://www.crossmint.com/contact/sales" target="_blank">Contact your Crossmint customer success engineer</a> to get started. Bank account and SEPA payment methods do not have this requirement.
</Info>

## Returns

Returns a [PaymentMethod](/api-reference/headless/payment-methods/payment-method-object) object.


## OpenAPI

````yaml api-reference/_open-api/PaymentMethods.json POST /unstable/payment-methods
openapi: 3.1.0
info:
  contact:
    email: support@crossmint.com
    name: Crossmint Support
    url: https://www.crossmint.com
  description: Crossmint Payment Methods API
  title: Crossmint Payment Methods API
  version: 1.0.0
servers:
  - description: Staging environment (testnets)
    url: https://staging.crossmint.com/api
  - description: Production environment (mainnets)
    url: https://www.crossmint.com/api
security: []
tags: []
paths:
  /unstable/payment-methods:
    post:
      tags:
        - Payment Methods
      summary: Create Payment Method
      description: >-
        Saves a payment method for a user so it can be reused across Checkout,
        Onramp, and Offramp orders. Sensitive fields (PAN, CVC, account numbers,
        IBANs, Bre-B keys) must be submitted through `vault.crossmint.com`,
        which tokenizes them before forwarding to Crossmint servers. Duplicate
        detection prevents saving the same card or account twice for the same
        user.


        Supported types are `card`, the bank-account variants
        (`bank-account-us`, `bank-account-mx-clabe`, `bank-account-co`,
        `bank-account-sepa-iban`, `bank-account-ph`) and `bre-b`. For bank
        accounts the currency must match the account geography.


        **API scope required**: `payment-methods.create`
      operationId: paymentMethods.unstable.create
      parameters: []
      requestBody:
        content:
          application/json:
            examples:
              BankAccountCo:
                summary: CO Bank Account
                value:
                  bankAccount:
                    accountHolder:
                      document:
                        number: '1234567890'
                        type: cc
                      name: Carlos Gómez
                      phoneNumber: '+573001234567'
                    accountNumber: '1234567890'
                    accountType: savings
                    entityType: individual
                    institutionId: co-bancolombia
                  type: bank-account-co
                  userLocator: email:carlos.gomez@example.com
              BankAccountId:
                summary: ID Bank Account
                value:
                  bankAccount:
                    accountHolder:
                      name: Budi Santoso
                      phoneNumber: '+6281234567890'
                    accountNumber: '1234567890'
                    entityType: individual
                    institutionId: id-bca
                  type: bank-account-id
                  userLocator: email:budi.santoso@example.id
              BankAccountMx:
                summary: MX Bank Account (business)
                value:
                  bankAccount:
                    accountHolder:
                      name: Comercializadora Azteca SA de CV
                      phoneNumber: '+525512345678'
                    clabe: '012180001234567899'
                    entityType: business
                  type: bank-account-mx-clabe
                  userLocator: email:empresa@example.mx
              BankAccountNg:
                summary: NG Bank Account
                value:
                  bankAccount:
                    accountHolder:
                      name: Chinedu Okafor
                      phoneNumber: '+2348031234567'
                    accountNumber: '2034567897'
                    entityType: individual
                    institutionId: ng-gt-bank
                  type: bank-account-ng
                  userLocator: email:chinedu.okafor@example.ng
              BankAccountPh:
                summary: PH Bank Account
                value:
                  bankAccount:
                    accountHolder:
                      name: Maria Santos
                      phoneNumber: '+639171234567'
                    accountNumber: '0012345678901'
                    entityType: individual
                    institutionId: ph-unionbank
                  type: bank-account-ph
                  userLocator: email:maria.santos@example.ph
              BankAccountTh:
                summary: TH Bank Account
                value:
                  bankAccount:
                    accountHolder:
                      name: Somchai Jaidee
                      phoneNumber: '+66812345678'
                    accountNumber: '1234567890'
                    entityType: individual
                    institutionId: th-kasikorn-bank
                  type: bank-account-th
                  userLocator: email:somchai.jaidee@example.th
              BankAccountUs:
                summary: US Bank Account
                value:
                  bankAccount:
                    accountNumber: '1234567899'
                    accountType: checking
                    bankAddress:
                      city: New York
                      country: US
                      line1: 123 Main St
                      postalCode: '10001'
                      stateOrRegion: NY
                    bankName: Chase
                    billing:
                      address:
                        city: New York
                        country: US
                        line1: 123 Main St
                        postalCode: '10001'
                        stateOrRegion: NY
                      name: Alice Smith
                      phone: '+12125551234'
                    country: US
                    currency: usd
                    entityType: individual
                    routingNumber: '071000013'
                  type: bank-account-us
                  userLocator: email:alice@example.com
              BankAccountVn:
                summary: VN Bank Account
                value:
                  bankAccount:
                    accountHolder:
                      name: Nguyễn Văn An
                      phoneNumber: '+84912345678'
                    accountNumber: '0071001234567'
                    entityType: individual
                    institutionId: vn-acb
                  type: bank-account-vn
                  userLocator: email:nguyen.van.an@example.vn
              Breb:
                summary: CO Bre-B (alphanumeric key)
                value:
                  breB:
                    accountHolder:
                      name: Carlos Gómez
                      phoneNumber: '+573001234567'
                    entityType: individual
                    key: '@CBTZXCDKS'
                  type: bre-b
                  userLocator: email:carlos.gomez@example.com
              BrebPhone:
                summary: CO Bre-B (phone key)
                value:
                  breB:
                    accountHolder:
                      name: Carlos Gómez
                      phoneNumber: '+573001234567'
                    entityType: individual
                    key: '3001234567'
                  type: bre-b
                  userLocator: email:carlos.gomez@example.com
              Card:
                summary: Card
                value:
                  card:
                    billing:
                      address:
                        city: Springfield
                        country: US
                        line1: 123 Main St
                        postalCode: '62701'
                        stateOrRegion: IL
                      name: Alice Smith
                      phone: '+12125551234'
                    cvc: '123'
                    expirationMonth: 12
                    expirationYear: 2028
                    number: '4111111111111111'
                  type: card
                  userLocator: email:alice@example.com
              SEPA:
                summary: SEPA
                value:
                  bankAccount:
                    bankName: Deutsche Bank
                    bic: COBADEFFXXX
                    billing:
                      name: Hans Müller
                    country: DE
                    currency: eur
                    entityType: individual
                    iban: DE89370400440532013000
                  type: bank-account-sepa-iban
                  userLocator: email:hans.mueller@example.com
            schema:
              $ref: '#/components/schemas/CreatePaymentMethodVaultRequestDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              examples:
                BankAccountCo:
                  summary: CO Bank Account
                  value:
                    bankAccount:
                      accountHolder:
                        document:
                          suffix: '7890'
                          type: cc
                        name: Carlos Gómez
                      accountSuffix: '7890'
                      accountType: savings
                      country: CO
                      currency: cop
                      entityType: individual
                      institutionId: co-bancolombia
                    createdAt: '2026-08-20T19:10:00.000Z'
                    paymentMethodId: 1cad2281-bd3d-4219-8787-7dfea94c60b1
                    reason: null
                    status: pending
                    statusReason: null
                    type: bank-account-co
                    updatedAt: '2026-08-20T19:12:11.000Z'
                BankAccountId:
                  summary: ID Bank Account
                  value:
                    bankAccount:
                      accountHolder:
                        name: Budi Santoso
                        phoneNumber: '+6281234567890'
                      accountSuffix: '7890'
                      country: ID
                      currency: idr
                      entityType: individual
                      institutionId: id-bca
                    createdAt: '2026-09-23T09:00:00.000Z'
                    paymentMethodId: 7a3e5c91-2b4d-4f86-a1c0-9d8e7f6a5b42
                    reason: null
                    status: pending
                    statusReason: null
                    type: bank-account-id
                    updatedAt: '2026-09-23T09:00:12.000Z'
                BankAccountMx:
                  summary: MX Bank Account
                  value:
                    bankAccount:
                      accountHolder:
                        name: Luis Gomez Rios
                        phoneNumber: '+525512345678'
                      accountSuffix: '7899'
                      country: MX
                      currency: mxn
                      entityType: individual
                      verificationStatus: verified
                    createdAt: '2026-08-20T19:10:00.000Z'
                    paymentMethodId: 27bacbe1-d0ff-4bc3-b37a-ca91cc64fa39
                    reason: null
                    status: pending
                    statusReason: null
                    type: bank-account-mx-clabe
                    updatedAt: '2026-08-20T19:12:11.000Z'
                BankAccountNg:
                  summary: NG Bank Account
                  value:
                    bankAccount:
                      accountHolder:
                        name: Chinedu Okafor
                        phoneNumber: '+2348031234567'
                      accountSuffix: '7897'
                      country: NG
                      currency: ngn
                      entityType: individual
                      institutionId: ng-gt-bank
                    createdAt: '2026-09-23T09:00:00.000Z'
                    paymentMethodId: 2e9b4d17-6a3c-4f85-b1d0-8c7e5a2f9b63
                    reason: null
                    status: pending
                    statusReason: null
                    type: bank-account-ng
                    updatedAt: '2026-09-23T09:00:12.000Z'
                BankAccountPh:
                  summary: PH Bank Account
                  value:
                    bankAccount:
                      accountHolder:
                        name: Maria Santos
                        phoneNumber: '+639171234567'
                      accountSuffix: '8901'
                      country: PH
                      currency: php
                      entityType: individual
                      institutionId: ph-unionbank
                    createdAt: '2026-09-23T09:00:00.000Z'
                    paymentMethodId: 5e2b7c41-9d0a-4f3b-8c6d-2a1b3c4d5e6f
                    reason: null
                    status: pending
                    statusReason: null
                    type: bank-account-ph
                    updatedAt: '2026-09-23T09:00:12.000Z'
                BankAccountTh:
                  summary: TH Bank Account
                  value:
                    bankAccount:
                      accountHolder:
                        name: Somchai Jaidee
                        phoneNumber: '+66812345678'
                      accountSuffix: '7890'
                      country: TH
                      currency: thb
                      entityType: individual
                      institutionId: th-kasikorn-bank
                    createdAt: '2026-09-23T09:00:00.000Z'
                    paymentMethodId: 8a4c7e39-2f1b-4d96-b3e5-7c0d2a9f6b41
                    reason: null
                    status: pending
                    statusReason: null
                    type: bank-account-th
                    updatedAt: '2026-09-23T09:00:12.000Z'
                BankAccountUs:
                  summary: US Bank Account
                  value:
                    bankAccount:
                      accountSuffix: '7899'
                      accountType: checking
                      bankAddress:
                        city: New York
                        country: US
                        line1: 123 Main St
                        postalCode: '10001'
                        stateOrRegion: NY
                      bankName: Chase
                      country: US
                      currency: usd
                      entityType: individual
                      routingNumber: '071000013'
                    createdAt: '2026-08-20T19:10:00.000Z'
                    paymentMethodId: dd8a59c6-aac0-47c2-9c21-686caf7f0359
                    reason: null
                    status: pending
                    statusReason: null
                    type: bank-account-us
                    updatedAt: '2026-08-20T19:12:11.000Z'
                BankAccountVn:
                  summary: VN Bank Account
                  value:
                    bankAccount:
                      accountHolder:
                        name: Nguyễn Văn An
                        phoneNumber: '+84912345678'
                      accountSuffix: '4567'
                      country: VN
                      currency: vnd
                      entityType: individual
                      institutionId: vn-acb
                    createdAt: '2026-09-23T09:00:00.000Z'
                    paymentMethodId: 3f7d1b86-9e2a-4c50-8d34-1a6e9b7c5f02
                    reason: null
                    status: pending
                    statusReason: null
                    type: bank-account-vn
                    updatedAt: '2026-09-23T09:00:12.000Z'
                Breb:
                  summary: CO Bre-B key
                  value:
                    breB:
                      accountHolder:
                        name: Carlos Gómez
                        phoneNumber: '+573001234567'
                      accountSuffix: CDKS
                      country: CO
                      currency: cop
                      entityType: individual
                      keyType: alphanumeric
                    createdAt: '2026-08-20T19:10:00.000Z'
                    paymentMethodId: 9f1a6b2c-3d4e-4f50-9a61-2b3c4d5e6f70
                    reason: null
                    status: pending
                    statusReason: null
                    type: bre-b
                    updatedAt: '2026-08-20T19:12:11.000Z'
                Card:
                  summary: Card
                  value:
                    card:
                      billing:
                        address:
                          city: Springfield
                          country: US
                          line1: 123 Main St
                          postalCode: '62701'
                          stateOrRegion: IL
                        name: Alice Smith
                        phone: '+12125551234'
                      bin: '411111'
                      brand: visa
                      country: US
                      expiration:
                        month: '12'
                        year: '2028'
                      fundingType: debit
                      last4: '1111'
                    createdAt: '2026-08-20T19:10:00.000Z'
                    default: true
                    displayName: Visa ••1111
                    paymentMethodId: d4e5f6a7-b8c9-0123-def4-567890abcdef
                    type: card
                    updatedAt: '2026-08-20T19:12:11.000Z'
                SEPA:
                  summary: SEPA
                  value:
                    bankAccount:
                      accountSuffix: '6789'
                      bankName: Deutsche Bank
                      bic: COBADEFFXXX
                      country: DE
                      currency: eur
                      entityType: individual
                    createdAt: '2026-08-20T19:10:00.000Z'
                    default: false
                    displayName: Deutsche Bank ••6789
                    paymentMethodId: 3323460b-d9d2-4ec6-b380-8a3e01e3f226
                    reason: null
                    status: pending
                    statusReason: null
                    type: bank-account-sepa-iban
                    updatedAt: '2026-08-20T19:12:11.000Z'
              schema:
                $ref: '#/components/schemas/CreatePaymentMethodVaultResponseDto'
          description: >-
            The saved payment method, including the derived `displayName` and
            the type-specific sub-object (`card`, `bankAccount`, or `breB`).
        '400':
          content:
            application/json:
              examples:
                card_limit_reached:
                  summary: Project reached its saved-card limit
                  value:
                    code: payments:payment-method.card-limit-reached
                    error: true
                    message: >-
                      Card limit reached. This project reached the limit of 50
                      saved cards without the cardPaymentMethod addon. Delete a
                      saved card, or complete onboarding to enable the
                      cardPaymentMethod addon: contact support with your project
                      ID 00000000-0000-0000-0000-000000000000 at
                      crossmint.com/support.
                    parameters:
                      addon: cardPaymentMethod
                      limit: '50'
                      projectId: 00000000-0000-0000-0000-000000000000
                duplicate:
                  summary: Duplicate payment method
                  value:
                    error: true
                    message: >-
                      Payment method already exists for this user with the same
                      details
                missing_locator:
                  summary: Missing userLocator when using API key auth
                  value:
                    code: PAYMENT_METHOD_INVALID_USER_LOCATOR
                    error: true
                    message: userLocator is required when not using JWT authentication
                proxy_fields_missing:
                  summary: Card creation via API key missing proxy-supplied fields
                  value:
                    code: PAYMENT_METHOD_PROXY_FIELDS_MISSING
                    error: true
                    message: >-
                      Card creation via API key requires proxy-supplied
                      fingerprint, brand, last4, expMonth, expYear. Submit
                      through vault.crossmint.com.
                proxy_token_mismatch:
                  summary: >-
                    Bank account token fingerprint does not match the tokenized
                    value
                  value:
                    code: PAYMENT_METHOD_PROXY_TOKEN_MISMATCH
                    error: true
                    message: Bank account fingerprint does not match Basis Theory token
                sensitive_data:
                  summary: >-
                    Sensitive data sent directly to www.crossmint.com instead of
                    vault.crossmint.com
                  value:
                    code: PAYMENT_METHOD_SENSITIVE_DATA_NOT_ALLOWED
                    error: true
                    message: >-
                      Payment method requests must be submitted through
                      vault.crossmint.com. Sensitive data cannot be sent
                      directly to api.crossmint.com.
                sepa_business:
                  summary: SEPA business not supported
                  value:
                    error: true
                    message: SEPA business accounts are not supported
              schema:
                $ref: '#/components/schemas/ApiErrorDto'
          description: Request validation failed, or the payment method is a duplicate.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorDto'
          description: Missing or invalid API key.
        '403':
          content:
            application/json:
              examples:
                auth_source:
                  summary: Authentication source not allowed
                  value:
                    error: true
                    message: >-
                      Payment methods are not allowed with this authentication
                      source
                card_auth:
                  summary: Card creation requires JWT or vault proxy
                  value:
                    error: true
                    message: >-
                      Card payment methods require user authentication (JWT) or
                      vault.crossmint.com proxy submission.
              schema:
                $ref: '#/components/schemas/ApiErrorDto'
          description: >-
            Authentication source not allowed, or the required add-on is not
            enabled.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorDto'
          description: >-
            No user in this project matches `userLocator`. Create the user
            first, then reference the same locator.
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorDto'
          description: Request body failed schema validation.
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorDto'
          description: Rate limit exceeded.
      security:
        - apiKey: []
          userJwt: []
        - apiKey: []
      servers:
        - description: Vault staging
          url: https://vault.staging.crossmint.com/api
        - description: Vault production
          url: https://vault.crossmint.com/api
components:
  schemas:
    CreatePaymentMethodVaultRequestDto:
      description: Send the sub-object that matches `type`.
      examples:
        - card:
            billing:
              address:
                city: New York
                country: US
                line1: 123 Main St
                postalCode: '10001'
                stateOrRegion: NY
              name: John Doe
              phone: '+12125551234'
            cvc: '123'
            expirationMonth: 12
            expirationYear: 2028
            number: '4242424242424242'
          type: card
          userLocator: userId:abc123
        - bankAccount:
            accountNumber: '000123456789'
            accountType: checking
            bankAddress:
              city: San Francisco
              country: US
              line1: 420 Montgomery St
              postalCode: '94104'
              stateOrRegion: CA
            bankName: Wells Fargo
            billing:
              name: Alice Smith
            country: US
            currency: usd
            entityType: individual
            routingNumber: '110000000'
          type: bank-account-us
          userLocator: email:alice@example.com
        - bankAccount:
            bankName: Deutsche Bank
            bic: DEUTDEDBXXX
            billing:
              name: Bob Müller
            country: DE
            currency: eur
            entityType: individual
            iban: DE89370400440532013000
          type: bank-account-sepa-iban
          userLocator: email:bob@example.com
        - breB:
            accountHolder:
              name: Ana Perez Garcia
            entityType: individual
            key: '@ANAPEREZ'
          type: bre-b
          userLocator: email:ana@example.com
        - bankAccount:
            accountHolder:
              name: Comercializadora Azteca SA de CV
            clabe: '032180000118359719'
            entityType: business
          type: bank-account-mx-clabe
          userLocator: email:empresa@example.mx
        - bankAccount:
            accountHolder:
              name: Maria Santos
              phoneNumber: '+639171234567'
            accountNumber: '0012345678901'
            entityType: individual
            institutionId: ph-unionbank
          type: bank-account-ph
          userLocator: email:maria.santos@example.ph
      oneOf:
        - properties:
            bankAccount:
              description: >-
                Bank account details. Required when `type` is a bank type. The
                fields depend on the country of the account.
              properties:
                accountHolder:
                  description: >-
                    Person or company that owns the account. Sent to the payout
                    provider. No `address`: SPEI reads no holder address, so one
                    is rejected rather than stored.
                  properties:
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: The claimed holder name. Sent to the payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: E.164 format.
                      pattern: ^\+[1-9]\d{1,14}$
                      type: string
                  required:
                    - name
                  type: object
                clabe:
                  description: 18-digit CLABE. Tokenized by the vault.
                  pattern: ^\d{18}$
                  type: string
                entityType:
                  description: Type of the account holder.
                  enum:
                    - business
                    - individual
                  type: string
              required:
                - accountHolder
                - clabe
                - entityType
              type: object
            label:
              description: >-
                The client's own name for this payment method. Free text, echoed
                back on every read.
              maxLength: 255
              minLength: 1
              type: string
            type:
              const: bank-account-mx-clabe
              description: >-
                Account identifier type: Mexican bank account identified by an
                18-digit CLABE. `type` names the account identifier / capture
                schema Crossmint collects — never the payment rail; rail
                selection happens at payment execution time.
              type: string
            userLocator:
              description: >-
                Identifies the target user when authenticating with a server API
                key. Format: `<type>:<value>` (e.g., `email:alice@example.com`,
                `userId:abc123`, `phoneNumber:+12125551234`, `twitter:alice`).
                Required for API-key authentication; ignored when authenticating
                with a JWT (the JWT subject is used).
              minLength: 1
              type: string
          required:
            - bankAccount
            - type
          title: MX CLABE
          type: object
        - properties:
            bankAccount:
              description: >-
                Bank account details. Required when `type` is a bank type. The
                fields depend on the country of the account.
              properties:
                accountHolder:
                  description: >-
                    Person or company that owns the account. Sent to the payout
                    provider.
                  properties:
                    address:
                      description: >-
                        Address of the account holder. When you send it, `line1`
                        and `city` are required.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        line1:
                          description: >-
                            Primary address line (max 100 characters). No PO box
                            or private mailbox.
                          maxLength: 100
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - line1
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: The claimed holder name. Sent to the payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: E.164 format.
                      pattern: ^\+[1-9]\d{1,14}$
                      type: string
                  required:
                    - name
                  type: object
                accountNumber:
                  description: >-
                    Bank account number, 1 to 20 letters or digits. Tokenized by
                    the vault.
                  pattern: ^[a-zA-Z0-9]{1,20}$
                  type: string
                accountType:
                  description: Type of the account.
                  enum:
                    - checking
                    - savings
                  type: string
                entityType:
                  description: Type of the account holder.
                  enum:
                    - business
                    - individual
                  type: string
                institutionId:
                  description: >-
                    ID of the bank, for example `vn-acb`. The [Bank Institution
                    IDs](https://docs.crossmint.com/offramp/guides/bank-institution-ids)
                    page lists every ID.
                  minLength: 1
                  type: string
              required:
                - accountHolder
                - accountNumber
                - entityType
                - institutionId
              type: object
            label:
              description: >-
                The client's own name for this payment method. Free text, echoed
                back on every read.
              maxLength: 255
              minLength: 1
              type: string
            type:
              const: bank-account-vn
              description: >-
                Vietnamese bank account, paid out over Napas 247 or CITAD.
                `type` names the capture schema Crossmint collects, never the
                payment rail; the rail is chosen at payout time.
              type: string
            userLocator:
              description: >-
                Identifies the target user when authenticating with a server API
                key. Format: `<type>:<value>` (e.g., `email:alice@example.com`,
                `userId:abc123`, `phoneNumber:+12125551234`, `twitter:alice`).
                Required for API-key authentication; ignored when authenticating
                with a JWT (the JWT subject is used).
              minLength: 1
              type: string
          required:
            - bankAccount
            - type
          title: VN bank account
          type: object
        - properties:
            bankAccount:
              description: >-
                Bank account details. Required when `type` is a bank type. The
                fields depend on the country of the account.
              properties:
                accountHolder:
                  description: >-
                    Person or company that owns the account. Sent to the payout
                    provider.
                  properties:
                    address:
                      description: >-
                        Address of the account holder. When you send it, `line1`
                        and `city` are required.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        line1:
                          description: >-
                            Primary address line (max 100 characters). No PO box
                            or private mailbox.
                          maxLength: 100
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - line1
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: The claimed holder name. Sent to the payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: E.164 format.
                      pattern: ^\+[1-9]\d{1,14}$
                      type: string
                  required:
                    - name
                  type: object
                accountNumber:
                  description: >-
                    Bank account number, 10 digits, the last a NUBAN check digit
                    for the bank. Tokenized by the vault.
                  pattern: ^\d{10}$
                  type: string
                accountType:
                  description: Type of the account.
                  enum:
                    - checking
                    - savings
                  type: string
                entityType:
                  description: Type of the account holder.
                  enum:
                    - business
                    - individual
                  type: string
                institutionId:
                  description: >-
                    ID of the bank, for example `ng-gt-bank`. The [Bank
                    Institution
                    IDs](https://docs.crossmint.com/offramp/guides/bank-institution-ids)
                    page lists every ID.
                  minLength: 1
                  type: string
              required:
                - accountHolder
                - accountNumber
                - entityType
                - institutionId
              type: object
            label:
              description: >-
                The client's own name for this payment method. Free text, echoed
                back on every read.
              maxLength: 255
              minLength: 1
              type: string
            type:
              const: bank-account-ng
              description: >-
                Nigerian bank account, paid out over NIP. `type` names the
                capture schema Crossmint collects, never the payment rail; the
                rail is chosen at payout time.
              type: string
            userLocator:
              description: >-
                Identifies the target user when authenticating with a server API
                key. Format: `<type>:<value>` (e.g., `email:alice@example.com`,
                `userId:abc123`, `phoneNumber:+12125551234`, `twitter:alice`).
                Required for API-key authentication; ignored when authenticating
                with a JWT (the JWT subject is used).
              minLength: 1
              type: string
          required:
            - bankAccount
            - type
          title: NG bank account
          type: object
        - properties:
            bankAccount:
              description: >-
                Bank account details. Required when `type` is a bank type. The
                fields depend on the country of the account.
              properties:
                accountHolder:
                  description: >-
                    Person or company that owns the account. Sent to the payout
                    provider.
                  properties:
                    address:
                      description: >-
                        Address of the account holder. When you send it, `line1`
                        and `city` are required.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        line1:
                          description: >-
                            Primary address line (max 100 characters). No PO box
                            or private mailbox.
                          maxLength: 100
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - line1
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: The claimed holder name. Sent to the payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: E.164 format.
                      pattern: ^\+[1-9]\d{1,14}$
                      type: string
                  required:
                    - name
                  type: object
                accountNumber:
                  description: Bank account number, 6 to 18 digits. Tokenized by the vault.
                  pattern: ^\d{6,18}$
                  type: string
                accountType:
                  description: Type of the account.
                  enum:
                    - checking
                    - savings
                  type: string
                entityType:
                  description: Type of the account holder.
                  enum:
                    - business
                    - individual
                  type: string
                institutionId:
                  description: >-
                    ID of the bank, for example `ph-bdo`. The [Bank Institution
                    IDs](https://docs.crossmint.com/offramp/guides/bank-institution-ids)
                    page lists every ID.
                  minLength: 1
                  type: string
              required:
                - accountHolder
                - accountNumber
                - entityType
                - institutionId
              type: object
            label:
              description: >-
                The client's own name for this payment method. Free text, echoed
                back on every read.
              maxLength: 255
              minLength: 1
              type: string
            type:
              const: bank-account-ph
              description: >-
                Philippine bank account, paid out over InstaPay or PESONet.
                `type` names the capture schema Crossmint collects, never the
                payment rail; the rail is chosen at payout time.
              type: string
            userLocator:
              description: >-
                Identifies the target user when authenticating with a server API
                key. Format: `<type>:<value>` (e.g., `email:alice@example.com`,
                `userId:abc123`, `phoneNumber:+12125551234`, `twitter:alice`).
                Required for API-key authentication; ignored when authenticating
                with a JWT (the JWT subject is used).
              minLength: 1
              type: string
          required:
            - bankAccount
            - type
          title: PH bank account
          type: object
        - properties:
            bankAccount:
              description: >-
                Bank account details. Required when `type` is a bank type. The
                fields depend on the country of the account.
              properties:
                accountHolder:
                  description: >-
                    Person or company that owns the account. Sent to the payout
                    provider.
                  properties:
                    address:
                      description: >-
                        Address of the account holder. When you send it, `line1`
                        and `city` are required.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        line1:
                          description: >-
                            Primary address line (max 100 characters). No PO box
                            or private mailbox.
                          maxLength: 100
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - line1
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: The claimed holder name. Sent to the payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: E.164 format.
                      pattern: ^\+[1-9]\d{1,14}$
                      type: string
                  required:
                    - name
                  type: object
                accountNumber:
                  description: Bank account number, 7 to 12 digits. Tokenized by the vault.
                  pattern: ^\d{7,12}$
                  type: string
                accountType:
                  description: Type of the account.
                  enum:
                    - checking
                    - savings
                  type: string
                entityType:
                  description: Type of the account holder.
                  enum:
                    - business
                    - individual
                  type: string
                institutionId:
                  description: >-
                    ID of the bank, for example `th-kasikorn-bank`. The [Bank
                    Institution
                    IDs](https://docs.crossmint.com/offramp/guides/bank-institution-ids)
                    page lists every ID.
                  minLength: 1
                  type: string
              required:
                - accountHolder
                - accountNumber
                - entityType
                - institutionId
              type: object
            label:
              description: >-
                The client's own name for this payment method. Free text, echoed
                back on every read.
              maxLength: 255
              minLength: 1
              type: string
            type:
              const: bank-account-th
              description: >-
                Thai bank account, paid out over PromptPay. `type` names the
                capture schema Crossmint collects, never the payment rail; the
                rail is chosen at payout time.
              type: string
            userLocator:
              description: >-
                Identifies the target user when authenticating with a server API
                key. Format: `<type>:<value>` (e.g., `email:alice@example.com`,
                `userId:abc123`, `phoneNumber:+12125551234`, `twitter:alice`).
                Required for API-key authentication; ignored when authenticating
                with a JWT (the JWT subject is used).
              minLength: 1
              type: string
          required:
            - bankAccount
            - type
          title: TH bank account
          type: object
        - properties:
            bankAccount:
              description: >-
                Bank account details. Required when `type` is a bank type. The
                fields depend on the country of the account.
              properties:
                accountHolder:
                  description: >-
                    Person or company that owns the account. Sent to the payout
                    provider.
                  properties:
                    address:
                      description: >-
                        Address of the account holder. When you send it, `line1`
                        and `city` are required.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        line1:
                          description: >-
                            Primary address line (max 100 characters). No PO box
                            or private mailbox.
                          maxLength: 100
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - line1
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: The claimed holder name. Sent to the payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: E.164 format.
                      pattern: ^\+[1-9]\d{1,14}$
                      type: string
                  required:
                    - name
                  type: object
                accountNumber:
                  description: Bank account number, 7 to 18 digits. Tokenized by the vault.
                  pattern: ^\d{7,18}$
                  type: string
                accountType:
                  description: Type of the account.
                  enum:
                    - checking
                    - savings
                  type: string
                entityType:
                  description: Type of the account holder.
                  enum:
                    - business
                    - individual
                  type: string
                institutionId:
                  description: >-
                    ID of the bank, for example `id-bca`. The [Bank Institution
                    IDs](https://docs.crossmint.com/offramp/guides/bank-institution-ids)
                    page lists every ID.
                  minLength: 1
                  type: string
              required:
                - accountHolder
                - accountNumber
                - entityType
                - institutionId
              type: object
            label:
              description: >-
                The client's own name for this payment method. Free text, echoed
                back on every read.
              maxLength: 255
              minLength: 1
              type: string
            type:
              const: bank-account-id
              description: >-
                Indonesian bank account, paid out over BI-FAST. `type` names the
                capture schema Crossmint collects, never the payment rail; the
                rail is chosen at payout time.
              type: string
            userLocator:
              description: >-
                Identifies the target user when authenticating with a server API
                key. Format: `<type>:<value>` (e.g., `email:alice@example.com`,
                `userId:abc123`, `phoneNumber:+12125551234`, `twitter:alice`).
                Required for API-key authentication; ignored when authenticating
                with a JWT (the JWT subject is used).
              minLength: 1
              type: string
          required:
            - bankAccount
            - type
          title: ID bank account
          type: object
        - properties:
            bankAccount:
              description: >-
                Bank account details. Required when `type` is a bank type. The
                fields depend on the country of the account.
              properties:
                accountHolder:
                  description: >-
                    Person or company that owns the account. Sent to the payout
                    provider.
                  properties:
                    document:
                      description: Identity document of the account holder.
                      properties:
                        number:
                          description: Document number. Tokenized by the vault.
                          type: string
                        type:
                          description: >-
                            Document type: `cc` (Cédula de Ciudadanía), `nit`
                            (NIT), `ce` (Cédula de Extranjería), `pa`
                            (passport), `ppt` (Permiso por Protección Temporal),
                            `ti` (Tarjeta de Identidad), `rc` (Registro Civil),
                            `te` (Tarjeta de Extranjería) or `die` (foreign
                            identity document).
                          enum:
                            - cc
                            - ce
                            - die
                            - nit
                            - pa
                            - ppt
                            - rc
                            - te
                            - ti
                          type: string
                      required:
                        - number
                        - type
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: The claimed holder name. Sent to the payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: E.164 format.
                      pattern: ^\+[1-9]\d{1,14}$
                      type: string
                  required:
                    - document
                    - name
                  type: object
                accountNumber:
                  description: Bank account number. Tokenized by the vault.
                  type: string
                accountType:
                  description: Type of the account.
                  enum:
                    - checking
                    - electronic-deposit
                    - savings
                  type: string
                entityType:
                  description: Type of the account holder.
                  enum:
                    - business
                    - individual
                  type: string
                institutionId:
                  description: >-
                    ID of the bank, for example `co-bancolombia`. The [Bank
                    Institution
                    IDs](https://docs.crossmint.com/offramp/guides/bank-institution-ids)
                    page lists every ID.
                  minLength: 1
                  type: string
              required:
                - accountHolder
                - accountNumber
                - accountType
                - entityType
                - institutionId
              type: object
            label:
              description: >-
                The client's own name for this payment method. Free text, echoed
                back on every read.
              maxLength: 255
              minLength: 1
              type: string
            type:
              const: bank-account-co
              description: Payment method type. Always `bank-account-co`.
              type: string
            userLocator:
              description: >-
                Identifies the target user when authenticating with a server API
                key. Format: `<type>:<value>` (e.g., `email:alice@example.com`,
                `userId:abc123`, `phoneNumber:+12125551234`, `twitter:alice`).
                Required for API-key authentication; ignored when authenticating
                with a JWT (the JWT subject is used).
              minLength: 1
              type: string
          required:
            - bankAccount
            - type
          title: CO bank account
          type: object
        - properties:
            bankAccount:
              description: >-
                Bank account details. Required when `type` is a bank type. The
                fields depend on the country of the account.
              properties:
                accountNumber:
                  description: Bank account number (4-17 digits). Tokenized by the vault.
                  type: string
                accountType:
                  description: Type of the account.
                  enum:
                    - checking
                    - savings
                  type: string
                bankAddress:
                  description: Bank's mailing address.
                  properties:
                    city:
                      description: City (max 50 characters).
                      maxLength: 50
                      minLength: 1
                      type: string
                    country:
                      description: ISO 3166-1 alpha-2 country code.
                      maxLength: 2
                      minLength: 2
                      type: string
                    line1:
                      description: Primary address line (max 200 characters).
                      maxLength: 200
                      minLength: 1
                      type: string
                    line2:
                      description: >-
                        Secondary address line, such as an apartment, suite, or
                        unit (max 60 characters).
                      maxLength: 60
                      type: string
                    postalCode:
                      description: Postal or ZIP code (max 20 characters).
                      maxLength: 20
                      minLength: 1
                      type: string
                    stateOrRegion:
                      description: State, province, or region (max 50 characters).
                      maxLength: 50
                      type: string
                  required:
                    - city
                    - country
                    - line1
                    - postalCode
                  type: object
                bankName:
                  description: Bank name (e.g., "Wells Fargo").
                  minLength: 1
                  type: string
                billing:
                  description: Billing details of the account holder. `name` is required.
                  properties:
                    address:
                      description: >-
                        Billing address. When you send it, all fields except
                        `line2` are required.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        country:
                          description: ISO 3166-1 alpha-2 country code.
                          maxLength: 2
                          minLength: 2
                          type: string
                        line1:
                          description: Primary address line (max 200 characters).
                          maxLength: 200
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - country
                        - line1
                        - postalCode
                      type: object
                    name:
                      description: Full name of the cardholder or account holder.
                      minLength: 1
                      type: string
                    phone:
                      description: >-
                        Phone number in E.164 format, for example
                        `+12125551234`.
                      minLength: 1
                      type: string
                  required:
                    - name
                  type: object
                country:
                  description: ISO 3166-1 alpha-2 country code of the account.
                  enum:
                    - AD
                    - AE
                    - AF
                    - AG
                    - AI
                    - AL
                    - AM
                    - AO
                    - AQ
                    - AR
                    - AS
                    - AT
                    - AU
                    - AW
                    - AX
                    - AZ
                    - BA
                    - BB
                    - BD
                    - BE
                    - BF
                    - BG
                    - BH
                    - BI
                    - BJ
                    - BL
                    - BM
                    - BN
                    - BO
                    - BQ
                    - BR
                    - BS
                    - BT
                    - BV
                    - BW
                    - BY
                    - BZ
                    - CA
                    - CC
                    - CD
                    - CF
                    - CG
                    - CH
                    - CI
                    - CK
                    - CL
                    - CM
                    - CN
                    - CO
                    - CR
                    - CU
                    - CV
                    - CW
                    - CX
                    - CY
                    - CZ
                    - DE
                    - DJ
                    - DK
                    - DM
                    - DO
                    - DZ
                    - EC
                    - EE
                    - EG
                    - EH
                    - ER
                    - ES
                    - ET
                    - FI
                    - FJ
                    - FK
                    - FM
                    - FO
                    - FR
                    - GA
                    - GB
                    - GD
                    - GE
                    - GF
                    - GG
                    - GH
                    - GI
                    - GL
                    - GM
                    - GN
                    - GP
                    - GQ
                    - GR
                    - GS
                    - GT
                    - GU
                    - GW
                    - GY
                    - HK
                    - HM
                    - HN
                    - HR
                    - HT
                    - HU
                    - ID
                    - IE
                    - IL
                    - IM
                    - IN
                    - IO
                    - IQ
                    - IR
                    - IS
                    - IT
                    - JE
                    - JM
                    - JO
                    - JP
                    - KE
                    - KG
                    - KH
                    - KI
                    - KM
                    - KN
                    - KP
                    - KR
                    - KW
                    - KY
                    - KZ
                    - LA
                    - LB
                    - LC
                    - LI
                    - LK
                    - LR
                    - LS
                    - LT
                    - LU
                    - LV
                    - LY
                    - MA
                    - MC
                    - MD
                    - ME
                    - MF
                    - MG
                    - MH
                    - MK
                    - ML
                    - MM
                    - MN
                    - MO
                    - MP
                    - MQ
                    - MR
                    - MS
                    - MT
                    - MU
                    - MV
                    - MW
                    - MX
                    - MY
                    - MZ
                    - NA
                    - NC
                    - NE
                    - NF
                    - NG
                    - NI
                    - NL
                    - 'NO'
                    - NP
                    - NR
                    - NU
                    - NZ
                    - OM
                    - PA
                    - PE
                    - PF
                    - PG
                    - PH
                    - PK
                    - PL
                    - PM
                    - PN
                    - PR
                    - PS
                    - PT
                    - PW
                    - PY
                    - QA
                    - RE
                    - RO
                    - RS
                    - RU
                    - RW
                    - SA
                    - SB
                    - SC
                    - SD
                    - SE
                    - SG
                    - SH
                    - SI
                    - SJ
                    - SK
                    - SL
                    - SM
                    - SN
                    - SO
                    - SR
                    - SS
                    - ST
                    - SV
                    - SX
                    - SY
                    - SZ
                    - TC
                    - TD
                    - TF
                    - TG
                    - TH
                    - TJ
                    - TK
                    - TL
                    - TM
                    - TN
                    - TO
                    - TR
                    - TT
                    - TV
                    - TW
                    - TZ
                    - UA
                    - UG
                    - UM
                    - US
                    - UY
                    - UZ
                    - VA
                    - VC
                    - VE
                    - VG
                    - VI
                    - VN
                    - VU
                    - WF
                    - WS
                    - XK
                    - YE
                    - YT
                    - ZA
                    - ZM
                    - ZW
                  type: string
                currency:
                  const: usd
                  description: Must be 'usd'; a US bank account only settles in US dollars.
                  type: string
                entityType:
                  description: >-
                    Type of the account holder. SEPA accounts do not support
                    `business`.
                  enum:
                    - business
                    - individual
                  type: string
                routingNumber:
                  description: 9-digit ABA routing number.
                  type: string
              required:
                - accountNumber
                - accountType
                - bankAddress
                - bankName
                - billing
                - country
                - currency
                - entityType
                - routingNumber
              type: object
            label:
              description: >-
                The client's own name for this payment method. Free text, echoed
                back on every read.
              maxLength: 255
              minLength: 1
              type: string
            type:
              const: bank-account-us
              description: Payment method type. Always `bank-account-us`.
              type: string
            userLocator:
              description: >-
                Identifies the target user when authenticating with a server API
                key. Format: `<type>:<value>` (e.g., `email:alice@example.com`,
                `userId:abc123`, `phoneNumber:+12125551234`, `twitter:alice`).
                Required for API-key authentication; ignored when authenticating
                with a JWT (the JWT subject is used).
              minLength: 1
              type: string
          required:
            - bankAccount
            - type
          title: US bank account
          type: object
        - properties:
            bankAccount:
              description: >-
                Bank account details. Required when `type` is a bank type. The
                fields depend on the country of the account.
              properties:
                bankName:
                  description: Name of the bank (e.g., "Deutsche Bank").
                  minLength: 1
                  type: string
                bic:
                  description: >-
                    BIC (ISO 9362, 8 or 11 chars). Optional under EPC's
                    IBAN-only rule.
                  type: string
                billing:
                  description: Billing details of the account holder. `name` is required.
                  properties:
                    address:
                      description: >-
                        Billing address. When you send it, all fields except
                        `line2` are required.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        country:
                          description: ISO 3166-1 alpha-2 country code.
                          maxLength: 2
                          minLength: 2
                          type: string
                        line1:
                          description: Primary address line (max 200 characters).
                          maxLength: 200
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - country
                        - line1
                        - postalCode
                      type: object
                    name:
                      description: Full name of the cardholder or account holder.
                      minLength: 1
                      type: string
                    phone:
                      description: >-
                        Phone number in E.164 format, for example
                        `+12125551234`.
                      minLength: 1
                      type: string
                  required:
                    - name
                  type: object
                country:
                  description: >-
                    ISO 3166-1 alpha-2 country code of the account. Must be one
                    of the 37 EPC member states or Gibraltar.
                  enum:
                    - AD
                    - AE
                    - AF
                    - AG
                    - AI
                    - AL
                    - AM
                    - AO
                    - AQ
                    - AR
                    - AS
                    - AT
                    - AU
                    - AW
                    - AX
                    - AZ
                    - BA
                    - BB
                    - BD
                    - BE
                    - BF
                    - BG
                    - BH
                    - BI
                    - BJ
                    - BL
                    - BM
                    - BN
                    - BO
                    - BQ
                    - BR
                    - BS
                    - BT
                    - BV
                    - BW
                    - BY
                    - BZ
                    - CA
                    - CC
                    - CD
                    - CF
                    - CG
                    - CH
                    - CI
                    - CK
                    - CL
                    - CM
                    - CN
                    - CO
                    - CR
                    - CU
                    - CV
                    - CW
                    - CX
                    - CY
                    - CZ
                    - DE
                    - DJ
                    - DK
                    - DM
                    - DO
                    - DZ
                    - EC
                    - EE
                    - EG
                    - EH
                    - ER
                    - ES
                    - ET
                    - FI
                    - FJ
                    - FK
                    - FM
                    - FO
                    - FR
                    - GA
                    - GB
                    - GD
                    - GE
                    - GF
                    - GG
                    - GH
                    - GI
                    - GL
                    - GM
                    - GN
                    - GP
                    - GQ
                    - GR
                    - GS
                    - GT
                    - GU
                    - GW
                    - GY
                    - HK
                    - HM
                    - HN
                    - HR
                    - HT
                    - HU
                    - ID
                    - IE
                    - IL
                    - IM
                    - IN
                    - IO
                    - IQ
                    - IR
                    - IS
                    - IT
                    - JE
                    - JM
                    - JO
                    - JP
                    - KE
                    - KG
                    - KH
                    - KI
                    - KM
                    - KN
                    - KP
                    - KR
                    - KW
                    - KY
                    - KZ
                    - LA
                    - LB
                    - LC
                    - LI
                    - LK
                    - LR
                    - LS
                    - LT
                    - LU
                    - LV
                    - LY
                    - MA
                    - MC
                    - MD
                    - ME
                    - MF
                    - MG
                    - MH
                    - MK
                    - ML
                    - MM
                    - MN
                    - MO
                    - MP
                    - MQ
                    - MR
                    - MS
                    - MT
                    - MU
                    - MV
                    - MW
                    - MX
                    - MY
                    - MZ
                    - NA
                    - NC
                    - NE
                    - NF
                    - NG
                    - NI
                    - NL
                    - 'NO'
                    - NP
                    - NR
                    - NU
                    - NZ
                    - OM
                    - PA
                    - PE
                    - PF
                    - PG
                    - PH
                    - PK
                    - PL
                    - PM
                    - PN
                    - PR
                    - PS
                    - PT
                    - PW
                    - PY
                    - QA
                    - RE
                    - RO
                    - RS
                    - RU
                    - RW
                    - SA
                    - SB
                    - SC
                    - SD
                    - SE
                    - SG
                    - SH
                    - SI
                    - SJ
                    - SK
                    - SL
                    - SM
                    - SN
                    - SO
                    - SR
                    - SS
                    - ST
                    - SV
                    - SX
                    - SY
                    - SZ
                    - TC
                    - TD
                    - TF
                    - TG
                    - TH
                    - TJ
                    - TK
                    - TL
                    - TM
                    - TN
                    - TO
                    - TR
                    - TT
                    - TV
                    - TW
                    - TZ
                    - UA
                    - UG
                    - UM
                    - US
                    - UY
                    - UZ
                    - VA
                    - VC
                    - VE
                    - VG
                    - VI
                    - VN
                    - VU
                    - WF
                    - WS
                    - XK
                    - YE
                    - YT
                    - ZA
                    - ZM
                    - ZW
                  type: string
                currency:
                  const: eur
                  description: Must be 'eur'; SEPA only supports Euro.
                  type: string
                entityType:
                  description: Type of the account holder. SEPA supports `individual` only.
                  enum:
                    - individual
                  type: string
                iban:
                  description: IBAN (ISO 13616, 15-34 chars). Tokenized by the vault.
                  type: string
              required:
                - billing
                - country
                - currency
                - entityType
                - iban
              type: object
            label:
              description: >-
                The client's own name for this payment method. Free text, echoed
                back on every read.
              maxLength: 255
              minLength: 1
              type: string
            type:
              const: bank-account-sepa-iban
              description: >-
                Account identifier type: an IBAN within Crossmint's supported
                SEPA scope. `type` names the account identifier / capture schema
                Crossmint collects — never the payment rail; the same IBAN can
                be paid over different rails, selected at payment execution
                time. Not plain `iban` because non-SEPA IBAN countries need
                extra fields (BIC/SWIFT); not `eu` because SEPA scope is wider
                than the EU. BIC is optional.
              type: string
            userLocator:
              description: >-
                Identifies the target user when authenticating with a server API
                key. Format: `<type>:<value>` (e.g., `email:alice@example.com`,
                `userId:abc123`, `phoneNumber:+12125551234`, `twitter:alice`).
                Required for API-key authentication; ignored when authenticating
                with a JWT (the JWT subject is used).
              minLength: 1
              type: string
          required:
            - bankAccount
            - type
          title: SEPA IBAN
          type: object
        - properties:
            breB:
              description: >-
                Bre-B key details. `currency` and `country` are constants for
                this type, derived and read-only.
              properties:
                accountHolder:
                  description: >-
                    Person or company that owns the account. Sent to the payout
                    provider. No `address`: no Bre-B rail reads one.
                  properties:
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: The claimed holder name. Sent to the payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: E.164 format.
                      pattern: ^\+[1-9]\d{1,14}$
                      type: string
                  required:
                    - name
                  type: object
                entityType:
                  description: Type of the account holder.
                  enum:
                    - business
                    - individual
                  type: string
                key:
                  description: >-
                    The registered Bre-B key: an `@handle`, a 10-digit mobile
                    leading with 3, an e-mail, an identity-document number, or a
                    10-digit commerce code leading with 00. Formats follow
                    BanRep DSP-465 Cuadro 1. Tokenized by the vault and never
                    returned.
                  type: string
              required:
                - accountHolder
                - entityType
                - key
              type: object
            label:
              description: >-
                The client's own name for this payment method. Free text, echoed
                back on every read.
              maxLength: 255
              minLength: 1
              type: string
            type:
              const: bre-b
              description: >-
                Account identifier type: a Colombian Bre-B key, the alias that
                addresses a deposit account on Banco de la República's Bre-B
                scheme. `type` names the account identifier / capture schema
                Crossmint collects — never the payment rail. A key is
                receive-only and binds exactly one account.
              type: string
            userLocator:
              description: >-
                Identifies the target user when authenticating with a server API
                key. Format: `<type>:<value>` (e.g., `email:alice@example.com`,
                `userId:abc123`, `phoneNumber:+12125551234`, `twitter:alice`).
                Required for API-key authentication; ignored when authenticating
                with a JWT (the JWT subject is used).
              minLength: 1
              type: string
          required:
            - breB
            - type
          title: CO Bre-B key
          type: object
        - properties:
            card:
              description: >-
                Card details. Required when `type` is `card`. The vault
                tokenizes all card data before it reaches Crossmint.
              properties:
                billing:
                  description: Billing details of the cardholder. `name` is required.
                  properties:
                    address:
                      description: >-
                        Billing address. When you send it, all fields except
                        `line2` are required.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        country:
                          description: ISO 3166-1 alpha-2 country code.
                          maxLength: 2
                          minLength: 2
                          type: string
                        line1:
                          description: Primary address line (max 200 characters).
                          maxLength: 200
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - country
                        - line1
                        - postalCode
                      type: object
                    name:
                      description: Full name of the cardholder or account holder.
                      minLength: 1
                      type: string
                    phone:
                      description: >-
                        Phone number in E.164 format, for example
                        `+12125551234`.
                      minLength: 1
                      type: string
                  required:
                    - name
                  type: object
                cvc:
                  description: Card verification code. Tokenized by the vault.
                  type: string
                expirationMonth:
                  description: Expiration month, 1-12.
                  maximum: 12
                  minimum: 1
                  type: integer
                expirationYear:
                  description: Expiration year (4-digit).
                  maximum: 2100
                  minimum: 2000
                  type: integer
                number:
                  description: >-
                    Card number (PAN). Tokenized by the vault before reaching
                    api.crossmint.com.
                  type: string
              required:
                - billing
                - cvc
                - expirationMonth
                - expirationYear
                - number
              type: object
            type:
              const: card
              description: Payment method type. Always `card`.
              type: string
            userLocator:
              description: >-
                Identifies the target user when authenticating with a server API
                key. Format: `<type>:<value>` (e.g., `email:alice@example.com`,
                `userId:abc123`, `phoneNumber:+12125551234`, `twitter:alice`).
                Required for API-key authentication; ignored when authenticating
                with a JWT (the JWT subject is used).
              minLength: 1
              type: string
          required:
            - card
            - type
          title: Card
          type: object
    CreatePaymentMethodVaultResponseDto:
      description: >-
        A saved payment method. Sensitive fields (full PAN, CVC, full account
        numbers, IBANs, Bre-B keys) are never included.
      examples:
        - card:
            billing:
              name: John Doe
            brand: visa
            country: US
            expiration:
              month: '12'
              year: '2028'
            fundingType: credit
            last4: '4242'
          createdAt: '2025-01-15T10:30:00.000Z'
          default: true
          display:
            imageUrl: https://www.crossmint.com/assets/cards/visa.svg
            label: Visa ending in 4242
          displayName: Visa ••4242
          paymentMethodId: 3f7a9c10-2a8b-4c5d-9e2f-1b3a4c5d6e7f
          type: card
          updatedAt: '2025-01-15T10:30:00.000Z'
      oneOf:
        - properties:
            bankAccount:
              additionalProperties: false
              description: >-
                Bank account details. Present when `type` is a bank type. Full
                account numbers and IBANs are never included.
              properties:
                accountHolder:
                  description: Person or company that owns the account.
                  properties:
                    document:
                      description: >-
                        Identity document of the account holder. The full number
                        is never returned.
                      properties:
                        suffix:
                          description: Last four characters of the document number.
                          type: string
                        type:
                          description: >-
                            Document type: `cc` (Cédula de Ciudadanía), `nit`
                            (NIT), `ce` (Cédula de Extranjería), `pa`
                            (passport), `ppt` (Permiso por Protección Temporal),
                            `ti` (Tarjeta de Identidad), `rc` (Registro Civil),
                            `te` (Tarjeta de Extranjería) or `die` (foreign
                            identity document).
                          enum:
                            - cc
                            - ce
                            - die
                            - nit
                            - pa
                            - ppt
                            - rc
                            - te
                            - ti
                          type: string
                      required:
                        - suffix
                        - type
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: >-
                        Full legal name of the account holder. Sent to the
                        payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: Phone number of the account holder in E.164 format.
                      minLength: 1
                      type: string
                  required:
                    - document
                    - name
                  type: object
                accountSuffix:
                  description: >-
                    The last characters of the account number, CLABE or IBAN, at
                    most four.
                  type: string
                accountType:
                  description: Type of the account.
                  enum:
                    - checking
                    - electronic-deposit
                    - savings
                  type: string
                country:
                  const: CO
                  description: Always `CO`.
                  type: string
                currency:
                  const: cop
                  description: >-
                    Always 'cop'; a Colombian bank account only settles in
                    Colombian pesos.
                  type: string
                entityType:
                  description: Type of the account holder. Present when sent on creation.
                  enum:
                    - business
                    - individual
                  type: string
                institutionId:
                  description: >-
                    ID of the bank, for example `co-bancolombia`. The [Bank
                    Institution
                    IDs](https://docs.crossmint.com/offramp/guides/bank-institution-ids)
                    page lists every ID.
                  type: string
                rails:
                  description: >-
                    Bank rails available for payouts to this account.
                    `supported` lists rails a currently-available provider
                    advertises for this bank account; Crossmint decides payer
                    eligibility at order time, so an order can still be refused
                    on a rail listed here. `pending` lists rails still being
                    resolved (non-empty only while `status` is 'pending');
                    `status` is 'pending' while asynchronous rail resolution is
                    still running. Absent when no payout provider serves the
                    account, or when `status` is 'rejected'.
                  properties:
                    pending:
                      description: >-
                        Rails still being resolved. Non-empty only while
                        `status` is `pending`.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                    status:
                      description: >-
                        `pending` while asynchronous rail resolution is still
                        running. `complete` when every provider has answered.
                      enum:
                        - complete
                        - pending
                      type: string
                    supported:
                      description: >-
                        Rails that a currently-available payout provider
                        advertises for this account.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                  required:
                    - pending
                    - status
                    - supported
                  type: object
                verificationStatus:
                  description: >-
                    Result of the provider's check on the destination. Absent
                    until a provider answers.
                  enum:
                    - pending-review
                    - rejected
                    - verified
                  type: string
              required:
                - accountHolder
                - accountSuffix
                - accountType
                - country
                - currency
                - institutionId
              type: object
            createdAt:
              description: ISO 8601 timestamp when this payment method was created.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            label:
              description: >-
                The client's own name for this payment method, when one was
                sent.
              minLength: 1
              type: string
            lastPayoutAt:
              description: >-
                Read-only. ISO 8601 timestamp of the most recent successful
                offramp payout funded by this bank account. Absent if none.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            paymentMethodId:
              description: Unique identifier (UUID v4). Crossmint assigns it on creation.
              minLength: 1
              type: string
            reason:
              anyOf:
                - description: >-
                    Deprecated. Use `statusReason`, which carries the same
                    value.
                  type: string
                - type: 'null'
            status:
              description: >-
                Whether a payout provider serves this destination. 'pending'
                while the readiness checks run, 'active' when a provider
                advertises a rail for it, 'rejected' when it cannot receive
                funds, 'deleted' when it was deleted. This describes the
                destination only, never the payer's eligibility. 'pending' moves
                to 'active', 'rejected' or 'deleted'; 'active' moves to
                'rejected' or 'deleted'; 'rejected' moves only to 'deleted'.
                Branch on this field, never on `statusReason`.
              enum:
                - active
                - deleted
                - pending
                - rejected
              type: string
            statusReason:
              anyOf:
                - description: >-
                    Why the status is 'rejected'. Null on every other status,
                    and on a rejection with no established destination
                    condition. Known values today: destination-not-found,
                    destination-closed, destination-cannot-receive,
                    no-rail-available. New codes can appear at any time, so
                    branch on `status` and treat an unrecognised code as the
                    status alone.
                  type: string
                - type: 'null'
            type:
              const: bank-account-co
              description: >-
                Payment method type. Selects which sub-object is present:
                `card`, `bankAccount`, or `breB`.
              type: string
            updatedAt:
              description: ISO 8601 timestamp when this payment method was last modified.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
          required:
            - bankAccount
            - createdAt
            - paymentMethodId
            - reason
            - status
            - statusReason
            - type
            - updatedAt
          title: CO bank account
          type: object
        - properties:
            bankAccount:
              additionalProperties: false
              description: >-
                Bank account details. Present when `type` is a bank type. Full
                account numbers and IBANs are never included.
              properties:
                accountHolder:
                  description: >-
                    The person or company that owns the bank account. Derived
                    from `billing` when the record predates this field. Its
                    address carries no country: the account's own `country` is
                    the bank's jurisdiction.
                  properties:
                    address:
                      description: >-
                        Address of the account holder, in the country of the
                        account. Present only on types that collect one.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        line1:
                          description: Primary address line (max 200 characters).
                          maxLength: 200
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - line1
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: >-
                        Full legal name of the account holder. Sent to the
                        payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: Phone number of the account holder in E.164 format.
                      minLength: 1
                      type: string
                  required:
                    - name
                  type: object
                accountSuffix:
                  description: >-
                    The last characters of the account number, CLABE or IBAN, at
                    most four.
                  type: string
                country:
                  description: ISO 3166-1 alpha-2 country code of the account.
                  enum:
                    - AD
                    - AE
                    - AF
                    - AG
                    - AI
                    - AL
                    - AM
                    - AO
                    - AQ
                    - AR
                    - AS
                    - AT
                    - AU
                    - AW
                    - AX
                    - AZ
                    - BA
                    - BB
                    - BD
                    - BE
                    - BF
                    - BG
                    - BH
                    - BI
                    - BJ
                    - BL
                    - BM
                    - BN
                    - BO
                    - BQ
                    - BR
                    - BS
                    - BT
                    - BV
                    - BW
                    - BY
                    - BZ
                    - CA
                    - CC
                    - CD
                    - CF
                    - CG
                    - CH
                    - CI
                    - CK
                    - CL
                    - CM
                    - CN
                    - CO
                    - CR
                    - CU
                    - CV
                    - CW
                    - CX
                    - CY
                    - CZ
                    - DE
                    - DJ
                    - DK
                    - DM
                    - DO
                    - DZ
                    - EC
                    - EE
                    - EG
                    - EH
                    - ER
                    - ES
                    - ET
                    - FI
                    - FJ
                    - FK
                    - FM
                    - FO
                    - FR
                    - GA
                    - GB
                    - GD
                    - GE
                    - GF
                    - GG
                    - GH
                    - GI
                    - GL
                    - GM
                    - GN
                    - GP
                    - GQ
                    - GR
                    - GS
                    - GT
                    - GU
                    - GW
                    - GY
                    - HK
                    - HM
                    - HN
                    - HR
                    - HT
                    - HU
                    - ID
                    - IE
                    - IL
                    - IM
                    - IN
                    - IO
                    - IQ
                    - IR
                    - IS
                    - IT
                    - JE
                    - JM
                    - JO
                    - JP
                    - KE
                    - KG
                    - KH
                    - KI
                    - KM
                    - KN
                    - KP
                    - KR
                    - KW
                    - KY
                    - KZ
                    - LA
                    - LB
                    - LC
                    - LI
                    - LK
                    - LR
                    - LS
                    - LT
                    - LU
                    - LV
                    - LY
                    - MA
                    - MC
                    - MD
                    - ME
                    - MF
                    - MG
                    - MH
                    - MK
                    - ML
                    - MM
                    - MN
                    - MO
                    - MP
                    - MQ
                    - MR
                    - MS
                    - MT
                    - MU
                    - MV
                    - MW
                    - MX
                    - MY
                    - MZ
                    - NA
                    - NC
                    - NE
                    - NF
                    - NG
                    - NI
                    - NL
                    - 'NO'
                    - NP
                    - NR
                    - NU
                    - NZ
                    - OM
                    - PA
                    - PE
                    - PF
                    - PG
                    - PH
                    - PK
                    - PL
                    - PM
                    - PN
                    - PR
                    - PS
                    - PT
                    - PW
                    - PY
                    - QA
                    - RE
                    - RO
                    - RS
                    - RU
                    - RW
                    - SA
                    - SB
                    - SC
                    - SD
                    - SE
                    - SG
                    - SH
                    - SI
                    - SJ
                    - SK
                    - SL
                    - SM
                    - SN
                    - SO
                    - SR
                    - SS
                    - ST
                    - SV
                    - SX
                    - SY
                    - SZ
                    - TC
                    - TD
                    - TF
                    - TG
                    - TH
                    - TJ
                    - TK
                    - TL
                    - TM
                    - TN
                    - TO
                    - TR
                    - TT
                    - TV
                    - TW
                    - TZ
                    - UA
                    - UG
                    - UM
                    - US
                    - UY
                    - UZ
                    - VA
                    - VC
                    - VE
                    - VG
                    - VI
                    - VN
                    - VU
                    - WF
                    - WS
                    - XK
                    - YE
                    - YT
                    - ZA
                    - ZM
                    - ZW
                  type: string
                currency:
                  const: mxn
                  description: Always 'mxn'; a CLABE only settles in Mexican pesos.
                  type: string
                entityType:
                  description: Type of the account holder. Present when sent on creation.
                  enum:
                    - business
                    - individual
                  type: string
                rails:
                  description: >-
                    Bank rails available for payouts to this account.
                    `supported` lists rails a currently-available provider
                    advertises for this bank account; Crossmint decides payer
                    eligibility at order time, so an order can still be refused
                    on a rail listed here. `pending` lists rails still being
                    resolved (non-empty only while `status` is 'pending');
                    `status` is 'pending' while asynchronous rail resolution is
                    still running. Absent when no payout provider serves the
                    account, or when `status` is 'rejected'.
                  properties:
                    pending:
                      description: >-
                        Rails still being resolved. Non-empty only while
                        `status` is `pending`.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                    status:
                      description: >-
                        `pending` while asynchronous rail resolution is still
                        running. `complete` when every provider has answered.
                      enum:
                        - complete
                        - pending
                      type: string
                    supported:
                      description: >-
                        Rails that a currently-available payout provider
                        advertises for this account.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                  required:
                    - pending
                    - status
                    - supported
                  type: object
                verificationStatus:
                  description: >-
                    Result of the provider's check on the destination. Absent
                    until a provider answers.
                  enum:
                    - pending-review
                    - rejected
                    - verified
                  type: string
              required:
                - accountSuffix
                - country
                - currency
              type: object
            createdAt:
              description: ISO 8601 timestamp when this payment method was created.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            label:
              description: >-
                The client's own name for this payment method, when one was
                sent.
              minLength: 1
              type: string
            lastPayoutAt:
              description: >-
                Read-only. ISO 8601 timestamp of the most recent successful
                offramp payout funded by this bank account. Absent if none.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            paymentMethodId:
              description: Unique identifier (UUID v4). Crossmint assigns it on creation.
              minLength: 1
              type: string
            reason:
              anyOf:
                - description: >-
                    Deprecated. Use `statusReason`, which carries the same
                    value.
                  type: string
                - type: 'null'
            status:
              description: >-
                Whether a payout provider serves this destination. 'pending'
                while the readiness checks run, 'active' when a provider
                advertises a rail for it, 'rejected' when it cannot receive
                funds, 'deleted' when it was deleted. This describes the
                destination only, never the payer's eligibility. 'pending' moves
                to 'active', 'rejected' or 'deleted'; 'active' moves to
                'rejected' or 'deleted'; 'rejected' moves only to 'deleted'.
                Branch on this field, never on `statusReason`.
              enum:
                - active
                - deleted
                - pending
                - rejected
              type: string
            statusReason:
              anyOf:
                - description: >-
                    Why the status is 'rejected'. Null on every other status,
                    and on a rejection with no established destination
                    condition. Known values today: destination-not-found,
                    destination-closed, destination-cannot-receive,
                    no-rail-available. New codes can appear at any time, so
                    branch on `status` and treat an unrecognised code as the
                    status alone.
                  type: string
                - type: 'null'
            type:
              const: bank-account-mx-clabe
              description: >-
                Payment method type. Selects which sub-object is present:
                `card`, `bankAccount`, or `breB`.
              type: string
            updatedAt:
              description: ISO 8601 timestamp when this payment method was last modified.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
          required:
            - bankAccount
            - createdAt
            - paymentMethodId
            - reason
            - status
            - statusReason
            - type
            - updatedAt
          title: MX CLABE
          type: object
        - properties:
            bankAccount:
              description: >-
                Bank account details. Present when `type` is a bank type. Full
                account numbers and IBANs are never included.
              properties:
                accountHolder:
                  description: >-
                    The person or company that owns the bank account. Derived
                    from `billing` when the record predates this field. Its
                    address carries no country: the account's own `country` is
                    the bank's jurisdiction.
                  properties:
                    address:
                      description: >-
                        Address of the account holder, in the country of the
                        account. Present only on types that collect one.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        line1:
                          description: Primary address line (max 200 characters).
                          maxLength: 200
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - line1
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: >-
                        Full legal name of the account holder. Sent to the
                        payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: Phone number of the account holder in E.164 format.
                      minLength: 1
                      type: string
                  required:
                    - name
                  type: object
                accountSuffix:
                  description: >-
                    The last characters of the account number, CLABE or IBAN, at
                    most four.
                  type: string
                accountType:
                  description: Type of the account. Present when sent on creation.
                  enum:
                    - checking
                    - savings
                  type: string
                country:
                  const: ID
                  description: Always 'ID'.
                  type: string
                currency:
                  const: idr
                  description: >-
                    Always 'idr'; Indonesian bank accounts only settle in
                    Indonesian rupiah.
                  type: string
                entityType:
                  description: Type of the account holder. Present when sent on creation.
                  enum:
                    - business
                    - individual
                  type: string
                institutionId:
                  description: >-
                    ID of the bank, for example `id-bca`. The [Bank Institution
                    IDs](https://docs.crossmint.com/offramp/guides/bank-institution-ids)
                    page lists every ID.
                  type: string
                rails:
                  description: >-
                    Bank rails available for payouts to this account.
                    `supported` lists rails a currently-available provider
                    advertises for this bank account; Crossmint decides payer
                    eligibility at order time, so an order can still be refused
                    on a rail listed here. `pending` lists rails still being
                    resolved (non-empty only while `status` is 'pending');
                    `status` is 'pending' while asynchronous rail resolution is
                    still running. Absent when no payout provider serves the
                    account, or when `status` is 'rejected'.
                  properties:
                    pending:
                      description: >-
                        Rails still being resolved. Non-empty only while
                        `status` is `pending`.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                    status:
                      description: >-
                        `pending` while asynchronous rail resolution is still
                        running. `complete` when every provider has answered.
                      enum:
                        - complete
                        - pending
                      type: string
                    supported:
                      description: >-
                        Rails that a currently-available payout provider
                        advertises for this account.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                  required:
                    - pending
                    - status
                    - supported
                  type: object
                verificationStatus:
                  description: >-
                    Result of the provider's check on the destination. Absent
                    until a provider answers.
                  enum:
                    - pending-review
                    - rejected
                    - verified
                  type: string
              required:
                - accountSuffix
                - country
                - currency
                - institutionId
              type: object
            createdAt:
              description: ISO 8601 timestamp when this payment method was created.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            label:
              description: >-
                The client's own name for this payment method, when one was
                sent.
              minLength: 1
              type: string
            lastPayoutAt:
              description: >-
                Read-only. ISO 8601 timestamp of the most recent successful
                offramp payout funded by this bank account. Absent if none.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            paymentMethodId:
              description: Unique identifier (UUID v4). Crossmint assigns it on creation.
              minLength: 1
              type: string
            reason:
              anyOf:
                - description: >-
                    Deprecated. Use `statusReason`, which carries the same
                    value.
                  type: string
                - type: 'null'
            status:
              description: >-
                Whether a payout provider serves this destination. 'pending'
                while the readiness checks run, 'active' when a provider
                advertises a rail for it, 'rejected' when it cannot receive
                funds, 'deleted' when it was deleted. This describes the
                destination only, never the payer's eligibility. 'pending' moves
                to 'active', 'rejected' or 'deleted'; 'active' moves to
                'rejected' or 'deleted'; 'rejected' moves only to 'deleted'.
                Branch on this field, never on `statusReason`.
              enum:
                - active
                - deleted
                - pending
                - rejected
              type: string
            statusReason:
              anyOf:
                - description: >-
                    Why the status is 'rejected'. Null on every other status,
                    and on a rejection with no established destination
                    condition. Known values today: destination-not-found,
                    destination-closed, destination-cannot-receive,
                    no-rail-available. New codes can appear at any time, so
                    branch on `status` and treat an unrecognised code as the
                    status alone.
                  type: string
                - type: 'null'
            type:
              const: bank-account-id
              description: >-
                Payment method type. Selects which sub-object is present:
                `card`, `bankAccount`, or `breB`.
              type: string
            updatedAt:
              description: ISO 8601 timestamp when this payment method was last modified.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
          required:
            - bankAccount
            - createdAt
            - paymentMethodId
            - reason
            - status
            - statusReason
            - type
            - updatedAt
          title: ID bank account
          type: object
        - properties:
            bankAccount:
              description: >-
                Bank account details. Present when `type` is a bank type. Full
                account numbers and IBANs are never included.
              properties:
                accountHolder:
                  description: >-
                    The person or company that owns the bank account. Derived
                    from `billing` when the record predates this field. Its
                    address carries no country: the account's own `country` is
                    the bank's jurisdiction.
                  properties:
                    address:
                      description: >-
                        Address of the account holder, in the country of the
                        account. Present only on types that collect one.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        line1:
                          description: Primary address line (max 200 characters).
                          maxLength: 200
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - line1
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: >-
                        Full legal name of the account holder. Sent to the
                        payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: Phone number of the account holder in E.164 format.
                      minLength: 1
                      type: string
                  required:
                    - name
                  type: object
                accountSuffix:
                  description: >-
                    The last characters of the account number, CLABE or IBAN, at
                    most four.
                  type: string
                accountType:
                  description: Type of the account. Present when sent on creation.
                  enum:
                    - checking
                    - savings
                  type: string
                country:
                  const: NG
                  description: Always 'NG'.
                  type: string
                currency:
                  const: ngn
                  description: >-
                    Always 'ngn'; Nigerian bank accounts only settle in Nigerian
                    naira.
                  type: string
                entityType:
                  description: Type of the account holder. Present when sent on creation.
                  enum:
                    - business
                    - individual
                  type: string
                institutionId:
                  description: >-
                    ID of the bank, for example `ng-gt-bank`. The [Bank
                    Institution
                    IDs](https://docs.crossmint.com/offramp/guides/bank-institution-ids)
                    page lists every ID.
                  type: string
                rails:
                  description: >-
                    Bank rails available for payouts to this account.
                    `supported` lists rails a currently-available provider
                    advertises for this bank account; Crossmint decides payer
                    eligibility at order time, so an order can still be refused
                    on a rail listed here. `pending` lists rails still being
                    resolved (non-empty only while `status` is 'pending');
                    `status` is 'pending' while asynchronous rail resolution is
                    still running. Absent when no payout provider serves the
                    account, or when `status` is 'rejected'.
                  properties:
                    pending:
                      description: >-
                        Rails still being resolved. Non-empty only while
                        `status` is `pending`.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                    status:
                      description: >-
                        `pending` while asynchronous rail resolution is still
                        running. `complete` when every provider has answered.
                      enum:
                        - complete
                        - pending
                      type: string
                    supported:
                      description: >-
                        Rails that a currently-available payout provider
                        advertises for this account.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                  required:
                    - pending
                    - status
                    - supported
                  type: object
                verificationStatus:
                  description: >-
                    Result of the provider's check on the destination. Absent
                    until a provider answers.
                  enum:
                    - pending-review
                    - rejected
                    - verified
                  type: string
              required:
                - accountSuffix
                - country
                - currency
                - institutionId
              type: object
            createdAt:
              description: ISO 8601 timestamp when this payment method was created.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            label:
              description: >-
                The client's own name for this payment method, when one was
                sent.
              minLength: 1
              type: string
            lastPayoutAt:
              description: >-
                Read-only. ISO 8601 timestamp of the most recent successful
                offramp payout funded by this bank account. Absent if none.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            paymentMethodId:
              description: Unique identifier (UUID v4). Crossmint assigns it on creation.
              minLength: 1
              type: string
            reason:
              anyOf:
                - description: >-
                    Deprecated. Use `statusReason`, which carries the same
                    value.
                  type: string
                - type: 'null'
            status:
              description: >-
                Whether a payout provider serves this destination. 'pending'
                while the readiness checks run, 'active' when a provider
                advertises a rail for it, 'rejected' when it cannot receive
                funds, 'deleted' when it was deleted. This describes the
                destination only, never the payer's eligibility. 'pending' moves
                to 'active', 'rejected' or 'deleted'; 'active' moves to
                'rejected' or 'deleted'; 'rejected' moves only to 'deleted'.
                Branch on this field, never on `statusReason`.
              enum:
                - active
                - deleted
                - pending
                - rejected
              type: string
            statusReason:
              anyOf:
                - description: >-
                    Why the status is 'rejected'. Null on every other status,
                    and on a rejection with no established destination
                    condition. Known values today: destination-not-found,
                    destination-closed, destination-cannot-receive,
                    no-rail-available. New codes can appear at any time, so
                    branch on `status` and treat an unrecognised code as the
                    status alone.
                  type: string
                - type: 'null'
            type:
              const: bank-account-ng
              description: >-
                Payment method type. Selects which sub-object is present:
                `card`, `bankAccount`, or `breB`.
              type: string
            updatedAt:
              description: ISO 8601 timestamp when this payment method was last modified.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
          required:
            - bankAccount
            - createdAt
            - paymentMethodId
            - reason
            - status
            - statusReason
            - type
            - updatedAt
          title: NG bank account
          type: object
        - properties:
            bankAccount:
              description: >-
                Bank account details. Present when `type` is a bank type. Full
                account numbers and IBANs are never included.
              properties:
                accountHolder:
                  description: >-
                    The person or company that owns the bank account. Derived
                    from `billing` when the record predates this field. Its
                    address carries no country: the account's own `country` is
                    the bank's jurisdiction.
                  properties:
                    address:
                      description: >-
                        Address of the account holder, in the country of the
                        account. Present only on types that collect one.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        line1:
                          description: Primary address line (max 200 characters).
                          maxLength: 200
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - line1
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: >-
                        Full legal name of the account holder. Sent to the
                        payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: Phone number of the account holder in E.164 format.
                      minLength: 1
                      type: string
                  required:
                    - name
                  type: object
                accountSuffix:
                  description: >-
                    The last characters of the account number, CLABE or IBAN, at
                    most four.
                  type: string
                accountType:
                  description: Type of the account. Present when sent on creation.
                  enum:
                    - checking
                    - savings
                  type: string
                country:
                  const: PH
                  description: Always 'PH'.
                  type: string
                currency:
                  const: php
                  description: >-
                    Always 'php'; Philippine bank accounts only settle in
                    Philippine pesos.
                  type: string
                entityType:
                  description: Type of the account holder. Present when sent on creation.
                  enum:
                    - business
                    - individual
                  type: string
                institutionId:
                  description: >-
                    ID of the bank, for example `ph-bdo`. The [Bank Institution
                    IDs](https://docs.crossmint.com/offramp/guides/bank-institution-ids)
                    page lists every ID.
                  type: string
                rails:
                  description: >-
                    Bank rails available for payouts to this account.
                    `supported` lists rails a currently-available provider
                    advertises for this bank account; Crossmint decides payer
                    eligibility at order time, so an order can still be refused
                    on a rail listed here. `pending` lists rails still being
                    resolved (non-empty only while `status` is 'pending');
                    `status` is 'pending' while asynchronous rail resolution is
                    still running. Absent when no payout provider serves the
                    account, or when `status` is 'rejected'.
                  properties:
                    pending:
                      description: >-
                        Rails still being resolved. Non-empty only while
                        `status` is `pending`.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                    status:
                      description: >-
                        `pending` while asynchronous rail resolution is still
                        running. `complete` when every provider has answered.
                      enum:
                        - complete
                        - pending
                      type: string
                    supported:
                      description: >-
                        Rails that a currently-available payout provider
                        advertises for this account.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                  required:
                    - pending
                    - status
                    - supported
                  type: object
                verificationStatus:
                  description: >-
                    Result of the provider's check on the destination. Absent
                    until a provider answers.
                  enum:
                    - pending-review
                    - rejected
                    - verified
                  type: string
              required:
                - accountSuffix
                - country
                - currency
                - institutionId
              type: object
            createdAt:
              description: ISO 8601 timestamp when this payment method was created.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            label:
              description: >-
                The client's own name for this payment method, when one was
                sent.
              minLength: 1
              type: string
            lastPayoutAt:
              description: >-
                Read-only. ISO 8601 timestamp of the most recent successful
                offramp payout funded by this bank account. Absent if none.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            paymentMethodId:
              description: Unique identifier (UUID v4). Crossmint assigns it on creation.
              minLength: 1
              type: string
            reason:
              anyOf:
                - description: >-
                    Deprecated. Use `statusReason`, which carries the same
                    value.
                  type: string
                - type: 'null'
            status:
              description: >-
                Whether a payout provider serves this destination. 'pending'
                while the readiness checks run, 'active' when a provider
                advertises a rail for it, 'rejected' when it cannot receive
                funds, 'deleted' when it was deleted. This describes the
                destination only, never the payer's eligibility. 'pending' moves
                to 'active', 'rejected' or 'deleted'; 'active' moves to
                'rejected' or 'deleted'; 'rejected' moves only to 'deleted'.
                Branch on this field, never on `statusReason`.
              enum:
                - active
                - deleted
                - pending
                - rejected
              type: string
            statusReason:
              anyOf:
                - description: >-
                    Why the status is 'rejected'. Null on every other status,
                    and on a rejection with no established destination
                    condition. Known values today: destination-not-found,
                    destination-closed, destination-cannot-receive,
                    no-rail-available. New codes can appear at any time, so
                    branch on `status` and treat an unrecognised code as the
                    status alone.
                  type: string
                - type: 'null'
            type:
              const: bank-account-ph
              description: >-
                Payment method type. Selects which sub-object is present:
                `card`, `bankAccount`, or `breB`.
              type: string
            updatedAt:
              description: ISO 8601 timestamp when this payment method was last modified.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
          required:
            - bankAccount
            - createdAt
            - paymentMethodId
            - reason
            - status
            - statusReason
            - type
            - updatedAt
          title: PH bank account
          type: object
        - properties:
            bankAccount:
              description: >-
                Bank account details. Present when `type` is a bank type. Full
                account numbers and IBANs are never included.
              properties:
                accountHolder:
                  description: >-
                    The person or company that owns the bank account. Derived
                    from `billing` when the record predates this field. Its
                    address carries no country: the account's own `country` is
                    the bank's jurisdiction.
                  properties:
                    address:
                      description: >-
                        Address of the account holder, in the country of the
                        account. Present only on types that collect one.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        line1:
                          description: Primary address line (max 200 characters).
                          maxLength: 200
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - line1
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: >-
                        Full legal name of the account holder. Sent to the
                        payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: Phone number of the account holder in E.164 format.
                      minLength: 1
                      type: string
                  required:
                    - name
                  type: object
                accountSuffix:
                  description: >-
                    The last characters of the account number, CLABE or IBAN, at
                    most four.
                  type: string
                accountType:
                  description: Type of the account. Present when sent on creation.
                  enum:
                    - checking
                    - savings
                  type: string
                country:
                  const: TH
                  description: Always 'TH'.
                  type: string
                currency:
                  const: thb
                  description: Always 'thb'; Thai bank accounts only settle in Thai baht.
                  type: string
                entityType:
                  description: Type of the account holder. Present when sent on creation.
                  enum:
                    - business
                    - individual
                  type: string
                institutionId:
                  description: >-
                    ID of the bank, for example `th-kasikorn-bank`. The [Bank
                    Institution
                    IDs](https://docs.crossmint.com/offramp/guides/bank-institution-ids)
                    page lists every ID.
                  type: string
                rails:
                  description: >-
                    Bank rails available for payouts to this account.
                    `supported` lists rails a currently-available provider
                    advertises for this bank account; Crossmint decides payer
                    eligibility at order time, so an order can still be refused
                    on a rail listed here. `pending` lists rails still being
                    resolved (non-empty only while `status` is 'pending');
                    `status` is 'pending' while asynchronous rail resolution is
                    still running. Absent when no payout provider serves the
                    account, or when `status` is 'rejected'.
                  properties:
                    pending:
                      description: >-
                        Rails still being resolved. Non-empty only while
                        `status` is `pending`.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                    status:
                      description: >-
                        `pending` while asynchronous rail resolution is still
                        running. `complete` when every provider has answered.
                      enum:
                        - complete
                        - pending
                      type: string
                    supported:
                      description: >-
                        Rails that a currently-available payout provider
                        advertises for this account.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                  required:
                    - pending
                    - status
                    - supported
                  type: object
                verificationStatus:
                  description: >-
                    Result of the provider's check on the destination. Absent
                    until a provider answers.
                  enum:
                    - pending-review
                    - rejected
                    - verified
                  type: string
              required:
                - accountSuffix
                - country
                - currency
                - institutionId
              type: object
            createdAt:
              description: ISO 8601 timestamp when this payment method was created.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            label:
              description: >-
                The client's own name for this payment method, when one was
                sent.
              minLength: 1
              type: string
            lastPayoutAt:
              description: >-
                Read-only. ISO 8601 timestamp of the most recent successful
                offramp payout funded by this bank account. Absent if none.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            paymentMethodId:
              description: Unique identifier (UUID v4). Crossmint assigns it on creation.
              minLength: 1
              type: string
            reason:
              anyOf:
                - description: >-
                    Deprecated. Use `statusReason`, which carries the same
                    value.
                  type: string
                - type: 'null'
            status:
              description: >-
                Whether a payout provider serves this destination. 'pending'
                while the readiness checks run, 'active' when a provider
                advertises a rail for it, 'rejected' when it cannot receive
                funds, 'deleted' when it was deleted. This describes the
                destination only, never the payer's eligibility. 'pending' moves
                to 'active', 'rejected' or 'deleted'; 'active' moves to
                'rejected' or 'deleted'; 'rejected' moves only to 'deleted'.
                Branch on this field, never on `statusReason`.
              enum:
                - active
                - deleted
                - pending
                - rejected
              type: string
            statusReason:
              anyOf:
                - description: >-
                    Why the status is 'rejected'. Null on every other status,
                    and on a rejection with no established destination
                    condition. Known values today: destination-not-found,
                    destination-closed, destination-cannot-receive,
                    no-rail-available. New codes can appear at any time, so
                    branch on `status` and treat an unrecognised code as the
                    status alone.
                  type: string
                - type: 'null'
            type:
              const: bank-account-th
              description: >-
                Payment method type. Selects which sub-object is present:
                `card`, `bankAccount`, or `breB`.
              type: string
            updatedAt:
              description: ISO 8601 timestamp when this payment method was last modified.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
          required:
            - bankAccount
            - createdAt
            - paymentMethodId
            - reason
            - status
            - statusReason
            - type
            - updatedAt
          title: TH bank account
          type: object
        - properties:
            bankAccount:
              description: >-
                Bank account details. Present when `type` is a bank type. Full
                account numbers and IBANs are never included.
              properties:
                accountHolder:
                  description: >-
                    The person or company that owns the bank account. Derived
                    from `billing` when the record predates this field. Its
                    address carries no country: the account's own `country` is
                    the bank's jurisdiction.
                  properties:
                    address:
                      description: >-
                        Address of the account holder, in the country of the
                        account. Present only on types that collect one.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        line1:
                          description: Primary address line (max 200 characters).
                          maxLength: 200
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - line1
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: >-
                        Full legal name of the account holder. Sent to the
                        payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: Phone number of the account holder in E.164 format.
                      minLength: 1
                      type: string
                  required:
                    - name
                  type: object
                accountSuffix:
                  description: >-
                    The last characters of the account number, CLABE or IBAN, at
                    most four.
                  type: string
                accountType:
                  description: Type of the account. Present when sent on creation.
                  enum:
                    - checking
                    - savings
                  type: string
                country:
                  const: VN
                  description: Always 'VN'.
                  type: string
                currency:
                  const: vnd
                  description: >-
                    Always 'vnd'; Vietnamese bank accounts only settle in
                    Vietnamese dong.
                  type: string
                entityType:
                  description: Type of the account holder. Present when sent on creation.
                  enum:
                    - business
                    - individual
                  type: string
                institutionId:
                  description: >-
                    ID of the bank, for example `vn-acb`. The [Bank Institution
                    IDs](https://docs.crossmint.com/offramp/guides/bank-institution-ids)
                    page lists every ID.
                  type: string
                rails:
                  description: >-
                    Bank rails available for payouts to this account.
                    `supported` lists rails a currently-available provider
                    advertises for this bank account; Crossmint decides payer
                    eligibility at order time, so an order can still be refused
                    on a rail listed here. `pending` lists rails still being
                    resolved (non-empty only while `status` is 'pending');
                    `status` is 'pending' while asynchronous rail resolution is
                    still running. Absent when no payout provider serves the
                    account, or when `status` is 'rejected'.
                  properties:
                    pending:
                      description: >-
                        Rails still being resolved. Non-empty only while
                        `status` is `pending`.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                    status:
                      description: >-
                        `pending` while asynchronous rail resolution is still
                        running. `complete` when every provider has answered.
                      enum:
                        - complete
                        - pending
                      type: string
                    supported:
                      description: >-
                        Rails that a currently-available payout provider
                        advertises for this account.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                  required:
                    - pending
                    - status
                    - supported
                  type: object
                verificationStatus:
                  description: >-
                    Result of the provider's check on the destination. Absent
                    until a provider answers.
                  enum:
                    - pending-review
                    - rejected
                    - verified
                  type: string
              required:
                - accountSuffix
                - country
                - currency
                - institutionId
              type: object
            createdAt:
              description: ISO 8601 timestamp when this payment method was created.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            label:
              description: >-
                The client's own name for this payment method, when one was
                sent.
              minLength: 1
              type: string
            lastPayoutAt:
              description: >-
                Read-only. ISO 8601 timestamp of the most recent successful
                offramp payout funded by this bank account. Absent if none.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            paymentMethodId:
              description: Unique identifier (UUID v4). Crossmint assigns it on creation.
              minLength: 1
              type: string
            reason:
              anyOf:
                - description: >-
                    Deprecated. Use `statusReason`, which carries the same
                    value.
                  type: string
                - type: 'null'
            status:
              description: >-
                Whether a payout provider serves this destination. 'pending'
                while the readiness checks run, 'active' when a provider
                advertises a rail for it, 'rejected' when it cannot receive
                funds, 'deleted' when it was deleted. This describes the
                destination only, never the payer's eligibility. 'pending' moves
                to 'active', 'rejected' or 'deleted'; 'active' moves to
                'rejected' or 'deleted'; 'rejected' moves only to 'deleted'.
                Branch on this field, never on `statusReason`.
              enum:
                - active
                - deleted
                - pending
                - rejected
              type: string
            statusReason:
              anyOf:
                - description: >-
                    Why the status is 'rejected'. Null on every other status,
                    and on a rejection with no established destination
                    condition. Known values today: destination-not-found,
                    destination-closed, destination-cannot-receive,
                    no-rail-available. New codes can appear at any time, so
                    branch on `status` and treat an unrecognised code as the
                    status alone.
                  type: string
                - type: 'null'
            type:
              const: bank-account-vn
              description: >-
                Payment method type. Selects which sub-object is present:
                `card`, `bankAccount`, or `breB`.
              type: string
            updatedAt:
              description: ISO 8601 timestamp when this payment method was last modified.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
          required:
            - bankAccount
            - createdAt
            - paymentMethodId
            - reason
            - status
            - statusReason
            - type
            - updatedAt
          title: VN bank account
          type: object
        - properties:
            bankAccount:
              description: >-
                Bank account details. Present when `type` is a bank type. Full
                account numbers and IBANs are never included.
              properties:
                accountHolder:
                  description: >-
                    The person or company that owns the bank account. Derived
                    from `billing` when the record predates this field. Its
                    address carries no country: the account's own `country` is
                    the bank's jurisdiction.
                  properties:
                    address:
                      description: >-
                        Address of the account holder, in the country of the
                        account. Present only on types that collect one.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        line1:
                          description: Primary address line (max 200 characters).
                          maxLength: 200
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - line1
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: >-
                        Full legal name of the account holder. Sent to the
                        payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: Phone number of the account holder in E.164 format.
                      minLength: 1
                      type: string
                  required:
                    - name
                  type: object
                accountSuffix:
                  description: >-
                    The last characters of the account number, CLABE or IBAN, at
                    most four.
                  type: string
                accountType:
                  description: Type of the account.
                  enum:
                    - checking
                    - savings
                  type: string
                bankAddress:
                  anyOf:
                    - description: >-
                        Bank's mailing address. `null` when no branch address is
                        on file.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        country:
                          description: ISO 3166-1 alpha-2 country code.
                          maxLength: 2
                          minLength: 2
                          type: string
                        line1:
                          description: Primary address line (max 200 characters).
                          maxLength: 200
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - country
                        - line1
                        - postalCode
                      type: object
                    - type: 'null'
                bankName:
                  anyOf:
                    - description: >-
                        Name of the bank, or `null` if the bank could not be
                        identified.
                      type: string
                    - type: 'null'
                country:
                  description: ISO 3166-1 alpha-2 country code of the account.
                  enum:
                    - AD
                    - AE
                    - AF
                    - AG
                    - AI
                    - AL
                    - AM
                    - AO
                    - AQ
                    - AR
                    - AS
                    - AT
                    - AU
                    - AW
                    - AX
                    - AZ
                    - BA
                    - BB
                    - BD
                    - BE
                    - BF
                    - BG
                    - BH
                    - BI
                    - BJ
                    - BL
                    - BM
                    - BN
                    - BO
                    - BQ
                    - BR
                    - BS
                    - BT
                    - BV
                    - BW
                    - BY
                    - BZ
                    - CA
                    - CC
                    - CD
                    - CF
                    - CG
                    - CH
                    - CI
                    - CK
                    - CL
                    - CM
                    - CN
                    - CO
                    - CR
                    - CU
                    - CV
                    - CW
                    - CX
                    - CY
                    - CZ
                    - DE
                    - DJ
                    - DK
                    - DM
                    - DO
                    - DZ
                    - EC
                    - EE
                    - EG
                    - EH
                    - ER
                    - ES
                    - ET
                    - FI
                    - FJ
                    - FK
                    - FM
                    - FO
                    - FR
                    - GA
                    - GB
                    - GD
                    - GE
                    - GF
                    - GG
                    - GH
                    - GI
                    - GL
                    - GM
                    - GN
                    - GP
                    - GQ
                    - GR
                    - GS
                    - GT
                    - GU
                    - GW
                    - GY
                    - HK
                    - HM
                    - HN
                    - HR
                    - HT
                    - HU
                    - ID
                    - IE
                    - IL
                    - IM
                    - IN
                    - IO
                    - IQ
                    - IR
                    - IS
                    - IT
                    - JE
                    - JM
                    - JO
                    - JP
                    - KE
                    - KG
                    - KH
                    - KI
                    - KM
                    - KN
                    - KP
                    - KR
                    - KW
                    - KY
                    - KZ
                    - LA
                    - LB
                    - LC
                    - LI
                    - LK
                    - LR
                    - LS
                    - LT
                    - LU
                    - LV
                    - LY
                    - MA
                    - MC
                    - MD
                    - ME
                    - MF
                    - MG
                    - MH
                    - MK
                    - ML
                    - MM
                    - MN
                    - MO
                    - MP
                    - MQ
                    - MR
                    - MS
                    - MT
                    - MU
                    - MV
                    - MW
                    - MX
                    - MY
                    - MZ
                    - NA
                    - NC
                    - NE
                    - NF
                    - NG
                    - NI
                    - NL
                    - 'NO'
                    - NP
                    - NR
                    - NU
                    - NZ
                    - OM
                    - PA
                    - PE
                    - PF
                    - PG
                    - PH
                    - PK
                    - PL
                    - PM
                    - PN
                    - PR
                    - PS
                    - PT
                    - PW
                    - PY
                    - QA
                    - RE
                    - RO
                    - RS
                    - RU
                    - RW
                    - SA
                    - SB
                    - SC
                    - SD
                    - SE
                    - SG
                    - SH
                    - SI
                    - SJ
                    - SK
                    - SL
                    - SM
                    - SN
                    - SO
                    - SR
                    - SS
                    - ST
                    - SV
                    - SX
                    - SY
                    - SZ
                    - TC
                    - TD
                    - TF
                    - TG
                    - TH
                    - TJ
                    - TK
                    - TL
                    - TM
                    - TN
                    - TO
                    - TR
                    - TT
                    - TV
                    - TW
                    - TZ
                    - UA
                    - UG
                    - UM
                    - US
                    - UY
                    - UZ
                    - VA
                    - VC
                    - VE
                    - VG
                    - VI
                    - VN
                    - VU
                    - WF
                    - WS
                    - XK
                    - YE
                    - YT
                    - ZA
                    - ZM
                    - ZW
                  type: string
                currency:
                  const: usd
                  description: Always 'usd'; a US bank account only settles in US dollars.
                  type: string
                entityType:
                  description: Type of the account holder. Present when sent on creation.
                  enum:
                    - business
                    - individual
                  type: string
                rails:
                  description: >-
                    Bank rails available for payouts to this account.
                    `supported` lists rails a currently-available provider
                    advertises for this bank account; Crossmint decides payer
                    eligibility at order time, so an order can still be refused
                    on a rail listed here. `pending` lists rails still being
                    resolved (non-empty only while `status` is 'pending');
                    `status` is 'pending' while asynchronous rail resolution is
                    still running. Absent when no payout provider serves the
                    account, or when `status` is 'rejected'.
                  properties:
                    pending:
                      description: >-
                        Rails still being resolved. Non-empty only while
                        `status` is `pending`.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                    status:
                      description: >-
                        `pending` while asynchronous rail resolution is still
                        running. `complete` when every provider has answered.
                      enum:
                        - complete
                        - pending
                      type: string
                    supported:
                      description: >-
                        Rails that a currently-available payout provider
                        advertises for this account.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                  required:
                    - pending
                    - status
                    - supported
                  type: object
                routingNumber:
                  description: ABA routing number.
                  type: string
                verificationStatus:
                  description: >-
                    Result of the provider's check on the destination. Absent
                    until a provider answers.
                  enum:
                    - pending-review
                    - rejected
                    - verified
                  type: string
              required:
                - accountSuffix
                - accountType
                - bankAddress
                - bankName
                - country
                - currency
                - routingNumber
              type: object
            createdAt:
              description: ISO 8601 timestamp when this payment method was created.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            label:
              description: >-
                The client's own name for this payment method, when one was
                sent.
              minLength: 1
              type: string
            lastPayoutAt:
              description: >-
                Read-only. ISO 8601 timestamp of the most recent successful
                offramp payout funded by this bank account. Absent if none.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            paymentMethodId:
              description: Unique identifier (UUID v4). Crossmint assigns it on creation.
              minLength: 1
              type: string
            reason:
              anyOf:
                - description: >-
                    Deprecated. Use `statusReason`, which carries the same
                    value.
                  type: string
                - type: 'null'
            status:
              description: >-
                Whether a payout provider serves this destination. 'pending'
                while the readiness checks run, 'active' when a provider
                advertises a rail for it, 'rejected' when it cannot receive
                funds, 'deleted' when it was deleted. This describes the
                destination only, never the payer's eligibility. 'pending' moves
                to 'active', 'rejected' or 'deleted'; 'active' moves to
                'rejected' or 'deleted'; 'rejected' moves only to 'deleted'.
                Branch on this field, never on `statusReason`.
              enum:
                - active
                - deleted
                - pending
                - rejected
              type: string
            statusReason:
              anyOf:
                - description: >-
                    Why the status is 'rejected'. Null on every other status,
                    and on a rejection with no established destination
                    condition. Known values today: destination-not-found,
                    destination-closed, destination-cannot-receive,
                    no-rail-available. New codes can appear at any time, so
                    branch on `status` and treat an unrecognised code as the
                    status alone.
                  type: string
                - type: 'null'
            type:
              const: bank-account-us
              description: >-
                Payment method type. Selects which sub-object is present:
                `card`, `bankAccount`, or `breB`.
              type: string
            updatedAt:
              description: ISO 8601 timestamp when this payment method was last modified.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
          required:
            - bankAccount
            - createdAt
            - paymentMethodId
            - reason
            - status
            - statusReason
            - type
            - updatedAt
          title: US bank account
          type: object
        - properties:
            bankAccount:
              description: >-
                Bank account details. Present when `type` is a bank type. Full
                account numbers and IBANs are never included.
              properties:
                accountHolder:
                  description: >-
                    The person or company that owns the bank account. Derived
                    from `billing` when the record predates this field. Its
                    address carries no country: the account's own `country` is
                    the bank's jurisdiction.
                  properties:
                    address:
                      description: >-
                        Address of the account holder, in the country of the
                        account. Present only on types that collect one.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        line1:
                          description: Primary address line (max 200 characters).
                          maxLength: 200
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - line1
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: >-
                        Full legal name of the account holder. Sent to the
                        payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: Phone number of the account holder in E.164 format.
                      minLength: 1
                      type: string
                  required:
                    - name
                  type: object
                accountSuffix:
                  description: >-
                    The last characters of the account number, CLABE or IBAN, at
                    most four.
                  type: string
                bankName:
                  anyOf:
                    - description: >-
                        Name of the bank, or `null` if the bank could not be
                        identified.
                      type: string
                    - type: 'null'
                bic:
                  description: BIC/SWIFT code. Present when sent on creation.
                  type: string
                country:
                  description: >-
                    Bank country, derived from the IBAN prefix. EPC SEPA scheme
                    members only.
                  enum:
                    - AD
                    - AL
                    - AT
                    - BE
                    - BG
                    - CH
                    - CY
                    - CZ
                    - DE
                    - DK
                    - EE
                    - ES
                    - FI
                    - FR
                    - GB
                    - GI
                    - GR
                    - HR
                    - HU
                    - IE
                    - IS
                    - IT
                    - LI
                    - LT
                    - LU
                    - LV
                    - MC
                    - MT
                    - NL
                    - 'NO'
                    - PL
                    - PT
                    - RO
                    - SE
                    - SI
                    - SK
                    - SM
                    - VA
                  type: string
                currency:
                  const: eur
                  description: Always 'eur'; SEPA only transacts in Euro.
                  type: string
                entityType:
                  description: Type of the account holder. Present when sent on creation.
                  enum:
                    - business
                    - individual
                  type: string
                rails:
                  description: >-
                    Bank rails available for payouts to this account.
                    `supported` lists rails a currently-available provider
                    advertises for this bank account; Crossmint decides payer
                    eligibility at order time, so an order can still be refused
                    on a rail listed here. `pending` lists rails still being
                    resolved (non-empty only while `status` is 'pending');
                    `status` is 'pending' while asynchronous rail resolution is
                    still running. Absent when no payout provider serves the
                    account, or when `status` is 'rejected'.
                  properties:
                    pending:
                      description: >-
                        Rails still being resolved. Non-empty only while
                        `status` is `pending`.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                    status:
                      description: >-
                        `pending` while asynchronous rail resolution is still
                        running. `complete` when every provider has answered.
                      enum:
                        - complete
                        - pending
                      type: string
                    supported:
                      description: >-
                        Rails that a currently-available payout provider
                        advertises for this account.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                  required:
                    - pending
                    - status
                    - supported
                  type: object
                verificationStatus:
                  description: >-
                    Result of the provider's check on the destination. Absent
                    until a provider answers.
                  enum:
                    - pending-review
                    - rejected
                    - verified
                  type: string
              required:
                - accountSuffix
                - bankName
                - country
                - currency
              type: object
            createdAt:
              description: ISO 8601 timestamp when this payment method was created.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            default:
              description: >-
                Whether this is the default payment method of the user. Only one
                per user can be the default. A new default unsets the previous
                one.
              type: boolean
            display:
              description: Display data for a payment method selector.
              properties:
                imageUrl:
                  description: URL of the brand logo.
                  format: uri
                  type: string
                label:
                  description: Label to show in a payment method selector.
                  type: string
              type: object
            displayName:
              description: >-
                Human-readable label derived from the account details, e.g.
                "Visa ••1111" or "Deutsche Bank ••6789".
              minLength: 1
              type: string
            label:
              description: >-
                The client's own name for this payment method, when one was
                sent.
              minLength: 1
              type: string
            lastPayoutAt:
              description: >-
                Read-only. ISO 8601 timestamp of the most recent successful
                offramp payout funded by this bank account. Absent if none.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            paymentMethodId:
              description: Unique identifier (UUID v4). Crossmint assigns it on creation.
              minLength: 1
              type: string
            reason:
              anyOf:
                - description: >-
                    Deprecated. Use `statusReason`, which carries the same
                    value.
                  type: string
                - type: 'null'
            status:
              description: >-
                Whether a payout provider serves this destination. 'pending'
                while the readiness checks run, 'active' when a provider
                advertises a rail for it, 'rejected' when it cannot receive
                funds, 'deleted' when it was deleted. This describes the
                destination only, never the payer's eligibility. 'pending' moves
                to 'active', 'rejected' or 'deleted'; 'active' moves to
                'rejected' or 'deleted'; 'rejected' moves only to 'deleted'.
                Branch on this field, never on `statusReason`.
              enum:
                - active
                - deleted
                - pending
                - rejected
              type: string
            statusReason:
              anyOf:
                - description: >-
                    Why the status is 'rejected'. Null on every other status,
                    and on a rejection with no established destination
                    condition. Known values today: destination-not-found,
                    destination-closed, destination-cannot-receive,
                    no-rail-available. New codes can appear at any time, so
                    branch on `status` and treat an unrecognised code as the
                    status alone.
                  type: string
                - type: 'null'
            type:
              const: bank-account-sepa-iban
              description: >-
                Payment method type. Selects which sub-object is present:
                `card`, `bankAccount`, or `breB`.
              type: string
            updatedAt:
              description: ISO 8601 timestamp when this payment method was last modified.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
          required:
            - bankAccount
            - createdAt
            - displayName
            - paymentMethodId
            - reason
            - status
            - statusReason
            - type
            - updatedAt
          title: SEPA IBAN
          type: object
        - properties:
            breB:
              additionalProperties: false
              description: >-
                Bre-B key details. Present when `type` is `bre-b`. The key
                itself is never returned.
              properties:
                accountHolder:
                  description: >-
                    The person or company that owns the bank account. Derived
                    from `billing` when the record predates this field. Its
                    address carries no country: the account's own `country` is
                    the bank's jurisdiction.
                  properties:
                    address:
                      description: >-
                        Address of the account holder, in the country of the
                        account. Present only on types that collect one.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        line1:
                          description: Primary address line (max 200 characters).
                          maxLength: 200
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - line1
                      type: object
                    email:
                      description: Email address of the account holder.
                      format: email
                      pattern: >-
                        ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                      type: string
                    name:
                      description: >-
                        Full legal name of the account holder. Sent to the
                        payout provider.
                      minLength: 1
                      type: string
                    phoneNumber:
                      description: Phone number of the account holder in E.164 format.
                      minLength: 1
                      type: string
                  required:
                    - name
                  type: object
                accountSuffix:
                  description: >-
                    Masked form of the key. An e-mail key is masked in place;
                    every other key shows its last four characters. The key
                    itself is never returned.
                  type: string
                country:
                  description: Always `CO`.
                  enum:
                    - AD
                    - AE
                    - AF
                    - AG
                    - AI
                    - AL
                    - AM
                    - AO
                    - AQ
                    - AR
                    - AS
                    - AT
                    - AU
                    - AW
                    - AX
                    - AZ
                    - BA
                    - BB
                    - BD
                    - BE
                    - BF
                    - BG
                    - BH
                    - BI
                    - BJ
                    - BL
                    - BM
                    - BN
                    - BO
                    - BQ
                    - BR
                    - BS
                    - BT
                    - BV
                    - BW
                    - BY
                    - BZ
                    - CA
                    - CC
                    - CD
                    - CF
                    - CG
                    - CH
                    - CI
                    - CK
                    - CL
                    - CM
                    - CN
                    - CO
                    - CR
                    - CU
                    - CV
                    - CW
                    - CX
                    - CY
                    - CZ
                    - DE
                    - DJ
                    - DK
                    - DM
                    - DO
                    - DZ
                    - EC
                    - EE
                    - EG
                    - EH
                    - ER
                    - ES
                    - ET
                    - FI
                    - FJ
                    - FK
                    - FM
                    - FO
                    - FR
                    - GA
                    - GB
                    - GD
                    - GE
                    - GF
                    - GG
                    - GH
                    - GI
                    - GL
                    - GM
                    - GN
                    - GP
                    - GQ
                    - GR
                    - GS
                    - GT
                    - GU
                    - GW
                    - GY
                    - HK
                    - HM
                    - HN
                    - HR
                    - HT
                    - HU
                    - ID
                    - IE
                    - IL
                    - IM
                    - IN
                    - IO
                    - IQ
                    - IR
                    - IS
                    - IT
                    - JE
                    - JM
                    - JO
                    - JP
                    - KE
                    - KG
                    - KH
                    - KI
                    - KM
                    - KN
                    - KP
                    - KR
                    - KW
                    - KY
                    - KZ
                    - LA
                    - LB
                    - LC
                    - LI
                    - LK
                    - LR
                    - LS
                    - LT
                    - LU
                    - LV
                    - LY
                    - MA
                    - MC
                    - MD
                    - ME
                    - MF
                    - MG
                    - MH
                    - MK
                    - ML
                    - MM
                    - MN
                    - MO
                    - MP
                    - MQ
                    - MR
                    - MS
                    - MT
                    - MU
                    - MV
                    - MW
                    - MX
                    - MY
                    - MZ
                    - NA
                    - NC
                    - NE
                    - NF
                    - NG
                    - NI
                    - NL
                    - 'NO'
                    - NP
                    - NR
                    - NU
                    - NZ
                    - OM
                    - PA
                    - PE
                    - PF
                    - PG
                    - PH
                    - PK
                    - PL
                    - PM
                    - PN
                    - PR
                    - PS
                    - PT
                    - PW
                    - PY
                    - QA
                    - RE
                    - RO
                    - RS
                    - RU
                    - RW
                    - SA
                    - SB
                    - SC
                    - SD
                    - SE
                    - SG
                    - SH
                    - SI
                    - SJ
                    - SK
                    - SL
                    - SM
                    - SN
                    - SO
                    - SR
                    - SS
                    - ST
                    - SV
                    - SX
                    - SY
                    - SZ
                    - TC
                    - TD
                    - TF
                    - TG
                    - TH
                    - TJ
                    - TK
                    - TL
                    - TM
                    - TN
                    - TO
                    - TR
                    - TT
                    - TV
                    - TW
                    - TZ
                    - UA
                    - UG
                    - UM
                    - US
                    - UY
                    - UZ
                    - VA
                    - VC
                    - VE
                    - VG
                    - VI
                    - VN
                    - VU
                    - WF
                    - WS
                    - XK
                    - YE
                    - YT
                    - ZA
                    - ZM
                    - ZW
                  type: string
                currency:
                  const: cop
                  description: Always 'cop'; Bre-B only settles in Colombian pesos.
                  type: string
                entityType:
                  description: Type of the account holder. Present when sent on creation.
                  enum:
                    - business
                    - individual
                  type: string
                institutionName:
                  description: >-
                    Display name of the institution holding the key. Absent
                    until a name source answers.
                  type: string
                keyType:
                  description: >-
                    Derived from the key's format, never asserted by the client.
                    Best effort.
                  enum:
                    - alphanumeric
                    - commerce
                    - email
                    - identification
                    - phone
                  type: string
                rails:
                  description: >-
                    Rails a currently-available provider advertises for this
                    key.
                  properties:
                    supported:
                      description: >-
                        Rails that a currently-available payout provider
                        advertises for this account.
                      items:
                        enum:
                          - ach-credit
                          - ach-same-day
                          - ach-us
                          - bi-fast
                          - bre-b
                          - citad
                          - fednow
                          - instapay
                          - napas-247
                          - nip
                          - pesonet
                          - promptpay
                          - rtp
                          - sepa
                          - sepa-instant
                          - spei
                          - wire
                        type: string
                      type: array
                  required:
                    - supported
                  type: object
                verificationStatus:
                  description: >-
                    Result of the provider's check on the destination. Absent
                    until a provider answers.
                  enum:
                    - pending-review
                    - rejected
                    - verified
                  type: string
              required:
                - accountSuffix
                - country
                - currency
              type: object
            createdAt:
              description: ISO 8601 timestamp when this payment method was created.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            label:
              description: >-
                The client's own name for this payment method, when one was
                sent.
              minLength: 1
              type: string
            lastPayoutAt:
              description: >-
                Read-only. ISO 8601 timestamp of the most recent successful
                offramp payout funded by this bank account. Absent if none.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            paymentMethodId:
              description: Unique identifier (UUID v4). Crossmint assigns it on creation.
              minLength: 1
              type: string
            reason:
              anyOf:
                - description: >-
                    Deprecated. Use `statusReason`, which carries the same
                    value.
                  type: string
                - type: 'null'
            status:
              description: >-
                Whether a payout provider serves this destination. 'pending'
                while the readiness checks run, 'active' when a provider
                advertises a rail for it, 'rejected' when it cannot receive
                funds, 'deleted' when it was deleted. This describes the
                destination only, never the payer's eligibility. 'pending' moves
                to 'active', 'rejected' or 'deleted'; 'active' moves to
                'rejected' or 'deleted'; 'rejected' moves only to 'deleted'.
                Branch on this field, never on `statusReason`.
              enum:
                - active
                - deleted
                - pending
                - rejected
              type: string
            statusReason:
              anyOf:
                - description: >-
                    Why the status is 'rejected'. Null on every other status,
                    and on a rejection with no established destination
                    condition. Known values today: destination-not-found,
                    destination-closed, destination-cannot-receive,
                    no-rail-available. New codes can appear at any time, so
                    branch on `status` and treat an unrecognised code as the
                    status alone.
                  type: string
                - type: 'null'
            type:
              const: bre-b
              description: >-
                Payment method type. A Bre-B key returns its details under
                `breB`, never `bankAccount`.
              type: string
            updatedAt:
              description: ISO 8601 timestamp when this payment method was last modified.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
          required:
            - breB
            - createdAt
            - paymentMethodId
            - reason
            - status
            - statusReason
            - type
            - updatedAt
          title: CO Bre-B key
          type: object
        - properties:
            card:
              description: Card details. Present when `type` is `card`.
              properties:
                billing:
                  description: Billing details of the cardholder, as sent on creation.
                  properties:
                    address:
                      description: >-
                        Billing address. When you send it, all fields except
                        `line2` are required.
                      properties:
                        city:
                          description: City (max 50 characters).
                          maxLength: 50
                          minLength: 1
                          type: string
                        country:
                          description: ISO 3166-1 alpha-2 country code.
                          maxLength: 2
                          minLength: 2
                          type: string
                        line1:
                          description: Primary address line (max 200 characters).
                          maxLength: 200
                          minLength: 1
                          type: string
                        line2:
                          description: >-
                            Secondary address line, such as an apartment, suite,
                            or unit (max 60 characters).
                          maxLength: 60
                          type: string
                        postalCode:
                          description: Postal or ZIP code (max 20 characters).
                          maxLength: 20
                          minLength: 1
                          type: string
                        stateOrRegion:
                          description: State, province, or region (max 50 characters).
                          maxLength: 50
                          type: string
                      required:
                        - city
                        - country
                        - line1
                        - postalCode
                      type: object
                    name:
                      description: Full name of the cardholder or account holder.
                      minLength: 1
                      type: string
                    phone:
                      description: >-
                        Phone number in E.164 format, for example
                        `+12125551234`.
                      minLength: 1
                      type: string
                  required:
                    - name
                  type: object
                bin:
                  description: >-
                    Bank Identification Number (first 6-8 digits). Present when
                    the card network provides it.
                  type: string
                brand:
                  description: Card network brand, detected from the card number.
                  enum:
                    - amex
                    - diners-club
                    - discover
                    - jcb
                    - mastercard
                    - unionpay
                    - visa
                  type: string
                country:
                  description: >-
                    ISO 3166-1 alpha-2 code of the country that issued the card.
                    Present when the card network provides it.
                  type: string
                expiration:
                  description: Card expiration date.
                  properties:
                    month:
                      description: 2-digit expiration month, zero-padded (`01`-`12`).
                      type: string
                    year:
                      description: 4-digit expiration year.
                      type: string
                  required:
                    - month
                    - year
                  type: object
                fundingType:
                  description: >-
                    Card funding type, detected from the BIN. Present when the
                    issuer provides it.
                  enum:
                    - credit
                    - debit
                    - prepaid
                    - unknown
                  type: string
                last4:
                  description: Last 4 digits of the card PAN.
                  type: string
              required:
                - billing
                - brand
                - expiration
                - last4
              type: object
            createdAt:
              description: ISO 8601 timestamp when this payment method was created.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
            default:
              description: >-
                Whether this is the default payment method of the user. Only one
                per user can be the default. A new default unsets the previous
                one.
              type: boolean
            display:
              description: Display data for a payment method selector.
              properties:
                imageUrl:
                  description: URL of the brand logo.
                  format: uri
                  type: string
                label:
                  description: Label to show in a payment method selector.
                  type: string
              type: object
            displayName:
              description: >-
                Human-readable label derived from the account details, e.g.
                "Visa ••1111" or "Deutsche Bank ••6789".
              minLength: 1
              type: string
            paymentMethodId:
              description: Unique identifier (UUID v4). Crossmint assigns it on creation.
              minLength: 1
              type: string
            type:
              const: card
              description: >-
                Payment method type. Selects which sub-object is present:
                `card`, `bankAccount`, or `breB`.
              type: string
            updatedAt:
              description: ISO 8601 timestamp when this payment method was last modified.
              example: '2024-01-15T10:30:00.000Z'
              format: date-time
              type: string
          required:
            - card
            - createdAt
            - displayName
            - paymentMethodId
            - type
            - updatedAt
          title: Card
          type: object
    ApiErrorDto:
      properties:
        code:
          description: Machine-readable error code for programmatic handling
          type: string
        error:
          example: true
          type: boolean
        message:
          description: Human-readable error message describing what went wrong
          type: string
        parameters:
          additionalProperties:
            oneOf:
              - items:
                  type: string
                type: array
              - type: string
          description: >-
            Values that explain a coded error, such as the limit that was
            exceeded, the amount that remains, or the list of supported
            currencies.
          type: object
      required:
        - error
        - message
      type: object
  securitySchemes:
    apiKey:
      description: API key required for authentication
      in: header
      name: X-API-KEY
      type: apiKey
    userJwt:
      bearerFormat: JWT
      description: >-
        The end user's JWT, sent as `Authorization: Bearer <JWT>` together with
        a client-side API key. Validated against the project's external JWT
        configuration.
      scheme: bearer
      type: http

````