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

# Quote a claim

> Lock a quote paying a claimable payout to the recipient's account. Call it only after the recipient has proved she holds the payout's phone number or email. Grid validates `accountInfo` as `POST /customers/external-accounts` does, screens the recipient, and saves her account under the sender's customer, where an agent can pay it again. Grid then quotes the payout's full `amount` from the sender's wallet to that account. The payout stays `AWAITING_CLAIM` until the quote is confirmed; calling again replaces the quote.




## OpenAPI

````yaml /openapi.yaml post /claimable-payouts/claim/quote
openapi: 3.1.0
info:
  title: Grid API
  description: >
    API for managing global payments on the open Money Grid. Built by
    Lightspark. See the full documentation at https://docs.lightspark.com/.
  version: '2025-10-13'
  contact:
    name: Lightspark Support
    email: support@lightspark.com
  license:
    name: Proprietary
    url: https://lightspark.com/terms
servers:
  - url: https://api.lightspark.com/grid/2025-10-13
    description: Production server
security:
  - BasicAuth: []
  - AgentAuth: []
tags:
  - name: Platform Configuration
    description: >-
      Platform configuration endpoints for managing global settings. You can
      also configure these settings in the Grid dashboard.
  - name: Customers
    description: >-
      Customer management endpoints for creating and updating customer
      information
  - name: Contact Verification
    description: >-
      Endpoints for verifying a customer's email and phone via one-time codes.
      Required only for customers whose payment provider mandates contact
      verification (e.g. EU customers); other providers return 409.
  - name: Strong Customer Authentication
    description: >-
      Endpoints for authorizing money-movement operations that require Strong
      Customer Authentication. Relevant only for customers in a region where SCA
      is required (e.g. EU); customers outside SCA-regulated regions never see
      an SCA challenge and these endpoints return 409.
  - name: KYC/KYB Verifications
    description: >-
      Endpoints for Know Your Customer (KYC) and Know Your Business (KYB)
      verification, including managing beneficial owners and triggering
      verification for customers.
  - name: Documents
    description: >-
      Endpoints for uploading and managing verification documents for customers
      and beneficial owners. Supports KYC and KYB document requirements.
  - name: Internal Accounts
    description: >-
      Internal account management endpoints for creating and managing internal
      accounts
  - name: Periodic Statements
    description: >
      Build, deliver, and evidence a Regulation E periodic statement for a
      customer's internal account. A statement period is a calendar month in US
      Central time (`America/Chicago`).


      A statement is issued for each customer's own USD internal account and
      covers their whole balance. Money received through a rule-based account
      appears on its owner's statement; rule-based, bulk settlement and
      platform-owned accounts have no statement of their own.


      **1. The statement — `GET
      /internal-accounts/{id}/balance-changes?startDate=&endDate=`**


      One row per change to the balance, in the order the money moved, with the
      opening and closing balances for the window in the same response. Page
      until `hasMore` is false, then assert this identity across every page
      before you render anything:


      ```

      openingBalance + Σ(data[].amount) == closingBalance

      ```


      If it does not hold, do not send the statement; contact support instead.
      `startDate` and `endDate` bound a half-open window `[startDate, endDate)`:
      for a monthly statement, pass the first instant of the month and the first
      instant of the following month, both in US Central time (for August 2026,
      `2026-08-01T00:00:00-05:00` and `2026-09-01T00:00:00-05:00`). Grid records
      a statement as fetched only for a window that is exactly one such month.


      **2. The receipt — `POST /internal-accounts/{id}/confirm-statement`**


      Once a month, after you have pulled and issued a period's statement, send
      a receipt with the `statementMonth` it covers. Grid stores it as the
      delivery record for that account and period. Sending it again is harmless:
      the first receipt's time is kept.


      **Timing**


      A window whose card settlement has not closed is refused with `409
      NOT_YET_AVAILABLE` rather than answered with figures that could still
      change; retry once it has settled.
  - name: External Accounts
    description: >-
      External account management endpoints for creating and managing external
      bank accounts
  - name: Same-Currency Transfers
    description: >-
      Deprecated endpoints for transferring funds between internal and external
      accounts with the same currency. Use the quote endpoints under
      Cross-Currency Transfers instead, which now serve same-currency transfers
      as well.
  - name: Cross-Currency Transfers
    description: >-
      Endpoints for creating and confirming quotes for transfers, both
      same-currency and cross-currency
  - name: Transactions
    description: Endpoints for retrieving transaction information
  - name: Webhooks
    description: Webhook endpoints and configuration for receiving notifications
  - name: Invitations
    description: Endpoints for creating, claiming and managing UMA invitations
  - name: Sandbox
    description: Endpoints to trigger test cases in sandbox
  - name: API Tokens
    description: Endpoints to programmatically manage API tokens
  - name: Exchange Rates
    description: >-
      Endpoints for retrieving cached foreign exchange rates. Rates are cached
      for approximately 5 minutes and include platform-specific fees.
  - name: Discoveries
    description: >-
      Endpoints for discovering available payment rails, banks, and providers
      for a given country and currency corridor.
  - name: Embedded Wallet Auth
    description: >-
      Endpoints for registering and verifying end-user authentication
      credentials (email OTP, OAuth, passkey) used to sign Embedded Wallet
      actions.
  - name: Agent Management
    description: >-
      Endpoints for creating and managing agents (experimental), called by the
      partner's backend using platform credentials. Covers the full agent
      lifecycle: creation, policy configuration, pausing, deletion, the device
      code installation flow, and approving or rejecting transactions initiated
      by agents.
  - name: Agent Operations
    description: >-
      Experimental endpoints called by the agent itself using its own
      credentials (obtained via device code redemption). Scoped to the agent's
      associated customer — all requests automatically operate on behalf of that
      customer and are subject to the agent's policy. When an action requires
      approval, the resulting transaction enters a pending state and must be
      approved by the platform via `POST /transactions/{transactionId}/approve`.
  - name: Claimable Payouts
    description: >-
      Endpoints the platform's claim page calls for a claimable payout an agent
      sent to a person by phone number or email: issue the claim token for the
      recipient's link, look the payout up by it, list how Grid can pay her,
      lock a quote to her account and confirm it.
  - name: Cards
    description: >-
      Card management endpoints. Issue debit cards against an internal account,
      freeze / unfreeze, close, manage a card's funding source, and list card
      transactions.
  - name: Stablecoins
    description: >-
      Stablecoin issuance endpoints. Link provider accounts, register
      provider-created stablecoins, create direct mint/burn issuer operations,
      and track operation status.
  - name: Embedded Care
    description: |
      A support chat between the cardholder and Lightspark's care agent, driven
      from the partner's own app. The platform calls with its ordinary Grid
      credential, but the person typing is the cardholder rather than the
      caller, so reaching that cardholder's account takes a second proof: an
      SMS code they send into the chat, after which the partner carries a
      session token in the `X-Ls-Care-Session` header.

      **The surface is two routes, and verification happens inside the
      conversation.**

      1. **Open the chat.** `POST /care/chats/{chatId}/messages` with an empty
         `message`, addressed to the cardholder as `Customer:<uuid>`. Returns
         the chat's id and the agent's opening line in `reply`, which is what
         a chat window renders before anybody has typed. Sends no SMS, needs
         no `Idempotency-Key` and consumes none, and is safe to call again: a
         widget that reloaded gets the same chat back, this time without a
         `reply`.
      2. **Send the cardholder's first message.** The same route with their
         text and an `Idempotency-Key` header. One turn runs synchronously and
         the agent's answer comes back in `reply`. On a chat that cannot yet
         reach the account this call also texts the cardholder a code, and the
         agent's `reply` asks for it.
      3. **The cardholder sends the code as an ordinary message.** When it is
         correct, the response to that turn carries `sessionToken` and
         `expiresAt`. Send that token as the `X-Ls-Care-Session` header on
         every message from then on. A code that does not match is answered in
         `reply`, and the cardholder can simply send it again.
      4. **Close the chat** with `DELETE /care/chats/{chatId}` when the
         cardholder is done. Every response also carries `chatEnded`, and the
         agent can end the chat itself: when `chatEnded` is true, the closing
         line is in `reply` and the chat takes no further messages, so stop
         sending to it. An opening addressed to that `CareChat:<id>` answers
         `409 CARE_CHAT_ENDED`; address the cardholder as `Customer:<uuid>`
         to open a new chat.

      **Render `redactedCustomerMessage` if present, then `reply` if
      present.** That one rule covers an opening, a resume and a turn.

      **A cardholder whose code never arrived asks the agent for another
      one.** The agent sends a new code to the number on file and says so in
      its `reply`. There is no separate route for it.

      **The verification fields are optional hints.** `verificationRequired`
      and `codeLength` let an app show a dedicated one-time-code input of the
      right length, marked as a one-time code so iOS and Android offer to fill
      it from the SMS. A partner can ignore them, since the agent asks for the
      code in its reply and says where it went, and the app still sends the
      code as an ordinary message.

      Step 1 is optional. A message addressed to a `Customer:` id opens that
      cardholder's chat if they have none, so a partner whose cardholder has
      just typed something spends one call rather than two.

      A cardholder who has not verified yet is never a `401`, because the
      first message from every new cardholder is unverified and a `401` there
      would be indistinguishable from a bad credential. On these endpoints a
      `401` means the platform's Grid credential is wrong, the session token
      presented is malformed, or a replay lacks the session token its original
      request required.

      **Verification expires, and a lost session is recoverable in the
      chat.** A chat reaches the cardholder's account only while its
      verification is newer than the session lifetime, fifteen minutes in the
      default deployment, which is also how long a session token lives. Past
      that window a message gets a fresh code, and the agent asks the
      cardholder to send it back inside the conversation, which hands the
      partner the next session token. A new message sent with no
      `X-Ls-Care-Session` header, or with a token past its expiry, on a chat
      whose verification is still current is treated the same way: the
      verification is cancelled before the turn runs, a new code is sent, and
      the agent asks for it. So a client that lost its token, or held one too
      long, simply keeps sending messages. Only a token that is malformed, or
      that was minted for another platform, chat or cardholder, is refused.

      Two things an integration has to get right:

      - **Render `redactedCustomerMessage`, never your own copy of what was
        typed.** Grid masks card numbers and other sensitive digit strings in
        it. A UI that renders its own copy of the input instead puts a card
        number the cardholder pasted back on their screen unmasked, and into
        your logs.
      - **The session token is returned once and is never re-readable.** No
        endpoint hands it back, it cannot be revoked, and it is short-lived by
        design. Hold it for the life of the cardholder's session. It arrives
        on the message response to the turn in which the cardholder sent their
        code, and on no other. Losing it costs the cardholder a new code, never
        access to the chat.

      Some things are absent by construction, so no integration can come to
      depend on them: nothing returns a transcript or an earlier turn's reply
      (retrying under the original `Idempotency-Key` is how an answer that was
      produced but not delivered is recovered; a replay requires the same
      session token its original request required and never carries a
      `sessionToken`, so a lost token is recovered by sending the cardholder's
      next message as a new message, which verifies them again), nothing sets
      a verification state, and nothing changes the number a code is sent to.

      Errors from these endpoints carry `code` and `reason` only (see the
      `CareError` schema), unlike the `Error4xx` schemas used elsewhere in this
      specification.
paths:
  /claimable-payouts/claim/quote:
    post:
      tags:
        - Claimable Payouts
      summary: Quote a claim
      description: >
        Lock a quote paying a claimable payout to the recipient's account. Call
        it only after the recipient has proved she holds the payout's phone
        number or email. Grid validates `accountInfo` as `POST
        /customers/external-accounts` does, screens the recipient, and saves her
        account under the sender's customer, where an agent can pay it again.
        Grid then quotes the payout's full `amount` from the sender's wallet to
        that account. The payout stays `AWAITING_CLAIM` until the quote is
        confirmed; calling again replaces the quote.
      operationId: quoteClaimablePayoutClaim
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClaimablePayoutQuoteRequest'
      responses:
        '200':
          description: Quote locked
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClaimablePayoutQuote'
        '400':
          description: >-
            Bad request - Invalid account details, or a currency or rail Grid
            does not pay out to
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: >-
            Forbidden - Claimable payouts are not enabled for the platform, or
            screening did not clear the recipient (`SANCTION_BLOCKED`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: No claimable payout for this claim token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '409':
          description: Conflict - The payout is not `AWAITING_CLAIM` (`CONFLICT`)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error409'
        '500':
          description: Internal service error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
        '503':
          description: >-
            Service unavailable - Grid could not screen the recipient or price
            the payout right now. Retry later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error503'
      security:
        - BasicAuth: []
components:
  schemas:
    ClaimablePayoutQuoteRequest:
      type: object
      description: >-
        The recipient's payout details. Grid validates them as for `POST
        /customers/external-accounts`, screens the recipient, saves the account
        under the sender's customer and locks a quote for the payout.
      required:
        - claimToken
        - accountInfo
      properties:
        claimToken:
          type: string
          minLength: 1
          maxLength: 128
          description: The claim token from the recipient's link.
        accountInfo:
          $ref: '#/components/schemas/ExternalAccountCreateInfoOneOf'
        paymentRail:
          allOf:
            - $ref: '#/components/schemas/PaymentRail'
          description: >-
            The rail the recipient chose from `POST
            /claimable-payouts/claim/options`, when her account type is paid on
            more than one (for example `SEPA` or `SEPA_INSTANT`). Omit it to use
            the account type's default rail.
    ClaimablePayoutQuote:
      type: object
      description: >-
        A locked quote paying the claimable payout to the recipient. Confirm it
        before `quote.expiresAt`; after that, request another.
      required:
        - claimablePayout
        - quote
      properties:
        claimablePayout:
          $ref: '#/components/schemas/ClaimablePayoutClaim'
        quote:
          $ref: '#/components/schemas/Quote'
    Error400:
      type: object
      required:
        - reason
        - code
      properties:
        code:
          type: string
          description: >
            | Error Code | Description |

            |------------|-------------|

            | INVALID_INPUT | Invalid input provided. When Grid knows the cause,
            `details.refusalReason` names it. When a card cannot be issued
            because the customer record lacks fields, it is
            `CARDHOLDER_INFO_MISSING` and `details.missingFields` lists them |

            | END_USER_TERMS_VERSION_NOT_FOUND | The submitted version is not
            supported for the agreement it was sent for |

            | MISSING_MANDATORY_USER_INFO | Required customer information is
            missing |

            | INVITATION_ALREADY_CLAIMED | Invitation has already been claimed |

            | INVITATIONS_NOT_CONFIGURED | Invitations are not configured |

            | INVALID_UMA_ADDRESS | UMA address format is invalid |

            | INVITATION_CANCELLED | Invitation has been cancelled |

            | INVALID_RECEIVER | Receiver is invalid |

            | PARSE_PAYREQ_RESPONSE_ERROR | Error parsing receiver PayReq
            response |

            | CERT_CHAIN_INVALID | Counterparty certificate chain is invalid |

            | CERT_CHAIN_EXPIRED | Counterparty certificate chain has expired |

            | INVALID_PUBKEY_FORMAT | Counterparty Public key format is invalid
            |

            | MISSING_REQUIRED_UMA_PARAMETERS | Counterparty required UMA
            parameters are missing |

            | SENDER_NOT_ACCEPTED | The receiving institution declined this
            sender. Final; a retry returns the same answer |

            | AMOUNT_OUT_OF_RANGE | Amount is out of range |

            | INVALID_CURRENCY | Currency is invalid |

            | INVALID_TIMESTAMP | Timestamp is invalid |

            | INVALID_NONCE | Nonce is invalid |

            | INVALID_REQUEST_FORMAT | Request format is invalid |

            | INVALID_BANK_ACCOUNT | Bank account is invalid |

            | SELF_PAYMENT | Self payment not allowed |

            | PARSE_LNURLP_RESPONSE_ERROR | Error parsing LNURLP response |

            | INVALID_AMOUNT | Amount is invalid |

            | WEBHOOK_ENDPOINT_NOT_SET | Webhook endpoint is not set |

            | WEBHOOK_DELIVERY_ERROR | Webhook delivery error |

            | LOW_QUALITY | Document quality too low to process |

            | DATA_MISMATCH | Document details don't match provided information
            |

            | EXPIRED | Document has expired |

            | SUSPECTED_FRAUD | Document suspected of being forged or edited |

            | UNSUITABLE_DOCUMENT | Document type is not accepted or not
            supported |

            | INCOMPLETE | Document is missing pages or sides |

            | EMAIL_OTP_CREDENTIAL_ALREADY_EXISTS | An EMAIL_OTP credential is
            already registered on the target internal account; only one email
            OTP credential is supported per internal account at this time |

            | SMS_OTP_CREDENTIAL_ALREADY_EXISTS | An SMS_OTP credential is
            already registered on the target internal account; only one SMS OTP
            credential is supported per internal account at this time |

            | PASSKEY_CREDENTIAL_ALREADY_EXISTS | A PASSKEY credential with the
            same WebAuthn credentialId is already registered on the target
            internal account |

            | AUTH_CREDENTIAL_VERIFICATION_REQUIRED | The new email or phone
            number has no verified replacement credential |

            | AUTH_CREDENTIAL_VERIFICATION_EXPIRED | The replacement
            credential's verification has expired |

            | STABLECOIN_PROVIDER_ACCOUNT_INVALID | The stablecoin provider
            account link is not usable |

            | STABLECOIN_PROVIDER_ACCOUNT_REVOKED | The stablecoin provider
            account link has been revoked |

            | STABLECOIN_PROVIDER_ACCOUNT_SELECTION_REQUIRED | Multiple active
            provider account links exist; pass `stablecoinProviderAccountId` to
            select one |

            | CARDHOLDER_KYC_NOT_APPROVED | The cardholder's KYC status is not
            `APPROVED`, so a card cannot be issued |

            | ACCOUNTHOLDER_AGREEMENT_NOT_ACCEPTED | The customer create request
            omits an accountholder agreement its accounts require |

            | CARDHOLDER_AGREEMENT_NOT_ACCEPTED | The customer has not accepted
            the cardholder agreement the platform requires before a card is
            issued |

            | TRANSACTION_SIZE_LIMIT_EXCEEDED | The requested amount exceeds the
            configured maximum single-transaction amount for this trade corridor
            or withdrawal currency |

            | EXTERNAL_ACCOUNT_VERIFICATION_REQUIRED | The destination account's
            ownership must be verified before this transfer can proceed |

            | INSUFFICIENT_FUNDS | Insufficient funds for this operation |

            | QUOTE_EXPIRED | The quote has expired; request a new quote |

            | QUOTE_RATE_UNAVAILABLE | No exchange rate is available for this
            corridor right now |

            | STABLECOIN_AMOUNT_NOT_REPRESENTABLE | The amount cannot be
            represented at the token's precision |

            | STABLECOIN_BURN_SOURCE_NOT_SUPPORTED | The burn source account
            cannot be used for this operation |

            | STABLECOIN_EXTERNAL_ACCOUNT_LINK_FAILED | Linking the external
            account for stablecoin operations failed |

            | STABLECOIN_EXTERNAL_ACCOUNT_LINK_METHOD_REQUIRED | The external
            account needs a link method before it can be used |

            | STABLECOIN_EXTERNAL_ACCOUNT_NOT_LINKED | The external account is
            not linked for stablecoin operations |

            | STABLECOIN_EXTERNAL_ACCOUNT_NOT_SUPPORTED | This external account
            type is not supported for stablecoin operations |

            | STABLECOIN_EXTERNAL_ACCOUNT_PROVIDER_LINK_FAILED | The provider
            could not link the external account |

            | STABLECOIN_EXTERNAL_ACCOUNT_PROVIDER_LINK_REQUIRED | The external
            account must be linked with the provider first |

            | STABLECOIN_GRID_OPERATIONS_NOT_ENABLED | The stablecoin is not
            enabled for Grid operations |

            | STABLECOIN_NOT_PROVISIONED | The stablecoin is not provisioned for
            issuer operations |

            | STABLECOIN_OPERATION_NOT_SUPPORTED | The stablecoin does not
            support this operation |

            | STABLECOIN_PROVIDER_ERROR | The stablecoin provider rejected the
            operation |

            | STABLECOIN_PROVIDER_SOURCE_NOT_LINKED | The provider source
            account is not linked |

            | STABLECOIN_VERIFICATION_FAILED | The stablecoin could not be
            verified with the provider |

            | DOCUMENTS_REQUIRED | The destination requires supporting documents
            for the quote's `purposeOfPayment` that the request did not supply.
            `details.missingRequirements` lists the requirement ID of each one |

            | EXACT_AMOUNT_UNAVAILABLE | The quote cannot deliver exactly the
            requested receiving amount at the current rate; quote again shortly
            or lock the sending amount |
          enum:
            - INVALID_INPUT
            - END_USER_TERMS_VERSION_NOT_FOUND
            - MISSING_MANDATORY_USER_INFO
            - INVITATION_ALREADY_CLAIMED
            - INVITATIONS_NOT_CONFIGURED
            - INVALID_UMA_ADDRESS
            - INVITATION_CANCELLED
            - INVALID_RECEIVER
            - PARSE_PAYREQ_RESPONSE_ERROR
            - CERT_CHAIN_INVALID
            - CERT_CHAIN_EXPIRED
            - INVALID_PUBKEY_FORMAT
            - MISSING_REQUIRED_UMA_PARAMETERS
            - SENDER_NOT_ACCEPTED
            - AMOUNT_OUT_OF_RANGE
            - INVALID_CURRENCY
            - INVALID_TIMESTAMP
            - INVALID_NONCE
            - INVALID_REQUEST_FORMAT
            - INVALID_BANK_ACCOUNT
            - SELF_PAYMENT
            - PARSE_LNURLP_RESPONSE_ERROR
            - INVALID_AMOUNT
            - WEBHOOK_ENDPOINT_NOT_SET
            - WEBHOOK_DELIVERY_ERROR
            - LOW_QUALITY
            - DATA_MISMATCH
            - EXPIRED
            - SUSPECTED_FRAUD
            - UNSUITABLE_DOCUMENT
            - INCOMPLETE
            - EMAIL_OTP_CREDENTIAL_ALREADY_EXISTS
            - SMS_OTP_CREDENTIAL_ALREADY_EXISTS
            - PASSKEY_CREDENTIAL_ALREADY_EXISTS
            - AUTH_CREDENTIAL_VERIFICATION_REQUIRED
            - AUTH_CREDENTIAL_VERIFICATION_EXPIRED
            - STABLECOIN_PROVIDER_ACCOUNT_INVALID
            - STABLECOIN_PROVIDER_ACCOUNT_REVOKED
            - STABLECOIN_PROVIDER_ACCOUNT_SELECTION_REQUIRED
            - CARDHOLDER_KYC_NOT_APPROVED
            - ACCOUNTHOLDER_AGREEMENT_NOT_ACCEPTED
            - CARDHOLDER_AGREEMENT_NOT_ACCEPTED
            - TRANSACTION_SIZE_LIMIT_EXCEEDED
            - EXTERNAL_ACCOUNT_VERIFICATION_REQUIRED
            - INSUFFICIENT_FUNDS
            - QUOTE_EXPIRED
            - QUOTE_RATE_UNAVAILABLE
            - STABLECOIN_AMOUNT_NOT_REPRESENTABLE
            - STABLECOIN_BURN_SOURCE_NOT_SUPPORTED
            - STABLECOIN_EXTERNAL_ACCOUNT_LINK_FAILED
            - STABLECOIN_EXTERNAL_ACCOUNT_LINK_METHOD_REQUIRED
            - STABLECOIN_EXTERNAL_ACCOUNT_NOT_LINKED
            - STABLECOIN_EXTERNAL_ACCOUNT_NOT_SUPPORTED
            - STABLECOIN_EXTERNAL_ACCOUNT_PROVIDER_LINK_FAILED
            - STABLECOIN_EXTERNAL_ACCOUNT_PROVIDER_LINK_REQUIRED
            - STABLECOIN_GRID_OPERATIONS_NOT_ENABLED
            - STABLECOIN_NOT_PROVISIONED
            - STABLECOIN_OPERATION_NOT_SUPPORTED
            - STABLECOIN_PROVIDER_ERROR
            - STABLECOIN_PROVIDER_SOURCE_NOT_LINKED
            - STABLECOIN_VERIFICATION_FAILED
            - DOCUMENTS_REQUIRED
            - EXACT_AMOUNT_UNAVAILABLE
        reason:
          type: string
          description: Error message
        details:
          type: object
          description: >-
            Additional error details. Shape varies by `code`. For
            field-validation errors on submit endpoints (e.g. `POST /customers`,
            `PATCH /customers/{id}`), `details.errors[]` enumerates every
            invalid field so platforms can render form-field-level UX for the
            entire request in a single round-trip.
          properties:
            errors:
              type: array
              description: >-
                One entry per invalid field. Present on field-validation errors
                from submit endpoints.
              items:
                $ref: '#/components/schemas/FieldError'
            missingRequirements:
              type: array
              description: >-
                The requirement ID of each required document that the quote
                request did not supply. Present on `DOCUMENTS_REQUIRED`.
              items:
                $ref: '#/components/schemas/PaymentDocumentRequirementId'
            refusalReason:
              $ref: '#/components/schemas/RefusalReason'
            missingFields:
              type: array
              description: >-
                Each customer field the request needs but the customer record
                lacks, named as in `CustomerInfoFieldName` (for example
                `PHONE_NUMBER`). Present with refusal reason
                `CARDHOLDER_INFO_MISSING`. Grid may name fields not yet listed
                there.
              items:
                type: string
                example: PHONE_NUMBER
          additionalProperties: true
    Error401:
      type: object
      required:
        - reason
        - code
      properties:
        code:
          type: string
          description: >
            | Error Code | Description |

            |------------|-------------|

            | UNAUTHORIZED | Issue with API credentials |

            | INVALID_SIGNATURE | Signature header is invalid |

            | WALLET_SIGNATURE_MISSING | The `Grid-Wallet-Signature` header is
            required for this Embedded Wallet action but was not supplied |

            | WALLET_SIGNATURE_MALFORMED | The `Grid-Wallet-Signature` header
            could not be parsed (bad encoding, structure, or fields) |

            | WALLET_SIGNATURE_BODY_MISMATCH | The `Grid-Wallet-Signature` was
            computed over a different request body than the one received |

            | WALLET_SIGNATURE_INVALID | The `Grid-Wallet-Signature` failed
            cryptographic verification against the registered credential |

            | REQUEST_ID_MISSING | The `Request-Id` header is required on the
            signed retry but was not supplied (paired with
            `Grid-Wallet-Signature`) |
          enum:
            - UNAUTHORIZED
            - INVALID_SIGNATURE
            - WALLET_SIGNATURE_MISSING
            - WALLET_SIGNATURE_MALFORMED
            - WALLET_SIGNATURE_BODY_MISMATCH
            - WALLET_SIGNATURE_INVALID
            - REQUEST_ID_MISSING
        reason:
          type: string
          description: Error message
        details:
          type: object
          description: Additional error details
          additionalProperties: true
    Error403:
      type: object
      required:
        - reason
        - code
      properties:
        code:
          type: string
          description: >
            | Error Code | Description |

            |------------|-------------|

            | FORBIDDEN | Insufficient permissions. `details.refusalReason`
            names the cause when Grid knows it |

            | USER_NOT_READY | Customer exists but is not ready for operation |

            | COUNTERPARTY_NOT_ALLOWED | Counterparty has not been enabled for
            your account |

            | VELOCITY_LIMIT_EXCEEDED | Counterparty has exceeded velocity
            limits |

            | END_USER_TERMS_NOT_ACCEPTED | Customer has not accepted the End
            User Terms |

            | CUSTOMER_NOT_VERIFIED | The customer is not verified and cannot
            perform this action |

            | SANCTION_BLOCKED | Blocked by sanction screening |

            | DESTINATION_NOT_ALLOWED | The agent may not pay this destination |

            | CORRIDOR_UNDER_MAINTENANCE | Payments to this corridor are paused
            for maintenance. |
          enum:
            - FORBIDDEN
            - USER_NOT_READY
            - COUNTERPARTY_NOT_ALLOWED
            - VELOCITY_LIMIT_EXCEEDED
            - END_USER_TERMS_NOT_ACCEPTED
            - CUSTOMER_NOT_VERIFIED
            - SANCTION_BLOCKED
            - DESTINATION_NOT_ALLOWED
            - CORRIDOR_UNDER_MAINTENANCE
        reason:
          type: string
          description: Error message
        details:
          type: object
          description: >-
            Additional error details. Shape varies by `code`. A `FORBIDDEN`
            refusal with a known cause carries `refusalReason`, plus the fields
            that reason names.
          properties:
            refusalReason:
              $ref: '#/components/schemas/RefusalReason'
            permission:
              type: string
              description: >-
                The `AgentPermission` the agent's policy lacks. Present with
                refusal reason `AGENT_PERMISSION_REQUIRED`. Grid may add
                permissions, so accept a value not yet listed there.
              example: ISSUE_CARDS
            policyDenialReason:
              $ref: '#/components/schemas/AgentPolicyDenialReason'
              description: >-
                The policy rule that denied the quote or purchase card. Present
                with refusal reason `AGENT_POLICY_DENIED` or
                `AGENT_PURCHASE_CARD_POLICY_DENIED`.
          additionalProperties: true
    Error404:
      type: object
      required:
        - reason
        - code
      properties:
        code:
          type: string
          description: >
            | Error Code | Description |

            |------------|-------------|

            | TRANSACTION_NOT_FOUND | Transaction not found |

            | INVITATION_NOT_FOUND | Invitation not found |

            | USER_NOT_FOUND | Customer not found |

            | QUOTE_NOT_FOUND | Quote not found |

            | LOOKUP_REQUEST_NOT_FOUND | Lookup request not found |

            | TOKEN_NOT_FOUND | Token not found |

            | BULK_UPLOAD_JOB_NOT_FOUND | Bulk upload job not found |

            | REFERENCE_NOT_FOUND | Reference not found |

            | UMA_NOT_FOUND | The UMA address is well-formed but no receiver
            exists at the counterparty VASP |

            | STABLECOIN_PROVIDER_ACCOUNT_NOT_FOUND | Stablecoin provider
            account link not found |

            | ACCOUNT_NOT_FOUND | Account not found |

            | AUTH_METHOD_NOT_FOUND | Authentication credential not found |

            | CUSTOMER_NOT_FOUND | Customer not found |

            | DOCUMENT_HOLDER_NOT_FOUND | Document holder not found |

            | NOT_FOUND | The requested resource was not found |

            | PAYMENT_URL_NOT_FOUND | Payment URL not found |

            | PLATFORM_NOT_FOUND | Platform not found |

            | REQUEST_NOT_FOUND | Pending request not found |

            | SESSION_NOT_FOUND | Session not found |

            | STABLECOIN_EXTERNAL_ACCOUNT_NOT_FOUND | Stablecoin external
            account not found |

            | STABLECOIN_NOT_FOUND | Stablecoin not found |

            | STABLECOIN_OPERATION_NOT_FOUND | Stablecoin operation not found |

            | VERIFICATION_NOT_FOUND | Verification not found |

            | PAYMENT_DOCUMENT_NOT_FOUND | Payment document not found |
          enum:
            - TRANSACTION_NOT_FOUND
            - INVITATION_NOT_FOUND
            - USER_NOT_FOUND
            - QUOTE_NOT_FOUND
            - LOOKUP_REQUEST_NOT_FOUND
            - TOKEN_NOT_FOUND
            - BULK_UPLOAD_JOB_NOT_FOUND
            - REFERENCE_NOT_FOUND
            - UMA_NOT_FOUND
            - STABLECOIN_PROVIDER_ACCOUNT_NOT_FOUND
            - ACCOUNT_NOT_FOUND
            - AUTH_METHOD_NOT_FOUND
            - CUSTOMER_NOT_FOUND
            - DOCUMENT_HOLDER_NOT_FOUND
            - NOT_FOUND
            - PAYMENT_URL_NOT_FOUND
            - PLATFORM_NOT_FOUND
            - REQUEST_NOT_FOUND
            - SESSION_NOT_FOUND
            - STABLECOIN_EXTERNAL_ACCOUNT_NOT_FOUND
            - STABLECOIN_NOT_FOUND
            - STABLECOIN_OPERATION_NOT_FOUND
            - VERIFICATION_NOT_FOUND
            - PAYMENT_DOCUMENT_NOT_FOUND
        reason:
          type: string
          description: Error message
        details:
          type: object
          description: Additional error details
          additionalProperties: true
    Error409:
      type: object
      required:
        - reason
        - code
      properties:
        code:
          type: string
          description: >
            | Error Code | Description |

            |------------|-------------|

            | TRANSACTION_NOT_PENDING_PLATFORM_APPROVAL | Transaction is not
            pending platform approval |

            | TRANSACTION_NOT_CANCELLABLE | Transaction has already settled or
            is otherwise past the point where it can be cancelled |

            | UMA_ADDRESS_EXISTS | UMA address already exists |

            | EMAIL_OTP_EMAIL_ALREADY_EXISTS | Email address is already
            associated with an EMAIL_OTP credential |

            | EMAIL_OTP_CREDENTIAL_SET_CHANGED | Tied EMAIL_OTP credential set
            changed after the signed-retry challenge was issued |

            | PASSKEY_ALREADY_ENROLLED | The customer already has the most
            passkeys allowed (two). Delete one before enrolling another |

            | SCA_SESSION_REQUIRED | The customer's Strong Customer
            Authentication login session is missing or expired. Re-authenticate
            the customer, then retry the request. Distinct from a `401`, which
            means the platform's own API credentials were rejected |

            | BENEFICIARY_NOT_TRUSTED | The external account must be a trusted
            beneficiary before it can be used here. Trust it first via `POST
            /customers/external-accounts/{externalAccountId}/trust` (and its
            `/confirm`), then retry |

            | BENEFICIARY_TRUSTED | The external account is currently a trusted
            beneficiary, so it cannot be deleted. Untrust it first via `POST
            /customers/external-accounts/{externalAccountId}/untrust` (and its
            `/confirm`), then delete |

            | BANK_ACCOUNT_VALIDATION_PENDING | The US bank account on this
            request is still being validated. Grid verifies a newly added ACH
            account by sending a micro-entry and waiting out the return window,
            which takes a few banking days. The account is not rejected; retry
            once validation completes. A permanently failed account returns `400
            INVALID_BANK_ACCOUNT` instead |

            | INVALID_STATE_TRANSITION | The requested card `status` transition
            is not one of `ACTIVE ⇄ FROZEN` or `ACTIVE \| FROZEN → CLOSED`, or
            the card cannot be unfrozen by the platform because Grid froze it
            for review, it was frozen as `COMPROMISED`, or its customer is not
            `ACTIVE` |

            | CARD_ALREADY_CLOSED | `status: CLOSED` was requested for a card
            that is already `CLOSED` |

            | CARD_NOT_MUTABLE | The card is `CLOSED`, so it can no longer be
            mutated |

            | PIN_CHANGE_REQUIRED | The card's PIN unblock allowance is consumed
            for seven days. Change the PIN to recover sooner.
            `details.pinUnblockAvailableAt` gives the next allowed unblock time
            |

            | AGENT_CARD_EXISTS | The agent already holds a card that is not
            `CLOSED`, so it cannot issue another. Close that card first |

            | PURCHASE_CARD_LIMIT_REACHED | The agent already holds the most
            open purchase cards allowed, counting purchase cards awaiting
            approval. Use or close one first |

            | CARD_LIMIT_REACHED | The platform has reached the maximum number
            of live cards it may hold, or the cardholder already holds a card
            and the platform is limited to one per cardholder. Closing a card
            frees its slot; contact Lightspark to raise the limit |

            | STABLECOIN_GRID_ENABLEMENT_NOT_REQUESTABLE | Grid enablement can
            only be requested while the stablecoin is `NOT_ENABLED` (a repeat
            request while already `PENDING_APPROVAL` succeeds). `ENABLING`,
            `ENABLED` and `DISABLED` are driven by Lightspark and cannot be
            requested |

            | NOT_YET_AVAILABLE | The request is valid, but its result is not
            available yet because the data it depends on could still change.
            Retry later. `reason` says what is outstanding. For balance changes,
            card settlement for a window boundary has not closed |

            | CONFLICT | Generic resource-state conflict. Returned, for example,
            when `platformCustomerId` on a customer create call collides with an
            existing active customer on the same platform. When the cardholder
            already holds the one card the platform allows,
            `details.refusalReason` is `CARDHOLDER_HOLDS_CARD` |

            | DOCUMENT_ALREADY_EXISTS | A document of this type already exists
            for the holder; replace it with PUT |

            | DUPLICATE_EXTERNAL_ACCOUNT | An equivalent external account
            already exists. When the conflicting account belongs to your
            platform, `details.externalAccountId` and
            `details.platformAccountId` identify it; otherwise `details` is
            omitted |

            | DUPLICATE_PAY_REQUEST | A pay request with this idempotency key
            already exists |

            | OPERATION_IN_PROGRESS | A conflicting Embedded Wallet operation is
            still in progress |

            | SMS_OTP_CREDENTIAL_SET_CHANGED | The SMS_OTP credential set
            changed while the request was in flight |

            | SMS_OTP_PHONE_NUMBER_ALREADY_EXISTS | The phone number is already
            associated with an SMS_OTP credential |

            | STABLECOIN_SYMBOL_ALREADY_EXISTS | A stablecoin with this symbol
            is already registered |

            | STABLECOIN_TOKEN_IDENTIFIER_ALREADY_EXISTS | A stablecoin with
            this token identifier is already registered |

            | WALLET_NOT_PROVISIONED | The embedded wallet has not been
            provisioned |

            | PAYMENT_DOCUMENT_ALREADY_USED | The payment document is already
            attached to a quote. A document can be used on one quote only, so
            upload the file again to use it on another quote |

            | INVOICE_ALREADY_USED | Another quote for the Lightning invoice can
            still be executed or funded, or was executed. An invoice has one
            live quote at a time; ask the recipient for a new one, or retry once
            Grid has closed the earlier quote as expired |
          enum:
            - TRANSACTION_NOT_PENDING_PLATFORM_APPROVAL
            - TRANSACTION_NOT_CANCELLABLE
            - UMA_ADDRESS_EXISTS
            - EMAIL_OTP_EMAIL_ALREADY_EXISTS
            - EMAIL_OTP_CREDENTIAL_SET_CHANGED
            - PASSKEY_ALREADY_ENROLLED
            - SCA_SESSION_REQUIRED
            - BENEFICIARY_NOT_TRUSTED
            - BENEFICIARY_TRUSTED
            - BANK_ACCOUNT_VALIDATION_PENDING
            - INVALID_STATE_TRANSITION
            - CARD_ALREADY_CLOSED
            - CARD_NOT_MUTABLE
            - PIN_CHANGE_REQUIRED
            - AGENT_CARD_EXISTS
            - PURCHASE_CARD_LIMIT_REACHED
            - CARD_LIMIT_REACHED
            - STABLECOIN_GRID_ENABLEMENT_NOT_REQUESTABLE
            - NOT_YET_AVAILABLE
            - CONFLICT
            - DOCUMENT_ALREADY_EXISTS
            - DUPLICATE_EXTERNAL_ACCOUNT
            - DUPLICATE_PAY_REQUEST
            - OPERATION_IN_PROGRESS
            - SMS_OTP_CREDENTIAL_SET_CHANGED
            - SMS_OTP_PHONE_NUMBER_ALREADY_EXISTS
            - STABLECOIN_SYMBOL_ALREADY_EXISTS
            - STABLECOIN_TOKEN_IDENTIFIER_ALREADY_EXISTS
            - WALLET_NOT_PROVISIONED
            - PAYMENT_DOCUMENT_ALREADY_USED
            - INVOICE_ALREADY_USED
        reason:
          type: string
          description: Error message
        details:
          type: object
          description: Additional error details
          additionalProperties: true
    Error500:
      type: object
      required:
        - reason
        - code
      properties:
        code:
          type: string
          description: |
            | Error Code | Description |
            |------------|-------------|
            | GRID_SWITCH_ERROR | Grid switch error |
            | INTERNAL_ERROR | Internal server or UMA error |
          enum:
            - GRID_SWITCH_ERROR
            - INTERNAL_ERROR
        reason:
          type: string
          description: Error message
        details:
          type: object
          description: Additional error details
          additionalProperties: true
    Error503:
      type: object
      required:
        - reason
        - code
      properties:
        code:
          type: string
          description: >
            | Error Code | Description |

            |------------|-------------|

            | SERVICE_UNAVAILABLE | Downstream service is temporarily
            unavailable |
          enum:
            - SERVICE_UNAVAILABLE
        reason:
          type: string
          description: Error message
        details:
          type: object
          description: Additional error details
          additionalProperties: true
    ExternalAccountCreateInfoOneOf:
      oneOf:
        - $ref: '#/components/schemas/AedExternalAccountCreateInfo'
        - $ref: '#/components/schemas/BdtExternalAccountCreateInfo'
        - $ref: '#/components/schemas/BrlExternalAccountCreateInfo'
        - $ref: '#/components/schemas/BwpExternalAccountCreateInfo'
        - $ref: '#/components/schemas/CadExternalAccountCreateInfo'
        - $ref: '#/components/schemas/CnyExternalAccountCreateInfo'
        - $ref: '#/components/schemas/CopExternalAccountCreateInfo'
        - $ref: '#/components/schemas/DkkExternalAccountCreateInfo'
        - $ref: '#/components/schemas/EgpExternalAccountCreateInfo'
        - $ref: '#/components/schemas/EurExternalAccountCreateInfo'
        - $ref: '#/components/schemas/GbpExternalAccountCreateInfo'
        - $ref: '#/components/schemas/GhsExternalAccountCreateInfo'
        - $ref: '#/components/schemas/GtqExternalAccountCreateInfo'
        - $ref: '#/components/schemas/HkdExternalAccountCreateInfo'
        - $ref: '#/components/schemas/HtgExternalAccountCreateInfo'
        - $ref: '#/components/schemas/IdrExternalAccountCreateInfo'
        - $ref: '#/components/schemas/InrExternalAccountCreateInfo'
        - $ref: '#/components/schemas/JmdExternalAccountCreateInfo'
        - $ref: '#/components/schemas/KesExternalAccountCreateInfo'
        - $ref: '#/components/schemas/MwkExternalAccountCreateInfo'
        - $ref: '#/components/schemas/MxnExternalAccountCreateInfo'
        - $ref: '#/components/schemas/MyrExternalAccountCreateInfo'
        - $ref: '#/components/schemas/NgnExternalAccountCreateInfo'
        - $ref: '#/components/schemas/PhpExternalAccountCreateInfo'
        - $ref: '#/components/schemas/PkrExternalAccountCreateInfo'
        - $ref: '#/components/schemas/RwfExternalAccountCreateInfo'
        - $ref: '#/components/schemas/SgdExternalAccountCreateInfo'
        - $ref: '#/components/schemas/SlvExternalAccountCreateInfo'
        - $ref: '#/components/schemas/ThbExternalAccountCreateInfo'
        - $ref: '#/components/schemas/TzsExternalAccountCreateInfo'
        - $ref: '#/components/schemas/UgxExternalAccountCreateInfo'
        - $ref: '#/components/schemas/UsdExternalAccountCreateInfo'
        - $ref: '#/components/schemas/VndExternalAccountCreateInfo'
        - $ref: '#/components/schemas/XafExternalAccountCreateInfo'
        - $ref: '#/components/schemas/XofExternalAccountCreateInfo'
        - $ref: '#/components/schemas/ZarExternalAccountCreateInfo'
        - $ref: '#/components/schemas/ZmwExternalAccountCreateInfo'
        - $ref: '#/components/schemas/SwiftExternalAccountCreateInfo'
        - $ref: '#/components/schemas/BaseWalletExternalAccountInfo'
        - $ref: '#/components/schemas/EthereumWalletExternalAccountInfo'
        - $ref: '#/components/schemas/LightningExternalAccountInfo'
        - $ref: '#/components/schemas/PolygonWalletExternalAccountInfo'
        - $ref: '#/components/schemas/PlasmaWalletExternalAccountInfo'
        - $ref: '#/components/schemas/ArbitrumWalletExternalAccountInfo'
        - $ref: '#/components/schemas/SolanaWalletExternalAccountInfo'
        - $ref: '#/components/schemas/SparkWalletExternalAccountInfo'
        - $ref: '#/components/schemas/TronWalletExternalAccountInfo'
        - $ref: '#/components/schemas/IlsExternalAccountCreateInfo'
        - $ref: '#/components/schemas/TryExternalAccountCreateInfo'
        - $ref: '#/components/schemas/ChfExternalAccountCreateInfo'
      discriminator:
        propertyName: accountType
        mapping:
          AED_ACCOUNT: '#/components/schemas/AedExternalAccountCreateInfo'
          BDT_ACCOUNT: '#/components/schemas/BdtExternalAccountCreateInfo'
          BRL_ACCOUNT: '#/components/schemas/BrlExternalAccountCreateInfo'
          BWP_ACCOUNT: '#/components/schemas/BwpExternalAccountCreateInfo'
          CAD_ACCOUNT: '#/components/schemas/CadExternalAccountCreateInfo'
          CNY_ACCOUNT: '#/components/schemas/CnyExternalAccountCreateInfo'
          COP_ACCOUNT: '#/components/schemas/CopExternalAccountCreateInfo'
          DKK_ACCOUNT: '#/components/schemas/DkkExternalAccountCreateInfo'
          EGP_ACCOUNT: '#/components/schemas/EgpExternalAccountCreateInfo'
          EUR_ACCOUNT: '#/components/schemas/EurExternalAccountCreateInfo'
          GBP_ACCOUNT: '#/components/schemas/GbpExternalAccountCreateInfo'
          GHS_ACCOUNT: '#/components/schemas/GhsExternalAccountCreateInfo'
          GTQ_ACCOUNT: '#/components/schemas/GtqExternalAccountCreateInfo'
          HKD_ACCOUNT: '#/components/schemas/HkdExternalAccountCreateInfo'
          HTG_ACCOUNT: '#/components/schemas/HtgExternalAccountCreateInfo'
          IDR_ACCOUNT: '#/components/schemas/IdrExternalAccountCreateInfo'
          INR_ACCOUNT: '#/components/schemas/InrExternalAccountCreateInfo'
          JMD_ACCOUNT: '#/components/schemas/JmdExternalAccountCreateInfo'
          KES_ACCOUNT: '#/components/schemas/KesExternalAccountCreateInfo'
          MWK_ACCOUNT: '#/components/schemas/MwkExternalAccountCreateInfo'
          MXN_ACCOUNT: '#/components/schemas/MxnExternalAccountCreateInfo'
          MYR_ACCOUNT: '#/components/schemas/MyrExternalAccountCreateInfo'
          NGN_ACCOUNT: '#/components/schemas/NgnExternalAccountCreateInfo'
          PHP_ACCOUNT: '#/components/schemas/PhpExternalAccountCreateInfo'
          PKR_ACCOUNT: '#/components/schemas/PkrExternalAccountCreateInfo'
          RWF_ACCOUNT: '#/components/schemas/RwfExternalAccountCreateInfo'
          SGD_ACCOUNT: '#/components/schemas/SgdExternalAccountCreateInfo'
          SLV_ACCOUNT: '#/components/schemas/SlvExternalAccountCreateInfo'
          THB_ACCOUNT: '#/components/schemas/ThbExternalAccountCreateInfo'
          TZS_ACCOUNT: '#/components/schemas/TzsExternalAccountCreateInfo'
          UGX_ACCOUNT: '#/components/schemas/UgxExternalAccountCreateInfo'
          USD_ACCOUNT: '#/components/schemas/UsdExternalAccountCreateInfo'
          VND_ACCOUNT: '#/components/schemas/VndExternalAccountCreateInfo'
          XAF_ACCOUNT: '#/components/schemas/XafExternalAccountCreateInfo'
          XOF_ACCOUNT: '#/components/schemas/XofExternalAccountCreateInfo'
          ZAR_ACCOUNT: '#/components/schemas/ZarExternalAccountCreateInfo'
          ZMW_ACCOUNT: '#/components/schemas/ZmwExternalAccountCreateInfo'
          SWIFT_ACCOUNT: '#/components/schemas/SwiftExternalAccountCreateInfo'
          BASE_WALLET: '#/components/schemas/BaseWalletExternalAccountInfo'
          ETHEREUM_WALLET: '#/components/schemas/EthereumWalletExternalAccountInfo'
          LIGHTNING: '#/components/schemas/LightningExternalAccountInfo'
          POLYGON_WALLET: '#/components/schemas/PolygonWalletExternalAccountInfo'
          PLASMA_WALLET: '#/components/schemas/PlasmaWalletExternalAccountInfo'
          ARBITRUM_WALLET: '#/components/schemas/ArbitrumWalletExternalAccountInfo'
          SOLANA_WALLET: '#/components/schemas/SolanaWalletExternalAccountInfo'
          SPARK_WALLET: '#/components/schemas/SparkWalletExternalAccountInfo'
          TRON_WALLET: '#/components/schemas/TronWalletExternalAccountInfo'
          ILS_ACCOUNT: '#/components/schemas/IlsExternalAccountCreateInfo'
          TRY_ACCOUNT: '#/components/schemas/TryExternalAccountCreateInfo'
          CHF_ACCOUNT: '#/components/schemas/ChfExternalAccountCreateInfo'
    PaymentRail:
      type: string
      enum:
        - ACH
        - ACH_COLOMBIA
        - ACH_SAME_DAY
        - BANK_TRANSFER
        - BRE_B
        - CIPS
        - FAST
        - FASTER_PAYMENTS
        - FEDNOW
        - INSTAPAY
        - MOBILE_MONEY
        - NEFT
        - PAYNOW
        - PESONET
        - PIX
        - RTGS
        - RTP
        - SEPA
        - SEPA_INSTANT
        - SPEI
        - SWIFT
        - UNIONPAY
        - UPI
        - WIRE
      description: >-
        The payment rail used for the transfer. Payment rails represent the
        underlying payment network or system used to move funds between
        accounts.


        `ACH_SAME_DAY` requests same-business-day settlement for a USD payout
        and is priced separately. It is subject to the NACHA per-entry same-day
        limit, which the network applies to every originator: $1,000,000 per
        entry, rising to $10,000,000 on 2027-09-17. A payout above that limit is
        rejected rather than slowed — check the amount before requesting this
        rail, or send it over `ACH`, which settles on the standard schedule and
        has no such limit.


        `ACH` will settle on the standard next-business-day schedule. Until a
        date we announce in advance, `ACH` continues to settle same-business-day
        on production platforms; it already settles next-business-day on sandbox
        platforms. To guarantee same-day settlement after that date, request
        `ACH_SAME_DAY`.
      example: ACH
    ClaimablePayoutClaim:
      type: object
      description: >-
        A claimable payout as its claim token shows it to the platform. Show the
        recipient no more than `senderName` and `amount` until she has proved
        she holds `recipient.phoneNumber` or `recipient.email`.
      required:
        - id
        - status
        - senderName
        - amount
        - recipient
        - expiresAt
      properties:
        id:
          type: string
          description: The claimable payout's identifier.
          example: ClaimablePayout:019542f5-b3e7-1d02-0000-000000000077
        status:
          $ref: '#/components/schemas/ClaimablePayoutStatus'
        senderName:
          type: string
          description: The sender's first name, from their verified identity.
          example: Kevin
        amount:
          $ref: '#/components/schemas/CurrencyAmount'
        recipient:
          $ref: '#/components/schemas/ClaimablePayoutRecipient'
        note:
          type: string
          description: The sender's note to the recipient.
          example: Happy birthday, Mom
        receivedAmount:
          allOf:
            - $ref: '#/components/schemas/CurrencyAmount'
          description: What the recipient receives. Present once she has a locked quote.
        paymentRail:
          allOf:
            - $ref: '#/components/schemas/PaymentRail'
          description: The rail the recipient chose. Present once she has a locked quote.
        failureReason:
          allOf:
            - $ref: '#/components/schemas/ClaimablePayoutFailureReason'
          description: Present only when `status` is `FAILED`.
        expiresAt:
          type: string
          format: date-time
          description: When the claim window ends.
          example: '2025-10-10T15:00:00Z'
    Quote:
      type: object
      required:
        - id
        - status
        - expiresAt
        - createdAt
        - source
        - destination
        - sendingCurrency
        - receivingCurrency
        - totalSendingAmount
        - totalReceivingAmount
        - exchangeRate
        - feesIncluded
        - transactionId
      properties:
        id:
          type: string
          description: Unique identifier for this quote
          example: Quote:019542f5-b3e7-1d02-0000-000000000006
        status:
          $ref: '#/components/schemas/QuoteStatus'
        createdAt:
          type: string
          format: date-time
          description: When this quote was created
          example: '2025-10-03T12:00:00Z'
        expiresAt:
          type: string
          format: date-time
          description: >-
            Absolute UTC timestamp when the rate locked in this quote becomes
            invalid and the quote can no longer be executed. The window depends
            on the rail and corridor: instant rails (Lightning, Spark, USDC on
            Solana/Base/Polygon, RTP, SEPA Instant) typically expire in 1–5
            minutes; corridors with longer settlement guarantees may have longer
            windows. Always rely on this timestamp rather than assuming a fixed
            window.
          example: '2025-10-03T12:05:00Z'
        source:
          $ref: '#/components/schemas/QuoteSourceOneOf'
        destination:
          $ref: '#/components/schemas/QuoteDestinationOneOf'
        sendingCurrency:
          $ref: '#/components/schemas/Currency'
          description: Currency for the sending amount
        receivingCurrency:
          $ref: '#/components/schemas/Currency'
          description: Currency for the receiving amount
        totalSendingAmount:
          type: integer
          format: int64
          description: >-
            The total amount that will be sent in the smallest unit of the
            sending currency (eg. cents).
          exclusiveMinimum: 0
          example: 123010
        totalReceivingAmount:
          type: integer
          format: int64
          description: >-
            The total amount that will be received in the smallest unit of the
            receiving currency (eg. cents).
          exclusiveMinimum: 0
          example: 1000
        exchangeRate:
          type: number
          description: >-
            Number of sending currency units per receiving currency unit. The
            rate is fee-exclusive: Grid deducts `feesIncluded` from
            `totalSendingAmount` first, then converts the remainder at this rate
            to reach `totalReceivingAmount`.
          exclusiveMinimum: 0
        feesIncluded:
          type: integer
          format: int64
          description: >-
            The fees associated with the quote in the smallest unit of the
            sending currency (eg. cents). Note: this value may fluctuate between
            quotes — some underlying fee components are defined in the receiving
            currency, so their equivalent in the sending currency moves with the
            FX rate. The fees shown here are locked only for the lifetime of
            this quote.
          minimum: 0
          example: 10
        platformFeesIncluded:
          type: integer
          format: int64
          description: >-
            The portion of `feesIncluded` collected by the platform
            (platform-configured transaction fees), in the smallest unit of the
            sending currency. 0 when the platform has no applicable fee
            configured. Already included in `feesIncluded`. May be omitted from
            payloads produced before platform fees existed.
          minimum: 0
          example: 5
        paymentInstructions:
          type: array
          description: >-
            Payment instructions for executing the payment. This is not required
            when using an internal account source.
          items:
            $ref: '#/components/schemas/PaymentInstructions'
          example:
            - accountOrWalletInfo:
                accountType: USD_ACCOUNT
                paymentRails:
                  - ACH
                  - WIRE
                accountNumber: '1234567890'
                routingNumber: '021000021'
                bankName: Chase Bank
                reference: UMA-Q12345-REF
              instructionsNotes: Include reference UMA-Q12345-REF in memo
            - accountOrWalletInfo:
                accountType: SPARK_WALLET
                assetType: BTC
                address: >-
                  spark1pgssyuuuhnrrdjswal5c3s3rafw9w3y5dd4cjy3duxlf7hjzkp0rqx6dj6mrhu
                invoice: >-
                  lnbc15u1p3xnhl2pp5jptserfk3zk4qy42tlucycrfwxhydvlemu9pqr93tuzlv9cc7g3sdqsvfhkcap3xyhx7un8cqzpgxqzjcsp5f8c52y2stc300gl6s4xswtjpc37hrnnr3c9wvtgjfuvqmpm35evq9qyyssqy4lgd8tj637qcjp05rdpxxykjenthxftej7a2zzmwrmrl70fyj9hvj0rewhzj7jfyuwkwcg9g2jpwtk3wkjtwnkdks84hsnu8xps5vsq4gj5hs
        transactionId:
          type: string
          description: The ID of the transaction created from this quote.
          example: Transaction:019542f5-b3e7-1d02-0000-000000000005
        counterpartyInformation:
          $ref: '#/components/schemas/CounterpartyInformation'
          description: >-
            Additional information about the counterparty, if available and
            required by the platform in their configuration.
        rateDetails:
          $ref: '#/components/schemas/OutgoingRateDetails'
          description: Details about the rate and fees for the transaction.
        purposeOfPayment:
          $ref: '#/components/schemas/PurposeOfPayment'
          description: >-
            The purpose of payment the quote was created with. Present only when
            the quote request set `purposeOfPayment`.
        documentIds:
          type: array
          description: >-
            IDs of the supporting documents attached to the payment behind this
            quote, as passed in `documentIds` on `POST /quotes`. Present only
            when the quote was created with `documentIds`. Grid returns such a
            quote only after it has attached every document. Call `GET
            /payment-documents/{paymentDocumentId}` for each document's details,
            such as its `documentType` and its `ATTACHED` status.
          items:
            type: string
          example:
            - PaymentDocument:019542f5-b3e7-1d02-0000-000000000001
            - PaymentDocument:019542f5-b3e7-1d02-0000-000000000002
            - PaymentDocument:019542f5-b3e7-1d02-0000-000000000003
        scaChallenge:
          $ref: '#/components/schemas/ScaChallenge'
          description: >-
            Present only while `status` is `PENDING_AUTHORIZATION`: the Strong
            Customer Authentication challenge to satisfy before this quote can
            be executed (or, for realtime-funding sources, before
            `paymentInstructions` are issued). Omitted for customers outside
            SCA-regulated regions (non-EU).
    FieldError:
      type: object
      required:
        - field
      description: >-
        One field-level validation failure. Field-validation errors on submit
        endpoints (e.g. `POST /customers`, `PATCH /customers/{id}`) emit an
        array of these under `details.errors` so platforms can render
        form-field-level UX for every failure in a single round-trip.
      properties:
        field:
          type: string
          description: Dot-notation path to the offending field.
          example: identifier
        constraint:
          $ref: '#/components/schemas/FieldConstraint'
        message:
          type: string
          description: Human-readable explanation of what's wrong with this field.
          example: Value is not one of the allowed enum members.
    PaymentDocumentRequirementId:
      type: string
      description: >-
        A stable identifier for one required document within a purpose's
        requirements. The same ID means the same requirement across quotes. It
        is separate from `PaymentDocumentType`. The requirement ID names the
        document to supply, and the document type names what a file is. The two
        differ where a requirement accepts alternatives. For example, a file
        declared as either `PURCHASE_ORDER` or `DELIVERY_SLIP` fills the
        `SUPPORTING_PROOF` requirement.


        [Supporting
        Documents](https://docs.lightspark.com/payouts-and-b2b/payment-flow/send-payment#supporting-documents)
        lists the IDs each purpose requires.


        Treat the ID as an opaque value, not a member of a fixed list. Grid may
        add new IDs as requirements change.
      example: SUPPORTING_PROOF
    RefusalReason:
      type: string
      description: >
        Why Grid refused the request, as `details.refusalReason`. Several
        refusals

        share one `code`, and `reason` is a message that may be reworded, so
        branch

        on this value rather than on `reason`. Treat it as an open set, not a
        fixed

        list: Grid may add values, and an unknown one is a refusal without a
        known

        cause.


        | Refusal reason | Status | Description |

        |----------------|--------|-------------|

        | `AGENT_API_DISABLED` | 403 | The agent API is not enabled for the
        platform |

        | `AGENT_CUSTOMER_INACTIVE` | 403 | The agent's customer is not active |

        | `AGENT_INACTIVE` | 403 | The agent is paused or deleted |

        | `AGENT_NO_DELEGATED_KEY` | 403 | The agent holds no active delegated
        key for the source wallet |

        | `AGENT_PERMISSION_REQUIRED` | 403 | The agent's policy lacks a
        permission this call needs. `details.permission` names it |

        | `AGENT_ACCOUNT_NOT_ALLOWED` | 403 | The agent's policy does not allow
        the source account or funding source |

        | `AGENT_DEPOSIT_ACCOUNT_NOT_ALLOWED` | 403 | The agent's policy does
        not allow deposits to this account |

        | `AGENT_POLICY_DENIED` | 403 | The agent's policy denied executing the
        quote. `details.policyDenialReason` says which rule |

        | `AGENT_QUOTE_HELD` | 403 | The quote cannot be sent and is held for
        manual follow-up |

        | `AGENT_CARDS_DISABLED` | 403 | Agent cards are not enabled for the
        platform |

        | `AGENT_CARDS_CUSTOMER_NOT_VERIFIED` | 403 | Agent cards need a
        verified individual customer |

        | `AGENT_CARD_HANDOVER_DISABLED` | 403 | Handing an agent's card over to
        its customer is not enabled for the platform |

        | `AGENT_PURCHASE_CARDS_DISABLED` | 403 | Agent purchase cards are not
        enabled for the platform |

        | `AGENT_RECURRING_PURCHASE_CARDS_DISABLED` | 403 | Agent recurring
        purchase cards are not enabled for the platform |

        | `AGENT_PURCHASE_CARD_POLICY_DENIED` | 403 | The agent's policy denied
        the purchase card. `details.policyDenialReason` says which rule |

        | `CARDS_DISABLED` | 403 | Cards are not enabled for the platform |

        | `CARDHOLDER_INFO_MISSING` | 400 | The cardholder record lacks fields a
        card needs. `details.missingFields` lists them; supply them through the
        customers API |

        | `CARDHOLDER_BANK_ACCOUNT_NOT_OPEN` | 400 | The cardholder's USD bank
        account is not open yet, so no card can be issued until it is |

        | `CARDHOLDER_COUNTRY_NOT_SUPPORTED` | 400 | The cardholder's address is
        outside the United States, where agent cards are not offered yet |

        | `CARDHOLDER_HOLDS_CARD` | 409 | The cardholder already holds a card
        and the platform allows one per cardholder. Close it before issuing
        another |

        | `INVOICE_SUB_SAT_AMOUNT` | 400 | The Lightning invoice's amount is not
        a whole number of satoshis |

        | `INVOICE_FUNDS_DEPOSIT` | 400 | The Lightning invoice was issued by
        Lightspark to fund a deposit and cannot be paid with a send |

        | `INVOICE_FUNDS_OWN_DEPOSIT` | 400 | The Lightning invoice funds a
        deposit of the sender's own. Quote a transfer between the customer's
        accounts instead |
      example: AGENT_POLICY_DENIED
    AgentPolicyDenialReason:
      type: string
      description: >
        Which agent policy rule denied executing a quote or issuing a purchase
        card.

        Sent as `details.policyDenialReason` with refusal reason

        `AGENT_POLICY_DENIED` or `AGENT_PURCHASE_CARD_POLICY_DENIED`. Treat it
        as an

        open set, not a fixed list: Grid may add values.


        | Reason | Description |

        |--------|-------------|

        | `INVALID_AMOUNT` | The amount is not one the policy can evaluate |

        | `AGENT_PAUSED` | The agent is paused |

        | `PERMISSION_MISSING` | The policy lacks `EXECUTE_QUOTES` |

        | `ACCOUNT_NOT_ALLOWED` | The policy does not allow the source account |

        | `PER_TRANSACTION_LIMIT_EXCEEDED` | The amount exceeds the
        per-transaction limit |

        | `DAILY_LIMIT_EXCEEDED` | The amount would exceed the daily spending
        limit |

        | `MONTHLY_LIMIT_EXCEEDED` | The amount would exceed the monthly
        spending limit |

        | `DAILY_TRANSACTION_LIMIT_EXCEEDED` | The agent has made its daily
        number of transactions |

        | `POOL_LIMIT_EXCEEDED` | The amount would exceed a limit of the agent's
        spending pool |

        | `POOL_PAYMENT_TYPE_NOT_ALLOWED` | The agent's spending pool does not
        allow this kind of payment |
      example: DAILY_LIMIT_EXCEEDED
    AedExternalAccountCreateInfo:
      title: AED Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/AedAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/AedBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/AedBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/AedBeneficiary'
                  BUSINESS: '#/components/schemas/AedBusinessBeneficiary'
    BdtExternalAccountCreateInfo:
      title: BDT Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/BdtAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/BdtBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/BusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/BdtBeneficiary'
                  BUSINESS: '#/components/schemas/BusinessBeneficiary'
    BrlExternalAccountCreateInfo:
      title: BRL Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/BrlAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/BrlBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/BrlBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/BrlBeneficiary'
                  BUSINESS: '#/components/schemas/BrlBusinessBeneficiary'
    BwpExternalAccountCreateInfo:
      title: BWP Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/BwpAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/BwpBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/BwpBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/BwpBeneficiary'
                  BUSINESS: '#/components/schemas/BwpBusinessBeneficiary'
    CadExternalAccountCreateInfo:
      title: CAD Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/CadAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/CadBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/BusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/CadBeneficiary'
                  BUSINESS: '#/components/schemas/BusinessBeneficiary'
    CnyExternalAccountCreateInfo:
      title: CNY Account
      description: >-
        A payout to a CNY bank account with a `BUSINESS` beneficiary needs
        supporting documents for its `purposeOfPayment`. Upload them with `POST
        /payment-documents` and pass their IDs in `documentIds` on `POST
        /quotes`. [Supporting
        documents](https://docs.lightspark.com/payouts-and-b2b/payment-flow/send-payment#supporting-documents)
        lists the documents each purpose needs.
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/CnyAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/CnyBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/CnyBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/CnyBeneficiary'
                  BUSINESS: '#/components/schemas/CnyBusinessBeneficiary'
    CopExternalAccountCreateInfo:
      title: COP Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/CopAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/CopBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/CopBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/CopBeneficiary'
                  BUSINESS: '#/components/schemas/CopBusinessBeneficiary'
    DkkExternalAccountCreateInfo:
      title: DKK Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/DkkAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/DkkBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/DkkBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/DkkBeneficiary'
                  BUSINESS: '#/components/schemas/DkkBusinessBeneficiary'
    EgpExternalAccountCreateInfo:
      title: EGP Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/EgpAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/EgpBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/EgpBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/EgpBeneficiary'
                  BUSINESS: '#/components/schemas/EgpBusinessBeneficiary'
    EurExternalAccountCreateInfo:
      title: EUR Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/EurAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/EurBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/EurBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/EurBeneficiary'
                  BUSINESS: '#/components/schemas/EurBusinessBeneficiary'
    GbpExternalAccountCreateInfo:
      title: GBP Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/GbpAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/GbpBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/GbpBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/GbpBeneficiary'
                  BUSINESS: '#/components/schemas/GbpBusinessBeneficiary'
    GhsExternalAccountCreateInfo:
      title: GHS Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/GhsAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/GhsBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/BusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/GhsBeneficiary'
                  BUSINESS: '#/components/schemas/BusinessBeneficiary'
    GtqExternalAccountCreateInfo:
      title: GTQ Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/GtqAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/GtqBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/BusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/GtqBeneficiary'
                  BUSINESS: '#/components/schemas/BusinessBeneficiary'
    HkdExternalAccountCreateInfo:
      title: HKD Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/HkdAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/HkdBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/HkdBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/HkdBeneficiary'
                  BUSINESS: '#/components/schemas/HkdBusinessBeneficiary'
    HtgExternalAccountCreateInfo:
      title: HTG Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/HtgAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/HtgBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/BusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/HtgBeneficiary'
                  BUSINESS: '#/components/schemas/BusinessBeneficiary'
    IdrExternalAccountCreateInfo:
      title: IDR Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/IdrAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/IdrBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/IdrBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/IdrBeneficiary'
                  BUSINESS: '#/components/schemas/IdrBusinessBeneficiary'
    InrExternalAccountCreateInfo:
      title: INR Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/InrAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/InrBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/InrBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/InrBeneficiary'
                  BUSINESS: '#/components/schemas/InrBusinessBeneficiary'
    JmdExternalAccountCreateInfo:
      title: JMD Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/JmdAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/JmdBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/BusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/JmdBeneficiary'
                  BUSINESS: '#/components/schemas/BusinessBeneficiary'
    KesExternalAccountCreateInfo:
      title: KES Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/KesAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/KesBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/KesBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/KesBeneficiary'
                  BUSINESS: '#/components/schemas/KesBusinessBeneficiary'
    MwkExternalAccountCreateInfo:
      title: MWK Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/MwkAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/MwkBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/MwkBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/MwkBeneficiary'
                  BUSINESS: '#/components/schemas/MwkBusinessBeneficiary'
    MxnExternalAccountCreateInfo:
      title: MXN Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/MxnAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/MxnBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/MxnBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/MxnBeneficiary'
                  BUSINESS: '#/components/schemas/MxnBusinessBeneficiary'
    MyrExternalAccountCreateInfo:
      title: MYR Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/MyrAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/MyrBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/MyrBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/MyrBeneficiary'
                  BUSINESS: '#/components/schemas/MyrBusinessBeneficiary'
    NgnExternalAccountCreateInfo:
      title: NGN Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/NgnAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/NgnBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/NgnBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/NgnBeneficiary'
                  BUSINESS: '#/components/schemas/NgnBusinessBeneficiary'
    PhpExternalAccountCreateInfo:
      title: PHP Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/PhpAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/PhpBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/PhpBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/PhpBeneficiary'
                  BUSINESS: '#/components/schemas/PhpBusinessBeneficiary'
    PkrExternalAccountCreateInfo:
      title: PKR Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/PkrAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/PkrBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/BusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/PkrBeneficiary'
                  BUSINESS: '#/components/schemas/BusinessBeneficiary'
    RwfExternalAccountCreateInfo:
      title: RWF Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/RwfAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/RwfBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/RwfBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/RwfBeneficiary'
                  BUSINESS: '#/components/schemas/RwfBusinessBeneficiary'
    SgdExternalAccountCreateInfo:
      title: SGD Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/SgdAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/SgdBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/SgdBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/SgdBeneficiary'
                  BUSINESS: '#/components/schemas/SgdBusinessBeneficiary'
    SlvExternalAccountCreateInfo:
      title: SLV Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/SlvAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/SlvBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/BusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/SlvBeneficiary'
                  BUSINESS: '#/components/schemas/BusinessBeneficiary'
    ThbExternalAccountCreateInfo:
      title: THB Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/ThbAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/ThbBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/ThbBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/ThbBeneficiary'
                  BUSINESS: '#/components/schemas/ThbBusinessBeneficiary'
    TzsExternalAccountCreateInfo:
      title: TZS Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/TzsAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/TzsBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/TzsBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/TzsBeneficiary'
                  BUSINESS: '#/components/schemas/TzsBusinessBeneficiary'
    UgxExternalAccountCreateInfo:
      title: UGX Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/UgxAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/UgxBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/UgxBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/UgxBeneficiary'
                  BUSINESS: '#/components/schemas/UgxBusinessBeneficiary'
    UsdExternalAccountCreateInfo:
      title: USD Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/UsdAccountInfoBase'
        - type: object
          required:
            - bankAccountType
            - beneficiary
          properties:
            bankAccountType:
              type: string
              description: >-
                Whether the account is a checking or a savings account. Grid
                uses this to set the ACH transaction code, so a value that does
                not match the account causes the receiving bank to return a
                notification of change.
              enum:
                - CHECKING
                - SAVINGS
              example: CHECKING
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/UsdBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/UsdBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/UsdBeneficiary'
                  BUSINESS: '#/components/schemas/UsdBusinessBeneficiary'
    VndExternalAccountCreateInfo:
      title: VND Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/VndAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/VndBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/VndBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/VndBeneficiary'
                  BUSINESS: '#/components/schemas/VndBusinessBeneficiary'
    XafExternalAccountCreateInfo:
      title: XAF Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/XafAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/XafBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/XafBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/XafBeneficiary'
                  BUSINESS: '#/components/schemas/XafBusinessBeneficiary'
    XofExternalAccountCreateInfo:
      title: XOF Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/XofAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/XofBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/XofBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/XofBeneficiary'
                  BUSINESS: '#/components/schemas/XofBusinessBeneficiary'
    ZarExternalAccountCreateInfo:
      title: ZAR Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/ZarAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/ZarBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/ZarBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/ZarBeneficiary'
                  BUSINESS: '#/components/schemas/ZarBusinessBeneficiary'
    ZmwExternalAccountCreateInfo:
      title: ZMW Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/ZmwAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/ZmwBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/ZmwBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/ZmwBeneficiary'
                  BUSINESS: '#/components/schemas/ZmwBusinessBeneficiary'
    SwiftExternalAccountCreateInfo:
      title: SWIFT Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/SwiftAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/SwiftBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/BusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/SwiftBeneficiary'
                  BUSINESS: '#/components/schemas/BusinessBeneficiary'
    BaseWalletExternalAccountInfo:
      title: Base Wallet
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/BaseWalletInfo'
        - $ref: '#/components/schemas/WalletBeneficiaryFields'
        - $ref: '#/components/schemas/WalletCustodyFields'
    EthereumWalletExternalAccountInfo:
      title: Ethereum L1 Wallet
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/EthereumWalletInfo'
        - $ref: '#/components/schemas/WalletBeneficiaryFields'
        - $ref: '#/components/schemas/WalletCustodyFields'
    LightningExternalAccountInfo:
      title: Lightning
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/LightningInfo'
    PolygonWalletExternalAccountInfo:
      title: Polygon Wallet
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/PolygonWalletInfo'
        - $ref: '#/components/schemas/WalletBeneficiaryFields'
        - $ref: '#/components/schemas/WalletCustodyFields'
    PlasmaWalletExternalAccountInfo:
      title: Plasma Wallet
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/PlasmaWalletInfo'
        - $ref: '#/components/schemas/WalletBeneficiaryFields'
        - $ref: '#/components/schemas/WalletCustodyFields'
    ArbitrumWalletExternalAccountInfo:
      title: Arbitrum Wallet
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/ArbitrumWalletInfo'
        - $ref: '#/components/schemas/WalletBeneficiaryFields'
        - $ref: '#/components/schemas/WalletCustodyFields'
    SolanaWalletExternalAccountInfo:
      title: Solana Wallet
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/SolanaWalletInfo'
        - $ref: '#/components/schemas/WalletBeneficiaryFields'
        - $ref: '#/components/schemas/WalletCustodyFields'
    SparkWalletExternalAccountInfo:
      title: Spark Wallet
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/SparkWalletInfo'
        - $ref: '#/components/schemas/WalletBeneficiaryFields'
        - $ref: '#/components/schemas/WalletCustodyFields'
    TronWalletExternalAccountInfo:
      title: Tron Wallet
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/TronWalletInfo'
        - $ref: '#/components/schemas/WalletBeneficiaryFields'
        - $ref: '#/components/schemas/WalletCustodyFields'
    IlsExternalAccountCreateInfo:
      title: ILS Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/IlsAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/IlsBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/IlsBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/IlsBeneficiary'
                  BUSINESS: '#/components/schemas/IlsBusinessBeneficiary'
    TryExternalAccountCreateInfo:
      title: TRY Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/TryAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/TryBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/TryBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/TryBeneficiary'
                  BUSINESS: '#/components/schemas/TryBusinessBeneficiary'
    ChfExternalAccountCreateInfo:
      title: CHF Account
      allOf:
        - $ref: '#/components/schemas/BaseExternalAccountInfo'
        - $ref: '#/components/schemas/ChfAccountInfoBase'
        - type: object
          required:
            - beneficiary
          properties:
            beneficiary:
              oneOf:
                - $ref: '#/components/schemas/ChfBeneficiary'
                  title: Individual Beneficiary
                - $ref: '#/components/schemas/ChfBusinessBeneficiary'
                  title: Business Beneficiary
              discriminator:
                propertyName: beneficiaryType
                mapping:
                  INDIVIDUAL: '#/components/schemas/ChfBeneficiary'
                  BUSINESS: '#/components/schemas/ChfBusinessBeneficiary'
    ClaimablePayoutStatus:
      type: string
      enum:
        - PENDING_APPROVAL
        - AWAITING_CLAIM
        - CLAIMED
        - PAID
        - EXPIRED
        - CANCELLED
        - FAILED
      description: >
        Status of a claimable payout. Grid holds the amount against the sender's

        Embedded Wallet balance and the agent's spending limits from creation
        until

        the payout is `PAID`, or releases it when the payout ends in any other

        status.


        | Status | Description |

        |--------|-------------|

        | `PENDING_APPROVAL` | Waiting for the customer to approve the agent's
        request. No claim token can be issued yet |

        | `AWAITING_CLAIM` | Approved; the recipient can claim it with a claim
        token until `expiresAt` |

        | `CLAIMED` | The recipient confirmed a locked quote and Grid is paying
        her |

        | `PAID` | The payout reached the recipient's account |

        | `EXPIRED` | Not claimed by `expiresAt`, or not approved in time. The
        hold is released |

        | `CANCELLED` | Cancelled by the agent, or rejected by the customer. The
        hold is released |

        | `FAILED` | The payout could not be made; see `failureReason`. The hold
        is released |
    CurrencyAmount:
      type: object
      required:
        - amount
        - currency
      properties:
        amount:
          type: integer
          format: int64
          description: >-
            Amount in the smallest unit of the currency (e.g., cents for
            USD/EUR, satoshis for BTC)
          example: 12550
        currency:
          $ref: '#/components/schemas/Currency'
    ClaimablePayoutRecipient:
      type: object
      description: >-
        The person a claimable payout is for. Exactly one of `phoneNumber` and
        `email` is set: the one-time code that proves the recipient holds the
        link goes there.
      required:
        - name
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 100
          description: >-
            What the sender calls the recipient. Shown to the customer when they
            approve the payout and in the message that carries the link; the
            recipient gives her legal name with her payout details.
          example: Maria
        phoneNumber:
          type: string
          description: The recipient's mobile number in E.164 format.
          example: '+639171234567'
        email:
          type: string
          format: email
          maxLength: 254
          description: The recipient's email address.
          example: maria@example.com
        country:
          type: string
          description: >-
            ISO 3166-1 alpha-2 country the recipient is paid in. Defaults to the
            country of `phoneNumber`'s dialing code; required with `email`.
            Always present on a payout Grid returns. The recipient can choose
            another country when she claims.
          pattern: ^[A-Z]{2}$
          example: PH
    ClaimablePayoutFailureReason:
      type: string
      enum:
        - INSUFFICIENT_FUNDS
        - RECIPIENT_REFUSED
        - AGENT_INACTIVE
        - PAYOUT_FAILED
      description: >
        Why a claimable payout is `FAILED`.


        | Reason | Description |

        |--------|-------------|

        | `INSUFFICIENT_FUNDS` | The sender's wallet no longer held the amount
        when the recipient claimed it |

        | `RECIPIENT_REFUSED` | Grid's screening did not clear the recipient's
        account |

        | `AGENT_INACTIVE` | The agent was deleted or paused, or its delegated
        key revoked, before the payout was made |

        | `PAYOUT_FAILED` | The payout to the recipient's account failed |
    QuoteStatus:
      type: string
      enum:
        - PENDING
        - PENDING_AUTHORIZATION
        - PROCESSING
        - COMPLETED
        - FAILED
        - EXPIRED
      description: >-
        Current status of the quote. `PENDING_AUTHORIZATION` occurs only for
        customers in a region where Strong Customer Authentication is required
        (e.g. EU): the quote carries an `scaChallenge` that must be authorized
        before execution, and for realtime-funding sources `paymentInstructions`
        are withheld until it is satisfied.
      example: PENDING
    QuoteSourceOneOf:
      oneOf:
        - $ref: '#/components/schemas/AccountQuoteSource'
        - $ref: '#/components/schemas/RealtimeFundingQuoteSource'
      discriminator:
        propertyName: sourceType
        mapping:
          ACCOUNT: '#/components/schemas/AccountQuoteSource'
          REALTIME_FUNDING: '#/components/schemas/RealtimeFundingQuoteSource'
    QuoteDestinationOneOf:
      oneOf:
        - $ref: '#/components/schemas/AccountDestination'
        - $ref: '#/components/schemas/UmaAddressDestination'
      discriminator:
        propertyName: destinationType
        mapping:
          ACCOUNT: '#/components/schemas/AccountDestination'
          UMA_ADDRESS: '#/components/schemas/UmaAddressDestination'
    Currency:
      type: object
      properties:
        code:
          type: string
          description: >-
            Three-letter currency code (ISO 4217) for fiat currencies. Some
            cryptocurrencies may use their own ticker symbols (e.g. "BTC" for
            Bitcoin, "USDC" for USDC, etc.)
          example: USD
        name:
          type: string
          description: Full name of the currency
          example: United States Dollar
        symbol:
          type: string
          description: Symbol of the currency
          example: $
        decimals:
          type: integer
          description: Number of decimal places for the currency
          minimum: 0
          example: 2
    PaymentInstructions:
      type: object
      required:
        - accountOrWalletInfo
      properties:
        instructionsNotes:
          type: string
          description: Additional human-readable instructions for making the payment
          example: >-
            Please ensure the reference code is included in the payment
            memo/description field
        isPlatformAccount:
          type: boolean
          description: >-
            Indicates whether the account is a platform account or a customer
            account.
          example: true
        accountOrWalletInfo:
          description: >-
            Where to send the funds. Quotes can carry any of these types.
            Internal accounts return only `USD_ACCOUNT`, `EUR_ACCOUNT`,
            `SWIFT_ACCOUNT`, and the network wallet types; MXN, BRL, COP, ARS,
            Lightning, and Bitcoin L1 instructions appear only on real-time
            funded quotes.
          oneOf:
            - $ref: '#/components/schemas/PaymentUsdAccountInfo'
            - $ref: '#/components/schemas/PaymentEurAccountInfo'
            - $ref: '#/components/schemas/PaymentSwiftAccountInfo'
            - $ref: '#/components/schemas/PaymentMxnAccountInfo'
            - $ref: '#/components/schemas/PaymentBrlAccountInfo'
            - $ref: '#/components/schemas/PaymentCopAccountInfo'
            - $ref: '#/components/schemas/PaymentArsAccountInfo'
            - $ref: '#/components/schemas/PaymentSparkWalletInfo'
            - $ref: '#/components/schemas/PaymentLightningInvoiceInfo'
            - $ref: '#/components/schemas/PaymentBitcoinDepositAddressInfo'
            - $ref: '#/components/schemas/PaymentSolanaWalletInfo'
            - $ref: '#/components/schemas/PaymentEthereumWalletInfo'
            - $ref: '#/components/schemas/PaymentBaseWalletInfo'
            - $ref: '#/components/schemas/PaymentPolygonWalletInfo'
            - $ref: '#/components/schemas/PaymentArbitrumWalletInfo'
            - $ref: '#/components/schemas/PaymentTronWalletInfo'
            - $ref: '#/components/schemas/PaymentPlasmaWalletInfo'
            - $ref: '#/components/schemas/PaymentEmbeddedWalletInfo'
          discriminator:
            propertyName: accountType
            mapping:
              USD_ACCOUNT: '#/components/schemas/PaymentUsdAccountInfo'
              EUR_ACCOUNT: '#/components/schemas/PaymentEurAccountInfo'
              SWIFT_ACCOUNT: '#/components/schemas/PaymentSwiftAccountInfo'
              MXN_ACCOUNT: '#/components/schemas/PaymentMxnAccountInfo'
              BRL_ACCOUNT: '#/components/schemas/PaymentBrlAccountInfo'
              COP_ACCOUNT: '#/components/schemas/PaymentCopAccountInfo'
              ARS_ACCOUNT: '#/components/schemas/PaymentArsAccountInfo'
              SPARK_WALLET: '#/components/schemas/PaymentSparkWalletInfo'
              LIGHTNING: '#/components/schemas/PaymentLightningInvoiceInfo'
              BITCOIN_L1: '#/components/schemas/PaymentBitcoinDepositAddressInfo'
              SOLANA_WALLET: '#/components/schemas/PaymentSolanaWalletInfo'
              ETHEREUM_WALLET: '#/components/schemas/PaymentEthereumWalletInfo'
              BASE_WALLET: '#/components/schemas/PaymentBaseWalletInfo'
              POLYGON_WALLET: '#/components/schemas/PaymentPolygonWalletInfo'
              ARBITRUM_WALLET: '#/components/schemas/PaymentArbitrumWalletInfo'
              TRON_WALLET: '#/components/schemas/PaymentTronWalletInfo'
              PLASMA_WALLET: '#/components/schemas/PaymentPlasmaWalletInfo'
              EMBEDDED_WALLET: '#/components/schemas/PaymentEmbeddedWalletInfo'
    CounterpartyInformation:
      type: object
      description: >-
        Additional information about the counterparty, if available and relevant
        to the transaction and platform.
      additionalProperties: true
      example:
        FULL_NAME: John Sender
        BIRTH_DATE: '1985-06-15'
        NATIONALITY: DE
    OutgoingRateDetails:
      description: >-
        Details about the rate and fees for an outgoing transaction or quote.
        Note: `counterpartyFixedFee` is denominated in the receiving currency,
        so its equivalent value in the sending currency fluctuates with the FX
        rate. As a result, the total fee on a subsequent quote for the same
        transfer may differ even if the underlying fee structure is unchanged.
      type: object
      required:
        - counterpartyMultiplier
        - counterpartyFixedFee
        - gridApiMultiplier
        - gridApiFixedFee
        - gridApiVariableFeeRate
        - gridApiVariableFeeAmount
      properties:
        counterpartyMultiplier:
          type: number
          format: double
          description: >-
            The underlying multiplier from mSATs to the receiving currency as
            returned by the counterparty institution.
          exclusiveMinimum: 0
          example: 1.08
        counterpartyFixedFee:
          type: integer
          format: int64
          description: >-
            The fixed fee charged by the counterparty institution to execute the
            quote in the smallest unit of the receiving currency (eg. cents).
          minimum: 0
          example: 10
        gridApiMultiplier:
          type: number
          format: double
          description: >-
            The underlying multiplier from the sending currency to mSATS,
            including variable fees.
          exclusiveMinimum: 0
          example: 0.925
        gridApiFixedFee:
          type: integer
          format: int64
          description: >-
            The fixed fee charged by the Grid product to execute the quote in
            the smallest unit of the sending currency (eg. cents).
          minimum: 0
          example: 10
        gridApiVariableFeeRate:
          type: number
          format: double
          description: >-
            The variable fee rate charged by the Grid product to execute the
            quote as a percentage of the sending currency amount.
          minimum: 0
          example: 0.003
        gridApiVariableFeeAmount:
          type: number
          format: int64
          description: >-
            The variable fee amount charged by the Grid product to execute the
            quote in the smallest unit of the sending currency (eg. cents). This
            is the sending amount times gridApiVariableFeeRate.
          minimum: 0
          example: 30
    PurposeOfPayment:
      type: string
      description: >-
        The purpose of the payment. This may be required when sending to certain
        geographies (e.g. India).


        Some destinations accept only certain purposes. A business payout to
        China must use one of the purposes listed in [Supporting
        Documents](https://docs.lightspark.com/payouts-and-b2b/payment-flow/send-payment#supporting-documents),
        and each needs its own supporting documents.
      enum:
        - GIFT
        - SELF
        - GOODS_OR_SERVICES
        - EDUCATION
        - HEALTH_OR_MEDICAL
        - REAL_ESTATE_PURCHASE
        - TAX_PAYMENT
        - LOAN_PAYMENT
        - UTILITY_BILL
        - DONATION
        - TRAVEL
        - FAMILY_SUPPORT
        - SALARY_PAYMENT
        - EXPORTED_GOODS_PREPAYMENT
        - EXPORTED_GOODS_POSTPAYMENT
        - SERVICE_CHARGES
        - OFFICE_EXPENSES
        - DELIVERY_FEES
        - HOTEL_ACCOMMODATION
        - COMMISSION_ON_GOODS
        - COMMISSION_ON_SERVICES
        - ACCOUNTING_SERVICES
        - EXHIBITION_SERVICES
        - OTHER
    ScaChallenge:
      type: object
      description: >-
        A Strong Customer Authentication challenge that must be satisfied before
        a money-movement operation can complete. This object is **only present
        when the customer is in a region where SCA is required** (the EU); for
        customers outside SCA-regulated regions it is omitted entirely and no
        action is needed.


        When present on a quote, authorize it by submitting an
        `ScaAuthorization` proof to `POST /quotes/{quoteId}/authorize`.


        **A single operation may require more than one authorization, in
        sequence.** Treat `scaChallenge` as *the challenge to satisfy now*, not
        "the only one". After each authorize, re-inspect the returned
        quote/transaction: if it is still `PENDING_AUTHORIZATION`, it carries
        the **next** `scaChallenge` (a new `id`) — authorize that too, and
        repeat until it leaves `PENDING_AUTHORIZATION`. Do not assume one
        authorization releases the transfer. The number of authorizations is
        flow-dependent and **may decrease in future**: for example, a
        cross-currency send today authorizes the currency conversion and the
        payout as two separate challenges; a future update may collapse them
        into one. A client written to loop on status handles any count
        unchanged.
      required:
        - id
        - expiresAt
        - factor
        - availableFactors
      properties:
        id:
          type: string
          description: >-
            Unique identifier for this challenge. The server resolves the active
            challenge from the quote or transaction being authorized, so this
            field need not be supplied back; it is informational (e.g. for
            logging or correlation).
          example: ScaChallenge:019542f5-b3e7-1d02-0000-000000000007
        expiresAt:
          type: string
          format: date-time
          description: >-
            Absolute UTC timestamp after which this challenge can no longer be
            authorized.
          example: '2025-10-03T12:05:00Z'
        factor:
          $ref: '#/components/schemas/ScaFactor'
          description: The factor this challenge was issued for. Defaults to `SMS_OTP`.
        availableFactors:
          type: array
          description: The factors the customer may use to satisfy this challenge.
          items:
            $ref: '#/components/schemas/ScaFactor'
          example:
            - SMS_OTP
        purpose:
          type:
            - string
            - 'null'
          description: >-
            Optional, informational label for what this particular challenge in
            the sequence authorizes — useful for step UX (e.g. "Authorize the
            currency conversion" vs "Authorize the payout"). Known values
            include `CURRENCY_CONVERSION`, `PAYOUT`, `TRANSFER`, and
            `STANDING_INSTRUCTION` (authorizing a rule-based account's sweep
            instruction), but the set is **non-exhaustive and may grow** — treat
            unrecognized values as a generic authorization step and do not
            branch program logic on it. Omitted when steps are not distinguished
            (e.g. a single-authorization flow).
          example: PAYOUT
        passkeyAssertionOptions:
          type:
            - object
            - 'null'
          additionalProperties: true
          description: >-
            Opaque WebAuthn assertion request options (including the
            relying-party id, challenge, and allowed credentials), present only
            when `factor` is `PASSKEY`. Pass to the device's WebAuthn API to
            produce the assertion submitted back in
            `ScaAuthorization.passkeyAssertion`.
        passkeyAllowedOrigins:
          type:
            - array
            - 'null'
          items:
            type: string
          description: >-
            The origins the WebAuthn ceremony may run against. Populated for
            enrollment and login passkey challenges; the origin the assertion is
            produced against must be one of these and echoed back as
            `ScaAuthorization.origin`. Per-transaction passkey challenges omit
            this (they carry `passkeyAssertionOptions` only) — see
            `ScaAuthorization.origin` for how to source the origin in that case.
          example:
            - https://app.example.com
    FieldConstraint:
      type: object
      description: >-
        Machine-readable validator hint accompanying a 400 `INVALID_INPUT`
        error. Consumers use it to drive form UI (input types, dropdowns,
        masking, length limits) and to pre-validate the field client-side before
        re-submitting. Fields are additive.
      properties:
        format:
          type: string
          description: >-
            Named format the value must satisfy — HTML5 input type names
            (`email`, `tel`, `url`, `date`, ...) or semantic slugs
            (`iso3166-1-alpha-2`, `bcp47-language-tag`, `us-ssn`, `e.164`).
          example: email
        pattern:
          type: string
          description: Regular expression the value must match (JavaScript-flavor).
          example: ^\d{5}(-\d{4})?$
        enum:
          type: array
          items:
            type: string
          description: Allowed values when the field is drawn from a fixed set.
          example:
            - SSN
            - ITIN
            - NON_US_TAX_ID
        minLength:
          type: integer
          description: Minimum length in characters.
          example: 1
        maxLength:
          type: integer
          description: Maximum length in characters.
          example: 500
    BaseExternalAccountInfo:
      type: object
      required:
        - accountType
      properties:
        accountType:
          $ref: '#/components/schemas/ExternalAccountType'
    AedAccountInfoBase:
      type: object
      required:
        - accountType
        - iban
      properties:
        accountType:
          type: string
          enum:
            - AED_ACCOUNT
        iban:
          type: string
          description: UAE IBAN (23 characters, starting with AE)
          example: AE070331234567890123456
          minLength: 23
          maxLength: 23
          pattern: ^AE[0-9]{21}$
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: EBILAEAD
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
      example:
        accountType: AED_ACCOUNT
        iban: AE070331234567890123456
        swiftCode: EBILAEAD
    AedBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - address
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    AedBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - address
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    BdtAccountInfoBase:
      type: object
      required:
        - accountType
        - bankName
      description: |-
        Required fields depend on the selected paymentRails:
        - BANK_TRANSFER: accountNumber, bankName
        - MOBILE_MONEY: bankName, phoneNumber
      properties:
        accountType:
          type: string
          enum:
            - BDT_ACCOUNT
        accountNumber:
          type: string
          description: The account number of the bank
          minLength: 1
          maxLength: 34
        bankName:
          type: string
          description: >-
            The name of the bank. Must be one of the `bankName` values `GET
            /discoveries` returns for this country and currency. Send it exactly
            as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: BRAC Bank
        branchCode:
          type: string
          description: The branch code
          minLength: 5
          maxLength: 5
          pattern: ^[0-9]{5}$
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: DEUTDEFF
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
        phoneNumber:
          type: string
          description: The phone number in international format
          example: '+1234567890'
          minLength: 7
          maxLength: 15
          pattern: ^\+[0-9]{6,14}$
      example:
        accountType: BDT_ACCOUNT
        accountNumber: '1234567890'
        bankName: BRAC Bank
        branchCode: '11111'
        swiftCode: DEUTDEFF
        phoneNumber: '+1234567890'
    BdtBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    BusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        registrationNumber:
          type: string
          maxLength: 100
          description: The registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    BrlAccountInfoBase:
      type: object
      required:
        - accountType
        - pixKey
        - pixKeyType
        - taxId
      properties:
        accountType:
          type: string
          enum:
            - BRL_ACCOUNT
        pixKey:
          type: string
          description: The PIX key (email, phone, CPF, CNPJ, or random)
          minLength: 1
          maxLength: 77
        pixKeyType:
          type: string
          description: The type of PIX key
          enum:
            - CPF
            - CNPJ
            - EMAIL
            - PHONE
            - RANDOM
        taxId:
          type: string
          description: The tax ID (CPF or CNPJ)
          minLength: 11
          maxLength: 14
          pattern: ^[0-9]{11,14}$
      example:
        accountType: BRL_ACCOUNT
        pixKey: user@example.com
        pixKeyType: CPF
        taxId: '11111111111'
    BrlBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    BrlBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    BwpAccountInfoBase:
      type: object
      required:
        - accountType
        - phoneNumber
        - provider
      properties:
        accountType:
          type: string
          enum:
            - BWP_ACCOUNT
        phoneNumber:
          type: string
          description: The phone number in international format
          example: '+1234567890'
          minLength: 7
          maxLength: 15
          pattern: ^\+[0-9]{6,14}$
        provider:
          type: string
          description: The mobile money provider name
          minLength: 1
          maxLength: 255
      example:
        accountType: BWP_ACCOUNT
        phoneNumber: '+1234567890'
        provider: Example Provider
    BwpBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    BwpBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
        - registrationNumber
        - taxId
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    CadAccountInfoBase:
      type: object
      required:
        - accountType
        - bankCode
        - branchCode
        - accountNumber
      properties:
        accountType:
          type: string
          enum:
            - CAD_ACCOUNT
        bankCode:
          type: string
          description: Canadian financial institution number (3 digits)
          example: '001'
          minLength: 3
          maxLength: 3
          pattern: ^[0-9]{3}$
        branchCode:
          type: string
          description: Transit number identifying the branch (5 digits)
          example: '00012'
          minLength: 5
          maxLength: 5
          pattern: ^[0-9]{5}$
        accountNumber:
          type: string
          description: Bank account number (7-12 digits)
          example: '1234567'
          minLength: 7
          maxLength: 12
          pattern: ^[0-9]{7,12}$
    CadBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The registration number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    CnyAccountInfoBase:
      type: object
      required:
        - accountType
        - bankName
      description: >-
        Required fields depend on the selected paymentRails:

        - BANK_TRANSFER: accountNumber, bankName. Business-to-business only, so
        the beneficiary must be a business.

        - MOBILE_MONEY: bankName, phoneNumber. Pays an AliPay or WeChat Pay
        wallet; bankName selects the wallet.
      properties:
        accountType:
          type: string
          enum:
            - CNY_ACCOUNT
        accountNumber:
          type: string
          description: The account number of the bank
          minLength: 1
          maxLength: 34
        bankName:
          type: string
          description: >-
            The name of the bank. Must be one of the `bankName` values `GET
            /discoveries` returns for this country and currency. Send it exactly
            as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: China Construction Bank
        phoneNumber:
          type: string
          description: The phone number in international format
          example: '+1234567890'
          minLength: 7
          maxLength: 15
          pattern: ^\+[0-9]{6,14}$
      example:
        accountType: CNY_ACCOUNT
        accountNumber: '1234567890'
        bankName: China Construction Bank
        phoneNumber: '+1234567890'
    CnyBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    CnyBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - address
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    CopAccountInfoBase:
      type: object
      required:
        - accountType
        - bankName
      description: |-
        Required fields depend on the selected paymentRails:
        - BANK_TRANSFER: accountNumber, bankAccountType, bankName
        - MOBILE_MONEY: bankName, phoneNumber
      properties:
        accountType:
          type: string
          enum:
            - COP_ACCOUNT
        accountNumber:
          type: string
          description: The account number of the bank
          minLength: 1
          maxLength: 34
        bankAccountType:
          type: string
          description: The bank account type
          enum:
            - CHECKING
            - SAVINGS
        bankName:
          type: string
          description: >-
            The name of the bank. Must be one of the `bankName` values `GET
            /discoveries` returns for this country and currency. Send it exactly
            as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: Banco de Colombia (Bancolombia)
        phoneNumber:
          type: string
          description: The phone number in international format
          example: '+1234567890'
          minLength: 7
          maxLength: 15
          pattern: ^\+[0-9]{6,14}$
      example:
        accountType: COP_ACCOUNT
        accountNumber: '1234567890'
        bankAccountType: CHECKING
        bankName: Banco de Colombia (Bancolombia)
        phoneNumber: '+1234567890'
    CopBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
        documentType:
          type: string
          maxLength: 32
          description: Identity document type (Colombia)
          enum:
            - CC
            - CE
            - TI
            - NIT
            - PP
        documentNumber:
          type: string
          maxLength: 50
          description: The identity document number
          minLength: 1
    CopBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
        - taxId
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 64
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    DkkAccountInfoBase:
      type: object
      required:
        - accountType
        - iban
      properties:
        accountType:
          type: string
          enum:
            - DKK_ACCOUNT
        iban:
          type: string
          description: Danish IBAN (18 characters, starting with DK)
          example: DK5000400040116243
          minLength: 18
          maxLength: 18
          pattern: ^DK[0-9]{16}$
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: DABADKKK
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
      example:
        accountType: DKK_ACCOUNT
        iban: DK5000400040116243
        swiftCode: DABADKKK
    DkkBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    DkkBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    EgpAccountInfoBase:
      type: object
      required:
        - accountType
        - bankName
      description: |-
        Required fields depend on the selected paymentRails:
        - BANK_TRANSFER: bankName, iban
        - MOBILE_MONEY: bankName, phoneNumber
      properties:
        accountType:
          type: string
          enum:
            - EGP_ACCOUNT
        iban:
          type: string
          description: Egyptian IBAN (29 characters, starting with EG)
          example: EG380019000500000000263180002
          minLength: 29
          maxLength: 29
          pattern: ^EG[0-9]{27}$
        bankName:
          type: string
          description: >-
            The name of the bank. Must be one of the `bankName` values `GET
            /discoveries` returns for this country and currency. Send it exactly
            as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: BANQUE MISR
        phoneNumber:
          type: string
          description: The phone number in international format
          example: '+1234567890'
          minLength: 7
          maxLength: 15
          pattern: ^\+[0-9]{6,14}$
      example:
        accountType: EGP_ACCOUNT
        iban: EG380019000500000000263180002
        bankName: BANQUE MISR
        phoneNumber: '+1234567890'
    EgpBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    EgpBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - address
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    EurAccountInfoBase:
      type: object
      required:
        - accountType
        - iban
      properties:
        accountType:
          type: string
          enum:
            - EUR_ACCOUNT
        iban:
          type: string
          description: The IBAN of the bank account
          example: DE89370400440532013000
          minLength: 15
          maxLength: 34
          pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
        swiftCode:
          type: string
          description: >-
            The SWIFT/BIC code of the bank. When omitted, Grid derives it from
            the IBAN when possible. Provide it when automatic derivation is
            unavailable.
          example: DEUTDEFF
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
      example:
        accountType: EUR_ACCOUNT
        iban: DE89370400440532013000
        swiftCode: DEUTDEFF
    EurBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - countryOfResidence
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    EurBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - countryOfResidence
        - legalName
        - registrationNumber
        - taxId
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    GbpAccountInfoBase:
      type: object
      required:
        - accountType
        - sortCode
        - accountNumber
      properties:
        accountType:
          type: string
          enum:
            - GBP_ACCOUNT
        sortCode:
          type: string
          description: The UK sort code
          example: '123456'
          minLength: 6
          maxLength: 6
          pattern: ^[0-9]{6}$
        accountNumber:
          type: string
          description: UK bank account number (8 digits)
          minLength: 8
          maxLength: 8
          example: '12345678'
          pattern: ^[0-9]{8}$
      example:
        accountType: GBP_ACCOUNT
        sortCode: '123456'
        accountNumber: '12345678'
    GbpBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    GbpBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    GhsAccountInfoBase:
      type: object
      required:
        - accountType
        - bankName
      description: |-
        Required fields depend on the selected paymentRails:
        - BANK_TRANSFER: accountNumber, bankName
        - MOBILE_MONEY: bankName, phoneNumber
      properties:
        accountType:
          type: string
          enum:
            - GHS_ACCOUNT
        accountNumber:
          type: string
          description: The account number of the bank
          minLength: 1
          maxLength: 34
        bankName:
          type: string
          description: >-
            The name of the bank. Must be one of the `bankName` values `GET
            /discoveries` returns for this country and currency. Send it exactly
            as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: Gcb Bank Ltd
        phoneNumber:
          type: string
          description: The phone number in international format
          example: '+1234567890'
          minLength: 7
          maxLength: 15
          pattern: ^\+[0-9]{6,14}$
      example:
        accountType: GHS_ACCOUNT
        accountNumber: '1234567890'
        bankName: Gcb Bank Ltd
        phoneNumber: '+1234567890'
    GhsBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    GtqAccountInfoBase:
      type: object
      required:
        - accountType
        - accountNumber
        - bankAccountType
        - bankName
      properties:
        accountType:
          type: string
          enum:
            - GTQ_ACCOUNT
        accountNumber:
          type: string
          description: The account number of the bank
          minLength: 1
          maxLength: 34
        bankAccountType:
          type: string
          description: The bank account type
          enum:
            - CHECKING
            - SAVINGS
        bankName:
          type: string
          description: >-
            The name of the beneficiary's bank. Must be one of the `bankName`
            values `GET /discoveries` returns for this country and currency.
            Send it exactly as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: Banco Industrial
      example:
        accountType: GTQ_ACCOUNT
        accountNumber: '1234567890'
        bankAccountType: CHECKING
        bankName: Banco Industrial
    GtqBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - countryOfResidence
        - fullName
        - phoneNumber
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    HkdAccountInfoBase:
      type: object
      required:
        - accountType
        - accountNumber
        - swiftCode
      properties:
        accountType:
          type: string
          enum:
            - HKD_ACCOUNT
        bankName:
          type: string
          description: >-
            Name of the beneficiary's bank. When omitted, resolved from
            swiftCode via the payout partner bank directory at account creation.
            Not checked against `GET /discoveries`.
          minLength: 1
          maxLength: 255
          example: HSBC Hong Kong
        accountNumber:
          type: string
          description: Hong Kong bank account number
          minLength: 1
          maxLength: 34
          example: '123456789012'
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: HSBCHKHHHKH
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
      example:
        accountType: HKD_ACCOUNT
        bankName: HSBC Hong Kong
        accountNumber: '123456789012'
        swiftCode: HSBCHKHHHKH
    HkdBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    HkdBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    HtgAccountInfoBase:
      type: object
      required:
        - accountType
        - phoneNumber
      properties:
        accountType:
          type: string
          enum:
            - HTG_ACCOUNT
        phoneNumber:
          type: string
          description: The phone number in international format
          example: '+1234567890'
          minLength: 7
          maxLength: 15
          pattern: ^\+[0-9]{6,14}$
      example:
        accountType: HTG_ACCOUNT
        phoneNumber: '+1234567890'
    HtgBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    IdrAccountInfoBase:
      type: object
      required:
        - accountType
        - bankName
        - accountNumber
        - swiftCode
        - phoneNumber
      properties:
        accountType:
          type: string
          enum:
            - IDR_ACCOUNT
        bankName:
          type: string
          description: >-
            The name of the bank. Must be one of the `bankName` values `GET
            /discoveries` returns for this country and currency. Send it exactly
            as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: Bank Central Asia (BCA)
        accountNumber:
          type: string
          description: Indonesian bank account number
          minLength: 1
          maxLength: 34
          example: '1234567890'
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: CENAIDJA
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
        phoneNumber:
          type: string
          description: Indonesian phone number for e-wallet payments
          example: '+6281234567890'
          minLength: 7
          maxLength: 15
          pattern: ^\+62[0-9]{9,12}$
      example:
        accountType: IDR_ACCOUNT
        bankName: Bank Central Asia (BCA)
        accountNumber: '1234567890'
        swiftCode: CENAIDJA
        phoneNumber: '+6281234567890'
    IdrBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    IdrBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    InrAccountInfoBase:
      type: object
      required:
        - accountType
      description: |-
        Required fields depend on the selected paymentRails:
        - NEFT: accountNumber, ifsc
        - RTGS: accountNumber, ifsc
        - UPI: vpa
      properties:
        accountType:
          type: string
          enum:
            - INR_ACCOUNT
        vpa:
          type: string
          description: The UPI Virtual Payment Address
          example: user@upi
          minLength: 3
          maxLength: 255
          pattern: ^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9]+$
        accountNumber:
          type: string
          description: Indian bank account number (9–18 digits)
          minLength: 9
          maxLength: 18
          example: '000111222333'
          pattern: ^[0-9]{9,18}$
        ifsc:
          type: string
          description: >-
            The Indian Financial System Code (IFSC) of the beneficiary's bank
            branch (NEFT/RTGS)
          example: HDFC0001234
          minLength: 11
          maxLength: 11
          pattern: ^[A-Z]{4}0[A-Z0-9]{6}$
      example:
        accountType: INR_ACCOUNT
        vpa: user@upi
        accountNumber: '000111222333'
        ifsc: HDFC0001234
    InrBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    InrBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    JmdAccountInfoBase:
      type: object
      required:
        - accountType
        - accountNumber
        - branchCode
        - bankAccountType
        - bankName
      properties:
        accountType:
          type: string
          enum:
            - JMD_ACCOUNT
        accountNumber:
          type: string
          description: The account number of the bank
          minLength: 1
          maxLength: 34
        branchCode:
          type: string
          description: The branch code
          minLength: 5
          maxLength: 5
          pattern: ^[0-9]{5}$
        bankAccountType:
          type: string
          description: The bank account type
          enum:
            - CHECKING
            - SAVINGS
        bankName:
          type: string
          description: >-
            The name of the bank. Must be one of the `bankName` values `GET
            /discoveries` returns for this country and currency. Send it exactly
            as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: National Commercial Bank Ja Ltd
      example:
        accountType: JMD_ACCOUNT
        accountNumber: '1234567890'
        branchCode: '11111'
        bankAccountType: CHECKING
        bankName: National Commercial Bank Ja Ltd
    JmdBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - address
        - fullName
        - phoneNumber
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    KesAccountInfoBase:
      type: object
      required:
        - accountType
        - phoneNumber
        - provider
      properties:
        accountType:
          type: string
          enum:
            - KES_ACCOUNT
        phoneNumber:
          type: string
          description: Kenyan mobile money phone number
          example: '+254712345678'
          minLength: 7
          maxLength: 15
          pattern: ^\+254[0-9]{9}$
        provider:
          type: string
          description: The mobile money provider name
          minLength: 1
          maxLength: 255
      example:
        accountType: KES_ACCOUNT
        phoneNumber: '+254712345678'
        provider: Example Provider
    KesBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    KesBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
        - registrationNumber
        - taxId
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    MwkAccountInfoBase:
      type: object
      required:
        - accountType
        - phoneNumber
        - provider
      properties:
        accountType:
          type: string
          enum:
            - MWK_ACCOUNT
        phoneNumber:
          type: string
          description: The phone number in international format
          example: '+1234567890'
          minLength: 7
          maxLength: 15
          pattern: ^\+[0-9]{6,14}$
        provider:
          type: string
          description: The mobile money provider name
          minLength: 1
          maxLength: 255
      example:
        accountType: MWK_ACCOUNT
        phoneNumber: '+1234567890'
        provider: Example Provider
    MwkBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    MwkBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
        - registrationNumber
        - taxId
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    MxnAccountInfoBase:
      type: object
      required:
        - accountType
        - clabeNumber
      properties:
        accountType:
          type: string
          enum:
            - MXN_ACCOUNT
        clabeNumber:
          type: string
          description: The CLABE number of the bank
          example: '123456789012345678'
          minLength: 18
          maxLength: 18
          pattern: ^[0-9]{18}$
      example:
        accountType: MXN_ACCOUNT
        clabeNumber: '123456789012345678'
    MxnBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    MxnBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    MyrAccountInfoBase:
      type: object
      required:
        - accountType
        - bankName
        - accountNumber
        - swiftCode
      properties:
        accountType:
          type: string
          enum:
            - MYR_ACCOUNT
        bankName:
          type: string
          description: >-
            The name of the bank. Must be one of the `bankName` values `GET
            /discoveries` returns for this country and currency. Send it exactly
            as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: Maybank
        accountNumber:
          type: string
          description: Malaysian bank account number
          minLength: 1
          maxLength: 34
          example: '1234567890'
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: MABORUMMYYY
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
      example:
        accountType: MYR_ACCOUNT
        bankName: Maybank
        accountNumber: '1234567890'
        swiftCode: MABORUMMYYY
    MyrBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    MyrBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    NgnAccountInfoBase:
      type: object
      required:
        - accountType
        - accountNumber
        - bankName
      properties:
        accountType:
          type: string
          enum:
            - NGN_ACCOUNT
        accountNumber:
          type: string
          description: Nigerian bank account number
          minLength: 10
          maxLength: 10
          example: '0123456789'
          pattern: ^[0-9]{10}$
        bankName:
          type: string
          description: >-
            The name of the bank. Must be one of the `bankName` values `GET
            /discoveries` returns for this country and currency. Send it exactly
            as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: Access Bank
      example:
        accountType: NGN_ACCOUNT
        accountNumber: '0123456789'
        bankName: Access Bank
    NgnBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    NgnBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
        - registrationNumber
        - taxId
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    PhpAccountInfoBase:
      type: object
      required:
        - accountType
        - bankName
        - accountNumber
      properties:
        accountType:
          type: string
          enum:
            - PHP_ACCOUNT
        bankName:
          type: string
          description: >-
            Name of the beneficiary's bank. Must be one of the `bankName` values
            `GET /discoveries` returns for this country and currency. Send it
            exactly as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: Bank of the Philippine Islands (BPI)
        accountNumber:
          type: string
          description: Bank account number
          minLength: 8
          maxLength: 16
          example: '001234567890'
          pattern: ^[0-9]{8,16}$
      example:
        accountType: PHP_ACCOUNT
        bankName: Bank of the Philippine Islands (BPI)
        accountNumber: '001234567890'
    PhpBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    PhpBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    PkrAccountInfoBase:
      type: object
      required:
        - accountType
        - bankName
      description: |-
        Required fields depend on the selected paymentRails:
        - BANK_TRANSFER: accountNumber, bankName
        - MOBILE_MONEY: bankName, phoneNumber
      properties:
        accountType:
          type: string
          enum:
            - PKR_ACCOUNT
        bankName:
          type: string
          description: >-
            The name of the bank. Must be one of the `bankName` values `GET
            /discoveries` returns for this country and currency. Send it exactly
            as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: Habib Bank Limited
        accountNumber:
          type: string
          description: The account number of the bank
          minLength: 1
          maxLength: 34
        iban:
          type: string
          description: Pakistani IBAN (24 characters, starting with PK)
          example: PK36SCBL0000001123456702
          minLength: 24
          maxLength: 24
          pattern: ^PK[0-9]{2}[A-Z]{4}[0-9]{16}$
        phoneNumber:
          type: string
          description: The phone number in international format
          example: '+1234567890'
          minLength: 7
          maxLength: 15
          pattern: ^\+[0-9]{6,14}$
      example:
        accountType: PKR_ACCOUNT
        bankName: Habib Bank Limited
        accountNumber: '1234567890'
        iban: PK36SCBL0000001123456702
        phoneNumber: '+1234567890'
    PkrBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    RwfAccountInfoBase:
      type: object
      required:
        - accountType
        - phoneNumber
        - provider
      properties:
        accountType:
          type: string
          enum:
            - RWF_ACCOUNT
        phoneNumber:
          type: string
          description: Rwandan mobile money phone number
          example: '+250781234567'
          minLength: 7
          maxLength: 15
          pattern: ^\+250[0-9]{9}$
        provider:
          type: string
          description: The mobile money provider name
          minLength: 1
          maxLength: 255
      example:
        accountType: RWF_ACCOUNT
        phoneNumber: '+250781234567'
        provider: Example Provider
    RwfBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    RwfBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
        - registrationNumber
        - taxId
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    SgdAccountInfoBase:
      type: object
      required:
        - accountType
        - accountNumber
        - swiftCode
      properties:
        accountType:
          type: string
          enum:
            - SGD_ACCOUNT
        bankName:
          type: string
          description: >-
            Name of the beneficiary's bank. When omitted, resolved from
            swiftCode via the payout partner bank directory at account creation.
            Not checked against `GET /discoveries`.
          minLength: 1
          maxLength: 255
          example: DBS Bank Ltd
        accountNumber:
          type: string
          description: Bank account number
          minLength: 1
          maxLength: 34
          example: '0123456789'
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: DBSSSGSG
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
      example:
        accountType: SGD_ACCOUNT
        bankName: DBS Bank Ltd
        accountNumber: '0123456789'
        swiftCode: DBSSSGSG
    SgdBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    SgdBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    SlvAccountInfoBase:
      type: object
      required:
        - accountType
      description: |-
        Required fields depend on the selected paymentRails:
        - BANK_TRANSFER: bankAccountType, accountNumber
        - MOBILE_MONEY: phoneNumber
      properties:
        accountType:
          type: string
          enum:
            - SLV_ACCOUNT
        bankName:
          type: string
          description: The name of the bank (BANK_TRANSFER only)
          minLength: 1
          maxLength: 255
        accountNumber:
          type: string
          description: The account number of the bank (BANK_TRANSFER only)
          minLength: 1
          maxLength: 34
        bankAccountType:
          type: string
          description: The bank account type (BANK_TRANSFER only)
          enum:
            - CHECKING
            - SAVINGS
        phoneNumber:
          type: string
          description: >-
            The phone number in international format (MOBILE_MONEY only — e.g.
            Tigo Money)
          example: '+50312345678'
          minLength: 7
          maxLength: 15
          pattern: ^\+[0-9]{6,14}$
      example:
        accountType: SLV_ACCOUNT
        bankName: Banco Cuscatlan
        accountNumber: '0123456789'
        bankAccountType: CHECKING
    SlvBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    ThbAccountInfoBase:
      type: object
      required:
        - accountType
        - bankName
        - accountNumber
        - swiftCode
      properties:
        accountType:
          type: string
          enum:
            - THB_ACCOUNT
        bankName:
          type: string
          description: >-
            The name of the bank. Must be one of the `bankName` values `GET
            /discoveries` returns for this country and currency. Send it exactly
            as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: Bangkok Bank Public Company Limited
        accountNumber:
          type: string
          description: Thai bank account number
          minLength: 1
          maxLength: 34
          example: '1234567890'
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: BKKBTHBK
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
      example:
        accountType: THB_ACCOUNT
        bankName: Bangkok Bank Public Company Limited
        accountNumber: '1234567890'
        swiftCode: BKKBTHBK
    ThbBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    ThbBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    TzsAccountInfoBase:
      type: object
      required:
        - accountType
        - phoneNumber
        - provider
      properties:
        accountType:
          type: string
          enum:
            - TZS_ACCOUNT
        phoneNumber:
          type: string
          description: Tanzanian mobile money phone number
          example: '+255712345678'
          minLength: 7
          maxLength: 15
          pattern: ^\+255[0-9]{9}$
        provider:
          type: string
          description: The mobile money provider name
          minLength: 1
          maxLength: 255
      example:
        accountType: TZS_ACCOUNT
        phoneNumber: '+255712345678'
        provider: Example Provider
    TzsBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    TzsBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
        - registrationNumber
        - taxId
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    UgxAccountInfoBase:
      type: object
      required:
        - accountType
        - phoneNumber
        - provider
      properties:
        accountType:
          type: string
          enum:
            - UGX_ACCOUNT
        phoneNumber:
          type: string
          description: The phone number in international format
          example: '+1234567890'
          minLength: 7
          maxLength: 15
          pattern: ^\+[0-9]{6,14}$
        provider:
          type: string
          description: The mobile money provider name
          minLength: 1
          maxLength: 255
      example:
        accountType: UGX_ACCOUNT
        phoneNumber: '+1234567890'
        provider: Example Provider
    UgxBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    UgxBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
        - registrationNumber
        - taxId
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    UsdAccountInfoBase:
      type: object
      required:
        - accountType
        - accountNumber
        - routingNumber
      properties:
        accountType:
          type: string
          enum:
            - USD_ACCOUNT
        accountNumber:
          type: string
          description: The account number of the bank
          minLength: 1
          maxLength: 34
        routingNumber:
          type: string
          description: The ABA routing number
          example: '021000021'
          minLength: 9
          maxLength: 9
          pattern: ^[0-9]{9}$
        bankName:
          type: string
          description: >-
            The name of the financial institution holding the account. Optional
            on every rail, and recommended for wires, where it identifies the
            beneficiary's institution on the payment message. Not checked
            against `GET /discoveries`.
          minLength: 1
          maxLength: 140
          example: Chase Bank
        intermediaryBankName:
          type: string
          description: >-
            The name of the intermediary financial institution, for accounts
            reachable only through a correspondent bank. Used on the WIRE rail;
            ignored on ACH, RTP and FEDNOW.
          example: JPMorgan Chase Bank
          minLength: 1
          maxLength: 140
        intermediaryRoutingNumber:
          type: string
          description: >-
            The ABA routing number of the intermediary financial institution.
            Used on the WIRE rail; ignored on ACH, RTP and FEDNOW.
          example: '021000021'
          minLength: 9
          maxLength: 9
          pattern: ^[0-9]{9}$
        fiToFiInformation:
          type: string
          description: >-
            Bank-to-bank instructions carried alongside the payment. Used on the
            WIRE rail; ignored on ACH, RTP and FEDNOW.
          example: /BNF/Invoice 4471
          maxLength: 210
      example:
        accountType: USD_ACCOUNT
        accountNumber: '1234567890'
        routingNumber: '021000021'
        bankName: Chase Bank
        intermediaryBankName: JPMorgan Chase Bank
        intermediaryRoutingNumber: '021000021'
        fiToFiInformation: /BNF/Invoice 4471
        bankAccountType: CHECKING
    UsdBeneficiary:
      title: Individual Beneficiary
      type: object
      description: >-
        Wires to this account may require `address.city`, at most 35 characters,
        depending on the bank that sends them for your platform. When they do,
        creating the account with an address that has no `city`, or a longer
        one, fails with `INVALID_INPUT`.
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    UsdBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      description: >-
        Wires to this account may require `address.city`, at most 35 characters,
        depending on the bank that sends them for your platform. When they do,
        creating the account with an address that has no `city`, or a longer
        one, fails with `INVALID_INPUT`.
      required:
        - beneficiaryType
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    VndAccountInfoBase:
      type: object
      required:
        - accountType
        - bankName
        - accountNumber
        - swiftCode
      properties:
        accountType:
          type: string
          enum:
            - VND_ACCOUNT
        bankName:
          type: string
          description: >-
            The name of the bank. Must be one of the `bankName` values `GET
            /discoveries` returns for this country and currency. Send it exactly
            as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: Vietcombank
        accountNumber:
          type: string
          description: Vietnamese bank account number
          minLength: 1
          maxLength: 34
          example: '1234567890'
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: BFTVVNVX
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
      example:
        accountType: VND_ACCOUNT
        bankName: Vietcombank
        accountNumber: '1234567890'
        swiftCode: BFTVVNVX
    VndBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    VndBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    XafAccountInfoBase:
      type: object
      required:
        - accountType
        - phoneNumber
        - provider
        - region
      properties:
        accountType:
          type: string
          enum:
            - XAF_ACCOUNT
        phoneNumber:
          type: string
          description: The phone number in international format
          example: '+1234567890'
          minLength: 7
          maxLength: 15
          pattern: ^\+[0-9]{6,14}$
        provider:
          type: string
          description: The mobile money provider name
          minLength: 1
          maxLength: 255
        region:
          type: string
          description: Country code within the Central African CFA franc zone
          minLength: 2
          maxLength: 2
          pattern: ^[A-Z]{2}$
          enum:
            - CM
            - CG
      example:
        accountType: XAF_ACCOUNT
        phoneNumber: '+1234567890'
        provider: Example Provider
        region: CM
    XafBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    XafBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
        - registrationNumber
        - taxId
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    XofAccountInfoBase:
      type: object
      required:
        - accountType
        - phoneNumber
        - provider
        - region
      properties:
        accountType:
          type: string
          enum:
            - XOF_ACCOUNT
        phoneNumber:
          type: string
          description: The phone number in international format
          example: '+1234567890'
          minLength: 7
          maxLength: 15
          pattern: ^\+[0-9]{6,14}$
        provider:
          type: string
          description: The mobile money provider name
          minLength: 1
          maxLength: 255
        region:
          type: string
          description: Country code within the West African CFA franc zone
          minLength: 2
          maxLength: 2
          pattern: ^[A-Z]{2}$
          enum:
            - BJ
            - CI
            - SN
            - TG
      example:
        accountType: XOF_ACCOUNT
        phoneNumber: '+1234567890'
        provider: Example Provider
        region: BJ
    XofBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    XofBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
        - registrationNumber
        - taxId
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    ZarAccountInfoBase:
      type: object
      required:
        - accountType
        - accountNumber
        - bankName
      properties:
        accountType:
          type: string
          enum:
            - ZAR_ACCOUNT
        accountNumber:
          type: string
          description: South African bank account number
          minLength: 9
          maxLength: 13
          example: '1234567890'
          pattern: ^[0-9]{9,13}$
        bankName:
          type: string
          description: >-
            The name of the bank. Must be one of the `bankName` values `GET
            /discoveries` returns for this country and currency. Send it exactly
            as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: Standard Bank (South Africa)
      example:
        accountType: ZAR_ACCOUNT
        accountNumber: '1234567890'
        bankName: Standard Bank (South Africa)
    ZarBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    ZarBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
        - registrationNumber
        - taxId
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    ZmwAccountInfoBase:
      type: object
      required:
        - accountType
        - phoneNumber
        - provider
      properties:
        accountType:
          type: string
          enum:
            - ZMW_ACCOUNT
        phoneNumber:
          type: string
          description: Zambian mobile money phone number
          example: '+260971234567'
          minLength: 7
          maxLength: 15
          pattern: ^\+260[0-9]{9}$
        provider:
          type: string
          description: The mobile money provider name
          minLength: 1
          maxLength: 255
      example:
        accountType: ZMW_ACCOUNT
        phoneNumber: '+260971234567'
        provider: Example Provider
    ZmwBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    ZmwBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
        - registrationNumber
        - taxId
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    SwiftAccountInfoBase:
      type: object
      description: >-
        At least one of accountNumber or iban is always present: IBAN-only
        corridors (e.g. BR, GB) use iban, other corridors use accountNumber, and
        both appear when the bank exposes both identifiers for the same account.
      required:
        - accountType
        - swiftCode
        - bankName
        - country
      properties:
        accountType:
          type: string
          enum:
            - SWIFT_ACCOUNT
        country:
          type: string
          description: The ISO 3166-1 alpha-2 country code of the bank account
          example: NG
          minLength: 2
          maxLength: 2
          pattern: ^[A-Z]{2}$
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: DEUTDEFF
          minLength: 8
          maxLength: 11
          pattern: ^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
        bankName:
          type: string
          description: The name of the bank
          example: Deutsche Bank
          minLength: 1
          maxLength: 255
        accountNumber:
          type: string
          description: >-
            The bank account number. Required for most corridors. Use iban
            instead for IBAN-only corridors (e.g. BR, GB).
          example: '1234567890'
          minLength: 1
          maxLength: 34
        iban:
          type: string
          description: >-
            The IBAN of the bank account. Required for IBAN-only corridors (e.g.
            BR, GB). Use accountNumber for all other corridors.
          example: GB29NWBK60161331926819
          minLength: 15
          maxLength: 34
          pattern: ^[A-Z]{2}[0-9]{2}[A-Za-z0-9]{11,30}$
      example:
        accountType: SWIFT_ACCOUNT
        country: NG
        swiftCode: DEUTDEFF
        bankName: Deutsche Bank
        accountNumber: '1234567890'
    SwiftBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    BaseWalletInfo:
      type: object
      required:
        - address
        - accountType
      properties:
        accountType:
          type: string
          enum:
            - BASE_WALLET
        address:
          type: string
          description: Base eth wallet address
          example: '0xAbCDEF1234567890aBCdEf1234567890ABcDef12'
    WalletBeneficiaryFields:
      type: object
      properties:
        beneficiary:
          $ref: '#/components/schemas/WalletBeneficiaryOneOf'
          description: >-
            The wallet's owner. Optional for `FIRST_PARTY` accounts — the
            customer's verified identity is used. Required for `THIRD_PARTY`
            wallets on platforms with counterparty requirements (e.g. EU Travel
            Rule); if missing there, creation fails with `400 INVALID_INPUT`.
    WalletCustodyFields:
      type: object
      properties:
        vaspName:
          type: string
          description: >-
            Name of the VASP that custodies this account. Present when the
            wallet is held at an exchange or other custodial platform; omit it
            for self-custody wallets. Ownership verification applies only to
            self-custody wallets.
          example: Kraken
    EthereumWalletInfo:
      type: object
      required:
        - address
        - accountType
      properties:
        accountType:
          type: string
          enum:
            - ETHEREUM_WALLET
        address:
          type: string
          description: Ethereum L1 wallet address
          example: '0xAbCDEF1234567890aBCdEf1234567890ABcDef12'
    LightningInfo:
      type: object
      description: >
        Lightning payment destination. Exactly one of `invoice`, `bolt12`, or
        `lightningAddress` must be provided.
      required:
        - accountType
      properties:
        accountType:
          type: string
          enum:
            - LIGHTNING
        invoice:
          type: string
          description: >-
            1-time use lightning bolt11 invoice payout destination. Quote it as
            an `ACCOUNT` destination, locked on the `RECEIVING` side at the
            invoice's amount in satoshis; see `POST /quotes`.
          example: >-
            lnbc15u1p3xnhl2pp5jptserfk3zk4qy42tlucycrfwxhydvlemu9pqr93tuzlv9cc7g3sdqsvfhkcap3xyhx7un8cqzpgxqzjcsp5f8c52y2stc300gl6s4xswtjpc37hrnnr3c9wvtgjfuvqmpm35evq9qyyssqy4lgd8tj637qcjp05rdpxxykjenthxftej7a2zzmwrmrl70fyj9hvj0rewhzj7jfyuwkwcg9g2jpwtk3wkjtwnkdks84hsnu8xps5vsq4gj5hs
        bolt12:
          type: string
          description: A bolt12 offer which can be reused as a payment destination
          example: >-
            lnbc15u1p3xnhl2pp5jptserfk3zk4qy42tlucycrfwxhydvlemu9pqr93tuzlv9cc7g3sdqsvfhkcap3xyhx7un8cqzpgxqzjcsp5f8c52y2stc300gl6s4xswtjpc37hrnnr3c9wvtgjfuvqmpm35evq9qyyssqy4lgd8tj637qcjp05rdpxxykjenthxftej7a2zzmwrmrl70fyj9hvj0rewhzj7jfyuwkwcg9g2jpwtk3wkjtwnkdks84hsnu8xps5vsq4gj5hs
        lightningAddress:
          type: string
          description: >-
            A lightning address which can be used as a payment destination. Note
            that for UMA addresses, no external account is needed. You can use
            the UMA address directly as a destination.
          example: john.doe@lightningwallet.com
    PolygonWalletInfo:
      type: object
      required:
        - address
        - accountType
      properties:
        accountType:
          type: string
          enum:
            - POLYGON_WALLET
        address:
          type: string
          description: Polygon eth wallet address
          example: '0xAbCDEF1234567890aBCdEf1234567890ABcDef12'
    PlasmaWalletInfo:
      type: object
      required:
        - address
        - accountType
      properties:
        accountType:
          type: string
          enum:
            - PLASMA_WALLET
        address:
          type: string
          description: Plasma wallet address
          example: '0xAbCDEF1234567890aBCdEf1234567890ABcDef12'
    ArbitrumWalletInfo:
      type: object
      required:
        - address
        - accountType
      properties:
        accountType:
          type: string
          enum:
            - ARBITRUM_WALLET
        address:
          type: string
          description: Arbitrum wallet address
          example: '0xAbCDEF1234567890aBCdEf1234567890ABcDef12'
    SolanaWalletInfo:
      type: object
      required:
        - address
        - accountType
      properties:
        accountType:
          type: string
          enum:
            - SOLANA_WALLET
        address:
          type: string
          description: Solana wallet address
          example: 4Nd1m6Qkq7RfKuE5vQ9qP9Tn6H94Ueqb4xXHzsAbd8Wg
    SparkWalletInfo:
      type: object
      required:
        - address
        - accountType
      properties:
        accountType:
          type: string
          enum:
            - SPARK_WALLET
        address:
          type: string
          description: Spark wallet address
          example: spark1pgssyuuuhnrrdjswal5c3s3rafw9w3y5dd4cjy3duxlf7hjzkp0rqx6dj6mrhu
    TronWalletInfo:
      type: object
      required:
        - address
        - accountType
      properties:
        accountType:
          type: string
          enum:
            - TRON_WALLET
        address:
          type: string
          description: Tron wallet address
          example: TNPeeaaFB7K9cmo4uQpcU32zGK8G1NYqeL
    IlsAccountInfoBase:
      type: object
      required:
        - accountType
        - iban
        - bankName
      properties:
        accountType:
          type: string
          enum:
            - ILS_ACCOUNT
        iban:
          type: string
          description: Israeli IBAN (23 characters, starting with IL)
          example: IL620108000000099999999
          minLength: 23
          maxLength: 23
          pattern: ^IL[0-9]{21}$
        bankName:
          type: string
          description: >-
            The name of the bank. Must be one of the `bankName` values `GET
            /discoveries` returns for this country and currency. Send it exactly
            as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: Bank Leumi Le-Israel B.M
      example:
        accountType: ILS_ACCOUNT
        iban: IL620108000000099999999
        bankName: Bank Leumi Le-Israel B.M
    IlsBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    IlsBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - address
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    TryAccountInfoBase:
      type: object
      required:
        - accountType
        - iban
        - bankName
      properties:
        accountType:
          type: string
          enum:
            - TRY_ACCOUNT
        iban:
          type: string
          description: Turkish IBAN (26 characters, starting with TR)
          example: TR330006100519786457841326
          minLength: 26
          maxLength: 26
          pattern: ^TR[0-9]{2}[0-9A-Z]{22}$
        bankName:
          type: string
          description: >-
            The name of the bank. Must be one of the `bankName` values `GET
            /discoveries` returns for this country and currency. Send it exactly
            as returned; any other name is rejected.
          minLength: 1
          maxLength: 255
          example: <bankName from GET /discoveries>
      example:
        accountType: TRY_ACCOUNT
        iban: TR330006100519786457841326
        bankName: <bankName from GET /discoveries>
    TryBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - countryOfResidence
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    TryBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - countryOfResidence
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    ChfAccountInfoBase:
      type: object
      required:
        - accountType
        - iban
      properties:
        accountType:
          type: string
          enum:
            - CHF_ACCOUNT
        iban:
          type: string
          description: Swiss IBAN (21 characters, starting with CH)
          example: CH9300762011623852957
          minLength: 21
          maxLength: 21
          pattern: ^CH[0-9]{7}[0-9A-Z]{12}$
      example:
        accountType: CHF_ACCOUNT
        iban: CH9300762011623852957
    ChfBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
        birthDate:
          type: string
          description: The birth date of the beneficiary
        nationality:
          type: string
          description: The nationality of the beneficiary
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    ChfBusinessBeneficiary:
      title: Business Beneficiary
      type: object
      required:
        - beneficiaryType
        - legalName
      properties:
        beneficiaryType:
          type: string
          enum:
            - BUSINESS
        legalName:
          type: string
          maxLength: 250
          description: The legal name of the business
        email:
          type: string
          maxLength: 320
          description: The email of the beneficiary
        phoneNumber:
          type: string
          maxLength: 50
          description: The phone number of the beneficiary
        registrationNumber:
          type: string
          maxLength: 100
          description: The company registration number of the business
        taxId:
          type: string
          maxLength: 100
          description: The tax identification number of the business
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary
        address:
          $ref: '#/components/schemas/Address'
    AccountQuoteSource:
      title: Account
      allOf:
        - $ref: '#/components/schemas/BaseQuoteSource'
        - type: object
          required:
            - accountId
            - sourceType
          properties:
            sourceType:
              type: string
              enum:
                - ACCOUNT
            accountId:
              type: string
              description: Source account identifier
              example: InternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965
            customerId:
              type: string
              description: >-
                The customer on whose behalf the transaction is being initiated.
                Required when funding from a `BULK_SETTLEMENT` account. The
                customer is never the account owner, because the platform owns
                the account. When funding from an FBO account, this field is
                optional. If you omit it, the transaction is initiated on behalf
                of the platform. For any other account, it defaults to the
                account owner's customerId.
              example: Customer:019542f5-b3e7-1d02-0000-000000000001
          description: Source account details
    RealtimeFundingQuoteSource:
      title: Real-time Funding
      allOf:
        - $ref: '#/components/schemas/BaseQuoteSource'
        - type: object
          required:
            - currency
            - sourceType
          properties:
            sourceType:
              type: string
              enum:
                - REALTIME_FUNDING
            customerId:
              type: string
              description: >-
                Source customer ID. If this transaction is being initiated on
                behalf of a customer, this is required. If customerId is not
                provided, the quote will be created on behalf of the platform
                itself.
              example: Customer:019542f5-b3e7-1d02-0000-000000000009
            currency:
              type: string
              description: >-
                Currency code for the funding source. See [Supported
                Currencies](https://docs.lightspark.com/platform-overview/core-concepts/currencies-and-rails)
                for the full list of supported fiat and crypto currencies.
              example: USD
            cryptoNetwork:
              type: string
              description: >-
                The crypto network to use for the funding source. Required when
                `currency` is a stablecoin (e.g. USDC, USDT). Specifies which
                network the customer will deposit on, so the correct deposit
                address can be generated. Example values: `SOLANA`, `ETHEREUM`,
                `BASE`, `POLYGON`, `TRON`, `PLASMA`, `ARBITRUM`, `SPARK`,
                `LIGHTNING`, `BITCOIN`.
              example: SOLANA
          description: >-
            Fund the quote using a real-time funding source (RTP, SEPA Instant,
            Spark, Stables, etc.). This will require manual just-in-time funding
            using `paymentInstructions` in the response. Because quotes expire
            quickly, this option is only valid for instant payment methods. Do
            not try to fund a quote with a non-instant payment method (ACH,
            etc.).
    AccountDestination:
      title: Account
      allOf:
        - $ref: '#/components/schemas/BaseDestination'
        - type: object
          required:
            - accountId
            - destinationType
          properties:
            destinationType:
              type: string
              enum:
                - ACCOUNT
            accountId:
              type: string
              description: Destination account identifier
              example: ExternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123
            paymentRail:
              allOf:
                - $ref: '#/components/schemas/PaymentRail'
                - description: >-
                    The payment rail to use for the transfer. Must be one of the
                    rails supported by the destination account. If not
                    specified, the system will select a default rail.
          description: Destination account details
    UmaAddressDestination:
      title: UMA Address
      allOf:
        - $ref: '#/components/schemas/BaseDestination'
        - type: object
          required:
            - umaAddress
            - destinationType
            - currency
          properties:
            destinationType:
              type: string
              enum:
                - UMA_ADDRESS
            umaAddress:
              type: string
              maxLength: 200
              description: UMA address of the recipient
              example: $receiver@uma.domain.com
            currency:
              type: string
              description: >-
                Currency code for the destination. See [Supported
                Currencies](https://docs.lightspark.com/platform-overview/core-concepts/currencies-and-rails)
                for the full list of supported fiat and crypto currencies.
              example: EUR
          description: UMA address destination details
    PaymentUsdAccountInfo:
      title: USD Bank Account
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - $ref: '#/components/schemas/UsdAccountInfo'
        - type: object
          required:
            - reference
          properties:
            reference:
              type: string
              description: >-
                Unique reference code that must be included with the payment to
                properly credit it
              example: UMA-Q12345-REF
            bankAddress:
              type: string
              description: >-
                The postal address of the financial institution holding the
                account, on a single line. Optional on every rail, and
                recommended for wires, where some originating banks require the
                beneficiary institution's address before they will send.
              example: 885 Teaneck Road, Teaneck, NJ 07666
              minLength: 1
              maxLength: 255
    PaymentEurAccountInfo:
      title: EUR Account
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - $ref: '#/components/schemas/EurAccountInfo'
        - type: object
          required:
            - reference
          properties:
            reference:
              type: string
              description: >-
                Unique reference code that must be included with the payment to
                properly credit it
              example: UMA-Q12345-REF
    PaymentSwiftAccountInfo:
      title: SWIFT Account
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - $ref: '#/components/schemas/SwiftAccountInfo'
        - type: object
          required:
            - accountHolderName
          properties:
            accountHolderName:
              type: string
              description: >-
                The name of the account holder as it must appear on the wire.
                Remitting banks match this against the beneficiary name field,
                so payers should copy it exactly.
              example: Acme Exports Pte Ltd
              minLength: 1
              maxLength: 255
            bankAddress:
              type: string
              description: The address of the bank holding the account, when known.
              example: 12 Marina Boulevard, Singapore 018982
              minLength: 1
              maxLength: 1024
            reference:
              type: string
              description: >-
                Reference code to include with the payment when present. SWIFT
                payments are attributed by the destination account number/IBAN,
                so this account type typically requires no reference.
              example: UMA-Q12345-REF
    PaymentMxnAccountInfo:
      title: MXN Account
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - $ref: '#/components/schemas/MxnAccountInfo'
        - type: object
          required:
            - reference
          properties:
            reference:
              type: string
              description: >-
                Unique reference code that must be included with the payment to
                properly credit it
              example: UMA-Q12345-REF
    PaymentBrlAccountInfo:
      title: BRL Account
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - type: object
          required:
            - qrCode
          properties:
            accountType:
              type: string
              enum:
                - BRL_ACCOUNT
            qrCode:
              type: string
              description: >-
                A PIX QR code payload that can be used to fund the transaction.
                This can be rendered as a QR code image or pasted into a
                PIX-compatible banking app.
              minLength: 1
    PaymentCopAccountInfo:
      title: COP Account
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - type: object
          required:
            - paymentUrl
          properties:
            accountType:
              type: string
              enum:
                - COP_ACCOUNT
            paymentUrl:
              type: string
              format: uri
              description: A payment URL where the customer can complete their COP deposit.
              example: https://payments.example.com/t/abc123
    PaymentArsAccountInfo:
      title: ARS Account
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - type: object
          required:
            - accountNumber
          properties:
            accountType:
              type: string
              enum:
                - ARS_ACCOUNT
            accountNumber:
              type: string
              description: >-
                The static CVU (Clave Virtual Uniforme) bank account number to
                pay to.
              minLength: 22
              maxLength: 22
              pattern: ^\d{22}$
              example: '0000003100074052501434'
    PaymentSparkWalletInfo:
      title: Spark Wallet
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - $ref: '#/components/schemas/SparkWalletInfo'
        - type: object
          required:
            - assetType
          properties:
            assetType:
              type: string
              description: Type of asset or configured Spark token currency code
            invoice:
              type: string
              description: Invoice for the payment
              example: >-
                sparkrt1pgss8ter0fhc4c220f3zftmpz49h8wqte8eg3m5zkrraplgc048jucgszg3ssqgjzqqekv73mmh842yj7drsjwh7t7tz5zt8wf5kghm5v4ehggszppjp5s80cg3qjdzc55g2567tn3lj705hdsr577tg8ah795mlnt6807y657qhkmgfkf9w75p4wz3l8vhua85zdn6ryj32zuj0p00pv2l5z4u47mw6h4s
    PaymentLightningInvoiceInfo:
      title: Lightning Invoice
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - type: object
          required:
            - invoice
          properties:
            accountType:
              type: string
              enum:
                - LIGHTNING
            invoice:
              type: string
              description: Invoice for the payment
              example: >-
                lnbc15u1p3xnhl2pp5jptserfk3zk4qy42tlucycrfwxhydvlemu9pqr93tuzlv9cc7g3sdqsvfhkcap3xyhx7un8cqzpgxqzjcsp5f8c52y2stc300gl6s4xswtjpc37hrnnr3c9wvtgjfuvqmpm35evq9qyyssqy4lgd8tj637qcjp05rdpxxykjenthxftej7a2zzmwrmrl70fyj9hvj0rewhzj7jfyuwkwcg9g2jpwtk3wkjtwnkdks84hsnu8xps5vsq4gj5hs
    PaymentBitcoinDepositAddressInfo:
      title: Bitcoin L1 Deposit Address
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - type: object
          required:
            - address
          properties:
            accountType:
              type: string
              enum:
                - BITCOIN_L1
            address:
              type: string
              description: On-chain Bitcoin (L1) deposit address to send funds to
              example: bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq
            network:
              type: string
              description: The blockchain network for the deposit address.
              enum:
                - BITCOIN
              example: BITCOIN
    PaymentSolanaWalletInfo:
      title: Solana Wallet
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - $ref: '#/components/schemas/SolanaWalletInfo'
        - type: object
          properties:
            assetType:
              $ref: '#/components/schemas/StablecoinAssetType'
    PaymentEthereumWalletInfo:
      title: Ethereum Wallet
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - $ref: '#/components/schemas/EthereumWalletInfo'
        - type: object
          properties:
            assetType:
              $ref: '#/components/schemas/StablecoinAssetType'
    PaymentBaseWalletInfo:
      title: Base Wallet
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - $ref: '#/components/schemas/BaseWalletInfo'
        - type: object
          properties:
            assetType:
              type: string
              description: Type of asset
              enum:
                - USDC
    PaymentPolygonWalletInfo:
      title: Polygon Wallet
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - $ref: '#/components/schemas/PolygonWalletInfo'
        - type: object
          properties:
            assetType:
              type: string
              description: Type of asset
              enum:
                - USDC
    PaymentArbitrumWalletInfo:
      title: Arbitrum Wallet
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - $ref: '#/components/schemas/ArbitrumWalletInfo'
        - type: object
          properties:
            assetType:
              $ref: '#/components/schemas/StablecoinAssetType'
    PaymentTronWalletInfo:
      title: Tron Wallet
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - $ref: '#/components/schemas/TronWalletInfo'
        - type: object
          properties:
            assetType:
              type: string
              description: Type of asset
              enum:
                - USDT
    PaymentPlasmaWalletInfo:
      title: Plasma Wallet
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - $ref: '#/components/schemas/PlasmaWalletInfo'
        - type: object
          properties:
            assetType:
              type: string
              description: Type of asset
              enum:
                - USDT
    PaymentEmbeddedWalletInfo:
      title: Embedded Wallet
      allOf:
        - $ref: '#/components/schemas/BasePaymentAccountInfo'
        - type: object
          required:
            - accountType
            - payloadToSign
          properties:
            accountType:
              type: string
              enum:
                - EMBEDDED_WALLET
              description: >-
                Discriminator value identifying this as Embedded Wallet payment
                instructions.
            payloadToSign:
              type: string
              description: >-
                JSON-encoded transaction signing payload that must be stamped,
                as-is (byte-for-byte, without re-serialization), with the
                session private key of a verified authentication credential on
                the source Embedded Wallet. The resulting Grid wallet signature
                is passed as the `Grid-Wallet-Signature` header on `POST
                /quotes/{quoteId}/execute` to authorize the outbound transfer
                from the wallet.
              example: >-
                {"type":"ACTIVITY_TYPE_SIGN_TRANSACTION_V2","timestampMs":"1746736509954","organizationId":"org_abc123","parameters":{"signWith":"wallet_abc123def456","unsignedTransaction":"ea69b4bf05f775209f26ff0a34a05569180f7936579d5c4af9377ae550194f72","type":"TRANSACTION_TYPE_ETHEREUM"},"generateAppProofs":true}
    ScaFactor:
      type: string
      enum:
        - SMS_OTP
        - TOTP
        - PASSKEY
      description: >
        A Strong Customer Authentication factor.


        | Factor | Description |

        |--------|-------------|

        | `SMS_OTP` | One-time code sent by SMS to the customer's verified
        phone. Requires no prior enrollment. |

        | `TOTP` | Time-based one-time code from an authenticator app. Requires
        enrollment. Not valid for per-transaction challenges (cannot carry
        dynamic linking). |

        | `PASSKEY` | WebAuthn passkey assertion. Requires enrollment. |
    ExternalAccountType:
      type: string
      enum:
        - AED_ACCOUNT
        - BDT_ACCOUNT
        - BRL_ACCOUNT
        - BWP_ACCOUNT
        - CAD_ACCOUNT
        - COP_ACCOUNT
        - DKK_ACCOUNT
        - EGP_ACCOUNT
        - EUR_ACCOUNT
        - GBP_ACCOUNT
        - GHS_ACCOUNT
        - GTQ_ACCOUNT
        - HKD_ACCOUNT
        - HTG_ACCOUNT
        - IDR_ACCOUNT
        - INR_ACCOUNT
        - JMD_ACCOUNT
        - KES_ACCOUNT
        - MWK_ACCOUNT
        - MXN_ACCOUNT
        - MYR_ACCOUNT
        - NGN_ACCOUNT
        - PHP_ACCOUNT
        - PKR_ACCOUNT
        - RWF_ACCOUNT
        - SGD_ACCOUNT
        - SLV_ACCOUNT
        - THB_ACCOUNT
        - TZS_ACCOUNT
        - UGX_ACCOUNT
        - USD_ACCOUNT
        - VND_ACCOUNT
        - XAF_ACCOUNT
        - XOF_ACCOUNT
        - ZAR_ACCOUNT
        - ZMW_ACCOUNT
        - SWIFT_ACCOUNT
        - BASE_WALLET
        - ETHEREUM_WALLET
        - LIGHTNING
        - PLASMA_WALLET
        - ARBITRUM_WALLET
        - POLYGON_WALLET
        - SOLANA_WALLET
        - SPARK_WALLET
        - TRON_WALLET
        - CNY_ACCOUNT
        - ILS_ACCOUNT
        - TRY_ACCOUNT
        - CHF_ACCOUNT
      description: Type of external account or wallet
      example: AED_ACCOUNT
    Address:
      type: object
      required:
        - line1
        - postalCode
        - country
      properties:
        line1:
          type: string
          description: Street address line 1
          example: 123 Main Street
        line2:
          type: string
          description: Street address line 2
          example: Apt 4B
        city:
          type: string
          description: City
          example: San Francisco
        state:
          type: string
          description: State/Province/Region
          example: CA
        postalCode:
          type: string
          description: Postal/ZIP code
          example: '94105'
        country:
          type: string
          description: Country code (ISO 3166-1 alpha-2)
          example: US
    WalletBeneficiaryOneOf:
      description: The person or business that owns a crypto wallet external account.
      oneOf:
        - $ref: '#/components/schemas/WalletIndividualBeneficiary'
          title: Individual Beneficiary
        - $ref: '#/components/schemas/BusinessBeneficiary'
          title: Business Beneficiary
      discriminator:
        propertyName: beneficiaryType
        mapping:
          INDIVIDUAL: '#/components/schemas/WalletIndividualBeneficiary'
          BUSINESS: '#/components/schemas/BusinessBeneficiary'
    BaseQuoteSource:
      type: object
      required:
        - sourceType
      properties:
        sourceType:
          $ref: '#/components/schemas/QuoteSourceType'
    BaseDestination:
      type: object
      required:
        - destinationType
      properties:
        destinationType:
          $ref: '#/components/schemas/DestinationType'
    BasePaymentAccountInfo:
      type: object
      required:
        - accountType
      properties:
        accountType:
          $ref: '#/components/schemas/PaymentAccountType'
    UsdAccountInfo:
      allOf:
        - $ref: '#/components/schemas/UsdAccountInfoBase'
        - type: object
          required:
            - paymentRails
          properties:
            paymentRails:
              type: array
              items:
                type: string
                enum:
                  - ACH
                  - ACH_SAME_DAY
                  - WIRE
                  - RTP
                  - FEDNOW
            bankAccountType:
              type: string
              description: >-
                Whether the account is a checking or a savings account. Grid
                uses this to set the ACH transaction code, so a value that does
                not match the account causes the receiving bank to return a
                notification of change.
              enum:
                - CHECKING
                - SAVINGS
              example: CHECKING
    EurAccountInfo:
      allOf:
        - $ref: '#/components/schemas/EurAccountInfoBase'
        - type: object
          required:
            - paymentRails
          properties:
            paymentRails:
              type: array
              items:
                type: string
                enum:
                  - SEPA
                  - SEPA_INSTANT
    SwiftAccountInfo:
      allOf:
        - $ref: '#/components/schemas/SwiftAccountInfoBase'
        - type: object
          required:
            - paymentRails
          properties:
            paymentRails:
              type: array
              items:
                type: string
                enum:
                  - SWIFT
    MxnAccountInfo:
      allOf:
        - $ref: '#/components/schemas/MxnAccountInfoBase'
        - type: object
          required:
            - paymentRails
          properties:
            paymentRails:
              type: array
              items:
                type: string
                enum:
                  - SPEI
    StablecoinAssetType:
      type: string
      description: Type of asset
      enum:
        - USDC
        - USDT
    WalletIndividualBeneficiary:
      title: Individual Beneficiary
      type: object
      required:
        - beneficiaryType
        - fullName
        - countryOfResidence
      properties:
        beneficiaryType:
          type: string
          enum:
            - INDIVIDUAL
        fullName:
          type: string
          maxLength: 250
          description: The full name of the beneficiary
          example: John Michael Doe
        countryOfResidence:
          type: string
          description: The country of residence of the beneficiary (ISO 3166-1 alpha-2)
          example: US
    QuoteSourceType:
      type: string
      enum:
        - ACCOUNT
        - REALTIME_FUNDING
      description: Type of quote funding source
      example: ACCOUNT
    DestinationType:
      type: string
      enum:
        - ACCOUNT
        - UMA_ADDRESS
      description: Type of payment destination
      example: ACCOUNT
    PaymentAccountType:
      type: string
      enum:
        - USD_ACCOUNT
        - BRL_ACCOUNT
        - MXN_ACCOUNT
        - DKK_ACCOUNT
        - ARS_ACCOUNT
        - COP_ACCOUNT
        - EUR_ACCOUNT
        - INR_ACCOUNT
        - NGN_ACCOUNT
        - CAD_ACCOUNT
        - GBP_ACCOUNT
        - HKD_ACCOUNT
        - IDR_ACCOUNT
        - MYR_ACCOUNT
        - PHP_ACCOUNT
        - SGD_ACCOUNT
        - THB_ACCOUNT
        - VND_ACCOUNT
        - SWIFT_ACCOUNT
        - SPARK_WALLET
        - LIGHTNING
        - SOLANA_WALLET
        - TRON_WALLET
        - PLASMA_WALLET
        - ARBITRUM_WALLET
        - POLYGON_WALLET
        - BASE_WALLET
        - ETHEREUM_WALLET
        - EMBEDDED_WALLET
        - BITCOIN_L1
      description: Type of payment account or wallet
      example: USD_ACCOUNT
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: >-
        API token authentication using format `<api token id>:<api client
        secret>`
    AgentAuth:
      type: http
      scheme: bearer
      description: >-
        Bearer token authentication for agent-scoped endpoints. The token is the
        `accessToken` returned when redeeming a device code via `POST
        /agents/device-codes/redeem`. Agent credentials are user-scoped: all
        requests are automatically bound to the agent's associated customer and
        subject to the agent's policy.

````

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