Team recovery performance (any role)
GET
/recoveries/performance
const url = 'https://api.invogi.com/v1/recoveries/performance?days=30';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/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.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”days
integer
Responses
Section titled “Responses”Team performance
Media typeapplication/json
object
currency
required
The organization’s base currency
string
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
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
message
required
string
request_id
required
string
Example
{ "error": { "code": "NOT_FOUND" }}