Skip to content

Turnover Report ​

Returns aggregated turnover, groupable by treating user, insurance service, cost center, customer, billing status, and time period.

The data basis and limitations of this section are described in the section overview — in particular, that these endpoints report on fee note services, not invoices.

Request ​

GET /api/oauth/v2/resource/fee-note-services/turnover

HeaderValue
AuthorizationBearer {access_token}

Query parameters ​

ParameterTypeRequiredDescription
fromstring (ISO date)YesStart of the time range
untilstring (ISO date)YesEnd of the time range
groupBystringNoComma list from treatingUser, insuranceService, costCenter, customer, billStatus, day, week, month, year. At most one time token. Default: insuranceService,month
billStatusstringNoComma-separated list of open, invoiced, ignore, unknown (OR). Any other value returns 400 validation_error
treatingUserIdstring (UUID)NoFilters by treating user
customerIdstring (UUID)NoFilters by customer. Additionally requires the customers scope
offsetintegerNoStart position (default: 0)
limitintegerNoNumber of results (default: 50, max: 200)

Note: groupBy=customer or a set customerId additionally require the customers scope. Without it, the endpoint responds with 403 insufficient_scope.

Note on sorting: Rows come in a stable order — a repeated call with the same filter and page returns the same order. A requested time bucket (day, week, month, year) sorts first, so time series come out chronologically.

Note on deleted patients: Fee note services of deleted patients are not included in turnover.

Response ​

Success (200 OK) ​

json
{
  "data": [
    {
      "period": "2026-03",
      "treatingUser": "6f1c1a2b-3c4d-5e6f-7890-abcdef123456",
      "insuranceService": "3a8b1c2d-3e4f-5061-7283-94a5b6c7d8e9",
      "costCenter": null,
      "customer": null,
      "billStatus": "invoiced",
      "gross": 4820.00,
      "net": 4820.00,
      "quantity": 62.000,
      "count": 58
    },
    {
      "period": "2026-03",
      "treatingUser": "6f1c1a2b-3c4d-5e6f-7890-abcdef123456",
      "insuranceService": null,
      "costCenter": null,
      "customer": null,
      "billStatus": "open",
      "gross": 310.00,
      "net": 310.00,
      "quantity": 4.000,
      "count": 4
    }
  ],
  "meta": { "total": 143, "offset": 0, "limit": 50 }
}

"insuranceService": null is either a dimension you didn't request, or the collective bucket for free-text services without a linked insurance service.

Response fields ​

FieldTypeDescription
dataArrayList of aggregated turnover rows
data[].periodstring | nullTime bucket, format depends on the time token in groupBy (e.g. 2026-03 for month), null if no time token was requested
data[].treatingUserstring (UUID) | nullID of the treating user, null if not requested. Loadable via Get User
data[].insuranceServicestring (UUID) | nullID of the service. null if not requested or the collective bucket for free-text services. No OAuth endpoint to load it, see Conventions
data[].costCenterstring | nullCost center of the service — the "category" of these reports, see terminology. null if not requested
data[].customerstring (UUID) | nullID of the customer, null if not requested. Loadable via Get Customer
data[].billStatusstring | nullBilling status: open, invoiced, ignore, unknown, null if not requested
data[].grossfloatGross amount
data[].netfloatNet amount
data[].quantityfloatSummed quantity
data[].countintegerNumber of underlying fee note services
meta.totalintegerTotal number of groups
meta.offsetintegerCurrent start position
meta.limitintegerNumber of returned entries
Beispiele
bash
curl -X GET "https://my.offisy.at/api/oauth/v2/resource/fee-note-services/turnover?from=2026-01-01&until=2026-12-31&groupBy=insuranceService%2Cmonth&billStatus=beispiel&treatingUserId=b2c3d4e5-f6a7-8901-bcde-f01234567890&customerId=b2c3d4e5-f6a7-8901-bcde-f01234567890&offset=0&limit=50" \
  -H "Authorization: Bearer {access_token}"
Parameter
Zuerst Token anfordern

Possible errors ​

StatusCodeDescription
400validation_errorMissing or invalid from/until, invalid dimension, more than one time token, or time range too long
400validation_errortreatingUserId or customerId is not a valid UUID
400invalid_requestThe API access is not assigned to a user — assign a user to it in the Offisy settings
401invalid_clientInvalid or missing access token
403insufficient_scopeScope reports (with groupBy=customer/customerId, additionally customers) missing
403access_deniedThe owning user of your API access lacks the Abrechnungsleistungen (Verrechnung): Journaling permission
403access_deniedTenancies add-on is active, but no tenancy is accessible to the owning user of your API access (error_description: No tenancy is accessible to this user.)
404not_foundtreatingUserId or customerId does not reference an existing record

Offisy GmbH