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

# Cash-ins and cash-outs

> Code-based cash deposits and withdrawals at retail locations, auto-converted between cash and USDC.

OMS supports two complementary in-person cash flows:

* **Cash-in**: the customer deposits physical cash at a retail location and receives USDC in the destination wallet.
* **Cash-out** (cash pickup): the customer withdraws USDC from a wallet and collects physical cash at a retail counter or ATM.

Both flows use code-based handoffs at partner retail locations and skip the upfront quote step: pricing is reconciled when the cash actually moves at the counter.

## Cash-in

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.

### Cash-in limits

| Limit               | Value                                |
| ------------------- | ------------------------------------ |
| Transaction minimum | \$20                                 |
| Transaction maximum | \$500 (\$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          |

### Cash-in object

```json theme={null}
{
  "id": "ci_...",
  "status": "pending",
  "customerId": "cst_...",
  "source": {
    "asset": "usd",
    "network": "cash",
    "indicatedAmount": "100.00"
  },
  "destination": {
    "wallet": { "id": "wlt_..." },
    "asset": "usdc",
    "network": "polygon"
  },
  "cash": {
    "locationId": "loc_...",
    "locationReference": "..."
  },
  "depositInstructions": {
    "code": "ABC 12345",
    "expiresAt": "2025-01-15T11:30:00Z",
    "locationName": "Retail Partner #4521",
    "locationAddress": "123 Main St, New York, NY 10001"
  },
  "omsFeeSchedule": {
    "feeCurrency": "usd",
    "entries": [
      { "type": "percentage", "rate": "0.015" },
      { "type": "fixed", "amount": "0.50" }
    ]
  },
  "transactionId": 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.

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

### Cash-in status

| Status       | Meaning                                        |
| ------------ | ---------------------------------------------- |
| `pending`    | Deposit code issued, awaiting customer deposit |
| `processing` | Cash received; conversion in progress          |
| `completed`  | USDC delivered to the destination wallet       |
| `expired`    | Code expired before a deposit was made         |

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

## Cash-out

A cash-out (also referred to as cash pickup) is the inverse of a cash-in: the customer holds USDC in an OMS wallet and wants to withdraw it as physical cash. OMS converts the crypto to fiat, issues a time-limited pickup code, and the customer collects cash at a retail counter or ATM.

<Note>
  Cash-out is under active development and not yet available in the OMS API. To be notified when it launches, [register your interest](https://info.polygon.technology/get-early-access?utm_source=docs\&utm_medium=card\&utm_campaign=oms_access).
</Note>

### Cash-out limits

| Limit                 | Value                                                             |
| --------------------- | ----------------------------------------------------------------- |
| Transaction increment | Multiples of \$20.00 USD                                          |
| Transaction minimum   | \$20                                                              |
| Transaction maximum   | \$400                                                             |
| Daily maximum         | \$1,000 in California and New Mexico; \$2,000 in all other states |
| Monthly maximum       | \$60,000                                                          |

### Cash-out flow

```
POST /quotes (USDC → USD/cash)
        │
POST /transactions {quote}  →  OMS pulls USDC from wallet
        │
   pickup code (time-limited)
        │
customer collects cash at retail location or ATM
        │
   transaction.cryptoToFiat.completed
```

## Supported networks

Cash deposits and withdrawals are processed through OMS's partner retail and ATM network across the US.

## Related

* [Cash-in guide](/api-reference/guide-cash-in): full walkthrough with request/response and fee configuration
* [Cash pickup guide](/api-reference/guide-cash-pickup): cash-out flow and planned capabilities
* [Transactions](/payments/transactions): standard two-step flow for card and bank transfers
