Skip to content

Team recovery performance (any role)

GET
/recoveries/performance
curl --request GET \
--url 'https://api.invogi.com/v1/recoveries/performance?days=30' \
--header 'Authorization: Bearer <token>'

The AP manager’s view of recovery work. Recovery rate (cash received and credit applied ÷ confirmed amount) and median time to recovery cover cases fully recovered or closed in the last days. Open value, aging, overdue work, supplier-agreed value and unapplied credit are as of today. Cases count as on the Overview (not merged, source finding still confirmed); amounts are in the base currency at each case’s frozen rate, and cases without one are counted in unconvertedCases.

days
integer
default: 90
Allowed values: 30 90 365

Team performance

Media typeapplication/json
object
currency
required

The organization’s base currency

string
>= 3 characters <= 3 characters
window
required
object
days
integer
from
string format: date
to

Today

string format: date
finished
required

Cases fully recovered or closed in the window

object
cases
integer
confirmedAmount
string
verifiedAmount
string
closedUnrecoveredAmount
string
recoveryRate

Percent to one decimal; null when no case finished

number | null
medianDaysToRecovery
required

Case opened to fully recovered

number | null
medianDaysToFirstMoney
required

Case opened to first money back

number | null
open
required
object
cases
integer
amount
string
overdueCases
integer
overdueAmount
string
unassignedCases
integer
agreedAwaitingAmount

Open value on cases where the supplier agreed

string
unappliedCredit
object
cases
integer
amount
string
oldestDays
integer | null
aging
Array<object>
object
label
string
cases
integer
amount
string
byOwner
required

Owners with open cases or cases finished in the window; unassigned last

Array<object>
object
owner
One of:
null
openCases
integer
openAmount
string
overdueCases
integer
finishedCases
integer
recoveryRate
number | null
medianDaysToRecovery
number | null
unconvertedCases
required
integer

Example generated

{
"currency": "example",
"window": {
"days": 1,
"from": "2026-04-15",
"to": "2026-04-15"
},
"finished": {
"cases": 1,
"confirmedAmount": "example",
"verifiedAmount": "example",
"closedUnrecoveredAmount": "example",
"recoveryRate": 1
},
"medianDaysToRecovery": 1,
"medianDaysToFirstMoney": 1,
"open": {
"cases": 1,
"amount": "example",
"overdueCases": 1,
"overdueAmount": "example",
"unassignedCases": 1,
"agreedAwaitingAmount": "example",
"unappliedCredit": {
"cases": 1,
"amount": "example",
"oldestDays": 1
},
"aging": [
{
"label": "example",
"cases": 1,
"amount": "example"
}
]
},
"byOwner": [
{
"owner": {
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"name": "example"
},
"openCases": 1,
"openAmount": "example",
"overdueCases": 1,
"finishedCases": 1,
"recoveryRate": 1,
"medianDaysToRecovery": 1
}
],
"unconvertedCases": 1
}

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"
}
}