KPIs

The metrics this group defines, and each one's figure for a month with the target it is measured against.

The names

The endpoint

MethodPathAnswers
GET/api/v1/kpisEvery KPI name the group can ask for

Needs a bearer token and the reference.read scope. It answers names only; a value is read for a company and a month under The values below.

What it answers

{
  "data": [
    { "name": "Cash Balance" },
    { "name": "Current Ratio" },
    { "name": "EBITDA" },
    { "name": "Gross Profit" },
    { "name": "Revenue" }
  ],
  "page": 1, "per_page": 50, "total": 56, "has_more": true
}

A custom KPI of the group's replaces a system metric of the same name, so a name appears once. It is the value a read states as metric, matched without regard to case.

The values

One metric, for one company and one month, with the target it is measured against and the variance between them.

The endpoint

MethodPathAnswers
GET/api/v1/organisations/{organisation}/kpi-values The metric's figure and its target

Needs a bearer token, a credential issued for that company, and the kpis.read scope. The names to ask for are at KPI names.

The parameters

ParameterWhat it does
metricThe KPI name. Required.
periodThe month, Mon-YYYY. Default: the reporting month.

What it answers

GET /api/v1/organisations/149/kpi-values?metric=Revenue&period=Sep-2026

{
  "metric": "Revenue", "period": "Sep-2026",
  "this_month": 63652.0, "this_month_ytd": 756527.0,
  "last_month": 97979.0,
  "change_from_last_month": 34327.0, "change_from_last_month_sign": "-",
  "change_from_last_year": 95906.0, "change_from_last_year_sign": "+",
  "target": 86316.0, "target_ytd": 792745.2, "target_method": 1, "auto_target": 0.2,
  "variance": 22664.0, "variance_sign": "-", "variance_direction": "down",
  "variance_ytd": 36218.2, "variance_ytd_sign": "-", "variance_ytd_direction": "down",
  "is_percentage": false, "progress": 73.74, "progress_ytd": 95.43, "spotlight": "Off Track"
}
FieldWhat it says
this_month, this_month_ytdThe value for the month and for the year to date. A month the ledger does not cover answers 0, which is the figure the screen shows for it.
last_monthThe previous month's value.
change_from_last_month, change_from_last_yearThe size of the change from the previous month and from the same month a year earlier.
change_from_last_month_sign, change_from_last_year_sign +, - or =: which way it moved, read the way the metric reads - + is the better direction.
target, target_ytdThe target the metric is measured against.
target_method, auto_targetHow the target was set: the method the group saved against the metric and the percentage it applies, so a target can be understood without asking the settings screen.
variance, variance_ytdThe size of the difference between the figure and its target.
variance_sign, variance_ytd_sign+, - or =: whether the figure is better (+) or worse (-) than the target. It is not arithmetic - a cost below its target reads +, because that is the good variance.
variance_direction, variance_ytd_directionup, down or eq: the same reading as an arrow, for a screen that draws one.
is_percentageWhether the metric is a percentage, so a figure is presented with the right unit.
progress, progress_ytdThe figure as a percentage of its target.
spotlightOn Track above 100% of target, At Risk from 80%, Off Track from 50%, Critical below - the label the screen shows.

A metric the group does not define answers 404, naming what was asked for.