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

# Create a new Exchange transaction

> Create a new Exchange transaction using the data provided in the request body.



## OpenAPI

````yaml https://sandbox-api.borderless.xyz/v1/api-json post /v1/exchanges
openapi: 3.0.0
info:
  title: Borderless API
  description: The Borderless API documentation.
  version: '1.0'
  contact: {}
servers:
  - url: https://sandbox-api.borderless.xyz
security: []
tags: []
paths:
  /v1/exchanges:
    post:
      tags:
        - Transaction / Exchanges
      summary: Create a new Exchange transaction
      description: >-
        Create a new Exchange transaction using the data provided in the request
        body.
      operationId: ExchangesController_exchange
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExchangeDto'
      responses:
        '201':
          description: Successfully created Exchange transaction data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionEntity'
        '400':
          description: The Exchange transaction data is invalid or incomplete.
      security:
        - bearer: []
components:
  schemas:
    ExchangeDto:
      type: object
      properties:
        from:
          description: Asset leg to convert from.
          allOf:
            - $ref: '#/components/schemas/ExchangeLegDto'
        to:
          description: Asset leg to convert to.
          allOf:
            - $ref: '#/components/schemas/ExchangeLegDto'
        amount:
          type: string
          description: Amount to convert from the source leg.
          example: '100.00'
        accountId:
          type: string
          description: Identifier of the PFI account where the conversion takes place.
          example: acc_123
      required:
        - from
        - to
        - amount
        - accountId
    TransactionEntity:
      type: object
      properties:
        id:
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/TransactionType'
        status:
          allOf:
            - $ref: '#/components/schemas/TransactionStatus'
        pfiName:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/PFIName'
        country:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CountryCode'
        source:
          $ref: '#/components/schemas/TransactionSourceEntity'
        destination:
          $ref: '#/components/schemas/TransactionDestinationEntity'
        instructions:
          type: object
          nullable: true
          deprecated: true
          description: >-
            Deprecated. Use `withdrawalOnchainInstruction` or
            `depositInstruction` instead.
        createdAt:
          format: date-time
          type: string
        updatedAt:
          format: date-time
          type: string
        txHash:
          type: array
          items:
            type: string
        feeAmount:
          $ref: '#/components/schemas/DecimalNumber'
        failureReason:
          type: object
          nullable: true
          example:
            details:
              - path: paymentInstruction
                pfiErrorMessage: >-
                  bank.transitNumber must match
                  /^([0-9]{3}-[0-9]{5}|[0-9]{5}-[0-9]{3})$/ regular expression
            message: Validation error from PFI
        depositInstruction:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/DepositInstructionEntity'
        destinationPaymentInstruction:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/PaymentInstructionEntity'
        withdrawalOnchainInstruction:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/OnchainInstructionEntity'
        counterPartyIdentityId:
          type: string
          nullable: true
        virtualAccountId:
          type: string
          nullable: true
        reconciliationStatus:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/ReconciliationStatus'
        reconciliationWasRegressed:
          type: boolean
        refundResolution:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/RefundResolutionEntity'
        rateGrade:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RateGrade'
        rateStatus:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RateStatus'
        rateConfidenceTier:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RateConfidenceTier'
        lastKnownGrade:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RateGrade'
        staleSince:
          format: date-time
          type: string
          nullable: true
        pfiTransactionSource:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/OrphanedPfiTransactionSource'
        importBenchmark:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/ImportBenchmarkEntity'
        developerFeeAmount:
          $ref: '#/components/schemas/DecimalNumber'
      required:
        - id
        - type
        - status
        - pfiName
        - country
        - source
        - destination
        - instructions
        - createdAt
        - updatedAt
        - txHash
        - feeAmount
        - failureReason
        - depositInstruction
        - destinationPaymentInstruction
        - withdrawalOnchainInstruction
        - counterPartyIdentityId
        - virtualAccountId
        - reconciliationStatus
        - reconciliationWasRegressed
        - rateGrade
        - rateStatus
        - rateConfidenceTier
        - lastKnownGrade
        - staleSince
        - pfiTransactionSource
        - developerFeeAmount
    ExchangeLegDto:
      type: object
      properties:
        type:
          description: Type of the asset used in this leg.
          example: fiat
          allOf:
            - $ref: '#/components/schemas/ExchangeAssetType'
        fiat:
          description: Fiat currency used when type is fiat.
          allOf:
            - $ref: '#/components/schemas/FiatCurrencyId'
        asset:
          description: Crypto asset identifier used when type is asset.
          allOf:
            - $ref: '#/components/schemas/AssetId'
      required:
        - type
    TransactionType:
      type: string
      enum:
        - Deposit
        - Withdrawal
        - Exchange
    TransactionStatus:
      type: string
      enum:
        - Submitted
        - Verifying
        - Orchestrating
        - Pending
        - Processing
        - Completed
        - Failed
        - Cancelled
        - Refunded
    PFIName:
      type: string
      enum:
        - Bridge
        - Koywe
        - Kotanipay
        - Hercle
        - Bitso
        - Yellowcard
        - TraceFinance
        - HoneyCoin
        - BlindPay
        - Finity
        - Infinia
        - Walapay
        - Abra
        - Yativo
        - Capa
        - Bivo
        - Cobre
        - Avenia
        - Brale
        - BVNK
        - CoinsPH
        - Iron
        - Enigma
        - Juicyway
        - Kira
        - TripleA
        - Onmeta
        - Alfred
        - Demo
        - CrissCross
    CountryCode:
      type: string
      enum:
        - AF
        - AL
        - DZ
        - AS
        - AD
        - AO
        - AI
        - AQ
        - AG
        - AR
        - AM
        - AW
        - AU
        - AT
        - AZ
        - BS
        - BH
        - BD
        - BB
        - BY
        - BE
        - BZ
        - BJ
        - BM
        - BT
        - BO
        - BQ
        - BA
        - BW
        - BV
        - BR
        - IO
        - BN
        - BG
        - BF
        - BI
        - CV
        - KH
        - CM
        - CA
        - KY
        - CF
        - TD
        - CL
        - CN
        - CX
        - CC
        - CO
        - KM
        - CD
        - CG
        - CK
        - CR
        - HR
        - CU
        - CW
        - CY
        - CZ
        - CI
        - DK
        - DJ
        - DM
        - DO
        - EC
        - EG
        - SV
        - GQ
        - ER
        - EE
        - SZ
        - ET
        - FK
        - FO
        - FJ
        - FI
        - FR
        - GF
        - PF
        - TF
        - GA
        - GM
        - GE
        - DE
        - GH
        - GI
        - GR
        - GL
        - GD
        - GP
        - GU
        - GT
        - GG
        - GN
        - GW
        - GY
        - HT
        - HM
        - VA
        - HN
        - HK
        - HU
        - IS
        - IN
        - ID
        - IR
        - IQ
        - IE
        - IM
        - IL
        - IT
        - JM
        - JP
        - JE
        - JO
        - KZ
        - KE
        - KI
        - KP
        - KR
        - KW
        - KG
        - LA
        - LV
        - LB
        - LS
        - LR
        - LY
        - LI
        - LT
        - LU
        - MO
        - MG
        - MW
        - MY
        - MV
        - ML
        - MT
        - MH
        - MQ
        - MR
        - MU
        - YT
        - MX
        - FM
        - MD
        - MC
        - MN
        - ME
        - MS
        - MA
        - MZ
        - MM
        - NA
        - NR
        - NP
        - NL
        - NC
        - NZ
        - NI
        - NE
        - NG
        - NU
        - NF
        - MP
        - 'NO'
        - OM
        - PK
        - PW
        - PS
        - PA
        - PG
        - PY
        - PE
        - PH
        - PN
        - PL
        - PT
        - PR
        - QA
        - MK
        - RO
        - RU
        - RW
        - RE
        - BL
        - SH
        - KN
        - LC
        - MF
        - PM
        - VC
        - WS
        - SM
        - ST
        - SA
        - SN
        - RS
        - SC
        - SL
        - SG
        - SX
        - SK
        - SI
        - SB
        - SO
        - ZA
        - GS
        - SS
        - ES
        - LK
        - SD
        - SR
        - SJ
        - SE
        - CH
        - SY
        - TW
        - TJ
        - TZ
        - TH
        - TL
        - TG
        - TK
        - TO
        - TT
        - TN
        - TR
        - TM
        - TC
        - TV
        - UG
        - UA
        - AE
        - GB
        - UM
        - US
        - UY
        - UZ
        - VU
        - VE
        - VN
        - VG
        - VI
        - WF
        - EH
        - YE
        - ZM
        - ZW
        - AX
        - ZZ
    TransactionSourceEntity:
      type: object
      properties:
        asset:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/AssetId'
        amount:
          type: string
          nullable: true
        fiatCurrency:
          type: string
          nullable: true
        paymentMethod:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/PaymentMethod'
        accountId:
          type: string
          nullable: true
        accountName:
          type: string
          nullable: true
        sender:
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/TransactionSourceSenderEntity'
      required:
        - asset
        - amount
        - fiatCurrency
        - paymentMethod
        - accountId
        - accountName
        - sender
    TransactionDestinationEntity:
      type: object
      properties:
        asset:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/AssetId'
        amount:
          type: string
          nullable: true
        fiatCurrency:
          type: string
          nullable: true
        imad:
          type: string
          nullable: true
        reference:
          type: string
          nullable: true
        omad:
          type: string
          nullable: true
        traceNumber:
          type: string
          nullable: true
        externalAddress:
          type: string
          nullable: true
        accountId:
          type: string
          nullable: true
        accountName:
          type: string
          nullable: true
        paymentInstructionId:
          type: string
          nullable: true
      required:
        - asset
        - amount
        - fiatCurrency
        - imad
        - reference
        - omad
        - traceNumber
        - externalAddress
        - accountId
        - accountName
        - paymentInstructionId
    DecimalNumber:
      type: object
      properties: {}
    DepositInstructionEntity:
      type: object
      properties:
        paymentMethod:
          allOf:
            - $ref: '#/components/schemas/PaymentMethod'
        details:
          oneOf:
            - $ref: '#/components/schemas/USDepositDetailsEntity'
            - $ref: '#/components/schemas/SepaDepositDetailsEntity'
            - $ref: '#/components/schemas/PIXDepositDetailsEntity'
            - $ref: '#/components/schemas/LatAmDepositDetailsEntity'
            - $ref: '#/components/schemas/BankTransferDepositDetailsEntity'
            - $ref: '#/components/schemas/EFTDepositDetailsEntity'
            - $ref: '#/components/schemas/DefaultDetailsEntity'
      required:
        - paymentMethod
        - details
    PaymentInstructionEntity:
      type: object
      properties:
        id:
          type: string
        identityId:
          type: string
        name:
          type: string
        paymentMethod:
          allOf:
            - $ref: '#/components/schemas/PaymentMethod'
        currency:
          type: string
          example: USD
        country:
          example: US
          allOf:
            - $ref: '#/components/schemas/CountryCode'
        deleted:
          type: boolean
          default: false
        createdAt:
          format: date-time
          type: string
        details:
          oneOf:
            - $ref: '#/components/schemas/USDetailsEntity'
              title: US Details (ACH and Wire)
            - $ref: '#/components/schemas/IbanBankDetailsEntity'
              title: Iban Bank Details
            - $ref: '#/components/schemas/BankDetailsEntity'
              title: Bank Details
            - $ref: '#/components/schemas/IdentifierDetailsEntity'
              title: Identifier (PIX)
            - $ref: '#/components/schemas/BrebKeyDetailsEntity'
              title: Bre-B Key (Colombia)
            - $ref: '#/components/schemas/SepaDetailsEntity'
              title: SEPA (Europe)
            - $ref: '#/components/schemas/SwiftDetailsEntity'
              title: Swift Details
            - $ref: '#/components/schemas/MobileMoneyDetailsEntity'
              title: Mobile Money (Africa)
            - $ref: '#/components/schemas/UKFPSDetailsEntity'
              title: UK FPS (Sort Code + IBAN)
      required:
        - id
        - identityId
        - name
        - paymentMethod
        - currency
        - country
        - deleted
        - createdAt
        - details
    OnchainInstructionEntity:
      type: object
      properties:
        id:
          type: string
        amount:
          type: string
          description: The amount for the onchain transaction.
          example: '100.00'
        asset:
          description: >-
            The token tied to a specific blockchain for the operation. See the
            list of [supported deposit
            assets](https://docs.buildborderless.com/docs/get-deposit-options)
            and [supported Withdrawal
            Assets](https://docs.buildborderless.com/docs/get-withdrawal-options#/).
          example: BTC
          allOf:
            - $ref: '#/components/schemas/AssetId'
        fromAddress:
          type: string
        toAddress:
          type: string
          nullable: true
        spenderAddress:
          type: string
          nullable: true
        type:
          allOf:
            - $ref: '#/components/schemas/OnchainInstructionType'
        onchainInstructionTransaction:
          $ref: '#/components/schemas/OnchainInstructionTransactionEntity'
      required:
        - id
        - amount
        - asset
        - fromAddress
        - toAddress
        - spenderAddress
        - type
        - onchainInstructionTransaction
    ReconciliationStatus:
      type: string
      enum:
        - Matched
        - Mismatched
        - Missing
        - PfiError
    RefundResolutionEntity:
      type: object
      properties:
        supported:
          type: boolean
        requiresManualAction:
          type: boolean
        path:
          allOf:
            - $ref: '#/components/schemas/RefundPath'
        status:
          allOf:
            - $ref: '#/components/schemas/RefundPlanStatus'
        dispatchMode:
          allOf:
            - $ref: '#/components/schemas/RefundDispatchMode'
        destinationSource:
          allOf:
            - $ref: '#/components/schemas/RefundDestinationSource'
        destination:
          type: object
          nullable: true
        reason:
          type: object
          nullable: true
        completedAt:
          format: date-time
          type: string
          nullable: true
        failedAt:
          format: date-time
          type: string
          nullable: true
      required:
        - supported
        - requiresManualAction
        - path
        - status
        - dispatchMode
        - destinationSource
    RateGrade:
      type: string
      enum:
        - Competitive
        - InLine
        - OffMarket
    RateStatus:
      type: string
      enum:
        - Classified
        - Calibrating
        - Stale
        - NoRateProduced
        - Syncing
    RateConfidenceTier:
      type: string
      enum:
        - Strong
        - Standard
    OrphanedPfiTransactionSource:
      type: string
      enum:
        - Reconciliation
        - Import
        - CsvImport
    ImportBenchmarkEntity:
      type: object
      properties:
        benchmarkMean:
          type: string
          nullable: true
        benchmarkStddev:
          type: string
          nullable: true
        observationCount:
          type: number
          nullable: true
        deviation:
          type: string
          nullable: true
        bestRate:
          type: string
          nullable: true
      required:
        - benchmarkMean
        - benchmarkStddev
        - observationCount
        - deviation
        - bestRate
    ExchangeAssetType:
      type: string
      enum:
        - fiat
        - asset
      description: Type of the asset used in this leg.
    FiatCurrencyId:
      type: string
      enum:
        - USD
        - EUR
        - BRL
        - ARS
        - MXN
        - COP
        - CLP
        - PEN
        - PYG
        - DOP
        - UYU
        - BOB
        - CRC
        - GTQ
        - BWP
        - CDF
        - GHS
        - KES
        - MWK
        - NGN
        - RWF
        - ZAR
        - TZS
        - UGX
        - ZMW
        - XOF
        - XAF
        - AUD
        - BDT
        - CAD
        - INR
        - JPY
        - NPR
        - PKR
        - PHP
        - SGD
        - GBP
        - CNY
        - HKD
        - IDR
        - MYR
        - KRW
        - LKR
        - THB
        - TRY
        - VND
        - CZK
        - DKK
        - NOK
        - PLN
        - RON
        - RSD
        - SEK
        - CHF
        - AED
        - SAR
        - QAR
        - ILS
        - EGP
        - JOD
        - HNL
        - JMD
        - NZD
        - DZD
        - GMD
        - GNF
        - HTG
        - MAD
        - TND
      description: Fiat currency identifier supported by the PFI account.
    AssetId:
      type: string
      enum:
        - POL
        - USDT_POLYGON
        - USDC_POLYGON
        - SBC_POLYGON
        - ETH
        - USDT_ETHEREUM
        - USDC_ETHEREUM
        - PYUSD_ETHEREUM
        - DAI_ETHEREUM
        - SBC_ETHEREUM
        - TRX
        - USDT_TRON
        - SBC_TRON
        - ETH_BASE
        - USDC_BASE
        - USDB_BASE
        - EURC_BASE
        - SBC_BASE
        - ETH_OPTIMISM
        - USDT_OPTIMISM
        - USDC_OPTIMISM
        - BTC
        - CELO
        - CUSD_CELO
        - USDC_CELO
        - SBC_CELO
        - SOL
        - USDC_SOLANA
        - USDT_SOLANA
        - PYUSD_SOLANA
        - USDP_SOLANA
        - EURC_SOLANA
        - SBC_SOLANA
    PaymentMethod:
      type: string
      enum:
        - ACH
        - Wire
        - Sepa
        - Swift
        - Card
        - MobileMoney
        - PIX
        - TED
        - PSE
        - SPEI
        - COELSA
        - Transfers30
        - SPAV
        - CCE
        - SPI
        - LBTR
        - SINPE
        - Transfer365
        - NIP
        - GhIPSS
        - BankTransfer
        - EFT
        - RTP
        - BECS
        - FPS
        - IMPS_FIRC
        - Breb
        - NPSS
        - MADA
        - ZAHAV
        - IBFT
        - SIC
    TransactionSourceSenderEntity:
      type: object
      properties:
        name:
          type: string
          nullable: true
        legalName:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        taxIdLast4:
          type: string
          nullable: true
        bankName:
          type: string
          nullable: true
        bankRoutingNumberLast4:
          type: string
          nullable: true
        bankAccountNumberLast4:
          type: string
          nullable: true
        accountNumberLast4:
          type: string
          nullable: true
        traceNumber:
          type: string
          nullable: true
        originatorName:
          type: string
          nullable: true
        beneficiaryName:
          type: string
          nullable: true
        wireMessage:
          type: string
          nullable: true
        imad:
          type: string
          nullable: true
        iban:
          type: string
          nullable: true
        ibanLast4:
          type: string
          nullable: true
        bic:
          type: string
          nullable: true
        sortCode:
          type: string
          nullable: true
        clabe:
          type: string
          nullable: true
        trackingNumber:
          type: string
          nullable: true
        reference:
          type: string
          nullable: true
        uetr:
          type: string
          nullable: true
        paymentScheme:
          type: string
          nullable: true
        recipientName:
          type: string
          nullable: true
      required:
        - name
        - legalName
        - description
        - taxIdLast4
        - bankName
        - bankRoutingNumberLast4
        - bankAccountNumberLast4
        - accountNumberLast4
        - traceNumber
        - originatorName
        - beneficiaryName
        - wireMessage
        - imad
        - iban
        - ibanLast4
        - bic
        - sortCode
        - clabe
        - trackingNumber
        - reference
        - uetr
        - paymentScheme
        - recipientName
    USDepositDetailsEntity:
      type: object
      properties:
        depositMessage:
          type: string
          description: BRGFR8EHMZRJ6MHVSEM4
        bankAccountNumber:
          type: string
          description: '11223344556677'
        bankRoutingNumber:
          type: string
          description: '123456789'
        bankBeneficiaryName:
          type: string
          description: Company Ventures Inc
        bankBeneficiaryAddress:
          type: string
          description: 1234 Elm St, Springfield, IL 12345
        bankName:
          type: string
          description: Bank of Nowhere
        bankAddress:
          type: string
          description: 1800 North Pole St., Orlando, FL 32801
        bic:
          type: string
          description: CHASUS33
      required:
        - depositMessage
        - bankAccountNumber
        - bankRoutingNumber
        - bankBeneficiaryName
        - bankBeneficiaryAddress
        - bankName
        - bankAddress
    SepaDepositDetailsEntity:
      type: object
      properties:
        depositMessage:
          type: string
          description: BRGFXKR2HU6P6ERDUBTR
        iban:
          type: string
          description: GB63MOCK00000003615430
        bic:
          type: string
          description: MOCKGB21
        accountHolderName:
          type: string
          description: Company Building Sp.z.o.o.
        bankName:
          type: string
          description: Bank of Nowhere
        bankAddress:
          type: string
          description: 1800 Nowhere Ave., London E41 2RF, United Kingdom
      required:
        - depositMessage
        - iban
        - bic
        - accountHolderName
        - bankName
        - bankAddress
    PIXDepositDetailsEntity:
      type: object
      properties:
        bankAccountNumber:
          type: string
          nullable: true
          description: Bank account number (e.g., "11223344556677").
          example: '11223344556677'
        bankBranchCode:
          type: string
          nullable: true
          description: Bank branch code (e.g., "1234").
          example: '1234'
        bankCode:
          type: string
          nullable: true
          description: Bank identification code (e.g., "002").
          example: '002'
        bankIspbCode:
          type: string
          nullable: true
          description: Bank ispb code (e.g., "12345432").
          example: '12345432'
        bankName:
          type: string
          nullable: true
          description: Name of the receiving bank (e.g., "Bank of Nowhere").
          example: Bank of Nowhere
        bankBeneficiaryName:
          type: string
          nullable: true
          description: Full legal name of the beneficiary who will receive the funds.
          example: John Smith
        bankBeneficiaryAddress:
          type: string
          nullable: true
          description: >-
            Full residential or business address of the beneficiary receiving
            the funds.
          example: 123 Main Street, Suite 400, New York, NY 10001, USA
        taxId:
          type: string
          nullable: true
          description: Tax identification number associated with the receiver.
          example: '1234123412342'
        pixKey:
          type: string
          nullable: true
          description: PIX key for the recipient (e.g., phone number, CPF, or random key).
          example: '+5511999999999'
    LatAmDepositDetailsEntity:
      type: object
      properties:
        bankName:
          type: string
          description: >-
            Bank or financial institution. (STP, Banco Davivienda, Banco
            Santander etc.)
        bankAccountNumber:
          type: string
          description: Bank or financial institution account number. (CLABE)
        bankAccountType:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BankAccountType'
        companyName:
          type: string
          nullable: true
          description: Receiving corporate entity name.
        taxId:
          type: string
          nullable: true
          description: Receiving corporate entity local tax id. (NIT, CUIL, RUT, RUC)
        email:
          type: string
          nullable: true
          description: Receiving corporate entity email.
        withholdingTax:
          type: string
          nullable: true
          description: >-
            Percentage of the total payment amount deducted at source as tax,
            per Colombian regulations, for specific transactions like income or
            services.
        redirectUrl:
          type: string
          nullable: true
          description: >-
            PSE-generated URL in Colombia redirecting to the payment platform
            for bank selection and pre-filled transaction confirmation.
      required:
        - bankName
        - bankAccountNumber
        - companyName
        - withholdingTax
        - redirectUrl
    BankTransferDepositDetailsEntity:
      type: object
      properties:
        bankName:
          type: string
          description: M-pesa
        bankAccountNumber:
          type: string
          description: '2045080458'
        bankBranchCode:
          type: string
          description: NIL
        companyName:
          type: string
          description: XXX PAY LIMITED
      required:
        - bankName
        - bankAccountNumber
        - bankBranchCode
        - companyName
    EFTDepositDetailsEntity:
      type: object
      properties:
        redirectUrl:
          type: string
          description: >-
            https://agent.callpay.com/pay/hosted?payment_key=e9b327a625ad7df6825a81d599200b3a&payment_type=eft
      required:
        - redirectUrl
    DefaultDetailsEntity:
      type: object
      properties:
        description:
          type: string
          nullable: true
        depositMessage:
          type: string
          nullable: true
        bankName:
          type: string
          nullable: true
        bankCode:
          type: string
          nullable: true
        bankAddress:
          type: string
          nullable: true
        bankAccountNumber:
          type: string
          nullable: true
        bankRoutingNumber:
          type: string
          nullable: true
        bankBeneficiaryName:
          type: string
          nullable: true
        bankBeneficiaryAddress:
          type: string
          nullable: true
        accountHolderName:
          type: string
          nullable: true
        iban:
          type: string
          nullable: true
        bic:
          type: string
          nullable: true
        bankAccountType:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BankAccountType'
        bankIspbCode:
          type: string
          nullable: true
        companyName:
          type: string
          nullable: true
        taxId:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        pixKey:
          type: string
          nullable: true
        withholdingTax:
          type: string
          nullable: true
    USDetailsEntity:
      type: object
      properties:
        bankName:
          type: string
          nullable: true
          example: Chase
        accountHolderName:
          type: string
          example: John Doe
        bankAccountNumber:
          type: string
          example: '123456789'
          description: >-
            Full bank account number (PII). Nullable / omitted by default.
            Returned only when your organization has been granted access to full
            payment-instruction details. Contact support to enable.
        bankAccountNumberLast4:
          type: string
          example: '6789'
        bankRoutingNumber:
          type: string
          example: '021000021'
        bankAccountType:
          allOf:
            - $ref: '#/components/schemas/BankAccountType'
        recipientRelationship:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RecipientRelationship'
        address:
          nullable: true
          description: >-
            Beneficiary bank address. The beneficiary's own address is taken
            from the identity.
          type: object
          allOf:
            - $ref: '#/components/schemas/PostalAddressEntity'
        bankSlug:
          type: string
          nullable: true
          deprecated: true
        bankCode:
          type: string
          nullable: true
          deprecated: true
        phone:
          type: string
          nullable: true
          deprecated: true
        taxId:
          type: string
          nullable: true
          deprecated: true
      required:
        - bankName
        - accountHolderName
        - bankAccountNumberLast4
        - bankRoutingNumber
        - bankAccountType
        - recipientRelationship
        - address
        - bankSlug
        - bankCode
        - phone
        - taxId
    IbanBankDetailsEntity:
      type: object
      properties:
        bankSlug:
          type: string
          nullable: true
          example: Chase
        iban:
          type: string
          example: DE89370400440532013000
          description: >-
            Full IBAN (PII). Nullable / omitted by default. Returned only when
            your organization has been granted access to full
            payment-instruction details. Contact support to enable.
        ibanLast4:
          type: string
          example: '3000'
        address:
          nullable: true
          description: Beneficiary bank address.
          type: object
          allOf:
            - $ref: '#/components/schemas/PostalAddressEntity'
        bankAccountNumberLast4:
          type: string
          deprecated: true
          example: '3000'
        bankName:
          type: string
          nullable: true
          deprecated: true
        bankRoutingNumber:
          type: string
          nullable: true
          deprecated: true
        bankCode:
          type: string
          nullable: true
          deprecated: true
        accountHolderName:
          type: string
          nullable: true
          deprecated: true
        bankAccountType:
          nullable: true
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/BankAccountType'
        recipientRelationship:
          nullable: true
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/RecipientRelationship'
        phone:
          type: string
          nullable: true
          deprecated: true
        taxId:
          type: string
          nullable: true
          deprecated: true
      required:
        - bankSlug
        - ibanLast4
        - address
        - bankAccountNumberLast4
        - bankName
        - bankRoutingNumber
        - bankCode
        - accountHolderName
        - bankAccountType
        - recipientRelationship
        - phone
        - taxId
    BankDetailsEntity:
      type: object
      properties:
        bankName:
          type: string
          nullable: true
          example: Chase
        bankSlug:
          type: string
          nullable: true
          example: Chase
        bankAccountNumber:
          type: string
          example: '123456789'
          description: >-
            Full bank account number (PII). Nullable / omitted by default.
            Returned only when your organization has been granted access to full
            payment-instruction details. Contact support to enable.
        bankAccountNumberLast4:
          type: string
          example: '6789'
        localRoutingCode:
          type: string
          nullable: true
          example: '1234567'
        swiftOrBicNumber:
          type: string
          nullable: true
          example: DEUTDEFF
        accountHolderName:
          type: string
          nullable: true
          example: John Doe
        bankAccountType:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BankAccountType'
        bankAccountNumberType:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BankAccountNumberType'
        address:
          nullable: true
          description: >-
            Beneficiary bank address. The beneficiary's own address is taken
            from the identity.
          type: object
          allOf:
            - $ref: '#/components/schemas/PostalAddressEntity'
        bankRoutingNumber:
          type: string
          nullable: true
          deprecated: true
          example: '021000021'
        bankCode:
          type: string
          nullable: true
          deprecated: true
          example: '40006'
        phone:
          type: string
          nullable: true
          deprecated: true
        taxId:
          type: string
          nullable: true
          deprecated: true
        recipientRelationship:
          nullable: true
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/RecipientRelationship'
      required:
        - bankName
        - bankSlug
        - bankAccountNumberLast4
        - localRoutingCode
        - swiftOrBicNumber
        - accountHolderName
        - bankAccountType
        - bankAccountNumberType
        - address
        - bankRoutingNumber
        - bankCode
        - phone
        - taxId
        - recipientRelationship
    IdentifierDetailsEntity:
      type: object
      properties:
        identifierType:
          allOf:
            - $ref: '#/components/schemas/PaymentInstructionIdentifierType'
        identifierValue:
          type: string
        address:
          nullable: true
          description: >-
            The address associated with the Identifier Payment Instruction is
            deprecated.
          deprecated: true
          type: object
          allOf:
            - $ref: '#/components/schemas/PostalAddressEntity'
      required:
        - identifierType
        - identifierValue
        - address
    BrebKeyDetailsEntity:
      type: object
      properties:
        brebKey:
          type: string
          description: The Bre-B key value registered for the recipient.
      required:
        - brebKey
    SepaDetailsEntity:
      type: object
      properties:
        bankName:
          type: string
          example: Chase
        bankAccountNumber:
          type: string
          example: '123456789'
          description: >-
            Full bank account number (PII). Nullable / omitted by default.
            Returned only when your organization has been granted access to full
            payment-instruction details. Contact support to enable.
        bankAccountNumberLast4:
          type: string
          example: '6789'
        accountHolderName:
          type: string
          example: John Doe
        swiftOrBicNumber:
          type: string
          example: BNPAFRPPXXX
        accountOwnerType:
          allOf:
            - $ref: '#/components/schemas/BankAccountOwnerType'
        firstName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
        businessName:
          type: string
          nullable: true
        address:
          nullable: true
          description: >-
            Beneficiary bank address. The beneficiary's own address is taken
            from the identity.
          type: object
          allOf:
            - $ref: '#/components/schemas/PostalAddressEntity'
      required:
        - bankName
        - bankAccountNumberLast4
        - accountHolderName
        - swiftOrBicNumber
        - accountOwnerType
        - firstName
        - lastName
        - businessName
        - address
    SwiftDetailsEntity:
      type: object
      properties:
        accountHolderName:
          type: string
          example: John Doe
        bankAccountNumber:
          type: string
          example: '123456789'
          description: >-
            Full bank account number (PII). Nullable / omitted by default.
            Returned only when your organization has been granted access to full
            payment-instruction details. Contact support to enable.
        bankAccountNumberLast4:
          type: string
          example: '6789'
        swiftOrBicNumber:
          type: string
          example: BNPAFRPPXXX
        address:
          nullable: true
          description: >-
            Beneficiary bank address. Optional; required for SWIFT payouts via
            BlindPay. The beneficiary's own address is taken from the identity.
          type: object
          allOf:
            - $ref: '#/components/schemas/PostalAddressEntity'
        bankName:
          type: string
          nullable: true
          example: Chase
        bankAccountType:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BankAccountType'
        intermediaryBankName:
          type: string
          nullable: true
        intermediaryBankSwiftOrBicNumber:
          type: string
          nullable: true
        intermediaryBankAddress:
          type: string
          nullable: true
        beneficiaryBankCnapsCode:
          type: string
          nullable: true
        beneficiaryPhone:
          type: string
          nullable: true
        beneficiaryAddressInChinese:
          type: string
          nullable: true
        recipientRelationship:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RecipientRelationship'
        bankAddress:
          type: string
          nullable: true
          description: >-
            Deprecated. Use the structured `address` field for the beneficiary
            bank address.
          deprecated: true
      required:
        - accountHolderName
        - bankAccountNumberLast4
        - swiftOrBicNumber
        - address
        - bankName
        - bankAccountType
        - intermediaryBankName
        - intermediaryBankSwiftOrBicNumber
        - intermediaryBankAddress
        - beneficiaryBankCnapsCode
        - beneficiaryPhone
        - beneficiaryAddressInChinese
        - recipientRelationship
        - bankAddress
    MobileMoneyDetailsEntity:
      type: object
      properties:
        accountHolderName:
          type: string
        phone:
          type: string
        networkProvider:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/MobileMoneyProvider'
        networkSlug:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/MobileMoneyProvider'
      required:
        - accountHolderName
        - phone
        - networkProvider
        - networkSlug
    UKFPSDetailsEntity:
      type: object
      properties:
        bankName:
          type: string
          nullable: true
          example: Barclays
        bankSlug:
          type: string
          nullable: true
          example: Barclays
        bankAccountNumber:
          type: string
          nullable: true
          example: '12345678'
          description: >-
            Full bank account number (PII). Nullable / omitted by default.
            Returned only when your organization has been granted access to full
            payment-instruction details. Contact support to enable.
        bankAccountNumberLast4:
          type: string
          nullable: true
          example: '5678'
        sortCode:
          type: string
          nullable: true
          example: '601613'
          description: 6-digit UK sort code (derived from IBAN positions 9-14).
        iban:
          type: string
          nullable: true
          example: GB29NWBK60161331926819
          description: >-
            Full IBAN (PII). Nullable / omitted by default. Returned only when
            your organization has been granted access to full
            payment-instruction details. Contact support to enable.
        ibanLast4:
          type: string
          nullable: true
          example: '6819'
        accountHolderName:
          type: string
          nullable: true
          example: Jane Smith
        bankAccountType:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BankAccountType'
        address:
          nullable: true
          description: >-
            Beneficiary bank address. The beneficiary's own address is taken
            from the identity.
          type: object
          allOf:
            - $ref: '#/components/schemas/PostalAddressEntity'
      required:
        - bankName
        - bankSlug
        - bankAccountNumberLast4
        - sortCode
        - ibanLast4
        - accountHolderName
        - bankAccountType
        - address
    OnchainInstructionType:
      type: string
      enum:
        - Transfer
        - Approval
        - SmartCall
    OnchainInstructionTransactionEntity:
      type: object
      properties:
        id:
          type: string
        to:
          type: string
          nullable: true
        from:
          type: string
          nullable: true
        data:
          type: string
          nullable: true
        nonce:
          type: string
          nullable: true
        value:
          type: string
          nullable: true
        chainId:
          type: number
          nullable: true
        gasLimit:
          type: string
          nullable: true
        gasPrice:
          type: string
          nullable: true
        fee:
          type: string
          nullable: true
        unsignedTx:
          type: string
          nullable: true
        psbt:
          type: string
          nullable: true
        inputs:
          type: object
          nullable: true
        outputs:
          type: object
          nullable: true
        walletId:
          type: string
          nullable: true
        body:
          type: object
          nullable: true
        visible:
          type: boolean
          nullable: true
        txID:
          type: string
          nullable: true
        rawData:
          type: object
          nullable: true
        rawDataHex:
          type: string
          nullable: true
        spender:
          type: string
          nullable: true
        mint:
          type: string
          nullable: true
      required:
        - id
        - to
        - from
        - data
        - nonce
        - value
        - chainId
        - gasLimit
        - gasPrice
        - fee
        - unsignedTx
        - psbt
        - inputs
        - outputs
        - walletId
        - body
        - visible
        - txID
        - rawData
        - rawDataHex
        - spender
        - mint
    RefundPath:
      type: string
      enum:
        - InlineProvider
        - ProviderBalance
        - SourceReturn
        - ProviderObserved
        - ManualRequired
        - Unsupported
        - NotNeeded
    RefundPlanStatus:
      type: string
      enum:
        - Created
        - Eligible
        - InProgress
        - Succeeded
        - Failed
        - Blocked
        - ManualRequired
        - Unsupported
        - NotNeeded
        - Cancelled
    RefundDispatchMode:
      type: string
      enum:
        - None
        - PollOnly
        - WebhookOnly
        - WebhookAndPoll
        - SubmitAndPoll
        - SubmitAndWebhook
        - Manual
    RefundDestinationSource:
      type: string
      enum:
        - None
        - PerTransaction
        - OrganizationDefault
        - OriginalSender
        - ProviderLocked
        - Manual
    BankAccountType:
      type: string
      enum:
        - Checking
        - Savings
    RecipientRelationship:
      type: string
      enum:
        - first party
        - employee
        - independent contractor
        - vendor or supplier
        - subsidiary or affiliate
        - merchant or partner
        - customer
        - landlord
        - family
        - other
    PostalAddressEntity:
      type: object
      properties:
        id:
          type: string
        street1:
          type: string
        street2:
          type: string
          nullable: true
        city:
          type: string
        state:
          type: string
          nullable: true
        country:
          allOf:
            - $ref: '#/components/schemas/CountryCode'
        postalCode:
          type: string
      required:
        - id
        - street1
        - street2
        - city
        - state
        - country
        - postalCode
    BankAccountNumberType:
      type: string
      enum:
        - CVU
        - CBU
        - ALIAS
    PaymentInstructionIdentifierType:
      type: string
      enum:
        - PhoneNumber
        - Email
        - CPF
        - EVP
        - CNPJ
    BankAccountOwnerType:
      type: string
      enum:
        - Personal
        - Business
    MobileMoneyProvider:
      type: string
      enum:
        - AIRTEL
        - BKTRX
        - FAWRY
        - CHECKOUT
        - CRDTRX
        - EXPRESSO
        - FLOOZ
        - FREE
        - HALOPESA
        - MOBICASH
        - MOOV
        - MPESA
        - MTN
        - MYZAKA
        - OPAY
        - ORANGE
        - TIGO
        - TMONEY
        - TNM
        - VODACOM
        - VODAFONE
        - WAVE
        - ZAMTEL
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http

````