> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sumvin.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Supported values

> Assets, chains, countries, and payment methods accepted by the ramp endpoints.

The ramp endpoints (`GET /v0/ramp/quotes`, `POST /v0/ramp/sessions`) speak Sumvin's domain primitives: `from_asset`, `to_asset`, and `chain_id`. Direction (buy or sell) is inferred from which side is fiat. Provider-specific token codes are translated internally — your integration only ever sees Sumvin asset symbols.

## Direction inference

You always send the same triplet — `from_asset`, `to_asset`, `chain_id`. Sumvin reads the fiat-vs-crypto sides and infers the direction.

| `from_asset`         | `to_asset`           | Direction       | Resulting `transaction_type` |
| -------------------- | -------------------- | --------------- | ---------------------------- |
| Fiat (e.g. `USD`)    | Crypto (e.g. `USDC`) | Buy (on-ramp)   | `CRYPTO_PURCHASE`            |
| Crypto (e.g. `USDC`) | Fiat (e.g. `EUR`)    | Sell (off-ramp) | `CRYPTO_SELL`                |

`chain_id` always describes the crypto leg — the network the crypto asset lives on. Whether you are buying or selling, `chain_id` is the chain you are settling crypto on or debiting from.

<Warning>
  Both sides being fiat or both sides being crypto is rejected with `400 Invalid Asset Pair` (`RAMP_INVALID_PAIR`). One side must be fiat, the other must be crypto.
</Warning>

## Assets

`from_asset` and `to_asset` accept Sumvin asset symbols. Discover the full set programmatically:

```bash theme={null}
curl https://api.sumvin.com/v0/assets \
  -H "x-juno-jwt: <your-jwt-token>" \
  -H "x-juno-orgid: <your-org-id>"
```

### Fiat

Any value in the `FiatSymbol` enum is accepted as the fiat side of a pair. Whether a given fiat code returns live quotes depends on the country and the service providers that serve it.

| Code  | Currency           |
| ----- | ------------------ |
| `USD` | US Dollar          |
| `EUR` | Euro               |
| `GBP` | British Pound      |
| `JPY` | Japanese Yen       |
| `CNY` | Chinese Yuan       |
| `CAD` | Canadian Dollar    |
| `AUD` | Australian Dollar  |
| `CHF` | Swiss Franc        |
| `INR` | Indian Rupee       |
| `BRL` | Brazilian Real     |
| `KRW` | South Korean Won   |
| `MXN` | Mexican Peso       |
| `SEK` | Swedish Krona      |
| `NOK` | Norwegian Krone    |
| `DKK` | Danish Krone       |
| `SGD` | Singapore Dollar   |
| `HKD` | Hong Kong Dollar   |
| `NZD` | New Zealand Dollar |
| `ZAR` | South African Rand |
| `PLN` | Polish Zloty       |
| `CZK` | Czech Koruna       |

### Crypto — rampable today

Each crypto asset is identified by the pair `(symbol, chain_id)`. The table below lists the assets currently eligible for fiat ramp. A pair outside this set returns `400 Asset Not Supported for Ramp` (`RAMP_UNSUPPORTED_ASSET`).

Sei mainnet (`chain_id: 1329`) is the first launch chain. Base (`chain_id: 8453`) is also supported.

#### Sei — `chain_id: 1329`

| Symbol | Asset                  |
| ------ | ---------------------- |
| `SEI`  | Sei (native gas token) |

#### Base — `chain_id: 8453`

| Symbol | Asset                    |
| ------ | ------------------------ |
| `ETH`  | Ether (native gas token) |
| `USDC` | USD Coin                 |
| `EURC` | Euro Coin                |

<Note>
  Other chains (Ethereum mainnet, Optimism, Polygon, Arbitrum, Avalanche, BNB Smart Chain) appear in the `SupportedChains` enum and are returned by `GET /v0/assets` as catalog entries — but they are not currently rampable. Quote and session calls against those chains return `400 Asset Not Supported for Ramp`. Coverage expands as service providers extend their support.
</Note>

### Crypto — catalog only (not yet rampable)

These assets are present in the Sumvin catalog (visible on `GET /v0/assets`, holdable in a Sumvin wallet) but cannot currently be bought or sold through the ramp endpoints. Quote calls return `RAMP_UNSUPPORTED_ASSET`.

#### Sei — `chain_id: 1329`

| Symbol    | Asset       |
| --------- | ----------- |
| `WSEI`    | Wrapped SEI |
| `USDC`    | USD Coin    |
| `USDT`    | Tether USD  |
| `fastUSD` | fastUSD     |

#### Base — `chain_id: 8453`

| Symbol   | Asset                                                 |
| -------- | ----------------------------------------------------- |
| `WETH`   | Wrapped Ether — use `ETH` on `chain_id: 8453` to ramp |
| `cbBTC`  | Coinbase Wrapped BTC                                  |
| `AERO`   | Aerodrome                                             |
| `LINK`   | Chainlink Token                                       |
| `DAI`    | Dai Stablecoin                                        |
| `AAVE`   | Aave Token                                            |
| `USDT`   | Tether USD                                            |
| `MORPHO` | Morpho Token                                          |

<Note>
  `WETH` on Base is not separately rampable — buying or selling Ether on Base uses `ETH` as the symbol. The wrapped variant exists in the catalog for balance accounting and DeFi interactions.
</Note>

## Country codes

`country_code` is an `ISO 3166-1 alpha-2` value drawn from the `SupportedCountry` enum. It filters quotes to providers live in that market. Defaults to `US`. Values outside the enum are rejected at the API boundary with `422 Unprocessable Entity` before the request reaches the provider.

### Americas

| Code | Country       | Code | Country   |
| ---- | ------------- | ---- | --------- |
| `US` | United States | `BR` | Brazil    |
| `CA` | Canada        | `AR` | Argentina |
| `MX` | Mexico        | `CL` | Chile     |
| `CO` | Colombia      | `PE` | Peru      |

### Europe

| Code | Country        | Code | Country     |
| ---- | -------------- | ---- | ----------- |
| `GB` | United Kingdom | `AT` | Austria     |
| `DE` | Germany        | `CH` | Switzerland |
| `FR` | France         | `SE` | Sweden      |
| `IT` | Italy          | `NO` | Norway      |
| `ES` | Spain          | `DK` | Denmark     |
| `NL` | Netherlands    | `FI` | Finland     |
| `BE` | Belgium        | `PL` | Poland      |
| `IE` | Ireland        | `CZ` | Czechia     |
| `PT` | Portugal       | `GR` | Greece      |

### APAC

| Code | Country     | Code | Country     |
| ---- | ----------- | ---- | ----------- |
| `SG` | Singapore   | `IN` | India       |
| `HK` | Hong Kong   | `TH` | Thailand    |
| `JP` | Japan       | `PH` | Philippines |
| `KR` | South Korea | `MY` | Malaysia    |
| `AU` | Australia   | `ID` | Indonesia   |
| `NZ` | New Zealand |      |             |

### MENA + Africa

| Code | Country              |
| ---- | -------------------- |
| `AE` | United Arab Emirates |
| `SA` | Saudi Arabia         |
| `IL` | Israel               |
| `TR` | Turkey               |
| `ZA` | South Africa         |
| `NG` | Nigeria              |

A format-valid country can still return an empty `quotes` array if no service provider offers that pair in that market — treat `GET /v0/ramp/quotes` as the source of truth for live coverage.

## Payment method types

`payment_method_type` is an enum drawn from `MeldPaymentMethod`. Values outside the enum are rejected at the API boundary with `422 Unprocessable Entity`.

The provider distinguishes broad **types** (categories) from **subtypes** (specific rails). Both are accepted in the same field. Pass a type to receive quotes across all of its subtypes; pass a subtype to narrow to that single rail. Omit the field to let the provider rank the full set.

### Types

| Value           | Description                                                           |
| --------------- | --------------------------------------------------------------------- |
| `CARD`          | Any card payment. Includes `CREDIT_DEBIT_CARD`, `VISA`, `MASTERCARD`. |
| `BANK_TRANSFER` | Bank transfer rails (regional and global).                            |
| `LOCAL`         | Local rails specific to the user's country (e.g. `PIX` in BR).        |
| `MOBILE_WALLET` | Mobile wallets. Includes `APPLE_PAY`, `GOOGLE_PAY`, `SAMSUNG_PAY`.    |
| `ACH`           | US Automated Clearing House.                                          |
| `SEPA`          | Single Euro Payments Area.                                            |

### Subtypes

| Value                 | Type            | Coverage                          |
| --------------------- | --------------- | --------------------------------- |
| `CREDIT_DEBIT_CARD`   | `CARD`          | Global                            |
| `VISA`                | `CARD`          | Global                            |
| `MASTERCARD`          | `CARD`          | Global                            |
| `APPLE_PAY`           | `MOBILE_WALLET` | iOS device, supported markets     |
| `GOOGLE_PAY`          | `MOBILE_WALLET` | Android device, supported markets |
| `SAMSUNG_PAY`         | `MOBILE_WALLET` | Samsung device, supported markets |
| `BACS`                | `BANK_TRANSFER` | GB                                |
| `LOCAL_BANK_TRANSFER` | `BANK_TRANSFER` | Country-specific                  |
| `PIX`                 | `LOCAL`         | BR                                |

### Direction guidance

* **Buys** — `CREDIT_DEBIT_CARD`, `APPLE_PAY`, `GOOGLE_PAY`, `ACH`, `SEPA`, `BANK_TRANSFER` are most commonly available.
* **Sells / off-ramp** — `ACH`, `SEPA`, `BANK_TRANSFER`, `LOCAL_BANK_TRANSFER`. Card rails generally do not support payouts.

## Error reference

Errors follow [RFC 7807 Problem Details](https://datatracker.ietf.org/doc/html/rfc7807) with a Sumvin `error_code` field.

| Error                                                     | Status | When it fires                                                                                                                      |
| --------------------------------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------- |
| Invalid Asset Pair (`RAMP_INVALID_PAIR`)                  | `400`  | Both sides of `from_asset` / `to_asset` are fiat, or both are crypto. One side must be fiat.                                       |
| Unknown Asset (`RAMP_UNKNOWN_ASSET`)                      | `400`  | The crypto symbol does not exist in the Sumvin catalog for the supplied `chain_id`. Check the asset list at `GET /v0/assets`.      |
| Asset Not Supported for Ramp (`RAMP_UNSUPPORTED_ASSET`)   | `400`  | The crypto pair exists in the catalog but no service provider offers a fiat ramp for it today.                                     |
| KYC Required for Ramp (`RAMP_KYC_REQUIRED`)               | `403`  | The user has no verified KYC. Route them through [KYC](/guides/kyc) and retry.                                                     |
| Ramp Transaction Not Found (`RAMP_TRANSACTION_NOT_FOUND`) | `404`  | `GET /v0/ramp/transactions/{transaction_id}` referenced an id that does not exist or belongs to another user.                      |
| Ramp Provider Error (`RAMP_PROVIDER_ERROR`)               | `502`  | The upstream provider rejected the quote or session. Re-quote, try a different `service_provider`, or retry after a short backoff. |

## Validation behaviour

* Enum / type failure (e.g. unknown country code, invalid payment method) → `422 Unprocessable Entity` with the offending field in the validation detail. The request is rejected at the API boundary and never reaches the provider.
* Pair shape failure (both fiat, both crypto, missing crypto leg) → `400 Invalid Asset Pair`.
* Crypto pair not in catalog → `400 Unknown Asset`.
* Crypto pair in catalog but no provider coverage → `400 Asset Not Supported for Ramp`.
* All inputs valid but no provider serves the pair for the country → `200 OK` with an empty `quotes` array on `GET /v0/ramp/quotes`. Re-quote with a different combination.
* Upstream provider rejects → `502 Ramp Provider Error`.

## Related

* [Buy and sell](/products/ramps/buy-sell) — direction model
* [On-ramp quickstart](/guides/quickstarts/onramp-meld) — end-to-end flow
* [Reference](/products/ramps/reference) — status and error codes
