openapi: 3.1.0
info:
  title: SwiftX payment API
  summary: >-

    ### Intro


    Swiftx API facilitate fast payments via bank tranfers to specified
    beneficiaries.
        
  description: >-

    ### Changelog


    #### 2.5.1 Amount _required_ for quote


    - Since quotes are not reusable since v2.5.0, we could now add requirement
    that quote also contains rate:
      Quote amount is in base currency (e.g. AED/BHD) and payment amount is in destination currency (e.g. INR)
      We now check that `payment_amount = quote_amount * quote_rate`

    #### 2.5.0 Extended sender details _required_ for payments


    - `/v2/payment_ext` endpoint is now merged with `/v2/payment` endpoint;
       You must supply details, like sender name, dob, some document id etc

    - Quotes are now per single payment (i.e. no quote reuse, which was possible
    by accident)


    - For more efficient routing you can now add amount, bank and bank account
    details to the quote
      which allows for more efficient routing of payments.


    #### 2.1.1 External ID for payments


    - You can now supply `external_id` for the payment order and fetch the
    payment status using that id.

        `POST /v2/payment` (`external_id` body parameter)

        `GET /v2/payments/{id}?external=true` (`external_id` body parameter)


    #### 2.1.0 Extended quote and payment API


    - You can now supply additional parameters to quote request (`amount`, `acc`
    and `bank` ID).
      These allows us to return best possible quote and increase payment success rate.

    - There is a new `/v2/payment_ext` endpoint which allows adding sender info.
      This allows payments for more countries.


    #### 2.0.0 Initial release of the v2 API



    ### Credentials


    Before using this API you need to obtain valid credentials:

    - ACCESS KEY: Random base64 encoded string with custom prefix

    - SECRET KEY: Random base64 encoded string


    If possible, you need to keep `ACCESS_KEY` private and under no
    circumstances

    you should share your `SECRET KEY`. For user convenience, ACCESS KEY
    includes custom prefix in the value, e.g.


    ```
        company-test-sIEUpUP7b41n51WY
    ```


    where the first part is your company tag, followed by key usage hint and

    last part is a random value.



    ### Authentication


    For API authentication we use JWT/Bearer tokens, signed with your `SECRET
    KEY`


    Currently supported JWT algorithms are:

    - `HS256`


    JWT token header MUST include `kid`:


    ```json

    {
      "alg": "HS256",
      "typ": "JWT",
      "kid": "someuser-demo-1234567890ABCDEF"
    }

    ```


    JWT token body MUST include the following claims:


    ```json

    {
        "sub": "someuser-demo-1234567890ABCD", /* (your `ACCESS KEY`), the same as `kid` */
        "exp": 1234,  /* (expiration time, UNIX timestamp, UTC) */
        "iat": 1234,  /* (issued at time, UNIX timestamp, UTC) */
        "aud": "https://api.example.net",  /* (API URL, e.g. "https://api.swiftxappdev.net") */
        "iss": "https://api.example.com"   /* (API URL, e.g. "https://api.swiftxappdev.net") */
    }

    ```


    In addition to the above, you can add `hmac` claim for POST requests:


    ```json

    {
        "hmac": "str (SHA256 HMAC of the raw POST body)"
    }

    ```


    This allows attesting that POST payloads are not modified in transit.


    Using fast expiring tokens with HMAC adds additional guards so your requests

    can't be intercepted/forged, nor replayed.


    Swiftx doesn't provide JWT editor for the time being, you can use the
    excellent [jwt.io](https://jwt.io/beta) (password is 'jwtv2')


    ### Transaction states



    Transactions accepted by the API can be in one of the following states.

    As soon as the order is accepted, you will get unique id in the response,
    which can base

    used to track the transaction.


    Please note that orders rejected up-front by the API with 4xx
    (authentication or

    validation errors) are not represented in the state table, since they've
    never been accepted

    for processing.



    | Status Category  | Status       | Description                   |
    Notes                                                                              
    |

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

    | **In Progress**  | `queued`     | Payment order accepted        | Order is
    accepted and waiting to be submitted for processing                        |

    | **In Progress**  | `pending`    | Payment order pending         |
    DEPRECATED (see
    `processing`)                                                       |

    | **In Progress**  | `processing` | Payment order is processing   | Payment
    submitted and accepted by processor                                        
    |

    | **Success**      | `succeeded`  | Payment executed successfully
    |                                                                                    
    |

    | **Failed**       | `failed`     | Payment failed                | Payment
    failed by the processor                                                    
    |

    | **Failed**       | `rejected`   | Payment rejected              | Payment
    rejected by processor or by API during processing (e.g API could not route)
    |

    | **Failed**       | `canceled`   | Payment is canceled           |
    DEPRECATED (see
    `reversed`)                                                         |

    | **Failed**       | `reversed`   | Payment is reversed           | Payment
    reversed (and refunded) on the processor side                              
    |

    | **Call Support** | `unknown`    | Payment state is unknown      | Payment
    has encountered uknown status by the processor, needs manual intervantion  
    |                                                           |


    ### Settlement currencies



    This API enables processing and settlement of transactions in fiat currency
    USD, and stable coins: USDT and USDC. 

    It supports seamless currency conversion, validation, and settlement routing
    between traditional and digital assets.

        
  version: 2.5.1
servers:
  - url: https://api.swiftxapptest.net
    description: Swiftx Test server
  - url: https://api.swiftxapp.net
    description: Swiftx Production server
paths:
  /v2/debug:
    get:
      tags:
        - Swiftx/v2/debug
      summary: Debug Get
      description: >-
        Test endpoint to check request headers. Headers are returned in JSON
        body
      operationId: debug_get_v2_debug_get
      parameters:
        - name: authorization
          in: header
          required: true
          schema:
            type: string
            description: Bearer token (JWT signed with your `SECRET_KEY`)
            title: Authorization
          description: Bearer token (JWT signed with your `SECRET_KEY`)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v2/payment:
    post:
      tags:
        - Swiftx/v2/payment
      summary: Payment
      description: Execute payment to beneficiary with specified bank details.
      operationId: payment_v2_payment_post
      parameters:
        - name: authorization
          in: header
          required: true
          schema:
            type: string
            description: Bearer token (JWT signed with your `SECRET_KEY`)
            title: Authorization
          description: Bearer token (JWT signed with your `SECRET_KEY`)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Payment-Input'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentResponseLive'
        '400':
          description: Bad data in the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
        '401':
          description: Access token not valid or expired
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Acess token missing permissions to access the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '500':
          description: Internal server error (contact administrator)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
  /v2/quote:
    post:
      tags:
        - Swiftx/v2/payment
      summary: Quote
      description: Create quote for use with payment
      operationId: quote_v2_quote_post
      parameters:
        - name: authorization
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Bearer token (JWT signed with your `SECRET_KEY`)
            title: Authorization
          description: Bearer token (JWT signed with your `SECRET_KEY`)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              anyOf:
                - $ref: '#/components/schemas/QuoteRequest'
                - $ref: '#/components/schemas/QuoteRequestDestination'
              title: Q
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteResponse'
        '400':
          description: Bad data in the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
        '401':
          description: Access token not valid or expired
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Acess token missing permissions to access the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '500':
          description: Internal server error (contact administrator)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
  /v2/quote/{id}:
    get:
      tags:
        - Swiftx/v2/payment
      summary: Quote Get
      description: Get info about previously created Quote
      operationId: quote_get_v2_quote__id__get
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid4
            title: Id
        - name: country
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/ApiCountry'
        - name: authorization
          in: header
          required: true
          schema:
            type: string
            description: Bearer token (JWT signed with your `SECRET_KEY`)
            title: Authorization
          description: Bearer token (JWT signed with your `SECRET_KEY`)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteResponse'
        '400':
          description: Bad data in the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
        '401':
          description: Access token not valid or expired
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Acess token missing permissions to access the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '500':
          description: Internal server error (contact administrator)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
  /v2/payments/{id}:
    get:
      tags:
        - Swiftx/v2/payment
      summary: Payment Status
      description: Get info about previously executed payment
      operationId: payment_status_v2_payments__id__get
      parameters:
        - name: id
          in: path
          required: true
          schema:
            anyOf:
              - type: string
                format: uuid4
              - type: string
            title: Id
        - name: country
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/ApiCountry'
        - name: external
          in: query
          required: false
          schema:
            type: boolean
            description: >-
              When true, the `id` supplied is `external_id` from the original
              payment request.
            default: false
            title: External
          description: >-
            When true, the `id` supplied is `external_id` from the original
            payment request.
        - name: authorization
          in: header
          required: true
          schema:
            type: string
            description: Bearer token (JWT signed with your `SECRET_KEY`)
            title: Authorization
          description: Bearer token (JWT signed with your `SECRET_KEY`)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentOrderInfoLive'
        '400':
          description: Bad data in the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
        '401':
          description: Access token not valid or expired
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Acess token missing permissions to access the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '500':
          description: Internal server error (contact administrator)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
  /v2/payments:
    get:
      tags:
        - Swiftx/v2/payment
      summary: Payment History
      description: List payments
      operationId: payment_history_v2_payments_get
      parameters:
        - name: country
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/ApiCountry'
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 1000
            minimum: 0
            default: 20
            title: Limit
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
            title: Offset
        - name: sorting_order
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/SortingOrder'
            default: desc
        - name: start_ts
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date-time
              - type: 'null'
            title: Start Ts
        - name: end_ts
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date-time
              - type: 'null'
            title: End Ts
        - name: status
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  $ref: '#/components/schemas/PaymentOrderState'
                maxItems: 9
              - type: 'null'
            title: Status
        - name: search_type
          in: query
          required: false
          schema:
            anyOf:
              - $ref: '#/components/schemas/SearchType'
              - type: 'null'
            title: Search Type
        - name: search_term
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Search Term
        - name: authorization
          in: header
          required: true
          schema:
            type: string
            description: Bearer token (JWT signed with your `SECRET_KEY`)
            title: Authorization
          description: Bearer token (JWT signed with your `SECRET_KEY`)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PaymentOrderInfoLive'
                title: Response Payment History V2 Payments Get
        '400':
          description: Bad data in the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
        '401':
          description: Access token not valid or expired
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Acess token missing permissions to access the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '500':
          description: Internal server error (contact administrator)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
  /v2/balance:
    get:
      tags:
        - Swiftx/v2/balance
      summary: Balance Info
      description: Get balance info
      operationId: balance_info_v2_balance_get
      parameters:
        - name: country
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/ApiCountry'
            description: Destination country
          description: Destination country
        - name: authorization
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Bearer token (JWT signed with your `SECRET_KEY`)
            title: Authorization
          description: Bearer token (JWT signed with your `SECRET_KEY`)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceInfoResponse'
        '400':
          description: Bad data in the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
        '401':
          description: Access token not valid or expired
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Acess token missing permissions to access the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '500':
          description: Internal server error (contact administrator)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
  /v2/validate_account:
    post:
      tags:
        - Swiftx/v2/validate
      summary: Validate Account
      description: Validate bank account
      operationId: validate_account_v2_validate_account_post
      parameters:
        - name: authorization
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Bearer token (JWT signed with your `SECRET_KEY`)
            title: Authorization
          description: Bearer token (JWT signed with your `SECRET_KEY`)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateBeneficiaryRequest'
              description: Beneficiary account details
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/ValidateBeneficiaryResponse'
                  - type: 'null'
                title: Response Validate Account V2 Validate Account Post
        '400':
          description: Bad data in the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
        '401':
          description: Access token not valid or expired
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Acess token missing permissions to access the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Request rate is too high, please check 'retry-after' response header
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsError'
        '500':
          description: Internal server error (contact administrator)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
  /v2/validate_bank:
    post:
      tags:
        - Swiftx/v2/validate
      summary: Validate Bank
      description: Get info about previously created Quote
      operationId: validate_bank_v2_validate_bank_post
      parameters:
        - name: authorization
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Bearer token (JWT signed with your `SECRET_KEY`)
            title: Authorization
          description: Bearer token (JWT signed with your `SECRET_KEY`)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateBankRequest'
              description: Bank branch code (or equivalent)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/ValidateBankResponse'
                  - type: 'null'
                title: Response Validate Bank V2 Validate Bank Post
        '400':
          description: Bad data in the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
        '401':
          description: Access token not valid or expired
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Acess token missing permissions to access the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Request rate is too high, please check 'retry-after' response header
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsError'
        '500':
          description: Internal server error (contact administrator)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
  /v2/events:
    get:
      tags:
        - Swiftx/v2/events
      summary: Events
      description: Stream payment events such as payment status or quote responses
      operationId: events_v2_events_get
      parameters:
        - name: authorization
          in: header
          required: true
          schema:
            type: string
            description: Bearer token (JWT signed with your `SECRET_KEY`)
            title: Authorization
          description: Bearer token (JWT signed with your `SECRET_KEY`)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '400':
          description: Bad data in the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
        '401':
          description: Access token not valid or expired
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Acess token missing permissions to access the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '500':
          description: Internal server error (contact administrator)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
components:
  schemas:
    ApiCountry:
      type: string
      enum:
        - BGD
        - IND
        - PAK
        - PHL
        - NPL
      title: ApiCountry
    BadRequestError:
      properties:
        detail:
          anyOf:
            - type: string
            - additionalProperties:
                type: string
              type: object
            - type: 'null'
          title: Detail
      type: object
      title: BadRequestError
    BalanceInfoResponse:
      properties:
        currency:
          type: string
          title: Currency
        balance:
          type: number
          title: Balance
        wallet_currency:
          type: string
          title: Wallet Currency
          default: USDT
        wallet_currency_rate:
          type: number
          title: Wallet Currency Rate
          default: 0
        wallet_balance:
          type: number
          title: Wallet Balance
          default: 0
      type: object
      required:
        - currency
        - balance
      title: BalanceInfoResponse
    BangladeshPayment:
      properties:
        country:
          type: string
          const: BGD
          title: Country
          description: ISO 3166-1 alpha-3 Country Code
        currency:
          $ref: '#/components/schemas/CurrencyCode'
          description: >-
            Base currency (the currency will be automatically converted to local
            currency using the provided quote)
        quote:
          type: string
          format: uuid4
          title: Quote
          description: >-
            Valid currency quote id (`UUID4`) as returned by `POST /v2/quote`.
            Quote currency must match base currency.
        amount:
          type: number
          exclusiveMinimum: 0
          title: Amount
          description: >-
            The amount in the destination currency (`quote.rate *
            quote.amount`).
                        The value must match the value calculated from the quote.
                        It will return Error if the numbers are not the same (up to 4 decimal places)
                        
        bank_name:
          type: string
          title: Bank Name
          description: Bank name where the beneficiary account is held.
        beneficiary_name:
          type: string
          maxLength: 128
          title: Beneficiary Name
          description: Full name of the beneficiary (name and surname).
        beneficiary_city:
          type: string
          title: Beneficiary City
          description: Beneficiary address (city)
        beneficiary_address:
          type: string
          maxLength: 70
          title: Beneficiary Address
          description: Beneficiary address (street and number)
        beneficiary_account_number:
          type: string
          title: Beneficiary Account Number
          description: Bank account id of the beneficiary.
        beneficiary_mobile:
          anyOf:
            - type: string
            - type: 'null'
          title: Beneficiary Mobile
          description: >-
            Valid Indian mobile number (ITU E.164 format). Country code prefix
            (+91).
        beneficiary_email:
          anyOf:
            - type: string
              format: email
            - type: 'null'
          title: Beneficiary Email
          description: If specified, must be a valid email address
        remarks:
          anyOf:
            - type: string
            - type: 'null'
          title: Remarks
          description: Supplementary info and notes for tracking the transaction.
        sender_name:
          type: string
          title: Sender Name
          description: Full name of Sender (name and surname)
        sender_birthdate:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Sender Birthdate
          description: Sender birthdate
        sender_identity_doc_exp:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Sender Identity Doc Exp
          description: Expiry date for the sender identity document
        sender_identity_doc_country:
          anyOf:
            - type: string
              maxLength: 3
              minLength: 3
            - type: 'null'
          title: Sender Identity Doc Country
          description: Sender country (nationality) (ISO 3166-1 alpha-3 Country Code)
        sender_city:
          type: string
          title: Sender City
          description: Sender residency/address (city)
        sender_address:
          type: string
          maxLength: 70
          title: Sender Address
          description: Sender residency/address (street and number)
        sender_country:
          type: string
          maxLength: 3
          minLength: 3
          title: Sender Country
          description: Sender residency/country (ISO 3166-1 alpha-3 Country Code)
        sender_mobile:
          anyOf:
            - type: string
            - type: 'null'
          title: Sender Mobile
          description: Sender mobile number (ITU E.164 format)
        sender_relation:
          $ref: '#/components/schemas/Relation'
          description: Sender relation to beneficiary (Kin)
        external_id:
          anyOf:
            - type: string
              maxLength: 128
              minLength: 1
            - type: 'null'
          title: External Id
          description: Unique ID provided by API user
        timestamp:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Timestamp
          description: Timestamp of the order (will be filled in automatically server side)
      type: object
      required:
        - country
        - currency
        - quote
        - amount
        - bank_name
        - beneficiary_name
        - beneficiary_city
        - beneficiary_address
        - beneficiary_account_number
        - sender_name
        - sender_city
        - sender_address
        - sender_country
        - sender_relation
      title: BangladeshPayment
      examples:
        - amount: 100
          bank_name: HDFC Bank
          beneficiary_account_number: '7823732431829188'
          beneficiary_account_type: savings
          beneficiary_address: Linking Road
          beneficiary_city: Mumbai
          beneficiary_email: rkgupta@domain.com
          beneficiary_mobile: '+918834907438'
          beneficiary_name: Rakesh Gupta
          country: IND
          currency: AED
          quote: 00000000-0000-4000-A000-000000000000
          remarks: test
          sender_address: Jumeirah Beach Road
          sender_birthdate: '1970-01-01'
          sender_city: Dubai
          sender_country: ARE
          sender_identity_doc: A987654
          sender_identity_doc_country: ARE
          sender_identity_doc_exp: '2038-01-19'
          sender_identity_doc_type: idcard
          sender_mobile: '+9715850185684'
          sender_name: Ahmed Ahmed
          sender_relation: other
    BankAccountStatus:
      type: string
      enum:
        - valid
        - invalid
        - nre
        - pending
      title: BankAccountStatus
    BankAccountType:
      type: string
      enum:
        - savings
        - current
      title: BankAccountType
    CurrencyCode:
      type: string
      enum:
        - BHD
        - EUR
        - KWD
        - MYR
        - OMR
        - QAR
        - SAR
        - SGD
        - TRY
        - AED
        - USD
        - INR
      title: CurrencyCode
    DestinationCurrency:
      type: string
      enum:
        - BDT
        - INR
        - PKR
        - PHP
        - NPR
      title: DestinationCurrency
    ForbiddenError:
      properties:
        detail:
          anyOf:
            - type: string
            - additionalProperties:
                type: string
              type: object
            - type: 'null'
          title: Detail
      type: object
      title: ForbiddenError
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    IdentityDocumentType:
      type: string
      enum:
        - idcard
        - passport
        - other
      title: IdentityDocumentType
    IndiaPayment:
      properties:
        country:
          type: string
          const: IND
          title: Country
          description: ISO 3166-1 alpha-3 Country Code
        currency:
          $ref: '#/components/schemas/CurrencyCode'
          description: >-
            Base currency (the currency will be automatically converted to local
            currency using the provided quote)
        quote:
          type: string
          format: uuid4
          title: Quote
          description: >-
            Valid currency quote id (`UUID4`) as returned by `POST /v2/quote`.
            Quote currency must match base currency.
        amount:
          type: number
          exclusiveMinimum: 0
          title: Amount
          description: >-
            The amount in the destination currency (`quote.rate *
            quote.amount`).
                        The value must match the value calculated from the quote.
                        It will return Error if the numbers are not the same (up to 4 decimal places)
                        
        bank_name:
          type: string
          title: Bank Name
          description: Bank name where the beneficiary account is held.
        beneficiary_name:
          type: string
          maxLength: 128
          title: Beneficiary Name
          description: Full name of the beneficiary (name and surname).
        beneficiary_city:
          type: string
          title: Beneficiary City
          description: Beneficiary address (city)
        beneficiary_address:
          type: string
          maxLength: 70
          title: Beneficiary Address
          description: Beneficiary address (street and number)
        beneficiary_account_number:
          type: string
          title: Beneficiary Account Number
          description: Bank account id of the beneficiary.
        beneficiary_mobile:
          anyOf:
            - type: string
            - type: 'null'
          title: Beneficiary Mobile
          description: >-
            Valid Indian mobile number (ITU E.164 format). Country code prefix
            (+91).
        beneficiary_email:
          anyOf:
            - type: string
              format: email
            - type: 'null'
          title: Beneficiary Email
          description: If specified, must be a valid email address
        remarks:
          anyOf:
            - type: string
            - type: 'null'
          title: Remarks
          description: Supplementary info and notes for tracking the transaction.
        sender_name:
          type: string
          title: Sender Name
          description: Full name of Sender (name and surname)
        sender_birthdate:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Sender Birthdate
          description: Sender birthdate
        sender_identity_doc_exp:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Sender Identity Doc Exp
          description: Expiry date for the sender identity document
        sender_identity_doc_country:
          anyOf:
            - type: string
              maxLength: 3
              minLength: 3
            - type: 'null'
          title: Sender Identity Doc Country
          description: Sender country (nationality) (ISO 3166-1 alpha-3 Country Code)
        sender_city:
          type: string
          title: Sender City
          description: Sender residency/address (city)
        sender_address:
          type: string
          maxLength: 70
          title: Sender Address
          description: Sender residency/address (street and number)
        sender_country:
          type: string
          maxLength: 3
          minLength: 3
          title: Sender Country
          description: Sender residency/country (ISO 3166-1 alpha-3 Country Code)
        sender_mobile:
          anyOf:
            - type: string
            - type: 'null'
          title: Sender Mobile
          description: Sender mobile number (ITU E.164 format)
        sender_relation:
          $ref: '#/components/schemas/Relation'
          description: Sender relation to beneficiary (Kin)
        external_id:
          anyOf:
            - type: string
              maxLength: 128
              minLength: 1
            - type: 'null'
          title: External Id
          description: Unique ID provided by API user
        timestamp:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Timestamp
          description: Timestamp of the order (will be filled in automatically server side)
        beneficiary_account_type:
          $ref: '#/components/schemas/BankAccountType'
          description: Bank account type
          default: savings
        bank_branch_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Bank Branch Name
          description: Branch name of the specified bank
        bank_branch_code:
          type: string
          title: Bank Branch Code
          description: Bank branch code (e.g. for India it is equivalent to IFSC)
        sender_identity_doc_type:
          anyOf:
            - $ref: '#/components/schemas/IdentityDocumentType'
            - type: 'null'
          description: Sender identity document type
        sender_identity_doc:
          anyOf:
            - type: string
            - type: 'null'
          title: Sender Identity Doc
          description: Sender identity document number
      type: object
      required:
        - country
        - currency
        - quote
        - amount
        - bank_name
        - beneficiary_name
        - beneficiary_city
        - beneficiary_address
        - beneficiary_account_number
        - sender_name
        - sender_city
        - sender_address
        - sender_country
        - sender_relation
        - bank_branch_code
      title: IndiaPayment
      examples:
        - amount: 100
          bank_name: HDFC Bank
          beneficiary_account_number: '7823732431829188'
          beneficiary_account_type: savings
          beneficiary_address: Linking Road
          beneficiary_city: Mumbai
          beneficiary_email: rkgupta@domain.com
          beneficiary_mobile: '+918834907438'
          beneficiary_name: Rakesh Gupta
          country: IND
          currency: AED
          quote: 00000000-0000-4000-A000-000000000000
          remarks: test
          sender_address: Jumeirah Beach Road
          sender_birthdate: '1970-01-01'
          sender_city: Dubai
          sender_country: ARE
          sender_identity_doc: A987654
          sender_identity_doc_country: ARE
          sender_identity_doc_exp: '2038-01-19'
          sender_identity_doc_type: idcard
          sender_mobile: '+9715850185684'
          sender_name: Ahmed Ahmed
          sender_relation: other
    InternalServerError:
      properties:
        detail:
          anyOf:
            - type: string
            - additionalProperties:
                type: string
              type: object
            - type: 'null'
          title: Detail
      type: object
      title: InternalServerError
    PakistanPayment:
      properties:
        country:
          type: string
          const: PAK
          title: Country
          description: ISO 3166-1 alpha-3 Country Code
        currency:
          $ref: '#/components/schemas/CurrencyCode'
          description: >-
            Base currency (the currency will be automatically converted to local
            currency using the provided quote)
        quote:
          type: string
          format: uuid4
          title: Quote
          description: >-
            Valid currency quote id (`UUID4`) as returned by `POST /v2/quote`.
            Quote currency must match base currency.
        amount:
          type: number
          exclusiveMinimum: 0
          title: Amount
          description: >-
            The amount in the destination currency (`quote.rate *
            quote.amount`).
                        The value must match the value calculated from the quote.
                        It will return Error if the numbers are not the same (up to 4 decimal places)
                        
        bank_name:
          type: string
          title: Bank Name
          description: Bank name where the beneficiary account is held.
        beneficiary_name:
          type: string
          maxLength: 128
          title: Beneficiary Name
          description: Full name of the beneficiary (name and surname).
        beneficiary_city:
          type: string
          title: Beneficiary City
          description: Beneficiary address (city)
        beneficiary_address:
          type: string
          maxLength: 70
          title: Beneficiary Address
          description: Beneficiary address (street and number)
        beneficiary_account_number:
          type: string
          title: Beneficiary Account Number
          description: Bank account id of the beneficiary.
        beneficiary_mobile:
          anyOf:
            - type: string
            - type: 'null'
          title: Beneficiary Mobile
          description: >-
            Valid Indian mobile number (ITU E.164 format). Country code prefix
            (+91).
        beneficiary_email:
          anyOf:
            - type: string
              format: email
            - type: 'null'
          title: Beneficiary Email
          description: If specified, must be a valid email address
        remarks:
          anyOf:
            - type: string
            - type: 'null'
          title: Remarks
          description: Supplementary info and notes for tracking the transaction.
        sender_name:
          type: string
          title: Sender Name
          description: Full name of Sender (name and surname)
        sender_birthdate:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Sender Birthdate
          description: Sender birthdate
        sender_identity_doc_exp:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Sender Identity Doc Exp
          description: Expiry date for the sender identity document
        sender_identity_doc_country:
          anyOf:
            - type: string
              maxLength: 3
              minLength: 3
            - type: 'null'
          title: Sender Identity Doc Country
          description: Sender country (nationality) (ISO 3166-1 alpha-3 Country Code)
        sender_city:
          type: string
          title: Sender City
          description: Sender residency/address (city)
        sender_address:
          type: string
          maxLength: 70
          title: Sender Address
          description: Sender residency/address (street and number)
        sender_country:
          type: string
          maxLength: 3
          minLength: 3
          title: Sender Country
          description: Sender residency/country (ISO 3166-1 alpha-3 Country Code)
        sender_mobile:
          anyOf:
            - type: string
            - type: 'null'
          title: Sender Mobile
          description: Sender mobile number (ITU E.164 format)
        sender_relation:
          $ref: '#/components/schemas/Relation'
          description: Sender relation to beneficiary (Kin)
        external_id:
          anyOf:
            - type: string
              maxLength: 128
              minLength: 1
            - type: 'null'
          title: External Id
          description: Unique ID provided by API user
        timestamp:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Timestamp
          description: Timestamp of the order (will be filled in automatically server side)
        beneficiary_account_type:
          $ref: '#/components/schemas/BankAccountType'
          description: Bank account type
          default: savings
        iso_code:
          type: string
          title: Iso Code
          description: SWIFT / BIC code of the beneficiary bank branch
        sender_identity_doc_type:
          $ref: '#/components/schemas/IdentityDocumentType'
          description: Sender identity document type
        sender_identity_doc:
          type: string
          title: Sender Identity Doc
          description: Sender identity document number
      type: object
      required:
        - country
        - currency
        - quote
        - amount
        - bank_name
        - beneficiary_name
        - beneficiary_city
        - beneficiary_address
        - beneficiary_account_number
        - sender_name
        - sender_city
        - sender_address
        - sender_country
        - sender_relation
        - iso_code
        - sender_identity_doc_type
        - sender_identity_doc
      title: PakistanPayment
      examples:
        - amount: 100
          bank_name: HDFC Bank
          beneficiary_account_number: '7823732431829188'
          beneficiary_account_type: savings
          beneficiary_address: Linking Road
          beneficiary_city: Mumbai
          beneficiary_email: rkgupta@domain.com
          beneficiary_mobile: '+918834907438'
          beneficiary_name: Rakesh Gupta
          country: IND
          currency: AED
          quote: 00000000-0000-4000-A000-000000000000
          remarks: test
          sender_address: Jumeirah Beach Road
          sender_birthdate: '1970-01-01'
          sender_city: Dubai
          sender_country: ARE
          sender_identity_doc: A987654
          sender_identity_doc_country: ARE
          sender_identity_doc_exp: '2038-01-19'
          sender_identity_doc_type: idcard
          sender_mobile: '+9715850185684'
          sender_name: Ahmed Ahmed
          sender_relation: other
    Payment-Input:
      oneOf:
        - $ref: '#/components/schemas/IndiaPayment'
        - $ref: '#/components/schemas/PakistanPayment'
        - $ref: '#/components/schemas/BangladeshPayment'
        - $ref: '#/components/schemas/PhilippinesPayment'
      discriminator:
        propertyName: country
        mapping:
          BGD: '#/components/schemas/BangladeshPayment'
          IND: '#/components/schemas/IndiaPayment'
          PAK: '#/components/schemas/PakistanPayment'
          PHL: '#/components/schemas/PhilippinesPayment'
    Payment-Output:
      oneOf:
        - $ref: '#/components/schemas/IndiaPayment'
        - $ref: '#/components/schemas/PakistanPayment'
        - $ref: '#/components/schemas/BangladeshPayment'
        - $ref: '#/components/schemas/PhilippinesPayment'
      discriminator:
        propertyName: country
        mapping:
          BGD: '#/components/schemas/BangladeshPayment'
          IND: '#/components/schemas/IndiaPayment'
          PAK: '#/components/schemas/PakistanPayment'
          PHL: '#/components/schemas/PhilippinesPayment'
    PaymentOrderInfoLive:
      properties:
        id:
          type: string
          format: uuid4
          title: Id
        order:
          $ref: '#/components/schemas/Payment-Output'
        response:
          anyOf:
            - $ref: '#/components/schemas/PaymentResponseLive'
            - type: 'null'
        quote:
          $ref: '#/components/schemas/QuoteResponse'
      type: object
      required:
        - id
        - order
        - response
        - quote
      title: PaymentOrderInfoLive
    PaymentOrderState:
      type: string
      enum:
        - queued
        - rejected
        - pending
        - processing
        - succeeded
        - failed
        - canceled
        - unknown
        - reversed
      title: PaymentOrderState
    PaymentResponseLive:
      properties:
        id:
          type: string
          format: uuid4
          title: Id
        timestamp:
          type: string
          format: date-time
          title: Timestamp
        status:
          $ref: '#/components/schemas/PaymentOrderState'
        msg:
          anyOf:
            - type: string
            - type: 'null'
          title: Msg
        amount:
          anyOf:
            - type: number
            - type: 'null'
          title: Amount
        amount_currency:
          anyOf:
            - $ref: '#/components/schemas/DestinationCurrency'
            - type: 'null'
        base_amount:
          anyOf:
            - type: number
            - type: 'null'
          title: Base Amount
        base_currency:
          anyOf:
            - $ref: '#/components/schemas/CurrencyCode'
            - type: 'null'
        wallet_amount:
          anyOf:
            - type: number
            - type: 'null'
          title: Wallet Amount
        wallet_currency:
          anyOf:
            - $ref: '#/components/schemas/StableCoin'
            - type: 'null'
        wallet_premium:
          anyOf:
            - type: number
            - type: 'null'
          title: Wallet Premium
        wallet_fx:
          anyOf:
            - type: number
            - type: 'null'
          title: Wallet Fx
        wallet_txn_cost:
          anyOf:
            - type: number
            - type: 'null'
          title: Wallet Txn Cost
        bank_reference:
          anyOf:
            - type: string
            - type: 'null'
          title: Bank Reference
      type: object
      required:
        - id
        - timestamp
        - status
      title: PaymentResponseLive
      examples:
        - id: 00000000-0000-4000-A000-000000000000
          msg: OK
          status: queued
          timestamp: '2024-12-01T01:02:03.000000Z'
        - id: 00000000-0000-4000-A000-000000000000
          status: processing
          timestamp: '2024-12-01T01:02:03.000000Z'
    PhilippinesPayment:
      properties:
        country:
          type: string
          const: PHL
          title: Country
          description: ISO 3166-1 alpha-3 Country Code
        currency:
          $ref: '#/components/schemas/CurrencyCode'
          description: >-
            Base currency (the currency will be automatically converted to local
            currency using the provided quote)
        quote:
          type: string
          format: uuid4
          title: Quote
          description: >-
            Valid currency quote id (`UUID4`) as returned by `POST /v2/quote`.
            Quote currency must match base currency.
        amount:
          type: number
          exclusiveMinimum: 0
          title: Amount
          description: >-
            The amount in the destination currency (`quote.rate *
            quote.amount`).
                        The value must match the value calculated from the quote.
                        It will return Error if the numbers are not the same (up to 4 decimal places)
                        
        bank_name:
          type: string
          title: Bank Name
          description: Bank name where the beneficiary account is held.
        beneficiary_name:
          type: string
          maxLength: 128
          title: Beneficiary Name
          description: Full name of the beneficiary (name and surname).
        beneficiary_city:
          type: string
          title: Beneficiary City
          description: Beneficiary address (city)
        beneficiary_address:
          type: string
          maxLength: 70
          title: Beneficiary Address
          description: Beneficiary address (street and number)
        beneficiary_account_number:
          type: string
          title: Beneficiary Account Number
          description: Bank account id of the beneficiary.
        beneficiary_mobile:
          anyOf:
            - type: string
            - type: 'null'
          title: Beneficiary Mobile
          description: >-
            Valid Indian mobile number (ITU E.164 format). Country code prefix
            (+91).
        beneficiary_email:
          anyOf:
            - type: string
              format: email
            - type: 'null'
          title: Beneficiary Email
          description: If specified, must be a valid email address
        remarks:
          anyOf:
            - type: string
            - type: 'null'
          title: Remarks
          description: Supplementary info and notes for tracking the transaction.
        sender_name:
          type: string
          title: Sender Name
          description: Full name of Sender (name and surname)
        sender_birthdate:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Sender Birthdate
          description: Sender birthdate
        sender_identity_doc_exp:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Sender Identity Doc Exp
          description: Expiry date for the sender identity document
        sender_identity_doc_country:
          anyOf:
            - type: string
              maxLength: 3
              minLength: 3
            - type: 'null'
          title: Sender Identity Doc Country
          description: Sender country (nationality) (ISO 3166-1 alpha-3 Country Code)
        sender_city:
          type: string
          title: Sender City
          description: Sender residency/address (city)
        sender_address:
          type: string
          maxLength: 70
          title: Sender Address
          description: Sender residency/address (street and number)
        sender_country:
          type: string
          maxLength: 3
          minLength: 3
          title: Sender Country
          description: Sender residency/country (ISO 3166-1 alpha-3 Country Code)
        sender_mobile:
          anyOf:
            - type: string
            - type: 'null'
          title: Sender Mobile
          description: Sender mobile number (ITU E.164 format)
        sender_relation:
          $ref: '#/components/schemas/Relation'
          description: Sender relation to beneficiary (Kin)
        external_id:
          anyOf:
            - type: string
              maxLength: 128
              minLength: 1
            - type: 'null'
          title: External Id
          description: Unique ID provided by API user
        timestamp:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Timestamp
          description: Timestamp of the order (will be filled in automatically server side)
      type: object
      required:
        - country
        - currency
        - quote
        - amount
        - bank_name
        - beneficiary_name
        - beneficiary_city
        - beneficiary_address
        - beneficiary_account_number
        - sender_name
        - sender_city
        - sender_address
        - sender_country
        - sender_relation
      title: PhilippinesPayment
      examples:
        - amount: 100
          bank_name: HDFC Bank
          beneficiary_account_number: '7823732431829188'
          beneficiary_account_type: savings
          beneficiary_address: Linking Road
          beneficiary_city: Mumbai
          beneficiary_email: rkgupta@domain.com
          beneficiary_mobile: '+918834907438'
          beneficiary_name: Rakesh Gupta
          country: IND
          currency: AED
          quote: 00000000-0000-4000-A000-000000000000
          remarks: test
          sender_address: Jumeirah Beach Road
          sender_birthdate: '1970-01-01'
          sender_city: Dubai
          sender_country: ARE
          sender_identity_doc: A987654
          sender_identity_doc_country: ARE
          sender_identity_doc_exp: '2038-01-19'
          sender_identity_doc_type: idcard
          sender_mobile: '+9715850185684'
          sender_name: Ahmed Ahmed
          sender_relation: other
    QuoteRequest:
      properties:
        country:
          $ref: '#/components/schemas/ApiCountry'
          description: Destination country
        currency:
          $ref: '#/components/schemas/CurrencyCode'
          description: Source currency
        beneficiary_account_number:
          anyOf:
            - type: string
            - type: 'null'
          title: Beneficiary Account Number
          description: Bank account id of the beneficiary. [OPTIONAL]
        bank_branch_code:
          anyOf:
            - type: string
            - type: 'null'
          title: Bank Branch Code
          description: Bank branch code of the beneficiary (e.g. IFSC for India) [OPTIONAL]
        amount:
          type: number
          exclusiveMinimum: 0
          title: Amount
          description: Valid amount in the source currency.
      type: object
      required:
        - country
        - currency
        - amount
      title: QuoteRequest
    QuoteRequestDestination:
      properties:
        country:
          $ref: '#/components/schemas/ApiCountry'
          description: Destination country
        currency:
          $ref: '#/components/schemas/CurrencyCode'
          description: Source currency
        beneficiary_account_number:
          anyOf:
            - type: string
            - type: 'null'
          title: Beneficiary Account Number
          description: Bank account id of the beneficiary. [OPTIONAL]
        bank_branch_code:
          anyOf:
            - type: string
            - type: 'null'
          title: Bank Branch Code
          description: Bank branch code of the beneficiary (e.g. IFSC for India) [OPTIONAL]
        amount_destination:
          type: number
          exclusiveMinimum: 0
          title: Amount Destination
          description: Valid amount in the source currency.
      type: object
      required:
        - country
        - currency
        - amount_destination
      title: QuoteRequestDestination
      description: Quote request with destination amount
    QuoteResponse:
      properties:
        id:
          type: string
          format: uuid4
          title: Id
        country:
          $ref: '#/components/schemas/ApiCountry'
        currency:
          $ref: '#/components/schemas/CurrencyCode'
        amount:
          type: number
          title: Amount
        amount_destination:
          type: number
          title: Amount Destination
        rate:
          type: number
          title: Rate
        timestamp:
          type: string
          format: date-time
          title: Timestamp
        expires:
          type: string
          format: date-time
          title: Expires
        wallet_rate:
          type: number
          title: Wallet Rate
        min_amount_destination:
          anyOf:
            - type: number
            - type: 'null'
          title: Min Amount Destination
        max_amount_destination:
          anyOf:
            - type: number
            - type: 'null'
          title: Max Amount Destination
      type: object
      required:
        - id
        - country
        - currency
        - amount
        - amount_destination
        - rate
        - timestamp
        - expires
        - wallet_rate
      title: QuoteResponse
      examples:
        - amount: 100
          amount_destination: 8488.79
          country: IND
          currency: USD
          expires: '2024-12-01T01:17:03.000000Z'
          id: 00000000-0000-4000-A000-000000000000
          max_amount_destination: 100000
          min_amount_destination: 100
          rate: 84.887912
          timestamp: '2024-12-01T01:02:03.000000Z'
          wallet_rate: 84.887912
    Relation:
      type: string
      enum:
        - aunt
        - brother
        - colleague
        - cousin
        - daughter
        - father
        - friend
        - husband
        - inlaws
        - mother
        - nephew
        - niece
        - other
        - own
        - sister
        - son
        - uncle
        - wife
      title: Relation
    SearchType:
      type: string
      enum:
        - id
        - external_id
      title: SearchType
    SortingOrder:
      type: string
      enum:
        - asc
        - desc
      title: SortingOrder
    StableCoin:
      type: string
      enum:
        - USDT
        - USDC
      title: StableCoin
    TooManyRequestsError:
      properties:
        detail:
          anyOf:
            - type: string
            - additionalProperties:
                type: string
              type: object
            - type: 'null'
          title: Detail
      type: object
      title: TooManyRequestsError
    UnauthorizedError:
      properties:
        detail:
          anyOf:
            - type: string
            - additionalProperties:
                type: string
              type: object
            - type: 'null'
          title: Detail
      type: object
      title: UnauthorizedError
    ValidateBankRequest:
      properties:
        country:
          $ref: '#/components/schemas/ApiCountry'
        bank_branch_code:
          type: string
          title: Bank Branch Code
      type: object
      required:
        - country
        - bank_branch_code
      title: ValidateBankRequest
    ValidateBankResponse:
      properties:
        valid:
          type: boolean
          title: Valid
        bank:
          type: string
          title: Bank
        code:
          type: string
          title: Code
        ifsc:
          type: string
          title: Ifsc
        micr:
          type: string
          title: Micr
        branch:
          type: string
          title: Branch
        city:
          type: string
          title: City
        district:
          type: string
          title: District
        state:
          type: string
          title: State
        address:
          type: string
          title: Address
        neft:
          type: boolean
          title: Neft
        imps:
          type: boolean
          title: Imps
        rtgs:
          type: boolean
          title: Rtgs
      type: object
      required:
        - valid
        - bank
        - code
        - ifsc
        - micr
        - branch
        - city
        - district
        - state
        - address
        - neft
        - imps
        - rtgs
      title: ValidateBankResponse
    ValidateBeneficiaryRequest:
      properties:
        country:
          $ref: '#/components/schemas/ApiCountry'
        account_number:
          type: string
          title: Account Number
          description: Bank account id of the beneficiary.
        bank_branch_code:
          type: string
          title: Bank Branch Code
          description: Indian Financial System Code (IFSC) of the bank branch
      type: object
      required:
        - country
        - account_number
        - bank_branch_code
      title: ValidateBeneficiaryRequest
    ValidateBeneficiaryResponse:
      properties:
        account_number:
          type: string
          title: Account Number
          description: Bank account id of the beneficiary.
        bank_branch_code:
          type: string
          title: Bank Branch Code
          description: Indian Financial System Code (IFSC) of the bank branch
        status:
          $ref: '#/components/schemas/BankAccountStatus'
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
      type: object
      required:
        - account_number
        - bank_branch_code
        - status
      title: ValidateBeneficiaryResponse
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
