Skip to content
Seismic Orchestration

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

ParamTypeNotes
account_idstring?Narrow to a single account.
customer_idstring?Narrow to a single customer.
kind"fiat" | "crypto"Narrow to one account kind.
limitinteger (1–200, default 50)Page size.
cursorstringOpaque 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

FieldTypeNotes
idUUIDSeismic's identifier for the registered deposit: the same id the webhook events carry in deposit.id.
customer_idUUIDCustomer owning the credited account.
account_idUUIDThe credited virtual account. Resolve with GET /accounts/:id.
account_kind"fiat" | "crypto"Kind of the credited account.
amountstringDecimal amount credited, in the account's currency. Optional: absent when the deposit report omits it.
currencystringCurrency of the credited amount. Optional: absent when the deposit report omits it.
statusstatusWhere the deposit is in its lifecycle. Advances forward only.
status_reasonstringReported explanation for the current status (e.g. why a deposit was returned). Optional: usually absent.
received_attimestampWhen Seismic registered the deposit.
transaction_hashstringOn-chain settlement hash. Present only for deposits credited over a blockchain rail. Absent for fiat deposits and crypto credits whose hash was not reported.
referencestringPayment 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.
sourceobjectWho 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

ValueMeaning
pendingReported and in flight. The funds haven't been credited yet.
under_reviewHeld for compliance review before settling.
completedThe funds landed in the account.
refundedReturned to the sender, possibly after completing.
failedThe 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"