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

# Get an offramp order

`GET /offramp/orders/{id}`

## Request

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

By the order `id`. A customer bearer reads that customer's orders; an API key with `deposits:read`, the project's.

## Path parameters

- `id` string, uuid, required

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

- OfframpOrder
  - `id` string, uuid, required
  - `provider` 'noah' | 'swapped', 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: The fiat payout to the bank
      - object
        - `status` 'not_started', required
      - object
        - `status` 'pending', required
      - object
        - `status` 'on_hold', required
        - `reason` 'rfi_open' | 'review', required
      - object
        - `status` 'processing', required
      - object: The provider sent the payment to the bank
        - `status` 'submitted', required
      - object: The bank accepted the payment
        - `status` 'completed', required
      - object
        - `status` 'failed', required
        - `reason` 'sub_fee' | 'provider_error', required: `sub_fee`: the fees took the whole amount
    - `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: What the bank receives, after fees; null until the provider states it
    - `charged` object, nullable, required: The payout, in the currency the bank receives
      - `total` string, nullable, required: The sale, fees included; null when not stated
      - `net` string, nullable, required: What the bank receives, after fees
      - `currency` string, required
    - `eur` object, nullable, required
      - `total` string, nullable, required: The sale, fees included; null when not stated
      - `net` string, nullable, required: What the bank receives, after fees
    - `usd` object, nullable, required
      - `total` string, nullable, required: The sale, fees included; null when not stated
      - `net` string, nullable, required: What the bank receives, after fees
  - `crypto` object, nullable, required
    - `asset` string, required
    - `network` string, required
    - `amount` string, required
  - `providerStatus` string, required: The provider’s own status of its latest leg, else ours (`reserved`, `opened`, `refused`, `unknown`, `expired`); informational
  - `createdAt` string, date-time, required: When the provider says the order began
  - `updatedAt` string, date-time, required
  - `sender` string, required: The address the provider takes the crypto from: `source.address`, or the withdrawal account it pays into
  - `payment` union, required: How to pay the order, by `kind`: `direct` from a source on the provider’s chain and token, `withdrawal_account` from any other
    - OfframpDirectPayment: Send exactly `amount` of `token` on `chain` from `from` to `to`, as a direct ERC-20 transfer whose sender is `from` (an EOA, or the smart account executing it). A different amount or sender is not matched and stays with the provider until recovery.
      - `kind` 'direct', required
      - `from` string, required: The sender: an EOA, or the smart account executing the transfer
      - `to` string, required: Ethereum address (0x followed by 40 hex characters)
      - `chain` string, required: CAIP-2
      - `token` string, required: Ethereum address (0x followed by 40 hex characters)
      - `amount` string, required: Exact, in base units of `token`: the value of the ERC-20 transfer
    - OfframpWithdrawalAccountPayment: Send exactly `amount` of `token` on `chain` from `from` to `to`, the customer’s withdrawal account, after the order opens and before `expiresAt`; we pay the provider from it, and what the payment does not spend stays there for an operator. A different amount or sender, or a transfer mined more than 30 minutes after `expiresAt`, is not matched: it stays on the account until an operator refunds it.
      - `kind` 'withdrawal_account', required
      - `from` string, required: `source.address`: an EOA, or the smart account executing the transfer
      - `to` string, required: The customer’s withdrawal account
      - `chain` string, required: CAIP-2: `source.chain`
      - `token` string, required: `source.token`
      - `amount` string, required: Exact, in base units of `token`: the value of the transfer. Quoted to deliver the order’s amount of the provider’s token on the cheapest route, plus a margin for the fees the customer pays (or, for another asset, 1% for its price); may be a few base units higher when another open withdrawal from this source holds it
  - `expiresAt` string, date-time, required: Send the payment before this

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid credentials
- `403`: The bearer no longer matches its customer, or the API key lacks `deposits:read`
- `404`: No such order
- `500`: Internal failure serving the request
- `503`: The customer could not be read; retry

## Changes

- **2026-11-06** `aa1767d704fa`: 1 breaking, 24 warning, 10 info
  - added `#/components/schemas/OfframpWithdrawalAccountPayment` to the `payment/anyOf[#/components/schemas/OfframpPayment]/` response property `oneOf` list for the response status `200`
  - 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`
  - …31 more
- **2026-10-16** `816f78ba036e`: 1 info
  - endpoint added

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