Cuatro saldos virtuales independientes
Cada cuenta mantiene cuatro saldos virtuales, uno por moneda. Son totalmente independientes entre sí: nunca se mezclan ni se convierten automáticamente.GET /v1/balances devuelve siempre los cuatro (con ceros si no has operado
esa moneda), como strings decimales:
Internamente cada monto se almacena como entero en la unidad mínima de su
moneda (micro-USDT, satoshis, micro-gramos) y se calcula con aritmética
racional exacta. Nunca hay floats ni errores de redondeo acumulados.
Elige desde qué saldo pagas
Los payouts y las comisiones de servicios (KYC, creación de wallets, banking) pueden debitarse desde cualquiera de tus cuatro saldos. El pipeline de pricing no cambia: la operación se cotiza en USDT como siempre, y al final el total se traduce al asset elegido con el precio efectivo de settlement del momento.- Predeterminado por cuenta:
PUT /v1/settlementcon{"default_settlement_asset": "BTC"}. Desde ahí, todo payout y toda comisión de servicio sale del saldo BTC (si alcanza; no hay cascadas a otros saldos). - Override por operación: envía
settlement_assetenPOST /v1/payouts(o en el confirm de QR) para pagar esa operación puntual desde otro saldo, sin tocar el predeterminado.
El bloque
settlement de GET /v1/rates muestra el precio efectivo por
asset (spread incluido) para estimar antes de operar, y la respuesta del
payout registra settlement_asset, settlement_amount y
settlement_rate para auditoría.
available y held
Cada saldo tiene sus dos contadores:
Cuando creas un payout o retiro, el débito (
monto + comisión) sale de
available y queda en held hasta que la operación llega a estado final:
completed→ el hold se consume; el dinero salió.failed→ se reembolsa el débito completo (monto + comisión) aavailable.
Conversión FX (fiat ↔ USDT)
Las operaciones fiat se convierten a USDT con las tasas de tu cuenta al momento de ejecutar (las mismas que devuelveGET /v1/rates, base USD):
rate para payouts y payin_rate para payins. La conversión redondea
hacia arriba en los débitos y hacia abajo en los abonos, con una
diferencia máxima de 1 micro-USDT.
Ejemplo de un payout de 50.000 CLP con tasa 950.25:
payin_rate 955.10:
fx_rate) para auditoría.
Precios de referencia y de settlement
GET /v1/rates incluye un bloque asset_prices con el precio USD de
referencia de cada moneda (BTC por unidad, GOLD por gramo; USDT y USDC
valen 1 por convención), para valorizar tus saldos en pantalla, y un bloque
settlement con el precio efectivo al que se valoraría tu saldo si
pagas una operación desde ese asset (spread incluido):
settlement_grade: true indica que el precio está lo bastante fresco para
ejecutar operaciones; si baja a false, los pagos desde ese asset
responden 503 pricing_unavailable hasta que el precio vuelva.
Ledger inmutable
Cada movimiento genera una entrada inmutable con saldo resultante (balance_after) en la moneda del movimiento. Tu historial completo
está en GET /v1/movements (filtra por moneda con ?asset=):
/v1/movements, /v1/payouts, /v1/payins,
/v1/crypto/transactions, /v1/banking/operations) aceptan paginación
(page, page_size hasta 200) y filtros de fecha from/to
(YYYY-MM-DD, UTC, inclusive).
Estados de operación
Payouts y retiros crypto siguen el mismo ciclo: Los estados finales (completed/failed) llegan por
webhook; no es necesario hacer polling.