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

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



## OpenAPI

````yaml https://sandbox-api.borderless.xyz/v1/api-json post /v1/withdrawals
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/withdrawals:
    post:
      tags:
        - Transaction / Withdrawals
      summary: Create a new Withdrawal transaction
      description: >-
        Create a new Withdrawal transaction using the data provided in the
        request body.
      operationId: WithdrawalsController_withdraw
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/WithdrawalDto'
                  title: Withdrawal (crypto)
                - $ref: '#/components/schemas/WithdrawalPfiDto'
                  title: Withdrawal (PFI fiat)
      responses:
        '201':
          description: Successfully created Withdrawal transaction data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionEntity'
        '400':
          description: The Withdrawal transaction data is invalid or incomplete.
      security:
        - bearer: []
components:
  schemas:
    WithdrawalDto:
      type: object
      properties:
        amount:
          type: string
          description: >-
            The amount for the operation. For deposits, this is the fiat amount
            the user must contribute. For withdrawals, this is the amount of the
            asset to be withdrawn.
          example: '100.00'
        accountId:
          type: string
          description: >-
            The id of the account associated with the operation. For
            withdrawals, this is the account from which assets will be
            withdrawn. For deposits, this is the account where assets will be
            deposited.
          example: cm2c4x3cc000019stwv7um4zl
        developerFee:
          type: string
          description: An optional developer fee for the operation, if applicable
          example: '5.00'
        pfiName:
          description: >-
            Specific PFI to use for this operation. If omitted, the
            organization's default PFI is used.
          allOf:
            - $ref: '#/components/schemas/PFIName'
        paymentInstructionId:
          type: string
          description: >-
            The ID of the payment instruction specifying how the withdrawn funds
            will be sent. Learn more at [Payment Instructions
            Guide](https://docs.buildborderless.com/docs/payment-instructions)
          example: cm2c4x3cc000019stwv7um4zl
        counterPartyIdentityId:
          type: string
          description: >-
            The ID of the identity on whose behalf the withdraw is being
            initiated. If not specified, the withdrawal will be initiated for
            the identity tied to the payment instruction by default.
          example: cm2c4x3cc000019stwv7um4zl
        paymentPurpose:
          description: The purpose of the withdrawal payment.
          example: delivery fees
          allOf:
            - $ref: '#/components/schemas/PaymentPurpose'
        purposeDescription:
          type: string
          minLength: 255
          description: Purpose details.
        reference:
          type: string
          minLength: 1
          maxLength: 256
          description: A reference message to be sent with a Bank transaction.
        refundDestination:
          description: >-
            Per-transaction refund configuration. Supports `type`, `address`,
            `autoRefund`, and `refundToSourceAddress`. Takes precedence over the
            organization default.
          allOf:
            - $ref: '#/components/schemas/RefundDestinationDto'
        documents:
          description: >-
            Documents may be required by certain countries or payment providers
            (for example, an invoice, contract, or agreement)
          type: array
          items:
            $ref: '#/components/schemas/TransactionDocumentDto'
        quoteId:
          type: string
          description: >-
            The id of an executable quote previously created via `POST
            /withdrawals/quotes`. When provided, the withdrawal is initiated
            using the locked exchange rate and fees from that quote, as long as
            the quote has not expired.
          example: cm2c4x3cc000019stwv7um4zl
        asset:
          description: >-
            The token tied to a specific blockchain for the withdrawal. See the
            list of [supported Withdrawal
            Assets](https://docs.buildborderless.com/docs/get-withdrawal-options#/).
          example: BTC
          allOf:
            - $ref: '#/components/schemas/AssetId'
        fiat:
          deprecated: true
          description: >-
            Deprecated: resolved automatically from the payment instruction. The
            fiat currency used for the withdrawal operation.
          allOf:
            - $ref: '#/components/schemas/FiatCurrencyId'
        country:
          deprecated: true
          description: >-
            Deprecated: resolved automatically from the payment instruction. The
            country code for the region where the withdrawal is performed.
          allOf:
            - $ref: '#/components/schemas/CountryCode'
      required:
        - amount
        - accountId
        - paymentInstructionId
        - paymentPurpose
        - asset
    WithdrawalPfiDto:
      type: object
      properties:
        amount:
          type: string
          description: >-
            The amount for the operation. For deposits, this is the fiat amount
            the user must contribute. For withdrawals, this is the amount of the
            asset to be withdrawn.
          example: '100.00'
        accountId:
          type: string
          description: >-
            The id of the account associated with the operation. For
            withdrawals, this is the account from which assets will be
            withdrawn. For deposits, this is the account where assets will be
            deposited.
          example: cm2c4x3cc000019stwv7um4zl
        developerFee:
          type: string
          description: An optional developer fee for the operation, if applicable
          example: '5.00'
        pfiName:
          description: >-
            Specific PFI to use for this operation. If omitted, the
            organization's default PFI is used.
          allOf:
            - $ref: '#/components/schemas/PFIName'
        paymentInstructionId:
          type: string
          description: >-
            The ID of the payment instruction specifying how the withdrawn funds
            will be sent. Learn more at [Payment Instructions
            Guide](https://docs.buildborderless.com/docs/payment-instructions)
          example: cm2c4x3cc000019stwv7um4zl
        counterPartyIdentityId:
          type: string
          description: >-
            The ID of the identity on whose behalf the withdraw is being
            initiated. If not specified, the withdrawal will be initiated for
            the identity tied to the payment instruction by default.
          example: cm2c4x3cc000019stwv7um4zl
        paymentPurpose:
          description: The purpose of the withdrawal payment.
          example: delivery fees
          allOf:
            - $ref: '#/components/schemas/PaymentPurpose'
        purposeDescription:
          type: string
          minLength: 255
          description: Purpose details.
        reference:
          type: string
          minLength: 1
          maxLength: 256
          description: A reference message to be sent with a Bank transaction.
        refundDestination:
          description: >-
            Per-transaction refund configuration. Supports `type`, `address`,
            `autoRefund`, and `refundToSourceAddress`. Takes precedence over the
            organization default.
          allOf:
            - $ref: '#/components/schemas/RefundDestinationDto'
        documents:
          description: >-
            Documents may be required by certain countries or payment providers
            (for example, an invoice, contract, or agreement)
          type: array
          items:
            $ref: '#/components/schemas/TransactionDocumentDto'
        quoteId:
          type: string
          description: >-
            The id of an executable quote previously created via `POST
            /withdrawals/quotes`. When provided, the withdrawal is initiated
            using the locked exchange rate and fees from that quote, as long as
            the quote has not expired.
          example: cm2c4x3cc000019stwv7um4zl
      required:
        - amount
        - accountId
        - paymentInstructionId
        - paymentPurpose
    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
    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
    PaymentPurpose:
      type: string
      enum:
        - salary payment
        - personal remittance
        - rent payment
        - property purchase
        - owned account abroad
        - advertising expenses
        - advisory fees
        - business insurance
        - construction
        - delivery fees
        - education
        - exports
        - donation
        - hotel
        - loan payment
        - maintenance expenses
        - medical expense
        - office expenses
        - royalty fees
        - service charge
        - shares investment
        - tax payment
        - transportation fees
        - travel
        - utility bills
        - other
      description: The purpose of the withdrawal payment.
    RefundDestinationDto:
      type: object
      properties:
        type:
          description: >-
            How a refund should be handled if the transaction fails. `address`
            returns funds to a specific crypto address. `source` returns funds
            to the original on-chain sender (Yellowcard maps this to
            `settlementInfo.refundToSourceAddress`). `provider_balance` leaves
            funds in the client's account at the PFI.
          example: Address
          allOf:
            - $ref: '#/components/schemas/RefundDestinationType'
        address:
          type: string
          description: >-
            Required when `type` is `address`. The crypto address that should
            receive the refund.
          example: '0x1234567890abcdef1234567890abcdef12345678'
        autoRefund:
          type: boolean
          description: >-
            Whether Borderless should automatically trigger the refund on
            failure. Defaults to `true`. Setting `false` records the plan as
            eligible but keeps it `Created` until ops dispatches manually.
          example: true
          default: true
      required:
        - type
    TransactionDocumentDto:
      type: object
      properties:
        type:
          description: The type of the transaction document.
          example: Invoice
          allOf:
            - $ref: '#/components/schemas/TransactionDocumentType'
        content:
          type: string
          format: base64
          description: >-
            This document may be required by certain countries or payment
            providers. Supported MIME types (application/pdf, image/jpeg,
            image/jpg, image/png). Minimum resolution: 200x200px, maximum size:
            5MB.
          example: data:image/jpeg;base64,/9j/4AAQSkZJRg...
      required:
        - type
        - content
    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
    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.
    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
    TransactionType:
      type: string
      enum:
        - Deposit
        - Withdrawal
        - Exchange
    TransactionStatus:
      type: string
      enum:
        - Submitted
        - Verifying
        - Orchestrating
        - Pending
        - Processing
        - Completed
        - Failed
        - Cancelled
        - Refunded
    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
    RefundDestinationType:
      type: string
      enum:
        - Address
        - Source
        - ProviderBalance
      description: >-
        How a refund should be handled if the transaction fails. `address`
        returns funds to a specific crypto address. `source` returns funds to
        the original on-chain sender (Yellowcard maps this to
        `settlementInfo.refundToSourceAddress`). `provider_balance` leaves funds
        in the client's account at the PFI.
    TransactionDocumentType:
      type: string
      enum:
        - Invoice
        - Other
      description: The type of the transaction document.
    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

````