Saltar al contenido principal

Deposits

Deposit history

GET /v2/deposits

List deposits

Every credit to the account — on-chain arrivals, bank transfers and internal movements — newest first. subType tells them apart, and only the on-chain ones carry a transactionHash.

Amounts default to rebased. For a tokenised equity that means they are stated as the underlying equity, NOT as the tokens that moved on chain — read the base block, which is always present, to reconcile against a ledger entry or a webhook.

assetSymbol accepts either spelling of a tokenised equity: filtering by the rebased ticker finds the same deposits as the settled code.

Parámetros

ParámetroEnTipoRequeridoDescripción
pagequeryintegernoDefault: 1.
limitqueryintegernoDefault: 25.
assetSymbolquerystringno
statusquerystringno
subTypequeryINTERNAL | EXTERNAL_CRYPTO | EXTERNAL_FIAT_BANK | EXTERNAL_FIAT_REDPAY_CHARGEBACKno
assetFormatqueryAssetFormatnoHow to express tokenised-equity (xStock) amounts. rebased (default) = underlying equity (real shares); base = settled SPV tokens, i.e. what was credited on chain and in the ledger. No effect on other assets.
startDatequerystringnoISO-8601 start date.
endDatequerystringnoISO-8601 end date.

Respuestas

CódigoDescripciónCuerpo
200Éxito.data: DepositResource[] · pagination: PaginationMeta
401application/problem+json (RFC 9457) — branch on code, not on the status: unauthorized (not retryable), key_expired (not retryable), key_revoked (not retryable).
403application/problem+json (RFC 9457) — branch on code, not on the status: insufficient_scope (not retryable), ip_not_allowed (not retryable), api_access_disabled (not retryable).
429application/problem+json (RFC 9457) — branch on code, not on the status: rate_limited (retryable).
500application/problem+json (RFC 9457) — branch on code, not on the status: internal_error (retryable).
502application/problem+json (RFC 9457) — branch on code, not on the status: downstream_unavailable (retryable).
503application/problem+json (RFC 9457) — branch on code, not on the status: maintenance (retryable).

GET /v2/deposits/{id}

Get a deposit by id

Takes the same assetFormat as the list, so one deposit reports the same figures whichever way you reach it. The id is the one carried as source.id on the matching ledger entry, so a ledger row and this resource can be joined without a search.

Parámetros

ParámetroEnTipoRequeridoDescripción
idpathstring
assetFormatqueryAssetFormatnoHow to express tokenised-equity (xStock) amounts. rebased (default) = underlying equity (real shares); base = settled SPV tokens, i.e. what was credited on chain and in the ledger. No effect on other assets.

Respuestas

CódigoDescripciónCuerpo
200Éxito.DepositResource
401application/problem+json (RFC 9457) — branch on code, not on the status: unauthorized (not retryable), key_expired (not retryable), key_revoked (not retryable).
403application/problem+json (RFC 9457) — branch on code, not on the status: insufficient_scope (not retryable), ip_not_allowed (not retryable), api_access_disabled (not retryable).
404application/problem+json (RFC 9457) — branch on code, not on the status: not_found (not retryable).
429application/problem+json (RFC 9457) — branch on code, not on the status: rate_limited (retryable).
500application/problem+json (RFC 9457) — branch on code, not on the status: internal_error (retryable).
502application/problem+json (RFC 9457) — branch on code, not on the status: downstream_unavailable (retryable).
503application/problem+json (RFC 9457) — branch on code, not on the status: maintenance (retryable).

Esquemas

DepositBaseRepresentation

CampoTipoDescripción
assetstring | nullAsset code of the settled token. Populated on every read, including a rebased one — the rebased ticker maps back to the settled code through the maintainers snapshot. null only if that lookup misses, which means the asset is unknown to the snapshot rather than that the code was unobtainable. It is never the underlying ticker: a plausible-looking wrong code is worse than an obvious gap when reconciling against a webhook. Ej.: USDT.
amountstringAmount deposited, in settled units. Positive magnitude. Ej.: 2000.
feestringAlways zero — Skipo charges no deposit fees. Ej.: 0.
totalstringTotal credited, in settled units. Positive magnitude. Ej.: 2000.

DepositResource

CampoTipoDescripción
idstringDeposit id. Use it to re-fetch this deposit and to match its ledger entry (source.id). Ej.: 503c85d1-b415-4ad4-9c0c-3881e105101e.
typestringEj.: DEPOSIT.
subTypeINTERNAL | EXTERNAL_CRYPTO | EXTERNAL_FIAT_BANK | EXTERNAL_FIAT_REDPAY_CHARGEBACK
assetSymbolstringAsset code of the deposit. Ej.: USDT.
amountstringAmount deposited. Positive magnitude, in assetSymbol. Ej.: 2000.
feestringFee charged by Skipo for this deposit. Always zero — Skipo does not charge deposit fees. Present for a consistent shape across resources. Ej.: 0.
totalstringTotal credited to the balance. Positive magnitude, in assetSymbol. Ej.: 2000.
statusstringEj.: COMPLETED.
createdAtstringEj.: 2026-07-15T18:08:14.637Z.
transactionHashstring | nullOn-chain transaction hash, when this deposit had one. null otherwise — an off-chain deposit (bank transfer, internal transfer, earn distribution) never has one, and an on-chain deposit that has not been broadcast yet does not have one YET. Top-level so that reading it never requires branching on subType. It is the same value as depositData.transactionHash, which remains for the sub-types that already published it; this field additionally covers on-chain sub-types that carry a hash but publish no depositData block. NOT a bank reference: on a fiat deposit this is always null, even though the underlying record may hold the bank's own transaction id. Do not assume a 0x prefix — BTC, Solana and Tron hashes have none. Ej.: 0x6392dc8a37abbfdc125c599aa57704100f7423e460d001ccabd09bc939c89e4d.
bankReferencestring | nullThe bank's or payment provider's own reference for this deposit, when one was recorded. null on every non-fiat deposit, and null on a fiat deposit that carries no reference (the large majority — 225 of 112,281 bank deposits on prod have one). The counterpart of transactionHash: a deposit is settled either on a chain or through a bank, so at most one of the two fields is ever populated. Free-form and short (1-19 characters, not always numeric) — it is whatever the bank supplied, so treat it as an opaque string for reconciliation, never parse it. Ej.: null.
senderNamestring | nullName of the bank account the transfer came FROM, as the sending bank reported it. null on every non-fiat deposit and on a fiat deposit created by an operator. Unnormalised — casing and accents are the bank’s, not ours. Ej.: JANE DOE.
senderNationalIdstring | nullNational id of the sending account holder (in Chile, the RUT), and the key Skipo matches an incoming transfer on. ⚠️ Published ONLY when it equals your own — the nationalId on GET /v2/account. It is null whenever the money came from anyone else, so this field confirms a deposit was self-funded and never discloses a third party. On the automated rail that is the normal case by construction: Skipo credits whoever owns the sending id, so the sender IS the holder. Compared ignoring formatting, so 12.345.678-9 and 123456789 match. Ej.: 12.345.678-9.
senderBankIdstring | nullIdentifier of the sending bank, as the rail reported it. Opaque — do not parse. Ej.: BANCO_DE_CHILE.
senderAccountstring | nullAccount number the transfer came from, as the sending bank reported it. Ej.: 00-123-45678-90.
bankDescriptionstring | nullFree text the sender put on the transfer, when the rail carried any. Empty on most deposits (76.5% on prod), so treat its absence as normal rather than as an error. Distinct from bankReference, which is the operator’s own number for the movement. Ej.: transferencia.
valueDatestring | nullWhen the money actually MOVED, as the rail reported it — as opposed to createdAt, which is when Skipo credited it. null on every non-fiat deposit. Use this to reconcile a month-end: on prod the two fall in different months on 1 deposit in 27 months, and the median gap is 91 seconds. Join to the ledger on source.id. NOT the clearing deadline the rail also publishes — that one falls AFTER the credit and would push deposits into the following month. Ej.: 2026-08-20T14:03:11Z.
assetFormatanyWhich representation the top-level money fields are expressed in. Echoes what the request RESOLVED to, so a response that took the default is as self-describing as one that asked. Ej.: rebased.
multiplierstringRebase factor as it stood when the deposit was created — not today. "1" when no scaling applies. base.amount x multiplier = amount when assetFormat is rebased. "1" is NOT a claim that the asset does not rebase; read GET /v2/assets for its class. Ej.: 1.
baseDepositBaseRepresentation
depositDataobjectSub-type-specific details. The keys depend on transactionSubType, so branch on that rather than probing for fields. For EXTERNAL_CRYPTO this carries the CANONICAL chain identity, the same five fields GET /v2/assets[].networks and GET /v2/contacts publish — networkId (BSC, ETH, TRON), networkName, networkNativeAsset, evmChainId and assetType (the token standard, BEP20/ERC20/TRC20). Join on networkId: it is the one field that means the same thing on every v2 resource, so a movement, an asset and a saved destination line up without parsing prose. ⚠️ networkSymbol has been REMOVED from this block. It was the raw stored value and it disagreed with itself across the estate — 164,192 movements say BEP20 for the same chain 1,614 call BSC, and it also carried values that are not networks (INTERNAL, FIAT_NETWORK) and prose (Dogecoin, XRP Ledger). networkId replaces it and is a stable key. networkName above is the human-readable form. The canonical fields are always present on an EXTERNAL_CRYPTO movement and are null when the chain cannot be resolved, so the shape never changes underneath you.

PaginationMeta

CampoTipoDescripción
pagenumberEj.: 1.
limitnumberEj.: 25.
totalItemsnumberEj.: 100.
totalPagesnumberEj.: 4.

Problem

CampoTipoDescripción
typestringStable problem-type URI. Resolves to docs for this error. Ej.: https://docs.skipo.com/errors/rate_limited.
titlestringShort, human-readable summary (stable, English). Ej.: Rate limit exceeded.
statusnumberHTTP status code. Ej.: 429.
codestringStable machine-readable error code (equals the last path segment of type). Ej.: rate_limited.
retryablebooleanWhether retrying the identical request may succeed. Ej.: true.
detail (opcional)stringHuman-readable, possibly localized detail.
instance (opcional)stringThe request path that produced the error.
traceId (opcional)stringTrace id — joins BigQuery api_request and Cloud Logging.

Volver a la referencia de endpoints. Ver también: Paginación · Errores · Ids y correlación.