Skip to content

List fee notes ​

Returns a paginated list of all fee notes of the company.

Breaking change: createdAt is now a timestamp

createdAt now returns a full ISO 8601 timestamp with offset (2026-06-01T09:30:00+02:00) instead of a plain date (2026-06-01). If you process the value as a date, strip the time part.

Request ​

GET /api/oauth/v2/resource/fee-notes

HeaderValue
AuthorizationBearer {access_token}

Query parameters ​

ParameterTypeRequiredDescription
offsetintegerNoStart position (default: 0, min: 0)
limitintegerNoNumber of results (default: 50, min: 1, max: 200)
createdSincestring (ISO 8601)NoOnly fee notes created at or after this timestamp (createdAt >=)
createdUntilstring (ISO 8601)NoOnly fee notes created at or before this timestamp (createdAt <=)
statusstringNoComma-separated list (default: all). Allowed values: active, deleted. Invalid value → 400 validation_error. See Conventions for details.

Note: Formats, time zones, sorting, cursor strategy, and the meta.total trap work the same across all filters. See Incremental Sync.

For fee notes, that means the creation timestamp everywhere, not the modification timestamp.

The residual risk of pagination shows up here when a fee note is deleted during the run. See the note on deletions below.

Note on changes and deletions: Fee notes carry neither a modification nor a deletion timestamp. That's why only createdSince and createdUntil exist here. A cancellation, a later invoice assignment, or the deletion of the linked invoice are not detectable through the creation timestamp.

A fee note is deleted together with its invoice. It stays visible via status=deleted (field data[].deleted = true), without the createdSince sync learning about it.

If you need deletions, a periodic full sync with status=deleted is unavoidable. The incremental sync over createdSince does not replace that here.

Response ​

Success (200 OK) ​

json
{
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "sequence": 12,
      "formattedSequence": "HN-2026-0012",
      "stornoReason": null,
      "deleted": false,
      "createdAt": "2026-06-01T09:30:00+02:00",
      "customer": {
        "id": "f0e1d2c3-b4a5-6789-fedc-ba9876543210",
        "firstName": "Anna",
        "lastName": "Muster"
      },
      "invoice": {
        "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901"
      }
    }
  ],
  "meta": {
    "total": 30,
    "offset": 0,
    "limit": 50
  }
}

Response fields ​

FieldTypeDescription
dataArrayList of fee notes
data[].idstring (UUID)Unique ID of the fee note
data[].sequenceinteger | nullSequential fee note number
data[].formattedSequencestring | nullFormatted fee note number
data[].stornoReasonstring | nullReversal reason
data[].deletedbooleantrue if the fee note is deleted (together with its invoice)
data[].createdAtstring (ISO 8601) | nullCreation timestamp
data[].customerobject | nullAssigned customer
data[].customer.idstring (UUID)Customer ID
data[].customer.firstNamestringFirst name
data[].customer.lastNamestringLast name
data[].invoiceobject | nullLinked invoice (UUID reference only)
data[].invoice.idstring (UUID)UUID of the linked invoice
meta.totalintegerTotal number of fee notes
meta.offsetintegerCurrent start position
meta.limitintegerNumber of returned entries

Note on tenancies: If your company uses the Tenancies add-on, the list returns only fee notes from tenancies the owning user of your API access has access to and where they hold the Rechnungen: Anzeigen permission. meta.total counts only those records. Details: Conventions.

Beispiele
bash
curl -X GET "https://my.offisy.at/api/oauth/v2/resource/fee-notes?offset=0&limit=50&createdSince=beispiel&createdUntil=beispiel&status=all" \
  -H "Authorization: Bearer {access_token}"
Parameter
Zuerst Token anfordern

Possible errors ​

StatusCodeDescription
400validation_errorA timestamp filter contains an invalid value
400validation_errorstatus contains an invalid value
401invalid_clientInvalid or missing access token
403insufficient_scopeScope invoices not present

Offisy GmbH