Quarterly value report
const url = 'https://api.invogi.com/v1/reports/value';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.invogi.com/v1/reports/value \ --header 'Authorization: Bearer <token>'The four outcomes for a period with the two reconciliation bridges
(docs/35_AP_RECOVERY_WORKFLOW_DESIGN.md §6.5). Verified recovery and
prevented loss use the same rules as the overview’s impact for the
same period. Recovery in progress and exposure awaiting action are
balances at the end of the period (today when the period is not over,
shown as period.asOf), rebuilt from dated records; each bridge runs
from the opening to the closing balance. Return on subscription is
cumulative to date. Readable by every role.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”E.g. 2026-Q3; defaults to the current quarter
With to
Last day included
Responses
Section titled “Responses”The report
object
object
Exclusive
Set when the period is not over; balances are as of this day
Verified recovery and prevented loss are flows over the period; recovery in progress and exposure awaiting action are balances at its end. Never added together.
object
object
Opening + newlyConfirmed + adjustments − verified − closedUnrecovered = closing, in the base currency
object
Opening + newCandidates − movedToRecovery − dismissed − confirmedNotPursued − usedInLedger + otherChanges = closing. otherChanges holds what the overlap rule moves (an invoice candidate counted once, as its payment).
object
object
object
object
Present only when the period runs to today
object
Cumulative to date
object
Prevention decisions recorded in the period, by step, and recovered or closed cases with no decision today
object
object
Supplier statements read in the period, verified recovery in the period from cases a statement finding opened, and coverage today (not at the period’s end)
object
object
Suppliers invoiced in the last year or with a statement on file
Of those
Whole percent (rounded down) of last year’s spend
Example generated
{ "organizationName": "example", "baseCurrency": "example", "period": { "label": "example", "from": "2026-04-15", "to": "2026-04-15", "asOf": "2026-04-15" }, "generatedAt": "2026-04-15T12:00:00Z", "outcomes": {}, "verifiedBenefit": {}, "recoveryBridge": {}, "exposureBridge": {}, "rootCauses": [ { "type": "example", "recovered": "example", "prevented": "example" } ], "topSuppliers": [ {} ], "vatAdjustments": { "open": 1, "taxAmount": "example", "unconvertedCount": 1 }, "openRecoveryAging": [ { "label": "example", "amount": "example", "cases": 1 } ], "returnOnSubscription": {}, "preventionSteps": { "done": 1, "notNeeded": 1, "byStep": [ { "action": "example", "title": "example", "cases": 1 } ], "finishedWithoutDecision": 1 }, "statements": { "received": 1, "recovered": "example", "coverage": { "suppliers": 1, "covered": 1, "coveredSpendPercent": 1 } }, "availableQuarters": [ "example" ]}Invalid request
object
object
Example
{ "error": { "code": "NOT_FOUND" }}Missing or invalid API key
object
object
Example
{ "error": { "code": "NOT_FOUND" }}