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

# Simulate inbound transfer on a Virtual Account

> Simulate an inbound fiat transfer against a Virtual Account, for testing
webhook and reconciliation flows. Sandbox / non-production only; returns
404 in production-live. Set the `type` field in the request body to
choose the transfer rail: `bankUs` (network `ach` or `wire`) or
`bankIban` (network `swift`).



## OpenAPI

````yaml /api-reference/openapi.yaml post /virtual-accounts/{virtualAccountId}/simulate/inbound-transfer
openapi: 3.0.3
info:
  title: Polygon OMS Public API
  version: v26.05.28-0001
  description: >-
    Unified API for moving money between crypto and fiat. Three ways to move
    money: Transactions (instant, wallet or card funded, including Cash-In for
    in-person cash deposits), Deposit Addresses (reusable crypto deposit
    configurations), and Virtual Accounts (dedicated bank accounts that
    auto-convert fiat to crypto). Standard transactions follow a two-step flow:
    create a Quote (pricing), then create a Transaction (execution). Cash-in
    codes generate a one-time deposit code for in-person cash deposits at retail
    locations.
  contact:
    name: Polygon OMS
    url: https://oms.polygon.technology
servers:
  - url: https://sandbox-api.polygon.technology/v0.10
    description: Sandbox
  - url: https://api.polygon.technology/v0.10
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Auth
    description: Authentication via FrontEgg
  - name: Customers
    description: Customer management and KYC
  - name: Customer
  - name: Wallet
  - name: Quote
  - name: Transaction
  - name: Webhook
  - name: CashIns
  - name: CashLocation
  - name: Sandbox
  - name: VirtualAccount
  - name: Counterparty
  - name: ExternalAccount
  - name: DepositAddress
paths:
  /virtual-accounts/{virtualAccountId}/simulate/inbound-transfer:
    post:
      tags:
        - Sandbox
      summary: Simulate inbound transfer on a Virtual Account
      description: |-
        Simulate an inbound fiat transfer against a Virtual Account, for testing
        webhook and reconciliation flows. Sandbox / non-production only; returns
        404 in production-live. Set the `type` field in the request body to
        choose the transfer rail: `bankUs` (network `ach` or `wire`) or
        `bankIban` (network `swift`).
      operationId: simulateVirtualAccountInboundTransfer
      parameters:
        - name: virtualAccountId
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/IdempotencyKeyHeader'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SimulateVaInboundTransferRequest'
            examples:
              International SWIFT inbound (settles asynchronously):
                summary: International SWIFT inbound (settles asynchronously)
                value:
                  type: bankIban
                  network: swift
                  asset: usd
                  amount: '500.00'
              US domestic ACH inbound (settles synchronously):
                summary: US domestic ACH inbound (settles synchronously)
                value:
                  type: bankUs
                  network: ach
                  asset: usd
                  amount: '250.00'
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimulateVaInboundTransferResponse'
              examples:
                International SWIFT inbound (settles asynchronously):
                  summary: International SWIFT inbound (settles asynchronously)
                  value:
                    virtualAccountId: va_bztg5dcpfbec9s0jkq28d5meq3
                    type: bankIban
                    network: swift
                    asset: usd
                    amount: '500.00'
                    status: pending
                    submittedAt: '2026-07-13T19:05:00Z'
                    referenceId: intl_wire_in_9f3c2a7b8d1e4056
                US domestic ACH inbound (settles synchronously):
                  summary: US domestic ACH inbound (settles synchronously)
                  value:
                    virtualAccountId: va_bztg5dcpfbec9s0jkq28d5meq3
                    type: bankUs
                    network: ach
                    asset: usd
                    amount: '250.00'
                    status: submitted
                    submittedAt: '2026-07-13T19:00:00Z'
                    referenceId: null
components:
  parameters:
    IdempotencyKeyHeader:
      name: Idempotency-Key
      in: header
      required: true
      description: >-
        Required on POST and PUT requests. Use a unique value per logical
        mutation attempt, for example a UUID.
      schema:
        type: string
  schemas:
    SimulateVaInboundTransferRequest:
      type: object
      oneOf:
        - $ref: '#/components/schemas/SimulateVaBankUsInboundRequest'
        - $ref: '#/components/schemas/SimulateVaBankIbanInboundRequest'
      discriminator:
        propertyName: type
        mapping:
          bankUs:
            $ref: '#/components/schemas/SimulateVaBankUsInboundRequest'
          bankIban:
            $ref: '#/components/schemas/SimulateVaBankIbanInboundRequest'
      description: |-
        Type-discriminated request for
        POST /virtual-accounts/{id}/simulate/inbound-transfer.
    SimulateVaInboundTransferResponse:
      type: object
      required:
        - virtualAccountId
        - type
        - network
        - asset
        - amount
        - status
        - submittedAt
        - referenceId
      properties:
        virtualAccountId:
          allOf:
            - $ref: '#/components/schemas/typeId'
          description: >-
            The Virtual Account that received the simulated transfer (`va_`
            prefix).
        type:
          allOf:
            - $ref: '#/components/schemas/SimulateVaInboundTransferType'
          description: Echoes the request's rail discriminator.
        network:
          allOf:
            - $ref: '#/components/schemas/SimulateVaInboundTransferNetwork'
          description: The rail the transfer settled on.
        asset:
          type: string
          enum:
            - usd
          description: Always "usd".
        amount:
          allOf:
            - $ref: '#/components/schemas/decimalString'
          description: The simulated transfer amount.
        status:
          type: string
          enum:
            - submitted
            - pending
          description: >-
            "submitted" for ach/wire (settles synchronously); "pending" for
            swift -

            the upstream provider settles SWIFT asynchronously.
        submittedAt:
          type: string
          format: date-time
          description: When the simulated transfer was submitted.
        referenceId:
          type: string
          nullable: true
          description: |-
            Correlation id for the subsequent webhook. `null` for ach/wire;
            an `intl_wire_in_…` id for swift.
      description: |-
        Flat (non-discriminated) response for
        POST /virtual-accounts/{id}/simulate/inbound-transfer.
    SimulateVaBankUsInboundRequest:
      type: object
      required:
        - type
        - network
        - asset
        - amount
      properties:
        type:
          type: string
          enum:
            - bankUs
          description: Rail discriminator. Always `bankUs` for a US domestic inbound.
        network:
          allOf:
            - $ref: '#/components/schemas/SimulateVaBankUsNetwork'
          description: Which US rail to simulate.
        asset:
          type: string
          enum:
            - usd
          description: Always "usd", the only asset the VA rail supports today.
        amount:
          allOf:
            - $ref: '#/components/schemas/decimalString'
          description: >-
            Must be greater than 0.00 and at most 1000.00 (422
            `simulationAmountOutOfRange` beyond).
      description: US domestic (ACH or Wire) inbound simulation against a Virtual Account.
      title: US bank account (ACH or Wire)
    SimulateVaBankIbanInboundRequest:
      type: object
      required:
        - type
        - network
        - asset
        - amount
      properties:
        type:
          type: string
          enum:
            - bankIban
          description: Rail discriminator. Always `bankIban` for an international inbound.
        network:
          type: string
          enum:
            - swift
          description: Always "swift" for the international rail.
        asset:
          type: string
          enum:
            - usd
          description: Always "usd", the only asset the VA rail supports today.
        amount:
          allOf:
            - $ref: '#/components/schemas/decimalString'
          description: >-
            Must be greater than 0.00 and at most 1000.00 (422
            `simulationAmountOutOfRange` beyond).
      description: International (SWIFT) inbound simulation against a Virtual Account.
      title: International bank account (SWIFT)
    typeId:
      type: string
      pattern: >-
        ^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$
      description: >-
        Public TypeID, e.g. `txn_01h455vb4pex5vsknk084sn02q`; legacy UUID
        suffixes are accepted until non-v7 rows are retired.
      x-go-type: string
    SimulateVaInboundTransferType:
      type: string
      enum:
        - bankUs
        - bankIban
      description: Echoes the request's `type` discriminator on the response.
    SimulateVaInboundTransferNetwork:
      type: string
      enum:
        - ach
        - wire
        - swift
      description: Network actually used - the union of both request rails' networks.
    decimalString:
      type: string
      description: >-
        Wire-safe decimal string for financial float values (USD amounts,
        percentages).
      x-go-type-import:
        path: github.com/shopspring/decimal
      x-go-type: decimal.Decimal
    SimulateVaBankUsNetwork:
      type: string
      enum:
        - ach
        - wire
      description: Network for a `bankUs` (US domestic) inbound simulation.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Token from POST /auth/token

````