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

# Currencies and rails

> Supported assets, networks, and payment rails in OMS.

Every side of a transaction specifies an **asset** (what kind of money) and, for most instruments, a **network** (how it moves). Crypto sides carry an `asset` and a `network`; fiat sides carry an `asset` (`usd` or `cad`) and a rail-specific `network`.

## Crypto assets and networks

OMS custodial wallets and on-chain instruments hold stablecoins:

| Asset  | Description |
| ------ | ----------- |
| `usdc` | USD Coin    |
| `usdt` | Tether USD  |

A crypto instrument pairs the asset with a `network`. The `network` on every crypto request field is a closed set:

| Network    | Description      |
| ---------- | ---------------- |
| `ethereum` | Ethereum mainnet |
| `polygon`  | Polygon PoS      |
| `base`     | Base             |
| `solana`   | Solana           |
| `tron`     | Tron             |

Send `network` values in lowercase. Typed clients generated from the OMS schema validate against these exact values. Availability of an asset on a given network is a separate check: `usdc` is available on `ethereum`, `base`, `solana`, and `tron`; `usdt` is available on `ethereum` and `tron`.

Each crypto side also resolves a `blockchainAsset` object that carries the on-chain identity: the wire-level `protocol` (`evm`, `svm`, `sui`, or `tvm`), the `chainId`, and the `tokenId`.

Polygon is the recommended network for most use cases: sub-2-second finality, fractions-of-a-cent transaction cost, and native USDC (no bridging or wrapping).

<Tip>
  Call `GET /networks` at runtime to discover every network OMS currently supports, along with its assets and which OMS resources can use it as a source or destination. Availability is derived from live route configuration, so a network absent from the response is not routable.
</Tip>

## Fiat rails

Fiat instruments are identified by a `type` and carry a rail-specific `network`:

| Instrument   | Asset | Network      | Description                                        |
| ------------ | ----- | ------------ | -------------------------------------------------- |
| `bankUs`     | `usd` | `ach`        | US dollars via ACH bank transfer                   |
| `bankUs`     | `usd` | `achSameDay` | US dollars via same-day ACH                        |
| `bankUs`     | `usd` | `wire`       | US dollars via domestic wire                       |
| `bankIban`   | `usd` | `swift`      | US dollars to an IBAN account over SWIFT           |
| `bankCanada` | `usd` | `swift`      | US dollars to a Canadian account over SWIFT        |
| `bankCanada` | `cad` | `local`      | Canadian dollars over local rails                  |
| `card`       | `usd` | `card`       | US dollars via [debit card](/payments/debit-cards) |
| `cash`       | `usd` | `cash`       | US dollars via physical cash at retail locations   |

Card rails accept a `settlementType` on the quote: `internal` (OMS custodies the crypto) or `external` (an on-chain wallet). A card buy defaults to `external`; a card sell defaults to `internal`. The field is ignored for non-card rails.

Which rails a customer can use depends on the endorsements granted to that customer (`basic`, `cryptoCustody`, and `usd`). Endorsements are granted after verification and delivered via webhook. See [Entities and relationships](/payments/core-concepts/entities) for the endorsement model.

## Exchange rates and FX

USD and its stablecoins convert by issuer redemption: USD to USDC or USDT is redeemed 1:1 with the issuer, so there is no market, exchange, or central-bank reference rate and no FX spread. What a quote locks is the fee schedule, not a fluctuating rate. The quote's `pricing` object expresses this:

* `pricing.exchangeRate`: units of the destination asset per unit of the source asset.
* `pricing.effectiveRate`: the all-in rate the customer receives after fees.
* `pricing.fixedAmountSide`: which side of the trade the amount was specified on.
* `expiresAt`: when the locked pricing expires.

The per-side `feesDeducted` breakdown reports OMS, developer, and gas fees separately.

## Settlement times

Typical production times from initiating a payment to the confirmation event. Inbound confirmations fire when the bank confirms receipt; the same timing applies to payouts.

| Rail                  | Typical settlement                                   |
| --------------------- | ---------------------------------------------------- |
| ACH                   | Next business day (morning ET of the effective date) |
| Same-Day ACH          | Same business day                                    |
| Fedwire               | About an hour, within the Fedwire window             |
| SWIFT                 | 1 to 2 business days                                 |
| Polygon, Solana, Tron | About a minute                                       |
| Ethereum, Base        | About 5 minutes                                      |

Amounts above bank-internal thresholds can trigger a compliance review before release: a hold, not a rejection. Execution is never force-split across payments.

## Cash networks

OMS supports cash deposits and withdrawals through a partner retail network. A cash-in generates a code the customer presents at a retail location; OMS monitors for the deposit and auto-creates a `cashToCrypto` transaction when cash is received. Cash payouts (`cryptoToCash`) are delivered as a pickup: the amount must be a multiple of 20.00, up to a maximum of 400.00 per transaction.

Query available locations with `GET /cash-locations`, passing the `provider`, the customer's `latitude` and `longitude`, and a `flow` of `cash_in` or `cash_out`. See the [Cash-ins and cash-outs](/payments/cash-ins-and-cash-outs) page for the full flow.

## Network reference endpoint

`GET /networks` returns the live catalog of networks OMS routes on, with each network's asset list, on-chain identity, and which OMS resources can use it in which direction. The response derives from the current routing configuration, so it always reflects what the running API accepts. The endpoint takes no query parameters and does not paginate; the catalog is configuration-bounded.

```bash theme={null}
curl -sS https://api.polygon.technology/v0.13/networks \
  -H "Authorization: Bearer $TOKEN"
```

A single entry:

```json theme={null}
{
  "network": "ethereum",
  "category": "crypto",
  "type": "blockchain",
  "chainId": 1,
  "displayName": "Ethereum",
  "networkFamily": "evm",
  "assets": [
    { "asset": "usdc", "contractAddress": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "decimals": 6 },
    { "asset": "usdt", "contractAddress": "0xdac17f958d2ee523a2206206994597c13d831ec7", "decimals": 6 }
  ],
  "supportedBy": {
    "cashIn":          { "asSource": false, "asDestination": true },
    "depositAddress":  { "asSource": true,  "asDestination": true },
    "externalAccount": { "asSource": [],    "asDestination": ["walletExternal"] },
    "virtualAccount":  { "asSource": false, "asDestination": true },
    "wallet":          { "asSource": true,  "asDestination": true }
  }
}
```

Every entry carries the `network` token you send in request `network` fields, a `category` (`crypto`, `fiatAccount`, or `cash`), and a `type` (`blockchain`, `bankRail`, `card`, or `physical`). Blockchain networks add `chainId` (null for non-EVM), `networkFamily` (`evm`, `solana`, or `tron`), and one `assets` entry per active pair. `assets[].contractAddress` is null for a native asset; `assets[].decimals` is absent when the on-chain scale is unknown for that pair.

`supportedBy` states, per OMS resource type, whether that network is usable as a source, as a destination, or both. `externalAccount` is asymmetric: the values are the external-account arm names that can attach on that side (for example, `walletExternal` for crypto destinations); an empty array means the arm is not selectable on that side.

`supportedBy.wallet` is populated only when OMS wallets are known to hold value on the network. When the property is absent, treat it as unproven for wallet use rather than as an explicit "no": OMS reports what its wallet custodian has validated, not the negation.

Fiat availability is scoped to the caller's project. Rails your project does not have enabled are reported as unavailable on your response even when they are enabled globally.

Consume this endpoint at the boundary of your integration to drive picker UIs and configuration checks. The tables earlier on this page summarize the same catalog at doc-writing time.
