Movimientos de la cuenta
Cada crédito o débito sobre una cuenta recaudadora se registra como un movement. Los movimientos son el extracto operativo de la cuenta.
Endpoint
GET /v1/receivable-accounts/{id}/movements
Filtros
| Parámetro | Tipo | Descripción |
|---|---|---|
fromDate | ISO 8601 | Filtra por movementDate >= |
toDate | ISO 8601 | Filtra por movementDate <= (inclusive) |
movementType | enum | CREDIT o DEBIT |
operationType | enum | DEPOSIT, WITHDRAW, TAX_CREDIT, TAX_DEBIT, TAX_ADJUSTMENT_CREDIT, TAX_ADJUSTMENT_DEBIT, ROLLBACK |
minAmount | decimal | Monto mínimo (absoluto) |
maxAmount | decimal | Monto máximo (absoluto) |
counterPartyTaxId | string | CUIT/CUIL de la contraparte |
linkedReceivableId | int64 | Movimientos asociados a un comprobante específico |
unsettledOnly | boolean | Solo movimientos pendientes de liquidación |
sort | string | Default -movementDate. Acepta movementDate, -movementDate, amount, -amount |
page, count | int | Paginación |
Modelo
{
"id": 88123,
"receivableAccountId": 4242,
"amount": 45000.00,
"currencyCode": "ARS",
"movementType": "CREDIT",
"operationType": "DEPOSIT",
"movementDate": "2026-05-15T14:30:00-03:00",
"balanceAfter": 165000.00,
"detail": "Transferencia recibida",
"counterParty": {
"name": "Kiosco Central",
"taxId": "30998888887",
"routingCode": "0000000099887766554433",
"routingType": "CBU"
},
"linkedReceivableId": null,
"linkedSettlementId": null,
"originalMovementId": null,
"rollbackMovementId": null,
"creationDate": "2026-05-15T14:30:01-03:00"
}
Campos
| Campo | Descripción |
|---|---|
movementType | CREDIT (entró plata) o DEBIT (salió). |
operationType | Sub-tipo más específico. DEPOSIT es transferencia entrante, TAX_CREDIT/TAX_DEBIT son retenciones impositivas, ROLLBACK es un reverso. |
balanceAfter | Saldo de la cuenta luego de este movimiento. |
counterParty | Datos del que originó el movimiento (en CREDIT) o destino (en DEBIT). |
linkedReceivableId | Si este movimiento es resultado de una operación sobre un comprobante específico. Generalmente null para depósitos entrantes. |
linkedSettlementId | Si este movimiento es parte de un ciclo de liquidación. |
originalMovementId | Si este movimiento es un ROLLBACK, apunta al movimiento original revertido. |
rollbackMovementId | Si este movimiento fue revertido por otro, apunta al movimiento de reverso. |
El sistema no vincula automáticamente los DEPOSIT entrantes con comprobantes específicos. Si un cliente tiene varias facturas pendientes, no se puede inferir cuál está pagando. La imputación, si el customer la necesita, se hace desde el ERP. Ver Lifecycle de comprobantes.
Reversos (rollback)
Cuando se revierte un movimiento (por ejemplo, una transferencia rechazada por COELSA luego de acreditarse), aparece un nuevo movimiento con:
operationType: ROLLBACKmovementTypeopuesto al original (si el original eraCREDIT, el rollback esDEBIT)originalMovementId: el ID del movimiento revertido- Mismo monto absoluto que el original
El movimiento original también queda actualizado con rollbackMovementId apuntando al rollback. Esto permite rastrear ambos sentidos.
Ejemplo: extracto del último mes
const movements = [];
let page = 1;
while (true) {
const res = await fetch(
`/v1/receivable-accounts/${accountId}/movements?` +
`fromDate=2026-04-01T00:00:00-03:00&toDate=2026-04-30T23:59:59-03:00&` +
`page=${page}&count=200`,
{ headers: { Authorization: `Bearer ${token}` } }
);
if (res.status === 204) break;
const batch = await res.json();
movements.push(...batch);
const total = parseInt(res.headers.get('X-Total-Count'), 10);
if (page * 200 >= total) break;
page++;
}
console.log(`Total movements en abril: ${movements.length}`);
Exports asíncronos
Para volúmenes grandes, conviene usar reportes asíncronos en lugar de paginar. Ver Reportes (próximamente).