- 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 you can exercise incoming deposits with the virtual-account simulate endpoint. See the Virtual accounts guide.How it works
Each customer gets their own dedicated account number. When a payer sends an ACH transfer to that number, OMS automatically converts the USD to USDC and credits the customer’s custodial wallet. The customer can hold the balance or withdraw at any time.OMS resources
| Resource | Role |
|---|---|
| Customer | Identity record with KYC and endorsements |
| Wallet | Custodial USDC balance |
| Virtual account | Dedicated US bank account number (routing + account), created with POST /virtual-accounts |
fiatAccountToCrypto transaction | Auto-created on each incoming deposit |
cryptoToFiatAccount transaction | Created when customer initiates a withdrawal |
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.