Coins.ph Virtual Account API

Virtual account creation and management

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/coinsph-virtual-account-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

coinsph-virtual-account-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: TRADING Account Virtual Account API
  version: 1.0.0
  description: API reference for Account management — Coins.ph
servers:
- url: https://api.pro.coins.ph
  description: Production
- url: https://api.9001.pl-qa.coinsxyz.me
  description: Sandbox
tags:
- name: Virtual Account
  description: Virtual account creation and management
paths:
  /openapi/v1/virtual-account/create:
    post:
      tags:
      - Virtual Account
      summary: Create Virtual Account
      description: 'Create a new virtual account.


        **Webhook:** ✅ Supported (requires Coins.ph configuration)'
      operationId: createVirtualAccount
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - vAccountType
              - vAccountUsage
              - cAccountNumber
              - cAccountName
              properties:
                vAccountType:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: 'Virtual Account Type. `0`: ENTERPRISE type, `1`: PERSONAL type.'
                  example: 1
                vAccountUsage:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: 'Virtual Account Usage Type. `0`: ONE_TIME, `1`: MULTIPLE.'
                  example: 1
                validityPeriod:
                  type: string
                  enum:
                  - D1
                  - D2
                  - D3
                  - D4
                  - D5
                  - D6
                  - D7
                  description: 'Virtual Account Validity Period: Only applies to one-time transaction type. When vAccountUsage is ONE_TIME, validityPeriod is required.

                    Enumeration Values:

                    - `D1`: 1 day

                    - `D2`: 2 days

                    - `D3`: 3 days

                    - `D4`: 4 days

                    - `D5`: 5 days

                    - `D6`: 6 days

                    - `D7`: 7 days'
                  example: D7
                cAccountNumber:
                  type: string
                  description: User ID on other platforms (not Coins). Better be unique.
                  example: '1234567890'
                cAccountName:
                  type: string
                  description: User name on other platforms (not Coins).
                  example: John Doe
                coinsUserId:
                  type: string
                  description: Required for PERSONAL type. The user's Coins userId (external ID). **Must be passed as a string** to avoid large integer precision loss.
                  example: '2248914299514407681'
                requestId:
                  type: string
                  maxLength: 64
                  description: Idempotency key for this creation request.
                  example: SEC-EVATEST-Q20260630153000000022
                businessScenario:
                  type: string
                  enum:
                  - AUTO_ON_RAMP
                  - AUTO_OFF_RAMP
                  - AUTO_RAMP
                  - ''
                  description: 'Business scenario for automatic ramp.

                    - `AUTO_ON_RAMP`: Fiat in → Crypto out (fiatDestination required)

                    - `AUTO_OFF_RAMP`: Crypto in → Fiat out (cryptoDestination required)

                    - `AUTO_RAMP`: Both directions (both destinations required)

                    - ``: Non-auto scenario (default)'
                  example: AUTO_ON_RAMP
                fiatDestination:
                  $ref: '#/components/schemas/FiatDestination'
                  description: Required when businessScenario is AUTO_ON_RAMP or AUTO_RAMP.
                cryptoDestination:
                  $ref: '#/components/schemas/CryptoDestination'
                  description: Required when businessScenario is AUTO_OFF_RAMP or AUTO_RAMP.
                needStaticQrCode:
                  type: boolean
                  description: Whether to generate a QRPH static QR code simultaneously. Defaults to `false`.
                  example: true
                extend:
                  type: object
                  additionalProperties: true
                  description: Extended fields with additional information. Key and value length must not exceed 1000 characters.
                  example:
                    accountAddress: test address
                fiatSettings:
                  type: array
                  description: Fiat-related settings for the virtual account, including fiat currency types and corresponding channels. At least one of fiatSettings or cryptoSettings must be present.
                  items:
                    $ref: '#/components/schemas/CurrencyNetworkSetting'
                  example:
                  - token: PHP
                    network: INSTAPAY
                cryptoSettings:
                  type: array
                  description: Crypto-related settings for the virtual account, including crypto types and corresponding networks. Cannot be set when vAccountUsage is ONE_TIME.
                  items:
                    $ref: '#/components/schemas/CurrencyNetworkSetting'
                  example:
                  - token: USDT
                    network: BSC
            example:
              vAccountType: 1
              vAccountUsage: 1
              cAccountNumber: EVA-SECVATEST-ACT-20260630-00022
              cAccountName: SecTestAccount
              coinsUserId: '2248914299514407681'
              requestId: SEC-EVATEST-Q20260630153000000022
              businessScenario: AUTO_RAMP
              fiatSettings:
              - token: PHP
                network: INSTAPAY
              fiatDestination:
                token: USDT
                network: BSC
                address: '0x434f31cff8dc8ab55a58b6e12f6297df105ebfac'
              cryptoSettings:
              - token: USDT
                network: BSC
              cryptoDestination:
                currency: PHP
                transactionChannel: INSTAPAY
                transactionSubject: gcash
                recipientAccountNumber: 09123456789
                recipientName: Juan Dela Cruz
                recipientAddress: 123 Manila Street, Manila City, Philippines
                remarks: Crypto withdrawal fund transfer
              needStaticQrCode: true
              extend:
                accountAddress: test address
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/CreateVirtualAccountSuccess'
                - $ref: '#/components/schemas/VAErrorResponse'
              examples:
                success:
                  summary: Success
                  value:
                    status: 0
                    error: OK
                    data:
                      vAccountId: '2229106125796322048'
                    params: null
                error:
                  summary: Error
                  value:
                    code: -70020005
                    msg: Virtual account number already exists. Please use a different account number.
  /openapi/v1/virtual-account/update:
    post:
      tags:
      - Virtual Account
      summary: Update Virtual Account
      description: 'Update the fiat or crypto settings of an existing virtual account.


        **Webhook:** ✅ Supported (requires Coins.ph configuration)'
      operationId: updateVirtualAccount
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - vAccountId
              properties:
                vAccountId:
                  type: string
                  description: Virtual account ID.
                  example: '2229106125796322048'
                fiatSettings:
                  type: array
                  description: Fiat address settings to add.
                  items:
                    $ref: '#/components/schemas/CurrencyNetworkSetting'
                cryptoSettings:
                  type: array
                  description: Crypto address settings to add.
                  items:
                    $ref: '#/components/schemas/CurrencyNetworkSetting'
                idList:
                  type: array
                  description: ID list of fiat address settings to delete. from fiatSettings.id or cryptoSettings.id
                  items:
                    type: string
                  example:
                  - '101'
                  - '102'
                businessScenario:
                  type: string
                  enum:
                  - AUTO_ON_RAMP
                  - AUTO_OFF_RAMP
                  - AUTO_RAMP
                  - NA
                  description: Update the business scenario.
                  example: AUTO_RAMP
                fiatDestination:
                  $ref: '#/components/schemas/FiatDestination'
                  description: Fiat destination to update. `null` = no change; empty object `{}` = clear; with value = overwrite.
                cryptoDestination:
                  $ref: '#/components/schemas/CryptoDestination'
                  description: Crypto destination to update. `null` = no change; empty object `{}` = clear; with value = overwrite.
                needStaticQrCode:
                  type: boolean
                  nullable: true
                  description: '`null` = no action; `true` = activate or create static QR code; `false` = suspend static QR code.'
                  example: true
            example:
              vAccountId: '2229106125796322048'
              fiatSettings:
              - token: PHP
                network: SWIFTPAY_PESONET
              idList:
              - '101'
              businessScenario: AUTO_RAMP
              fiatDestination:
                token: USDT
                network: BSC
                address: '0x434f31cff8dc8ab55a58b6e12f6297df105ebfac'
              needStaticQrCode: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/BooleanSuccessResponse'
                - $ref: '#/components/schemas/VAErrorResponse'
              examples:
                success:
                  summary: Success
                  value:
                    data: true
                    error: OK
                    status: 0
                error:
                  summary: Error
                  value:
                    code: -70020006
                    msg: One-time virtual account cannot be updated.
  /openapi/v1/virtual-account/details:
    post:
      tags:
      - Virtual Account
      summary: Virtual Account Details
      description: Retrieve the full details of virtual accounts. At least one of `vAccountId`, `cAccountNumber`, `requestId`, or `coinsUserId` must be provided. Returns a list.
      operationId: getVirtualAccountDetails
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                vAccountId:
                  type: string
                  description: Virtual account ID.
                  example: '2229106125796322048'
                cAccountNumber:
                  type: string
                  maxLength: 64
                  description: User ID on other platforms (not Coins).
                  example: EVA-SECVATEST-ACT-20260630-00022
                requestId:
                  type: string
                  maxLength: 64
                  description: Idempotency key used when creating the virtual account.
                  example: SEC-EVATEST-Q20260630153000000022
                coinsUserId:
                  type: string
                  description: The user's Coins userId (PERSONAL type, external ID). Should be numeric string
                  example: '2248914299514407681'
            example:
              requestId: SEC-EVATEST-Q20260630153000000022
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                oneOf:
                - type: object
                  properties:
                    status:
                      type: integer
                      example: 0
                    error:
                      type: string
                      example: OK
                    data:
                      type: array
                      items:
                        $ref: '#/components/schemas/VirtualAccountDetail'
                - $ref: '#/components/schemas/VAErrorResponse'
              examples:
                success:
                  summary: Success
                  value:
                    status: 0
                    error: OK
                    data:
                    - vAccountId: '2250248269847533312'
                      cAccountNumber: EVA-SECVATEST-ACT-20260702-00075
                      cAccountName: SecTestAccount
                      vAccountType: 0
                      vAccountUsage: 1
                      validityPeriod: null
                      userId: '1573829012941197056'
                      coinsUserId: '0'
                      status: 1
                      fiatStatus: 1
                      cryptoStatus: 1
                      businessScenario: AUTO_OFF_RAMP
                      requestId: SEC-EVATEST-Q202607015300000066
                      fiatSettings:
                      - id: '478'
                        token: PHP
                        network: SWIFTPAY_PESONET
                        tokenLogo: https://static.pro.coins.xyz/upload/images/PHP.png
                        networkLogo: https://static.pro.coins.xyz/upload/images/PESONet.png
                        status: 1
                        address: ''
                      cryptoSettings:
                      - id: '479'
                        token: USDT
                        network: BSC
                        tokenLogo: https://static.pro.coins.xyz/upload/images/USDT-NEW.png
                        networkLogo: https://static.pro.coins.xyz/resource/images/BNB.png
                        status: 1
                        address: '0x4905c1b6cc346dbc541f6a96c7d1f8ae7933e21c'
                      fiatDestination:
                        token: ETH
                        network: ETH
                        address: '0x72d367b5efeb5dbb364dfae83f245d1d6e35e6c9'
                        tag: null
                      cryptoDestination:
                        currency: PHP
                        transactionChannel: INSTAPAY
                        transactionSubject: gcash
                        recipientAccountNumber: 09123456789
                        recipientName: Juan Dela Cruz
                        recipientAddress: 123 Manila Street, Manila City, Philippines
                        remarks: Crypto withdrawal fund transfer
                      staticQrCode: 00020101021128600011ph.ppmi.p2m0111DCPHPHM1XXX0319197489344632592819205030105204076353036085802PH5923COINS TEST ACCT QR NAME6006Taguig62380011ph.ppmi.p2m051922502482749783040026304CA52
                      staticQrCodeStatus: ACTIVE
                      extend:
                        staticQrCodeRequestId: VA2250248274872309504
                        staticQrCodeStatus: ACTIVE
                        staticQrCode: 00020101021128600011ph.ppmi.p2m0111DCPHPHM1XXX0319197489344632592819205030105204076353036085802PH5923COINS TEST ACCT QR NAME6006Taguig62380011ph.ppmi.p2m051922502482749783040026304CA52
                      createTime: '2026-07-02 10:01:37'
                      updateTime: '2026-07-02 10:01:38'
                error:
                  summary: Error
                  value:
                    code: -70020002
                    msg: Virtual account does not exist.
  /openapi/v1/virtual-account/list:
    post:
      tags:
      - Virtual Account
      summary: List Virtual Accounts
      description: Paginate and filter all virtual accounts under the current merchant.
      operationId: listVirtualAccounts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                pageNum:
                  type: integer
                  minimum: 1
                  maximum: 1000
                  description: Page number, default 1.
                  example: 1
                pageSize:
                  type: integer
                  minimum: 1
                  maximum: 100
                  description: Page size, default 20.
                  example: 20
                vAccountId:
                  type: string
                  description: Filter by virtual account ID.
                  example: '2229106125796322048'
                cAccountNumber:
                  type: string
                  maxLength: 64
                  description: Filter by user ID on other platforms (not Coins).
                  example: EVA-SECVATEST-ACT-20260630-00022
                coinsUserId:
                  type: string
                  description: Filter by the user's Coins userId (PERSONAL type, external ID). **Must be passed as a string** to avoid large integer precision loss.
                  example: '2248914299514407681'
                vAccountType:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: 'Filter by type. `0`: ENTERPRISE, `1`: PERSONAL.'
                vAccountUsage:
                  type: integer
                  enum:
                  - 0
                  - 1
                  description: 'Filter by usage. `0`: ONE_TIME, `1`: MULTIPLE.'
                vAddressType:
                  type: string
                  enum:
                  - FIAT
                  - CRYPTO
                  - ALL
                  description: Filter by address type.
                status:
                  type: integer
                  enum:
                  - 1
                  - 2
                  description: 'Filter by status. `1`: ACTIVE, `2`: DEACTIVATED.'
                start:
                  type: string
                  description: 'Creation time start (format: `yyyy-MM-dd HH:mm:ss`).'
                  example: '2026-06-01 00:00:00'
                end:
                  type: string
                  description: 'Creation time end (format: `yyyy-MM-dd HH:mm:ss`).'
                  example: '2026-06-30 23:59:59'
                containsAddress:
                  type: boolean
                  description: Whether to include address settings (`fiatSettings`/`cryptoSettings`) in the response. Defaults to `false`. When `true`, returns up to **100 ACTIVE** address entries per virtual account, ordered by update time descending.
                  example: true
            example:
              pageNum: 1
              pageSize: 20
              vAccountType: 1
              status: 1
              cAccountNumber: EVA-SECVATEST-ACT-20260630-00022
              containsAddress: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                oneOf:
                - type: object
                  properties:
                    status:
                      type: integer
                      example: 0
                    error:
                      type: string
                      example: OK
                    total:
                      type: integer
                      description: Total number of records.
                      example: 3
                    data:
                      type: array
                      items:
                        $ref: '#/components/schemas/VirtualAccountDetail'
                - $ref: '#/components/schemas/VAErrorResponse'
              examples:
                success:
                  summary: Success
                  value:
                    status: 0
                    error: OK
                    total: 1
                    data:
                    - vAccountId: '2229106125796322048'
                      cAccountNumber: EVA-SECVATEST-ACT-20260630-00022
                      cAccountName: SecTestAccount
                      vAccountType: 1
                      vAccountUsage: 1
                      status: 1
                      fiatStatus: 1
                      cryptoStatus: 2
                      validityPeriod: null
                      businessScenario: AUTO_ON_RAMP
                      requestId: SEC-EVATEST-Q20260630153000000022
                      fiatSettings:
                      - id: '201'
                        token: PHP
                        network: INSTAPAY
                        tokenLogo: https://static.coins.xyz/PHP.png
                        networkLogo: null
                        status: 1
                        address: null
                      cryptoSettings: []
                      fiatDestination:
                        token: USDT
                        network: BSC
                        address: '0x434f31cff8dc8ab55a58b6e12f6297df105ebfac'
                        tag: null
                      cryptoDestination: null
                      staticQrCode: 00020101021128600011ph.ppmi.p2m...
                      staticQrCodeStatus: ACTIVE
                      extend:
                        accountAddress: test address
                      userId: '2067534261742978048'
                      createTime: '2026-06-30 15:30:00'
                      updateTime: '2026-06-30 15:30:05'
                error:
                  summary: Error
                  value:
                    code: -70010000
                    msg: System error occurred. Please try again later.
  /openapi/v1/virtual-account/reactivate:
    post:
      tags:
      - Virtual Account
      summary: Reactivate Virtual Account
      description: 'Reactivate a deactivated virtual account.


        **Webhook:** ✅ Supported (requires Coins.ph configuration)'
      operationId: reactivateVirtualAccount
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - vAccountId
              - vAddressType
              properties:
                vAccountId:
                  type: string
                  description: Virtual account ID.
                  example: '100001'
                vAddressType:
                  type: string
                  enum:
                  - FIAT
                  - CRYPTO
                  description: 'Reactivate currency type: `FIAT` or `CRYPTO`.'
                  example: FIAT
            example:
              vAccountId: '100001'
              vAddressType: FIAT
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/BooleanSuccessResponse'
                - $ref: '#/components/schemas/VAErrorResponse'
              examples:
                success:
                  summary: Success
                  value:
                    data: true
                    error: OK
                    status: 0
                error:
                  summary: Error
                  value:
                    code: -70020006
                    msg: One-time virtual account cannot be updated.
  /openapi/v1/virtual-account/deactivate:
    post:
      tags:
      - Virtual Account
      summary: Deactivate Virtual Account
      description: 'Deactivate fiat and/or crypto channels of a virtual account.


        **Webhook:** ✅ Supported (requires Coins.ph configuration)'
      operationId: deactivateVirtualAccount
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - vAccountId
              - vAddressType
              properties:
                vAccountId:
                  type: string
                  description: Virtual account ID.
                  example: '100001'
                vAddressType:
                  type: array
                  items:
                    type: string
                    enum:
                    - FIAT
                    - CRYPTO
                  description: 'Deactivate currency type(s): `["FIAT"]`, `["CRYPTO"]`, or `["FIAT","CRYPTO"]`.'
                  example:
                  - FIAT
                  - CRYPTO
            example:
              vAccountId: '100001'
              vAddressType:
              - FIAT
              - CRYPTO
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/BooleanSuccessResponse'
                - $ref: '#/components/schemas/VAErrorResponse'
              examples:
                success:
                  summary: Success
                  value:
                    data: true
                    error: OK
                    status: 0
                error:
                  summary: Error
                  value:
                    code: -70020006
                    msg: One-time virtual account cannot be updated.
  /openapi/v1/virtual-account/order/list:
    post:
      tags:
      - Virtual Account
      summary: Virtual Account Transactions List
      description: Retrieve the transaction list for a virtual account.
      operationId: listVirtualAccountTransactions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - vAddressType
              properties:
                vAccountId:
                  type: string
                  description: Virtual account ID.
                  example: '100001'
                pageNum:
                  type: integer
                  minimum: 1
                  maximum: 1000
                  description: Page number, default 1.
                  example: 1
                pageSize:
                  type: integer
                  minimum: 1
                  maximum: 100
                  description: Page size, default 20.
                  example: 20
                vAddressType:
                  type: string
                  enum:
                  - FIAT
                  - CRYPTO
                  description: 'Currency type: `FIAT` or `CRYPTO`.'
                  example: FIAT
                orderId:
                  type: string
                  description: Transaction ID.
                  example: ORD20240115001
                start:
                  type: string
                  description: 'Transaction start time (format: `yyyy-MM-dd HH:mm:ss`).'
                  example: '2024-01-01 00:00:00'
                end:
                  type: string
                  description: 'Transaction end time (format: `yyyy-MM-dd HH:mm:ss`).'
                  example: '2024-01-31 23:59:59'
                network:
                  type: string
                  description: Fiat channel or crypto network (e.g., `INSTAPAY`, `SWIFTPAY_PESONET`, `ETH`, `BSC`).
                  example: BSC
            example:
              pageNum: 1
              pageSize: 20
              vAccountId: '100001'
              vAddressType: FIAT
              orderId: ORD20240115001
              network: INSTAPAY
              start: '2024-01-01 00:00:00'
              end: '2024-01-31 23:59:59'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                oneOf:
                - type: object
                  properties:
                    status:
                      type: integer
                      example: 0
                    error:
                      type: string
                      example: OK
                    total:
                      type: integer
                      description: Total number of records.
                      example: 200
                    data:
                      type: array
                      items:
                        $ref: '#/components/schemas/VirtualAccountTransaction'
                - $ref: '#/components/schemas/VAErrorResponse'
  /openapi/v1/virtual-account/check-network:
    post:
      tags:
      - Virtual Account
      summary: Check Virtual Account Network
      description: Check whether a specific network/address combination is valid for a virtual account.
      operationId: checkVirtualAccountNetwork
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - vAccountId
              - token
              - network
              properties:
                vAccountId:
                  type: string
                  description: Virtual account ID.
                  example: '100001'
                token:
                  type: string
                  description: Currency (e.g., `PHP`, `USDT`).
                  example: USDT
                network:
                  type: string
                  description: Fiat channel or crypto network (e.g., `INSTAPAY`, `TRC20`).
                  example: TRC20
                address:
                  type: string
                  description: Crypto deposit address.
                  example: TN123456789abcdef
            example:
              vAccountId: '100001'
              token: USDT
              network: TRC20
              address: TN123456789abcdef
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                oneOf:
                - type: object
                  properties:
                    status:
                      type: integer
                      example: 0
                    error:
                      type: string
                      example: OK
                    data:
                      $ref: '#/components/schemas/VirtualAccountCheckResult'
                - $ref: '#/components/schemas/VAErrorResponse'
components:
  schemas:
    BooleanSuccessResponse:
      type: object
      properties:
        status:
          type: integer
          example: 0
        error:
          type: string
          example: OK
        data:
          type: boolean
          description: Returns true on success.
          example: true
    VirtualAccountTransaction:
      type: object
      properties:
        userId:
          type: string
          description: User ID of the merchant.
          example: userId
        vAccountUsage:
          type: integer
          description: Virtual Account Usage Type.
          example: 1
        vAccountId:
          type: string
          description: Virtual account ID.
          example: vAccountId
        orderId:
          type: string
          description: Transaction ID.
          example: orderId
        token:
          type: string
          description: Currency (e.g., `PHP`, `USDT`).
          example: USDT
        network:
          type: string
          description: Fiat channel or crypto network.
          example: TRC20
        address:
          type: string
          nullable: true
          description: Crypto deposit address.
          example: TN123456789abcdef
        amount:
          type: number
          description: Transaction amount (number).
          example: 100.5
        totalAmount:
          type: string
          description: Transaction amount (string).
          example: '100.50'
        channelOrderId:
          type: string
          description: Third-party order ID.
          example: CH20240115001
        fromUserName:
          type: string
          nullable: true
          description: Transaction sender name.

# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/coinsph/refs/heads/main/openapi/coinsph-virtual-account-api-openapi.yml