---
title: "Get a single deposit by id"
method: GET
path: "/deposits/{id}"
tags: ["Utilities"]
---

# Get a single deposit by id

`GET /deposits/{id}`

Returns one of the authenticated client's deposits by its stable id, in the same item shape as `GET /deposits`. Scoped to the caller's tenant: an unknown id and another tenant's id are both a 404.

## Path parameters

- `id` string, required — Deposit id. Returned by GET /deposits.

## Headers

- `x-api-key` string — API key for authentication (omit when sending Authorization)
- `authorization` string — Bearer platform token (e.g. forwarded by user-service). Takes precedence over `x-api-key` when both are present.

## Response `200`

The deposit

- DepositListItem
  - `id` string, required — Deposit id. Pass to GET /deposits/{id}/quotes.
  - `chain` string, required
  - `txHash` string, required
  - `token` string, required
  - `tokenSymbol` string, nullable, required — Display symbol for `token`, resolved at read time. Null when the token could not be resolved — render the raw address.
  - `tokenDecimals` integer, nullable, required — Decimals for `token`, i.e. what makes `amount` and `sourceAmount` renderable — both are raw base units. Null when unresolved; render the raw integer rather than guessing 18.
  - `targetTokenSymbol` string, nullable, required — Display symbol for `targetToken`. Null when unresolved.
  - `targetTokenDecimals` integer, nullable, required — Decimals for `targetToken`, applying to `destinationAmount`. Null when unresolved.
  - `amount` string, required — Numeric string representing a bigint value
  - `sender` string, required
  - `recipient` string, required — Destination-chain address that receives the funds. Falls back to the smart account for EVM/HyperCore/Tron when no distinct recipient is configured; for Solana it is the EVM recipient, never the internal swig.
  - `depositAddress` string, required — Source-chain address that received the deposit (EVM smart account, Solana wallet PDA, or Tron deposit address).
  - `targetChain` string, required
  - `targetToken` string, required
  - `status` 'pending' | 'processing' | 'completed' | 'failed' | 'rejected' | 'ignored' | 'expecting_refund' | 'refunded' | 'delayed' | 'reconciliation_required', required
  - `sourceTxHash` string, nullable, required
  - `destinationTxHash` string, nullable, required
  - `sourceAmount` string, nullable, required — Numeric string representing a bigint value
  - `destinationAmount` string, nullable, required — Numeric string representing a bigint value
  - `sponsoredGasUsd` string — USD value of gas absorbed for the user. Absent when no sponsorship accounting exists; "0" means nothing was sponsored.
  - `sponsoredBridgeFeeUsd` string — USD value of the bridge fee absorbed for the user. Excludes app fees and sponsor surcharges. Absent when no accounting exists; "0" means nothing was sponsored.
  - `createdAt` string, required
  - `completedAt` string, nullable, required
  - `errorCode` string, nullable, required
  - `retryable` boolean, required
  - `isSpam` boolean, required

## Other responses

- `400` — Invalid deposit id
- `401` — Authentication required, or invalid API key / platform token
- `403` — API key lacks required deposits scope
- `404` — Deposit not found or not owned by the caller

---

[API](https://skmtc.net/rhinestonewtf/apis/deposit-service-api.md) · [All operations](https://skmtc.net/rhinestonewtf/apis/deposit-service-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/rhinestonewtf/deposit-service-api/revisions/c9aa3f252e4f/schema)
