Skip to main content
A user anywhere in the world gets a real USD account number: routing number, account number, the works. They receive ACH transfers from US employers, marketplaces, or family members. The balance sits in USDC on Polygon. They withdraw to their local bank whenever they want. No US bank account required. No correspondent banking delays. The account behaves like a standard US bank account from the sender’s perspective. Who this is for:
  • Neobanks and fintech apps serving emerging-market users who need USD-denominated accounts
  • Freelancer platforms whose contractors need a US bank account to receive client payments
  • Marketplaces that want to offer USD wallet balances to international sellers
Create each customer’s virtual account with POST /virtual-accounts; OMS assigns the routing and account number once the account is provisioned. Virtual accounts must be enabled for your project, and the OMS API is in early access: request access for an API key. In sandbox, simulate an incoming deposit with POST /virtual-accounts/{virtualAccountId}/simulate/inbound-transfer. See the Virtual accounts guide.

How it works

Dollar account flow
1App→OMSOnboard customer, provision wallet, create virtual account
2OMS→AppUnique routing + account number assigned to this customer
3Payer→AccountSends ACH from any US bank
4OMSAuto-creates a transaction, converts USD to USDC, credits customer wallet
5OMS→AppWebhook: transaction.statusChanged
6CustomerWithdraws USDC to local bank via ACH, wire, or SWIFT
Each customer gets their own dedicated account number. When a payer sends a bank transfer to that number, OMS automatically creates a transaction that converts the USD to USDC and credits the customer’s wallet: their custodial OMS wallet where your project’s account provider supports it, or a registered external wallet. The customer can hold the balance or withdraw at any time. To keep the balance in dollars instead, point the virtual account at a fiat wallet (walletFiat). The account’s routing details, including the rails it accepts, are in the virtual account’s depositInstructions.bankUs once its status is active.

OMS resources


Implementation

Customer onboarding

Create customer records, collect KYC, and provision wallets.

Virtual accounts

Assign a persistent USD account number and handle incoming deposits.

Bank transfers

Quote and execute outbound ACH and wire withdrawals.

Crypto-to-fiat

Convert USDC to fiat for withdrawal via OMS.