- Cash-in: the customer deposits physical cash at a retail location and receives crypto in the destination wallet.
- Cash-out (cash pickup): the customer withdraws crypto from a wallet and collects physical cash at a retail counter or ATM.
usd endorsement on the customer.
Cash-in
A cash-in is an in-person cash deposit flow. You create a cash-in that reserves a deposit code. The customer takes that code to a partner retail location, deposits cash, and OMS automatically converts it to crypto and delivers it to the destination wallet (cashToCrypto).
Cash-ins skip the quote step: the customer decides how much to deposit at the counter, so no amount is fixed at creation. Pass an indicatedAmount on the source for an upfront pricing estimate.
Cash-in limits
| Limit | Value |
|---|---|
| Transaction minimum | $20 |
| Transaction maximum | 1,000 at Walmart locations) |
| Daily maximum | $1,500 and 3 transactions |
| Weekly maximum | $3,500 and 12 transactions |
| Monthly maximum | $5,000 and 20 transactions |
Create a cash-in
POST /cash-ins. The request names the customer, the cash source location, and the crypto destination.
| Field | Shape |
|---|---|
cash | The deposit location: locationId and locationReference, both required. Read these from cash locations. |
source | Cash side: asset (required, usd), optional indicatedAmount for the pricing estimate, and optional email. |
destination | Crypto side: asset, network, and a wallet reference (id, blockchainAddress, or externalAccount). |
sponsorGas | Cover network gas on the customer’s behalf. |
Idempotency-Key header to safely retry without creating duplicates.
Cash-in object
depositInstructions.code in your UI. When you pass an indicatedAmount, the source and destination amounts carry the estimated figures and fees so you can show the customer what to expect before they visit the location. Amounts start as estimates and are finalized once the cash is deposited. The created transaction’s ID appears on transactionId once the deposit is made.
Cash-in flow
POST /cash-ins/{cashInId}/refresh: there is no need to create a new cash-in.
Cash-in status
| Status | Meaning |
|---|---|
pending | Deposit code issued, awaiting the customer’s deposit. |
processing | Cash deposited; conversion underway. |
completed | Cash converted and crypto delivered. |
failed | The deposit or conversion did not succeed. |
expired | Code expired before a deposit was made. |
subStatus field adds granular detail behind these values, for example order_reserved, settled, cash_deposit_expired, cash_deposit_failed, provider_order_failed, and provider_order_template_error.
Cash-in operations
| Operation | Endpoint |
|---|---|
| Create a cash-in | POST /cash-ins |
| Refresh deposit code | POST /cash-ins/{cashInId}/refresh |
| Get a cash-in | GET /cash-ins/{cashInId} |
| List cash-ins | GET /cash-ins (filter by customer, status, type, date range, or free-text search) |
Simulating a cash-in (sandbox)
In sandbox, drive a cash-in through its lifecycle without a real deposit using the simulation endpoints. They return404 in production.
| Operation | Endpoint |
|---|---|
| Authorize a simulated deposit at the barcode | POST /cash-ins/simulate/barcode-auth |
| Commit a previously-authorized simulated deposit | POST /cash-ins/simulate/auth-commit |
| Void a previously-authorized simulated deposit | POST /cash-ins/simulate/auth-void |
Cash-out
A cash-out (cash pickup) is the inverse of a cash-in: the customer holds crypto in an OMS wallet and withdraws it as physical cash. It uses a standard quote with acash destination (cryptoToCash). OMS pulls crypto from the wallet, issues a time-limited pickup code, and the customer collects cash at a partner retail location. Set the amount on the destination side; it must be a multiple of 400.00 per transaction.
Cash pickup is under active development and available through early access. To enable it for your project, contact us.
Request access
Share your use case and we’ll reach out about cash pickup.
Cash-out limits
| Limit | Value |
|---|---|
| Transaction increment | Multiples of $20.00 |
| Transaction minimum | $20 |
| Transaction maximum | $400 |
| Daily maximum | 2,000 in all other states |
| Monthly maximum | $60,000 |
Cash-out flow
Supported locations
Cash deposits and withdrawals are processed through OMS’s partner retail and ATM network across the US. List nearby locations withGET /cash-locations, passing the provider, latitude, and longitude query parameters, an optional radius and limit, and a flow of cash_in or cash_out to select the provider configuration. Each location returns its distance from the supplied coordinates, and each provider returns its per-transaction and per-customer daily limits.
Related
- Cash-in guide: full walkthrough with request and response
- Cash pickup guide: the cash-out flow in detail
- Transactions: standard two-step flow for card and bank transfers