openapi: 3.0.2
info:
  title: Banxa Enterprise API
  description: Official Banxa Enterprise API Specs
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
  version: 0 BETA
  x-logo:
    url: >-
      https://banxa.com/wp-content/uploads/2025/02/Banxa-Logo-Primary-RGB-for-Dark-Mode.png
    backgroundColor: '#121730'
    altText: Banxa official logo
  termsOfService: https://banxa.com/terms-of-use/
  contact:
    name: Banxa customer support
    url: https://support.banxa.com/en/support/home
    email: developer-support@banxa.com
servers:
  - url: https://api.banxa.com
    description: Production environment server
  - url: https://api.banxa-sandbox.com
    description: Sandbox environment server
externalDocs:
  url: https://banxa.com
  description: Banxa website
tags:
  - name: Ramps
    description: Enable Get and Post on ramp and off ramp
  - name: Identities
    description: >-
      Enable Sharing and reliance of identity through token(sumsub), reliance or
      by sending us documents.
  - name: Price
    description: Request a price prior to requesting a On or Off ramp transaction
  - name: Eligibility
    description: Check eligibility for specific transactions
  - name: Limits
    description: Check payment method/customer limits
paths:
  /eapi/v0/ramps:
    post:
      summary: Ramps enable Fiat to Crypto and Crypto to fiat on and off ramp.
      security:
        - HMACAuth: []
      description: Enables conversion between fiat and cryptocurrency in both directions.
      operationId: createRamp
      tags:
        - Ramps
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/OffRampRequest'
                - $ref: '#/components/schemas/OnRampRequest'
      responses:
        '201':
          description: Successful ramp response
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/OffRampResponse'
                  - $ref: '#/components/schemas/OnRampResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /eapi/v0/ramps/{ramp_id}:
    get:
      security:
        - HMACAuth: []
      summary: Ramp retrieval
      description: >-
        Enables retrieval of detailed information about a specific order using
        its unique identifier.
      operationId: getRamp
      tags:
        - Ramps
      parameters:
        - name: ramp_id
          in: path
          required: true
          schema:
            type: string
            example: b7f1ffbb2f1bd7a5e2ba152b4049d234
            maxLength: 100
          description: The ramp ID to fetch.
      responses:
        '200':
          description: Successful ramp response
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/OffRampResponse'
                  - $ref: '#/components/schemas/OnRampResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /eapi/v0/identities/token/share:
    post:
      security:
        - HMACAuth: []
      summary: Identity token sharing (sumsub)
      description: Share customer identity
      operationId: shareIdentity
      tags:
        - Identities
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentityTokenSharingRequest'
      responses:
        '202':
          description: >-
            The identity sharing request has been accepted for processing, but
            the processing has not been finished yet.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdentityTokenSharingResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /eapi/v0/identities/reliance:
    post:
      security:
        - HMACAuth: []
      summary: Identity Reliance
      description: Share customer identity
      operationId: identityReliance
      tags:
        - Identities
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentityRelianceRequest'
      responses:
        '202':
          description: The identity sharing request has been accepted for processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdentityRelianceResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /eapi/v0/identities/share/documents:
    post:
      security:
        - HMACAuth: []
      summary: Identity Document sharing
      description: Share identity documents
      operationId: shareIdentityDocuments
      tags:
        - Identities
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentityDocumentSharingRequest'
      responses:
        '202':
          description: >-
            The identity document sharing request has been accepted for
            processing, but the processing of the sent documents has not been
            finished yet.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdentityDocumentSharingResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /eapi/v0/identities:
    patch:
      security:
        - HMACAuth: []
      summary: Identity update
      description: Update identity
      operationId: patchIdentity
      tags:
        - Identities
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentityPatchRequest'
      responses:
        '204':
          description: No content, success
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /eapi/v0/identities/{identity_reference}:
    get:
      security:
        - HMACAuth: []
      summary: Identity Retrieval
      description: >-
        Enables retrieval of detailed information about a specific identity
        using the unique identityReference.
      operationId: getIdentity
      tags:
        - Identities
      parameters:
        - name: identity_reference
          in: path
          required: true
          schema:
            type: string
            example: /identities/c-13344
            maxLength: 100
          description: The identity reference to retrieve data for.
        - name: email
          in: query
          required: false
          schema:
            type: string
            format: email
            maxLength: 254
          description: Optional email address to assist with identity matching.
          example: user@example.com
      responses:
        '200':
          description: Successful identity response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetIdentityResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /eapi/v0/identities/basic:
    post:
      security:
        - HMACAuth: []
      summary: Identity create
      description: Low level identity onboarding
      operationId: createIdentity
      tags:
        - Identities
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/basicRequest'
      responses:
        '201':
          description: The identity has been created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/basicResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /eapi/v0/identities/transactions/limits:
    post:
      security:
        - HMACAuth: []
      summary: Transaction Limits
      description: >
        Returns applicable transaction limits for a given identity and
        transaction context.


        Limits are derived from:

        - payment-provider limits (route/method specific), and

        - customer-specific limits (tier-based and/or overrides)


        The response returns:

        - limits for DAILY/WEEKLY/MONTHLY/ANNUAL windows,
          including provider vs customer sources
      operationId: postIdentityTransactionLimits
      tags:
        - Limits
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LimitsRequest'
            examples:
              example:
                summary: Limits request
                value:
                  identityReference: 206-0x56c386b7b49be8618dbcdb2c6d09e161645c31ed
                  method: payid-bank-transfer
                  fiat: AUD
                  crypto: BTC
                  blockchain: BTC
                  transactionType: ONRAMP
      responses:
        '200':
          description: Limits result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitsResponse'
              examples:
                limits_example:
                  summary: Tier2 limits example
                  value:
                    identityReference: 206-0x56c386b7b49be8618dbcdb2c6d09e161645c31ed
                    limits:
                      transaction:
                        maxFiat:
                          amount: '100'
                          currency: AUD
                        minFiat:
                          amount: '20'
                          currency: AUD
                      periodical:
                        - period: DAILY
                          sources:
                            provider:
                              maxFiat:
                                amount: '100.00'
                                currency: AUD
                            customer:
                              maxFiat:
                                amount: '250.00'
                                currency: AUD
                        - period: WEEKLY
                          sources:
                            provider:
                              maxFiat:
                                amount: '10000.00'
                                currency: AUD
                            customer:
                              maxFiat:
                                amount: '5000.00'
                                currency: AUD
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /eapi/identities/transactions/eligibility:
    post:
      security:
        - HMACAuth: []
      summary: Identity transaction eligibility
      description: Request transaction eligibility for a specific identity
      operationId: Identities/Transactions
      tags:
        - Eligibility
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EligibilityRequest'
      responses:
        '202':
          description: The identity sharing request has been accepted for processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EligibilityResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /eapi/v0/price:
    get:
      security:
        - HMACAuth: []
      summary: Price request
      description: >-
        Request a price, prices are subject to change based on market volatility
        and network congestion.
      operationId: getPrice
      tags:
        - Price
      parameters:
        - name: identityReference
          in: query
          description: >-
            A unique customer identifier provided by you. This field is required
            and must be unique for each customer. Please ensure you consistently
            reuse the same identityReference for repeat interactions with the
            same customer, allowing us to reliably recognize and associate their
            identity.
          required: true
          schema:
            type: string
            example: c-13344
        - name: fiat
          in: query
          description: The desired fiat
          required: true
          schema:
            type: string
            example: AUD
        - name: crypto
          in: query
          description: The desired crypto
          required: true
          schema:
            type: string
            example: USDT
        - name: method
          in: query
          description: The payment method
          required: true
          schema:
            type: string
            example: payid-bank-transfer
        - name: blockchain
          in: query
          description: The chain for the crypto currency e.g. TRON or ETH
          required: true
          schema:
            type: string
            example: TRON
        - name: transactionType
          in: query
          description: The type of transaction
          schema:
            type: string
            enum:
              - ONRAMP
              - OFFRAMP
            example: ONRAMP
        - name: fiatAmount
          in: query
          required: false
          schema:
            type: number
            minimum: 10
          description: >
            **Required without cryptoAmount**

            The amount in fiat currency to convert.

            Amount in fiat minor precision (typically 2 decimals).

            This locks the fiat amount; the crypto amount will be computed and
            rounded to the configured crypto scale.

            Note: due to differing decimal scales and rounding rules, converting
            fiat→crypto and then crypto→fiat may not return the exact original
            number..
        - name: cryptoAmount
          in: query
          required: false
          schema:
            type: number
            minimum: 0.01
          description: >
            **Required without fiatAmount**

            Amount in crypto precision (token-dependent, e.g., 6–8 decimals).

            This locks the crypto amount; the fiat amount will be computed and
            rounded to the fiat scale.

            Note: small differences vs the reverse path are expected from
            precision/rounding.
      responses:
        '200':
          description: Price response.
          x-summary: >-
            Prices are subject to change due to market volatility and network
            congestion, therefore it's not recommended to cache this response
            for longer than 1 minute.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/OnRampQuoteResponse'
                  - $ref: '#/components/schemas/OffRampQuoteResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
x-webhooks:
  rampMessage:
    post:
      tags:
        - Ramps
      summary: Inbound message regarding the ramp status
      operationId: rampMessage
      security: []
      description: >
        When a ramp transitions into a new status, the status update will be
        sent to the provided callback endpoint to your server.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - order_id
                - status
                - status_date
                - internal_reason
                - external_reason
              properties:
                order_id:
                  type: string
                  description: >-
                    The ID of the ramp, returned on creation of a ramp, or via
                    the GET ramp endpoint.
                  example: fd04c5780062121628e05324003eef30
                status:
                  type: string
                  enum:
                    - IN_PROGRESS
                    - REFUNDED
                    - EXPIRED
                    - FULFILLED
                    - EXTRA_VERIFICATION
                    - COIN_DEPOSIT_READY
                    - COIN_DEPOSIT_CONFIRMED
                    - COIN_TRANSFERRED
                    - FIAT_TRANSFERRED
                    - CUSTOMER_BLACKLISTED
                    - PAYMENT_READY
                    - PAYMENT_ACCEPTED
                    - PAYMENT_RECEIVED
                    - PAYMENT_DECLINED
                    - PAYMENT_CANCELLED
                  description: >
                    | Status                 |
                    Description                                                         
                    |

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

                    | IN_PROGRESS            | Order is in progress. |

                    | REFUNDED               | Order has been
                    refunded                                              |

                    | EXPIRED                | Order has
                    expired.                                                   |

                    | FULFILLED              | Order has been
                    completed.                                            |

                    | EXTRA_VERIFICATION     | Customer requires extra
                    verification.                                |

                    | COIN_DEPOSIT_READY     | Coin deposit is
                    ready.                                               |

                    | COIN_DEPOSIT_CONFIRMED | Coin deposit has been
                    confirmed.                                     |

                    | COIN_TRANSFERRED       | Coin has been
                    transferred.                                           |

                    | FIAT_TRANSFERRED       | Fiat has been
                    transferred.                                           |

                    | CUSTOMER_BLACKLISTED   | Customer has been blacklisted, a
                    separate webhook will be sent with the Identity reference of
                    the customer |

                    | PAYMENT_READY          | Payment is ready to be
                    processed.                                    |

                    | PAYMENT_ACCEPTED       | Payment has been accepted for the
                    order                              |

                    | PAYMENT_RECEIVED       | Payment has been
                    received.                                           |

                    | PAYMENT_DECLINED       | Payment has been
                    declined.                                           |

                    | PAYMENT_CANCELLED      | Payment has been
                    cancelled.                                          |
                  example: IN_PROGRESS
                status_date:
                  type: string
                  format: datetime
                  description: The date of the status update
                  example: '2023-06-05 19:53:08'
                created_at:
                  type: string
                  format: datetime
                  description: The date of the status update
                  example: '2023-06-02 14:44:00'
                updated_at:
                  type: string
                  format: datetime
                  description: The date of the status update
                  example: '2023-06-09 13:53:08'
                internal_reason:
                  type: string
                  description: >-
                    The internal body for this inbound message containing the
                    reason of the message, this is for internal use.
                  example: Order is in progress
                external_reason:
                  type: string
                  description: >-
                    The external reason to provide to your customer via your
                    designated messaging channel.
                  example: >-
                    Your payment was successfully received. Your order is now
                    being processed.
                order_type:
                  type: string
                  enum:
                    - ONRAMP
                    - OFFRAMP
                  description: The transaction type of the ramp
                  example: ONRAMP
                crypto_coin:
                  type: string
                  description: The crypto currency requested
                  example: ETH
                crypto_blockchain:
                  type: string
                  description: The blockchain
                  example: ETH
                crypto_amount:
                  type: string
                  description: The amount of crypto
                  example: '0.228632'
                fiat_currency:
                  type: string
                  description: The requested fiat currency
                  example: USD
                fiat_amount:
                  type: string
                  description: The amount of fiat
                  example: '100'
                asset_price:
                  type: string
                  description: The market rate of the asset (crypto)
                  example: '0.018656'
                payment:
                  type: string
                  description: The payment requested
                  example: '100'
                processing_fee:
                  type: string
                  description: The processing fee associated to the ramp
                  example: '1.95'
                network_fee:
                  type: string
                  description: The network fee associated to the ramp
                  example: '2.33'
                usd_exchange_rate:
                  type: string
                  description: Represent the value of 1 unit of the source Fiat in USD
                  example: '1.36'
                transaction_hash:
                  type: string
                  description: The transaction hash of the completed ramp
                  example: >-
                    0x9401a7173d7bd2ad73e8b798fdc30c83fb0529e6edbad163c549a5ad136407be
      responses:
        '200':
          description: >
            Your server returns this code if it accepts the callback. On a
            failed response we will retry sending the webook.
  identityMessage:
    post:
      tags:
        - Identities
      summary: Inbound message regarding customer Identity related messages
      operationId: identityMessage
      description: >
        When a customer failed to create an order for a specific reason, the
        status update will be sent to the provided callback endpoint to your
        server.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - identity_reference
                - status
                - status_date
                - internal_reason
                - external_reason
              properties:
                identity_reference:
                  $ref: '#/components/schemas/IdentityReference'
                status:
                  type: string
                  enum:
                    - CUSTOMER_BLACKLISTED
                  description: >
                    | Status                 |
                    Description                                                         
                    |

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

                    | CUSTOMER_BLACKLISTED   | Customer has been
                    blacklisted.                                       |
                  example: CUSTOMER_BLACKLISTED
                status_date:
                  type: string
                  format: datetime
                  description: The date of the status update
                  example: '2023-06-05 19:53:08'
                internal_reason:
                  type: string
                  description: >-
                    The internal body for this inbound message containing the
                    reason of the message, this is for internal use.
                  example: Customer has been blacklisted
                external_reason:
                  type: string
                  description: >-
                    The external reason to provide to your customer via your
                    designated messaging channel.
                  example: You order could not be processed
      responses:
        '200':
          description: >
            Your server returns this code if it accepts the callback. On a
            failed response we will retry sending the webook.
components:
  securitySchemes:
    HMACAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >
        HMAC authentication using SHA256.

        The URI must be used to generate the hmac signature e.g.
        `/eapi/v0/ramps` example:    

        "POST    

        /eapi/v0/ramps   

        1741220905019999   

        {"subPartnerId":null,"identityReference":"926553-1732538-7235638-6352926","source":{"crypto":{"id":"USDT","blockchain":"ETH","walletAddress":"0xc292474673cf1a96a96e8c56ec4f45ecf2e0b448","walletAddressMemo":null},"amount":"100"},"target":{"fiat":{"id":"AUD","method":"payid-bank-transfer","instructions":{"accountName":"Foo
        Bar","accountNumber":"12345678","bsb":"063123"}}}}"
  schemas:
    IdentityReference:
      type: string
      description: >-
        ASCII letters, digits, and hyphen only, A unique customer identifier
        provided by you. This field is required and must be unique for each
        customer. Please ensure you consistently reuse the same
        identityReference for repeat interactions with the same customer,
        allowing us to reliably recognize and associate their identity.
      example: c-13344
      pattern: '[A-Za-z0-9-]'
    payid-bank-transfer:
      type: object
      title: Offramp PayId instructions
      description: |
        The payment instructions for the bank transfer in Australia.
      properties:
        accountName:
          type: string
          description: The account name for the bank transfer.
          example: John Citizen
        accountNumber:
          type: string
          description: The account number for the bank transfer.
          example: '12345678'
        bsb:
          type: string
          description: The BSB number for the bank transfer.
          example: '26195'
      required:
        - accountName
        - accountNumber
        - bsb
    interac-bank-transfer:
      type: object
      title: Offramp Interac instructions
      properties:
        email:
          type: string
          example: j.citizen@example.com
          description: The account holder email
          maxLength: 160
      required:
        - email
    sepa-bank-transfer:
      type: object
      title: Offramp SEPA instructions
      description: |
        The payment instructions for the bank transfer in Europe
      properties:
        accountName:
          type: string
          description: The account name for the bank transfer.
          example: John Citizen
        iban:
          type: string
          description: The IBAN number for the bank transfer.
          example: '26195'
      required:
        - accountName
        - iban
    ach-bank-transfer:
      type: object
      title: Offramp ACH instructions
      properties:
        bankName:
          type: string
          example: Bank of America
          description: The bank name
          maxLength: 200
        accountName:
          type: string
          example: John Armstrong
          description: The account name
          maxLength: 200
        accountNumber:
          type: string
          example: '123456789012'
          description: The account number
          minLength: 1
        routingNumber:
          type: string
          example: '121000358'
      required:
        - bankName
        - accountName
        - accountNumber
        - routingNumber
    OffRampInstructions:
      type: object
      oneOf:
        - $ref: '#/components/schemas/payid-bank-transfer'
        - $ref: '#/components/schemas/interac-bank-transfer'
        - $ref: '#/components/schemas/sepa-bank-transfer'
        - $ref: '#/components/schemas/ach-bank-transfer'
    OffRampRequestBase:
      title: Off-Ramp Request
      type: object
      properties:
        subPartnerId:
          type: string
          description: >
            Your defined ID for associating an order with. You may use this to
            differentiate between your customers.
          example: '2125'
          minimum: 1
        identityReference:
          $ref: '#/components/schemas/IdentityReference'
        source:
          type: object
          properties:
            crypto:
              type: object
              properties:
                id:
                  type: string
                  description: The crypto token to be transferred.
                  example: ETH
                blockchain:
                  type: string
                  description: The blockchain that is associated with the crypto token.
                  example: ethereum
                walletAddress:
                  type: string
                  description: >-
                    The wallet address that will be used to send the crypto.
                    This will also be the wallet address used for refunds if a
                    refund is necessary.
                  example: '0xc292474673cf1a96a96e8c56ec4f45ecf2e0b448'
                walletAddressMemo:
                  type: string
                  description: The wallet address memo associated with the wallet address.
                  example: '1234'
              required:
                - id
                - blockchain
                - walletAddress
          required:
            - crypto
        target:
          type: object
          properties:
            fiat:
              type: object
              properties:
                id:
                  type: string
                  description: >-
                    The fiat currency to be received. Must be formatted as an
                    ISO 4217 code.
                  example: GBP
                method:
                  type: string
                  description: The payment method used for the ramp.
                  example: payid-bank-transfer
                instructions:
                  type: array
                  description: >-
                    The payment instructions that you provide to Banxa. It will
                    be the where the payout will be made to and will differ per
                    payment method.
                  items:
                    $ref: '#/components/schemas/OffRampInstructions'
              required:
                - id
                - method
                - instructions
          required:
            - fiat
      required:
        - identityReference
        - source
        - target
    OffRampRequestWithCryptoAmount:
      title: Lock crypto amount
      allOf:
        - $ref: '#/components/schemas/OffRampRequestBase'
        - type: object
          properties:
            cryptoAmount:
              type: string
              description: >
                Amount in crypto precision (token-dependent, e.g., 6–8
                decimals).

                This locks the crypto amount; the fiat amount will be computed
                and rounded to the fiat scale.

                Note: small differences vs the reverse path are expected from
                precision/rounding.
              example: '100'
          required:
            - cryptoAmount
    OffRampRequestWithFiatAmount:
      title: Lock fiat amount
      allOf:
        - $ref: '#/components/schemas/OffRampRequestBase'
        - type: object
          properties:
            fiatAmount:
              type: string
              description: >
                The amount in fiat currency to convert. 

                Amount in fiat minor precision (typically 2 decimals). 

                This locks the fiat amount; the crypto amount will be computed
                and rounded to the configured crypto scale. 

                Note: due to differing decimal scales and rounding rules,
                converting fiat→crypto and then crypto→fiat may not return the
                exact original number.
              example: '100'
          required:
            - fiatAmount
    OffRampRequest:
      title: Off-Ramp Request
      oneOf:
        - $ref: '#/components/schemas/OffRampRequestWithCryptoAmount'
        - $ref: '#/components/schemas/OffRampRequestWithFiatAmount'
    OnRampRequestBase:
      title: On-Ramp Request
      type: object
      properties:
        subPartnerId:
          type: string
          description: >-
            Your defined ID for associating an order with. You may use this to
            differentiate between your customers.
          example: '2125'
          minimum: 1
        identityReference:
          $ref: '#/components/schemas/IdentityReference'
        source:
          type: object
          properties:
            fiat:
              type: object
              properties:
                id:
                  type: string
                  description: >-
                    The fiat currency to be transferred. Must be formatted as an
                    ISO 4217 code.
                  example: AUD
                method:
                  type: string
                  example: payid-bank-transfer
                  description: |
                    | Available payments |
                    |-------------|
                    |interac-bank-transfer|
                    |payid-bank-transfer|
                    |sepa-bank-transfer|
                    |ach-bank-transfer|
              required:
                - id
                - method
          required:
            - fiat
        target:
          type: object
          properties:
            crypto:
              type: object
              properties:
                id:
                  type: string
                  description: The crypto token to be received.
                  example: XRP
                blockchain:
                  type: string
                  description: The blockchain that is associated with the crypto token.
                  example: XRP Ledger
                walletAddress:
                  type: string
                  description: The wallet address Banxa will use to transfer the crypto.
                  example: rp93JdjfXxPYVjo5E7qF4G6tRbBeweUz9K
                walletAddressMemo:
                  type: string
                  description: The wallet address memo associated with the wallet address.
                  example: '39730'
              required:
                - id
                - blockchain
                - walletAddress
          required:
            - crypto
      required:
        - identityReference
        - source
        - target
    OnRampRequestWithFiatAmount:
      title: Lock fiat amount
      allOf:
        - $ref: '#/components/schemas/OnRampRequestBase'
        - type: object
          properties:
            fiatAmount:
              type: string
              description: >
                The amount in fiat currency to convert. 

                Amount in fiat minor precision (typically 2 decimals). 

                This locks the fiat amount; the crypto amount will be computed
                and rounded to the configured crypto scale. 

                Note: due to differing decimal scales and rounding rules,
                converting fiat→crypto and then crypto→fiat may not return the
                exact original number.
              example: '100'
          required:
            - fiatAmount
    OnRampRequestWithCryptoAmount:
      title: Lock crypto amount
      allOf:
        - $ref: '#/components/schemas/OnRampRequestBase'
        - type: object
          properties:
            cryptoAmount:
              type: string
              description: >
                Amount in crypto precision (token-dependent, e.g., 6–8
                decimals).

                This locks the crypto amount; the fiat amount will be computed
                and rounded to the fiat scale.

                Note: small differences vs the reverse path are expected from
                precision/rounding.
              example: '100'
          required:
            - cryptoAmount
    OnRampRequest:
      title: On-Ramp Request
      oneOf:
        - $ref: '#/components/schemas/OnRampRequestWithFiatAmount'
        - $ref: '#/components/schemas/OnRampRequestWithCryptoAmount'
    OffRampResponse:
      title: Off-Ramp Response
      type: object
      properties:
        id:
          type: string
          description: The ramp ID.
          example: '4002'
        subPartnerId:
          type: string
          description: >-
            Your defined ID for associating an order with. You may use this to
            differentiate between your customers.
          example: '2125'
        identityReference:
          $ref: '#/components/schemas/IdentityReference'
        status:
          type: string
          enum:
            - INITIALIZED
            - AWAITING_FUNDS
            - PAYMENT_SUBMITTED
            - FUNDS_RECEIVED
            - UNDER_REVIEW
            - CANCELLED
            - REFUNDED
            - COMPLETED
          description: >
            | Status           |
            Description                                                                                  
            |

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

            | INITIALIZED      | The request has been accepted and is queued for
            processing.                          |

            | AWAITING_FUNDS   | The order is ready; awaiting receipt of funds
            at the specified wallet address.             |

            | FUNDS_RECEIVED   | Funds have been successfully received at the
            destination wallet address.                      |

            | UNDER_REVIEW     | The order is undergoing compliance and security
            review.                                    |

            | COMPLETED        | The order is finalized: funds have been secured
            and fiat disbursed to the customer’s method. |

            | CANCELLED        | The order has been cancelled and will not
            proceed.                                         |

            | REFUNDED         | The amount has been returned to the customer’s
            wallet address.                       |
          example: INITIALIZED
        source:
          type: object
          properties:
            crypto:
              type: object
              properties:
                id:
                  type: string
                  description: The crypto token to be transferred.
                  example: USDT
                blockchain:
                  type: string
                  description: The blockchain that is associated with the crypto token.
                  example: ethereum
                walletAddress:
                  type: string
                  description: >-
                    The wallet address that will be used to send the crypto.
                    This will also be the wallet address used for refunds if a
                    refund is necessary.
                  example: '0x46B2E9701FE4F6C0A23533D196DbBE7EfEeDea4F'
                walletAddressMemo:
                  type: string
                  description: The wallet address memo associated with the wallet address.
                  example: '1234'
              required:
                - id
                - blockchain
                - walletAddress
            amount:
              type: string
              description: The amount of crypto to be transferred
              example: '105'
          required:
            - crypto
            - amount
        target:
          type: object
          properties:
            fiat:
              type: object
              properties:
                id:
                  type: string
                  description: >-
                    The fiat currency to be received. Must be formatted as an
                    ISO 4217 code.
                  example: USD
                method:
                  type: string
                  description: The payment method used for the ramp.
                  example: payid-bank-transfer
              required:
                - id
                - method
            amount:
              type: string
              description: The amount of fiat to be received.
              example: '100.5'
          required:
            - fiat
            - amount
        sourceDepositInstructions:
          type: object
          properties:
            walletAddress:
              type: string
              description: The Banxa deposit wallet address.
              example: '0x46B2E9701FE4F6C0A23533D196DbBE7EfEeDea4F'
            walletAddressMemo:
              type: string
              description: >-
                The wallet address memo assoicated with the Banxa deposit wallet
                address.
              example: '1684'
          required:
            - walletAddress
            - walletAddressMemo
        receipt:
          type: object
          properties:
            sourceTransactionHash:
              type: string
              description: The transaction hash of the crypto transfer.
              example: >-
                0x637f3f8c7b15a83657901ca9f9e0134f0b7dad09e09fbac8a637d026343f586e
            gatewayFee:
              type: string
              description: The fee charged by the payment processor.
              example: '1.95'
            networkFee:
              type: string
              description: The blockchain network fee required to process the transaction.
              example: '1.95'
            sourceAmount:
              type: string
              description: The amount of crypto transferred.
              example: '100'
            targetAmount:
              type: string
              description: The amount of fiat received.
              example: '100'
          required:
            - sourceTransactionHash
            - gatewayFee
            - networkFee
            - sourceAmount
            - targetAmount
        createdAt:
          type: string
          format: date-time
          description: The UTC date time of creation.
          example: '2023-05-05T19:53:08.320Z'
        completedAt:
          type: string
          format: date-time
          description: The UTC date time of the completion.
          example: '2023-06-05T19:53:08.320Z'
      required:
        - id
        - subPartnerId
        - identityReference
        - status
        - source
        - target
        - sourceDepositInstructions
        - receipt
        - createdAt
        - completedAt
    payid-bank-transfer-2:
      type: object
      title: Onramp PayId instructions
      description: >
        The Australian payment instructions the customer to complete the payment
        for the transfer.
      properties:
        recipientEmail:
          type: string
          description: The account name for the payid bank transfer.
          example: 15600270@banxa.com
        depositReference:
          type: string
          description: The reference required to provide with the deposit.
          example: '12345678'
      required:
        - recipientEmail
        - depositReference
    interac-bank-transfer-2:
      type: object
      title: Onramp Interac instructions
      properties:
        recipientEmail:
          type: string
          example: j.citizen@example.com
          description: The account holder email
          maxLength: 255
        securityQuestion:
          type: string
          example: What was the name of your first pet?
          description: Security question
          maxLength: 255
        securityAnswer:
          type: string
          example: DOGE
          description: The answer to the security question.
          maxLength: 255
      required:
        - recipientEmail
        - securityQuestion
        - securityAnswer
    sepa-bank-transfer-2:
      type: object
      title: Onramp SEPA instructions
      description: >
        The European payment instructions the customer to complete the payment
        for the transfer.
      properties:
        depositReference:
          type: string
          description: The reference for the deposit.
          example: '01'
        recipientName:
          type: string
          description: The name of the recipient.
          example: Banxa
        recipientAddress:
          type: string
          description: The address of the recipient
          example: >-
            EU Internet Ventures B.V. Piet. Heinkade 93B, 1019GM, Amsterdam, The
            Netherlands
        BIC:
          type: string
          description: The BIC number.
          example: CLJUGB00
        IBAN:
          type: string
          description: The IBAN number for the bank transfer.
          example: GB22CLJU10000000000000
        bankName:
          type: string
          description: The name of the bank
          example: CJ Limited
        bankAddress:
          type: string
          description: The bank address
          example: >-
            6th Floor, Manfield House, 1 Southampton Street London, United
            Kingdom WC2R OLR
      required:
        - depositReference
        - recipientName
        - recipientAddress
        - BIC
        - IBAN
        - bankName
        - bankAddress
    ach-bank-transfer-2:
      type: object
      title: Onramp ACH instructions
      properties:
        paymentRail:
          type: string
          example: ach_push
          description: The payment rail
        currency:
          type: string
          example: usd
          description: The currency
        amount:
          type: string
          example: '500'
          description: The amount
          minLength: 1
        depositReference:
          type: string
          example: BRGYAVF82BNNR3ZPGBD6
          description: The deposit reference
        bankAccountNumber:
          type: string
          description: The bank account number
          example: '210351636791'
        bankRoutingNumber:
          type: string
          description: The bank routing number
          example: '101019644'
        bankBeneficiaryName:
          type: string
          description: The bank beneficiary name
          example: BNXA USA MTL Inc
        bankBeneficiaryAddress:
          type: string
          description: The beneficiary address
          example: 1 East Liberty Street, 600, Reno, Nevada 895010000, US
        bankName:
          type: string
          description: The bank name
          example: Lead Bank
        bankAddress:
          type: string
          description: The bank aaddress
          example: 1801 Main St., Kansas City, MO 64108
      required:
        - paymentRail
        - currency
        - amount
        - depositReference
        - bankAccountNumber
        - bankRoutingNumber
        - bankBeneficiaryName
        - bankName
        - bankAddress
    OnRampInstructions:
      type: object
      oneOf:
        - $ref: '#/components/schemas/payid-bank-transfer-2'
        - $ref: '#/components/schemas/interac-bank-transfer-2'
        - $ref: '#/components/schemas/sepa-bank-transfer-2'
        - $ref: '#/components/schemas/ach-bank-transfer-2'
    OnRampResponse:
      title: On-Ramp Response
      type: object
      properties:
        id:
          type: string
          description: The ramp ID.
          example: '4002'
        subPartnerId:
          type: string
          description: >-
            Your defined ID for associating an order with. You may use this to
            differentiate between your customers.
          example: '2125'
        identityReference:
          $ref: '#/components/schemas/IdentityReference'
        status:
          type: string
          enum:
            - INITIALIZED
            - AWAITING_FUNDS
            - PAYMENT_SUBMITTED
            - FUNDS_RECEIVED
            - UNDER_REVIEW
            - CANCELLED
            - REFUNDED
            - COMPLETED
          description: >
            | Status           |
            Description                                                                                  
            |

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

            | INITIALIZED      | The request has been accepted and is queued for
            processing.                          |

            | AWAITING_FUNDS   | The order is ready; awaiting receipt of funds
            through the specified payment method.             |

            | FUNDS_RECEIVED   | Funds have been successfully received via the
            requested payment method.                      |

            | UNDER_REVIEW     | The order is undergoing compliance and security
            review.                                    |

            | COMPLETED        | The order is finalized: funds have been secured
            and crypto is disbursed to the customer’s wallet address. |

            | CANCELLED        | The order has been cancelled and will not
            proceed.                                         |

            | REFUNDED         | The order amount has been returned to the
            customer.                       |
          example: INITIALIZED
        source:
          type: object
          properties:
            fiat:
              type: object
              properties:
                id:
                  type: string
                  description: >
                    The fiat currency to be transferred. Must be formatted as an
                    ISO 4217 code.
                  example: AUD
                method:
                  type: string
                  description: The payment method used for the ramp.
                  example: payid-bank-transfer
              required:
                - id
                - method
            amount:
              type: string
              description: The amount of fiat to be transferred.
              example: '100'
          required:
            - fiat
            - amount
        target:
          type: object
          properties:
            crypto:
              type: object
              properties:
                id:
                  type: string
                  description: The crypto token to be received.
                  example: XRP
                blockchain:
                  type: string
                  description: The blockchain that is associated with the crypto token.
                  example: XRP Ledger
                walletAddress:
                  type: string
                  description: The wallet address Banxa will use to transfer the crypto.
                  example: rp93JdjfXxPYVjo5E7qF4G6tRbBeweUz9K
                walletAddressMemo:
                  type: string
                  description: The wallet address memo associated with the wallet address.
                  example: '39730'
              required:
                - id
                - blockchain
                - walletAddress
            amount:
              type: string
              description: The amount of crypto to be received.
              example: '105'
          required:
            - crypto
            - amount
        sourceDepositInstructions:
          type: object
          $ref: '#/components/schemas/OnRampInstructions'
          required:
            - emailAddress
            - paymentDescription
        receipt:
          type: object
          properties:
            targetTransactionHash:
              type: string
              description: The transaction hash of the crypto transfer.
              example: string
            gatewayFee:
              type: string
              description: The fee charged by the payment processor.
              example: '1.95'
            networkFee:
              type: string
              description: The blockchain network fee required to process the transaction.
              example: '1.95'
            sourceAmount:
              type: string
              description: The amount of fiat transferred.
              example: '100'
            targetAmount:
              type: string
              description: The amount of crypto received.
              example: '100'
          required:
            - targetTransactionHash
            - gatewayFee
            - networkFee
            - sourceAmount
            - targetAmount
        createdAt:
          type: string
          format: date-time
          description: The UTC date time of the transaction creation.
          example: '2023-05-05T19:53:08.320Z'
        completedAt:
          type: string
          format: date-time
          description: The UTC date time of the transaction completion.
          example: '2023-06-05T19:53:08.320Z'
      required:
        - id
        - subPartnerId
        - identityReference
        - status
        - source
        - target
        - sourceDepositInstructions
        - receipt
        - createdAt
        - completedAt
    IdentityTokenSharingRequest:
      title: Identity Sharing Request
      type: object
      properties:
        identityReference:
          $ref: '#/components/schemas/IdentityReference'
        email:
          type: string
          format: email
          example: user@banxa.com
          description: The customer email
          maxLength: 200
        mobileNumber:
          type: string
          example: 61410001000
        provider:
          type: object
          properties:
            vendor:
              type: string
              description: The KYC provider e.g. sumsub
              enum:
                - sumsub
              example: sumsub
            token:
              type: string
              minimum: 6
              description: Arbitrary string
              example: >-
                eyJhbGciOiJub25lIn0.eyJqdGkiOiJfYWN0LTZmODI2ZTU0LTE2MzctNDViMS05NzMyLWY1MjZiN2YxNWE3YyIsInVybCI6Imh0dHBzOi8vYXBpLnN1bXN1Yi5jb20ifQ.
          required:
            - vendor
            - token
      required:
        - identityReference
        - email
        - mobileNumber
        - provider
    IdentityTokenSharingResponse:
      title: Identity Sharing Response
      type: object
      properties:
        identityReference:
          $ref: '#/components/schemas/IdentityReference'
      required:
        - identityReference
    ResidentialAddress:
      type: object
      properties:
        addressLine:
          type: string
          description: Street address.
          example: 44 Gwynne Street
        suburb:
          type: string
          description: Suburb of the address.
          example: Cremorne
        state:
          type: string
          description: State or region, required when country is US.
          example: VIC
        postCode:
          type: string
          description: Postal code.
          example: '3121'
        country:
          type: string
          description: Country code.
          example: AU
      required:
        - addressLine
        - suburb
        - state
        - postCode
        - country
    CustomerIdentity:
      type: object
      properties:
        givenName:
          type: string
          example: Joe
          description: |
            Customer's given / first name.
        surname:
          type: string
          example: Bloggs
          description: |
            Customer's surname / last name.
        dob:
          type: string
          format: date
          example: '1990-01-31'
          description: >
            Customer's date of birth (e.g. "1985-01-31"). Required to format as
            ISO 8601 Date format : YYYY-MM-DD.
        taxIdType:
          type: string
          example: ssn
          description: >
            Tax identification number (e.g. SSN). Optional unless required (e.g.
            for US). This is the national identifier for the customer, for
            example, the customer's Social Security number (SSN) in the US. 
            Must be a nine-digit number in the format "AAA-GG-SSSS".
        taxId:
          type: string
          example: 123-11-123
          description: >
            Tax identification number (e.g. SSN). Optional unless required (e.g.
            for US). This is the national identifier for the customer, for
            example, the customer's Social Security number (SSN) in the US. 
            Must be a nine-digit number in the format "AAA-GG-SSSS".
        taxState:
          type: string
          example: IL
          description: >
            Tax state or region if applicable.(associated with the taxId)
            Required format as two characters. Note; We do not accept any states
            where Banxa is not licensed.
        residentialAddress:
          $ref: '#/components/schemas/ResidentialAddress'
      required:
        - givenName
        - surname
        - dob
        - residentialAddress
    IdentityRelianceDocument:
      type: object
      properties:
        type:
          type: string
          enum:
            - DRIVING_LICENSE
            - PASSPORT
            - IDENTIFICATION
          example: DRIVING_LICENSE
          description: The type of document collected from the applicant.
        data:
          type: object
          description: The document data collected from the customer.
          properties:
            number:
              type: string
              example: '123456789'
              description: Identifier number from the document.
    IdentityRelianceRequest:
      title: Identity Reliance Request
      type: object
      properties:
        identityReference:
          $ref: '#/components/schemas/IdentityReference'
        mobileNumber:
          type: string
          example: '61431000001'
          description: Mobile number of the customer.
        email:
          type: string
          format: email
          example: test@bitcoin.com.au
          description: Email address of the customer.
        screeningDate:
          type: string
          format: date
          description: The UTC screening date of the applicant.
          example: '2023-06-05'
        screeningSanctionsResult:
          type: boolean
          description: The result of the sanction screening.
          example: true
        screeningPepResult:
          type: boolean
          description: The result of the PEP sanction screening.
          example: true
        customerIdentity:
          $ref: '#/components/schemas/CustomerIdentity'
        identityDocuments:
          type: array
          description: >
            Collection of identity documents colected frofmo the customer.
            (array of objects)
          items:
            $ref: '#/components/schemas/IdentityRelianceDocument'
      required:
        - identityReference
        - mobileNumber
        - email
        - screeningDate
        - screeningSanctionsResult
        - screeningPepResult
        - customerIdentity
        - identityDocuments
    IdentityRelianceResponse:
      title: Identity Reliance Response
      type: object
      properties:
        identityReference:
          $ref: '#/components/schemas/IdentityReference'
      required:
        - identityReference
    Image:
      type: object
      oneOf:
        - title: Driving License / Identification
          required:
            - side
          properties:
            type:
              type: string
              enum:
                - DRIVING_LICENSE
                - IDENTIFICATION
              example: DRIVING_LICENSE
        - title: Other
          properties:
            type:
              type: string
              enum:
                - PASSPORT
                - PROOF_OF_ADDRESS
                - SELFIE
              example: PASSPORT
      description: >
        The mimetype field is required and must be either image/jpeg or
        image/png. Note: JSON does not support line breaks in string values, so
        the Base64-encoded content must be provided as a single continuous line
        without any line breaks.
      properties:
        base64:
          type: string
          example: >-
            iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P49/8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==
          pattern: /^[a-z0-9\/\r\n+]*={0,2}$/i
          description: >
            Base64-encoded file content. Maximum original file size before
            encoding is 10 MB.
          format: byte
        mimetype:
          type: string
          example: image/png
          description: >
            MIME type of the image, we support image/jpeg and image/png
            mimetypes
        side:
          type: string
          example: FRONT
          enum:
            - FRONT
            - BACK
          description: |
            The side of the identity document
      required:
        - base64
        - mimetype
    IdentityDocument:
      type: object
      oneOf:
        - title: Passport / Driving License / ID
          required:
            - type
            - images
            - data
          properties:
            type:
              type: string
              enum:
                - PASSPORT
                - DRIVING_LICENSE
                - IDENTIFICATION
              example: PASSPORT
        - title: Proof of Address / Selfie
          required:
            - type
            - images
          properties:
            type:
              type: string
              enum:
                - PROOF_OF_ADDRESS
                - SELFIE
              example: PROOF_OF_ADDRESS
      properties:
        type:
          type: string
          enum:
            - DRIVING_LICENSE
            - PASSPORT
            - IDENTIFICATION
            - PROOF_OF_ADDRESS
            - SELFIE
          example: DRIVING_LICENSE
          description: The type of document provided.
        data:
          type: object
          description: >
            Required when the document "type" is "PASSPORT", "DRIVING_LICENSE",
            or "IDENTIFICATION".
          properties:
            number:
              type: string
              example: '123456789'
              description: Identifier number from the document.
        images:
          type: array
          description: One or more images of the document.
          items:
            $ref: '#/components/schemas/Image'
    IdentityDocumentSharingRequest:
      title: Identity Onboarding Request
      type: object
      properties:
        identityReference:
          $ref: '#/components/schemas/IdentityReference'
        mobileNumber:
          type: string
          example: '+61431000001'
          description: Mobile (msisdn) number of the customer.
        email:
          type: string
          format: email
          example: test@bitcoin.com.au
          description: Email address of the customer.
        customerIdentity:
          $ref: '#/components/schemas/CustomerIdentity'
        occupationIndustry:
          type: string
          enum:
            - Consulting, IT, or business services
            - Design, marketing or communication
            - Travel, accommodation, or transport
            - Entertainment, arts or photography
            - Health, sports or personal care
            - Food, beverages, or tobacco
            - Retail, eCommerce, wholesale or manufacturing
            - Dealers & Resellers
            - Financial services, products, or holding companies
            - Real estate or construction
            - Education or learning
            - Charity or not-for-profit
            - Public or government services
            - Utility services
            - Unemployed/Retired
            - In between jobs/looking for work
            - Fulltime student
          example: Consulting, IT, or business services
          description: >
            Industry related to the customer's occupation.

            The valid values for 'occupation' depend on the selected
            'occupationIndustry'.

            For example, if 'occupationIndustry' is 'Consulting, IT, or business
            services', only certain occupations are valid.

            Refer to the Occupation-Industry mapping table in the API
            documentation for allowed combinations.

            This relationship is strictly enforced by server-side validation.
        occupation:
          type: string
          enum:
            - Architect
            - IT developer
            - IT hosting services
            - IT consulting/services - other
            - Scientific or technical consulting
            - Management consulting and coaching
            - Employment placement and recruitment services
            - Cleaning, repair and maintenance services
            - Financial (inc. tax, accounting, audit)
            - Lawyer / Legal services
            - Translation or language services
            - Company establishment/formation services
            - Freelance platform
            - Other consulting
            - Advertising and marketing
            - Designer
            - Interior design
            - Audio and video
            - Photography
            - Print and online media
            - Telecommunications services
            - Travel agent
            - Tour operator
            - Accommodation or hotelier
            - Other travel or tour activities
            - Passenger transport or rentals
            - Freight transport
            - Rideshare and transport share services
            - Transport - other
            - Audio and video engineer
            - Events and entertainment organiser
            - Photographer
            - Books, magazines, blogs, news
            - Video gaming
            - Performing arts
            - Gambling, betting, and lotteries
            - Adult Entertainment
            - Beautician
            - Vitamins and dietary supplements
            - Fitness or sports services
            - Medical or veterinary services
            - Dental services
            - Medical equipment
            - Elderly or other care home
            - Nursing or other care services
            - Pharmaceuticals
            - Pharmacy
            - Food manufacturing and retail
            - Restaurants and catering
            - Alcohol
            - Soft drinks
            - Tobacco
            - Clothing and accessories
            - Beauty products and services
            - Home and garden
            - Toys, games, musical instruments
            - Electronics and electrical products
            - Sports equipment
            - Manufacturing
            - Farming, seeds, plants
            - Pets and pet supplies
            - Vehicle sales
            - Vehicle accessories, parts, manufacturing
            - Machinery and equipment
            - Firearms, weapons, military
            - Arts, fine art sales
            - Arts, other arts/crafts
            - Jewellery, fine
            - Jewellery, fashion
            - Watches
            - Antiques, collectibles
            - Pawn broking
            - Scrap metal, salvage
            - Real estate sale, purchase, and management
            - Construction
            - Real estate development
            - Online learning
            - Teaching and tutoring
            - School, college, university
            - Charity, not-for-profit
            - Religious organisation
            - Public sector, government
            - Utilities
            - Unemployed
            - Retired
            - In between jobs/looking for work
            - Fulltime student
          example: IT developer
          description: >
            Customer's occupation.   

            Must be a valid occupation for the selected
            'occupationIndustry'.       

            When the selected combination is invalid a validation error will be
            thrown.    

            Refer to the Occupation-Industry mapping table:

            | occupationIndustry | occupation |

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

            | Consulting, IT, or business services | Architect |

            | Consulting, IT, or business services | IT developer |

            | Consulting, IT, or business services | IT hosting services |

            | Consulting, IT, or business services | IT consulting/services -
            other |

            | Consulting, IT, or business services | Scientific or technical
            consulting |

            | Consulting, IT, or business services | Management consulting and
            coaching |

            | Consulting, IT, or business services | Employment placement and
            recruitment services |

            | Consulting, IT, or business services | Cleaning, repair and
            maintenance services |

            | Consulting, IT, or business services | Financial (inc. tax,
            accounting, audit) |

            | Consulting, IT, or business services | Lawyer / Legal services |

            | Consulting, IT, or business services | Translation or language
            services |

            | Consulting, IT, or business services | Company
            establishment/formation services |

            | Consulting, IT, or business services | Freelance platform |

            | Consulting, IT, or business services | Other consulting |

            | Design, marketing or communication | Advertising and marketing |

            | Design, marketing or communication | Designer |

            | Design, marketing or communication | Interior design |

            | Design, marketing or communication | Audio and video |

            | Design, marketing or communication | Photography |

            | Design, marketing or communication | Print and online media |

            | Design, marketing or communication | Translation or language
            services |

            | Design, marketing or communication | Telecommunications services |

            | Travel, accommodation, or transport | Travel agent |

            | Travel, accommodation, or transport | Tour operator |

            | Travel, accommodation, or transport | Accommodation or hotelier |

            | Travel, accommodation, or transport | Other travel or tour
            activities |

            | Travel, accommodation, or transport | Passenger transport or
            rentals |

            | Travel, accommodation, or transport | Freight transport |

            | Travel, accommodation, or transport | Rideshare and transport
            share services |

            | Travel, accommodation, or transport | Transport - other |

            | Entertainment, arts or photography | Audio and video engineer |

            | Entertainment, arts or photography | Events and entertainment
            organiser |

            | Entertainment, arts or photography | Photographer |

            | Entertainment, arts or photography | Books, magazines, blogs, news
            |

            | Entertainment, arts or photography | Video gaming |

            | Entertainment, arts or photography | Performing arts |

            | Entertainment, arts or photography | Gambling, betting, and
            lotteries |

            | Entertainment, arts or photography | Telecommunications services |

            | Entertainment, arts or photography | Adult Entertainment |

            | Health, sports or personal care | Beautician |

            | Health, sports or personal care | Vitamins and dietary supplements
            |

            | Health, sports or personal care | Fitness or sports services |

            | Health, sports or personal care | Medical or veterinary services |

            | Health, sports or personal care | Dental services |

            | Health, sports or personal care | Medical equipment |

            | Health, sports or personal care | Elderly or other care home |

            | Health, sports or personal care | Nursing or other care services |

            | Health, sports or personal care | Pharmaceuticals |

            | Health, sports or personal care | Pharmacy |

            | Food, beverages, or tobacco | Food manufacturing and retail |

            | Food, beverages, or tobacco | Restaurants and catering |

            | Food, beverages, or tobacco | Vitamins and dietary supplements |

            | Food, beverages, or tobacco | Alcohol |

            | Food, beverages, or tobacco | Soft drinks |

            | Food, beverages, or tobacco | Tobacco |

            | Retail, eCommerce, wholesale or manufacturing | Clothing and
            accessories |

            | Retail, eCommerce, wholesale or manufacturing | Beauty products
            and services |

            | Retail, eCommerce, wholesale or manufacturing | Home and garden |

            | Retail, eCommerce, wholesale or manufacturing | Toys, games and
            musical instruments |

            | Retail, eCommerce, wholesale or manufacturing | Electronics and
            electrical products |

            | Retail, eCommerce, wholesale or manufacturing | Sports equipment
            (excl. weapons) |

            | Retail, eCommerce, wholesale or manufacturing | Manufacturing  |

            | Retail, eCommerce, wholesale or manufacturing | Farming, seeds,
            plants |

            | Retail, eCommerce, wholesale or manufacturing | Pets or pet
            supplies |

            | Dealers & Resellers | Vehicle sales |

            | Dealers & Resellers | Vehicle accessories, spare parts,
            manufacturing |

            | Dealers & Resellers | Machinery and equipment |

            | Dealers & Resellers | Firearms, weapons, and military
            goods/services |

            | Dealers & Resellers | Arts - fine art sales, auctions or
            procurement |

            | Dealers & Resellers | Arts - other arts and crafts products or
            services |

            | Dealers & Resellers | Jewellery - fine jewellery, watches |

            | Dealers & Resellers | Jewellery - fashion jewellery |

            | Dealers & Resellers | Precious stones, diamonds, or metals |

            | Dealers & Resellers | Chemicals |

            | Dealers & Resellers | Legal highs and related accessories |

            | Dealers & Resellers | Selling products on behalf of others (incl.
            auction, online marketplace) |

            | Dealers & Resellers | Other retail or wholesale (not listed above)
            |

            | Financial services, products, or holding companies | Financial
            Adviser (inc. tax, accounting, audit) |

            | Financial services, products, or holding companies | Investment
            Manager |

            | Financial services, products, or holding companies | Money service
            business operator |

            | Financial services, products, or holding companies | Professional
            Trader |

            | Financial services, products, or holding companies | Insurance
            Manager |

            | Financial services, products, or holding companies | Crowdfunding
            and peer lending |

            | Financial services, products, or holding companies | Other
            financial services |

            | Real estate or construction | Real estate sale, purchase, and
            management |

            | Real estate or construction | Construction |

            | Real estate or construction | Real estate development |

            | Education or learning | Online learning |

            | Education or learning | Teaching and tutoring |

            | Education or learning | Schools and universities |

            | Charity or not-for-profit | Any charity related activity |

            | Public or government services | Government Official |

            | Public or government services | Politician |

            | Public or government services | Other, not listed above |

            | Utility services | Utility services and providers |

            | Utility services | Cleaning, repair and maintenance services |

            | Utility services | Telecommunications services |

            | Utility services | Other, not listed above |

            | Unemployed/Retired | Unemployed/Retired |

            | In between jobs/looking for work | In between jobs/looking for
            work |

            | Fulltime student | Fulltime student |
        sourceOfFunds:
          type: string
          enum:
            - Personal Savings
            - Salary
            - Business Income/Profits
            - Pension
            - Government Benefits
            - Income from Cryptocurrency Trading
            - Income from Investments (e.g. shares, bonds, investment funds)
            - Income from sale of real estate or other property
            - Income from renting/leasing
            - Private loan from family members/ friends/others
            - Loan from bank
            - Inheritance
            - Gift
            - Other
          example: Salary
          description: Source from which funds are obtained.
        purposeOfTransaction:
          type: string
          enum:
            - investment
          example: investment
          description: Purpose for the transaction.
        identityDocuments:
          type: array
          description: >
            Collection of identity documents provided by the customer. (array of
            objects)
          items:
            $ref: '#/components/schemas/IdentityDocument'
      required:
        - identityReference
        - mobileNumber
        - email
        - customerIdentity
        - occupation
        - occupationIndustry
        - sourceOfFunds
        - purposeOfTransaction
        - identityDocuments
    RejectionReason:
      type: object
      properties:
        internalReason:
          type: string
          example: Image document blurry
          description: Internal code/reason for rejection.
        reason:
          type: string
          example: Image document blurry. Please re-submit.
          description: User-facing rejection message.
    IdentityDocumentSharingResponse:
      type: object
      properties:
        identityReference:
          $ref: '#/components/schemas/IdentityReference'
        status:
          type: string
          enum:
            - PENDING
            - APPROVED
            - REJECTED
          example: PENDING
          description: Status of the onboarding request
        rejectionReason:
          $ref: '#/components/schemas/RejectionReason'
        customerIdentity:
          $ref: '#/components/schemas/CustomerIdentity'
        occupationIndustry:
          type: string
          example: Consulting, IT, or business services
          description: |
            Industry related to the customer's occupation.
        occupation:
          type: string
          example: IT developer
          description: |
            Customer's occupation.   
        purposeOfTransaction:
          type: string
          example: investment
          description: Purpose for the transaction.
        createdAt:
          type: string
          format: date-time
          description: The UTC date time of the identity.
          example: '2023-06-05T19:53:08.320Z'
      required:
        - type
        - identityReference
        - status
    IdentityPatchRequest:
      title: Identity Onboarding Request
      type: object
      properties:
        identityReference:
          $ref: '#/components/schemas/IdentityReference'
        mobileNumber:
          type: string
          example: '+61431000001'
          description: Mobile (msisdn) number of the customer.
        email:
          type: string
          format: email
          example: test@bitcoin.com.au
          description: Email address of the customer.
        customerIdentity:
          type: object
          properties:
            givenName:
              type: string
              example: Joe
              description: |
                Customer's given / first name.
            surname:
              type: string
              example: Bloggs
              description: |
                Customer's surname / last name.
            dob:
              type: string
              format: date
              example: '1990-01-31'
              description: >
                Customer's date of birth (e.g. "1985-01-31"). Required to format
                as ISO 8601 Date format : YYYY-MM-DD.
            taxIdType:
              type: string
              example: ssn
              description: >
                Tax identification number (e.g. SSN). Optional unless required
                (e.g. for US). This is the national identifier for the customer,
                for example, the customer's Social Security number (SSN) in the
                US.  Must be a nine-digit number in the format "AAA-GG-SSSS".
            taxId:
              type: string
              example: 123-11-123
              description: >
                Tax identification number (e.g. SSN). Optional unless required
                (e.g. for US). This is the national identifier for the customer,
                for example, the customer's Social Security number (SSN) in the
                US.  Must be a nine-digit number in the format "AAA-GG-SSSS".
            taxState:
              type: string
              example: VIC
              description: >
                Tax state or region if applicable.(associated with the taxId)
                Required format as two characters. Note; We do not accept any
                states where Banxa is not licensed.
            residentialAddress:
              $ref: '#/components/schemas/ResidentialAddress'
        occupationIndustry:
          type: string
          enum:
            - Consulting, IT, or business services
            - Design, marketing or communication
            - Travel, accommodation, or transport
            - Entertainment, arts or photography
            - Health, sports or personal care
            - Food, beverages, or tobacco
            - Retail, eCommerce, wholesale or manufacturing
            - Dealers & Resellers
            - Financial services, products, or holding companies
            - Real estate or construction
            - Education or learning
            - Charity or not-for-profit
            - Public or government services
            - Utility services
            - Unemployed/Retired
            - In between jobs/looking for work
            - Fulltime student
          example: Consulting, IT, or business services
          description: >
            Industry related to the customer's occupation.

            The valid values for 'occupation' depend on the selected
            'occupationIndustry'.

            For example, if 'occupationIndustry' is 'Consulting, IT, or business
            services', only certain occupations are valid.

            Refer to the Occupation-Industry mapping table in the API
            documentation for allowed combinations.

            This relationship is strictly enforced by server-side validation.
        occupation:
          type: string
          enum:
            - Architect
            - IT developer
            - IT hosting services
            - IT consulting/services - other
            - Scientific or technical consulting
            - Management consulting and coaching
            - Employment placement and recruitment services
            - Cleaning, repair and maintenance services
            - Financial (inc. tax, accounting, audit)
            - Lawyer / Legal services
            - Translation or language services
            - Company establishment/formation services
            - Freelance platform
            - Other consulting
            - Advertising and marketing
            - Designer
            - Interior design
            - Audio and video
            - Photography
            - Print and online media
            - Telecommunications services
            - Travel agent
            - Tour operator
            - Accommodation or hotelier
            - Other travel or tour activities
            - Passenger transport or rentals
            - Freight transport
            - Rideshare and transport share services
            - Transport - other
            - Audio and video engineer
            - Events and entertainment organiser
            - Photographer
            - Books, magazines, blogs, news
            - Video gaming
            - Performing arts
            - Gambling, betting, and lotteries
            - Adult Entertainment
            - Beautician
            - Vitamins and dietary supplements
            - Fitness or sports services
            - Medical or veterinary services
            - Dental services
            - Medical equipment
            - Elderly or other care home
            - Nursing or other care services
            - Pharmaceuticals
            - Pharmacy
            - Food manufacturing and retail
            - Restaurants and catering
            - Alcohol
            - Soft drinks
            - Tobacco
            - Clothing and accessories
            - Beauty products and services
            - Home and garden
            - Toys, games, musical instruments
            - Electronics and electrical products
            - Sports equipment
            - Manufacturing
            - Farming, seeds, plants
            - Pets and pet supplies
            - Vehicle sales
            - Vehicle accessories, parts, manufacturing
            - Machinery and equipment
            - Firearms, weapons, military
            - Arts, fine art sales
            - Arts, other arts/crafts
            - Jewellery, fine
            - Jewellery, fashion
            - Watches
            - Antiques, collectibles
            - Pawn broking
            - Scrap metal, salvage
            - Real estate sale, purchase, and management
            - Construction
            - Real estate development
            - Online learning
            - Teaching and tutoring
            - School, college, university
            - Charity, not-for-profit
            - Religious organisation
            - Public sector, government
            - Utilities
            - Unemployed
            - Retired
            - In between jobs/looking for work
            - Fulltime student
          example: IT developer
          description: >
            Customer's occupation.   

            Must be a valid occupation for the selected
            'occupationIndustry'.       

            When the selected combination is invalid a validation error will be
            thrown.    

            Refer to the Occupation-Industry mapping table:

            | occupationIndustry | occupation |

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

            | Consulting, IT, or business services | Architect |

            | Consulting, IT, or business services | IT developer |

            | Consulting, IT, or business services | IT hosting services |

            | Consulting, IT, or business services | IT consulting/services -
            other |

            | Consulting, IT, or business services | Scientific or technical
            consulting |

            | Consulting, IT, or business services | Management consulting and
            coaching |

            | Consulting, IT, or business services | Employment placement and
            recruitment services |

            | Consulting, IT, or business services | Cleaning, repair and
            maintenance services |

            | Consulting, IT, or business services | Financial (inc. tax,
            accounting, audit) |

            | Consulting, IT, or business services | Lawyer / Legal services |

            | Consulting, IT, or business services | Translation or language
            services |

            | Consulting, IT, or business services | Company
            establishment/formation services |

            | Consulting, IT, or business services | Freelance platform |

            | Consulting, IT, or business services | Other consulting |

            | Design, marketing or communication | Advertising and marketing |

            | Design, marketing or communication | Designer |

            | Design, marketing or communication | Interior design |

            | Design, marketing or communication | Audio and video |

            | Design, marketing or communication | Photography |

            | Design, marketing or communication | Print and online media |

            | Design, marketing or communication | Translation or language
            services |

            | Design, marketing or communication | Telecommunications services |

            | Travel, accommodation, or transport | Travel agent |

            | Travel, accommodation, or transport | Tour operator |

            | Travel, accommodation, or transport | Accommodation or hotelier |

            | Travel, accommodation, or transport | Other travel or tour
            activities |

            | Travel, accommodation, or transport | Passenger transport or
            rentals |

            | Travel, accommodation, or transport | Freight transport |

            | Travel, accommodation, or transport | Rideshare and transport
            share services |

            | Travel, accommodation, or transport | Transport - other |

            | Entertainment, arts or photography | Audio and video engineer |

            | Entertainment, arts or photography | Events and entertainment
            organiser |

            | Entertainment, arts or photography | Photographer |

            | Entertainment, arts or photography | Books, magazines, blogs, news
            |

            | Entertainment, arts or photography | Video gaming |

            | Entertainment, arts or photography | Performing arts |

            | Entertainment, arts or photography | Gambling, betting, and
            lotteries |

            | Entertainment, arts or photography | Telecommunications services |

            | Entertainment, arts or photography | Adult Entertainment |

            | Health, sports or personal care | Beautician |

            | Health, sports or personal care | Vitamins and dietary supplements
            |

            | Health, sports or personal care | Fitness or sports services |

            | Health, sports or personal care | Medical or veterinary services |

            | Health, sports or personal care | Dental services |

            | Health, sports or personal care | Medical equipment |

            | Health, sports or personal care | Elderly or other care home |

            | Health, sports or personal care | Nursing or other care services |

            | Health, sports or personal care | Pharmaceuticals |

            | Health, sports or personal care | Pharmacy |

            | Food, beverages, or tobacco | Food manufacturing and retail |

            | Food, beverages, or tobacco | Restaurants and catering |

            | Food, beverages, or tobacco | Vitamins and dietary supplements |

            | Food, beverages, or tobacco | Alcohol |

            | Food, beverages, or tobacco | Soft drinks |

            | Food, beverages, or tobacco | Tobacco |

            | Retail, eCommerce, wholesale or manufacturing | Clothing and
            accessories |

            | Retail, eCommerce, wholesale or manufacturing | Beauty products
            and services |

            | Retail, eCommerce, wholesale or manufacturing | Home and garden |

            | Retail, eCommerce, wholesale or manufacturing | Toys, games and
            musical instruments |

            | Retail, eCommerce, wholesale or manufacturing | Electronics and
            electrical products |

            | Retail, eCommerce, wholesale or manufacturing | Sports equipment
            (excl. weapons) |

            | Retail, eCommerce, wholesale or manufacturing | Manufacturing  |

            | Retail, eCommerce, wholesale or manufacturing | Farming, seeds,
            plants |

            | Retail, eCommerce, wholesale or manufacturing | Pets or pet
            supplies |

            | Dealers & Resellers | Vehicle sales |

            | Dealers & Resellers | Vehicle accessories, spare parts,
            manufacturing |

            | Dealers & Resellers | Machinery and equipment |

            | Dealers & Resellers | Firearms, weapons, and military
            goods/services |

            | Dealers & Resellers | Arts - fine art sales, auctions or
            procurement |

            | Dealers & Resellers | Arts - other arts and crafts products or
            services |

            | Dealers & Resellers | Jewellery - fine jewellery, watches |

            | Dealers & Resellers | Jewellery - fashion jewellery |

            | Dealers & Resellers | Precious stones, diamonds, or metals |

            | Dealers & Resellers | Chemicals |

            | Dealers & Resellers | Legal highs and related accessories |

            | Dealers & Resellers | Selling products on behalf of others (incl.
            auction, online marketplace) |

            | Dealers & Resellers | Other retail or wholesale (not listed above)
            |

            | Financial services, products, or holding companies | Financial
            Adviser (inc. tax, accounting, audit) |

            | Financial services, products, or holding companies | Investment
            Manager |

            | Financial services, products, or holding companies | Money service
            business operator |

            | Financial services, products, or holding companies | Professional
            Trader |

            | Financial services, products, or holding companies | Insurance
            Manager |

            | Financial services, products, or holding companies | Crowdfunding
            and peer lending |

            | Financial services, products, or holding companies | Other
            financial services |

            | Real estate or construction | Real estate sale, purchase, and
            management |

            | Real estate or construction | Construction |

            | Real estate or construction | Real estate development |

            | Education or learning | Online learning |

            | Education or learning | Teaching and tutoring |

            | Education or learning | Schools and universities |

            | Charity or not-for-profit | Any charity related activity |

            | Public or government services | Government Official |

            | Public or government services | Politician |

            | Public or government services | Other, not listed above |

            | Utility services | Utility services and providers |

            | Utility services | Cleaning, repair and maintenance services |

            | Utility services | Telecommunications services |

            | Utility services | Other, not listed above |

            | Unemployed/Retired | Unemployed/Retired |

            | In between jobs/looking for work | In between jobs/looking for
            work |

            | Fulltime student | Fulltime student |
        sourceOfFunds:
          type: string
          enum:
            - Personal Savings
            - Salary
            - Business Income/Profits
            - Pension
            - Government Benefits
            - Income from Cryptocurrency Trading
            - Income from Investments (e.g. shares, bonds, investment funds)
            - Income from sale of real estate or other property
            - Income from renting/leasing
            - Private loan from family members/ friends/others
            - Loan from bank
            - Inheritance
            - Gift
            - Other
          example: Salary
          description: Source from which funds are obtained.
        purposeOfTransaction:
          type: string
          enum:
            - investment
          example: investment
          description: Purpose for the transaction.
        identityDocuments:
          type: array
          description: >
            Collection of identity documents provided by the customer. (array of
            objects)
          items:
            $ref: '#/components/schemas/IdentityDocument'
      required:
        - identityReference
        - email
    GetIdentityResponse:
      type: object
      properties:
        identifyReference:
          $ref: '#/components/schemas/IdentityReference'
        account:
          type: object
          properties:
            blocked:
              type: boolean
              description: The account status
              example: false
            exists:
              type: boolean
              description: Indicated wether the account exists
              example: true
            createdAt:
              type: string
              format: date-time
              description: The UTC date time of the identity.
              example: '2023-06-05T19:53:08.320Z'
          required:
            - blocked
            - exists
            - createdAt
      required:
        - identifyReference
        - account
    basicRequest:
      title: >
        The basic requirements to register a customer, redidential address and
        email are optional, if available it's recomended to provide these.
      type: object
      properties:
        identityReference:
          $ref: '#/components/schemas/IdentityReference'
        givenName:
          type: string
          example: Joe
          description: Company representative first name.
        surname:
          type: string
          example: Bloggs
          description: Company representative last name.
        dateOfBirth:
          type: string
          format: date
          description: Date of birth in `YYYY-MM-DD` format. Must be a past date.
          example: '1990-05-21'
        email:
          type: string
          format: email
          example: test@solana.com.au
          description: Email address of the customer.
        residentialAddress:
          $ref: '#/components/schemas/ResidentialAddress'
      required:
        - identityReference
    basicResponse:
      type: object
      properties:
        identityReference:
          $ref: '#/components/schemas/IdentityReference'
        createdAt:
          type: string
          format: date-time
          description: The UTC date time of the identity.
          example: '2023-06-05T19:53:08.320Z'
      required:
        - identityReference
        - createdAt
    LimitsRequest:
      type: object
      additionalProperties: false
      required:
        - identityReference
        - method
        - fiat
        - crypto
        - blockchain
        - transactionType
      properties:
        identityReference:
          type: string
          minLength: 1
          maxLength: 255
          description: Partner identity reference.
          example: 206-0x56c386b7b49be8618dbcdb2c6d09e161645c31ed
        method:
          type: string
          minLength: 1
          maxLength: 100
          description: Payment method / route identifier.
          example: payid-bank-transfer
        transactionType:
          type: string
          description: >-
            Transaction type (e.g., ONRAMP/OFFRAMP). Populate enum from your
            TransactionTypeEnum if desired.
          example: ONRAMP
        fiat:
          type: string
          minLength: 1
          maxLength: 10
          description: Fiat currency code (typically ISO 4217).
          example: AUD
          pattern: ^[A-Z0-9]{1,10}$
        crypto:
          type: string
          minLength: 1
          maxLength: 10
          description: Crypto asset code.
          example: BTC
          pattern: ^[A-Z0-9]{1,10}$
        blockchain:
          type: string
          minLength: 1
          maxLength: 50
          description: Blockchain identifier.
          example: BTC
    Money:
      type: object
      additionalProperties: false
      required:
        - amount
        - currency
      properties:
        amount:
          type: string
          description: Decimal amount as string.
          example: '5000.00'
          pattern: ^[0-9]+(\.[0-9]+)?$
        currency:
          type: string
          description: Fiat currency code (typically ISO 4217).
          example: AUD
          pattern: ^[A-Z]{3}$
    LimitAmounts:
      type: object
      additionalProperties: false
      description: |
        Limit amounts for a given context.
      properties:
        maxFiat:
          $ref: '#/components/schemas/Money'
        minFiat:
          $ref: '#/components/schemas/Money'
    LimitBucket:
      type: object
      additionalProperties: false
      required:
        - period
      properties:
        period:
          type: string
          description: Time window the limits apply to.
          enum:
            - TRANSACTION
            - DAILY
            - WEEKLY
            - MONTHLY
            - ANNUAL
          example: DAILY
        sources:
          type: object
          additionalProperties: false
          description: Breakdown of limit sources
          properties:
            provider:
              $ref: '#/components/schemas/LimitAmounts'
            customer:
              $ref: '#/components/schemas/LimitAmounts'
    LimitsResponse:
      type: object
      additionalProperties: false
      required:
        - identityReference
        - limits
      properties:
        identityReference:
          type: string
          description: Echo of the identity reference.
          example: 206-0x56c386b7b49be8618dbcdb2c6d09e161645c31ed
        limits:
          type: object
          properties:
            transaction:
              type: object
              properties:
                maxFiat:
                  type: object
                  properties:
                    amount:
                      type: string
                      example: '100'
                      description: The maximum value for the transaction
                    currency:
                      type: string
                      example: AUD
                      description: Subject fiat currencty
                minFiat:
                  type: object
                  properties:
                    amount:
                      type: string
                      example: '100'
                      description: The maximum value for the transaction
                    currency:
                      type: string
                      example: AUD
                      description: Subject fiat currencty
            periodical:
              type: array
              description: List of limit buckets for each time period.
              items:
                $ref: '#/components/schemas/LimitBucket'
    EligibilityRequest:
      type: object
      additionalProperties: false
      description: >
        Request payload for transaction eligibility.


        Identification rules:

        - Provide `identityReference`, OR provide all of `email`,
        `countryOfResidence`.

        - Responses containg 422 status codes can vary based on the restrcitions
        found for the profile for example:
          - limit breach (daily, weekly, monthly, annual) 
          - age restrictions 
          - unsupported asset or fiat currency
          - Locality restrictions

        Amount rules:

        - Provide exactly one of `fiatAmount` or `cryptoAmount`.


        Conditional:

        - `state` is required when `countryOfResidence` is `US`.
      required:
        - method
        - transactionType
        - fiat
        - crypto
        - blockchain
      properties:
        identityReference:
          type: string
          minLength: 1
          maxLength: 255
          description: Partner identity reference.
          example: user-123
        method:
          type: string
          minLength: 1
          maxLength: 100
          description: Transaction method (partner-defined).
          example: payid-bank-transfer
        transactionType:
          type: string
          enum:
            - ONRAMP
            - OFFRAMP
          description: >
            Transaction type. Must be a valid value of `TransactionTypeEnum`.

            (Populate the allowed values here if you want strict client
            validation.)
          example: ONRAMP
        fiat:
          type: string
          minLength: 1
          maxLength: 10
          description: |
            Fiat currency code allowed for the partner (e.g., ISO 4217).
            Enforced server-side validation for availbility
          example: AUD
          pattern: ^[A-Z0-9]{1,10}$
        crypto:
          type: string
          minLength: 1
          maxLength: 10
          description: |
            Crypto asset code. Enforced server-side validation for availbility
          example: BTC
          pattern: ^[A-Z0-9]{1,10}$
        fiatAmount:
          type: string
          minLength: 1
          description: |
            Fiat amount as a decimal string.
            Mutually exclusive with `cryptoAmount`.
          example: '250.00'
          pattern: ^[0-9]+(\.[0-9]+)?$
        cryptoAmount:
          type: string
          minLength: 1
          description: |
            Crypto amount as a decimal string.
            Mutually exclusive with `fiatAmount`.
          example: '0.125'
          pattern: ^[0-9]+(\.[0-9]+)?$
        blockchain:
          type: string
          minLength: 1
          description: Blockchain identifier.
          example: BITCOIN
        email:
          type: string
          format: email
          description: Required when `identityReference` is not provided.
          example: user@example.com
        countryOfResidence:
          type: string
          minLength: 2
          maxLength: 2
          description: |
            Required when `identityReference` is not provided.
            ISO 3166-1 alpha-2 country code.
          example: AU
          pattern: ^[A-Z]{2}$
        dateOfBirth:
          type: string
          format: date
          description: >-
            Optional when `identityReference` is not provided. (Format
            YYYY-MM-DD)"
          example: '1990-01-30'
        state:
          type: string
          description: Required if `countryOfResidence` is `US`. (Enforced server-side.)
          example: CA
      anyOf:
        - required:
            - identityReference
        - required:
            - email
            - countryOfResidence
            - dateOfBirth
      oneOf:
        - required:
            - fiatAmount
        - required:
            - cryptoAmount
    EligibilityResponse:
      type: object
      additionalProperties: false
      required:
        - paymentReady
        - requirements
      properties:
        paymentReady:
          type: boolean
          description: >-
            Whether the identity is eligible and can proceed with
            payment/transaction. When true, there are no KYC requirements.
          example: false
        requirements:
          type: array
          description: >
            List of outstanding requirements that must be satisfied before
            payment can proceed.

            If `paymentReady` is true, this will typically be an empty array.
          items:
            type: string
            enum:
              - US_TAX_ID
              - PERSONAL_DETAILS
              - DOCUMENT
              - SELFIE
              - SOURCE_FUNDS
              - OCCUPATION
              - PURPOSE_OF_TX
          uniqueItems: true
          example:
            - PERSONAL_DETAILS
            - DOCUMENT
            - SELFIE
    OnRampQuoteResponse:
      title: On-Ramp Price request
      type: object
      properties:
        identityReference:
          $ref: '#/components/schemas/IdentityReference'
        source:
          type: object
          properties:
            fiat:
              type: object
              properties:
                id:
                  type: string
                  description: The fiat currency.
                  example: AUD
                method:
                  type: string
                  description: The payment method.
                  example: payid-bank-transfer
              required:
                - id
                - method
            amount:
              type: string
              description: The amount of fiat in.
              example: '100'
          required:
            - fiat
            - amount
        target:
          type: object
          properties:
            crypto:
              type: object
              properties:
                id:
                  type: string
                  description: The crypto token.
                  example: USDT
                blockchain:
                  type: string
                  description: The blockchain that is associated with the crypto token.
                  example: TRON
              required:
                - id
                - blockchain
            amount:
              type: string
              example: '100'
              description: The total amount of crypto out.
          required:
            - crypto
            - amount
        processingFee:
          type: string
          example: '1.00'
          description: The processing fee associated with the price.
        networkFee:
          type: string
          example: '1.00'
          description: The network fee (gas fee) associated with the price.
      required:
        - identityReference
        - source
        - target
        - processingFee
        - networkFee
    OffRampQuoteResponse:
      title: Off-Ramp Price Request
      type: object
      properties:
        identityReference:
          $ref: '#/components/schemas/IdentityReference'
        source:
          type: object
          properties:
            crypto:
              type: object
              properties:
                id:
                  type: string
                  description: The crypto token.
                  example: USDT
                blockchain:
                  type: string
                  description: The blockchain that is associated with the crypto token.
                  example: TRON
                amount:
                  type: string
                  example: 100
                  description: The amount of crypto in..
              required:
                - id
                - blockchain
                - amount
          required:
            - crypto
        target:
          type: object
          properties:
            fiat:
              type: object
              properties:
                id:
                  type: string
                  description: The fiat currency.
                  example: AUD
                method:
                  type: string
                  description: The payment method.
                  example: payid-bank-transfer
              required:
                - id
                - method
            amount:
              type: string
              description: The amount of fiat out.
              example: '100'
          required:
            - fiat
            - amount
        processingFee:
          type: string
          example: '0.00'
          description: The processing fee associated with the price.
      required:
        - identityReference
        - source
        - target
  responses:
    BadRequest:
      description: Bad request due to invalid input
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Bad Request
              status:
                type: integer
                example: 400
              traceId:
                type: string
                example: 2b6fc5d0-57e4-4b5a-9e3c-6cfbb6d8023f
                description: Idempotency key for the error
    Unauthorized:
      description: Authentication failed or missing credentials
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Unauthenticated.
              status:
                type: integer
                example: 401
    NotFound:
      description: The requested resource was not found
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Not Found
              status:
                type: integer
                example: 404
    UnprocessableEntity:
      description: Validation error
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: The given data was invalid.
              errors:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: string
                    example: The email field is required.
              status:
                type: integer
                example: 422
    TooManyRequests:
      description: Rate limit exceeded
      headers:
        Retry-After:
          description: Number of seconds to wait before retrying
          schema:
            type: integer
            example: 60
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Too Many Requests. Please try again later.
              status:
                type: integer
                example: 429
    InternalServerError:
      description: Unexpected server error
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Server Error
              status:
                type: integer
                example: 500
              traceId:
                type: string
                example: 2b6fc5d0-57e4-4b5a-9e3c-6cfbb6d8023f
                description: Idempotency key for the error
