Skip to main content
A cash-in is an in-person cash deposit flow for retail locations. The developer creates a cash-in that generates a deposit code. The customer takes that code to a partner retail location, deposits cash in any amount, and OMS automatically converts it to USDC and delivers it to the destination wallet. Cash-ins skip the quote step: the customer decides how much to deposit at the counter, so no amount is specified at creation.

Object

{
  "id": "ci_...",
  "status": "pending",
  "customerId": "cst_...",
  "source": {
    "asset": "usd",
    "network": "cash",
    "indicatedAmount": "100.00"
  },
  "destination": {
    "wallet": { "wallet": "wlt_..." },
    "asset": "usdc",
    "network": "polygon"
  },
  "cash": {
    "cashLocationId": "loc_...",
    "cashLocationReference": "..."
  },
  "depositInstructions": {
    "code": "ABC 12345",
    "expiresAt": "2025-01-15T11:30:00Z",
    "locationName": "CVS Pharmacy #4521",
    "locationAddress": "123 Main St, New York, NY 10001"
  },
  "omsFeeSchedule": {
    "feeCurrency": "usd",
    "entries": [
      { "type": "percentage", "rate": "0.015" },
      { "type": "fixed", "amount": "0.50" }
    ]
  },
  "transaction": null,
  "createdAt": "2025-01-15T10:30:00Z",
  "completedAt": null
}
Display the depositInstructions.code in your UI. The omsFeeSchedule is included so you can show customers the fee structure before they visit the retail location.

Flow

POST /cash-ins  →  deposit code (valid 1 hour)

      customer deposits cash at retail location

              OMS converts to USDC

         transaction.fiatToCrypto.completed
The deposit code is valid for one hour. If it expires before the customer deposits, refresh it via POST /cash-ins/{id}/refresh: no need to create a new cash-in.

Supported networks

Cash deposits are processed through OMS’s retail partner network:
  • GreenDot: 90,000+ US retail locations (CVS, Walgreens, Walmart)
  • OXXO / 7-Eleven / Walmart MX: Mexico
  • AllPoint ATM: 55,000 ATMs for cash withdrawals

Status

StatusMeaning
pendingDeposit code issued, awaiting customer deposit
processingCash received; conversion in progress
completedUSDC delivered to the destination wallet
expiredCode expired before a deposit was made

Key operations

OperationEndpoint
Create a cash-inPOST /cash-ins
Refresh deposit codePOST /cash-ins/{cashInId}/refresh
Get a cash-inGET /cash-ins/{cashInId}
List cash-insGET /cash-ins
  • Cash-in guide: full walkthrough with request/response and fee configuration
  • Transactions: standard two-step flow for card and bank transfers