Estado de cuenta

Qué debe un cliente a una fecha de corte, desde cuándo y cómo pagarlo, con movimientos, edades y saldo.

estado-de-cuenta, con el diseño premium: qué debe un cliente, desde cuándo y cómo pagarlo.

"statement": { "number": "EC-0012", "cutoffDate": "13-09-2026" },   // number es opcional
"movements": [
  { "number": "FV-0231", "type": "Factura de venta", "date": "10-06-2026", "dueDate": "10-07-2026",
    "daysOverdue": 65, "amount": 4200000, "payments": 0, "balance": 4200000 }
],
"aging": [
  { "label": "61 a 90", "amount": 4200000, "highlighted": true }
],
"totals": { "invoiced": 12700000, "payments": 1100000, "balance": 11600000 },
"payment": { "enlace": "https://…", "textoDelEnlace": "Pagar en línea con PSE" },
"paymentLegend": "Consignar a nombre de…"
  • Nada se calcula aquí. Los días vencidos no salen de las fechas, el saldo de cada movimiento no es el valor menos los abonos, las edades no se reparten a partir de los movimientos y el saldo total no es lo facturado menos lo abonado: todo llega hecho y se imprime como llega.
  • Un movimiento que no tiene abonos, saldo o vencimiento propios —un recibo, una nota crédito— se manda sin esos campos, y las celdas quedan en blanco. Si manda un 0, se imprime $ 0,00.
  • Los tramos con highlighted se destacan con color, borde grueso y negrita, así que se distinguen también impresos en blanco y negro. Qué tramo preocupa lo decide usted.
  • El enlace de pago sale pulsable en el PDF, junto a la leyenda de consignación. Sin ninguno de los dos, la caja no se dibuja.
  • Sin cutoffDate dice «Sin fecha de corte»; sin movimientos, «Sin movimientos»; sin totals.balance, «Sin saldo». Acepta además notes, fields y sideNotes.

Ejemplo: estado-de-cuenta.json.