Documentation Index
Fetch the complete documentation index at: https://docs.rail.cl/llms.txt
Use this file to discover all available pages before exploring further.
Qué es un movimiento
Un movimiento es una transacción individual en una cuenta. Su ID es mov_ + 16 chars hex.
{
"object": "movement",
"id": "mov_6c8d1f3a9e5b2074",
"account_id": "acc_3f8a1c5d9e2b6741",
"amount": -30000,
"currency": "CLP",
"type": "card_payment",
"description": "MERCADOLIBRE CL",
"comment": null,
"reference_id": null,
"pending": false,
"status": "confirmed",
"transaction_date": "2026-06-01T04:00:00+00:00",
"post_date": "2026-06-01T04:00:00+00:00",
"recipient_account": { "holderName": "MERCADOLIBRE CL" },
"sender_account": null
}
Amount con signo embebido
El amount es bigint en minor units con signo:
negativo = egreso (cargo, pago, transferencia salida)
positivo = abono (depósito, refund, transferencia entrante)
Para CLP, 1 peso = 1 minor unit. Para USD/EUR, 1 dólar/euro = 100 minor units (centavos).
// CLP — $170.329 de cargo
{ "amount": -30000, "currency": "CLP" }
// USD — $50.00 de abono
{ "amount": 5000, "currency": "USD" }
Type
Valores posibles:
type | Significa |
|---|
transfer | Transferencia electrónica recibida o emitida |
card_payment | Pago con tarjeta de débito/crédito |
refund | Devolución o reverso |
cash_withdrawal | Retiro de efectivo (cajero) |
service_payment | Pago de servicio (luz, agua, etc) |
salary | Sueldo o ingreso recurrente identificado |
fee | Comisión o cargo bancario |
interest | Intereses |
other | Sin categoría clara |
Status
status | Significa |
|---|
confirmed | Default. Mov contabilizado, definitivo. |
processing | En proceso. Equivalente a pending: true. |
reversed | Reversado por el banco. Su counterparte tiene status: reversed también. |
duplicated | Detectado como duplicado por nuestro guardián anti-duplicados. |
Por default, GET /v1/accounts/{id}/movements filtra a confirmed + pending: false. Para incluir todos: ?confirmed_only=false.
Listar
curl "https://api.rail.cl/v1/accounts/acc_xxx/movements?per_page=100&page=1" \
-H "Authorization: Bearer rail_sk_live_…"
Paginación con header Link RFC 5988 + X-Total-Count. Ver Paginación.
Filtros útiles
| Query param | Comportamiento |
|---|
since=2026-05-01 | Solo movs con post_date >= since. ⚠️ post_date puede ser retroactivo (refunds, back-dated). |
until=2026-06-01 | Solo movs con post_date <= until. |
synced_since=2026-06-01T00:00:00Z | Cursor monótono forward — recomendado para sync incremental. Filtra por synced_at, no por post_date. |
confirmed_only=false | Incluye processing, reversed, duplicated. |
per_page=200 | Hasta 300 por página. Default 30. |
Sync incremental recomendado
Para mantenerte al día sin re-traer todo, usá synced_since:
# Primera sync — traé todo
curl "https://api.rail.cl/v1/accounts/acc_xxx/movements?per_page=200&page=1" \
-H "Authorization: Bearer rail_sk_live_…"
# Sucesivas — solo lo nuevo desde el cursor
curl "https://api.rail.cl/v1/accounts/acc_xxx/movements?per_page=200&synced_since=2026-06-03T12:36:36Z" \
-H "Authorization: Bearer rail_sk_live_…"
Guardá last_sync_at que viene en cada response y usalo como synced_since en la próxima call. Esto te asegura que no perdés movs retroactivos que el banco posteó después de su fecha real.