GET /deposits
List deposits into the org's virtual accounts: funds that arrived outside of an order, like a counterparty wiring into a virtual bank account or sending stablecoins to a virtual wallet. Sorted by (received_at desc, id desc) and clamped to limit (default 50, max 200).
Seismic registers each deposit the moment it is first reported, even if it hasn't settled yet, and advances its status forward as it does. That means a deposit that is held for review, or one that ends up returned to its sender without ever completing, is still visible here for its whole life.
This is the read-side twin of the deposit.status_changed webhook event: the events announce the transitions, and the registered deposit stays queryable here. id matches the events' deposit.id, so a missed or dropped delivery can always be reconciled against this endpoint.
Query params
| Param | Type | Notes |
|---|---|---|
account_id | string? | Narrow to a single account. |
customer_id | string? | Narrow to a single customer. |
kind | "fiat" | "crypto" | Narrow to one account kind. |
limit | integer (1–200, default 50) | Page size. |
cursor | string | Opaque cursor from the prior page's next_cursor. |
Response 200
{
"deposits": [
{
"id": "9b41…",
"customer_id": "2f10…",
"account_id": "7c1d…",
"account_kind": "fiat",
"amount": "500.00",
"currency": "USD",
"status": "completed",
"received_at": "2026-06-11T17:40:00Z",
"reference": "ACH Credit 021000024184980 ACME PAYMENTS LLC",
"source": {
"sender_name": "ACME PAYMENTS LLC",
"bank_routing_number": "021000021",
"account_number": "1234567890",
"rail": "ach"
}
},
{
"id": "4d2e…",
"customer_id": "2f10…",
"account_id": "8e2f…",
"account_kind": "fiat",
"amount": "75.00",
"currency": "GBP",
"status": "refunded",
"status_reason": "returned to sender after review",
"received_at": "2026-06-10T09:12:00Z"
},
{
"id": "6a73…",
"customer_id": "2f10…",
"account_id": "1b9c…",
"account_kind": "crypto",
"amount": "100",
"currency": "USDC",
"status": "completed",
"received_at": "2026-06-12T14:05:00Z",
"transaction_hash": "0x45da0b317018405ebd82b346aeee0ecaac2f49a5b7d266c37273ff92a23150af"
}
]
}When more pages remain, next_cursor is set.
Deposit fields
| Field | Type | Notes |
|---|---|---|
id | UUID | Seismic's identifier for the registered deposit: the same id the webhook events carry in deposit.id. |
customer_id | UUID | Customer owning the credited account. |
account_id | UUID | The credited virtual account. Resolve with GET /accounts/:id. |
account_kind | "fiat" | "crypto" | Kind of the credited account. |
amount | string | Decimal amount credited, in the account's currency. Optional: absent when the deposit report omits it. |
currency | string | Currency of the credited amount. Optional: absent when the deposit report omits it. |
status | status | Where the deposit is in its lifecycle. Advances forward only. |
status_reason | string | Reported explanation for the current status (e.g. why a deposit was returned). Optional: usually absent. |
received_at | timestamp | When Seismic registered the deposit. |
transaction_hash | string | On-chain settlement hash. Present only for deposits credited over a blockchain rail. Absent for fiat deposits and crypto credits whose hash was not reported. |
reference | string | Payment reference reported with the deposit: the bank statement line of the credit (e.g. ACH Credit 021000024184980 ACME PAYMENTS LLC). Optional: absent when none was reported. |
source | object | Who sent the deposit, when Seismic can determine it. Absent when nothing is known about the sender and no rail is known either. Same shape as the deposit events' source: sender_name, bank_routing_number, account_number and rail on fiat rails, from_address and chain on crypto rails. Each optional — rail in particular is not guaranteed, and is absent when no external network carried the funds. When present it is always one of the platform's rail names, spelled exactly as GET /rails spells it. |
Status
| Value | Meaning |
|---|---|
pending | Reported and in flight. The funds haven't been credited yet. |
under_review | Held for compliance review before settling. |
completed | The funds landed in the account. |
refunded | Returned to the sender, possibly after completing. |
failed | The deposit failed and the funds never landed. |
Every transition between these fires deposit.status_changed carrying the new value. Statuses only move forward: pending → under_review → completed, terminating in refunded or failed when the funds bounce. A deposit can also jump straight to a later state (most fiat deposits arrive already completed in their first report).
Example
curl "$SEISMIC_ORCHESTRATION_URL/v0/deposits?account_id=7c1d2a90…&kind=fiat" \
-H "Api-Key: $SEISMIC_ORCHESTRATION_API_KEY"