> ## 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 Virtual Account

> Create a new Virtual Account using the data provided in the request body.



## OpenAPI

````yaml https://sandbox-api.borderless.xyz/v1/api-json post /v1/accounts/{id}/virtual-accounts
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/accounts/{id}/virtual-accounts:
    post:
      tags:
        - Virtual Accounts
      summary: Create a new Virtual Account
      description: >-
        Create a new Virtual Account using the data provided in the request
        body.
      operationId: VirtualAccountsController_createVirtualAccount
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VirtualAccountDto'
      responses:
        '201':
          description: Successfully created Virtual Account data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualAccountEntity'
        '400':
          description: The Virtual Account data is invalid or incomplete.
        '404':
          description: The Account with the specified id does not exist.
      security:
        - bearer: []
components:
  schemas:
    VirtualAccountDto:
      type: object
      properties:
        fiat:
          description: The fiat currency for the virtual account.
          example: USD
          allOf:
            - $ref: '#/components/schemas/FiatCurrencyId'
        country:
          description: >-
            The country code in ISO-3166-2 format for the region where the
            virtual account will be created. See [ISO-3166-2
            documentation](https://www.iso.org/iso-3166-country-codes.html).
          example: US
          allOf:
            - $ref: '#/components/schemas/CountryCode'
        asset:
          description: The token tied to a specific blockchain for the virtual account.
          example: ETH
          allOf:
            - $ref: '#/components/schemas/AssetId'
        counterPartyIdentityId:
          type: string
          description: >-
            The ID of the identity to associate with the virtual account, if
            different from the identity linked to the account. If not provided,
            the virtual account will be created for the identity tied to the
            account. Learn more in the [Virtual Account
            Guide](https://docs.buildborderless.com/docs/virtual-accounts).
          example: cm2c4x3cc000019stwv7um4zl
        developerFeePercent:
          type: number
          description: >-
            The percentage of the developer fee for the virtual account, if
            applicable
          example: 1.5
        pfiName:
          description: >-
            Specific PFI to use for this virtual account. If omitted, the
            organization's default PFI is used.
          allOf:
            - $ref: '#/components/schemas/PFIName'
        sourceAccountId:
          type: string
          description: >-
            The ID of the account that funds deposits from this virtual account
            at the payment provider (the merchant balance account). Use it to
            select which configured merchant's credentials are used. Required
            when the organization has multiple merchants configured; optional
            when a single set of credentials is configured.
          example: cm2c4x3cc000019stwv7um4zl
      required:
        - fiat
        - country
        - asset
    VirtualAccountEntity:
      type: object
      properties:
        id:
          type: string
        accountId:
          type: string
        counterPartyIdentityId:
          type: string
          nullable: true
        status:
          allOf:
            - $ref: '#/components/schemas/PFIPaymentInstructionStatus'
        asset:
          allOf:
            - $ref: '#/components/schemas/AssetId'
        fiat:
          allOf:
            - $ref: '#/components/schemas/FiatCurrencyId'
        country:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CountryCode'
        depositInstructions:
          nullable: true
          type: array
          items:
            $ref: '#/components/schemas/DepositInstructionEntity'
        createdAt:
          format: date-time
          type: string
        failureReason:
          type: object
          nullable: true
      required:
        - id
        - accountId
        - counterPartyIdentityId
        - status
        - asset
        - fiat
        - country
        - depositInstructions
        - createdAt
        - failureReason
    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
    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
    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
    PFIPaymentInstructionStatus:
      type: string
      enum:
        - Active
        - NotActive
        - Rejected
    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
    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
    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
    BankAccountType:
      type: string
      enum:
        - Checking
        - Savings
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http

````