> ## 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.

# USD stablecoin accounts for global users

> Give customers in any country a real USD account number for ACH transfers, backed by USDC on Polygon. Dollar banking and stablecoin-backed accounts without a US bank or correspondent banking chain.

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

<Note>
  This pattern depends on virtual accounts, which are currently early access. Virtual-account provisioning is not yet available in the OMS API.
</Note>

***

## How it works

<div style={{border:"1px solid #C8CFE1",borderRadius:"12px",overflow:"hidden",marginBottom:"24px"}}>
  <div style={{background:"linear-gradient(180deg,#EAE4F5 0%,#F6F3FB 100%)",borderBottom:"1px solid #D5C4F2",padding:"10px 16px",fontSize:"11px",fontWeight:"700",color:"#670DE5",letterSpacing:"0.06em",textTransform:"uppercase"}}>Dollar account flow</div>

  <div style={{borderBottom:"1px solid #EEF0F9",padding:"9px 16px",display:"flex",alignItems:"center",gap:"10px"}}>
    <span style={{color:"#929EBA",fontSize:"11px",fontWeight:"700",minWidth:"16px",textAlign:"right"}}>1</span>
    <span style={{background:"#EEF0F9",color:"#48526F",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"600",whiteSpace:"nowrap"}}>App</span>
    <span style={{color:"#670DE5",fontWeight:"700"}}>→</span>
    <span style={{background:"#EAE4F5",color:"#670DE5",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"700",whiteSpace:"nowrap"}}>OMS</span>
    <span style={{fontSize:"13px",color:"#141635"}}>Onboard customer, provision wallet, create virtual account</span>
  </div>

  <div style={{borderBottom:"1px solid #EEF0F9",padding:"9px 16px",display:"flex",alignItems:"center",gap:"10px"}}>
    <span style={{color:"#929EBA",fontSize:"11px",fontWeight:"700",minWidth:"16px",textAlign:"right"}}>2</span>
    <span style={{background:"#EAE4F5",color:"#670DE5",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"700",whiteSpace:"nowrap"}}>OMS</span>
    <span style={{color:"#670DE5",fontWeight:"700"}}>→</span>
    <span style={{background:"#EEF0F9",color:"#48526F",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"600",whiteSpace:"nowrap"}}>App</span>
    <span style={{fontSize:"13px",color:"#141635"}}>Unique routing + account number assigned to this customer</span>
  </div>

  <div style={{borderBottom:"1px solid #EEF0F9",padding:"9px 16px",display:"flex",alignItems:"center",gap:"10px"}}>
    <span style={{color:"#929EBA",fontSize:"11px",fontWeight:"700",minWidth:"16px",textAlign:"right"}}>3</span>
    <span style={{background:"#EEF0F9",color:"#48526F",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"600",whiteSpace:"nowrap"}}>Payer</span>
    <span style={{color:"#670DE5",fontWeight:"700"}}>→</span>
    <span style={{background:"#EEF0F9",color:"#48526F",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"600",whiteSpace:"nowrap"}}>Account</span>
    <span style={{fontSize:"13px",color:"#141635"}}>Sends ACH from any US bank</span>
  </div>

  <div style={{borderBottom:"1px solid #EEF0F9",padding:"9px 16px",display:"flex",alignItems:"center",gap:"10px"}}>
    <span style={{color:"#929EBA",fontSize:"11px",fontWeight:"700",minWidth:"16px",textAlign:"right"}}>4</span>
    <span style={{background:"#EAE4F5",color:"#670DE5",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"700",whiteSpace:"nowrap"}}>OMS</span>
    <span style={{fontSize:"13px",color:"#141635",marginLeft:"4px"}}>Converts USD deposit to USDC, credits customer wallet</span>
  </div>

  <div style={{borderBottom:"1px solid #EEF0F9",padding:"9px 16px",display:"flex",alignItems:"center",gap:"10px"}}>
    <span style={{color:"#929EBA",fontSize:"11px",fontWeight:"700",minWidth:"16px",textAlign:"right"}}>5</span>
    <span style={{background:"#EAE4F5",color:"#670DE5",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"700",whiteSpace:"nowrap"}}>OMS</span>
    <span style={{color:"#670DE5",fontWeight:"700"}}>→</span>
    <span style={{background:"#EEF0F9",color:"#48526F",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"600",whiteSpace:"nowrap"}}>App</span>
    <span style={{fontFamily:"'Geist Mono',ui-monospace,monospace",fontSize:"12px",color:"#141635"}}>Webhook: fiatToCrypto.completed</span>
  </div>

  <div style={{padding:"9px 16px",display:"flex",alignItems:"center",gap:"10px"}}>
    <span style={{color:"#929EBA",fontSize:"11px",fontWeight:"700",minWidth:"16px",textAlign:"right"}}>6</span>
    <span style={{background:"#EEF0F9",color:"#48526F",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",fontWeight:"600",whiteSpace:"nowrap"}}>Customer</span>
    <span style={{fontSize:"13px",color:"#141635",marginLeft:"4px"}}>Withdraws USDC to local bank via ACH, wire, or SWIFT</span>
  </div>
</div>

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 endorsements                |
| Wallet                     | Custodial or non-custodial stablecoin balance        |
| Virtual account            | Dedicated US bank account number (routing + account) |
| `fiatToCrypto` transaction | Auto-created on each incoming deposit                |
| `cryptoToFiat` transaction | Created when customer initiates a withdrawal         |

***

## Implementation

<CardGroup cols={2}>
  <Card title="Customer onboarding" icon="user-plus" href="/payments/guides/customer-onboarding">
    Create customer records, collect KYC, and provision wallets.
  </Card>

  <Card title="Virtual accounts" icon="building-columns" href="/payments/guides/virtual-accounts">
    Assign a persistent USD account number and handle incoming deposits.
  </Card>

  <Card title="Bank transfers" icon="arrow-right-arrow-left" href="/api-reference/guide-bank-transfers">
    Quote and execute outbound ACH and wire withdrawals.
  </Card>

  <Card title="Crypto-to-fiat" icon="circle-dollar-to-slot" href="/payments/guides/crypto-to-fiat">
    Convert USDC to fiat for withdrawal via OMS.
  </Card>
</CardGroup>
