Saltar al contenido principal

Ids y correlación

Todo recurso de v2 expone un campo id, y ese mismo valor sirve para volver a consultarlo y para encontrarlo en el libro contable. Esta página es el contrato completo: qué id devuelve cada recurso y cómo saltar de uno a otro.

La regla en una línea

El id de un retiro, depósito o fill es exactamente el valor que su asiento contable publica en source.id.

Por eso nunca necesitas recorrer el libro buscando: filtras por él.

Recursos y sus ids

RecursoidVolver a consultarlo
Retiroid del retiroGET /v2/withdrawals/{id}
Depósitoid del depósitoGET /v2/deposits/{id}
Ordenid de la orden (tu client order id)GET /v2/orders/{id}
Fillid del fillGET /v2/fills?orderId=…
Asiento contableid del asientoGET /v2/ledger/{id}

El asiento contable apunta hacia atrás

Cada entrada de GET /v2/ledger lleva un objeto source que dice qué la causó:

{
"id": "lm_998877",
"source": { "type": "withdrawal", "id": "wd_123" },
"type": "WITHDRAWAL",
"subType": "EXTERNAL_CRYPTO",
"assetSymbol": "USDT",
"amount": "150",
"fee": "0.5",
"total": "150.5",
"balance": "849.5",
"createdAt": "2026-07-09T14:11:05.501Z"
}

source.type es uno de withdrawal, deposit, fill u other, y source.id es el id de ese recurso. Es el mismo patrón que balance_transaction.source de Stripe.

Los saltos que vas a hacer

De un retiro o depósito a sus asientos

GET /v2/ledger?assetSymbol=USDT&sourceId=wd_123

Una sola llamada. sourceId filtra por el mismo valor que el recurso publica como id.

De una orden a todos sus asientos

Una orden se completa con 1..N fills, y cada fill genera asientos. Para no encadenar consultas, el filtro orderId resuelve la cadena entera por ti:

GET /v2/ledger?assetSymbol=CLP&orderId=clord_01H…
Una orden liquida en dos activos

Una conversión mueve dos activos (por ejemplo BTC y CLP), y assetSymbol es obligatorio en el libro contable: selecciona qué pata estás mirando. Para ver ambas, haz una llamada por activo.

De una orden a sus fills

GET /v2/orders/{id}/fills # anidada
GET /v2/fills?orderId={id} # equivalente, filtrando la colección global

Las dos devuelven el mismo recurso. Existen ambas porque Coinbase y Binance también las tienen y cada cliente alcanza una distinta. Ambas paginan por cursor.

De un fill a la orden que lo contiene

El fill trae orderId, y además incrusta el estado acumulado de la orden para que no tengas que releerla después de cada ejecución:

{
"id": "1096473",
"orderId": "clord_01H…",
"sequence": 2,
"side": "BUY",
"market": "BTC-CLP",
"baseAmount": "0.004",
"quoteAmount": "260000.00",
"rate": "65000000.00",
"multiplier": "1",
"onCredit": true,
"executedAt": "2026-07-09T14:07:11.000Z",
"order": {
"status": "PARTIALLY_FILLED",
"filledBaseAmount": "0.008",
"filledQuoteAmount": "520000.00"
}
}

sequence es la posición del fill dentro de su orden, empezando en 1.

Órdenes y fills

Una orden es lo que creas al confirmar una cotización. Un fill es cada ejecución contra ella.

  • Una conversión normal → exactamente un fill.
  • Una orden a crédito (onCredit: true) → varios fills, a medida que se paga la deuda.

Por eso filledBaseAmount puede ir por debajo de baseAmount durante un tiempo, y por eso el webhook fill.created puede llegar varias veces para el mismo orderId.

Convenciones de los importes

ConvenciónQué significa
Magnitudes positivasamount, fee y total son siempre positivos en todos los recursos. La dirección la da el tipo de recurso o el type del asiento, nunca el signo.
balance sí lleva signoEs un estado (el saldo tras el asiento), no un movimiento. No se convierte a magnitud.
MAYÚSCULASstatus, type, subType y side son siempre mayúsculas: FILLED, WITHDRAWAL, EXTERNAL_CRYPTO, BUY.
Decimales como cadenaLos importes viajan como cadenas para no perder precisión. Parséalos con un tipo decimal, nunca con un float.