Skip to main content

Format

  • JSON with camelCase field names.
  • Dates as yyyy-MM-dd, timestamps as ISO 8601 in UTC.
  • Amounts in kroner as decimal numbers with two decimals. currency is always NOK in v1.
  • VAT codes are the SAF-T standard codes. For sales: 3 = 25 %, 31 = 15 %, 33 = 12 %, 5 = exempt, 6 = outside the VAT Act, 7 = no VAT treatment, 52 = export.

Errors

Every error from /v1 has the same shape:
code is stable and safe to build logic on. message is an English explanation for developers and may change. Some errors also include details with more information. Validation errors list the fields that are wrong:

Errors any endpoint can return

An ID from another company, or from the other environment, always returns 404, never 403. The API does not reveal that something exists elsewhere.

Idempotency

Every POST requires the Idempotency-Key header. Use a new UUID for each action. If the network fails and you don’t know whether a call went through, send the same call again with the same key. Nothing happens twice.
Keys belong to one client in one environment and are kept for 7 days. After that, the same key counts as a new call. The exception is payments: a payment with the same key is never recorded twice, however old the key is.
Answers in the 4xx range are stored too. If you get 409 company-not-verified when sending an invoice, for example, use a new key when you retry after the company has been verified.

Paging

Lists are split into pages. Use page (from 1) and pageSize (1 to 100, default 20, 50 for journal entries).
Keep going until hasMore is false. If new rows arrive while you page, later pages can shift by one. To keep another system in sync, use updatedSince on invoices instead and fetch what has changed since last time.