Skip to content

Quarterly value report

GET
/reports/value
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.

quarter
string
/^\d{4}-Q[1-4]$/

E.g. 2026-Q3; defaults to the current quarter

from
string format: date

With to

to
string format: date

Last day included

The report

Media typeapplication/json
object
organizationName
required
string
baseCurrency
required
string
period
required
object
label
string
from
string format: date
to

Exclusive

string format: date
asOf

Set when the period is not over; balances are as of this day

string | null format: date
generatedAt
string format: date-time
outcomes
required

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
key
additional properties
any
verifiedBenefit
object
key
additional properties
any
recoveryBridge
required

Opening + newlyConfirmed + adjustments − verified − closedUnrecovered = closing, in the base currency

object
key
additional properties
any
exposureBridge
required

Opening + newCandidates − movedToRecovery − dismissed − confirmedNotPursued − usedInLedger + otherChanges = closing. otherChanges holds what the overlap rule moves (an invoice candidate counted once, as its payment).

object
key
additional properties
any
rootCauses
required
Array<object>
object
type
string
recovered
string
prevented
string
topSuppliers
required
Array<object>
object
key
additional properties
any
vatAdjustments
required
object
open
integer
taxAmount
string
unconvertedCount
integer
openRecoveryAging

Present only when the period runs to today

Array<object> | null
object
label
string
amount
string
cases
integer
returnOnSubscription
required

Cumulative to date

object
key
additional properties
any
preventionSteps

Prevention decisions recorded in the period, by step, and recovered or closed cases with no decision today

object
done
integer
notNeeded
integer
byStep
Array<object>
object
action
string
title
string
cases
integer
finishedWithoutDecision
integer
statements

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
received
integer
recovered
string
coverage
object
suppliers
required

Suppliers invoiced in the last year or with a statement on file

integer
covered
required

Of those

integer
coveredSpendPercent

Whole percent (rounded down) of last year’s spend

integer | null
availableQuarters
required
Array<string>

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

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: NOT_FOUND UNAUTHORIZED FORBIDDEN INVALID_REQUEST CONFLICT RATE_LIMITED USAGE_LIMIT_EXCEEDED PROCESSING_FAILED
message
required
string
request_id
required
string

Example

{
"error": {
"code": "NOT_FOUND"
}
}

Missing or invalid API key

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: NOT_FOUND UNAUTHORIZED FORBIDDEN INVALID_REQUEST CONFLICT RATE_LIMITED USAGE_LIMIT_EXCEEDED PROCESSING_FAILED
message
required
string
request_id
required
string

Example

{
"error": {
"code": "NOT_FOUND"
}
}