fiatToCrypto transaction and delivers USDC to the customer’s linked wallet. No developer action required after setup.
Programmatic virtual account provisioning is not yet available in the OMS API. To be notified when it launches, register your interest.
Register interest
Share your use case and we’ll reach out when programmatic virtual account provisioning is available.
Object
bankDetails to display in your UI. Any bank transfer (ACH or wire) to that account number delivers USDC to the linked wallet.
Deposit address vs. virtual account
Both are persistent auto-route configurations. The difference is the rail:| Deposit address | Virtual account | |
|---|---|---|
| Source type | Crypto (onchain) | Fiat (bank rail) |
| Deposit details | Blockchain address | Bank account number + routing |
| Auto-creates transaction | Yes | Yes |
| Reusable | Yes | Yes |
Status lifecycle
| Status | Meaning |
|---|---|
active | Accepting fiat deposits |
paused | Temporarily inactive; deposits are not processed |
deleted | Permanently removed |
Webhook events
OMS firestransaction.fiatToCrypto.completed (or .failed) when a virtual account deposit is processed. Polling is not required.
Provisioning
Virtual accounts are provisioned by Polygon during onboarding and early access. In the sandbox, a simulation endpointPOST /virtual-accounts/{virtualAccountId}/simulate is available for testing inbound ACH, wire, and SWIFT deposits.
Related
- Virtual accounts guide: full walkthrough with request/response and webhook handling
- Deposit addresses: the crypto equivalent for onchain deposits