Skip to main content

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:
typeSignifica
transferTransferencia electrónica recibida o emitida
card_paymentPago con tarjeta de débito/crédito
refundDevolución o reverso
cash_withdrawalRetiro de efectivo (cajero)
service_paymentPago de servicio (luz, agua, etc)
salarySueldo o ingreso recurrente identificado
feeComisión o cargo bancario
interestIntereses
otherSin categoría clara

Status

statusSignifica
confirmedDefault. Mov contabilizado, definitivo.
processingEn proceso. Equivalente a pending: true.
reversedReversado por el banco. Su counterparte tiene status: reversed también.
duplicatedDetectado 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 paramComportamiento
since=2026-05-01Solo movs con post_date >= since. ⚠️ post_date puede ser retroactivo (refunds, back-dated).
until=2026-06-01Solo movs con post_date <= until.
synced_since=2026-06-01T00:00:00ZCursor monótono forward — recomendado para sync incremental. Filtra por synced_at, no por post_date.
confirmed_only=falseIncluye processing, reversed, duplicated.
per_page=200Hasta 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.