---
title: "Get an onramp order"
method: GET
path: "/onramp/orders/{id}"
tags: ["Onramp"]
---

# Get an onramp order

`GET /onramp/orders/{id}`

## Request

- Base URL: `https://v1.orchestrator.rhinestone.dev/deposit-processor`
- URL: `https://v1.orchestrator.rhinestone.dev/deposit-processor/onramp/orders/{id}`
- 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/orders/:id/get.ts> (a function with typed inputs; its response is checked against the schema)

Accepts any id the caller holds: the order `id`, the provider’s order id (e.g. the `orderId` of the legacy `onramp-order` webhook), the `orderId` returned when the checkout was started (when retries share it, the newest order), or the `externalCustomerId` signed into the checkout (`<account>:<reference>`). 404 until the provider first reports the order. A customer bearer reads that customer’s orders and every order on its bound account.

## Path parameters

- `id` string, required: Order id, provider order id, checkout reference, or `<account>:<reference>`

## Headers

- `x-api-key` string: Integrator API key: the project’s orders
- `authorization` string: Customer bearer from `POST /compliance/sessions`, or a project-scoped platform bearer where the route permits tenant access

## Response `200`

The order

- OnrampOrder
  - `id` string, uuid, required
  - `provider` 'noah' | 'swapped', required
  - `kind` 'fiat' | 'exchange', required
  - `status` 'pending' | 'processing' | 'completed' | 'failed' | 'refunded', required
  - `terminal` boolean, required: No stage will change again
  - `stages` object, required
    - `receipt` union, required
      - object
        - `status` 'not_started', required
      - object
        - `status` 'pending', required
      - object
        - `status` 'on_hold', required
        - `reason` 'kyc_required' | 'rfi_open' | 'review', required
      - object
        - `status` 'processing', required
      - object
        - `status` 'completed', required
      - object
        - `status` 'failed', required
        - `reason` 'cancelled' | 'declined' | 'expired' | 'provider_error', required
    - `conversion` union, required
      - object
        - `status` 'not_started', required
      - object
        - `status` 'processing', required
      - object
        - `status` 'on_hold', required
        - `reason` 'rfi_open' | 'review', required
      - object
        - `status` 'completed', required
      - object
        - `status` 'failed', required
        - `reason` 'sub_fee' | 'provider_error', required
    - `delivery` union, required
      - object
        - `status` 'not_started', required
      - object
        - `status` 'pending', required
      - object
        - `status` 'on_hold', required
        - `reason` 'rfi_open' | 'review', required
      - object: The provider reported the transfer; not yet seen on chain
        - `status` 'submitted', required
        - `txHash` string, required
      - object: The transfer landed on chain as a deposit
        - `status` 'completed', required
        - `txHash` string, required
        - `depositId` string, required: The deposit it landed as
      - object
        - `status` 'failed', required
        - `reason` 'sub_fee' | 'provider_error', required
    - `return` union, required
      - object
        - `status` 'none', required
      - object
        - `status` 'pending', required
      - object
        - `status` 'processing', required
      - object
        - `status` 'completed', required
        - `outcome` 'full_refund' | 'adjustment' | 'unresolved', required
      - object
        - `status` 'failed', required
  - `rail` union, required: `provider_selected` / `unknown` when the provider did not say
    - object
      - `kind` 'fiat', required
      - `method` string, required
    - object
      - `kind` 'exchange', required
      - `connection` string, required
  - `fiat` object, required: Each figure in a fixed currency; null when the provider did not state it
    - `charged` object, nullable, required: What the customer paid, in their own currency
      - `total` string, nullable, required: Including fees
      - `net` string, nullable, required: Before fees
      - `currency` string, required
    - `eur` object, nullable, required: Comparable across every order
      - `total` string, nullable, required: Including fees
      - `net` string, nullable, required: Before fees
    - `usd` object, nullable, required
      - `total` string, nullable, required: Including fees
      - `net` string, nullable, required: Before fees
  - `crypto` object, nullable, required
    - `asset` string, required
    - `network` string, required
    - `amount` string, required
  - `account` string, required: Ethereum address (0x followed by 40 hex characters)
  - `deliveryAddress` string, nullable, required: Ethereum address (0x followed by 40 hex characters)
  - `deliveryChain` string, nullable, required: CAIP-2 chain of the delivery, e.g. `eip155:8453`
  - `providerStatus` string, required: The provider’s own status; informational
  - `createdAt` string, date-time, required: When the provider says the order began
  - `updatedAt` string, date-time, required

## Other responses

- `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`: No such order for this project yet
- `500`: Internal failure serving the request
- `503`: Tenant billing verification is temporarily unavailable; retry after 5 seconds.

## Changes

- **2026-11-06** `aa1767d704fa`: 16 warning, 8 info
  - 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`
  - added the new `PROVIDER_FORBIDDEN` enum value to the `code` response property for the response status `500`
  - …20 more
- **2026-10-07** `8b74181ef9e2`: 1 breaking, 6 info
  - added the pattern `^[A-Za-z0-9._:-]{1,128}$` to the `path` request parameter `id`
  - for the `path` request parameter `id`, the format was generalized from `uuid` to no format
  - added the optional property `code` to the response with the `401` status
  - added the optional property `code` to the response with the `403` status
  - …3 more
- **2026-10-02** `2a4550fcca0f`: 2 info
  - added the new optional `header` request parameter `authorization`
  - the `header` request parameter `x-api-key` became optional
- **2026-09-30** `a6fd693c3d5f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/changes/onramp/orders/:id/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)
