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

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

<Warning>
  **This endpoint is gated behind Payment Card Industry Data Security Standard (PCI DSS) compliance.** Because it accepts raw card numbers, Card Verification Codes (CVCs), and bank account details, you may only use it if your organization is PCI DSS compliant and has been explicitly enabled by Crossmint. You must provide evidence of your compliance (e.g. your Attestation of Compliance) and <a href="https://www.crossmint.com/contact/sales" target="_blank">reach out to Crossmint</a> to have it turned on — it is disabled by default.

  **If you are not PCI compliant, do not use this endpoint.** Instead, use the client-side [Save a Card](/agents/payment-methods/cards/save-card) flow, which renders Crossmint's `CrossmintPaymentMethodManagement` component. Card data is collected directly by Crossmint in the browser and never touches your servers, so **you do not need to be PCI compliant** to use it.
</Warning>

<Warning>
  This endpoint requires a JWT from an **external auth provider** (Auth0, Firebase, Stytch, etc.) or a **custom JWT** backed by a JWKS endpoint. Crossmint Auth is not supported.
</Warning>

<Note>
  This endpoint accepts raw card data and bank account details. Requests must be sent to the **vault host** (`vault.staging.crossmint.com` or `vault.crossmint.com`), which tokenizes sensitive fields before forwarding to the API. Raw card numbers, CVCs, and bank account numbers never reach `api.crossmint.com` directly.
</Note>


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

````