---
title: "List onramp options"
method: GET
path: "/onramp/options"
tags: ["Onramp"]
---

# List onramp options

`GET /onramp/options`

## Request

- Base URL: `https://v1.orchestrator.rhinestone.dev/deposit-processor`
- URL: `https://v1.orchestrator.rhinestone.dev/deposit-processor/onramp/options`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer
  - HTTP bearer
- TypeScript: <https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/docs/onramp/options/get.ts> (a function with typed inputs; its response is checked against the schema)

What a checkout of this `kind` can offer: fiat payment methods for the caller’s country, or exchange connections.

## Query parameters

- `provider` 'swapped' | 'noah', required
- `kind` 'fiat' | 'exchange': `swapped` only, required there
- `currency` 'EUR' | 'USD': `noah` only. One option for this currency; both without
- `connections` string: `swapped` exchange only. Comma-separated allowlist, served in catalogue order; an unknown slug is a 400
- `connectionKind` 'exchange' | 'wallet' | 'all': `swapped` exchange only, ignored with `connections`

## Headers

- `x-api-key` string: Integrator API key: the project’s orders
- `x-user-country` string: Trusted edge-resolved ISO country. When present it overrides body.baseCountry and x-client-ip, and enables country-specific payment-method validation.
- `x-client-ip` string: The end user's IP address as observed by the edge, for edges that can name the IP but cannot resolve a country themselves (no local GeoIP database). Used only when x-user-country is absent, and ignored unless it is a publicly-routable address. Prefer x-user-country when your edge already has a country — for example Cloudflare's cf-ipcountry — since it needs no lookup here.
- `authorization` string: Customer bearer from `POST /compliance/sessions`, or a project-scoped platform bearer where the route permits tenant access

## Response `200`

The options

- union
  - object
    - `provider` 'swapped', required
    - `kind` 'fiat', required
    - `country` string, nullable, required: Null when the country or catalogue is unknown; fall back to your own defaults
    - `methods` object[], required: Curated: the deposit modal’s rows (regional Popular pick, card, bank transfer, Apple Pay)
      - `method` string, required
      - `label` string, required
      - `iconUrl` string, nullable, required
      - `iconUrlLight` string, nullable, required
      - `minAmount` number, nullable, required: Smallest order, in EUR whatever the customer pays in
      - `maxAmount` number, nullable, required: Largest order, in EUR whatever the customer pays in
      - `currencies` string[], required: ISO 4217 fiat currencies the customer can pay this method in, in this country. Empty when Swapped states none
      - `badge` 'Popular', nullable, required
    - `otherMethods` object[], required: Every other method Swapped offers in the country, in its order; pass any as `method` on `POST /onramp/orders`
      - `method` string, required
      - `label` string, required
      - `iconUrl` string, nullable, required
      - `iconUrlLight` string, nullable, required
      - `minAmount` number, nullable, required: Smallest order, in EUR whatever the customer pays in
      - `maxAmount` number, nullable, required: Largest order, in EUR whatever the customer pays in
      - `currencies` string[], required: ISO 4217 fiat currencies the customer can pay this method in, in this country. Empty when Swapped states none
      - `badge` 'Popular', nullable, required
    - `recommendedMethod` string, nullable, required
  - object
    - `provider` 'swapped', required
    - `kind` 'exchange', required
    - `connections` object[], required
      - `connection` string, required
      - `name` string, required
      - `logoUrl` string, nullable, required: HTTPS image URL supplied by Swapped Connect. Prefers the dark icon, then the light icon, then logo variants. Null when Swapped supplies no usable image or its metadata is unavailable. Image format and URL lifetime are provider-controlled.
      - `kind` 'exchange' | 'wallet', required
      - `appHandoff` 'none' | 'https_link' | 'custom_scheme', required
  - object: Bank-transfer accounts the customer may set up; pass one to `POST /onramp/accounts`
    - `provider` 'noah', required
    - `options` object[], required
      - `optionId` string, uuid, required
      - `currency` 'EUR' | 'USD', required: Supported ISO 4217 fiat currency

## Other responses

- `400`: Invalid query
- `401`: Missing or invalid API key or bearer
- `403`: API key lacks deposits:read, the bearer no longer matches its customer, or this provider takes the other credential
- `404`: `noah`: virtual accounts are not provisioned, or no account currency is available for the supplied country
- `500`: Internal failure serving the request
- `502`: PROVIDER_UNAVAILABLE: the provider did not answer; or PROVIDER_REJECTED: it refused the request (`providerError`)
- `503`: Onramp not configured

## Changes

- **2026-11-06** `aa1767d704fa`: 28 warning, 10 info
  - added the new `PROVIDER_FORBIDDEN` enum value to the `code` response property for the response status `400`
  - added the new `PROVIDER_FORBIDDEN` enum value to the `code` response property for the response status `401`
  - added the new `PROVIDER_FORBIDDEN` enum value to the `code` response property for the response status `403`
  - added the new `PROVIDER_FORBIDDEN` enum value to the `code` response property for the response status `404`
  - …34 more
- **2026-10-07** `8b74181ef9e2`: 8 info
  - added the optional property `code` to the response with the `400` status
  - added the optional property `code` to the response with the `401` status
  - added the optional property `code` to the response with the `403` status
  - added the optional property `code` to the response with the `404` status
  - …4 more
- **2026-10-02** `2a4550fcca0f`: 9 info
  - added the new optional `header` request parameter `authorization`
  - added the new optional `query` request parameter `currency`
  - the `header` request parameter `x-api-key` became optional
  - the `query` request parameter `kind` became optional
  - …5 more
- **2026-09-30** `a6fd693c3d5f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/changes/onramp/options/get.md)

---

[API](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api.md) - [All operations](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/llms.txt) - [OpenAPI document](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/revisions/aa1767d704fa?raw)
