Aging

Explain aging with invoice installments

Current installment-level aging in the workspace timezone, read from the PAYMENT SCHEDULE rather than the invoice header. A row counts when the installment is live, still owes money, is not closed in the source, and has a due date; removed and retired records never count. Only an invoice the ERP has FINALISED counts: a draft, an invoice awaiting approval, or a voided or deleted document is not a receivable, whatever amount it carries. collectible on each row says whether Finero can act on it. Balances are the maintained ERP/Finero reconciled figures, aged by due date: today or future, 1–30, 31–60, 61–90, or over 90 days. Absent by design: an installment with NO due date, which cannot be aged, and a CREDIT balance, which Finero never allocates against a debt. No historical reconstruction or FX. Totals cover all matching rows, per currency. Summary aggregates into totals and carries NEITHER data nor pagination: it is not a list. Customer and installment lists carry both. Use customer_key and bucket for drilldown. Cursors require unchanged query and report revision; restart on invalid_cursor. Invoice-summary due filters select whole invoices, not installment aging.

Available to admin and readonly API keys (no side effects).

get/v1/aging/installments

Request

  • Base URL: https://api.getfinero.com/functions/v1/api
  • URL: https://api.getfinero.com/functions/v1/api/v1/aging/installments
  • Auth: HTTP bearer

Query parameters

currencystring

Currency code, or UNKNOWN for missing currency. Omit for separate totals per currency; never sum currencies.

searchstring

Literal, case-insensitive customer name or number search across the full report.

customer_keystring

Stable key returned by customer aging: customer UUID, or unassigned:invoice UUID. Never group customers by name.

bucket'current' | 'days_1_30' | 'days_31_60' | 'days_61_90' | 'over_90'

Installment bucket: current includes today; 1–30, 31–60, 61–90, over 90 are disjoint. The report holds positive balances only: an installment with no due date, or a credit balance, is not in it at all.

overdue_onlyboolean

Only positive balances with invoice or installment due dates before the workspace's current business day.

sort'overdue_desc' | 'outstanding_desc' | 'customer_asc'

Customer ordering, default overdue_desc. Money ranks WITHIN a currency, never across two: rows group by currency, largest first inside each — filter by currency to rank one book. Breakdown always orders by due date, invoice and installment; unknown dates last.

limitinteger

Rows per page, default 50, maximum 100. Totals cover all matching rows.

cursorstring

Return next_cursor unchanged, with identical filters and limit. Do not parse or build one — the format may change. Restart without it on invalid_cursor.

Response

Success

report_datestring date required

Current business day in workspace timezone; not a historical balance date.

timezonestring required
generated_atstring date-time required
balance_basis'finero_reconciled_current' required

Current maintained invoice or installment balance after existing ERP/Finero reconciliation. Includes debt Finero cannot currently collect, whatever blocks it: collectible on each row says whether it can be acted on. Always positive: a credit balance is not reported here, and Finero never nets one against a debt. No FX or historical reconstruction.

revisionstring required

Content hash of the rows behind this answer. It changes whenever they do, in every mode, so it is usable as a change token; a cursor also carries it, which is how a paged walk detects that the report moved underneath it.

currenciesstring[] required

The workspace's currencies, not this response's — a filter never removes one. Empty totals beside a full list means nothing matched, not that nothing is owed.

data_updated_atstring date-time nullable required

Latest source record change, not proof that the ERP is fully synchronized.

Changes

No recorded changes to this operation across all 1 revision of this API.