KLARA API documentation
Integrate accounting, articles, customers, payroll and time tracking directly with KLARA business software. Everything on this site is about KLARA only.
Getting started
- Prerequisites
An active KLARA account with a company set up, a user role that allows managing users, and an HTTP client. HTTP/1.0 is no longer supported, so use HTTP/1.1 or HTTP/2.
- Create an API key in KLARA
Go to Benutzer, add a new API key, give it a name and assign at least one KLARA user role. Suggested naming convention:
integration-payroll-prod. - Choose roles and permissions
Assign only the roles your use case needs. Any user holding that role can authenticate with the key, and the role cannot be changed afterwards, so pick it deliberately. See Roles & permissions.
Which role does this guide need?The calls below require
ARTICLE_READ_ONLY. These roles carry it: Zeit- und Materialrapporte, Online Terminbuchung, Mitarbeiter und Lohn, Kundenbeziehungen, Administrator, External user.Zeit- und Materialrapporte is the narrowest of them, so it is the least privilege choice for working through this page. Watch out for one that sounds right but is not: Accountant does not hold
ARTICLE_READ_ONLY, so it cannot run the first call. - Set up authentication
Send the key as an
X-API-KEYheader, or obtain a bearer token via the token flow. See Authentication. - Make your first API call
List your articles. This is a read-only request that touches no data.
curl -X GET "https://api.klara.ch/core/latest/articles" \ -H "X-API-KEY: $KLARA_API_KEY" \ -H "Accept: application/json"
A successful call returns
200with a JSON array. If you get401, check the header name and that the key is assigned to a role. See Authentication.This example only reads, which is deliberate: there is no separate test environment, so every call works on your live data. See Environments.
- Where to go next
Browse the reference by domain, or read the guides on errors, pagination and versioning.
API basics
Everything you need once, so you never have to guess again.
API routes
All endpoints live on https://api.klara.ch. Paths in this reference are relative and
must be combined with the host:
GET /core/v1/invoices/42 → https://api.klara.ch/core/v1/invoices/42
Three prefixes are in use. /core/v1 holds accounting, finance and payroll,
/core/v2 holds company and individual profiles, and /core/latest still
holds articles, customers and authentication.
Path prefixes and what is current
Three prefixes are in use. /core/v1 and /core/v2 are the current ones.
/core/latest is older and mixed: some endpoints live only there and are perfectly
current, others are superseded.
/core/latest operations stop answering on 14 August 2027
24 operations carry deprecated in the source contract: 20 in accounting, 2 in bookings, 1 in bank-reconciliation, 1 in vat-clearing-reports. They are not in the specification published here, and they carry a sunset date in the source contract: on 14 August 2027, they answer 410 Gone instead of returning data. Until then they still respond, so an existing integration does not break today, but the migration has a deadline. New work must use the current path.
| Superseded | Use instead |
|---|---|
GET /core/latest/accounting/accounts | /core/v1/accounting/accounts |
GET /core/latest/accounting/accounts/account-displaying | /core/v1/accounting/accounts/account-displaying |
GET /core/latest/accounting/accounts/by-code/{accountCode} | /core/v1/accounting/accounts/by-code/{accountCode} |
GET /core/latest/accounting/booking-types | /core/v1/accounting/booking-types |
GET /core/latest/accounting/business-case-templates | /core/v1/accounting/business-case-templates |
GET /core/latest/accounting/business-case-templates/{businessCaseTemplateId} | /core/v1/accounting/business-case-templates/{businessCaseTemplateId} |
GET /core/latest/accounting/business-cases | /core/v1/accounting/business-cases |
GET /core/latest/accounting/business-cases/v2 | /core/v1/accounting/business-cases/v2 |
GET /core/latest/accounting/business-cases/{businessCaseId} | /core/v1/accounting/business-cases/{businessCaseId} |
GET /core/latest/accounting/companies/current | /core/v1/accounting/companies/current |
GET /core/latest/accounting/companies/current/business-case-templates | /core/v1/accounting/companies/current/business-case-templates |
GET /core/latest/accounting/companies/current/financial-years | /core/v1/accounting/companies/current/financial-years |
GET /core/latest/accounting/currencies/exchange-rate | /core/v1/accounting/currencies/exchange-rate |
GET /core/latest/accounting/master-vats | /core/v1/accounting/master-vats |
GET /core/latest/accounting/master-vats/current | /core/v1/accounting/master-vats/current |
GET /core/latest/accounting/master-vats/{masterVatId} | /core/v1/accounting/master-vats/{masterVatId} |
GET /core/latest/accounting/vat-profile | /core/v1/accounting/vat-profile |
GET /core/latest/accounting/vat-suggestions | /core/v1/accounting/vat-suggestions |
GET /core/latest/accounting/vat-types | /core/v1/accounting/vat-types |
GET /core/latest/accounting/vat-types/{vatTypeId} | /core/v1/accounting/vat-types/{vatTypeId} |
GET /core/latest/bank-reconciliation/open-positions | /core/v1/bank-reconciliation/open-positions |
POST /core/latest/bookings | /core/v1/bookings |
PUT /core/latest/bookings/{id}/documents | /core/v1/bookings/{id}/documents |
POST /core/latest/vat-clearing-reports/{year}/{quarter} | /core/v1/vat-clearing-reports/{year}/{quarter} |
Replacing /core/latest/ with /core/v1/ in the path is the whole migration. Request and response are unchanged.
HTTP verbs
| Verb | Used for | Endpoints |
|---|---|---|
| GET | Retrieving resources | 71 |
| PUT | Replacing a resource completely | 10 |
| POST | Creating resources, and some actions such as /send | 26 |
| DELETE | Removing a resource | 7 |
114 endpoints in total, which is the same number as in the reference below and in the downloadable specification.
The KLARA API does not use PATCH. To change part of a resource, send a complete
PUT. Read the current state first if you do not hold it.
Headers
| Header | Value | When |
|---|---|---|
X-API-KEY | your API key | API key authentication |
Authorization | Bearer <JWT> | Token authentication |
Accept | application/json |
Almost everywhere. Three endpoints return binary or PDF instead, see below |
Content-Type | depends on the endpoint | On any request with a body. Most take application/json, the token
endpoints take application/x-www-form-urlencoded and the upload
endpoints take multipart/form-data, see below |
Accept-Language | de-CH, fr-CH,
it-CH or en |
Optional, on the endpoints that return translated labels |
Media types
Request bodies
Send the matching Content-Type. Form-encoded endpoints reject a JSON body, which is the most common reason a first token request fails.
| Media type | Endpoints | Which ones |
|---|---|---|
application/json | 23 | every endpoint that has one |
application/x-www-form-urlencoded | 4 | POST /core/latest/generic-tokenPOST /core/latest/tenantsPOST /core/latest/tokenPOST /core/latest/token/by-microsoft |
multipart/form-data | 3 | POST /core/latest/articles/{article-id}/imagesPOST /core/latest/companies/{company-id}/documentsPUT /core/latest/articles/{article-id}/images/{image-id} |
Responses
Ask for what the endpoint returns. Accept: application/json is correct almost everywhere, but not for the binary and PDF responses below.
| Media type | Endpoints | Which ones |
|---|---|---|
application/json | 114 | every endpoint that has one |
application/octet-stream | 2 | GET /core/latest/articles/{article-id}/images/{image-id}POST /core/latest/payroll-interface-file |
application/pdf | 1 | POST /core/v1/invoices/{id}/printed-document |
What an error body contains
The specification declares 533 error responses on 114 operations. Every one of them declares a body, so you can generate a type for the error case and read the code and the uuid from it.
| Schema | Fields | Error responses | Operations |
|---|---|---|---|
ErrorMessage | code, createdTime, detail, message, uuid | 514 | 114 |
ErrorResponse | error, error_description | 19 | 5 |
The OAuth-style pair error and error_description is declared on 5 operations:
GET /core/v2/tenants/companiesPOST /core/latest/subscriptionsPOST /core/latest/tenantsPOST /core/v2/tenants/companiesPUT /core/v2/tenants/companies
It is not the shape of the authentication endpoints as a group. What the authentication endpoints declare, per endpoint and per status, is listed under Authentication. That listing is the binding one; do not generalise from this table to them.
Two of the entries above are not the application speaking. A 429 body comes from
the gateway, not from the API, so it is outside this contract and may look like none of these
shapes. And where a status declares no body, a gateway may still add one; that too is outside
the contract.
The contract names 39 error codes of its own, in the code field of the error body:
| Code | Status | Meaning | Where |
|---|---|---|---|
account.unknown | 404 | No account with this number exists in the chart of accounts. | 2 operations |
auth.credentials_missing | 401 | Neither an Authorization: Bearer header nor an API key header was present on the request. | 3 operations |
balancesheet.date_invalid | 400 | date was missing or not an ISO date of the form yyyy-MM-dd, or compare-date was not an ISO date of that form. | 1 operation |
banktransaction.booking_date_invalid | 400 | booking-date-from or booking-date-to was not an ISO date of the form yyyy-MM-dd, or booking-date-to was before booking-date-from. | 1 operation |
booking.amount_range_invalid | 400 | amount-to was below amount-from. | 1 operation |
booking.amount_zero | 400 | grossAmount was zero. The Booking Workflow does not book a document of zero; a negative amount is accepted for a correction. | 1 operation |
booking.booking_date_invalid | 400 | booking-date-from or booking-date-to was not an ISO date of the form yyyy-MM-dd, or booking-date-to was before booking-date-from; for a document booking, bookingDate or booking-date was not an ISO date of that form. | 3 operations |
booking.business_case_id_invalid | 400 | businessCaseId was set but is not a numeric business case id. Leave it empty when creating a booking; use businessCase for a label. | 1 operation |
booking.due_date_invalid | 400 | dueDate was not an ISO date of the form yyyy-MM-dd. | 1 operation |
booking.payment_date_invalid | 400 | paymentDate was not an ISO date of the form yyyy-MM-dd. | 1 operation |
booking.payment_date_missing | 400 | The chosen payment option has a payment date (bank account, card, cash register, cashless payment, transfer account) and paymentDate was not sent. | 1 operation |
booking.service_period_invalid | 400 | servicePeriodFrom or servicePeriodTo was not an ISO date of the form yyyy-MM-dd, only one of them was sent, or servicePeriodTo was before servicePeriodFrom. | 1 operation |
booking.status_not_allowed | 400 | bookingStatus was neither BOOKED nor PLANNED. | 1 operation |
booking.unknown | 404 | No booking with this id exists in the caller's company. | 1 operation |
businesscase.field_not_offered | 400 | A value was sent that the chosen template and payment option do not have (text, servicePeriodFrom, dueDate, paymentPurpose or internalComment). The Booking Workflow does not show that field for this choice; the message names it. | 1 operation |
businesscase.partner_unknown | 404 | No customer or supplier with partnerId exists in the caller's company. | 1 operation |
businesscase.payment_group_not_offered | 400 | The business case template has no already paid option for the payment group, or the group is not available for the company (as in the Booking Workflow, for example EMPLOYEE without employees). | 2 operations |
businesscase.payment_source_unknown | 404 | paymentSourceId was missing or is not one of the sources listBusinessCasePaymentSourcesV1 returns for this template, payment group and booking date. | 1 operation |
businesscase.payroll_date_unknown | 400 | payrollDate was missing for EMPLOYEE or is not one of the payroll dates of the employee. | 1 operation |
businesscase.template_not_supported | 400 | The business case template is not offered by the Booking Workflow for the booking date, or it needs input this operation does not take (asset purchase, current account, transfer account, tax and social insurance templates). The message names the missing input. | 1 operation |
businesscase.vat_entry_unknown | 400 | vatCaseId or vatRateId was missing on a VAT template, or is not one of its entries, or the rate does not belong to the case, or the rate is valid neither on bookingDate nor within the service period. | 1 operation |
document.archive_not_supported | 400 | The document is stored in the KLARA eArchive. bookDocumentAsPaidV1 does not book eArchive documents yet; they are booked in the web app. | 1 operation |
document.not_in_booking_queue | 409 | The document is not waiting in the booking queue, for example because it is already booked. | 1 operation |
document.unknown | 404 | No document with this id exists in the caller's company. | 1 operation |
invoice.id_must_be_zero | 400 | The request body carried a non-zero id. This operation only creates invoices; use PUT /core/v1/invoices to modify an existing one. | 1 operation |
invoice.vat_code_missing | 400 | At least one orderItems[] entry set VAT on vatType, vatCase or the top-level vatCode while leaving vat.vatCode empty. Only vat.vatCode is stored, so that line would have been booked at 0%. Move the code to vat.vatCode, or send "0" ("No VAT") for a position that genuinely carries none. | 2 operations |
invoice.vat_rate_mismatch | 400 | At least one orderItems[] entry sent a vat.rate that is not the rate of its vat.vatCode. The booking always uses the code's rate, so the invoice document would state a different percentage than the accounting record. Send the matching rate, or omit vat.rate and let the server fill it in. | 2 operations |
kpi.date_invalid | 400 | date-from or date-to was missing or not an ISO date of the form yyyy-MM-dd with a year from 0001, or date-to was before date-from; for getSpendingsAndEarningsV1 also when the comparison period was incomplete, not of that form or reversed, or the default comparison period would start before the year 0001. | 2 operations |
ledger.account_range_invalid | 400 | account-to was below account-from. | 1 operation |
openposition.reference_date_invalid | 400 | reference-date was not an ISO date of the form yyyy-MM-dd. Omit it to use today. | 1 operation |
partneramounts.date_invalid | 400 | to-date was not an ISO date of the form yyyy-MM-dd. | 1 operation |
profitandloss.date_invalid | 400 | date-from or date-to was missing or not an ISO date of the form yyyy-MM-dd, date-to was before date-from, or the comparison period was incomplete, not of that form or reversed. | 1 operation |
request.search_key_unsupported | 400 | search-key was sent to an operation that has no text search. | 2 operations |
request.sort_direction_unsupported | 400 | sort-direction was sent with the direction an operation with a fixed order does not have. The message names the available direction. | 3 operations |
request.sort_field_invalid | 400 | sort-field was not one of the values the operation documents. The message lists the accepted values. | 7 operations |
statement.booking_type_invalid | 400 | An entry of booking-types was not one of the published booking types. | 2 operations |
statement.date_invalid | 400 | date-from or date-to was not an ISO date of the form yyyy-MM-dd, or date-to was before date-from. | 2 operations |
statement.reference_invalid | 400 | reference was not of the form TYPE:id or SUB_ACCOUNT:category:id with a type, category and id as published in references of getBookingV1. | 2 operations |
statement.vat_filter_invalid | 400 | An entry of vat was not none, a VAT case id, or a VAT case id and a VAT rate id separated by a colon. | 2 operations |
That list is not exhaustive and is not meant to be: a failure detected by a downstream service carries that service's own code. Branch on the HTTP status, treat an unknown code as a generic error of that status, and log the code and the uuid for a support request.
Errors
Most error responses use this shape:
{
"uuid": "b3f1c8e2-...",
"createdTime": "2026-07-30T09:12:44Z",
"code": "VALIDATION_FAILED",
"message": "Human readable description"
}
A small group of endpoints uses the OAuth-style shape instead. Which ones is listed in the table above, and the authentication endpoints are covered separately under Authentication.
{ "error": "invalid_grant", "error_description": "Bad credentials" }
The uuid identifies one specific occurrence. Include it in support requests.
It is the fastest route to an answer.
The field detail still appears in some responses but is deprecated.
Do not build on it.
OpenAPI specification
llms.txt, an index in Markdown that lists every chapter of this documentation and every area of the reference as a separate Markdown file. Built in the same run as this page, from the same source. Useful for coding assistants, retrieval and anything that would otherwise parse the HTML.Authentication
The KLARA API accepts two mechanisms. Most endpoints accept either.
| Mechanism | How | Best for |
|---|---|---|
apiKeyAuth | Header X-API-KEY |
Server-to-server integrations bound to one company |
bearerAuth | Header Authorization: Bearer <JWT> |
User-context flows, multi-tenant tools |
Token flow
A KLARA user can belong to several tenants. Resolve the tenant first, then request a token.
POST /core/latest/tenants # returns tenant id + company id POST /core/latest/token # grant_type: password | refresh_token | token_exchange
Content-Type: application/x-www-form-urlencoded. Sending JSON is the
most common reason a first token request fails. Full media type list under
Requests and responses.
Which fields each grant needs
The specification does not mark any of these form fields as required, so the table below is
taken from the endpoint descriptions rather than from the schema. Treat it as the working
contract and expect 400 if a field is missing.
| Endpoint | grant_type | Required fields | Returns |
|---|---|---|---|
POST /core/latest/token | password |
username, password, tenant_id,
company_id |
Access token scoped to one company, plus refresh token |
refresh_token | refresh_token |
A new access token without re-sending credentials | |
token_exchange |
subject_token, audience |
OAuth 2.0 Token Exchange, RFC 8693. Pass subject_token as the raw upstream
token value, without the Bearer prefix. The only
audience value the specification documents is cossa | |
POST /core/latest/generic-token |
password | username, password |
Access token for the user, not bound to a company |
refresh_token | refresh_token |
A new access token | |
POST /core/latest/token/by-microsoft | not applicable | microsoft_access_token, tenant_id |
System token |
POST /core/latest/tenants | not applicable | username and password, or
access_token |
The user's tenants with their tenant and company ids |
Which one do I use? /core/latest/token returns a token bound to one tenant
and company, which is what you want for a normal integration.
/core/latest/generic-token takes no tenant or company and returns a token for the
user alone. If you are unsure, use /core/latest/token.
Complete example, password grant
curl -X POST "https://api.klara.ch/core/latest/tenants" \ -H "Content-Type: application/x-www-form-urlencoded" \ --data-urlencode "username=$KLARA_USER" \ --data-urlencode "password=$KLARA_PASSWORD" # → pick the tenant id and company id you want to work with curl -X POST "https://api.klara.ch/core/latest/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ --data-urlencode "grant_type=password" \ --data-urlencode "username=$KLARA_USER" \ --data-urlencode "password=$KLARA_PASSWORD" \ --data-urlencode "tenant_id=$TENANT_ID" \ --data-urlencode "company_id=$COMPANY_ID" # use the access_token from the response on any other endpoint curl -X GET "https://api.klara.ch/core/v1/customers?limit=10" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Accept: application/json"
Refreshing
curl -X POST "https://api.klara.ch/core/latest/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ --data-urlencode "grant_type=refresh_token" \ --data-urlencode "refresh_token=$REFRESH_TOKEN"
Endpoints that need no authentication
4 endpoints require no authentication, because they are how you obtain a token in the first place. Everything else in this reference accepts either an API key or a bearer token, and no endpoint accepts only one of the two.
- POST
/core/latest/generic-token: Generate tokens to use KLARA specific endpoint - POST
/core/latest/tenants: Returns all tenants of a user - POST
/core/latest/token: Generate tokens to access other KLARA core endpoints - POST
/core/latest/token/by-microsoft: Exchange Microsoft access token for system token
Keeping your API key safe
An API key authenticates as a role inside your company. Treat it like a password.
- One key per use case. Name it so you can identify it later, for example
integration-payroll-prod. When something goes wrong you can revoke one integration instead of all of them. - Never in client-side code. Not in a browser, not in a mobile app, not in anything a user can read. The key belongs on your server.
- Never in a repository. Use environment variables or a secret manager. A key committed once stays in the Git history even after you delete the line.
- Separate keys for development and live operation. There is only one environment, so the key name is what tells them apart. Delete the development key when you go live.
- Rotate on staff changes. Anyone holding the assigned role can use the key. When someone leaves the team, rotate.
- Revoke what you no longer use. Delete keys under Benutzer in KLARA as soon as an integration is retired.
What the platform does and does not do for you
| Question | Answer |
|---|---|
| Do keys expire? | No. A key stays valid until someone deletes it |
| Can you revoke one yourself? | Yes, with immediate effect. In KLARA under Benutzer, panel Public API Key Management. A company administrator does this without support |
| Can you see whether a key is in use? | Yes. The same panel shows a last used timestamp per key. One timestamp, not a call-by-call log |
| How many keys may a company create? | No limit |
| Can you change the role of an existing key? | No. The role is fixed when the key is created and there is no edit path. To change it, create a new key and delete the old one |
Roles & permissions
An API key is linked to one or more KLARA roles. Any user holding that role can use the key to authenticate for that company. You create and manage keys under Benutzer in KLARA.
What each role reaches
A KLARA business account offers nine assignable roles, plus Object manager and myKLARA user behind a feature switch and Personal dossier with a Spay subscription. Eight of them matter for the API. The figures below count how many of the documented endpoints each one can call.
| Role in KLARA | Technical name | Endpoints reachable, of 114 |
|---|---|---|
| Administrator | company_administrator | 95 |
| External user | external_user | 95 |
| Kundenbeziehungen | customer_relationship_manager | 77 |
| Buchhalter | accountant | 44 |
| Mitarbeiter und Lohn | payroll_specialist | 35 |
| Online Terminbuchung | booking | 24 |
| Zeit- und Materialrapporte | reporter | 21 |
| Objektmanager | object_manager | 13 |
Administrator and External user reach everything, which is exactly why neither belongs on an integration key unless the integration genuinely needs everything.
Which role carries which permission
Eighteen permissions are in use across the documented endpoints. The Endpoints column counts how many of them check that permission. A tick means the role grants it.
| Permission | Endpoints | Administrator | External user | Mitarbeiter und Lohn | Buchhalter | Kundenbeziehungen | Zeit- und Materialrapporte | Online Terminbuchung | Objektmanager |
|---|---|---|---|---|---|---|---|---|---|
ARTICLE | 21 | ✓ | ✓ | – | – | ✓ | – | – | – |
FINANCE | 20 | ✓ | ✓ | – | – | ✓ | – | – | – |
ACCOUNTING | 13 | ✓ | ✓ | – | ✓ | – | – | – | – |
ARTICLE_READ_ONLY | 7 | ✓ | ✓ | ✓ | – | ✓ | ✓ | ✓ | – |
COMPENSATION | 4 | ✓ | ✓ | ✓ | ✓ | ✓ | – | ✓ | – |
ACCOUNTING_GET_MASTER_VAT | 3 | ✓ | ✓ | ✓ | ✓ | ✓ | – | – | – |
FINANCE_GET_CUSTOMER | 3 | ✓ | ✓ | – | ✓ | ✓ | – | – | – |
ACCOUNTING_GET_BUSINESS_CASE_TEMPLATE | 2 | ✓ | ✓ | ✓ | ✓ | – | – | – | – |
FINANCE_COMPANY_GET_VAT | 2 | ✓ | ✓ | ✓ | ✓ | ✓ | – | – | – |
ACCOUNTING_GET_OPEN_POSITION | 1 | ✓ | ✓ | – | ✓ | ✓ | – | – | – |
ACCOUNTING_INTERFACE | 1 | ✓ | ✓ | ✓ | – | – | – | – | – |
COMPENSATION_COMPANY_INFO | 1 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
COMPENSATION_TIME_TRACKING | 1 | ✓ | ✓ | ✓ | – | – | ✓ | – | – |
FINANCE_BANK_ACCOUNT | 1 | ✓ | ✓ | ✓ | ✓ | ✓ | – | – | – |
FINANCE_COMPANY_VAT | 1 | ✓ | ✓ | ✓ | ✓ | – | – | – | – |
FINANCE_CREATE_CUSTOMER | 1 | ✓ | ✓ | – | – | ✓ | – | – | – |
FINANCE_GET_INVOICE | 1 | ✓ | ✓ | – | ✓ | ✓ | – | – | – |
STORE_CUSTOMER | 1 | ✓ | ✓ | ✓ | ✓ | ✓ | – | ✓ | – |
Two things stand out. ARTICLE sits with Kundenbeziehungen alone, so
only that role can write articles. And COMPENSATION_COMPANY_INFO is the
single permission every role holds.
Three rules that decide whether a call succeeds
Roles add up. A user can hold several roles at once and gets the sum of their access. No role ever takes something away.
A permission replaces, it does not extend. Where an endpoint requires
ARTICLE_READ_ONLY, a token holding only
ARTICLE is not accepted, and the reverse is equally true. Almost every
endpoint checks exactly one permission. One does not: POST /core/v2/tenants/companies
lists two, and whether both are required is not confirmed. Its reference entry says so.
Every endpoint names the roles that carry its permission. Under Required permission you find not only the constant but also the roles that grant it, so you do not have to work backwards from a list of constants.
The role alone is not enough. The company also needs the matching subscription. Without it the function stays closed even for an Administrator. If a call fails although the role looks right, check the subscription first.
How long a role and an endpoint stay
New endpoints are versioned explicitly and start on /core/v1. There will be no
further additions under /core/latest, because a moving target cannot be integrated
against safely. Once an endpoint is marked deprecated it stays available for twelve
months. That commitment covers new endpoints; the older /core/latest and
/core/v2 operations predate it and no policy has been applied to them yet.
Which permission does an endpoint need?
Every endpoint in the reference states it under Required permission. The values come from a source code analysis of the API, not from the specification text, which names them only sporadically.
Two consequences worth knowing before you design
- Only Kundenbeziehungen can write articles. Every other role reaches at most
ARTICLE_READ_ONLY. An integration that maintains articles needs that role or an Administrator. - Buchhalter reads invoices one at a time, but cannot list or write them. The role
holds
FINANCE_GET_INVOICE, which the single-invoice call checks, but notFINANCE, which the invoice list and every invoice write check. An integration that creates or sends invoices needs Administrator, External user or Kundenbeziehungen.
Endpoints that need no particular permission
A valid token is enough for these. They return data that is not tied to one company, such as the chart of accounts, booking types, VAT types and cities.
| Endpoint |
|---|
GET /core/latest/cities/{city-id} |
GET /core/latest/vat-cases |
GET /core/latest/vat-cases/{vat-case-id} |
GET /core/v1/accounting/accounts |
GET /core/v1/accounting/accounts/by-code/{accountCode} |
GET /core/v1/accounting/booking-types |
GET /core/v1/accounting/vat-types |
GET /core/v1/accounting/vat-types/{vatTypeId} |
The three token endpoints and POST /core/latest/tenants also need no permission,
for the obvious reason that they are how a token is obtained. See
Authentication.
Common integration flows
Eight things people build most often, each as the sequence of calls it actually takes. Every statement below comes from the specification. Where the specification is silent, this page says so rather than guessing.
All of these need a token or API key, and the permission named per flow. See Authentication and Roles & permissions.
Creating invoices automatically
Turn an order in your system into a KLARA invoice. Five calls, of which three are lookups you can cache.
1. GET /core/v1/invoices/next-invoice-number → invoiceNumber 2. GET /core/v1/customers?search-key=… → the customer id 3. GET /core/latest/articles/search?keyword=… → the article rows for your line items 4. GET /core/v1/company-bank-accounts → the bank account to print on the invoice 5. POST /core/v1/invoices → the created invoice with its id
Permissions needed for the whole flow: ARTICLE_READ_ONLY, FINANCE, FINANCE_BANK_ACCOUNT, FINANCE_GET_CUSTOMER. Roles that cover all of it: Administrator, External user, Kundenbeziehungen.
What to watch out for
invoiceCodeis the only required field in the request body, and it must be unique within the company. Everything else the schema marks as optional, which does not mean the business logic accepts an empty invoice.idmust be0or omitted. This endpoint creates, it never updates. Sending an existing id does not edit that invoice.- Step 1 is not idempotent. Each call reserves the next number and advances the counter. Call it immediately before creating the invoice, never speculatively, or you leave gaps in the sequence.
statusdrives everything downstream. Allowed values areDRAFT,INVOICED,SENT,PAIDandCANCELLED. Create withINVOICEDif you intend to send it, because sending rejects drafts.postMethodis recorded, not executed. Setting it on the invoice does not deliver anything. Delivery is a separate call, see Sending documents.- Closing fiscal years are rejected unless you pass
confirmDontMindClosingFiscalYear=true. Decide deliberately whether your integration should be allowed to do that.
Webshop order to customer and invoice
A new buyer in your shop becomes a KLARA customer and an invoice. This is the invoice flow above with a customer step in front and a delivery step behind.
1. GET /core/v1/customers?search-key=… → does this buyer already exist? 2. POST /core/latest/customers → only if step 1 found nothing 3. …the five calls from Creating invoices… 4. POST /core/v1/invoices/{id}/send → deliver it
Permissions needed for the whole flow: ARTICLE_READ_ONLY, FINANCE, FINANCE_BANK_ACCOUNT, FINANCE_CREATE_CUSTOMER, FINANCE_GET_CUSTOMER. Roles that cover all of it: Administrator, External user, Kundenbeziehungen.
What to watch out for
- Always search before you create. There is no upsert and no uniqueness guarantee on email. Skipping step 1 gives you duplicate customers, and duplicates in the customer master are painful to merge afterwards.
customerTypeis the only required field on a customer, and it decides the shape of everything else. It is either a person or a company.- Step 4 is not idempotent. Each successful call performs a real delivery. After a timeout, do not simply retry, read the invoice back first, see Showing invoice status.
Handing over bookings
Post a manual journal entry from your system into KLARA Accounting.
1. GET /core/v1/accounting/accounts → valid account codes 2. GET /core/v1/accounting/master-vats → VAT codes and rates 3. GET /core/v1/accounting/business-case-templates → the booking categories 4. POST /core/v1/bookings → the persisted booking
Permissions needed for the whole flow: ACCOUNTING, ACCOUNTING_GET_BUSINESS_CASE_TEMPLATE, ACCOUNTING_GET_MASTER_VAT. Roles that cover all of it: Administrator, External user, Buchhalter.
What to watch out for
- At least two lines, and they must balance. Total debit must equal total credit or the downstream service rejects the posting.
bookingTitleis not stored. KLARA keeps no title of its own for a booking. The title it shows is thedescriptionof the line with the lowestaccountCode, VAT lines excluded. To set the title, set that line'sdescription.- Required in the header:
documentDate,bookingDateandbookingDetails. Required per line:accountCode,crdrType,description,amount,tagsandbookingTypeCode. amountis always positive. The sign is carried bycrdrType, which isDRorCR.- Let the server do the VAT. With
autoCalculateVat=trueit recalculates the way the manual booking screen does. - Do not take the recommended VAT suggestion blindly.
GET /core/v1/accounting/vat-suggestionsmarks one row withrecommended: true. That recommendation is currently not reliable. Choose the VAT rate and the VAT account yourself. - Two guards will reject otherwise valid bookings: a date in a closing fiscal year, and
a date outside the active KLARA Accounting subscription window. Both can be overridden with
confirmDontMindClosingFiscalYearandignore-unsubscripted-dates. Overriding is a business decision, not a technical one. - Tenant and company come from the token. The
idand company fields in the body are ignored.
Attaching receipts to bookings
Upload a receipt and attach it to an existing booking. Two calls.
1. POST /core/latest/companies/{company-id}/documents → the document id
2. PUT /core/v1/bookings/{id}/documents → attach it to the booking
Permissions needed for the whole flow: ACCOUNTING. Roles that cover all of it: Administrator, External user, Buchhalter. Not yet established: POST /core/latest/companies/{company-id}/documents. Plan for an Administrator key until this is confirmed.
What to watch out for
- Step 1 is
multipart/form-data, not JSON. Bothcategoryandfileare required. The allowed categories areSALARY_STATEMENTS,YEARLY_REPORTS,PAYMENT_FILES,INSURANCE_CERTIFICATES,SALARY_TRANSMISSIONS,OWN_DOCUMENTS,LIABILITY_UPLOAD,EXPENSESandLIABILITIES. LIABILITY_UPLOADbehaves differently. That category additionally triggers an asynchronous AI analysis downstream. Pick it deliberately, not as a default.- Maximum file size is 25 MB. Larger uploads fail with
413. - Step 2 replaces, it does not append. Send the complete list of document ids every time. An empty array clears all attachments. If you want to add a receipt, read the current list first and send it back with yours appended.
- Step 2 is idempotent. Re-sending the same body produces the same result, so a retry after a timeout is safe here.
- Only the company's own path id is accepted in step 1. The tenant comes from the token.
Synchronising master data
Keep customers and articles in step between KLARA and your system.
Customers GET /core/v1/customers?limit=100&offset=0 → page through them
POST /core/latest/customers → create
Articles GET /core/latest/articles?limit=…&offset=… → page through them
POST /core/latest/articles → create
Permissions needed for the whole flow: ARTICLE, ARTICLE_READ_ONLY, FINANCE_CREATE_CUSTOMER, FINANCE_GET_CUSTOMER. Roles that cover all of it: Administrator, External user, Kundenbeziehungen.
What to watch out for
- Paging is offset based and capped. On customers,
limitdefaults to 50 and is capped at 100. A request above the cap is rejected with400, not quietly reduced. Iterateoffset=0, 100, 200…until a page returns fewer rows than you asked for. - Both can be filtered, but differently. Customers take
search-key, which searches name, email, phone and customer number, andstatus, which takesACTIVE,ALLorARCHIVED. Articles takeproduct-typeonly. For free-text article search useGET /core/latest/articles/searchwithkeyword. - Without
statusyou only see active customers. A sync that omits it will never notice that a record was archived, and will keep it alive on your side forever. - Creating an article needs six fields:
nameDE,unitDE,accountingTags,articleNumber,productType. Note that the required name and unit are the German ones, whatever language you otherwise work in. - There is no change feed. No webhook, no modified-since filter. A sync has to page through everything and compare, so run it on a schedule rather than continuously, and mind the rate limit.
Showing invoice status in your CRM
Read the state of your invoices, as a filtered list or one at a time.
GET /core/v1/invoices?status=INVOICED&booking-status=OPEN → invoiced and not yet paid, one page at a time
GET /core/v1/invoices/{id} → the full invoice including booking status
Permissions needed for the whole flow: FINANCE, FINANCE_GET_INVOICE. Roles that cover all of it: Administrator, External user, Kundenbeziehungen.
What to watch out for
statusis the filter from the KLARA invoice overview, not an equality check on the field.status=OPENreturns rows that readINVOICEDorPAID, because it also looks at the payment state. Usebooking-statusto filter on the payment state exactly.- A list row and the full invoice report status differently. For amounts of zero or
more, a row reads
INVOICEDwhere the full invoice readsSENT. The full invoice usesDRAFT,INVOICED,SENT,PAIDandCANCELLED. - Page with
offsetandlimit. Keep the default sort by id so pages stay stable while you walk them. Page size and its maximum are on the endpoint in the reference. - The full invoice also carries booking state:
bookingStatus,bookingDueDateandbookingSealed. - Polling is the only option today. There are no webhooks, so poll gently and cache. See rate limiting.
- This is also your recovery step. After a timeout on a create or send, read the invoice back before retrying.
Reusing finance and VAT data
Pull the VAT catalogue into your own reporting or tax logic.
GET /core/v1/accounting/master-vats → the full catalogue GET /core/v1/accounting/master-vats?code=… → specific VAT codes GET /core/v1/accounting/master-vats?default-vat=true → the company defaults
Permissions needed for the whole flow: ACCOUNTING_GET_MASTER_VAT. Roles that cover all of it: Administrator, External user, Mitarbeiter und Lohn, Buchhalter, Kundenbeziehungen.
What to watch out for
- The query string switches behaviour, it does not just filter. With
codeset you get those codes, otherwise withdefault-vat=trueyou get the company defaults, otherwise you get the whole catalogue ordered by rate. - Paging only works on the full catalogue.
limitandoffsetare silently ignored whencodeordefault-vatis set. Silently, so you will not get an error, just all the rows. - Combine
codewithcurrent-period=trueto get only rates valid today. VAT rows carry validity ranges, and using an expired rate is a real risk. - Labels are translatable. Send
Accept-Languagewithde-CH,fr-CH,it-CHoren, see Response languages.
Fetching the chart of accounts
Get the account structure for your own reports or account mapping.
GET /core/v1/accounting/accounts → the master chart of accounts GET /core/v1/accounting/accounts?legal-form=… → only accounts for that legal form
Permissions: none of the steps checks a particular permission.
What to watch out for
- This data is global, not per company. The same chart of accounts comes back for every tenant, which is why there are no tenant or company parameters. Fetch it once and cache it.
legal-formboth filters and translates. It restricts the result to accounts that carry a translation for that legal form, and resolves thenamefield from that translation. The allowed values are listed on the endpoint in the reference.- No permission is declared on this endpoint. Any authenticated token is accepted.
- Read only, no side effects, so it is safe to call while you are exploring.
Sending documents with smart delivery
You do not have to decide how an invoice reaches your customer. Book it, then call
POST /core/v1/invoices/{id}/send without a channel. KLARA routes it through
EPOST, EBILL, SEND_EMAIL and Print&Send, and only
fails if none of them can deliver.
Sending currently works only with a bearer token, not with an API key. See the
FAQ on 401.
Smart delivery
Omit the channel query parameter. There is no request body.
curl -X POST "https://api.klara.ch/core/v1/invoices/42/send" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Accept: application/json"
Forcing one channel
Pass channel as a query parameter to force exactly that channel. If the recipient
is not eligible for it, for example no email on file, not registered for eBill, or Print&Send
not subscribed, the call fails with 400.
curl -X POST "https://api.klara.ch/core/v1/invoices/42/send?channel=SEND_EMAIL" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Accept: application/json"
| Value | Channel | Can be forced |
|---|---|---|
SEND_EMAIL | Email to the recipient | yes |
EPOST | ePost digital letterbox | yes |
EBILL | eBill, straight into the recipient's e-banking | yes |
A_POST | Printed and posted, A Post | yes |
B_POST | Printed and posted, B Post | yes |
PRINT_AND_MANUAL_SEND | Printed for manual dispatch | no, rejected with 400 |
PRINT_AND_MANUAL_SEND is a value you may see on
Invoice.postMethod, but it is not a deliverable channel and cannot be forced.
- The invoice must already be booked. Drafts and cancelled invoices are rejected with
400. Create and book it first throughPOST /core/v1/invoiceswithstatus=INVOICED. - This call is not idempotent. Every successful call performs a real delivery, sending an email or handing a letter to the postal channel, and overwrites the invoice's recorded post method. Do not retry blindly after a success. Remember there is no test environment, so this happens on live data.
Requires the FINANCE permission on the target company.
The invoice PDF is rendered on demand if it has not been printed yet.
Submitting variable payroll data
The flow is three calls. You need the employee first, then the payslip that is still editable, then you post the item.
1. GET /core/v1/employees/short-info
→ find the employee, take their employeeId
2. GET /core/v1/payroll/employees/{employeeId}/addable-salary-items
→ returns which item types may be added, plus contractId and payslipId
3. POST /core/v1/payroll/contracts/{contractId}/payslips/{payslipId}/salary-items
→ adds the item and recalculates the month
What you can submit
Salary items come in the types Base, Percent, Quantity, Amount and Comments. Step 2 tells you which types the payslip accepts. Do not guess, the answer depends on the employee's contract.
Finding the right employee
GET /core/v1/employees/short-info returns a lightweight directory: id, name, email,
employee number, workplace and status. It supports search-key,
filter-by-status, workplace-ids, sort-field and
sort-direction. This is the most capable filtering in the whole API today.
- Only editable payslips. Once a payslip is sealed, it no longer accepts items. Your integration needs to run before the salary run is closed, so plan the timing.
- Recalculation is triggered per call. Pass
recalculate=falsewhen adding several items in sequence, then recalculate once at the end. Otherwise you recompute the month for every single item.
Retries and corrections
There is no PUT and no DELETE on salary items today, so a wrong entry
is corrected in the KLARA interface, not through the API. Both verbs are confirmed as required
for the final version of the endpoint, but they do not exist yet.
Getting responses in German, French, Italian or English
Switzerland has four language regions, and so does your customer base. A number of endpoints
return content that is translated, for example account names, VAT descriptions, booking-type
labels and salary-item descriptions. You choose the language with the standard
Accept-Language request header.
curl -X GET "https://api.klara.ch/core/v1/accounting/accounts" \ -H "X-API-KEY: $KLARA_API_KEY" \ -H "Accept-Language: fr-CH" \ -H "Accept: application/json"
The header takes an IETF language tag. The tags documented in the specification are
de-CH, fr-CH, it-CH and en. Where a
translation is missing, the response falls back to German. Some endpoints fall back to the
language configured on the tenant instead when you omit the header, so pass it explicitly if
you care about the result.
Where it applies
31 endpoints accept Accept-Language. Look for it in the parameter
list of any endpoint in the API reference. It is most common across
accounting: accounts, booking types, VAT types, VAT cases, business-case templates and
financial years. It also affects POST /core/v1/bookings, where it selects the
language of localised error messages, and the payroll endpoint that lists addable salary
items.
Building your own language picker
Two schemas return not just the resolved text but the complete set of translations, keyed by language tag. Use these when your own interface offers a language switch and you would rather not call the API once per language.
| Schema | Fields |
|---|---|
PublicApiBusinessCaseTemplate |
i18n, keywordI18ns |
PublicApiVatType |
i18n, i18nShortName |
Limits, pagination and environments
Environments
There is one environment: https://api.klara.ch. It serves your live company data.
- Explore with
GETfirst. Reading is safe. Get familiar with the data shapes before you write anything. - Writes take effect immediately. A created invoice is a real invoice, and a salary item added to a payslip is real payroll data.
- Use a separate key for development, named so you can recognise and revoke it,
for example
integration-dev. Delete it when you go live. - If you can, develop against a company you control rather than a client's production company.
Rate limiting
The API enforces a rate limit at the gateway. When you exceed it, the response is
429 API rate limit exceeded. Nearly every endpoint can return it.
| What | Value |
|---|---|
| Limit | At least 10,000 requests per minute |
| Counted against | The calling IP address, not the API key and not the company |
| Scope | The same limit everywhere. File exports are not treated differently |
Several customers behind one outbound address share a single budget. If you run a hosting platform or your own software as a service, one busy tenant can throttle the others.
The reverse is also true: spreading calls across several source addresses multiplies your throughput. That works, but it is not a supported pattern and may change.
The figure is stated as a floor rather than an exact number on purpose. Each gateway instance counts on its own, so the effective ceiling rises with the number of instances and the counter resets when one restarts. Today one instance runs, which makes 10,000 per minute correct, but build against the floor.
Headers on 429
The gateway deliberately suppresses the informational headers. You will not see
RateLimit-Limit, RateLimit-Remaining or RateLimit-Reset,
and their X- variants are absent as well. This is a configuration decision, not an
omission in the specification.
Whether Retry-After is sent is being confirmed. Do not depend on it yet.
How to build for it
- Retry with exponential backoff. On
429, wait, then retry with an increasing delay. Do not retry in a tight loop. - Cache reference data. Accounts, VAT rates, booking types and article categories change rarely. Fetch them once per run, not per record.
- Batch by run, not by record. Creating two hundred records means two hundred requests. Spread them out.
Pagination
16 endpoints accept pagination parameters:
| Endpoint | Parameters |
|---|---|
GET /core/latest/article-categories | limit, offset |
GET /core/latest/article-filters | limit, offset |
GET /core/latest/articles | limit, offset |
GET /core/latest/articles/article-and-variants | limit, offset |
GET /core/latest/articles/search | limit, offset |
GET /core/v1/accounting/accounts/{accountCode}/statement | limit, offset |
GET /core/v1/accounting/business-case-templates | limit, offset |
GET /core/v1/accounting/fiscal-years | limit, offset |
GET /core/v1/accounting/master-vats | limit, offset |
GET /core/v1/accounting/reports/general-ledger | limit, offset |
GET /core/v1/accounting/tags | limit, offset |
GET /core/v1/bank-transactions | limit, offset |
GET /core/v1/bookings | limit, offset |
GET /core/v1/customers | limit, offset |
GET /core/v1/customers/{customerId}/open-positions | limit, offset |
GET /core/v1/invoices | limit, offset |
Three properties of pagination that decide whether a run is reliable.
| Question | Answer |
|---|---|
| Is there a total count? | No. A page smaller than the limit is the only signal that you have reached the end |
| Is the order stable between requests? | No guarantee, with one exception:
GET /core/v1/accounting/business-case-templates takes an optional
orderColumns list |
| Can every page be reached? | Yes. GET /core/latest/article-categories and
GET /core/latest/article-filters accepted limit without
offset until 18 September 2026 and were stuck on the first page. Both
take offset now and return X-Total-Count |
Searching and filtering
Free-text search
14 endpoints take a search term and match it against several fields at once. This is the only way to find a record without knowing an id.
| Endpoint | Parameter |
|---|---|
GET /core/latest/article-categories | keyword, search-key |
GET /core/latest/article-filters | keyword, search-key |
GET /core/latest/articles/search | keyword, search-key |
GET /core/v1/accounting/accounts/{accountCode}/statement | search-key |
GET /core/v1/accounting/fiscal-years | search-key |
GET /core/v1/accounting/reports/general-ledger | search-key |
GET /core/v1/accounting/tags | search-key |
GET /core/v1/bank-reconciliation/open-positions | general-search, search-key |
GET /core/v1/bank-transactions | search-key |
GET /core/v1/bookings | search-key |
GET /core/v1/customers | search-key |
GET /core/v1/customers/{customerId}/open-positions | search-key |
GET /core/v1/employees/short-info | search-key |
GET /core/v1/invoices | search-key |
Filtering by field
46 endpoints narrow the result by a field value, 129 parameters in total. Filtering is not searching: you have to know the value you are filtering on.
| Endpoint | Parameters |
|---|---|
GET /core/latest/article-categories | active-status |
GET /core/latest/article-filters | active-status |
GET /core/latest/articles | product-type |
GET /core/latest/articles/article-and-variants | include-quantity, sell-in-booking, sell-in-online-shop, use-pos |
GET /core/latest/articles/article-numbers | article-numbers, export-vat, price-date, should-validate-vat |
GET /core/latest/articles/search | export-vat, price-date, should-validate-vat |
POST /core/latest/payroll-interface-file | file-format, payslip-ids, salary-run-id |
POST /core/latest/subscriptions | marketing-code |
GET /core/latest/vat-cases | applicability |
GET /core/v1/accounting/accounts | legal-form |
GET /core/v1/accounting/accounts/account-displaying | legal-form |
GET /core/v1/accounting/accounts/by-code/{accountCode} | legal-form |
GET /core/v1/accounting/accounts/{accountCode}/statement | booking-types, date-from, date-to, include-delimitation, reference, tags, vat |
GET /core/v1/accounting/business-case-templates/{businessCaseTemplateId}/payment-sources | booking-date, payment-group |
GET /core/v1/accounting/business-cases | businessCaseTemplateId, dateForFilteringCompanyVat, dateForFilteringFiscalYear |
GET /core/v1/accounting/business-cases/v2 | businessCaseTemplateId, dateForFilteringCompanyVat, dateForFilteringFiscalYear, group-insurance-by-insurer, snippet-id, snippet-value |
GET /core/v1/accounting/currencies/exchange-rate | exchange-date, from-currency-code |
POST /core/v1/accounting/document-bookings/paid | confirm-closing-fiscal-year |
GET /core/v1/accounting/fiscal-years | status |
GET /core/v1/accounting/kpis/income-expenses | date-from, date-to, include-delimitation |
GET /core/v1/accounting/kpis/spendings-and-earnings | compare-from, compare-to, date-from, date-to, include-delimitation |
GET /core/v1/accounting/master-vats | code, current-period, default-vat, includeHiddenVatCase |
GET /core/v1/accounting/reports/balance-sheet | account-search, compare-date, date, include-delimitation, sub-account-search |
GET /core/v1/accounting/reports/general-ledger | account-from, account-to, booking-types, date-from, date-to, include-delimitation, reference, tags, vat |
GET /core/v1/accounting/reports/partner-amounts | customer-id, to-date |
GET /core/v1/accounting/reports/profit-and-loss | account-search, compare-from, compare-to, date-from, date-to, include-delimitation, tag-search |
GET /core/v1/accounting/tags | include-combinations |
GET /core/v1/accounting/vat-profile | date |
GET /core/v1/accounting/vat-suggestions | accountCode, amount, amountKind, date, direction, vatCase |
GET /core/v1/bank-reconciliation/open-positions | action, booking-type-codes, crdr-type, credit-card-not-reconciled, invoice-date, partner, payment-date, payment-date-from, payment-date-to, position-status, tags |
GET /core/v1/bank-transactions | bank-account-id, booking-date-from, booking-date-to, direction |
GET /core/v1/bookings | amount-from, amount-to, booking-date-from, booking-date-to, tags |
POST /core/v1/bookings | autoCalculateVat, confirmDontMindClosingFiscalYear, ignore-unsubscripted-dates |
PUT /core/v1/bookings/{id}/documents | ignore-unsubscripted-dates |
GET /core/v1/company-bank-accounts | iban-number, type |
GET /core/v1/customers | status |
GET /core/v1/customers/{customerId}/open-positions | position-type, reference-date |
GET /core/v1/employees/short-info | filter-by-status, status, workplace-ids |
GET /core/v1/invoices | booking-status, status |
PUT /core/v1/invoices | confirmDontMindClosingFiscalYear |
POST /core/v1/invoices | confirmDontMindClosingFiscalYear |
POST /core/v1/invoices/{id}/send | channel |
GET /core/v1/order-documents/filter/type-and-order-number | order-number, type |
GET /core/v1/order-numbering-configurations | order-type |
GET /core/v1/payroll/employees/{employeeId}/addable-salary-items | month |
POST /core/v1/vat-clearing-reports/{year}/{quarter} | recalculate |
Sorting
10 endpoints accept a sort order: /core/v1/accounting/accounts/{accountCode}/statement, /core/v1/accounting/business-case-templates, /core/v1/accounting/fiscal-years, /core/v1/accounting/reports/general-ledger, /core/v1/accounting/tags, /core/v1/bank-transactions, /core/v1/bookings, /core/v1/customers/{customerId}/open-positions, /core/v1/employees/short-info, /core/v1/invoices. Everywhere else the order is not guaranteed, which matters when you page through a large collection.
API reference
114 endpoints. Click any endpoint for its description, parameters, request body and
responses. Everything below is generated from klara-openapi.json; ePost endpoints
and the eBill, SPS, email and print partner channels are removed by the build.
Finance & Accounting
Accounting40
GET/core/v1/accounting/accountskey / tokenList KLARA master chart-of-account rows.
legal-form query parameter is supplied, only accounts that carry a translation for that legal form are returned, and the name field is resolved from the legal-form-specific translation column. The Accept-Language header selects which translation is used; if absent or unsupported the platform default applies. The endpoint is a pure read — idempotent, no side effects. Any authenticated bearer token is accepted; the downstream service declares no role or permission requirement on this endpoint.operationId
listAccountsV1 — the method name a generated client uses.
Required permission
none A valid token is enough. No particular permission is checked for this endpoint.
Parameters 2
| Name | Description |
|---|---|
legal-form | Restricts the result to accounts that carry a translation for the given Swiss legal form, and resolves name from that legal-form-specific column. Allowed values: LIMITED_LIABILITY, CORPORATION, OR, INDIVIDUALLY_OWNED_COMPANY, ASSOCIATION, SIMPLE_PARTNERSHIP, GENERAL_PARTNERSHIP, LIMITED_PARTNERSHIP, COOPERATIVE_COMPANY, FOUNDATION.Allowed values: LIMITED_LIABILITY, CORPORATION, OR, INDIVIDUALLY_OWNED_COMPANY, ASSOCIATION, SIMPLE_PARTNERSHIP, GENERAL_PARTNERSHIP, LIMITED_PARTNERSHIP, COOPERATIVE_COMPANY, FOUNDATION |
Accept-Language | IETF language tag used to resolve the localized name field of each account. Examples: de-CH, fr-CH, it-CH, en. |
Responses 5
200 Master accounts, sorted by code ascending. Empty array when the chart of accounts has not been seeded yet. show body
application/json array of PublicApiAccount
Array of PublicApiAccount.
idinteger (int64) format: int64 example: 42Internal identifier of the master account.codeinteger (int32) format: int32 example: 1020Numeric account code as printed on the chart of accounts.namestring example: BankLocalized account name. Resolved against the request'sAccept-Languageand, whenlegal-formis supplied, against the legal-form-specific translation.tagsstring example: bank;kontoFree-text keyword tokens associated with the account, used by client-side search. Tokens are delimited by comma or semicolon.linksstring example: bank_accountLinked-account references used by report computations.accountReportLinksstring example: bank_accountReport-grouping references used to assemble balance-sheet / P&L groupings.initialBalanceSheetboolean example: FalseTrue when the account is part of the initial opening-balance sheet.visibleFirstFiscalYearboolean example: TrueTrue when the account is visible during the first fiscal year of a new company.visibleFromSecondFiscalYearboolean example: TrueTrue when the account becomes visible from the second fiscal year onwards.vatAccountboolean example: FalseTrue when the account is reserved for VAT postings.accountReportFiltersarray of PublicApiAccountReportFilterReport-grouping configuration rows attached to this account.show fields
Array of
PublicApiAccountReportFilter.displaystring example: Operating expensesHuman-readable label of the report bucket this account contributes to.linkAccountValuestring example: 6000Underlying linked-account value used by the accounting engine to resolve the bucket.
notManuallyAddedboolean example: TrueTrue when the account was seeded automatically (not added by an end user).
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 The supplied legal-form value does not match any known legal form.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/accounts/account-displayingkey / tokenList the account-displaying picker rows for the authenticated company.
AccountDisplaying rows for every account in the caller's company chart of accounts. Each row represents one selectable combination that a bookkeeper can pick when entering a manual journal line. Tenant and company are derived from the bearer token — there are no tenant or company path parameters.How rows are produced: For each master account the downstream service checks whether the account carries any linked sub-account definitions (e.g. a bank account linked to specific bank-accounts, a VAT account linked to VAT-rate items). If the account has no sub-account definitions, exactly one bare row is emitted with combinedCode equal to the bare account code (e.g. "3000"), linkType equal to null, and specificationItem equal to null. If the account has one or more sub-account link specifications, one row is emitted per individual sub-account entry, numbered sequentially across all link types with a 0-based counter suffix: "1020-0", "1020-1", …
combinedCode: "<accountCode>-<i>" when a sub-account exists (e.g. "1020-0"), or the bare account code string (e.g. "3000") when linkType is null. The suffix index is a flat 0-based counter per account, spanning all link types in declaration order.
combinedName: "<accountName> (<subAccountDisplay>)" when a sub-account exists (e.g. "Bank (UBS)"), or the bare account name (e.g. "Bürobedarf") when linkType is null.
parentAccount: the full master account this row belongs to. Always populated, including for bare rows.
linkType: the link-type category name (e.g. "BANK", "CUSTOMER", "VAT_RATE"). null when the account has no sub-account definitions.
linkDisplay: the human-readable label for the link type in the current locale (e.g. "Bank account"). Falls back to the German label when no translation exists for the requested language. null when linkType is null.
linkOptional: true when the sub-account selection is optional for the user (link keys are separated by ; in the account definition); false when selecting a sub-account is mandatory (link keys separated by ,); null when the account has no sub-account definitions.
specificationItem: the resolved sub-account entry for this row. Its link field is the URI that must be round-tripped back to the booking endpoint when the user selects this row. Its display field is the human-readable label shown to the bookkeeper (e.g. "UBS", "8.1 %"). null when linkType is null.
Row order is stable: accounts are sorted by code ascending (same order as GET /core/v1/accounting/accounts); sub-account rows within each account preserve the link-type declaration order and then the entry order returned by the underlying service.
ACCOUNTING permission on the company in scope.operationId
getAccountDisplayingV1 — the method name a generated client uses.
Required permission
ACCOUNTING
Available through: Administrator, External user, Buchhalter
Parameters 2
| Name | Description |
|---|---|
legal-form | When supplied, restricts the result to accounts that carry a translation for the given Swiss legal form and resolves the parentAccount.name field from the legal-form-specific translation column. When omitted, all accounts are returned and account.name is resolved from the generic language column. Allowed values: LIMITED_LIABILITY, CORPORATION, OR, INDIVIDUALLY_OWNED_COMPANY, ASSOCIATION, SIMPLE_PARTNERSHIP, GENERAL_PARTNERSHIP, LIMITED_PARTNERSHIP, COOPERATIVE_COMPANY, FOUNDATION.Allowed values: LIMITED_LIABILITY, CORPORATION, OR, INDIVIDUALLY_OWNED_COMPANY, ASSOCIATION, SIMPLE_PARTNERSHIP, GENERAL_PARTNERSHIP, LIMITED_PARTNERSHIP, COOPERATIVE_COMPANY, FOUNDATION |
Accept-Language | IETF language tag used to localize the parentAccount.name field of each row and the linkDisplay label. Falls back to German when no translation exists for the requested language. Examples: de-CH, fr-CH, it-CH, en. |
Responses 6
200 Flat list of account-displaying rows, sorted by account code ascending. Each row contains combinedCode, combinedName, parentAccount, and the link fields populated for sub-account rows or null for bare rows. Returns an empty array when no accounts match the supplied legal-form. show body
application/json array of PublicApiAccountDisplaying
Array of PublicApiAccountDisplaying.
combinedCodestring example: 1020-0Picker key."<accountCode>-<i>"when a sub-account exists (e.g."1020-0"); the bare account code string (e.g."3000") whenlinkTypeisnull. The suffix index is a flat 0-based counter per account, spanning all link types in declaration order.combinedNamestring example: Bank (UBS)Picker label."<accountName> (<subAccountDisplay>)"when a sub-account exists (e.g."Bank (UBS)"); the bare account name (e.g."Bürobedarf") whenlinkTypeisnull.parentAccountobjectA master account from KLARA's global chart of accounts.show fields
idinteger (int64) format: int64 example: 42Internal identifier of the master account.codeinteger (int32) format: int32 example: 1020Numeric account code as printed on the chart of accounts.namestring example: BankLocalized account name. Resolved against the request'sAccept-Languageand, whenlegal-formis supplied, against the legal-form-specific translation.tagsstring example: bank;kontoFree-text keyword tokens associated with the account, used by client-side search. Tokens are delimited by comma or semicolon.linksstring example: bank_accountLinked-account references used by report computations.accountReportLinksstring example: bank_accountReport-grouping references used to assemble balance-sheet / P&L groupings.initialBalanceSheetboolean example: FalseTrue when the account is part of the initial opening-balance sheet.visibleFirstFiscalYearboolean example: TrueTrue when the account is visible during the first fiscal year of a new company.visibleFromSecondFiscalYearboolean example: TrueTrue when the account becomes visible from the second fiscal year onwards.vatAccountboolean example: FalseTrue when the account is reserved for VAT postings.accountReportFiltersarray of PublicApiAccountReportFilterReport-grouping configuration rows attached to this account.show fields
Array of
PublicApiAccountReportFilter.displaystring example: Operating expensesHuman-readable label of the report bucket this account contributes to.linkAccountValuestring example: 6000Underlying linked-account value used by the accounting engine to resolve the bucket.
notManuallyAddedboolean example: TrueTrue when the account was seeded automatically (not added by an end user).
linkTypestring example: BANKLink-type category. Identifies the kind of entity the sub-account refers to. Common values:VAT_RATE,VAT_CASE,BANK,CUSTOMER,SUPPLIER,EMPLOYEE,SOCIAL_INSURANCE,TAX_AT_SOURCE,EQUITY,TANGIBLE_ASSET,IMMOBILE_TANGIBLE_ASSET,UNFINISHED_PRODUCTS,FINISHED_PRODUCTS,NON_BILLED_SERVICES,INVENTORY_CHANGE_MATERIAL,INVENTORY_CHANGE_GOODS,LONG_TERM_INTEREST_BEARING,OTHER_LONG_TERM_INTEREST_BEARING,GIFT_CARD,VARIOUS.nullwhen the account has no sub-account definitions.linkDisplaystring example: Bank accountHuman-readable label for the link type in the requestedAccept-Language. Falls back to the German label when no translation exists for the requested language.nullwhenlinkTypeisnull.linkOptionalboolean example: Falsetruewhen the sub-account selection is optional for the user (link keys are separated by;in the account definition);falsewhen selecting a sub-account is mandatory (link keys separated by,);nullwhen the account has no sub-account definitions.specificationItemobjectOne concrete sub-account choice; carries the URI to round-trip to the booking endpoint and the display label.show fields
idstring example: 42Stable identifier of the underlying entity (e.g. bank-account id, VAT-rate id, customer id). May benullfor synthesized entries.filteredBystring example:Optional filter token used by the Accounting UI to narrow the picker. Empty for most link types.displaystring example: UBSHuman-readable label shown in the picker (e.g."UBS"for a bank account,"8.1 %"for a VAT rate).linkstring example: bank_account:/luz_finance/api/5fe76717-60a0-4b20-9819-255a957f3eb9/companies/1/bank-accounts/42Canonical URI for this sub-account choice. MUST be round-tripped verbatim to the booking-creation endpoint when the row is selected.additionalAttributestring example:Free-form additional attribute attached by the link-type supplier. Most types leave this empty.snippetReferencestring example:Optional snippet reference returned by the underlying entity (used by some link types to carry a template hint).valuestring example: 8.1Optional raw value associated with the entry (e.g. the VAT percentage as a decimal string).validFromstring (date) format: date example: 2024-01-01Inclusive start of the validity window of the underlying entity (ISOyyyy-MM-dd).nullwhen not applicable.validTostring (date) format: date example: 2024-12-31Inclusive end of the validity window of the underlying entity (ISOyyyy-MM-dd).nullwhen open-ended.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 The company associated with the caller's session could not be resolved by the downstream accounting service, or the supplied legal-form value does not match any known legal form.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/accounts/by-code/{accountCode}key / tokenResolve a KLARA master account by its chart-of-account code.
accountCode. The data is global — the same chart of accounts is shared across every tenant, so there are no tenant or company path parameters. When the optional legal-form query parameter is supplied, the name field is resolved from the legal-form-specific translation column instead of the generic one. The Accept-Language header selects which translation is used; if absent or unsupported the platform default applies. The endpoint is a pure read — idempotent, no side effects. Any authenticated bearer token is accepted; the downstream service declares no role or permission requirement on this endpoint.operationId
getAccountByCodeV1 — the method name a generated client uses.
Required permission
none A valid token is enough. No particular permission is checked for this endpoint.
Parameters 3
| Name | Description |
|---|---|
accountCode required | Numeric chart-of-account code as printed on the KLARA master chart of accounts (e.g. 1000 for cash, 6000 for material expense). |
legal-form | When supplied, resolves name from the legal-form-specific translation column. Allowed values: LIMITED_LIABILITY, CORPORATION, OR, INDIVIDUALLY_OWNED_COMPANY, ASSOCIATION, SIMPLE_PARTNERSHIP, GENERAL_PARTNERSHIP, LIMITED_PARTNERSHIP, COOPERATIVE_COMPANY, FOUNDATION.Allowed values: LIMITED_LIABILITY, CORPORATION, OR, INDIVIDUALLY_OWNED_COMPANY, ASSOCIATION, SIMPLE_PARTNERSHIP, GENERAL_PARTNERSHIP, LIMITED_PARTNERSHIP, COOPERATIVE_COMPANY, FOUNDATION |
Accept-Language | IETF language tag used to resolve the localized name field of the account. Examples: de-CH, fr-CH, it-CH, en. |
Responses 5
200 The master account matching accountCode. show body
application/json PublicApiAccount
idinteger (int64) format: int64 example: 42Internal identifier of the master account.codeinteger (int32) format: int32 example: 1020Numeric account code as printed on the chart of accounts.namestring example: BankLocalized account name. Resolved against the request'sAccept-Languageand, whenlegal-formis supplied, against the legal-form-specific translation.tagsstring example: bank;kontoFree-text keyword tokens associated with the account, used by client-side search. Tokens are delimited by comma or semicolon.linksstring example: bank_accountLinked-account references used by report computations.accountReportLinksstring example: bank_accountReport-grouping references used to assemble balance-sheet / P&L groupings.initialBalanceSheetboolean example: FalseTrue when the account is part of the initial opening-balance sheet.visibleFirstFiscalYearboolean example: TrueTrue when the account is visible during the first fiscal year of a new company.visibleFromSecondFiscalYearboolean example: TrueTrue when the account becomes visible from the second fiscal year onwards.vatAccountboolean example: FalseTrue when the account is reserved for VAT postings.accountReportFiltersarray of PublicApiAccountReportFilterReport-grouping configuration rows attached to this account.show fields
Array of
PublicApiAccountReportFilter.displaystring example: Operating expensesHuman-readable label of the report bucket this account contributes to.linkAccountValuestring example: 6000Underlying linked-account value used by the accounting engine to resolve the bucket.
notManuallyAddedboolean example: TrueTrue when the account was seeded automatically (not added by an end user).
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 No master account exists for the supplied accountCode, or the supplied legal-form value does not match any known legal form.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/accounts/{accountCode}/statementkey / tokenGet the statement of one account for a period: opening balance, all movements, closing balance.
date-from, the booking lines of the period with booking date, booking id and line id (readable with getBookingV1), contra accounts, posting text, tags, VAT text, debit or credit amount in CHF and the running balance after each line, and the closing balance with the debit and credit totals of the period. Lines are ordered by booking date, booking id and line id, ascending, and paged with offset and limit (default 50, maximum 100); X-Total-Count holds the number of matching lines, and opening and closing balance always refer to the whole period, not to the page. The running balance continues across pages. For P&L accounts the opening balance starts at the beginning of the fiscal year that contains date-from, and the running and closing balance restart at 0 in each new fiscal year, so for a period over several fiscal years only the debit and credit totals of closingBalance cover the whole period; balance sheet accounts accumulate from the first booking. Balances are positive on the normal side of the account (debit for assets and expenses, credit for liabilities, equity and revenue). The statement contains every booking status (planned and inactive bookings too), like the screen; lines carry no booking status and there is no status filter. Amounts are in CHF only. Filters, all optional and combined with AND: date-from and date-to (inclusive, yyyy-MM-dd; without date-from the statement starts with the first booking and the opening balance is 0); reference, one object a line must refer to, written as in references of getBookingV1, for example BANK_ACCOUNT:3, SUB_ACCOUNT:cash:400 or CUSTOMER:1042 (this is the sub-account filter of the screen; the opening balance is filtered the same way). Without reference, an account that KLARA splits into sub-accounts (for example per bank account, cash register or employee) is returned as a whole, all its sub-accounts together; the screen always shows one sub-account, so to get what the screen shows pass that sub-account's reference (from reference of the sub-account rows of getBalanceSheetV1 or references of getBookingV1; the id of listSubAccountsV1 is a different number and cannot be used here); tags, comma-separated, any of them, case-sensitive (names from listBookingTagsV1; a line with several tags is kept when one of its tags equals a requested name, so Marketing finds a line tagged Marketing, Zurich); include-delimitation (default true), false leaves out the delimitation lines (booking type DELIMIT), the original lines they belong to stay; booking-types, comma-separated booking types, any of them; vat, comma-separated, any of them: a VAT case id (listVatCases), a VAT case and VAT rate id as case:rate (listMasterVatsV1), or none for lines without VAT. Tag names are matched as KLARA's screen matches them: % and _ act as wildcards. Sorting is fixed, oldest first: sort-field may only be BOOKING_DATE and sort-direction only ASC (the generic default DESC does not apply here; omit the parameter), and search-key is not supported. All parameters are checked first (400); then 404 with code account.unknown when the account number is not in the master chart of accounts (listAccountsV1). An account of the master chart without bookings of the company returns an empty statement. This is a read-only, idempotent operation without side effects. Tenant and company are derived from the bearer token and are never accepted from the URL or the request. The caller must hold the ACCOUNTING permission on the company; otherwise the endpoint returns 403.operationId
getAccountStatementV1 — the method name a generated client uses.
Required permission
ACCOUNTING This comes from the description in the specification; the source code analysis behind the other permission statements is older than this endpoint. Roles that carry it: Administrator, External user, Buchhalter.
Parameters 14
| Name | Description |
|---|---|
accountCode required | Account number, as code in listAccountsV1. |
booking-types | Comma-separated booking types as bookingType of getBookingV1, any of them, for example AR_INVOICE,AP_INVOICE. Case-insensitive. |
date-from | First booking date of the statement, inclusive, ISO yyyy-MM-dd. Without it the statement starts with the first booking and the opening balance is 0. |
date-to | Last booking date of the statement, inclusive, ISO yyyy-MM-dd; not before date-from. Without it the period is open-ended. |
include-delimitation | false leaves out the delimitation lines (booking type DELIMIT); the original lines they belong to stay. Included by default, as on the screen. |
limit | Page size. Defaults to 50; hard cap 100. Requests above the cap are rejected with 400. |
offset | 0-based pagination offset — the number of rows to skip before the returned page. Defaults to 0. Combine with limit to walk the full collection. |
reference | Only lines that refer to this object, written as in references of getBookingV1: TYPE:id, for a sub-account SUB_ACCOUNT:category:id. The type is case-insensitive, the category is written as published. |
search-key | Free-text search. The fields searched are documented per endpoint. Matches are case-insensitive substring matches. Maximum length 256 characters. |
sort-direction | Sort direction. Allowed values: ASC, DESC. Defaults to DESC.Allowed values: ASC, DESC |
sort-field | Field to order the result by. The accepted values are listed per endpoint; an unknown value is rejected with 400. Each endpoint documents the default it applies, chosen so that paging with offset / limit is stable. |
tags | Comma-separated tag names; a line is kept when one of its tags equals any of them (case-sensitive; tags combined on one line are compared one by one; % and _ act as wildcards, as on the screen). |
vat | Comma-separated VAT filters, any of them: a VAT case id (listVatCases), a VAT case id and VAT rate id as case:rate (listMasterVatsV1), or none for lines without VAT. |
Accept-Language | Language of the VAT texts, for example de-CH, fr-CH, it-CH, en. |
Responses 7
200 The statement: opening balance, the lines of this page and the closing balance of the whole period. show body
application/json PublicApiAccountStatement
accountCodeinteger (int32) format: int32 example: 1020Account number of the statement, as inlistAccountsV1.dateFromstring (date) format: date example: 2026-01-01First booking date of the period as requested; missing when the statement starts with the first booking.dateTostring (date) format: date example: 2026-12-31Last booking date of the period as requested; missing when the period is open-ended.openingBalancenumber example: 12500Balance in CHF beforedateFrom, with the same filters. Balance sheet accounts accumulate from the first booking, P&L accounts from the start of the fiscal year that containsdateFrom. 0 withoutdateFrom. Positive for the normal side of the account (debit for assets and expenses, credit for liabilities, equity and revenue).closingBalanceobjectTotals of the whole period (all pages) and the balance at its end.show fields
debitAmountnumber example: 48200Sum in CHF of the debit amounts of all matching lines of the period.creditAmountnumber example: 39150.5Sum in CHF of the credit amounts of all matching lines of the period.balancenumber example: 21549.5Balance in CHF at the end of the period. Balance sheet accounts: opening balance plus all lines, equal to the running balance of the last line. P&L accounts restart at 0 in each fiscal year, so this is the balance of the fiscal year that contains the end of the period (dateTo, or the latest fiscal year when the period is open-ended); it equals the running balance of the last line when that line lies in that fiscal year, and is 0 when that fiscal year has no lines yet.
linesarray of PublicApiAccountStatementLineThe booking lines of this page, ordered by booking date, booking id and line id, ascending. Empty when no line matches or the page is beyond the last line.show fields
Array of
PublicApiAccountStatementLine.bookingDatestring (date) format: date example: 2026-03-31Booking date.bookingIdinteger (int64) format: int64 example: 4321Id of the booking; read the whole booking withgetBookingV1.lineIdinteger (int64) format: int64 example: 8765Id of this line within the booking, aslines[].idofgetBookingV1.contraAccountCodesarray of integer (int32)Accounts of the other lines of the booking, ascending. The amount of this line is not split among them;getBookingV1shows the amount of each line.descriptionstring example: Rent March 2026Posting text of the line.tagsarray of stringTags of the line.vatTextstring example: 8.1%VAT of the line as KLARA shows it, in the language ofAccept-Language.debitAmountnumber example: 1000Amount in CHF when the line is a debit; missing otherwise.creditAmountnumber example: 250Amount in CHF when the line is a credit; missing otherwise.runningBalancenumber example: 13500Balance in CHF after this line, continued across pages. Positive for the normal side of the account; P&L accounts restart at 0 with the first line of each fiscal year.documentIdsarray of stringIds of the documents attached to the booking.
400 A filter is malformed (date-from, date-to, reference, booking-types, vat), the range is inverted, the sort is not booking date ascending, search-key was sent, or a parameter is outside its bounds (accountCode below 1, reference longer than 128 characters, tags, booking-types or vat longer than 256 characters, offset negative, limit outside 1-100).
Error codes for this response (the code field of the response body):request.sort_field_invalid — sort-field was not one of the values the operation documents. The message lists the accepted values.request.sort_direction_unsupported — sort-direction was sent with the direction an operation with a fixed order does not have. The message names the available direction.request.search_key_unsupported — search-key was sent to an operation that has no text search.statement.date_invalid — date-from or date-to was not an ISO date of the form yyyy-MM-dd, or date-to was before date-from.statement.reference_invalid — reference was not of the form TYPE:id or SUB_ACCOUNT:category:id with a type, category and id as published in references of getBookingV1.statement.booking_type_invalid — An entry of booking-types was not one of the published booking types.statement.vat_filter_invalid — An entry of vat was not none, a VAT case id, or a VAT case id and a VAT rate id separated by a colon.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
request.sort_field_invalid — sort-field was not one of the values the operation documents. The message lists the accepted values.request.sort_direction_unsupported — sort-direction was sent with the direction an operation with a fixed order does not have. The message names the available direction.request.search_key_unsupported — search-key was sent to an operation that has no text search.statement.date_invalid — date-from or date-to was not an ISO date of the form yyyy-MM-dd, or date-to was before date-from.statement.reference_invalid — reference was not of the form TYPE:id or SUB_ACCOUNT:category:id with a type, category and id as published in references of getBookingV1.statement.booking_type_invalid — An entry of booking-types was not one of the published booking types.statement.vat_filter_invalid — An entry of vat was not none, a VAT case id, or a VAT case id and a VAT rate id separated by a colon.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 The account number does not exist in the chart of accounts.
Error codes for this response (the code field of the response body):account.unknown — No account with this number exists in the chart of accounts.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
account.unknown — No account with this number exists in the chart of accounts.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/accounts/{accountCode}/sub-accountskey / tokenList the sub-accounts of one account, for example the bank accounts of 1020.
id within the account, a type (the kind of sub-account), a name, its position and whether KLARA created it by itself (predefined). Opening balance amounts are not included. Only accounts with sub-accounts can be listed; for any other account (for example 1170 input tax VAT) an internal service answers 400; an account that supports sub-accounts but has none gives an empty list. The list is short and not paged. This is a read-only, idempotent operation without side effects. Tenant and company are derived from the bearer token and are never accepted from the URL or the request. The caller must hold the ACCOUNTING permission on the company; otherwise the endpoint returns 403.operationId
listSubAccountsV1 — the method name a generated client uses.
Required permission
ACCOUNTING This comes from the description in the specification; the source code analysis behind the other permission statements is older than this endpoint. Roles that carry it: Administrator, External user, Buchhalter.
Parameters 1
| Name | Description |
|---|---|
accountCode required | Account number, as code in listAccountsV1. |
Responses 7
200 The sub-accounts of the account, possibly empty. show body
application/json array of PublicApiSubAccount
Array of PublicApiSubAccount.
idinteger (int64) format: int64 example: 1Id of the sub-account within its account. Missing for a row KLARA shows without storing it, for example "Various" of account 1140. Not the id of areference: a bank account of 1020 can have id 4 here and beBANK_ACCOUNT:7ingetAccountStatementV1; that reference is in the sub-account rows ofgetBalanceSheetV1.typestring example: BANKKind of sub-account as KLARA names it, for exampleBANK,TRANSFER,SOCIAL_INSURANCE,EQUITY,DOWN_PAYMENTS_RECEIVED,NOT_BILLED_SERVICES. New kinds can appear.namestring example: PostFinance AGName as KLARA shows it, for example the bank or the insurer.positioninteger (int32) format: int32 example: 1Position in the list of the account, as on the screen.predefinedboolean example: FalseTrue for the rows KLARA creates by itself, for example "Transfer account for salaries".ibanstring example: CH4609000000340027289OnlyBANK: IBAN of the bank account.insuranceTypestring example: BVGOnlySOCIAL_INSURANCE: kind of insurance, for exampleAHV,BVG,UVG.
400 accountCode is below 1, or the account has no sub-accounts.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 No account with this number exists in the chart of accounts.
Error codes for this response (the code field of the response body):account.unknown — No account with this number exists in the chart of accounts.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
account.unknown — No account with this number exists in the chart of accounts.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/booking-typeskey / tokenList KLARA master accounting booking types.
Accept-Language header selects which translation of the human-readable description is returned; if absent or unsupported the German translation is used as a fallback. The endpoint is a pure read — idempotent, no side effects. Any authenticated bearer token is accepted; the downstream service declares no role or permission requirement on this endpoint.operationId
listBookingTypesV1 — the method name a generated client uses.
Required permission
none A valid token is enough. No particular permission is checked for this endpoint.
Parameters 1
| Name | Description |
|---|---|
Accept-Language | IETF language tag used to resolve the localized description of each booking type. Examples: de-CH, fr-CH, it-CH, en. Falls back to the German translation when no translation exists for the requested language. |
Responses 4
200 Master booking types, ordered by code ascending. Empty array when the catalog has not been seeded yet. show body
application/json array of PublicApiBookingType
Array of PublicApiBookingType.
codeobject example: AP_INVOICEStable machine-readable code of the booking type.Allowed values:GENERAL_LEDGER,AP_INVOICE,AP_PAYMENT,AR_INVOICE,AR_PAYMENT,AP_PREPAYMENT,AP_PREPAYUSE,AR_PREPAYMENT,AR_PREPAYUSE,AR_CREDITNOTE,AR_CREDITUSE,AP_CREDITNOTE,AP_CREDITUSE,AMORTIZATION,SELLOFF_AMORTIZATION,DELIMITdescriptionstring example: KreditorenrechnungLocalized human-readable description of the booking type. Resolved against the request'sAccept-Languageheader; falls back to the German translation when no translation exists for the requested language.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/business-case-templateskey / tokenList KLARA master accounting business-case templates.
Accept-Language header selects which translation of the human-readable display label is returned; if absent or unsupported the German translation is used as a fallback and the full per-language i18n / keywordI18ns maps are returned for client-side rendering. Optional sort-field (comma-separated column names) / offset / limit query parameters are forwarded to the downstream catalog for ordering and pagination. The endpoint is a pure read — idempotent, no side effects. Requires a bearer token whose principal carries the ACCOUNTING_GET_BUSINESS_CASE_TEMPLATE permission.operationId
listBusinessCaseTemplatesV1 — the method name a generated client uses.
Required permission
ACCOUNTING_GET_BUSINESS_CASE_TEMPLATE
Available through: Administrator, External user, Mitarbeiter und Lohn, Buchhalter
Parameters 5
| Name | Description |
|---|---|
limit | Maximum number of templates to return. When omitted, the downstream service returns the full catalog. |
offset | Zero-based index of the first template to return. When omitted, the response starts at the first row. |
orderColumns | Renamed to sort-field. This name is accepted until 2027-09-01; when both are sent, sort-field wins. After that date, a request sending orderColumns without sort-field is rejected with 400.Deprecated — use sort-field instead, which takes the columns as one comma-separated value rather than as a repeated parameter. Names of columns to order the result by, ascending. Repeat this query parameter for multi-column ordering. |
sort-field | Comma-separated list of columns to order the result by, ascending (e.g. ?sort-field=group,code). This catalog orders ascending only, so it publishes no sort-direction. |
Accept-Language | IETF language tag used to resolve the localized display label of each template. Examples: de-CH, fr-CH, it-CH, en. Falls back to the German translation when no translation exists for the requested language. |
Responses 5
200 Business-case templates matching the supplied ordering and pagination. show body
application/json array of PublicApiBusinessCaseTemplate
Array of PublicApiBusinessCaseTemplate.
idinteger (int64) format: int64 example: 101Internal id of the template in the KLARA catalogue.codestring example: OFFICE_SUPPLIESStable catalogue code of the template.displaystring example: BürobedarfLabel of the template, already translated for the request's Accept-Language.i18nobjectAll translations of the label, keyed by IETF language tag.show fields
Open map with values of type
string.keywordI18nsobjectAll translations of the search keywords, keyed by IETF language tag.show fields
Open map with values of type
string.groupstring example: Operating expensesCatalogue group the template belongs to.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/business-case-templates/{businessCaseTemplateId}key / tokenRead a single KLARA master accounting business-case template by id.
Accept-Language header selects which translation of the human-readable display label is returned; if absent or unsupported the German translation is used as a fallback and the full per-language i18n / keywordI18ns maps are returned for client-side rendering. The endpoint is a pure read — idempotent, no side effects. Returns 404 when no template with the requested id exists in the catalog. Requires a bearer token whose principal carries the ACCOUNTING_GET_BUSINESS_CASE_TEMPLATE permission.operationId
getBusinessCaseTemplateByIdV1 — the method name a generated client uses.
Required permission
ACCOUNTING_GET_BUSINESS_CASE_TEMPLATE
Available through: Administrator, External user, Mitarbeiter und Lohn, Buchhalter
Parameters 2
| Name | Description |
|---|---|
businessCaseTemplateId required | Numeric primary-key id of the business-case template in the KLARA master catalog. Obtain it from a prior call to GET /core/v1/accounting/business-case-templates. |
Accept-Language | IETF language tag used to resolve the localized display label of the template. Examples: de-CH, fr-CH, it-CH, en. Falls back to the German translation when no translation exists for the requested language. |
Responses 6
200 Business-case template matching the supplied id. show body
application/json PublicApiBusinessCaseTemplate
idinteger (int64) format: int64 example: 101Internal id of the template in the KLARA catalogue.codestring example: OFFICE_SUPPLIESStable catalogue code of the template.displaystring example: BürobedarfLabel of the template, already translated for the request's Accept-Language.i18nobjectAll translations of the label, keyed by IETF language tag.show fields
Open map with values of type
string.keywordI18nsobjectAll translations of the search keywords, keyed by IETF language tag.show fields
Open map with values of type
string.groupstring example: Operating expensesCatalogue group the template belongs to.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 No business-case template carries the requested id.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/business-case-templates/{businessCaseTemplateId}/payment-sourceskey / tokenList the payment sources a business case template offers for one payment group.
id as paymentSourceId to bookDocumentAsPaidV1 with the same template, payment group and booking date. For EMPLOYEE each source also lists the payrollDates it can be reimbursed with. For OTHER the rows name the payment options without a source. The list is not paged; it is short. Read only. Tenant and company come from the token. The caller must hold the ACCOUNTING permission (an internal service); EMPLOYEE also needs COMPENSATION_GET_EMPLOYEE (an internal service), which accountant does not have.operationId
listBusinessCasePaymentSourcesV1 — the method name a generated client uses.
Required permission
ACCOUNTING This comes from the description in the specification; the source code analysis behind the other permission statements is older than this endpoint. Roles that carry it: Administrator, External user, Buchhalter.
Parameters 4
| Name | Description |
|---|---|
businessCaseTemplateId required | Business case template, from listCurrentCompanyBusinessCaseTemplatesV1. |
payment-group required | Payment group: BANK_ACCOUNT, CARD, CASHLESS_PAYMENT, CASH_REGISTER, EMPLOYEE, OTHER_PERSON, TRANSFER_ACCOUNT, OTHER. |
booking-date | Booking date (yyyy-MM-dd) that selects the fiscal year, as in the booking. Defaults to today. |
Accept-Language | Language of the source names, as for bookDocumentAsPaidV1: the first of de, fr, it, en in the header, otherwise English. Examples: de-CH, en. |
Responses 7
200 Payment sources of the template for the payment group. show body
application/json array of PublicApiPaymentSource
Array of PublicApiPaymentSource.
idstring example: 5Id to send aspaymentSourceIdtobookDocumentAsPaidV1with the same template, payment group and booking date.paymentGroupobject example: BANK_ACCOUNTHow the document was paid:BANK_ACCOUNTbank account,CARDdebit, credit or prepaid card,CASHLESS_PAYMENTcashless payment account,CASH_REGISTERcash register,EMPLOYEEpaid by an employee who is reimbursed through payroll,OTHER_PERSONpaid by another person,TRANSFER_ACCOUNTtransfer account,OTHERother payment without a source.displaystring example: PostFinance CHFName of the source as the Booking Workflow shows it, for example the bank account or the employee.payrollDatesarray of stringPayroll dates the employee can be reimbursed with; only forEMPLOYEE. Send one of them aspayrollDate.
400 payment-group is not an already paid option of the template, or booking-date is not an ISO date.
Error codes for this response (the code field of the response body):booking.booking_date_invalid — booking-date-from or booking-date-to was not an ISO date of the form yyyy-MM-dd, or booking-date-to was before booking-date-from; for a document booking, bookingDate or booking-date was not an ISO date of that form.businesscase.payment_group_not_offered — The business case template has no already paid option for the payment group, or the group is not available for the company (as in the Booking Workflow, for example EMPLOYEE without employees).
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
booking.booking_date_invalid — booking-date-from or booking-date-to was not an ISO date of the form yyyy-MM-dd, or booking-date-to was before booking-date-from; for a document booking, bookingDate or booking-date was not an ISO date of that form.businesscase.payment_group_not_offered — The business case template has no already paid option for the payment group, or the group is not available for the company (as in the Booking Workflow, for example EMPLOYEE without employees).application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Unknown business case template.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/business-caseskey / tokenHydrate a business case from a template id for the authenticated company.
dateForFilteringFiscalYear is supplied it drives the fiscal-year resolution; otherwise dateForFilteringCompanyVat is used; otherwise the downstream service resolves the fiscal year that covers today. Tenant and company are derived from the bearer-token session — they are never accepted from the URL. The endpoint is a pure read — idempotent, no side effects. The caller must hold the ACCOUNTING permission on the company in scope.operationId
hydrateBusinessCaseFromTemplateV1 — the method name a generated client uses.
Required permission
ACCOUNTING
Available through: Administrator, External user, Buchhalter
Parameters 4
| Name | Description |
|---|---|
businessCaseTemplateId required | Numeric id of the business-case template to hydrate. Obtain it from GET /core/v1/accounting/companies/current/business-case-templates. |
dateForFilteringCompanyVat | ISO date (yyyy-MM-dd) used to resolve the company-VAT regime applicable to the business case. Used as the fallback for dateForFilteringFiscalYear when that is omitted. |
dateForFilteringFiscalYear | ISO date (yyyy-MM-dd) used to resolve the fiscal year that hydrates the business case. When omitted, falls back to dateForFilteringCompanyVat; when both are omitted the downstream service resolves the fiscal year that covers today. |
Accept-Language | IETF language tag used to translate the snippet labels and field captions. Examples: de-CH, fr-CH, it-CH, en. |
Responses 7
200 Hydrated business-case aggregate for the requested template. show body
application/json PublicApiBusinessCase
businessCaseIdinteger (int64) format: int64 example: nullIdentifier of the business case instance when persisted; null on a freshly hydrated template.businessCaseTemplateIdinteger (int64) format: int64 example: 101Identifier of the business-case template this aggregate was hydrated from.documentIdstring example: nullIdentifier of the underlying document the business case is attached to; null when the booking is not yet linked to a document.displaystring example: BürobedarfPre-translated display label of the business-case template for the request's Accept-Language.bookingNumbersstring example:Comma-separated list of booking numbers already generated for this business case; empty on a fresh template.effectiveCompanyVatDatestring (date) format: date example: 2024-06-15Date used to resolve the company-VAT regime applicable to this business case (ISO yyyy-MM-dd).documentDatestring (date) format: date example: 2024-06-15Document date associated with the business case (ISO yyyy-MM-dd).effectiveFiscalYearDatestring (date) format: date example: 2024-06-15Date used to resolve the fiscal year applicable to this business case (ISO yyyy-MM-dd).fiscalYearHasCreatedAutoboolean example: FalseTrue when the downstream service had to auto-create the fiscal year covering the resolved date.withOPboolean example: FalseTrue when this business case is tracked as an open item (OP). May be null when not applicable.fieldsobjectRecursive snippet-and-field tree driving the booking form, keyed by snippet code. The shape of each entry follows the downstream BusinessCaseField model.show fields
Open map with values of type
object.entriesDefinitionarray of objectPer-field entries definitions used by the booking form to resolve enum-like fields. Each entry mirrors the downstream FieldEntriesDefinition model.show fields
Array of
object.Open map with values of type
object.
400 One of dateForFilteringFiscalYear / dateForFilteringCompanyVat is not a valid ISO date (yyyy-MM-dd), or the supplied businessCaseTemplateId is not valid for the company's legal form or VAT regime.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 No business-case template matches the supplied businessCaseTemplateId in the caller's company scope.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/business-cases/v2key / tokenHydrate a business case from a template id, scoped to a single snippet.
GET /core/v1/accounting/business-cases: hydrates only the template root plus the snippet identified by snippet-id, so the booking UI can stream the form one snippet at a time instead of loading the whole tree up-front. When dateForFilteringFiscalYear is supplied it drives the fiscal-year resolution; otherwise dateForFilteringCompanyVat is used; otherwise the downstream service resolves the fiscal year that covers today. When group-insurance-by-insurer is true (the default), social-insurance entries that share the same display + value pair are collapsed, keeping the entry with the smallest numeric id. Tenant and company are derived from the bearer-token session — they are never accepted from the URL. The endpoint is a pure read — idempotent, no side effects. The caller must hold the ACCOUNTING permission on the company in scope.operationId
hydrateBusinessCaseFromTemplateForSnippetV1 — the method name a generated client uses.
Required permission
ACCOUNTING
Available through: Administrator, External user, Buchhalter
Parameters 7
| Name | Description |
|---|---|
businessCaseTemplateId required | Numeric id of the business-case template to hydrate. Obtain it from GET /core/v1/accounting/companies/current/business-case-templates. |
dateForFilteringCompanyVat | ISO date (yyyy-MM-dd) used to resolve the company-VAT regime applicable to the business case. Used as the fallback for dateForFilteringFiscalYear when that is omitted. |
dateForFilteringFiscalYear | ISO date (yyyy-MM-dd) used to resolve the fiscal year that hydrates the business case. When omitted, falls back to dateForFilteringCompanyVat; when both are omitted the downstream service resolves the fiscal year that covers today. |
group-insurance-by-insurer | When true, collapses social-insurance entries that share the same display + value pair, keeping the entry with the smallest numeric id. Defaults to true. Allowed values: true, false. |
snippet-id | Numeric id of the snippet currently activated by the user; v2 hydrates only this snippet plus the template root. When omitted, only the template root is hydrated. |
snippet-value | Currently ignored on the downstream side; reserved for a future optimisation that would load external entries only for the activated value (for example, payment dates of a single employee). Safe to omit. |
Accept-Language | IETF language tag used to translate the snippet labels and field captions. Examples: de-CH, fr-CH, it-CH, en. |
Responses 7
200 Hydrated business-case aggregate for the requested template and snippet. show body
application/json PublicApiBusinessCase
businessCaseIdinteger (int64) format: int64 example: nullIdentifier of the business case instance when persisted; null on a freshly hydrated template.businessCaseTemplateIdinteger (int64) format: int64 example: 101Identifier of the business-case template this aggregate was hydrated from.documentIdstring example: nullIdentifier of the underlying document the business case is attached to; null when the booking is not yet linked to a document.displaystring example: BürobedarfPre-translated display label of the business-case template for the request's Accept-Language.bookingNumbersstring example:Comma-separated list of booking numbers already generated for this business case; empty on a fresh template.effectiveCompanyVatDatestring (date) format: date example: 2024-06-15Date used to resolve the company-VAT regime applicable to this business case (ISO yyyy-MM-dd).documentDatestring (date) format: date example: 2024-06-15Document date associated with the business case (ISO yyyy-MM-dd).effectiveFiscalYearDatestring (date) format: date example: 2024-06-15Date used to resolve the fiscal year applicable to this business case (ISO yyyy-MM-dd).fiscalYearHasCreatedAutoboolean example: FalseTrue when the downstream service had to auto-create the fiscal year covering the resolved date.withOPboolean example: FalseTrue when this business case is tracked as an open item (OP). May be null when not applicable.fieldsobjectRecursive snippet-and-field tree driving the booking form, keyed by snippet code. The shape of each entry follows the downstream BusinessCaseField model.show fields
Open map with values of type
object.entriesDefinitionarray of objectPer-field entries definitions used by the booking form to resolve enum-like fields. Each entry mirrors the downstream FieldEntriesDefinition model.show fields
Array of
object.Open map with values of type
object.
400 One of dateForFilteringFiscalYear / dateForFilteringCompanyVat is not a valid ISO date (yyyy-MM-dd), or the supplied businessCaseTemplateId is not valid for the company's legal form or VAT regime.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 No business-case template matches the supplied businessCaseTemplateId in the caller's company scope.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/business-cases/{businessCaseId}key / tokenRead a persisted business-case instance by its id for the authenticated company.
businessCaseId is matched against the caller's company so that an id owned by another company surfaces as 404. The endpoint is a pure read — idempotent, no side effects. The caller must hold the ACCOUNTING permission on the company in scope.operationId
getBusinessCaseByIdV1 — the method name a generated client uses.
Required permission
ACCOUNTING
Available through: Administrator, External user, Buchhalter
Parameters 2
| Name | Description |
|---|---|
businessCaseId required | Numeric primary-key id of the persisted business-case instance to hydrate. Obtain it from a prior booking response (for example POST /core/v1/accounting/bookings) or from a journal listing. |
Accept-Language | IETF language tag used to translate the snippet labels and field captions. Examples: de-CH, fr-CH, it-CH, en. |
Responses 7
200 Hydrated business-case aggregate for the requested id. show body
application/json PublicApiBusinessCase
businessCaseIdinteger (int64) format: int64 example: nullIdentifier of the business case instance when persisted; null on a freshly hydrated template.businessCaseTemplateIdinteger (int64) format: int64 example: 101Identifier of the business-case template this aggregate was hydrated from.documentIdstring example: nullIdentifier of the underlying document the business case is attached to; null when the booking is not yet linked to a document.displaystring example: BürobedarfPre-translated display label of the business-case template for the request's Accept-Language.bookingNumbersstring example:Comma-separated list of booking numbers already generated for this business case; empty on a fresh template.effectiveCompanyVatDatestring (date) format: date example: 2024-06-15Date used to resolve the company-VAT regime applicable to this business case (ISO yyyy-MM-dd).documentDatestring (date) format: date example: 2024-06-15Document date associated with the business case (ISO yyyy-MM-dd).effectiveFiscalYearDatestring (date) format: date example: 2024-06-15Date used to resolve the fiscal year applicable to this business case (ISO yyyy-MM-dd).fiscalYearHasCreatedAutoboolean example: FalseTrue when the downstream service had to auto-create the fiscal year covering the resolved date.withOPboolean example: FalseTrue when this business case is tracked as an open item (OP). May be null when not applicable.fieldsobjectRecursive snippet-and-field tree driving the booking form, keyed by snippet code. The shape of each entry follows the downstream BusinessCaseField model.show fields
Open map with values of type
object.entriesDefinitionarray of objectPer-field entries definitions used by the booking form to resolve enum-like fields. Each entry mirrors the downstream FieldEntriesDefinition model.show fields
Array of
object.Open map with values of type
object.
400 The supplied businessCaseId is not a valid numeric id.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 No business case matches the supplied businessCaseId in the caller's company scope.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/companies/currentkey / tokenGet the accounting configuration of the authenticated company.
id = null, waitingDunningTime = 5, dunningWaitingTimeLevelOne / Two / Three = 10) so the response shape stays the same. The endpoint is a pure read — idempotent, no side effects. The caller must hold the ACCOUNTING permission on the company in scope.operationId
getCurrentAccountingCompanyV1 — the method name a generated client uses.
Required permission
ACCOUNTING
Available through: Administrator, External user, Buchhalter
Responses 6
200 Accounting configuration of the caller's company. show body
application/json PublicApiAccountingCompany
idinteger (int64) format: int64 example: 17Internal id of the accounting-configuration row. Null when no configuration has been persisted yet for the company.companyUristring example: /luz_compensation/api/c60d31fa-f335-4957-872a-90b035632081/companies/1Canonical compensation-side URI of the company, of the form /…/{tenant}/companies/{companyId}.waitingDunningTimeinteger (int64) format: int64 example: 5Number of days to wait after the invoice due date before starting the dunning cycle. Defaults to 5 when no configuration exists yet.dunningWaitingTimeLevelOneinteger (int64) format: int64 example: 10Days to wait between the level-1 dunning notice and the level-2 escalation. Defaults to 10 when no configuration exists yet.dunningWaitingTimeLevelTwointeger (int64) format: int64 example: 10Days to wait between the level-2 dunning notice and the level-3 escalation. Defaults to 10 when no configuration exists yet.dunningWaitingTimeLevelThreeinteger (int64) format: int64 example: 10Days to wait between the level-3 dunning notice and the final escalation. Defaults to 10 when no configuration exists yet.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 The company associated with the caller's session could not be resolved by the downstream accounting service.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/companies/current/business-case-templateskey / tokenList business-case templates available to the authenticated company, grouped by financial-year period.
periodFrom / periodTo, the company's legalForm and active VAT regime, and the templates that pass the legal-form / VAT-regime filters for that period. Templates are sorted by code; the display field is pre-translated using the Accept-Language header and the full per-language map is also returned in i18n / keywordI18ns. Tenant and company are derived from the bearer token — there are no path or query parameters to override them. The endpoint is a pure read — idempotent, no side effects. The caller must hold the ACCOUNTING permission on the company in scope.operationId
listCurrentCompanyBusinessCaseTemplatesV1 — the method name a generated client uses.
Required permission
ACCOUNTING
Available through: Administrator, External user, Buchhalter
Parameters 1
| Name | Description |
|---|---|
Accept-Language | IETF language tag used to translate the display field of each template. Examples: de-CH, fr-CH, it-CH, en. |
Responses 6
200 Business-case templates grouped by financial-year period. May be an empty array when the company has no open fiscal year yet. show body
application/json array of PublicApiBusinessCasePeriod
Array of PublicApiBusinessCasePeriod.
companyIdinteger (int64) format: int64 example: 1Internal id of the company this period belongs to.periodFromstring (date) format: date example: 2024-01-01Inclusive start date of the financial year (ISO yyyy-MM-dd).periodTostring (date) format: date example: 2024-12-31Inclusive end date of the financial year (ISO yyyy-MM-dd).legalFormstring example: EINZELLegal form of the company during this period. Allowed values include EINZEL, GMBH, AG, KOLLEKTIV, KOMMANDIT, GENOSSENSCHAFT, VEREIN, STIFTUNG.companyVatobjectVAT regime of a company within a fiscal period.show fields
idinteger (int64) format: int64 example: 42Internal id of the company VAT row.reportingVatstring example: EFFECTIVEReporting method used to declare VAT. Allowed values: EFFECTIVE, NET_TAX_RATE, FLAT_TAX_RATE.billingstring example: AGREEDBilling method used to determine VAT liability. Allowed values: AGREED, RECEIVED.codestring example: EFFECTIVE_AGREEDComposite VAT code combining reporting method and billing, or NON_VAT when the company is not VAT-liable.hasVatboolean example: TrueTrue when the company is VAT-liable in this period.validFromstring (date) format: date example: 2024-01-01Inclusive start date of the VAT regime (ISO yyyy-MM-dd).validTostring (date) format: date example: 2024-12-31Inclusive end date of the VAT regime (ISO yyyy-MM-dd).yearlySettlementboolean example: FalseTrue for yearly VAT settlement, false for quarterly/semi-annual.
statusstring example: OPENStatus of the fiscal year. Allowed values: OPEN, CLOSING, CLOSED.businessCaseTemplatesarray of PublicApiBusinessCaseTemplateBusiness-case templates valid for the company's legal form and VAT regime within this period, sorted by code.show fields
Array of
PublicApiBusinessCaseTemplate.idinteger (int64) format: int64 example: 101Internal id of the template in the KLARA catalogue.codestring example: OFFICE_SUPPLIESStable catalogue code of the template.displaystring example: BürobedarfLabel of the template, already translated for the request's Accept-Language.i18nobjectAll translations of the label, keyed by IETF language tag.show fields
Open map with values of type
string.keywordI18nsobjectAll translations of the search keywords, keyed by IETF language tag.show fields
Open map with values of type
string.groupstring example: Operating expensesCatalogue group the template belongs to.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 The company associated with the caller's session could not be resolved by the downstream accounting service.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/companies/current/financial-yearskey / tokenList active financial-year periods of the authenticated company.
OPEN or CLOSING), one entry per legal-form / VAT-regime combination valid in the period. When every period shares the same legalForm and VAT regime the downstream service collapses them into a single aggregated period with periodFrom set to the earliest start date and periodTo set to the latest end date; otherwise the individual periods are returned. The businessCaseTemplates field is intentionally left empty on this endpoint — use GET /core/v1/accounting/companies/current/business-case-templates to retrieve the templates valid per period. Tenant and company are derived from the bearer token — there are no path or query parameters to override them. The endpoint is a pure read — idempotent, no side effects. The caller must hold the ACCOUNTING permission on the company in scope.operationId
listCurrentCompanyFinancialYearsV1 — the method name a generated client uses.
Required permission
ACCOUNTING
Available through: Administrator, External user, Buchhalter
Parameters 1
| Name | Description |
|---|---|
Accept-Language | IETF language tag forwarded to the downstream accounting service. Examples: de-CH, fr-CH, it-CH, en. |
Responses 6
200 Active financial-year periods of the caller's company. May be an empty array when the company has no open fiscal year yet. show body
application/json array of PublicApiBusinessCasePeriod
Array of PublicApiBusinessCasePeriod.
companyIdinteger (int64) format: int64 example: 1Internal id of the company this period belongs to.periodFromstring (date) format: date example: 2024-01-01Inclusive start date of the financial year (ISO yyyy-MM-dd).periodTostring (date) format: date example: 2024-12-31Inclusive end date of the financial year (ISO yyyy-MM-dd).legalFormstring example: EINZELLegal form of the company during this period. Allowed values include EINZEL, GMBH, AG, KOLLEKTIV, KOMMANDIT, GENOSSENSCHAFT, VEREIN, STIFTUNG.companyVatobjectVAT regime of a company within a fiscal period.show fields
idinteger (int64) format: int64 example: 42Internal id of the company VAT row.reportingVatstring example: EFFECTIVEReporting method used to declare VAT. Allowed values: EFFECTIVE, NET_TAX_RATE, FLAT_TAX_RATE.billingstring example: AGREEDBilling method used to determine VAT liability. Allowed values: AGREED, RECEIVED.codestring example: EFFECTIVE_AGREEDComposite VAT code combining reporting method and billing, or NON_VAT when the company is not VAT-liable.hasVatboolean example: TrueTrue when the company is VAT-liable in this period.validFromstring (date) format: date example: 2024-01-01Inclusive start date of the VAT regime (ISO yyyy-MM-dd).validTostring (date) format: date example: 2024-12-31Inclusive end date of the VAT regime (ISO yyyy-MM-dd).yearlySettlementboolean example: FalseTrue for yearly VAT settlement, false for quarterly/semi-annual.
statusstring example: OPENStatus of the fiscal year. Allowed values: OPEN, CLOSING, CLOSED.businessCaseTemplatesarray of PublicApiBusinessCaseTemplateBusiness-case templates valid for the company's legal form and VAT regime within this period, sorted by code.show fields
Array of
PublicApiBusinessCaseTemplate.idinteger (int64) format: int64 example: 101Internal id of the template in the KLARA catalogue.codestring example: OFFICE_SUPPLIESStable catalogue code of the template.displaystring example: BürobedarfLabel of the template, already translated for the request's Accept-Language.i18nobjectAll translations of the label, keyed by IETF language tag.show fields
Open map with values of type
string.keywordI18nsobjectAll translations of the search keywords, keyed by IETF language tag.show fields
Open map with values of type
string.groupstring example: Operating expensesCatalogue group the template belongs to.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 The company associated with the caller's session could not be resolved by the downstream accounting service.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/currencies/exchange-ratekey / tokenGet the CHF exchange rate for a currency on a given date.
from-currency-code into CHF on exchange-date. When from-currency-code equals CHF (case-insensitive) the rate is always 1. The exchange-rate table is global SNB data — the same response is returned for every tenant, so there are no tenant or company path parameters. If no rate is stored for the requested day, the downstream service transparently fetches the SNB feed for that date and persists the result; if the feed has no entry either, the most recent rate strictly before exchange-date is returned instead. The endpoint is a pure read for the caller — idempotent. Requires a bearer token whose principal carries the ACCOUNTING permission.operationId
getExchangeRateV1 — the method name a generated client uses.
Required permission
ACCOUNTING
Available through: Administrator, External user, Buchhalter
Parameters 2
| Name | Description |
|---|---|
exchange-date required | Reference date for the exchange rate, expressed as an ISO-8601 calendar date (yyyy-MM-dd). |
from-currency-code required | ISO-4217 alpha-3 currency code of the source amount. Case-insensitive; CHF short-circuits to a rate of 1. |
Responses 5
200 Exchange rate as a JSON number; the value 1 when from-currency-code is CHF. show body
application/json number
400 exchange-date is not a valid ISO-8601 calendar date, or no rate could be resolved for the supplied from-currency-code.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/v1/accounting/document-bookings/paidkey / tokenBook an uploaded document through a business case as already paid.
listCurrentCompanyBusinessCaseTemplatesV1); asset purchase, current account, transfer account, tax and social insurance templates answer 400 businesscase.template_not_supported. Take paymentSourceId from listBusinessCasePaymentSourcesV1, and vatCaseId and vatRateId from the entries vatCase and vatRate of hydrateBusinessCaseFromTemplateForSnippetV1. Optional fields follow the Booking Workflow: servicePeriodFrom/servicePeriodTo, dueDate, paymentPurpose, internalComment and text are accepted only where the template and the payment option show that field, otherwise 400 businesscase.field_not_offered; nothing is dropped silently. Booking texts are written in the language of Accept-Language (de, fr, it, en), English without it; send the language of the KLARA user. A document that is not in the booking queue or is already booked answers 409. No operation undoes the booking. Tenant and company come from the token. Documents stored in the KLARA eArchive are not supported yet (400 document.archive_not_supported). Permissions: the caller must hold ACCOUNTING (an internal service), must have one of the roles company_administrator, trusted_user, accountant, customer_relationship_manager for the document checks (an internal service), and needs FINANCE_GET_CUSTOMER to read the partner (an internal service); the payment group EMPLOYEE also needs COMPENSATION_GET_EMPLOYEE, which accountant does not have. Agents: this call creates a booking in the general ledger and, for EMPLOYEE, a reimbursement request in payroll; ask the user for explicit confirmation first.operationId
bookDocumentAsPaidV1 — the method name a generated client uses.
Required permission
ACCOUNTING FINANCE_GET_CUSTOMER This comes from the description in the specification; the source code analysis behind the other permission statements is older than this endpoint. Roles that carry it: Administrator, External user, Buchhalter.
Parameters 2
| Name | Description |
|---|---|
confirm-closing-fiscal-year | Book into a fiscal year in status closing. Without it such a booking is rejected with 400 (fiscal.year.is.closing). A sealed fiscal year is always rejected. |
Accept-Language | Language of the booking texts KLARA writes (for example "Verbindlichkeit Leistungsperiode") and of error texts from an internal service: the first of de, fr, it, en in the header. Without the header, or with none of these languages, English. Send the language of the KLARA user. Examples: de-CH, fr. |
Request body required
application/json PublicApiDocumentBookingPaid
documentIdstring required pattern: \S example: 9007199254Id of the document in the booking queue, as returned by the document upload. Documents stored in the KLARA eArchive are not supported yet (400 document.archive_not_supported).businessCaseTemplateIdinteger (int64) required format: int64 min: 1 example: 30343Business case template, fromlistCurrentCompanyBusinessCaseTemplatesV1for the booking date. Supported: expense templates with a supplier and revenue templates with a customer.bookingDatestring required maxLength: 10 pattern: \S example: 2026-10-20Document date (yyyy-MM-dd). It also selects the fiscal year and the company VAT settings.grossAmountnumber required pattern: ^\d{1,13}([.]\d{1,2})?$ example: 107.7Gross amount of the document in CHF, VAT included. Must not be zero; negative for a correction.vatCaseIdstring maxLength: 255 example: 7VAT case of the line: theidof an entry withentriesReferencevatCaseinhydrateBusinessCaseFromTemplateForSnippetV1. Required for VAT templates.vatRateIdstring maxLength: 255 example: 41VAT rate of the line: theidof an entry withentriesReferencevatRatethat belongs to the VAT case. Required for VAT templates.partnerIdinteger (int64) required format: int64 min: 1 example: 1234Supplier (expense templates) or customer (revenue templates): the customer id fromlistCustomers.tagsarray of string required minItems: 1 maxItems: 20Tags of the booking, at least one, as in the Booking Workflow. A tag must not contain a comma.textstring maxLength: 140 example: Printer paperBooking text (subject). Revenue templates have it; a template without it answers400 businesscase.field_not_offered.servicePeriodFromstring maxLength: 10 example: 2026-10-01Start of the service period (yyyy-MM-dd), together withservicePeriodTo. As in the Booking Workflow, it is set on the document and on the booking line, and a VAT rate is accepted when its validity overlaps the period or coversbookingDate.servicePeriodTostring maxLength: 10 example: 2026-12-31End of the service period (yyyy-MM-dd), not beforeservicePeriodFrom.paymentGroupobject required example: BANK_ACCOUNTHow the document was paid:BANK_ACCOUNTbank account,CARDdebit, credit or prepaid card,CASHLESS_PAYMENTcashless payment account,CASH_REGISTERcash register,EMPLOYEEpaid by an employee who is reimbursed through payroll,OTHER_PERSONpaid by another person,TRANSFER_ACCOUNTtransfer account,OTHERother payment without a source.paymentSourceIdstring maxLength: 512 example: 5Source of the payment: theidfromlistBusinessCasePaymentSourcesV1for the same template, payment group and booking date. Required except forOTHER.paymentDatestring maxLength: 10 example: 2026-10-21Payment date (yyyy-MM-dd). Required where the payment option has one: bank account, card, cash register, cashless payment, transfer account.payrollDatestring maxLength: 32 example: 31.10.2026Payroll date the employee is reimbursed with, one ofpayrollDatesof the source. Required forEMPLOYEE.dueDatestring maxLength: 10 example: 2026-11-20Due date of the document (yyyy-MM-dd), where the payment option has one, for example bank account and card. Otherwise400 businesscase.field_not_offered.paymentPurposestring maxLength: 140 example: Travel expenses OctoberPayment purpose of the reimbursement, only forEMPLOYEE, as in the Booking Workflow. Otherwise400 businesscase.field_not_offered.internalCommentstring maxLength: 5000 example: Approved by the team leadInternal remark, stored on the booking (internalCommentofgetBookingV1). Every already paid option of an expense template has it; otherwise400 businesscase.field_not_offered.
Responses 8
201 The document was booked. documentMoveStatus says whether it left the booking queue. show body
application/json PublicApiDocumentBookingResult
bookingIdinteger (int64) format: int64 example: 912345Id of the created booking; read it withgetBookingV1.businessCaseIdinteger (int64) format: int64 example: 48211Id of the created business case; read it withgetBusinessCaseByIdV1.documentMoveStatusobject example: MOVEDWhether the document was taken out of the booking queue after the booking:MOVEDit now shows under the booked documents,FAILEDit could not be moved and still shows in the queue,NOT_FOUNDthe file was not found. The booking is kept in every case.reimbursementRequestedboolean example: Falsetruewhen a reimbursement request was sent to payroll (payment groupEMPLOYEE).
400 Invalid input, a template or payment option this operation does not support, or a rule of an internal service (for example a closed or sealed fiscal year, a missing subscription, a zero payment amount).
Error codes for this response (the code field of the response body):booking.booking_date_invalid — booking-date-from or booking-date-to was not an ISO date of the form yyyy-MM-dd, or booking-date-to was before booking-date-from; for a document booking, bookingDate or booking-date was not an ISO date of that form.booking.payment_date_invalid — paymentDate was not an ISO date of the form yyyy-MM-dd.booking.payment_date_missing — The chosen payment option has a payment date (bank account, card, cash register, cashless payment, transfer account) and paymentDate was not sent.booking.due_date_invalid — dueDate was not an ISO date of the form yyyy-MM-dd.booking.service_period_invalid — servicePeriodFrom or servicePeriodTo was not an ISO date of the form yyyy-MM-dd, only one of them was sent, or servicePeriodTo was before servicePeriodFrom.booking.amount_zero — grossAmount was zero. The Booking Workflow does not book a document of zero; a negative amount is accepted for a correction.document.archive_not_supported — The document is stored in the KLARA eArchive. bookDocumentAsPaidV1 does not book eArchive documents yet; they are booked in the web app.businesscase.template_not_supported — The business case template is not offered by the Booking Workflow for the booking date, or it needs input this operation does not take (asset purchase, current account, transfer account, tax and social insurance templates). The message names the missing input.businesscase.payment_group_not_offered — The business case template has no already paid option for the payment group, or the group is not available for the company (as in the Booking Workflow, for example EMPLOYEE without employees).businesscase.vat_entry_unknown — vatCaseId or vatRateId was missing on a VAT template, or is not one of its entries, or the rate does not belong to the case, or the rate is valid neither on bookingDate nor within the service period.businesscase.field_not_offered — A value was sent that the chosen template and payment option do not have (text, servicePeriodFrom, dueDate, paymentPurpose or internalComment). The Booking Workflow does not show that field for this choice; the message names it.businesscase.payroll_date_unknown — payrollDate was missing for EMPLOYEE or is not one of the payroll dates of the employee.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
booking.booking_date_invalid — booking-date-from or booking-date-to was not an ISO date of the form yyyy-MM-dd, or booking-date-to was before booking-date-from; for a document booking, bookingDate or booking-date was not an ISO date of that form.booking.payment_date_invalid — paymentDate was not an ISO date of the form yyyy-MM-dd.booking.payment_date_missing — The chosen payment option has a payment date (bank account, card, cash register, cashless payment, transfer account) and paymentDate was not sent.booking.due_date_invalid — dueDate was not an ISO date of the form yyyy-MM-dd.booking.service_period_invalid — servicePeriodFrom or servicePeriodTo was not an ISO date of the form yyyy-MM-dd, only one of them was sent, or servicePeriodTo was before servicePeriodFrom.booking.amount_zero — grossAmount was zero. The Booking Workflow does not book a document of zero; a negative amount is accepted for a correction.document.archive_not_supported — The document is stored in the KLARA eArchive. bookDocumentAsPaidV1 does not book eArchive documents yet; they are booked in the web app.businesscase.template_not_supported — The business case template is not offered by the Booking Workflow for the booking date, or it needs input this operation does not take (asset purchase, current account, transfer account, tax and social insurance templates). The message names the missing input.businesscase.payment_group_not_offered — The business case template has no already paid option for the payment group, or the group is not available for the company (as in the Booking Workflow, for example EMPLOYEE without employees).businesscase.vat_entry_unknown — vatCaseId or vatRateId was missing on a VAT template, or is not one of its entries, or the rate does not belong to the case, or the rate is valid neither on bookingDate nor within the service period.businesscase.field_not_offered — A value was sent that the chosen template and payment option do not have (text, servicePeriodFrom, dueDate, paymentPurpose or internalComment). The Booking Workflow does not show that field for this choice; the message names it.businesscase.payroll_date_unknown — payrollDate was missing for EMPLOYEE or is not one of the payroll dates of the employee.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Unknown document, payment source or partner in the caller's company.
Error codes for this response (the code field of the response body):document.unknown — No document with this id exists in the caller's company.businesscase.payment_source_unknown — paymentSourceId was missing or is not one of the sources listBusinessCasePaymentSourcesV1 returns for this template, payment group and booking date.businesscase.partner_unknown — No customer or supplier with partnerId exists in the caller's company.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
document.unknown — No document with this id exists in the caller's company.businesscase.payment_source_unknown — paymentSourceId was missing or is not one of the sources listBusinessCasePaymentSourcesV1 returns for this template, payment group and booking date.businesscase.partner_unknown — No customer or supplier with partnerId exists in the caller's company.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
409 The document is not waiting in the booking queue, or it is already booked (document.already.booked, decided by an internal service).
Error codes for this response (the code field of the response body):document.not_in_booking_queue — The document is not waiting in the booking queue, for example because it is already booked.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
document.not_in_booking_queue — The document is not waiting in the booking queue, for example because it is already booked.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/fiscal-yearskey / tokenList the fiscal years of the company with their status.
OPEN, CLOSING, SEALED), plus the sealing date of a sealed year. Use it to find the fiscal year a date falls into before booking: createBookingV1 accepts an OPEN year, asks for confirmDontMindClosingFiscalYear in a CLOSING year and rejects a SEALED one. Opening balances are not part of the answer. search-key keeps the fiscal years whose name contains every word of the search text, case-insensitive. Uses the standard collection parameters: search-key, offset (default 0), limit (default 50, maximum 100), sort-field (only and default FISCAL_FROM) and sort-direction (default DESC, latest year first). The number of fiscal years matching the filters, ignoring offset and limit, is returned in the X-Total-Count header. This is a read-only, idempotent operation without side effects. Tenant and company are derived from the bearer token and are never accepted from the URL or the request. The caller must hold the ACCOUNTING permission on the company; otherwise the endpoint returns 403.operationId
listFiscalYearsV1 — the method name a generated client uses.
Required permission
ACCOUNTING This comes from the description in the specification; the source code analysis behind the other permission statements is older than this endpoint. Roles that carry it: Administrator, External user, Buchhalter.
Parameters 6
| Name | Description |
|---|---|
limit | Page size. Defaults to 50; hard cap 100. Requests above the cap are rejected with 400. |
offset | 0-based pagination offset — the number of rows to skip before the returned page. Defaults to 0. Combine with limit to walk the full collection. |
search-key | Free-text search. The fields searched are documented per endpoint. Matches are case-insensitive substring matches. Maximum length 256 characters. |
sort-direction | Sort direction. Allowed values: ASC, DESC. Defaults to DESC.Allowed values: ASC, DESC |
sort-field | Field to order the result by. The accepted values are listed per endpoint; an unknown value is rejected with 400. Each endpoint documents the default it applies, chosen so that paging with offset / limit is stable. |
status | Keep only the fiscal years with this status, case-insensitive. Allowed values: OPEN, CLOSING, SEALED. All fiscal years when omitted.Allowed values: OPEN, CLOSING, SEALED |
Responses 6
200 One page of fiscal years, ordered by first day in sort-direction (default DESC, latest first). Empty array when the company has no accounting set up or nothing matches the filters. show body
application/json array of PublicApiFiscalYear
Array of PublicApiFiscalYear.
idinteger (int64) format: int64 example: 1Id of the fiscal year.namestring example: 2026Name of the fiscal year as shown in KLARA.fiscalFromstring (date) format: date example: 2026-01-01First day of the fiscal year.fiscalTostring (date) format: date example: 2026-12-31Last day of the fiscal year.statusstring example: OPENStatus of the fiscal year.OPEN: bookings can be added.CLOSING: the year-end closing has started;createBookingV1books into it only withconfirmDontMindClosingFiscalYear=true.SEALED: the year is closed and takes no new bookings.Allowed values:OPEN,CLOSING,SEALEDlegalFormstring example: CORPORATIONLegal form of the company in this fiscal year.Allowed values:LIMITED_LIABILITY,CORPORATION,OR,INDIVIDUALLY_OWNED_COMPANY,ASSOCIATION,SIMPLE_PARTNERSHIP,GENERAL_PARTNERSHIP,LIMITED_PARTNERSHIP,COOPERATIVE_COMPANY,FOUNDATIONfirstFiscalYearboolean example: FalseTrue for the first fiscal year of the company.sealingDatestring (date) format: date nullable example: 2027-03-15Day the fiscal year was sealed;nullunlessstatusisSEALED.
400 sort-field is not FISCAL_FROM, or a parameter is outside its bounds (status not OPEN, CLOSING or SEALED, search-key longer than 256 characters, offset negative, limit outside 1-100, sort-direction not ASC or DESC).
Error codes for this response (the code field of the response body):request.sort_field_invalid — sort-field was not one of the values the operation documents. The message lists the accepted values.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
request.sort_field_invalid — sort-field was not one of the values the operation documents. The message lists the accepted values.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/kpis/income-expenseskey / tokenGet the company's income and expenses per month for a period.
date-from to date-to, with the totals of the period, as the widget "Income and expenses" on the accounting dashboard shows them. Both dates are included; the period can be any range, it does not have to match a financial year (see listCurrentCompanyFinancialYears); bookings count by their booking date. Every calendar month touched by the period is listed in ascending order, also months without bookings (0.00); the first and last month cover only the days inside the period. A month is negative when the net amount is on the other side (for example more credit notes than invoices). include-delimitation=false leaves out delimitation bookings (accruals and deferrals). Depreciation (68), financial result (69), ancillary and non-operating result (70, 80, 85) and direct taxes (89) are not included; getProfitAndLossV1 returns the full result. The money spent and money earned breakdown of the dashboard is getSpendingsAndEarningsV1: for the same period and delimitation, totalIncome equals its earnings.amount and totalExpenses its spendings.amount (account 6000 is the only posting account of chart group 60 in KLARA's chart of accounts). This is a read-only, idempotent operation without side effects. Tenant and company are derived from the bearer token and are never accepted from the URL or the request. The caller must hold the ACCOUNTING permission on the company; otherwise the endpoint returns 403.operationId
getIncomeExpensesV1 — the method name a generated client uses.
Required permission
ACCOUNTING This comes from the description in the specification; the source code analysis behind the other permission statements is older than this endpoint. Roles that carry it: Administrator, External user, Buchhalter.
Parameters 3
| Name | Description |
|---|---|
date-from required | First booking date of the period, inclusive, ISO yyyy-MM-dd. |
date-to required | Last booking date of the period, inclusive, ISO yyyy-MM-dd; not before date-from. |
include-delimitation | false leaves out delimitation bookings (accruals and deferrals); included by default, as on the dashboard. |
Responses 6
200 Income and expenses per month of the period, with the totals. show body
application/json PublicApiIncomeExpenses
dateFromstring (date) format: date example: 2025-01-01First day of the period, as requested.dateTostring (date) format: date example: 2025-12-31Last day of the period, as requested.totalIncomenumber example: 214800Operating revenue of the period in CHF (chart group 30, credit positive).totalExpensesnumber example: 187320.4Operating expenses of the period in CHF (chart groups 40, 50, 60, debit positive).monthsarray of PublicApiIncomeExpensesMonthEvery calendar month touched by the period, ascending, also months without bookings (0.00).show fields
Array of
PublicApiIncomeExpensesMonth.monthstring example: 2025-03Calendar month, yyyy-MM. The first and the last month of the period cover only the days inside the period.incomenumber example: 18250Operating revenue of the month in CHF: lines on accounts of chart group 30 by booking date, credit positive; negative when the net amount is on the debit side.expensesnumber example: 14980.5Operating expenses of the month in CHF: lines on accounts of chart groups 40, 50 and 60 by booking date, debit positive; negative when the net amount is on the credit side.
400 date-from or date-to is missing or not an ISO date yyyy-MM-dd, or date-to is before date-from (code kpi.date_invalid).
Error codes for this response (the code field of the response body):kpi.date_invalid — date-from or date-to was missing or not an ISO date of the form yyyy-MM-dd with a year from 0001, or date-to was before date-from; for getSpendingsAndEarningsV1 also when the comparison period was incomplete, not of that form or reversed, or the default comparison period would start before the year 0001.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
kpi.date_invalid — date-from or date-to was missing or not an ISO date of the form yyyy-MM-dd with a year from 0001, or date-to was before date-from; for getSpendingsAndEarningsV1 also when the comparison period was incomplete, not of that form or reversed, or the default comparison period would start before the year 0001.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/kpis/spendings-and-earningskey / tokenGet the company's spendings and earnings for a period, compared with a previous period.
date-from to date-to, the spendings in three categories - MATERIAL (chart group 40), LABOR (chart group 50) and OTHER_OPERATING_EXPENSE (account 6000, the posting account of chart group 60) - and the earnings in the category REVENUE (chart group 30), as the widgets "Money spent" and "Money earned" on the accounting dashboard show them: each category with its accounts and, per account, the booking tags as a tree. Every row carries amount for the period, compareAmount for the comparison period and changePercent as the dashboard computes it (0 when both amounts are equal, -100 when amount is 0, +100 when compareAmount is 0, otherwise (amount - compareAmount) x 100 / |compareAmount|, two decimals); because of the two special cases it is not a true percentage when one side is 0, so compute your own from amount and compareAmount if you need one. Without compare-from and compare-to the comparison period has the same number of days as the period and ends the day before date-from, as on the dashboard; it is counted in days, not in calendar months: 2025-04-01 to 2025-06-30 compares with 2024-12-31 to 2025-03-31, and the year 2025 with 2024-01-02 to 2024-12-31 (2024 is a leap year). Send compare-from and compare-to for a calendar comparison such as the previous quarter or year. The response always contains the comparison period used. Bookings count by their booking date. Spendings are positive for expenses (debit), earnings for income (credit); spendings.amount is the sum of the three categories and equals totalExpenses of getIncomeExpensesV1 for the same period, earnings.amount equals its totalIncome. The categories are always present (0.00 without bookings; identify them by type, name is missing when a category has no bookings in either period); accounts and tags with 0.00 in both periods are left out; a row present in only one period has 0.00 in the other. Accounts are ordered by number, tags by name. Tags are listed per account (for OTHER_OPERATING_EXPENSE, which is one account, directly on the category); a tag chain such as Projekt,Phase 1 is nested tag under tag. A tag row without name holds the booking lines without a tag at that level (the dashboard's "not assigned" row). Names follow Accept-Language (de, fr, it, en; anything else gives German). The full profit and loss statement is getProfitAndLossV1, the monthly view getIncomeExpensesV1. This is a read-only, idempotent operation without side effects. Tenant and company are derived from the bearer token and are never accepted from the URL or the request. The caller must hold the ACCOUNTING permission on the company; otherwise the endpoint returns 403.operationId
getSpendingsAndEarningsV1 — the method name a generated client uses.
Required permission
ACCOUNTING This comes from the description in the specification; the source code analysis behind the other permission statements is older than this endpoint. Roles that carry it: Administrator, External user, Buchhalter.
Parameters 6
| Name | Description |
|---|---|
date-from required | First booking date of the period, inclusive, ISO yyyy-MM-dd. |
date-to required | Last booking date of the period, inclusive, ISO yyyy-MM-dd; not before date-from. |
compare-from | First booking date of the comparison period, ISO yyyy-MM-dd; only together with compare-to. Without both, the previous period of the same length is used. |
compare-to | Last booking date of the comparison period, ISO yyyy-MM-dd; not before compare-from. |
include-delimitation | false leaves out delimitation bookings (accruals and deferrals) in both periods; included by default, as on the dashboard. |
Accept-Language | Language of the category and account names: de, fr, it or en; a region is ignored, so fr-CH gives French; other languages give German. |
Responses 6
200 Spendings and earnings for the period and the comparison period. show body
application/json PublicApiSpendingsAndEarnings
dateFromstring (date) format: date example: 2025-04-01First day of the period, as requested.dateTostring (date) format: date example: 2025-06-30Last day of the period, as requested.compareFromstring (date) format: date example: 2024-12-31First day of the comparison period: as requested, or computed as the dashboard does (the same number of days as the period, ending the day before dateFrom).compareTostring (date) format: date example: 2025-03-31Last day of the comparison period: as requested, or the day before dateFrom.spendingsobjectSpendings or earnings with their total in both periods.show fields
amountnumber example: 84250Total in CHF for the period: for spendings the sum of the three categories, for earnings the revenue.compareAmountnumber example: 79100Total in CHF for the comparison period.changePercentnumber example: 6.51Change against the comparison period in percent, as the accounting dashboard shows it: 0 when both amounts are equal, -100 when amount is 0, +100 when compareAmount is 0, otherwise (amount - compareAmount) x 100 / |compareAmount|, two decimals.categoriesarray of PublicApiCashflowCategoryThe categories in a fixed order: MATERIAL, LABOR, OTHER_OPERATING_EXPENSE for spendings; REVENUE for earnings; always present, 0.00 without bookings.show fields
Array of
PublicApiCashflowCategory.typeobject example: MATERIALMATERIAL = chart group 40, LABOR = chart group 50, OTHER_OPERATING_EXPENSE = account 6000, REVENUE = chart group 30.codestring example: 40Chart group code (40, 50, 30) or account number (6000).namestring example: Material- und WarenaufwandName as KLARA shows it, in the language ofAccept-Language; missing when the category has no bookings in either period, so identify categories bytype.amountnumber example: 35600Amount in CHF for the period: spendings debit positive, earnings credit positive; a net amount on the other side is negative.compareAmountnumber example: 31200Amount in CHF for the comparison period.changePercentnumber example: 14.1Change against the comparison period in percent, as the accounting dashboard shows it: 0 when both amounts are equal, -100 when amount is 0, +100 when compareAmount is 0, otherwise (amount - compareAmount) x 100 / |compareAmount|, two decimals.accountsarray of PublicApiCashflowAccountAccounts of the chart group with bookings in one of the periods, ordered by number; missing for OTHER_OPERATING_EXPENSE.show fields
Array of
PublicApiCashflowAccount.codestring example: 4000Account number, as inlistAccountsV1.namestring example: MaterialaufwandAccount name as KLARA shows it, without the number.amountnumber example: 35600Amount in CHF for the period, with the sign of the category.compareAmountnumber example: 31200Amount in CHF for the comparison period, with the sign of the category.changePercentnumber example: 14.1Change against the comparison period in percent, as the accounting dashboard shows it: 0 when both amounts are equal, -100 when amount is 0, +100 when compareAmount is 0, otherwise (amount - compareAmount) x 100 / |compareAmount|, two decimals.detailsarray of PublicApiCashflowDetailBooking tags of the account as a tree, ordered by name; missing when the account has no tagged lines.show fields
Array of
PublicApiCashflowDetail.namestring example: Projekt AlphaBooking tag as KLARA shows it. Missing for the booking lines without a tag at this level (the dashboard row "not assigned").amountnumber example: 4200Amount in CHF for the period, with the sign of the category.compareAmountnumber example: 3900Amount in CHF for the comparison period, with the sign of the category.changePercentnumber example: 7.69Change against the comparison period in percent, as the accounting dashboard shows it: 0 when both amounts are equal, -100 when amount is 0, +100 when compareAmount is 0, otherwise (amount - compareAmount) x 100 / |compareAmount|, two decimals.detailsarray of PublicApiCashflowDetailThe next level of tags below this row, ordered by name; missing on the last level.show fields
Array of
PublicApiCashflowDetail.Recursive reference to
PublicApiCashflowDetail. The structure repeats from here.
detailsarray of PublicApiCashflowDetailBooking tags of account 6000 as a tree; only for OTHER_OPERATING_EXPENSE.show fields
Array of
PublicApiCashflowDetail.namestring example: Projekt AlphaBooking tag as KLARA shows it. Missing for the booking lines without a tag at this level (the dashboard row "not assigned").amountnumber example: 4200Amount in CHF for the period, with the sign of the category.compareAmountnumber example: 3900Amount in CHF for the comparison period, with the sign of the category.changePercentnumber example: 7.69Change against the comparison period in percent, as the accounting dashboard shows it: 0 when both amounts are equal, -100 when amount is 0, +100 when compareAmount is 0, otherwise (amount - compareAmount) x 100 / |compareAmount|, two decimals.detailsarray of PublicApiCashflowDetailThe next level of tags below this row, ordered by name; missing on the last level.show fields
Array of
PublicApiCashflowDetail.Recursive reference to
PublicApiCashflowDetail. The structure repeats from here.
earningsobjectSpendings or earnings with their total in both periods.show fields
amountnumber example: 84250Total in CHF for the period: for spendings the sum of the three categories, for earnings the revenue.compareAmountnumber example: 79100Total in CHF for the comparison period.changePercentnumber example: 6.51Change against the comparison period in percent, as the accounting dashboard shows it: 0 when both amounts are equal, -100 when amount is 0, +100 when compareAmount is 0, otherwise (amount - compareAmount) x 100 / |compareAmount|, two decimals.categoriesarray of PublicApiCashflowCategoryThe categories in a fixed order: MATERIAL, LABOR, OTHER_OPERATING_EXPENSE for spendings; REVENUE for earnings; always present, 0.00 without bookings.show fields
Array of
PublicApiCashflowCategory.typeobject example: MATERIALMATERIAL = chart group 40, LABOR = chart group 50, OTHER_OPERATING_EXPENSE = account 6000, REVENUE = chart group 30.codestring example: 40Chart group code (40, 50, 30) or account number (6000).namestring example: Material- und WarenaufwandName as KLARA shows it, in the language ofAccept-Language; missing when the category has no bookings in either period, so identify categories bytype.amountnumber example: 35600Amount in CHF for the period: spendings debit positive, earnings credit positive; a net amount on the other side is negative.compareAmountnumber example: 31200Amount in CHF for the comparison period.changePercentnumber example: 14.1Change against the comparison period in percent, as the accounting dashboard shows it: 0 when both amounts are equal, -100 when amount is 0, +100 when compareAmount is 0, otherwise (amount - compareAmount) x 100 / |compareAmount|, two decimals.accountsarray of PublicApiCashflowAccountAccounts of the chart group with bookings in one of the periods, ordered by number; missing for OTHER_OPERATING_EXPENSE.show fields
Array of
PublicApiCashflowAccount.codestring example: 4000Account number, as inlistAccountsV1.namestring example: MaterialaufwandAccount name as KLARA shows it, without the number.amountnumber example: 35600Amount in CHF for the period, with the sign of the category.compareAmountnumber example: 31200Amount in CHF for the comparison period, with the sign of the category.changePercentnumber example: 14.1Change against the comparison period in percent, as the accounting dashboard shows it: 0 when both amounts are equal, -100 when amount is 0, +100 when compareAmount is 0, otherwise (amount - compareAmount) x 100 / |compareAmount|, two decimals.detailsarray of PublicApiCashflowDetailBooking tags of the account as a tree, ordered by name; missing when the account has no tagged lines.show fields
Array of
PublicApiCashflowDetail.namestring example: Projekt AlphaBooking tag as KLARA shows it. Missing for the booking lines without a tag at this level (the dashboard row "not assigned").amountnumber example: 4200Amount in CHF for the period, with the sign of the category.compareAmountnumber example: 3900Amount in CHF for the comparison period, with the sign of the category.changePercentnumber example: 7.69Change against the comparison period in percent, as the accounting dashboard shows it: 0 when both amounts are equal, -100 when amount is 0, +100 when compareAmount is 0, otherwise (amount - compareAmount) x 100 / |compareAmount|, two decimals.detailsarray of PublicApiCashflowDetailThe next level of tags below this row, ordered by name; missing on the last level.show fields
Array of
PublicApiCashflowDetail.Recursive reference to
PublicApiCashflowDetail. The structure repeats from here.
detailsarray of PublicApiCashflowDetailBooking tags of account 6000 as a tree; only for OTHER_OPERATING_EXPENSE.show fields
Array of
PublicApiCashflowDetail.namestring example: Projekt AlphaBooking tag as KLARA shows it. Missing for the booking lines without a tag at this level (the dashboard row "not assigned").amountnumber example: 4200Amount in CHF for the period, with the sign of the category.compareAmountnumber example: 3900Amount in CHF for the comparison period, with the sign of the category.changePercentnumber example: 7.69Change against the comparison period in percent, as the accounting dashboard shows it: 0 when both amounts are equal, -100 when amount is 0, +100 when compareAmount is 0, otherwise (amount - compareAmount) x 100 / |compareAmount|, two decimals.detailsarray of PublicApiCashflowDetailThe next level of tags below this row, ordered by name; missing on the last level.show fields
Array of
PublicApiCashflowDetail.Recursive reference to
PublicApiCashflowDetail. The structure repeats from here.
400 date-from or date-to is missing or not an ISO date yyyy-MM-dd, or date-to is before date-from (code kpi.date_invalid). Also when the comparison period is incomplete, not ISO dates or reversed.
Error codes for this response (the code field of the response body):kpi.date_invalid — date-from or date-to was missing or not an ISO date of the form yyyy-MM-dd with a year from 0001, or date-to was before date-from; for getSpendingsAndEarningsV1 also when the comparison period was incomplete, not of that form or reversed, or the default comparison period would start before the year 0001.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
kpi.date_invalid — date-from or date-to was missing or not an ISO date of the form yyyy-MM-dd with a year from 0001, or date-to was before date-from; for getSpendingsAndEarningsV1 also when the comparison period was incomplete, not of that form or reversed, or the default comparison period would start before the year 0001.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/master-vatskey / tokenList the master VAT catalog used by KLARA Accounting.
code is non-blank only rows whose vatCode matches one of the semicolon-separated codes are returned (and when combined with current-period=true, only the ones valid today); otherwise when default-vat=true only the company-default rows are returned; otherwise the full catalog is returned, ordered by rate ascending, optionally paginated via offset / limit. Pagination is honoured only on the full-catalog branch — it is silently ignored when code or default-vat is set. The endpoint is a pure read and idempotent. Requires a bearer token whose principal carries the ACCOUNTING_GET_MASTER_VAT permission.operationId
listMasterVatsV1 — the method name a generated client uses.
Required permission
ACCOUNTING_GET_MASTER_VAT
Available through: Administrator, External user, Mitarbeiter und Lohn, Buchhalter, Kundenbeziehungen
Parameters 6
| Name | Description |
|---|---|
code | Semicolon-separated list of vatCodes to filter on. When set, switches the response to the by-code branch and ignores default-vat. |
current-period | When combined with code, restricts the result to master VAT rows whose validity range covers today. Defaults to false. |
default-vat | When true, restricts the result to the company-default master VAT rows. Defaults to false. Ignored when code is set. |
includeHiddenVatCase | When true, the response also includes hidden VAT-case ids that are not directly mapped to a master VAT row. Defaults to false. |
limit | Maximum number of results to return. Only honoured on the full-catalog branch. |
offset | Zero-based index of the first result. Only honoured on the full-catalog branch (when neither code nor default-vat is set). |
Responses 4
200 Array of master VAT rows matching the filters. show body
application/json array of PublicApiMasterVat
Array of PublicApiMasterVat.
idinteger (int64) format: int64 example: 12Internal id of the master VAT row.vatCodestring example: 1Short numeric VAT code as configured in the KLARA accounting plan.ratenumber example: 8.1VAT rate as a percentage value (8.10 means 8.10 %).validFromstring (date) format: date example: 2024-01-01Inclusive start date of the validity range (ISO yyyy-MM-dd). May be null when open-ended.validTostring (date) format: date example: 2030-12-31Inclusive end date of the validity range (ISO yyyy-MM-dd). May be null when open-ended.defaultVatboolean example: TrueTrue when the row is one of the company-default VAT entries.masterVatMultiesarray of PublicApiMasterVatMultiLocalized labels keyed by language tag.show fields
Array of
PublicApiMasterVatMulti.idinteger (int64) format: int64 example: 101Internal id of the translation row.languagestring example: deLanguage tag of the translation (ISO 639-1).descriptionstring example: Normalsatz 8.1 %Human-readable VAT description in the matching language.
referenceVatCaseIdstring example: VC-7Optional reference to a hidden VAT case id not directly mapped to a master VAT.createDatestring (date-time) format: date-time example: 2024-01-01T08:00:00Timestamp when the row was created (ISO yyyy-MM-dd'T'HH:mm:ss).updateDatestring (date-time) format: date-time example: 2024-06-15T14:30:00Timestamp of the last update (ISO yyyy-MM-dd'T'HH:mm:ss).
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/master-vats/currentkey / tokenList the master VAT rows valid for today.
validFrom / validTo) covers the server's current day. Useful for booking and invoicing UIs that need only the VAT rates that may legally be applied right now. The endpoint is a pure read and idempotent; the downstream handler caches the filtered list in-process. Requires a bearer token whose principal carries the ACCOUNTING_GET_MASTER_VAT permission.operationId
getCurrentMasterVatsV1 — the method name a generated client uses.
Required permission
ACCOUNTING_GET_MASTER_VAT
Available through: Administrator, External user, Mitarbeiter und Lohn, Buchhalter, Kundenbeziehungen
Responses 4
200 Array of master VAT rows valid for the current day. show body
application/json array of PublicApiMasterVat
Array of PublicApiMasterVat.
idinteger (int64) format: int64 example: 12Internal id of the master VAT row.vatCodestring example: 1Short numeric VAT code as configured in the KLARA accounting plan.ratenumber example: 8.1VAT rate as a percentage value (8.10 means 8.10 %).validFromstring (date) format: date example: 2024-01-01Inclusive start date of the validity range (ISO yyyy-MM-dd). May be null when open-ended.validTostring (date) format: date example: 2030-12-31Inclusive end date of the validity range (ISO yyyy-MM-dd). May be null when open-ended.defaultVatboolean example: TrueTrue when the row is one of the company-default VAT entries.masterVatMultiesarray of PublicApiMasterVatMultiLocalized labels keyed by language tag.show fields
Array of
PublicApiMasterVatMulti.idinteger (int64) format: int64 example: 101Internal id of the translation row.languagestring example: deLanguage tag of the translation (ISO 639-1).descriptionstring example: Normalsatz 8.1 %Human-readable VAT description in the matching language.
referenceVatCaseIdstring example: VC-7Optional reference to a hidden VAT case id not directly mapped to a master VAT.createDatestring (date-time) format: date-time example: 2024-01-01T08:00:00Timestamp when the row was created (ISO yyyy-MM-dd'T'HH:mm:ss).updateDatestring (date-time) format: date-time example: 2024-06-15T14:30:00Timestamp of the last update (ISO yyyy-MM-dd'T'HH:mm:ss).
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/master-vats/{masterVatId}key / tokenResolve a master VAT catalog row by its numeric id.
masterVatId. The catalog is global KLARA reference data — the same row is returned for every tenant, so there are no tenant or company path parameters. The endpoint is a pure read and idempotent. Requires a bearer token whose principal carries the ACCOUNTING_GET_MASTER_VAT permission.operationId
getMasterVatByIdV1 — the method name a generated client uses.
Required permission
ACCOUNTING_GET_MASTER_VAT
Available through: Administrator, External user, Mitarbeiter und Lohn, Buchhalter, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
masterVatId required | Numeric primary-key id of the master VAT row to resolve. Obtain it from GET /core/v1/accounting/master-vats or GET /core/v1/accounting/master-vats/current. |
Responses 5
200 The master VAT row matching masterVatId, including its rate, VAT code and validity range. show body
application/json PublicApiMasterVat
idinteger (int64) format: int64 example: 12Internal id of the master VAT row.vatCodestring example: 1Short numeric VAT code as configured in the KLARA accounting plan.ratenumber example: 8.1VAT rate as a percentage value (8.10 means 8.10 %).validFromstring (date) format: date example: 2024-01-01Inclusive start date of the validity range (ISO yyyy-MM-dd). May be null when open-ended.validTostring (date) format: date example: 2030-12-31Inclusive end date of the validity range (ISO yyyy-MM-dd). May be null when open-ended.defaultVatboolean example: TrueTrue when the row is one of the company-default VAT entries.masterVatMultiesarray of PublicApiMasterVatMultiLocalized labels keyed by language tag.show fields
Array of
PublicApiMasterVatMulti.idinteger (int64) format: int64 example: 101Internal id of the translation row.languagestring example: deLanguage tag of the translation (ISO 639-1).descriptionstring example: Normalsatz 8.1 %Human-readable VAT description in the matching language.
referenceVatCaseIdstring example: VC-7Optional reference to a hidden VAT case id not directly mapped to a master VAT.createDatestring (date-time) format: date-time example: 2024-01-01T08:00:00Timestamp when the row was created (ISO yyyy-MM-dd'T'HH:mm:ss).updateDatestring (date-time) format: date-time example: 2024-06-15T14:30:00Timestamp of the last update (ISO yyyy-MM-dd'T'HH:mm:ss).
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 No master VAT row exists for the supplied masterVatId.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/reports/balance-sheetkey / tokenGet the balance sheet at a date, optionally with a comparison date.
date, as KLARA shows it under Accounting > Reports > Balance sheet: the totals current assets, fixed assets, total assets, current liabilities, long-term liabilities, equity and total liabilities; inside them the chart-of-account groups (for example 100 liquid assets) and the accounts with a booking up to the date; and for accounts with sub-accounts one row per sub-account (bank account, cash box, customer or supplier, employee, insurer, asset), with the same typed reference as getBookingV1. With compare-date every row also carries compareAmount, the balance at that date, as in KLARA's two columns; a row present at only one date has 0 at the other. Balances include every booking up to and including the date; include-delimitation=false leaves out delimitation bookings, at both dates. A date in the future gives the balances after all bookings up to it; impossible dates such as 2026-02-31 are rejected. The row "annual profit/loss" in equity (profitOrLoss) is computed by KLARA as total assets minus all liability and equity accounts, negative for a loss, and is part of the EQUITY amount, so TOTAL_ASSETS always equals TOTAL_LIABILITIES (which includes equity). Rows are ordered as on the screen: chart groups in the order of the chart of accounts, accounts by number, sub-accounts by name. Amounts are in CHF and positive on the normal side of the account; an account whose sub-accounts have both signs can appear in two chart groups. account-search and sub-account-search work like the search and tag filter of the screen: they compare with the names in the language of Accept-Language, can be combined (both must match), and only hide rows, every amount and total stays the same. Sub-account names can contain names of persons (employees, private customers), as on the screen. Group and account names follow Accept-Language (de, fr, it, en; anything else gives German). This is a read-only, idempotent operation without side effects. Tenant and company are derived from the bearer token and are never accepted from the URL or the request. The caller must hold the ACCOUNTING permission on the company; otherwise the endpoint returns 403.operationId
getBalanceSheetV1 — the method name a generated client uses.
Required permission
ACCOUNTING This comes from the description in the specification; the source code analysis behind the other permission statements is older than this endpoint. Roles that carry it: Administrator, External user, Buchhalter.
Parameters 6
| Name | Description |
|---|---|
date required | Reference date, ISO yyyy-MM-dd: balances after all bookings up to and including this date. |
account-search | Keeps only accounts whose number or name contains this text (case-insensitive), with their groups. Hides rows only; amounts and totals stay the same. |
compare-date | Second reference date shown side by side (compareAmount), ISO yyyy-MM-dd; before or after date. |
include-delimitation | false leaves out delimitation bookings; included by default, as on the screen. |
sub-account-search | Comma-separated texts; keeps only sub-account rows whose name contains any of them (case-insensitive), with their accounts and groups. This is the tag filter of the screen, which matches sub-account names, not booking tags. Hides rows only; amounts and totals stay the same. |
Accept-Language | Language of the group and account names: de, fr, it or en; a region is ignored, so fr-CH gives French; other languages give German. |
Responses 6
200 The balance sheet at date (and compare-date). show body
application/json PublicApiBalanceSheet
datestring (date) format: date example: 2025-12-31Reference date: balances after all bookings up to and including this date.compareDatestring (date) format: date example: 2024-12-31Comparison date as requested; missing withoutcompare-date.groupsarray of PublicApiBalanceSheetGroupThe balance sheet totals in this fixed order: CURRENT_ASSETS, FIXED_ASSETS, TOTAL_ASSETS, CURRENT_LIABILITIES, LONG_TERM_LIABILITIES, EQUITY, TOTAL_LIABILITIES. With a display filter, totals without remaining rows are left out, as on the screen.show fields
Array of
PublicApiBalanceSheetGroup.typeobject example: CURRENT_ASSETSBalance sheet total.namestring example: Total current assetsName of the total as KLARA shows it, in the language ofAccept-Language.amountnumber example: 184250.4Amount in CHF atdate.compareAmountnumber example: 172030.15Amount in CHF atcompareDate; missing withoutcompare-date.chartGroupsarray of PublicApiBalanceSheetChartGroupChart-of-account groups of this total, in the order of the chart of accounts. Missing for TOTAL_ASSETS and TOTAL_LIABILITIES, which are sums of other totals.show fields
Array of
PublicApiBalanceSheetChartGroup.codestring example: 100Chart-of-account group code, for example100for liquid assets; missing on the annual profit/loss row.namestring example: Flüssige MittelName of the group as KLARA shows it, for the company's legal form and the language ofAccept-Language.amountnumber example: 45210.7Amount in CHF atdate.compareAmountnumber example: 38900Amount in CHF atcompareDate; missing withoutcompare-date.profitOrLossboolean example: FalseTrue only on the row "annual profit/loss" that KLARA inserts into EQUITY after group 297 (first when there is no group 297): total assets minus all liability and equity accounts. It is the result of the current fiscal year when the results of earlier years were booked to equity, and otherwise also contains those earlier results. Negative for a loss. Its amount is part of the EQUITY amount, so TOTAL_ASSETS and TOTAL_LIABILITIES always match.accountsarray of PublicApiBalanceSheetAccountAccounts of the group with a booking up to the date (also with a balance of 0), ordered by account number.show fields
Array of
PublicApiBalanceSheetAccount.codestring example: 1020Account number, as inlistAccountsV1.namestring example: BankguthabenAccount name as KLARA shows it, without the number.amountnumber example: 45210.7Balance in CHF atdate, positive on the normal side of the account. An account whose sub-accounts have both signs can appear in two chart groups, for example bank accounts in credit under liquid assets and in overdraft under current liabilities, each as a positive amount.compareAmountnumber example: 38900Balance in CHF atcompareDate; missing withoutcompare-date.subAccountsarray of PublicApiBalanceSheetSubAccountOne row per sub-account (bank account, cash box, customer or supplier, employee, insurer, asset), ordered by name; missing for accounts without sub-accounts.show fields
Array of
PublicApiBalanceSheetSubAccount.namestring example: UBS GeschäftskontoName as KLARA shows it: bank account short name, customer or supplier name, employee name, insurer, asset. Can contain names of persons (employees, private customers), as on the screen. Missing when KLARA cannot resolve a name for the object (for example a deleted customer);referencestill identifies it.referenceobjectAn object a booking line refers to.show fields
typeobject example: CUSTOMERKind of object a booking line refers to.idstring example: 1042Id of the object. Customers and suppliers (one id space): as inlistCustomersV1; company bank accounts: as inlistCompanyBankAccounts; bank transactions: as inlistBankTransactionsV1(unreconciled only); VAT cases: as in the VAT case list; tax-at-source cantons: KLARA's canton id; gift cards and miscellaneous partners: KLARA's fixed entry; a sub-account: the id of the sub-account of the chart of accounts; other types: KLARA's internal id.categorystring example: cashOnly forSUB_ACCOUNT: the kind of sub-account, for examplecash,receivable,payableortangible_asset.namestring example: Muster AGName of the object as KLARA shows it on the line now (resolved when the booking is read, not stored at posting time), in the requested language. Missing when it could not be resolved.
amountnumber example: 45210.7Balance in CHF atdate, positive on the normal side of the account, like the account itself.compareAmountnumber example: 38900Balance in CHF atcompareDate; missing withoutcompare-date.subAccountsarray of PublicApiBalanceSheetSubAccountOnly account 2260 (non-interest-bearing current accounts): one grouping row per kind (employees, current accounts) with the individual rows below, ordered by name.show fields
Array of
PublicApiBalanceSheetSubAccount.Recursive reference to
PublicApiBalanceSheetSubAccount. The structure repeats from here.
400 date is missing or not an ISO date, compare-date is not an ISO date, or a search text is longer than 256 characters.
Error codes for this response (the code field of the response body):balancesheet.date_invalid — date was missing or not an ISO date of the form yyyy-MM-dd, or compare-date was not an ISO date of that form.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
balancesheet.date_invalid — date was missing or not an ISO date of the form yyyy-MM-dd, or compare-date was not an ISO date of that form.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/reports/general-ledgerkey / tokenGet the general ledger: the statements of all accounts for a period, page by page.
date-from, the booking lines of the period with booking date, booking id and line id (readable with getBookingV1), contra accounts, posting text, tags, VAT text, debit or credit amount in CHF and the running balance, and the closing balance with the debit and credit totals. This is the data of the export "all accounts" under Accounting > Reports > Account details; each section has the same content as getAccountStatementV1 for that account. A split account has no section of its own, only one section per sub-account, so the sections of one account number do not have to be added to a whole-account section. Accounts without bookings in the period are included with their balances. As in getAccountStatementV1, every booking status is included (planned and inactive bookings too); there is no status filter. Sections are ordered by account number, then sub-account name; the order is fixed, so leave out sort-field, sort-direction and search-key (only ACCOUNT_CODE and ASC are accepted, a search-key is rejected). Paging uses offset and limit counted in sections (default 50, maximum 100); X-Total-Count holds the number of sections. Each section contains all its lines of the period; for an account with very many lines use getAccountStatementV1, which pages the lines, or narrow the page with a smaller limit or an account range. Filters, all optional and combined with AND: date-from and date-to (inclusive, yyyy-MM-dd); account-from and account-to (account number range, inclusive); reference, tags, include-delimitation (default true), booking-types and vat exactly as in getAccountStatementV1; line filters apply to the lines and to the opening balances, they do not remove sections. With reference, tags, booking-types or vat, the opening and closing balances are those of the matching lines only, not the balance of the account. For P&L accounts the balances restart at 0 in each fiscal year, as in getAccountStatementV1. Every page contains all its sections; when KLARA cannot calculate a section, the request fails with 500 and nothing is returned partially. This is a read-only, idempotent operation without side effects. Tenant and company are derived from the bearer token and are never accepted from the URL or the request. The caller must hold the ACCOUNTING permission on the company; otherwise the endpoint returns 403.operationId
getGeneralLedgerV1 — the method name a generated client uses.
Required permission
ACCOUNTING This comes from the description in the specification; the source code analysis behind the other permission statements is older than this endpoint. Roles that carry it: Administrator, External user, Buchhalter.
Parameters 15
| Name | Description |
|---|---|
account-from | First account number of the range, inclusive. |
account-to | Last account number of the range, inclusive; not below account-from. |
booking-types | Comma-separated booking types as bookingType of getBookingV1, any of them, as in getAccountStatementV1. |
date-from | First booking date, inclusive, ISO yyyy-MM-dd. Without it every section starts with the first booking and an opening balance of 0. |
date-to | Last booking date, inclusive, ISO yyyy-MM-dd; not before date-from. Open-ended without it. |
include-delimitation | false leaves out the delimitation lines (booking type DELIMIT); included by default, as in the export. |
limit | Page size. Defaults to 50; hard cap 100. Requests above the cap are rejected with 400. |
offset | 0-based pagination offset — the number of rows to skip before the returned page. Defaults to 0. Combine with limit to walk the full collection. |
reference | Only lines that refer to this object, written as in references of getBookingV1 (TYPE:id or SUB_ACCOUNT:category:id), as in getAccountStatementV1; opening balances are filtered the same way. |
search-key | Free-text search. The fields searched are documented per endpoint. Matches are case-insensitive substring matches. Maximum length 256 characters. |
sort-direction | Sort direction. Allowed values: ASC, DESC. Defaults to DESC.Allowed values: ASC, DESC |
sort-field | Field to order the result by. The accepted values are listed per endpoint; an unknown value is rejected with 400. Each endpoint documents the default it applies, chosen so that paging with offset / limit is stable. |
tags | Comma-separated tag names; a line is kept when one of its tags equals any of them (case-sensitive; tags combined on one line are compared one by one; % and _ act as wildcards), as in getAccountStatementV1. |
vat | Comma-separated VAT filters, any of them, as in getAccountStatementV1: a VAT case id (listVatCases), caseId:rateId where the rate id is the id of listMasterVatsV1 (not its vatCode), or none for lines without VAT. There is no filter by rate alone. |
Accept-Language | Language of the account names, VAT texts and sub-account names, and of the sub-account sort order, for example de-CH or fr-CH; the sort order uses the first language of the header and German without one. Posting texts and tags are not translated. Because the sort order follows the language, keep the same language for all pages of one ledger. |
Responses 6
200 The account sections of this page for the period. show body
application/json PublicApiGeneralLedger
dateFromstring (date) format: date example: 2026-01-01First booking date of the period as requested; missing when the ledger starts with the first booking.dateTostring (date) format: date example: 2026-12-31Last booking date of the period as requested; missing when the period is open-ended.accountsarray of PublicApiGeneralLedgerAccountThe account sections of this page, ordered by account number, then sub-account name. Empty when the page is beyond the last section.show fields
Array of
PublicApiGeneralLedgerAccount.accountCodeinteger (int32) format: int32 example: 1020Account number, ascodeinlistAccountsV1.accountNamestring example: BankAccount name in the language ofAccept-Language.referencestring example: BANK_ACCOUNT:3The sub-account of this section, written as inreferencesofgetBookingV1, for exampleBANK_ACCOUNT:3,EMPLOYEE:17orSUB_ACCOUNT:cash:400; usable asreferenceofgetAccountStatementV1. Missing when the section is the whole account, or when the sub-account is not one KLARA publishes as a reference.referenceDisplaystring example: Bankkonto - UBS GeschäftskontoName of the sub-account as KLARA shows it; can be the name of a person (employee, private customer), as in the export. Missing when the section is the whole account.openingBalancenumber example: 12500Balance in CHF beforedateFrom, with the same filters, asopeningBalanceofgetAccountStatementV1.closingBalanceobjectTotals of the whole period (all pages) and the balance at its end.show fields
debitAmountnumber example: 48200Sum in CHF of the debit amounts of all matching lines of the period.creditAmountnumber example: 39150.5Sum in CHF of the credit amounts of all matching lines of the period.balancenumber example: 21549.5Balance in CHF at the end of the period. Balance sheet accounts: opening balance plus all lines, equal to the running balance of the last line. P&L accounts restart at 0 in each fiscal year, so this is the balance of the fiscal year that contains the end of the period (dateTo, or the latest fiscal year when the period is open-ended); it equals the running balance of the last line when that line lies in that fiscal year, and is 0 when that fiscal year has no lines yet.
linesarray of PublicApiAccountStatementLineAll matching booking lines of the section in the period, ordered by booking date, booking id and line id, ascending, with the running balance. Empty when the account has no movement.show fields
Array of
PublicApiAccountStatementLine.bookingDatestring (date) format: date example: 2026-03-31Booking date.bookingIdinteger (int64) format: int64 example: 4321Id of the booking; read the whole booking withgetBookingV1.lineIdinteger (int64) format: int64 example: 8765Id of this line within the booking, aslines[].idofgetBookingV1.contraAccountCodesarray of integer (int32)Accounts of the other lines of the booking, ascending. The amount of this line is not split among them;getBookingV1shows the amount of each line.descriptionstring example: Rent March 2026Posting text of the line.tagsarray of stringTags of the line.vatTextstring example: 8.1%VAT of the line as KLARA shows it, in the language ofAccept-Language.debitAmountnumber example: 1000Amount in CHF when the line is a debit; missing otherwise.creditAmountnumber example: 250Amount in CHF when the line is a credit; missing otherwise.runningBalancenumber example: 13500Balance in CHF after this line, continued across pages. Positive for the normal side of the account; P&L accounts restart at 0 with the first line of each fiscal year.documentIdsarray of stringIds of the documents attached to the booking.
400 A filter is malformed (date-from, date-to, reference, booking-types, vat: codes statement.*), account-to is below account-from (code ledger.account_range_invalid), a sort other than ACCOUNT_CODE ascending or a search-key was sent (codes request.*), or a bound or length is exceeded (code model.invalid).
Error codes for this response (the code field of the response body):request.sort_field_invalid — sort-field was not one of the values the operation documents. The message lists the accepted values.request.sort_direction_unsupported — sort-direction was sent with the direction an operation with a fixed order does not have. The message names the available direction.request.search_key_unsupported — search-key was sent to an operation that has no text search.statement.date_invalid — date-from or date-to was not an ISO date of the form yyyy-MM-dd, or date-to was before date-from.statement.reference_invalid — reference was not of the form TYPE:id or SUB_ACCOUNT:category:id with a type, category and id as published in references of getBookingV1.statement.booking_type_invalid — An entry of booking-types was not one of the published booking types.statement.vat_filter_invalid — An entry of vat was not none, a VAT case id, or a VAT case id and a VAT rate id separated by a colon.ledger.account_range_invalid — account-to was below account-from.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
request.sort_field_invalid — sort-field was not one of the values the operation documents. The message lists the accepted values.request.sort_direction_unsupported — sort-direction was sent with the direction an operation with a fixed order does not have. The message names the available direction.request.search_key_unsupported — search-key was sent to an operation that has no text search.statement.date_invalid — date-from or date-to was not an ISO date of the form yyyy-MM-dd, or date-to was before date-from.statement.reference_invalid — reference was not of the form TYPE:id or SUB_ACCOUNT:category:id with a type, category and id as published in references of getBookingV1.statement.booking_type_invalid — An entry of booking-types was not one of the published booking types.statement.vat_filter_invalid — An entry of vat was not none, a VAT case id, or a VAT case id and a VAT rate id separated by a colon.ledger.account_range_invalid — account-to was below account-from.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/reports/partner-amountskey / tokenGet the open amounts and monthly payments of a customer or supplier, or of all partners.
openAmounts: per side the still open amount of the open and partly paid invoices, partial payments deducted, and the part of it that is overdue today; RECEIVABLE is what customers owe, PAYABLE what is owed to suppliers. monthlyPayments: per calendar month and side the sum of the payments booked, from the first day of the month eight months before to-date to the end of the month of to-date (nine months, stated in paymentsFrom and paymentsTo). With customer-id the figures of that customer or supplier (the id of listCustomersV1; customers and suppliers share one id space); without it the figures of all partners of the company. An unknown id gives empty lists. Amounts are in CHF. Open amounts are always as of today; to-date only moves the payment period. This is a read-only, idempotent operation without side effects. Tenant and company are derived from the bearer token and are never accepted from the URL or the request. The caller must hold the ACCOUNTING permission on the company; otherwise the endpoint returns 403.operationId
getPartnerAmountsV1 — the method name a generated client uses.
Required permission
ACCOUNTING This comes from the description in the specification; the source code analysis behind the other permission statements is older than this endpoint. Roles that carry it: Administrator, External user, Buchhalter.
Parameters 2
| Name | Description |
|---|---|
customer-id | Id of the customer or supplier, as in listCustomersV1. Leave it out for the figures of all partners of the company. |
to-date | Last month of the payment period, ISO yyyy-MM-dd; defaults to today. Does not change the open amounts. |
Responses 6
200 Open amounts and monthly payments. show body
application/json PublicApiPartnerAmounts
customerIdinteger (int64) format: int64 example: 37The customer or supplier as requested withcustomer-id; missing for all partners of the company.paymentsFromstring (date) format: date example: 2026-01-01First day of the payment period: the first day of the month eight months beforeto-date.paymentsTostring (date) format: date example: 2026-09-30Last day of the payment period: the last day of the month ofto-date.openAmountsarray of PublicApiPartnerOpenAmountOpen amount per side, RECEIVABLE first; a side without open invoices is left out.show fields
Array of
PublicApiPartnerOpenAmount.sideobject example: RECEIVABLERECEIVABLE: customer invoices and payments received from customers. PAYABLE: supplier invoices and payments made to suppliers.openAmountnumber example: 1250.4Still open amount in CHF, partial payments deducted. Positive when the partner owes the company (RECEIVABLE) or the company owes the partner (PAYABLE); credit notes reduce it.overdueAmountnumber example: 300Part ofopenAmountwhose due date is before today, independent ofto-date.
monthlyPaymentsarray of PublicApiPartnerMonthlyPaymentPayments per month and side in the payment period, oldest month first, RECEIVABLE before PAYABLE; a month without payments is left out.show fields
Array of
PublicApiPartnerMonthlyPayment.yearinteger (int32) format: int32 example: 2026Year of the booking date.monthinteger (int32) format: int32 example: 9Month of the booking date, 1 to 12.sideobject example: RECEIVABLERECEIVABLE: customer invoices and payments received from customers. PAYABLE: supplier invoices and payments made to suppliers.amountnumber example: 4200Sum of the payments in CHF, positive for money received (RECEIVABLE) or paid (PAYABLE); a refund reduces it.
400 to-date is not an ISO date, or customer-id is less than 1.
Error codes for this response (the code field of the response body):partneramounts.date_invalid — to-date was not an ISO date of the form yyyy-MM-dd.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
partneramounts.date_invalid — to-date was not an ISO date of the form yyyy-MM-dd.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/reports/profit-and-losskey / tokenGet the profit and loss statement for a period, optionally with a comparison period.
date-from to date-to, as KLARA shows it under Accounting > Reports > Profit and loss statement: the seven result levels (gross margin after material cost, gross margin after labor cost, EBITDA, EBIT, EBT, profit or loss before taxes, profit or loss), inside them the chart-of-account groups each level adds, the accounts with bookings in the period, and per account the detail rows: the sub-account or insurance institution of the booking lines (kind SUB_ACCOUNT, for example an insurer) and the booking tags (kind TAG) as a tree, as the screen shows them. With compare-from and compare-to every row also carries compareAmount, as in KLARA's two columns; a row present in only one period has 0 in the other. Result amounts are cumulative: income groups (30, 69, 70, 80, 85) minus expense groups (40, 50, 60, 68, 89) up to that level, negative for a loss. Chart groups and accounts are positive for income in groups 30, 69, 70, 80, 85 and for expenses in groups 40, 50, 60, 68, 89. The period includes both dates and can be any range; it does not have to match a financial year (see listCurrentCompanyFinancialYears for the company's financial years). include-delimitation=false leaves out delimitation bookings (accruals and deferrals) in both periods. All seven result levels and their chart groups are returned also without bookings, with 0; accounts only when they have bookings in one of the periods. Chart groups follow the chart of accounts, accounts their number, detail rows their name; detail rows have a name and a kind, no object reference. account-search and tag-search work like the search and the tag filter of the screen: account-search finds the text anywhere in the account number and name (so 600 finds 6000 and 6001; compare code for exactly one account), tag-search anywhere in the detail row names, in the language of Accept-Language, can be combined (both must match) and only hide rows, every amount stays the same. Detail row names can contain names of persons, as on the screen. Names follow Accept-Language (de, fr, it, en; anything else gives German). This is a read-only, idempotent operation without side effects. Tenant and company are derived from the bearer token and are never accepted from the URL or the request. The caller must hold the ACCOUNTING permission on the company; otherwise the endpoint returns 403.operationId
getProfitAndLossV1 — the method name a generated client uses.
Required permission
ACCOUNTING This comes from the description in the specification; the source code analysis behind the other permission statements is older than this endpoint. Roles that carry it: Administrator, External user, Buchhalter.
Parameters 8
| Name | Description |
|---|---|
date-from required | First booking date of the period, inclusive, ISO yyyy-MM-dd. |
date-to required | Last booking date of the period, inclusive, ISO yyyy-MM-dd; not before date-from. |
account-search | Keeps only accounts whose number or name contains this text (case-insensitive), with their groups. Hides rows only; amounts and results stay the same. |
compare-from | First booking date of the comparison period, ISO yyyy-MM-dd; only together with compare-to. |
compare-to | Last booking date of the comparison period, ISO yyyy-MM-dd; not before compare-from. |
include-delimitation | false leaves out delimitation bookings in both periods; included by default, as on the screen. |
tag-search | Comma-separated texts; keeps only detail rows (sub-accounts, institutions, tags) whose name contains any of them (case-insensitive), with the rows below them and their accounts and groups. This is the tag filter of the screen. Hides rows only; amounts and results stay the same. |
Accept-Language | Language of the names: de, fr, it or en; a region is ignored, so fr-CH gives French; other languages give German. |
Responses 6
200 The profit and loss statement for the period (and the comparison period). show body
application/json PublicApiProfitAndLoss
dateFromstring (date) format: date example: 2025-01-01First day of the period, as requested.dateTostring (date) format: date example: 2025-12-31Last day of the period, as requested.compareFromstring (date) format: date example: 2024-01-01First day of the comparison period; missing without a comparison period.compareTostring (date) format: date example: 2024-12-31Last day of the comparison period; missing without a comparison period.groupsarray of PublicApiProfitAndLossGroupThe seven result levels in this order: GROSS_MARGIN_AFTER_MATERIAL, GROSS_MARGIN_AFTER_LABOR, EBITDA, EBIT, EBT, PROFIT_OR_LOSS_BEFORE_TAXES, PROFIT_OR_LOSS. With a display filter, levels without remaining rows are left out, as on the screen.show fields
Array of
PublicApiProfitAndLossGroup.typeobject example: EBITDAResult level of the profit and loss statement.namestring example: Earnings before interest and taxes depreciation and amortization (EBITDA)Name of the result level as KLARA shows it, in the language ofAccept-Language.amountnumber example: 48210.7Cumulative result in CHF for the period: income groups (30, 69, 70, 80, 85) minus expense groups (40, 50, 60, 68, 89) up to this level; negative for a loss.compareAmountnumber example: 41530.15Cumulative result in CHF for the comparison period; missing without a comparison period.chartGroupsarray of PublicApiProfitAndLossChartGroupChart-of-account groups added at this level, in the order of the chart of accounts.show fields
Array of
PublicApiProfitAndLossChartGroup.codestring example: 30Chart-of-account group code of the Swiss SME chart of accounts:30operating revenue,40material and goods,50personnel expense,60other operating expense,68depreciation and value adjustments,69financial expense and income,70ancillary operating result,80non-operating result,85extraordinary, one-off or prior-period result,89direct taxes. The company's own label is inname.namestring example: Betrieblicher Ertrag aus Lieferungen und LeistungenName of the group as KLARA shows it, for the company's legal form and the language ofAccept-Language.amountnumber example: 152300Amount in CHF for the period. Groups 30, 69, 70, 80 and 85 are positive for income (credit), groups 40, 50, 60, 68 and 89 for expenses (debit); a net amount on the other side is negative.compareAmountnumber example: 138900Amount in CHF for the comparison period; missing without a comparison period.accountsarray of PublicApiProfitAndLossAccountAccounts of the group with bookings in the period, ordered by account number.show fields
Array of
PublicApiProfitAndLossAccount.codestring example: 3200Account number, as inlistAccountsV1.namestring example: HandelserlöseAccount name as KLARA shows it, without the number.amountnumber example: 98400Amount in CHF for the period, with the sign of its chart group.compareAmountnumber example: 91250Amount in CHF for the comparison period; missing without a comparison period.detailsarray of PublicApiProfitAndLossDetailDetail rows of the account: the sub-account or insurance institution of the booking lines (kind SUB_ACCOUNT) and the booking tags (kind TAG), as a tree, ordered by name. The amounts of the top-level rows add up to the account.show fields
Array of
PublicApiProfitAndLossDetail.namestring example: Projekt AlphaName as KLARA shows it: the sub-account or insurance institution (for example an insurer), or the booking tag. Missing for booking lines without a tag. Rows with the same name are one row.kindobject example: TAGKind of a detail row.amountnumber example: 12500Amount in CHF for the period, with the sign of the account's chart group.compareAmountnumber example: 9800Amount in CHF for the comparison period; missing without a comparison period.detailsarray of PublicApiProfitAndLossDetailThe next level of tags below this row, ordered by name; missing on the last level.show fields
Array of
PublicApiProfitAndLossDetail.Recursive reference to
PublicApiProfitAndLossDetail. The structure repeats from here.
400 date-from or date-to is missing or not an ISO date, date-to is before date-from, the comparison period is incomplete, not ISO dates or reversed (code profitandloss.date_invalid), or a search text is longer than 256 characters (code model.invalid).
Error codes for this response (the code field of the response body):profitandloss.date_invalid — date-from or date-to was missing or not an ISO date of the form yyyy-MM-dd, date-to was before date-from, or the comparison period was incomplete, not of that form or reversed.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
profitandloss.date_invalid — date-from or date-to was missing or not an ISO date of the form yyyy-MM-dd, date-to was before date-from, or the comparison period was incomplete, not of that form or reversed.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/tagskey / tokenList the tags used on bookings.
Marketing and marketing are two entries. A single tag never contains a comma, because the comma separates the tags of a booking line. With include-combinations=true the list also contains each combination of tags as stored on a booking line, joined with a comma and a space (for example Marketing, Zurich), which is what the KLARA entry screens suggest; a name containing a comma is such a combination. Use the names as tags of a booking line in createBookingV1, or as tags filter in listBankReconciliationOpenPositionsV1, so new bookings reuse the existing spelling; join several tags with a comma without a space (Marketing,Zurich). Unlike the generic description of search-key, this operation splits the search text into words and keeps the tags that contain every word, case-insensitive (zur mark finds Marketing, Zurich). Characters are compared as written: Zurich does not find Zürich. Uses the standard collection parameters: search-key, offset (default 0), limit (default 50, maximum 100), sort-field (only and default NAME) and sort-direction (default DESC, Z to A; pass ASC for alphabetical order). Names are compared ignoring case and by character code, so letters with umlauts or accents sort after z. The number of tags matching the filters, ignoring offset and limit, is returned in the X-Total-Count header; to read everything, repeat the call with offset increased by limit until X-Total-Count is reached. To count the tags only, call with limit=1 and read X-Total-Count. This is a read-only, idempotent operation without side effects. Tenant and company are derived from the bearer token and are never accepted from the URL or the request. The caller must hold the ACCOUNTING permission on the company; otherwise the endpoint returns 403.operationId
listBookingTagsV1 — the method name a generated client uses.
Required permission
Not established. Assume a permission is needed, and ask support if a call is rejected.
Parameters 6
| Name | Description |
|---|---|
include-combinations | Also return each combination of tags as stored on one booking line, joined with a comma and a space, as the KLARA entry screens suggest them. true or false (default), case-insensitive. |
limit | Page size. Defaults to 50; hard cap 100. Requests above the cap are rejected with 400. |
offset | 0-based pagination offset — the number of rows to skip before the returned page. Defaults to 0. Combine with limit to walk the full collection. |
search-key | Free-text search. The fields searched are documented per endpoint. Matches are case-insensitive substring matches. Maximum length 256 characters. |
sort-direction | Sort direction. Allowed values: ASC, DESC. Defaults to DESC.Allowed values: ASC, DESC |
sort-field | Field to order the result by. The accepted values are listed per endpoint; an unknown value is rejected with 400. Each endpoint documents the default it applies, chosen so that paging with offset / limit is stable. |
Responses 6
200 One page of tags, ordered by name in sort-direction (default DESC, Z to A). Empty array when the company has no tagged booking lines or nothing matches search-key. show body
application/json array of PublicApiBookingTag
Array of PublicApiBookingTag.
namestring example: MarketingTag as used on booking lines, for example astagsof a booking line increateBookingV1. Withinclude-combinations=truealso a combination of tags as stored on one booking line, joined with a comma and a space.
400 sort-field is not NAME, or a parameter is outside its bounds (include-combinations not true or false, search-key longer than 256 characters, offset negative, limit outside 1-100, sort-direction not ASC or DESC).
Error codes for this response (the code field of the response body):request.sort_field_invalid — sort-field was not one of the values the operation documents. The message lists the accepted values.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
request.sort_field_invalid — sort-field was not one of the values the operation documents. The message lists the accepted values.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/vat-profilekey / tokenGet the authenticated company's VAT reporting profile.
operationId
getVatProfileV1 — the method name a generated client uses.
Required permission
ACCOUNTING
Available through: Administrator, External user, Buchhalter
Parameters 1
| Name | Description |
|---|---|
date | Date (ISO yyyy-MM-dd) to resolve the company VAT config for; defaults to today. Use the date you intend to book on — the company VAT must be valid for it. |
Responses 5
200 VAT profile. show body
application/json PublicApiVatProfile
hasVatboolean example: TrueWhether the company is VAT-registered.reportingModestring example: EFFECTIVE_CLEARINGVAT regime. EFFECTIVE_CLEARING or REPORTING_USING_NET_TAX_RATES.billingstring example: BILLEDBilling method. BILLED or COLLECTED.sss1number example: 1Flat net-tax rate 1 (percent), when reporting under net tax rates.sss2number example: 0.5Flat net-tax rate 2 (percent), when reporting under net tax rates.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/vat-suggestionskey / tokenSuggest ready-to-use VAT case / rate / account bundles for a booking line.
vatCaseLink and vatRateLink to drop into a booking line's links, plus a suggested vatAccountCode. Supply amount to also receive a net/VAT preview. The bundle marked recommended is the server's best guess.Rebuilding the Manual-booking VAT UI from this response (read this if you are generating a UI). This endpoint returns a flat array, but the Manual-booking screen renders it as three linked dropdowns plus two toggles and an auto-computed amount. Map each control as follows:<table border="1" cellpadding="4"><tr><th>GUI control</th><th>Driven by</th><th>How to build it</th></tr><tr><td>VAT on/off toggle</td><td>client-side state (not in this response)</td><td>OFF → the line has no VAT: don't call this endpoint, add no VAT links/fields. ON → call this endpoint and show the dropdowns below.</td></tr><tr><td>VAT case dropdown (e.g. "taxable supply")</td><td>distinct
vatCaseCode (label it with label)</td><td>Group the array by vatCaseCode; one entry per distinct case.</td></tr><tr><td>VAT rate dropdown (e.g. "8.1%")</td><td>vatRateDisplay</td><td>Cascades from the chosen case: the rows sharing the selected vatCaseCode are the rate options.</td></tr><tr><td>VAT account dropdown (e.g. "1170 | Input tax VAT")</td><td>vatAccountCodes</td><td>List all vatAccountCodes; preselect vatAccountCode.</td></tr><tr><td>including / excluding toggle</td><td>the amountKind query param</td><td>including = GROSS_INCLUSIVE; excluding = NET_EXCLUSIVE. Flipping it means re-calling this endpoint to refresh the preview.</td></tr><tr><td>Debit / Credit amount preview</td><td>previewNet / previewVat</td><td>Null until you pass amount. Re-call with the new amount/amountKind to refresh.</td></tr></table>End-to-end recipe (call → render → book):- User turns the VAT toggle ON. Call this endpoint with
direction(PURCHASE/SALE), the line'saccountCode, the user'samount, theamountKindfrom the including/excluding toggle, and thedateyou will book on. - Render the dropdowns per the table above; preselect the row where
recommended = true. - When the user picks a row, send it to
POST /core/v1/bookings?autoCalculateVat=true: on the VAT-bearing line setlinks = "<vatCaseLink>,<vatRateLink>"(both verbatim),vatAccountCode = <vatAccountCode>, youramount, andisExcludeVatAmountmatching theamountKindyou queried — then omit the VAT counterpart line; the server generates it (matchingpreviewNet/previewVat). Pass the samedateyou will book on.
Coverage: the response mirrors the booking GUI's two dropdowns. The VAT-case list is direction-agnostic (every configured case is offered regardless ofdirection), and the rate list includes every configured version of each rate code the case references — current and historical — so a line dated before a rate change still finds its rate.
operationId
listVatSuggestionsV1 — the method name a generated client uses.
Required permission
ACCOUNTING
Available through: Administrator, External user, Buchhalter
Parameters 7
| Name | Description |
|---|---|
accountCode required | Main account being booked against (e.g. 1020); drives VAT-account resolution. Required. |
direction required | PURCHASE (you are buying) or SALE (you are selling). Required. It does not restrict which VAT cases are returned (the full case list is always offered); it only selects the fallback VAT account — purchases vs sales — and the recommendation wording. Allowed values: PURCHASE, SALE |
amount | Amount to preview the net/VAT split for (optional). |
amountKind | GROSS_INCLUSIVE (default) or NET_EXCLUSIVE. |
date | Date (ISO yyyy-MM-dd) to resolve the company VAT config for; defaults to today. |
vatCase | VAT case code to restrict suggestions to a single case; returns all its rate/account bundles (optional). Any valid case code is accepted regardless of direction — e.g. a sales case such as TAXABLE_SUPPLY can be requested with direction=PURCHASE. Allowed values: TAXABLE_SUPPLY, SUPPLY_WITH_OPTION_ART_22, TAX_EXEMPT_SUPPLY, EXPORT, SUPPLY_ABROAD, EXCLUDED_SUPPLY, DECREASE_IN_PROFITS, INTERNAL_CONSUMPTION, SUBVENTION, CONTRIBUTIONS_DIVIDEND_DAMAGE_COMPENSION, DOMESTIC_PURCHASE, IMPORT_WITH_CUSTOMS, IMPORT_WITH_REVERSE_CHARGE, PURCHASE_ABROAD, TRANSFER_SUPPLY, MISCELLANEOUS, DE_TAXATION, MIXED_USE, REDUCTION, TAX_CREDIT_1050, TAX_CREDIT_1055_1056 |
Accept-Language | Preferred language for the bundle labels. |
Responses 6
200 Ranked VAT suggestions. show body
application/json array of PublicApiVatSuggestion
Array of PublicApiVatSuggestion.
labelstring example: Domestic purchase — 8.1%Human-meaningful label. Use it as the option text in the VAT-rate dropdown.recommendedboolean example: TrueTrue on the server's recommended default bundle — preselect this row in the dropdowns.reasonstring example: Default VAT rate for DOMESTIC_PURCHASE.Why this bundle is suggested.vatCaseCodestring example: DOMESTIC_PURCHASEVAT case code. Group rows by this value to build the VAT-case dropdown.vatCaseLinkstring example: vat_case:/luz_accounting/api/vat-cases/1Verbatim link to copy into a booking line's links (comma-joined with vatRateLink).vatRateDisplaystring example: 8.1%Display string of the VAT rate — the VAT-rate dropdown option within the selected VAT case.vatRateLinkstring example: vat_rate:/luz_accounting/api/master-vats/59Verbatim link to copy into a booking line's links (comma-joined with vatCaseLink).vatAccountCodeinteger (int32) format: int32 example: 1170Suggested VAT account for the generated VAT line — preselect this in the VAT-account dropdown; the first of vatAccountCodes (confirm against your chart of accounts).vatAccountCodesarray of integer (int32)All VAT accounts the company's chart maps to this account + VAT case; the options for the GUI's VAT-account dropdown.previewNetnumber example: 925.93Net amount preview — the Debit/Credit preview shown in the GUI. Null until an amount is supplied; refreshes when amount/amountKind change.previewVatnumber example: 74.07VAT amount preview — the VAT portion shown in the GUI. Null until an amount is supplied; refreshes when amount/amountKind change.
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/vat-typeskey / tokenList KLARA master VAT-type catalogue rows.
Accept-Language header selects which translation is used for the description and vatTypeShortName fields; if absent or unsupported, German is used as the fallback. The endpoint is a pure read — idempotent, no side effects. Any authenticated bearer token is accepted; the downstream service declares no role or permission requirement on this endpoint.operationId
listVatTypesV1 — the method name a generated client uses.
Required permission
none A valid token is enough. No particular permission is checked for this endpoint.
Parameters 1
| Name | Description |
|---|---|
Accept-Language | IETF language tag used to resolve the localized description and vatTypeShortName fields. Examples: de-CH, fr-CH, it-CH, en. When the header is missing or the language is unknown, the downstream service falls back to German. |
Responses 4
200 Master VAT-type rows. Empty array when the catalogue has not been seeded yet. show body
application/json array of PublicApiVatType
Array of PublicApiVatType.
vatTypeCodestring example: M81KLARA VAT-type code that identifies the row.companyTypestring example: LIMITED_LIABILITYCompany-type bucket the VAT type applies to.descriptionstring example: Vorsteuer Material- und DienstleistungsaufwandLocalized description, resolved against the requestAccept-Languageheader (German fallback).vatTypeShortNamestring example: VSt MALocalized short name, resolved against the requestAccept-Languageheader (German fallback).i18nobjectRaw description translations keyed by lowercase IETF language tag. Useful when a client renders its own language picker; otherwise prefer the resolveddescriptionfield.show fields
Open map with values of type
string.i18nShortNameobjectRaw short-name translations keyed by lowercase IETF language tag.show fields
Open map with values of type
string.vatTypeFormulaarray of PublicApiVatTypeFormulaPosting formulas attached to this VAT type, one per associated VAT case.show fields
Array of
PublicApiVatTypeFormula.vatCaseCodestring example: VAT_RECEIVABLELinked VAT-case code this formula belongs to.vatTypeCodestring example: M81VAT-type code this formula belongs to.companyTypestring example: LIMITED_LIABILITYCompany-type bucket the formula applies to.accountstring example: 2200Account number on which the VAT entry is booked.contraAccountstring example: 1170Contra-account number for the VAT entry.linkedBookingAccountstring example: 2201Linked auxiliary account, when applicable.specialRatesTypestring example: STANDARDSpecial-rates flag (enum name from the upstream model). Surfaced as a string so future internal enum additions stay backwards compatible.valuestring example: NORMALFormula value flag (enum name from the upstream model). Surfaced as a string for forward compatibility.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/accounting/vat-types/{vatTypeId}key / tokenResolve a KLARA master VAT-type row by its numeric id.
vatTypeId. The data is global — the same catalogue is shared across every tenant, so there are no tenant or company path parameters. The Accept-Language header selects which translation is used for the description and vatTypeShortName fields; if absent or unsupported, German is used as the fallback. The endpoint is a pure read — idempotent, no side effects. Any authenticated bearer token is accepted; the downstream service declares no role or permission requirement on this endpoint.operationId
getVatTypeByIdV1 — the method name a generated client uses.
Required permission
none A valid token is enough. No particular permission is checked for this endpoint.
Parameters 2
| Name | Description |
|---|---|
vatTypeId required | Numeric primary-key id of the master VAT-type row to resolve. Obtain it from GET /core/v1/accounting/vat-types. |
Accept-Language | IETF language tag used to resolve the localized description and vatTypeShortName fields. Examples: de-CH, fr-CH, it-CH, en. When the header is missing or the language is unknown, the downstream service falls back to German. |
Responses 5
200 The master VAT-type row matching vatTypeId, including its localized description, short name and posting formulas. show body
application/json PublicApiVatType
vatTypeCodestring example: M81KLARA VAT-type code that identifies the row.companyTypestring example: LIMITED_LIABILITYCompany-type bucket the VAT type applies to.descriptionstring example: Vorsteuer Material- und DienstleistungsaufwandLocalized description, resolved against the requestAccept-Languageheader (German fallback).vatTypeShortNamestring example: VSt MALocalized short name, resolved against the requestAccept-Languageheader (German fallback).i18nobjectRaw description translations keyed by lowercase IETF language tag. Useful when a client renders its own language picker; otherwise prefer the resolveddescriptionfield.show fields
Open map with values of type
string.i18nShortNameobjectRaw short-name translations keyed by lowercase IETF language tag.show fields
Open map with values of type
string.vatTypeFormulaarray of PublicApiVatTypeFormulaPosting formulas attached to this VAT type, one per associated VAT case.show fields
Array of
PublicApiVatTypeFormula.vatCaseCodestring example: VAT_RECEIVABLELinked VAT-case code this formula belongs to.vatTypeCodestring example: M81VAT-type code this formula belongs to.companyTypestring example: LIMITED_LIABILITYCompany-type bucket the formula applies to.accountstring example: 2200Account number on which the VAT entry is booked.contraAccountstring example: 1170Contra-account number for the VAT entry.linkedBookingAccountstring example: 2201Linked auxiliary account, when applicable.specialRatesTypestring example: STANDARDSpecial-rates flag (enum name from the upstream model). Surfaced as a string so future internal enum additions stay backwards compatible.valuestring example: NORMALFormula value flag (enum name from the upstream model). Surfaced as a string for forward compatibility.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 No master VAT-type row exists for the supplied vatTypeId.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/bank-reconciliation/open-positionskey / tokenList the bank-reconciliation open positions of the authenticated company.
action parameter selects the multi-condition combinator: search (default) is OR-of-conditions, filter is AND-of-conditions. Tenant and company are derived from the bearer-token session — they are never accepted from the URL. The endpoint is a pure read — idempotent, no side effects. The caller must hold the ACCOUNTING_GET_OPEN_POSITION permission on the company in scope.operationId
listBankReconciliationOpenPositionsV1 — the method name a generated client uses.
Required permission
ACCOUNTING_GET_OPEN_POSITION
Available through: Administrator, External user, Buchhalter, Kundenbeziehungen
Parameters 13
| Name | Description |
|---|---|
action | Multi-condition combinator. search (default) = OR-of-conditions; filter = AND-of-conditions.Allowed values: search, filter |
booking-type-codes | Comma-separated list of booking-type codes to restrict to. Allowed values: GENERAL_LEDGER, AP_INVOICE, AP_PAYMENT, AR_INVOICE, AR_PAYMENT, AP_PREPAYMENT, AP_PREPAYUSE, AR_PREPAYMENT, AR_PREPAYUSE, AR_CREDITNOTE, AR_CREDITUSE, AP_CREDITNOTE, AP_CREDITUSE, AMORTIZATION, SELLOFF_AMORTIZATION, DELIMIT. |
crdr-type | Restrict to credit (CR) or debit (DR) postings.Allowed values: CR, DR |
credit-card-not-reconciled | When true, restricts to credit-card transactions still pending reconciliation. |
general-search | Renamed to search-key. This name is accepted until 2027-09-01; when both are sent, search-key wins. After that date, a request sending general-search without search-key is rejected with 400.Deprecated — use search-key instead. Free-text search across description, partner name, document id and reference fields. |
invoice-date | Exact-match invoice (document) date filter (ISO date yyyy-MM-dd). |
partner | KLARA partner URI to filter by. Format: /api/…/{tenantId}/companies/{companyId}/partners/{partnerId}. Construct from the partner id returned by the public partner endpoints. |
payment-date | Exact-match payment date filter (ISO date yyyy-MM-dd). |
payment-date-from | Inclusive lower bound of the payment-date range filter (ISO date yyyy-MM-dd). |
payment-date-to | Inclusive upper bound of the payment-date range filter (ISO date yyyy-MM-dd). |
position-status | Comma-separated list of open-position lifecycle statuses to restrict to. Allowed values: OPEN, PARTLY_PAID, PAID, PARTLY_CLEARED, CLEARED. |
search-key | Free-text search across description, partner name, document id and reference fields. Combined with the other filters using the mode selected by action. |
tags | Comma-separated list of tag names to filter by (free-form). |
Responses 6
200 List of open positions matching the filters. Empty array when nothing matches. show body
application/json array of PublicApiSuitableOpenPosition
Array of PublicApiSuitableOpenPosition.
idinteger (int64) format: int64 example: 98765Booking-detail row id (database primary key).bookingHeaderIdinteger (int64) format: int64 example: 4321Id of the booking header this detail belongs to.bookingHeaderCommentstring example: Invoice 2026-0123 from Migros AGFree-text comment of the booking header.businessCaseIdinteger (int64) format: int64 example: 12345Id of the parent business case.accountCodestring example: 1100Numeric account code on which the booking is posted.accountLinkDisplaystring example: Forderungen aus L+LLocalized account label.crdrTypeobject example: DRCredit / debit indicator.Allowed values:CR,DRdescriptionstring example: Rechnung Nr. 2026-0123Free-text description of the booking line.bookingTypeCodeobject example: AR_INVOICEStable booking-type code of the underlying business case.Allowed values:GENERAL_LEDGER,AP_INVOICE,AP_PAYMENT,AR_INVOICE,AR_PAYMENT,AP_PREPAYMENT,AP_PREPAYUSE,AR_PREPAYMENT,AR_PREPAYUSE,AR_CREDITNOTE,AR_CREDITUSE,AP_CREDITNOTE,AP_CREDITUSE,AMORTIZATION,SELLOFF_AMORTIZATION,DELIMITopenPositionStatusobject example: OPENOpen-position lifecycle status.Allowed values:OPEN,PARTLY_PAID,PAID,PARTLY_CLEARED,CLEAREDamountnumber example: 1250Gross posted amount of the booking line.partialPaymentAmountnumber example: 0Sum of payments / clearings already applied to this position.openAmountnumber example: 1250Computed remaining amount still to be cleared (amount - partialPaymentAmount).vatAmountnumber example: 94.05VAT amount included in the gross posting.vatRatenumber example: 0.081VAT rate applied to the line as a decimal (e.g.0.077).vatRateDisplaystring example: 8.1 %Localized VAT-rate display string.vatBookingDetailLinkstringSelf-link of the companion VAT booking-detail line, when present.vatBookingDetailboolean example: FalseWhether this row is itself a derived VAT booking-detail line.foreignCurrencyAmountnumber example: 1250Posted amount in the document's foreign currency, when applicable.foreignCurrencyUnitstring example: EURISO-4217 currency code offoreignCurrencyAmount.tagsstring example: test manualFree-form tag string attached to the booking line.documentDatestring (date) format: date example: 2026-04-15Document (invoice) date of the underlying business case.bookingDatestring (date) format: date example: 2026-04-15Date the booking was journaled.paidDatestring (date) format: date example: 2026-05-10Date the position was last (partially) paid, if any.dueDatestring (date) format: date example: 2026-05-15Due date for payment.paymentDatestring (date) format: date example: 2026-05-12Effective payment date of the booking line.servicePeriodFromstring (date) format: date example: 2026-04-01Inclusive lower bound of the service period this booking covers.servicePeriodTostring (date) format: date example: 2026-04-30Inclusive upper bound of the service period this booking covers.createDatestring (date-time) format: date-time example: 2026-04-15T08:30:00Timestamp at which the booking detail was created.updateDatestring (date-time) format: date-time example: 2026-05-12T14:15:00Timestamp at which the booking detail was last updated.documentIdarray of stringList of document ids attached to the booking line.partnerNamestring example: Migros AGResolved partner display name for the position.bookingDetailUristring example: /api/luz_accounting/api/{tenantId}/companies/{companyId}/booking-headers/4321/booking-details/98765Stable URI of the booking-detail row, for cross-service linking.orderManagementInvoiceLinkstringSelf-link of the linked order-management invoice, when applicable.orderManagementInvoiceNumberstring example: INV-2026-0123Resolved order-management invoice number for display.msgIdstring example: MSG-7788Business-case message id, used by the eletter / inbox subsystems.creditorReferencestringCreditor reference (Swiss QR-IBAN reference number) of the position.isrReferencestringISR reference of the position, when applicable.isrMemberstringISR member number, when applicable.partnerIbanstringIBAN of the partner / counterparty.endToEndIdstringEnd-to-end identifier carried on the bank transaction.
400 One of the date filters is not a valid ISO date (yyyy-MM-dd), or one of the enum filters (position-status, booking-type-codes, crdr-type) carries a value that is not in the documented value set, or a free-text filter exceeds 256 characters.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/bank-transactionskey / tokenList bank transactions that are not reconciled yet.
bankAccountId from listCompanyBankAccounts; transactions of a bank account that no longer exists are left out, as in KLARA. To find the accounts of one bank, read swissBank.name in listCompanyBankAccounts. Credit card transactions are not included. A transaction counts as reconciled as soon as it is booked, also when it only partly settles an open item; reconciled transactions are never returned. An empty result for a payment reference therefore means either that no such payment arrived or that it is already reconciled; for the payment status of an invoice use listBankReconciliationOpenPositionsV1 with position-status. Amounts are the full amounts of the bank entry and always positive; direction tells whether money was received (CREDIT) or paid out (DEBIT). amount is set for entries in CHF. For entries in any other currency, including WIR (CHW), amount is empty and the amount is in foreignAmount with the currency in foreignCurrency; no CHF equivalent is provided. There is no server-side total: to sum amounts, read all pages sorted by ID ascending, and keep in mind that transactions reconciled in the meantime drop out of the list. Use paymentReference, remittanceText and counterpartyName to find the matching open item, for example with listBankReconciliationOpenPositionsV1 (use action=filter there so that all conditions apply; money received matches receivables, money paid out matches payables). Reconciling a transaction through the public API is not available yet; the id identifies the transaction for that future operation. Filter with bank-account-id, booking-date-from and booking-date-to (booking date, inclusive, yyyy-MM-dd) and direction; unlike the generic description of search-key, it matches counterparty name, remittance text, payment reference or additional information (contains, case-insensitive, spaces are not ignored). Sort with sort-field BOOKING_DATE (default), VALUE_DATE, AMOUNT or ID; ties are ordered by ID, empty values come last. Uses the standard collection parameters: search-key, offset (default 0), limit (default 50, maximum 100), sort-field and sort-direction (default DESC, newest first). The number of transactions matching the filters, ignoring offset and limit, is returned in the X-Total-Count header; to read everything, repeat the call with offset increased by limit until X-Total-Count is reached. This is a read-only, idempotent operation without side effects. Tenant and company are derived from the bearer token and are never accepted from the URL or the request. The caller must hold the ACCOUNTING permission on the company, and FINANCE_BANK_ACCOUNT to read the bank accounts (every role with ACCOUNTING holds it); otherwise the endpoint returns 403.operationId
listBankTransactionsV1 — the method name a generated client uses.
Required permission
Not established. Assume a permission is needed, and ask support if a call is rejected.
Parameters 9
| Name | Description |
|---|---|
bank-account-id | Only transactions of this company bank account, as returned by listCompanyBankAccounts. An id that is not a bank account of the company returns an empty list. |
booking-date-from | Only transactions booked on or after this date, ISO yyyy-MM-dd. |
booking-date-to | Only transactions booked on or before this date, ISO yyyy-MM-dd; not before booking-date-from. |
direction | CREDIT for money received, DEBIT for money paid out; both when omitted. Case-insensitive.Allowed values: CREDIT, DEBIT |
limit | Page size. Defaults to 50; hard cap 100. Requests above the cap are rejected with 400. |
offset | 0-based pagination offset — the number of rows to skip before the returned page. Defaults to 0. Combine with limit to walk the full collection. |
search-key | Free-text search. The fields searched are documented per endpoint. Matches are case-insensitive substring matches. Maximum length 256 characters. |
sort-direction | Sort direction. Allowed values: ASC, DESC. Defaults to DESC.Allowed values: ASC, DESC |
sort-field | Field to order the result by. The accepted values are listed per endpoint; an unknown value is rejected with 400. Each endpoint documents the default it applies, chosen so that paging with offset / limit is stable. |
Responses 6
200 One page of transactions, ordered by sort-field. Empty array when the company has no bank account or no unreconciled transaction matches. show body
application/json array of PublicApiBankTransaction
Array of PublicApiBankTransaction.
idinteger (int64) format: int64 example: 48213Id of the bank transaction, used by the reconciliation operations.bankAccountIdinteger (int64) format: int64 example: 3Id of the company bank account the transaction belongs to, as returned bylistCompanyBankAccounts.ibanstring example: CH9300762011623852957IBAN of the company bank account, without spaces.bookingDatestring (date) format: date example: 2026-10-14Booking date at the bank.valueDatestring (date) format: date example: 2026-10-14Value date.directionobject example: CREDITCREDIT: money received on the company bank account.DEBIT: money paid out from it.amountnumber example: 1250Amount in CHF, always positive; the direction is indirection. Empty for transactions only in a foreign currency.currencystring example: CHFCurrency of the transaction.foreignAmountnumber example: 1300Amount in the foreign currency, if any; always positive.foreignCurrencystring example: EURForeign currency, if any.counterpartyNamestring example: Muster AGName of the payer (CREDIT) or payee (DEBIT), as delivered by the bank, or of the partner of a manually added transaction.paymentReferencestring example: 210000000003139471430009017Structured payment reference: QR or ISR reference, or creditor reference (ISO 11649).paymentReferenceTypestring example: QRRType ofpaymentReferenceas delivered by the bank, for exampleQRRorSCOR; empty when the reference was recognized in the free text.remittanceTextstring example: Invoice 2026-104Unstructured remittance information; several lines are joined with;.additionalInfostring example: Payment QR-billAdditional information of the bank entry.endToEndIdstring example: E2E-2026-104End-to-end id set by the payer.
400 booking-date-from or booking-date-to is not an ISO date or the range is inverted, sort-field is not one of the documented values, or a parameter is outside its bounds (bank-account-id below 1, direction not CREDIT or DEBIT, search-key longer than 256 characters, offset negative, limit outside 1-100, sort-direction not ASC or DESC).
Error codes for this response (the code field of the response body):request.sort_field_invalid — sort-field was not one of the values the operation documents. The message lists the accepted values.banktransaction.booking_date_invalid — booking-date-from or booking-date-to was not an ISO date of the form yyyy-MM-dd, or booking-date-to was before booking-date-from.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
request.sort_field_invalid — sort-field was not one of the values the operation documents. The message lists the accepted values.banktransaction.booking_date_invalid — booking-date-from or booking-date-to was not an ISO date of the form yyyy-MM-dd, or booking-date-to was before booking-date-from.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/bookingskey / tokenSearch the journal: list bookings by text, booking date, amount or tag.
title (the text of the first booking line), totalAmount (sum of the credit lines), dates, document ids and internal comment. The debit and credit lines are not part of this list; read them per booking with getBookingV1 and the id. The list covers all fiscal years and every booking status (planned, booked, locked, sealed, inactive), like the journal; filter by booking date for one year, and use listCurrentCompanyFinancialYearsV1 when a request means a fiscal year. A booking that consists only of delimitation lines is not listed, and delimitation lines never satisfy a filter. search-key is split into words at spaces and keeps the bookings in which any word occurs (contains, case-insensitive, no umlaut or accent folding, so Miete also finds Mieter) in the description of a booking line (the title is the first one) or in the stored internal comment (HTML markup included). A word that is a number also finds bookings with exactly that account code on a line, the booking with that id, and bookings linked to that booking; there is no filter for an account code alone. booking-date-from and booking-date-to filter by booking date (inclusive, yyyy-MM-dd). amount-from and amount-to keep bookings with at least one line whose amount is in the range (both inclusive; for more than 1000 send amount-from=1000.01); this is the line amount, not totalAmount. tags takes a comma-separated list and keeps bookings with a line that carries any of the tags (contains, case-insensitive: Marketing also finds Online-Marketing; there is no exact match); take the names from listBookingTagsV1. All conditions are checked per line: a booking is listed if one of its lines meets the amount and tag conditions and the search matches that line or the booking header. Uses the standard collection parameters: search-key, offset (default 0), limit (default 50, maximum 100); the order is fixed, sort-field accepts only BOOKING_DATE and sort-direction only DESC (ASC answers 400). The number of bookings matching the filters, ignoring offset and limit, is returned in the X-Total-Count header; to only count, call with limit=1. To read everything, repeat the call with offset increased by limit until X-Total-Count is reached; new bookings appear at the start and shift later pages, so fix booking-date-to for a stable export and remove duplicates by id. This is a read-only, idempotent operation without side effects. Tenant and company are derived from the bearer token and are never accepted from the URL or the request. The caller must hold the ACCOUNTING permission on the company; otherwise the endpoint returns 403.operationId
listBookingsV1 — the method name a generated client uses.
Required permission
Not established. Assume a permission is needed, and ask support if a call is rejected.
Parameters 10
| Name | Description |
|---|---|
amount-from | Only bookings with at least one line whose amount is at least this value (CHF, line amounts are always positive). Applies to a line, not to the booking amount. |
amount-to | Only bookings with at least one line whose amount is at most this value; not below amount-from. Applies to the same line as amount-from. |
booking-date-from | Only bookings with a booking date on or after this date, ISO yyyy-MM-dd. |
booking-date-to | Only bookings with a booking date on or before this date, ISO yyyy-MM-dd; not before booking-date-from. |
limit | Page size. Defaults to 50; hard cap 100. Requests above the cap are rejected with 400. |
offset | 0-based pagination offset — the number of rows to skip before the returned page. Defaults to 0. Combine with limit to walk the full collection. |
search-key | Free-text search. The fields searched are documented per endpoint. Matches are case-insensitive substring matches. Maximum length 256 characters. |
sort-direction | Sort direction. Allowed values: ASC, DESC. Defaults to DESC.Allowed values: ASC, DESC |
sort-field | Field to order the result by. The accepted values are listed per endpoint; an unknown value is rejected with 400. Each endpoint documents the default it applies, chosen so that paging with offset / limit is stable. |
tags | Comma-separated tags; keeps bookings with a line carrying any of them (contains, case-insensitive). Tag names come from listBookingTagsV1. |
Responses 6
200 One page of bookings, newest first. Empty array when no booking matches. show body
application/json array of PublicApiBookingSummary
Array of PublicApiBookingSummary.
idinteger (int64) format: int64 example: 4321Id of the booking, as shown in the journal in brackets after the title.bookingDatestring (date) format: date example: 2026-10-14Booking date.documentDatestring (date) format: date example: 2026-10-10Document date, if set.titlestring example: Rent October 2026Text of the first booking line, as shown as the title in the journal.totalAmountnumber example: 2500Booking amount in CHF: the sum of the credit lines.documentIdsarray of stringIds of the documents attached to the booking.internalCommentstring example: Paid by e-bankingInternal comment as entered in KLARA. It may contain HTML; escape it before rendering.
400 booking-date-from or booking-date-to is not an ISO date or the range is inverted, amount-to is below amount-from, sort-field is not BOOKING_DATE, sort-direction is ASC, or a parameter is outside its bounds (amount-from or amount-to not a decimal number, search-key or tags longer than 256 characters, offset negative, limit outside 1-100, sort-direction not ASC or DESC).
Error codes for this response (the code field of the response body):request.sort_field_invalid — sort-field was not one of the values the operation documents. The message lists the accepted values.request.sort_direction_unsupported — sort-direction was sent with the direction an operation with a fixed order does not have. The message names the available direction.booking.booking_date_invalid — booking-date-from or booking-date-to was not an ISO date of the form yyyy-MM-dd, or booking-date-to was before booking-date-from; for a document booking, bookingDate or booking-date was not an ISO date of that form.booking.amount_range_invalid — amount-to was below amount-from.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
request.sort_field_invalid — sort-field was not one of the values the operation documents. The message lists the accepted values.request.sort_direction_unsupported — sort-direction was sent with the direction an operation with a fixed order does not have. The message names the available direction.booking.booking_date_invalid — booking-date-from or booking-date-to was not an ISO date of the form yyyy-MM-dd, or booking-date-to was before booking-date-from; for a document booking, bookingDate or booking-date was not an ISO date of that form.booking.amount_range_invalid — amount-to was below amount-from.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/v1/bookingskey / tokenCreate a new manual booking for the authenticated company.
bookingDate must fall inside an open fiscal year; set confirmDontMindClosingFiscalYear to true to accept a booking that targets a closing fiscal year. Set ignore-unsubscripted-dates to true to bypass the subscription-period guard that normally rejects bookings outside the active KLARA Accounting subscription window. Tenant and company are derived from the bearer token — the request body's id and companyId are ignored. The caller must hold the ACCOUNTING permission on the targeted company.operationId
createBookingV1 — the method name a generated client uses.
Required permission
ACCOUNTING
Available through: Administrator, External user, Buchhalter
Parameters 4
| Name | Description |
|---|---|
autoCalculateVat | When true, the server recalculates VAT like the Manual booking GUI: each VAT-bearing line sends a single gross/net amount + a vat_rate link + vatAccountCode + isExcludeVatAmount and omits its VAT counterpart line; the server derives the net/VAT split and generates the VAT line so the entry balances. When false (default), the caller must pre-split and pre-compute every line (current behaviour). Obtain valid VAT values from GET /core/latest/vat-cases and GET /core/v1/accounting/master-vats. |
confirmDontMindClosingFiscalYear | When true, accept the booking even if its bookingDate falls in a closing fiscal year. Defaults to false. |
ignore-unsubscripted-dates | When true, accept the booking even if its date falls outside the active KLARA Accounting subscription period. Defaults to false. |
Accept-Language | Preferred language for any localized error messages produced downstream. Examples: de-CH, fr-CH, it-CH, en. Defaults to the tenant's configured language when omitted. |
Request body required
Prerequisite APIs — call these first to obtain valid values:
GET /core/v1/accounting/accounts→ provides validaccountCodevalues (e.g. 1020, 1100, 2000, 3200). Only use this endpoint when you want to implement a seperate combobox with a flat master account list without sub-account context.GET /core/v1/accounting/accounts/account-displaying→ provide full details about all valid, selectable accounts (combine name, combine code, master account, sub-account details when available). PREFERRED to use this endpoint as the booking line for some account code MUST include sub-account links if the sub-account exists.POST /core/latest/companies/{company-id}/documents→ upload supporting documents (invoices, receipts, bank statements) and collect the returneddocumentIdvalues to populatedocumentIds. This step should be done BEFORE invoking the booking creation. Important: when calling this endpoint for booking creation, always usecategory = LIABILITY_UPLOAD— no other category is permitted in this context (the documents are automatically moved toLIABILITIESwhen the booking is created successfully). The GUI for booking creation must always provide a document-upload step using theLIABILITY_UPLOADcategory.GET /core/v1/accounting/booking-types→ provides validbookingTypeCodevalues (e.g. AR_PAYMENT, AP_INVOICE, GENERAL_LEDGER)GET /core/v1/accounting/tags(listBookingTagsV1) → the tags the company already uses on its booking lines; reuse their spelling intagsinstead of creating a new variantGET /core/latest/vat-cases→ provides VAT case IDs for thevat_caselink keyGET /core/v1/accounting/master-vats→ provides master VAT rate IDs for thevat_ratelink keyGET /core/v1/accounting/vat-suggestions?direction=PURCHASE|SALE&amount=…&date=…→ RECOMMENDED for VAT. Returns ready-to-use bundles; from therecommendedrow copyvatCaseLinkandvatRateLinkstraight into the line'slinks(comma-joined) andvatAccountCodeonto the line. Use withautoCalculateVat=true(see VAT auto-calculation below).GET /core/v1/accounting/vat-profile?date=…→ the company VAT regime (effective vs net-tax-rate). Informational: it explains how the server will split the amount; you do not copy it into the booking.
id(long) — Server-assigned. Set to0for new bookings.companyId(long) — Server-derived from token. Set to0.bookingDate(string, yyyy-MM-ddT00:00:00Z, required) — Must fall in an open fiscal year.documentIds(array of string) — IDs of attached documents (gather fromPOST /core/latest/companies/{company-id}/documentswithcategory = LIABILITY_UPLOAD). The documents are automatically moved toLIABILITIESon success booking creation. A GUI implementing booking creation must always provide a document-upload step — omitting it is only acceptable for purely internal adjustments where no document exists, in which casedocumentIdsmay be left empty ([]).internalComment(string) — Internal note visible only to accounting users.bookingStatus(string) — Allowed:DRAFT,BOOKED,CANCELLED.bookingDetails(array, required) — At least 2 balanced debit/credit lines (see below).expand(boolean) — UI hint. Usefalse.viewDocument(boolean) — UI hint. Usefalse.
id(long) — Server-assigned. Set to0.seq(int) — Line order starting at 0.accountCode(int, required) — FromGET /core/v1/accounting/accountsorGET /core/v1/accounting/accounts/account-displaying(preferred; includes sub-account context when it exists).crdrType(string, required) —DR(debit) orCR(credit).description(string) — Free-text line description.amount(decimal, required) — Always positive. Total DR must equal total CR.tags(string, required) — Comma-separated list of string tags. Each tag should represent a topic that the booking line should be associated with, e.g. Operating Expenses. Tags are free-form and have no semantic meaning to KLARA; they are simply stored and returned as-is. Reuse the existing spelling fromlistBookingTagsV1, and separate several tags with a comma without a space (Marketing,Zurich). Provide at least one tag per line.links(string) — Comma-separated structured links. Two uses: (a) sub-account entities for the line's account code (fromGET /core/v1/accounting/accounts/account-displaying); and (b) VAT linksvat_case:…+vat_rate:…(fromGET /core/v1/accounting/vat-suggestions) when this line carries VAT. Can be empty when neither applies.bookingTypeCode(string) — FromGET /core/v1/accounting/booking-types.vatAccountCode(int) — Only withautoCalculateVat=true. The account the generated VAT line posts to (e.g. 1170); from thevatAccountCodeof avat-suggestionsrow.isExcludeVatAmount(boolean) — Only withautoCalculateVat=true.false=amountincludes VAT (gross);true=amountexcludes VAT (net base).isrReference(string) — ISR/QR-bill reference. Empty if not applicable.isrMember(string) — ISR participant number. Empty if not applicable.partnerIban(string) — Counterpart IBAN for payments. Empty if not applicable.vatBookingDetail(boolean) — Set tofalsefor manual lines.
autoCalculateVat=true) — book like the Manual booking GUI without doing VAT math:- Call
GET /core/v1/accounting/vat-suggestions?direction=PURCHASE|SALE&amount=<gross>&date=<bookingDate>and take therecommendedrow. - On the VAT-bearing line set:
links = "<vatCaseLink>,<vatRateLink>"(both values verbatim from that row),vatAccountCode = <row.vatAccountCode>,amount = <your gross or net>, andisExcludeVatAmountmatching theamountKindyou queried (false= gross). - Do NOT add the VAT counterpart line yourself — the server derives the net/VAT split and generates it (matching the row's
previewNet/previewVat). Provide only your account line(s) + the balancing line.
vat-profile (effective → net + VAT line; net-tax-rate → flat-rate split; reverse-charge → an extra reverse VAT line). When autoCalculateVat is omitted/false you must instead pre-split and pre-compute every line yourself (see the "Invoice received/sent" examples).Rules: Minimum 2 lines; total DR = total CR (after server VAT expansion when
autoCalculateVat=true); amounts always positive; bookingDate in open fiscal year.application/json PublicApiBookingHeader
idinteger (int64) format: int64 example: 12345Internal id of the booking. Assigned by the server on creation; omit when sending a new booking.companyIdinteger (int64) format: int64 example: 1Internal id of the company this booking belongs to. Filled by the server from the caller's session; ignored on input.documentDatestring (date-time) required format: date-time example: 2024-06-15T00:00:00ZDate printed on the underlying document, e.g. supplier invoice date (yyyy-MM-ddT00:00:00Z).bookingDatestring (date-time) required format: date-time example: 2024-06-15T00:00:00ZEffective accounting date of the booking; must fall inside an open fiscal year unless confirmDontMindClosingFiscalYear is set (yyyy-MM-ddT00:00:00Z).documentIdsarray of stringIds of supporting documents (uploaded files / e-mails) attached to this booking.businessCasestring example: Office suppliesFree-text business case label shown on the journal.snippetsarray of stringSnippet identifiers applied to this booking, copied from the booking template.bookingStatusstring example: BOOKEDStatus of the booking. Allowed values: DRAFT, BOOKED, CANCELLED.internalCommentstringInternal comment, visible only to accounting users.businessCaseIdstring read-onlyId of the KLARA business case that produced this booking. Set by the server and ignored on input: a booking created through this API never belongs to a business case, so leave it empty. This is not the business case template code (use businessCase for a label). A non-numeric value is rejected with 400 booking.business_case_id_invalid.relatedBookingHeaderLinksarray of stringURIs of bookings that are related to this one (e.g. payment ↔ invoice, original ↔ delimitation).bookingDetailsarray of PublicApiBookingDetail required minItems: 2Debit and credit lines of the booking. Must contain at least two lines whose debit and credit totals balance.show fields
Array of
PublicApiBookingDetail.idinteger (int64) format: int64 example: 1001Internal id of the booking detail. Assigned by the server on creation; omit when sending a new booking.accountCodeinteger (int32) required format: int32 min: 1 example: 1020Ledger account number the amount is posted to (Swiss SME chart of accounts).crdrTypestring required example: DRWhether this line is a credit or a debit. Allowed values: CR, DR.descriptionstring required pattern: \S example: Office supplies — invoice 2024-019Free-text description shown on the journal report.amountnumber required example: 150Absolute posting amount in the company main currency. Always positive; sign is carried by crdrType.partialPaymentAmountnumber example: 0Amount already paid against this line — only used for open-position bookings (invoices, credit notes).tagsstring required example: project-alpha,q2Comma-separated list of string tags. Each tag is free-form and should represent a topic that the booking line should be associated with. Reuse the existing spelling fromlistBookingTagsV1; separate several tags with a comma without a space. Provide at least one tag per line.linksstring example: bank_account:/luzfin_finance/api/388c822c-7860-41ae-94ac-330684bb63e0/companies/1/bank-accounts/85,vat_case:/luz_accounting/api/vat-cases/1Comma-separated list of structured links of entities that are considered the sub-accounts associated with an account code when making a booking line.This string can be empty when no sub-account is required for the current account code of the booking line.Each link has the formatkey:uri-path. Important: the exact URI values — including the tenant UUID and company ID segments — are returned verbatim byGET /core/v1/accounting/accounts/account-displayingin the account'sspecificationItem.linkfield; copy them as-is, do not construct them manually.
Supported link type keys:
Bank / cash sub-accounts (secondary dropdown in GUI for accounts 1000, 1020, 1030, 1040, and similar):bank_account— company bank account; URI from/…/{tenant}/companies/{cid}/bank-accounts/{id}cash— cash register; URI from/…/{tenant}/companies/{cid}/cash/{id}transfer_account— transfer account; URI from/…/{tenant}/companies/{cid}/transfer/{id}interest_bearing_current_account— interest-bearing current account; URI from/…/{tenant}/companies/{cid}/interest-bearing-current/{id}non_interest_bearing_current_account— non-interest-bearing current account; URI from/…/{tenant}/companies/{cid}/non-interest-bearing/{id}
customer— accounts-receivable customer; URI from/…/{tenant}/companies/{cid}/customers/{id}supplier— accounts-payable supplier; URI from/…/{tenant}/companies/{cid}/customers/{id}employee— employee (payroll/HR); URI from/…/{tenant}/companies/{cid}/employees/{id}
vat_case— VAT case; URI from/…/vat-cases/{id}(obtain fromGET /core/latest/vat-cases)vat_rate— master VAT rate; URI from/…/master-vats/{id}(obtain fromGET /core/v1/accounting/master-vats)social_insurance— social insurance contract; URI from/…/{tenant}/companies/{cid}/insurance-contracts/{id}tax_at_source— tax-at-source (withholding tax) state; URI from/…/states/{id}
financial_asset— financial asset; URI from/…/{tenant}/companies/{cid}/financial-asset/{id}intangible_asset— intangible asset; URI from/…/{tenant}/companies/{cid}/intangible-asset/{id}equity— equity account; URI from/…/{tenant}/companies/{cid}/equity/{id}long_term_interest_bearing_liability— long-term loan; URI from/…/{tenant}/companies/{cid}/long-term-interest-bearing/{id}statutory_profit_reserve— statutory profit reserve; URI from/…/{tenant}/companies/{cid}/statutory-profit-reserve/{id}deferrals— accrual/deferral position; URI from/…/{tenant}/companies/{cid}/deferral/{id}
gift_card— gift card; URI from/…/{tenant}/companies/{cid}/gift-cards/{id}not_billed_services— unbilled service position; URI from/…/{tenant}/companies/{cid}/not-billed-services/{id}various— miscellaneous counterpart; URI from/…/{tenant}/companies/{cid}/various/{id}inventory_change_goods— inventory type (static); URI:/…/inventory-types/inventory-change-goodsinventory_change_material— inventory type (static); URI:/…/inventory-types/inventory-change-materialnon_billed_services— inventory type (static); URI:/…/inventory-types/non-billed-servicesfinished_products— inventory type (static); URI:/…/inventory-types/finished-productsunfinished_products— inventory type (static); URI:/…/inventory-types/unfinished-products
seqinteger (int32) format: int32 example: 0Ordering of the line inside the booking, starting at 0.vatAccountCodeinteger (int32) format: int32 example: 1170GUI-style VAT input, used only withautoCalculateVat=true: the account the automatically generated VAT counterpart line is posted to (the GUI "VAT account", e.g. 1170). Required on a VAT-bearing line when the line carries avat_ratelink and omits its own VAT line. Ignored whenautoCalculateVatis false (caller pre-splits the lines).vatTypeDescriptionstring example: INCLUSIVEHow VAT is recorded for this line. Allowed values: INCLUSIVE, EXCLUSIVE, NONE.vatBookingDetailLinkstringURI of the companion VAT booking detail, when one was generated automatically.vatAmountnumber example: 11.4VAT amount carried on this line, in the company main currency.vatRatenumber example: 7.7Effective VAT rate (percent) applied to this line.vatRateDisplaystring example: 7.7%Display string of the VAT rate as rendered in the UI.vatBookingDetailboolean example: FalseTrue when this line is the automatically generated VAT counterpart of another line.bookingTypeCodestring required example: GENERAL_LEDGERBusiness meaning of the booking line. Allowed values include GENERAL_LEDGER, AR_INVOICE, AP_INVOICE, AR_PAYMENT, AP_PAYMENT, AR_CREDIT_NOTE, AP_CREDIT_NOTE.openPositionStatusstring example: OPENLifecycle of the open position represented by this line. Allowed values include OPEN, PARTIALLY_PAID, PAID, CLOSED.creditorReferencestringCreditor reference (QR-bill / ISO 11649) attached to the open position.isrReferencestringISR reference number attached to the open position.isrMemberstringISR participant (member) number of the creditor.partnerIbanstringIBAN of the counterpart used for outgoing payments.endToEndIdstringPain.001 end-to-end id, propagated to the outgoing payment instruction.isExcludeVatAmountboolean example: FalseWhen true, the gross amount on this line excludes VAT; otherwise it includes VAT.foreignCurrencyAmountnumberPosting amount in the foreign currency, when the line is booked in a non-main currency.foreignCurrencyUnitstring example: EURISO 4217 code of the foreign currency.paidDatestring (date-time) format: date-time example: 2024-06-15T00:00:00ZDate on which the open position was settled (yyyy-MM-ddT00:00:00Z).dueDatestring (date-time) format: date-time example: 2024-06-30T00:00:00ZDate on which the open position becomes overdue (yyyy-MM-ddT00:00:00Z).paymentDatestring (date-time) format: date-time example: 2024-06-28T00:00:00ZDate on which the payment instruction is scheduled (yyyy-MM-ddT00:00:00Z).servicePeriodFromstring (date-time) format: date-time example: 2024-06-01T00:00:00ZStart of the service period covered by the line (yyyy-MM-ddT00:00:00Z).servicePeriodTostring (date-time) format: date-time example: 2024-06-30T00:00:00ZEnd of the service period covered by the line (yyyy-MM-ddT00:00:00Z).paymentPercentagenumber example: 0Percentage of the open-position amount already settled.isDunningBlockedboolean example: FalseWhen true, dunning reminders are suppressed for this open position.
invoiceNumberstring example: 2024-019Invoice number printed on the document.orderManagementInvoiceLinkstringKLARA order-management invoice URI when the booking was generated from a KLARA invoice.bookingTemplateIdinteger (int64) format: int64 example: 501Id of the booking template the user picked when creating this entry.bookingTitlestring example: Office supplies — June 2024Short title of the booking shown in lists.totalAmountnumber example: 150Sum of the absolute amounts of the booking lines, in the company main currency.bookingTypeCodestring example: GENERAL_LEDGERBusiness meaning of the booking. Allowed values include GENERAL_LEDGER, AR_INVOICE, AP_INVOICE, AR_PAYMENT, AP_PAYMENT, AR_CREDIT_NOTE, AP_CREDIT_NOTE.
Responses 6
200 Booking created. show body
application/json PublicApiBookingHeader
idinteger (int64) format: int64 example: 12345Internal id of the booking. Assigned by the server on creation; omit when sending a new booking.companyIdinteger (int64) format: int64 example: 1Internal id of the company this booking belongs to. Filled by the server from the caller's session; ignored on input.documentDatestring (date-time) required format: date-time example: 2024-06-15T00:00:00ZDate printed on the underlying document, e.g. supplier invoice date (yyyy-MM-ddT00:00:00Z).bookingDatestring (date-time) required format: date-time example: 2024-06-15T00:00:00ZEffective accounting date of the booking; must fall inside an open fiscal year unless confirmDontMindClosingFiscalYear is set (yyyy-MM-ddT00:00:00Z).documentIdsarray of stringIds of supporting documents (uploaded files / e-mails) attached to this booking.businessCasestring example: Office suppliesFree-text business case label shown on the journal.snippetsarray of stringSnippet identifiers applied to this booking, copied from the booking template.bookingStatusstring example: BOOKEDStatus of the booking. Allowed values: DRAFT, BOOKED, CANCELLED.internalCommentstringInternal comment, visible only to accounting users.businessCaseIdstring read-onlyId of the KLARA business case that produced this booking. Set by the server and ignored on input: a booking created through this API never belongs to a business case, so leave it empty. This is not the business case template code (use businessCase for a label). A non-numeric value is rejected with 400 booking.business_case_id_invalid.relatedBookingHeaderLinksarray of stringURIs of bookings that are related to this one (e.g. payment ↔ invoice, original ↔ delimitation).bookingDetailsarray of PublicApiBookingDetail required minItems: 2Debit and credit lines of the booking. Must contain at least two lines whose debit and credit totals balance.show fields
Array of
PublicApiBookingDetail.idinteger (int64) format: int64 example: 1001Internal id of the booking detail. Assigned by the server on creation; omit when sending a new booking.accountCodeinteger (int32) required format: int32 min: 1 example: 1020Ledger account number the amount is posted to (Swiss SME chart of accounts).crdrTypestring required example: DRWhether this line is a credit or a debit. Allowed values: CR, DR.descriptionstring required pattern: \S example: Office supplies — invoice 2024-019Free-text description shown on the journal report.amountnumber required example: 150Absolute posting amount in the company main currency. Always positive; sign is carried by crdrType.partialPaymentAmountnumber example: 0Amount already paid against this line — only used for open-position bookings (invoices, credit notes).tagsstring required example: project-alpha,q2Comma-separated list of string tags. Each tag is free-form and should represent a topic that the booking line should be associated with. Reuse the existing spelling fromlistBookingTagsV1; separate several tags with a comma without a space. Provide at least one tag per line.linksstring example: bank_account:/luzfin_finance/api/388c822c-7860-41ae-94ac-330684bb63e0/companies/1/bank-accounts/85,vat_case:/luz_accounting/api/vat-cases/1Comma-separated list of structured links of entities that are considered the sub-accounts associated with an account code when making a booking line.This string can be empty when no sub-account is required for the current account code of the booking line.Each link has the formatkey:uri-path. Important: the exact URI values — including the tenant UUID and company ID segments — are returned verbatim byGET /core/v1/accounting/accounts/account-displayingin the account'sspecificationItem.linkfield; copy them as-is, do not construct them manually.
Supported link type keys:
Bank / cash sub-accounts (secondary dropdown in GUI for accounts 1000, 1020, 1030, 1040, and similar):bank_account— company bank account; URI from/…/{tenant}/companies/{cid}/bank-accounts/{id}cash— cash register; URI from/…/{tenant}/companies/{cid}/cash/{id}transfer_account— transfer account; URI from/…/{tenant}/companies/{cid}/transfer/{id}interest_bearing_current_account— interest-bearing current account; URI from/…/{tenant}/companies/{cid}/interest-bearing-current/{id}non_interest_bearing_current_account— non-interest-bearing current account; URI from/…/{tenant}/companies/{cid}/non-interest-bearing/{id}
customer— accounts-receivable customer; URI from/…/{tenant}/companies/{cid}/customers/{id}supplier— accounts-payable supplier; URI from/…/{tenant}/companies/{cid}/customers/{id}employee— employee (payroll/HR); URI from/…/{tenant}/companies/{cid}/employees/{id}
vat_case— VAT case; URI from/…/vat-cases/{id}(obtain fromGET /core/latest/vat-cases)vat_rate— master VAT rate; URI from/…/master-vats/{id}(obtain fromGET /core/v1/accounting/master-vats)social_insurance— social insurance contract; URI from/…/{tenant}/companies/{cid}/insurance-contracts/{id}tax_at_source— tax-at-source (withholding tax) state; URI from/…/states/{id}
financial_asset— financial asset; URI from/…/{tenant}/companies/{cid}/financial-asset/{id}intangible_asset— intangible asset; URI from/…/{tenant}/companies/{cid}/intangible-asset/{id}equity— equity account; URI from/…/{tenant}/companies/{cid}/equity/{id}long_term_interest_bearing_liability— long-term loan; URI from/…/{tenant}/companies/{cid}/long-term-interest-bearing/{id}statutory_profit_reserve— statutory profit reserve; URI from/…/{tenant}/companies/{cid}/statutory-profit-reserve/{id}deferrals— accrual/deferral position; URI from/…/{tenant}/companies/{cid}/deferral/{id}
gift_card— gift card; URI from/…/{tenant}/companies/{cid}/gift-cards/{id}not_billed_services— unbilled service position; URI from/…/{tenant}/companies/{cid}/not-billed-services/{id}various— miscellaneous counterpart; URI from/…/{tenant}/companies/{cid}/various/{id}inventory_change_goods— inventory type (static); URI:/…/inventory-types/inventory-change-goodsinventory_change_material— inventory type (static); URI:/…/inventory-types/inventory-change-materialnon_billed_services— inventory type (static); URI:/…/inventory-types/non-billed-servicesfinished_products— inventory type (static); URI:/…/inventory-types/finished-productsunfinished_products— inventory type (static); URI:/…/inventory-types/unfinished-products
seqinteger (int32) format: int32 example: 0Ordering of the line inside the booking, starting at 0.vatAccountCodeinteger (int32) format: int32 example: 1170GUI-style VAT input, used only withautoCalculateVat=true: the account the automatically generated VAT counterpart line is posted to (the GUI "VAT account", e.g. 1170). Required on a VAT-bearing line when the line carries avat_ratelink and omits its own VAT line. Ignored whenautoCalculateVatis false (caller pre-splits the lines).vatTypeDescriptionstring example: INCLUSIVEHow VAT is recorded for this line. Allowed values: INCLUSIVE, EXCLUSIVE, NONE.vatBookingDetailLinkstringURI of the companion VAT booking detail, when one was generated automatically.vatAmountnumber example: 11.4VAT amount carried on this line, in the company main currency.vatRatenumber example: 7.7Effective VAT rate (percent) applied to this line.vatRateDisplaystring example: 7.7%Display string of the VAT rate as rendered in the UI.vatBookingDetailboolean example: FalseTrue when this line is the automatically generated VAT counterpart of another line.bookingTypeCodestring required example: GENERAL_LEDGERBusiness meaning of the booking line. Allowed values include GENERAL_LEDGER, AR_INVOICE, AP_INVOICE, AR_PAYMENT, AP_PAYMENT, AR_CREDIT_NOTE, AP_CREDIT_NOTE.openPositionStatusstring example: OPENLifecycle of the open position represented by this line. Allowed values include OPEN, PARTIALLY_PAID, PAID, CLOSED.creditorReferencestringCreditor reference (QR-bill / ISO 11649) attached to the open position.isrReferencestringISR reference number attached to the open position.isrMemberstringISR participant (member) number of the creditor.partnerIbanstringIBAN of the counterpart used for outgoing payments.endToEndIdstringPain.001 end-to-end id, propagated to the outgoing payment instruction.isExcludeVatAmountboolean example: FalseWhen true, the gross amount on this line excludes VAT; otherwise it includes VAT.foreignCurrencyAmountnumberPosting amount in the foreign currency, when the line is booked in a non-main currency.foreignCurrencyUnitstring example: EURISO 4217 code of the foreign currency.paidDatestring (date-time) format: date-time example: 2024-06-15T00:00:00ZDate on which the open position was settled (yyyy-MM-ddT00:00:00Z).dueDatestring (date-time) format: date-time example: 2024-06-30T00:00:00ZDate on which the open position becomes overdue (yyyy-MM-ddT00:00:00Z).paymentDatestring (date-time) format: date-time example: 2024-06-28T00:00:00ZDate on which the payment instruction is scheduled (yyyy-MM-ddT00:00:00Z).servicePeriodFromstring (date-time) format: date-time example: 2024-06-01T00:00:00ZStart of the service period covered by the line (yyyy-MM-ddT00:00:00Z).servicePeriodTostring (date-time) format: date-time example: 2024-06-30T00:00:00ZEnd of the service period covered by the line (yyyy-MM-ddT00:00:00Z).paymentPercentagenumber example: 0Percentage of the open-position amount already settled.isDunningBlockedboolean example: FalseWhen true, dunning reminders are suppressed for this open position.
invoiceNumberstring example: 2024-019Invoice number printed on the document.orderManagementInvoiceLinkstringKLARA order-management invoice URI when the booking was generated from a KLARA invoice.bookingTemplateIdinteger (int64) format: int64 example: 501Id of the booking template the user picked when creating this entry.bookingTitlestring example: Office supplies — June 2024Short title of the booking shown in lists.totalAmountnumber example: 150Sum of the absolute amounts of the booking lines, in the company main currency.bookingTypeCodestring example: GENERAL_LEDGERBusiness meaning of the booking. Allowed values include GENERAL_LEDGER, AR_INVOICE, AP_INVOICE, AR_PAYMENT, AP_PAYMENT, AR_CREDIT_NOTE, AP_CREDIT_NOTE.
400 Data invalid
Error codes for this response (the code field of the response body):booking.status_not_allowed — bookingStatus was neither BOOKED nor PLANNED.booking.business_case_id_invalid — businessCaseId was set but is not a numeric business case id. Leave it empty when creating a booking; use businessCase for a label.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
booking.status_not_allowed — bookingStatus was neither BOOKED nor PLANNED.booking.business_case_id_invalid — businessCaseId was set but is not a numeric business case id. Leave it empty when creating a booking; use businessCase for a label.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Error codes for this response (the code field of the response body):auth.credentials_missing — Neither an Authorization: Bearer header nor an API key header was present on the request.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
auth.credentials_missing — Neither an Authorization: Bearer header nor an API key header was present on the request.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/bookings/{bookingId}key / tokenRead one booking with all its debit and credit lines.
bookingId from listBookingsV1 or from connectedLines; booking ids are unique within the tenant. The header carries the same title and totalAmount as in listBookingsV1 (text of the line with position 1, sum of all credit lines). lines holds every line in the order KLARA shows them, including VAT lines (separate lines on the VAT account) and delimitation lines (bookingType DELIMIT); a booking that consists only of delimitation lines can be read here although listBookingsV1 does not list it. Each line has its account (number and name), side (DEBIT or CREDIT) and amount in CHF (always positive), the posting text, tags, the kind of line (bookingType), the VAT rate, a foreign currency amount, the open-item state of invoice and payment lines with due date, paid date and overdue, the service period, and who changed the line last (lastModifiedBy: an e-mail address, an API key name or SYSTEM; lastModifiedAt in UTC; a line never changed shows its creation). references lists the objects a line refers to, with type, id and the name KLARA shows now: customers and suppliers (same ids as in listCustomersV1; the partner of an invoice or payment is on its AR_* or AP_* line), company bank accounts (listCompanyBankAccounts), bank transactions, VAT cases, invoices, payments, employees, social insurances, salary runs, tax-at-source cantons, KLARA's built-in gift-card and miscellaneous partner entries, and sub-accounts of the chart of accounts (with category); a name is missing when it could not be resolved. connectedLines lists the lines of other bookings a line is connected to: RECONCILIATION (a payment or bank reconciliation against an open item; listed on every line involved, so the invoice line lists each payment line and the payment line each invoice line), DELIMITATION (accrual), PREPAYMENT_CLEARING, CREDIT_NOTE_CLEARING and MAIN_LINE (the line this automatically created line was derived from, for example a VAT line booked with a payment that points to the revenue line of the invoice); read the connected booking with this operation and its bookingId. Not returned: the booking status (planned and inactive bookings are returned like booked ones, as the journal shows them), the amount still open on an open item (use listCustomerOpenPositionsV1), the VAT amount of a line, the amount a single reconciliation settled, and who changed the booking header (date, comment, documents). Reading the lines of many bookings takes one call per booking. Empty values and empty lists are left out. Account names and reference names follow Accept-Language. Returns 404 with code booking.unknown when no booking with this id exists in the caller's company; a booking of another company is answered the same way, to read it a token for that company is needed. A bookingId that is not a number also answers 404 (no such path). This is a read-only, idempotent operation without side effects. Tenant and company are derived from the bearer token and are never accepted from the URL or the request. The caller must hold the ACCOUNTING permission on the company; otherwise the endpoint returns 403; a 403 never means that the booking exists.operationId
getBookingV1 — the method name a generated client uses.
Required permission
Not established. Assume a permission is needed, and ask support if a call is rejected.
Parameters 2
| Name | Description |
|---|---|
bookingId required | Id of the booking, from the id of listBookingsV1. |
Accept-Language | Language of account names and reference names, as in KLARA (for example de-CH, fr-CH, it-CH, en); default the tenant's language. |
Responses 7
200 The booking with all its lines. show body
application/json PublicApiBookingWithLines
idinteger (int64) format: int64 example: 4321Id of the booking, as inlistBookingsV1.bookingDatestring (date) format: date example: 2026-10-14Booking date.documentDatestring (date) format: date example: 2026-10-10Document date, if set.titlestring example: Rent October 2026Text of the first booking line, as shown as the title in the journal and inlistBookingsV1.totalAmountnumber example: 2500Booking amount in CHF: the sum of all credit lines (delimitation lines included), as inlistBookingsV1.documentIdsarray of stringIds of the documents attached to the booking.internalCommentstring example: Paid by e-bankingInternal comment as entered in KLARA. It may contain HTML; escape it before rendering.linesarray of PublicApiBookingLineAll debit and credit lines, in the order KLARA shows them, including VAT lines and delimitation lines.show fields
Array of
PublicApiBookingLine.idinteger (int64) format: int64 example: 10230Id of the line, as used byconnectedLines.accountCodeinteger (int32) format: int32 example: 1020Account number.accountNamestring example: BankAccount name in the requested language.sideobject example: DEBITSide of a booking line: DEBIT or CREDIT.amountnumber example: 2500Amount in CHF, always positive.descriptionstring example: Rent October 2026Posting text of the line.tagsarray of stringTags of the line.bookingTypeobject example: GENERAL_LEDGERKind of line, for exampleGENERAL_LEDGER,AR_INVOICEorAP_PAYMENT.vatRatenumber example: 8.1VAT rate of the line in percent, if it has one. With the net tax rate method the net tax rate is shown invatRateTextin parentheses.vatRateTextstring example: 8.1%VAT rate as KLARA shows it, for example8.1%or, with a net tax rate,8.1% (6.2%).foreignCurrencyAmountnumber example: 2300Amount in the foreign currency, if the line was booked in one.foreignCurrencystring example: EURForeign currency, if any.openItemStatusobject example: OPENOpen-item state of an invoice, payment or credit note line.overdueboolean example: FalsePresent wheneverdueDateis set: true when the due date is before today (Europe/Zurich), as the journal marks it. Also set on lines that are already paid, so checkopenItemStatus(OPENorPARTLY_PAID) for items still to be paid. Missing without a due date.dueDatestring (date) format: date example: 2026-11-15Due date of the open item.paidDatestring (date) format: date example: 2026-11-10Date the open item was paid.servicePeriodFromstring (date) format: date example: 2026-10-01Start of the service period, if set.servicePeriodTostring (date) format: date example: 2026-10-31End of the service period, if set.lastModifiedBystring example: anna.muster@example.chWho last changed the line: the e-mail address of the user, the name of an API key, orSYSTEM(automatic bookings). A line never changed shows who created it. Changes to the booking header (date, comment, documents) are not reflected.lastModifiedAtstring (date-time) format: date-time example: 2026-10-14T08:12:30.123ZWhen the line was last changed, in UTC; for a line never changed, when it was created.referencesarray of PublicApiBookingLineReferenceObjects the line refers to.show fields
Array of
PublicApiBookingLineReference.typeobject example: CUSTOMERKind of object a booking line refers to.idstring example: 1042Id of the object. Customers and suppliers (one id space): as inlistCustomersV1; company bank accounts: as inlistCompanyBankAccounts; bank transactions: as inlistBankTransactionsV1(unreconciled only); VAT cases: as in the VAT case list; tax-at-source cantons: KLARA's canton id; gift cards and miscellaneous partners: KLARA's fixed entry; a sub-account: the id of the sub-account of the chart of accounts; other types: KLARA's internal id.categorystring example: cashOnly forSUB_ACCOUNT: the kind of sub-account, for examplecash,receivable,payableortangible_asset.namestring example: Muster AGName of the object as KLARA shows it on the line now (resolved when the booking is read, not stored at posting time), in the requested language. Missing when it could not be resolved.
connectedLinesarray of PublicApiConnectedBookingLineLines of other bookings this line is connected to.show fields
Array of
PublicApiConnectedBookingLine.typeobject example: RECONCILIATIONHow a booking line is connected to a line of another booking: RECONCILIATION (a payment or bank reconciliation against an open item), DELIMITATION (accrual), PREPAYMENT_CLEARING, CREDIT_NOTE_CLEARING or MAIN_LINE (the line of another booking this automatically created line was derived from, for example a VAT line booked with a payment that points to the revenue line of the invoice). A reconciliation is listed on every line involved.bookingIdinteger (int64) format: int64 example: 4388Id of the connected booking.lineIdinteger (int64) format: int64 example: 10231Id of the connected line within that booking; missing when the connection points to the booking as a whole.
400 bookingId is below 1.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 No booking with this id exists in the caller's company, or bookingId is not a number.
Error codes for this response (the code field of the response body):booking.unknown — No booking with this id exists in the caller's company.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
booking.unknown — No booking with this id exists in the caller's company.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
PUT/core/v1/bookings/{id}/documentskey / tokenReplace the document attachments and document date of an existing booking.
documentIds array to clear all existing attachments, or omit documentDate / set it to null to clear it. By default the operation fails when the booking's existing bookingDate falls outside the active KLARA Accounting subscription window; set ignore-unsubscripted-dates to true to bypass this guard. Tenant and company are derived from the bearer token — the booking {id} must belong to the caller's company. The caller must hold the ACCOUNTING permission on that company. The endpoint is idempotent: re-sending the same body produces the same state. Returns HTTP 200 with no body on success.operationId
updateBookingDocumentsV1 — the method name a generated client uses.
Required permission
ACCOUNTING
Available through: Administrator, External user, Buchhalter
Parameters 2
| Name | Description |
|---|---|
id required | Internal id of the booking whose documents should be replaced. Obtain from the id field returned by POST /core/v1/bookings. |
ignore-unsubscripted-dates | When true, accept the update even if the booking's bookingDate falls outside the active KLARA Accounting subscription period. Defaults to false. |
Request body required
documentDate and documentIds.Prerequisite APIs — call these first to obtain valid values:
POST /core/v1/bookings→ provides the bookingidused in the URL.POST /core/latest/companies/{company-id}/documents→ upload the file first and use the returneddocumentIdas an entry indocumentIds. Each entry is either a numeric KLARA document id (e.g."98765") or a KLARA document URI.
documentDate(string, ISO dateyyyy-MM-dd, optional) — date printed on the underlying paper document. Set tonullor omit to clear the existing value.documentIds(array of string, optional, max 50 entries, each ≤ 512 chars) — full replacement of the attached document references. Send[]to clear.
- Replacement semantics — missing or empty
documentIdsclears all existing attachments on the booking. - The booking must belong to the caller's company; tenant and company are derived from the bearer token.
- By default the booking's existing
bookingDatemust fall in an active KLARA Accounting subscription window; useignore-unsubscripted-dates=trueto bypass.
application/json object
documentDatestring (date) format: date example: 2024-06-15Date printed on the underlying paper document (e.g. supplier invoice date). When omitted or null, the booking's existing documentDate is cleared.documentIdsarray of string maxItems: 50Identifiers of supporting documents attached to the booking. Replaces the current set on the booking; pass an empty array to clear. Obtain each id by first uploading a file with POST /core/latest/companies/{company-id}/documents and then copying the returned documentId into this array.
Responses 6
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/customers/{customerId}/open-positionskey / tokenList the open items of one customer or supplier.
position-type=RECEIVABLE, default) or open payables (position-type=PAYABLE) of one customer or supplier of the caller's company, as shown in KLARA under Accounting > Open positions. Each item carries the amount still open at reference-date (default: today) and its history: when it was booked, which payments, credit notes or prepayments were reconciled against it, which payment reminders were sent and when the next one is planned (receivables), or when the next payment is due (payables). Obtain customerId from listCustomersV1; suppliers are customers in KLARA and use the same id. An unknown id, an id of another company, or a partner without open items returns an empty list, so check the id with listCustomersV1 if the list is unexpectedly empty. To cover all customers or suppliers, page through listCustomersV1 and call this operation once per customer. Items that reduce the balance (credit notes and prepayments) carry a negative openAmount and totalAmount, so the sum of openAmount is the net amount still owed. search-key matches the posting text (contains, case-insensitive) or, when the whole text is a date of the form dd.MM.yyyy, the due date. Sort with sort-field ID (default), DUE_DATE or OPEN_AMOUNT; items without a value come last. Uses the standard collection parameters: search-key, offset (default 0), limit (default 50, maximum 100), sort-field and sort-direction (default DESC). The number of rows matching the filters, ignoring offset and limit, is returned in the X-Total-Count header; to read everything, repeat the call with offset increased by limit until X-Total-Count is reached. Do not use listBankReconciliationOpenPositionsV1 for this purpose: it lists candidates for reconciling a bank or credit-card transaction, without reference date and without history. This is a read-only, idempotent operation without side effects. Tenant and company are derived from the bearer token and are never accepted from the URL or the request. The caller must hold the ACCOUNTING permission on the company; otherwise the endpoint returns 403.operationId
listCustomerOpenPositionsV1 — the method name a generated client uses.
Required permission
Not established. Assume a permission is needed, and ask support if a call is rejected.
Parameters 8
| Name | Description |
|---|---|
customerId required | Id of the customer or supplier, as returned by listCustomersV1. |
limit | Page size. Defaults to 50; hard cap 100. Requests above the cap are rejected with 400. |
offset | 0-based pagination offset — the number of rows to skip before the returned page. Defaults to 0. Combine with limit to walk the full collection. |
position-type | RECEIVABLE for the amounts the customer owes the company (default), PAYABLE for the amounts the company owes the supplier. Case-insensitive.Allowed values: RECEIVABLE, PAYABLE |
reference-date | Date at which the items must be open, ISO yyyy-MM-dd. Items booked after this date are left out and amounts paid after it count as open. Defaults to today (Europe/Zurich). Future dates are accepted. |
search-key | Free-text search. The fields searched are documented per endpoint. Matches are case-insensitive substring matches. Maximum length 256 characters. |
sort-direction | Sort direction. Allowed values: ASC, DESC. Defaults to DESC.Allowed values: ASC, DESC |
sort-field | Field to order the result by. The accepted values are listed per endpoint; an unknown value is rejected with 400. Each endpoint documents the default it applies, chosen so that paging with offset / limit is stable. |
Responses 6
200 One page of open items, ordered by sort-field. Empty array when the customer has no open items or the id is unknown. show body
application/json array of PublicApiCustomerOpenPosition
Array of PublicApiCustomerOpenPosition.
idinteger (int64) format: int64 example: 98765Id of the open item (booking line). Stable; appears asbookingDetailIdin the histories of other items it was reconciled with.postingTextstring example: Invoice 1000000000007 Consulting servicesPosting text of the item, as shown in the accounting UI.documentIdsarray of stringIds of the receipts attached to the booking; empty when none.dueDatestring (date) format: date example: 2026-07-15Due date of the item;nullwhen it has none.openAmountnumber example: 1000Amount still open at the requestedreference-date. Negative for items that reduce the balance (credit notes, prepayments).totalAmountnumber example: 1000Original amount of the item. Negative for items that reduce the balance (credit notes, prepayments).bookingTypeCodeobject example: AR_INVOICEBooking type of the item, e.g.AR_INVOICE,AR_CREDITNOTE,AP_INVOICE,AP_PREPAYMENT.historiesarray of PublicApiOpenPositionHistoryEvents of the item, oldest first, including planned ones.show fields
Array of
PublicApiOpenPositionHistory.typeobject example: PAYMENTKind of event in the history of an open item.CREATED: the item was booked (invoice sent for receivables, invoice date for payables).DUNNING: payment reminder or dunning level (receivables only).NEXT_PAYMENT: planned payment of an overdue payable.INVOICE,PAYMENT,PREPAYMENT,CREDITNOTE: a booking reconciled against the item.happenedboolean example: Truetruewhen the event has taken place,falsefor a planned event (next payment reminder, next payment).happenDatestring (date) format: date example: 2026-07-20Date of the event, or the planned date whenhappenedis false.dunningLevelobject example: FRIENDLY_REMINDERDunning level:FRIENDLY_REMINDER(payment reminder),FRIENDLY_REMINDER_2(dunning level 1),FRIENDLY_REMINDER_3(dunning level 2),ENFORCEMENT(debt enforcement).documentLinkstring example: 4712Only forDUNNINGevents that happened: reference of the reminder document as stored by KLARA, as a rule the numeric document id (the same kind of id asdocumentIds); entries from older KLARA versions may carry a legacy link instead.bookingDetailIdinteger (int64) format: int64 example: 98766ForINVOICE,PAYMENT,PREPAYMENTandCREDITNOTEevents: id of the related booking line.amountnumber example: 500For reconciliation events andNEXT_PAYMENT: the amount.
400 reference-date is not an ISO date, sort-field is not one of the documented values, or a parameter is outside its bounds (customerId below 1, position-type not RECEIVABLE or PAYABLE, search-key longer than 256 characters, offset negative, limit outside 1-100, sort-direction not ASC or DESC).
Error codes for this response (the code field of the response body):openposition.reference_date_invalid — reference-date was not an ISO date of the form yyyy-MM-dd. Omit it to use today.request.sort_field_invalid — sort-field was not one of the values the operation documents. The message lists the accepted values.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
openposition.reference_date_invalid — reference-date was not an ISO date of the form yyyy-MM-dd. Omit it to use today.request.sort_field_invalid — sort-field was not one of the values the operation documents. The message lists the accepted values.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/v1/vat-clearing-reports/{year}/{quarter}key / tokenGet or recompute the VAT clearing report of a company for a given period.
year and reporting quarter (quarter, semester or yearly). When recalculate=true the report is recomputed from the current bookings and the stored CALCULATED snapshot is rewritten before being returned; this is why the operation uses POST rather than GET. When recalculate=false the latest CALCULATED snapshot is returned as-is, or — if only a SEALED snapshot exists — that one. The caller must hold the ACCOUNTING permission on the targeted company.operationId
getVatClearingReportByQuarterV1 — the method name a generated client uses.
Required permission
ACCOUNTING
Available through: Administrator, External user, Buchhalter
Parameters 4
| Name | Description |
|---|---|
quarter required | Reporting period within the year. Allowed values: Q1, Q2, Q3, Q4, S1, S2, YEAR_NET_TAX_RATE, YEAR_EFFECTIVE. Allowed values: Q1, Q2, Q3, Q4, S1, S2, YEAR_NET_TAX_RATE, YEAR_EFFECTIVE |
year required | Calendar year of the reporting period. |
recalculate | If true, recompute the report from current bookings and overwrite the stored CALCULATED snapshot before returning. Defaults to false. |
Accept-Language | Preferred language for localized labels in the response. Examples: de-CH, de, fr-CH, it-CH, en. |
Responses 6
200 The VAT clearing report. show body
application/json VatClearingReport
idinteger (int64) format: int64 example: 987Internal id of the report.codeBoxesarray of VatClearingReportCodeBoxCode boxes that compose the VAT statement.show fields
Array of
VatClearingReportCodeBox.idinteger (int64) format: int64 example: 1234Internal id of the code box.codestring example: 302Code of the box on the VAT statement.valuenumber example: 12345.67Computed amount of the box.descriptionstring example: Steuerbarer UmsatzLocalized description of the box.editableboolean example: FalseWhether the value of this box is editable by the user.editableDescriptionboolean example: TrueWhether the description of this box is editable by the user.ratenumber example: 8.1VAT rate applied to this code box, in percent.
statusobject example: CALCULATEDCurrent status of a VAT clearing report.yearinteger (int32) format: int32 example: 2024Calendar year of the reporting period.periodobject example: Q1Reporting period of a VAT clearing report.correctionCountinteger (int32) format: int32 example: 0Number of booking corrections detected versus the sealed snapshot.formerVatRateReleaseDatestring (date) format: date example: 2023-12-31T00:00:00ZRelease date of the former VAT rates that still apply to a part of the period.newVatRatesReleasedboolean example: FalseWhether new VAT rates have been released and apply to part of the period.periodFromstring (date) format: date example: 2024-01-01T00:00:00ZStart date of the reporting period.periodTostring (date) format: date example: 2024-03-31T00:00:00ZEnd date of the reporting period.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
Accounting Interface1
POST/core/latest/payroll-interface-filekey / tokenReturn payroll interface file
operationId
generatePayrollInterfaceFile — the method name a generated client uses.
Required permission
ACCOUNTING_INTERFACE
Available through: Administrator, External user, Mitarbeiter und Lohn
Parameters 3
| Name | Description |
|---|---|
file-format | File format |
payslip-ids | List of payslip ids, separate by comma |
salary-run-id | Salary run id |
Responses 7
200 Return the payroll accounting interface file for a given salary run or payslips in CSV or JSON format show body
application/octet-stream any
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
Finance12
GET/core/v1/company-bank-accountskey / tokenList the bank accounts of the authenticated company.
type. The caller must hold the FINANCE_BANK_ACCOUNT permission on the target company. The result is sorted by Swiss-bank name then IBAN. This operation is idempotent and read-only — it can be safely retried.operationId
listCompanyBankAccounts — the method name a generated client uses.
Required permission
FINANCE_BANK_ACCOUNT
Available through: Administrator, External user, Mitarbeiter und Lohn, Buchhalter, Kundenbeziehungen
Parameters 2
| Name | Description |
|---|---|
iban-number | Optional IBAN filter. When provided, the response contains the single matching bank account (returned as a one-element array for a uniform response shape) or HTTP 404 if no account exists with that IBAN. Spaces in the IBAN are tolerated. When provided, the type parameter is ignored. |
type | Optional business-type filter. Allowed values: AR (Accounts Receivable), AP (Accounts Payable), HR (Salary / HR payments). When omitted, all bank accounts are returned. Ignored when iban-number is provided.Allowed values: AR, AP, HR |
Responses 6
200 Bank accounts of the authenticated company. show body
application/json array of CompanyBankAccount
Array of CompanyBankAccount.
idinteger (int64) format: int64 example: 1Internal database id of the bank account.companyIdinteger (int64) format: int64 example: 1KLARA company id this bank account belongs to.shortNamestring example: PostFinance CHFUser-defined short label for the bank account.ibanNumberstring example: CH71 0900 0000 2529 4693 2IBAN in pretty-printed form (groups of 4 characters).qrIbanNumberstring example: CH44 3199 9123 0008 8901 2QR-IBAN (only set when markedQrIban is true).currencystring example: CHFISO-style currency code. Allowed values: CHF, CHW.wirAcceptanceRatenumber example: 0WIR acceptance percentage (0–100).markedHRPaymentboolean example: FalseDefault account for salary / HR payments.markedARAccountboolean example: TrueDefault account for Accounts Receivable.markedAPAccountboolean example: FalseDefault account for Accounts Payable.markedPaymentSlipboolean example: FalseESR / red payment-slip enabled.markedQrInvoiceboolean example: TrueQR-invoice payment enabled.markedQrIbanboolean example: FalseQR-IBAN flow enabled.participantNumberstring example: 01-12345-6ESR participant number (only when markedPaymentSlip).customerIdentificationNumberstring example: 123456ESR customer identification number (only when markedPaymentSlip and not PostFinance).printParticipantNumberboolean example: FalsePrint the participant number on payment slips.printBankAddressboolean example: FalsePrint the bank address on payment slips.printBeneficiaryboolean example: FalsePrint the beneficiary on payment slips.esrPrintingTypestring example: INTEGRATEESR printing type. Allowed values: INTEGRATE, SEPARATE.contractNumberstring example:Bank contract number.batchBookingstring example: DEFAULTBatch-booking preference. Allowed values: DEFAULT, ACTIVE, INACTIVE.debitAdvicestring example: DEFAULTDebit-advice preference. Allowed values: DEFAULT, NO_ADVICE, SINGLE_ADVICE, ADVICE_WITHOUT_DETAILS, ADVICE_WITH_DETAIL.notMarkedSalaryPaymentsboolean example: FalseWhen true, exclude this bank account from salary-payment runs.swissBankobjectResolved Swiss-bank master-data record (name, address, BCNR). May have empty fields when the IBAN's clearing number does not match a known Swiss bank.show fields
idinteger (int64) format: int64 example: 100Internal Swiss-bank master-data id.groupstring example: 1Master-data group code.bankClearingNumberstring example: 100Bank clearing number (BCNR).branchIdstring example: 1Branch identifier.newBankClearingNumberstring example:Successor BCNR if the bank has been replaced.sicNumberstring example: 100000SIC member number.headOfficeNumberstring example: 100Head-office BCNR.bankClearingTypestring example: 1Bank-clearing classification code.euroSicstring example:SIC participation in EUR.languagestring example: deMaster-data language code.shortNamestring example: PostFinance AGBank short name.namestring example: PostFinance AGBank legal name.addressstring example: Mingerstrasse 20Bank street address.postalAddressstring example: PostfachPostal address (PO Box).placestring example: BernCity / locality.phonestring example: +41 58 338 25 00Bank phone number.faxstring example:Bank fax number.dailingCodestring example: 41International dialling code.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/invoiceskey / tokenSearch and page the invoices of the authenticated company.
search-key) and status filter (status). Each row is an InvoiceSummary — a flat projection carrying the identity, amounts, dates, customer and both status fields. Retrieve the full document, including order items and attachments, with GET /core/v1/invoices/{id}.Paging. Walk the collection with
offset and limit: iterate offset=0, limit, 2×limit, … until a response returns fewer than limit rows. Ordering defaults to sort-field=ID, sort-direction=DESC, which is unique per row and therefore stable across pages — if you sort by a non-unique field instead (for example LAST_MODIFIED), rows sharing a value may shift between pages.The two status fields mean different things.
status on a row is the invoice document status; bookingStatus is the accounting payment state of its open position, supplied by an internal service. A fully paid invoice reads status: INVOICED with bookingStatus: PAID.The
status query parameter is the KLARA invoice-overview filter, not an equality filter on the row's status field. It matches on both the document status and the payment state, exactly as the KLARA invoice list does:DRAFT,CANCELLED— document status only.INVOICED,SENT— invoiced and still open.OPEN— invoiced or paid, withbookingStatus=OPEN. Rows come back readingstatus: INVOICEDorPAID, so do not expect the filter value to be echoed in the row.PAID—bookingStatusofPAIDorPARTLY_PAID.CLEARED—bookingStatusofCLEAREDorPARTLY_CLEARED(credit notes).
booking-status to filter on the payment state precisely. It matches the row's bookingStatus field and nothing else, accepts the full set — including PARTLY_PAID and PARTLY_CLEARED, which status cannot express — and combines with status: ?status=INVOICED&booking-status=OPEN is the exact way to ask for "invoiced and not yet paid". Invoices that carry no booking at all (DRAFT, cancelled) have no payment state and are excluded whenever booking-status is given.Two further behaviours worth knowing. Invoices whose order has been archived are excluded. And
status=OPEN — only that one value — applies its payment-state check after the page is cut, so such a page can contain fewer than limit rows while the offsets stay stable; keep paging rather than treating a short page as the end. booking-status=OPEN does not behave that way: it is part of the query, so a short page really is the last page. Prefer it.Read-only and idempotent. Authentication is API key + bearer JWT; the caller must hold the
FINANCE permission on the company resolved from the JWT, otherwise the endpoint returns 403.operationId
listInvoices — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 7
| Name | Description |
|---|---|
booking-status | Payment-state filter, matched against the row's bookingStatus field. Allowed values: OPEN, PARTLY_PAID, PAID, PARTLY_CLEARED, CLEARED. Independent of status and combinable with it. Invoices without a booking are excluded. When omitted, invoices in every payment state are returned.Allowed values: OPEN, PARTLY_PAID, PAID, PARTLY_CLEARED, CLEARED |
limit | Page size. Defaults to 50; hard cap 100. Requests above the cap are rejected with 400. |
offset | 0-based pagination offset — the number of rows to skip before the returned page. Defaults to 0. Combine with limit to walk the full collection. |
search-key | Free-text search. The fields searched are documented per endpoint. Matches are case-insensitive substring matches. Maximum length 256 characters. |
sort-direction | Sort direction. Allowed values: ASC, DESC. Defaults to DESC.Allowed values: ASC, DESC |
sort-field | Field to order the result by. The accepted values are listed per endpoint; an unknown value is rejected with 400. Each endpoint documents the default it applies, chosen so that paging with offset / limit is stable. |
status | Invoice-overview status filter. Allowed values: DRAFT, INVOICED, SENT, PAID, OPEN, CLEARED, CANCELLED. When omitted, invoices in every status are returned. See the operation description — this is not a plain equality filter on the row's status field.Allowed values: DRAFT, INVOICED, SENT, PAID, OPEN, CLEARED, CANCELLED |
Responses 6
200 A page of invoices. Empty array when nothing matches. show body
application/json array of InvoiceSummary
Array of InvoiceSummary.
idinteger (int64) format: int64 example: 42Numeric primary key. Pass this toGET /core/v1/invoices/{id}to retrieve the full document.invoiceCodestring example: INV-2026-001Human-readable invoice code, unique per company.invoiceNumberinteger (int64) format: int64 example: 2026001Sequential invoice number.orderNumberinteger (int32) format: int32 example: 377Order number of the invoice's order.subjectstring example: Consulting Q2 2026Invoice subject / title.statusstring example: INVOICEDInvoice document status. One ofDRAFT,INVOICED,PAID,CANCELLED. Note thatSENTis reported asINVOICEDfor non-negative amounts, and that thestatusquery parameter additionally accepts the payment-state valuesOPEN,PAIDandCLEARED, which are matched againstbookingStatusrather than against this field.bookingStatusstring example: OPENAccounting payment state of the invoice's open position, from an internal service:OPEN,PARTLY_PAID,PAID,PARTLY_CLEAREDorCLEARED. Absent for invoices that carry no booking (DRAFT, cancelled).invoiceTypestring example: MANUALInvoice type:MANUALorRECURRING.amountnumber example: 500Invoice total, on the same basis asInvoice.amount.documentDatestring (date) format: date example: 2026-05-28Invoice document date (ISO 8601).paymentDatestring (date) format: date example: 2026-06-27Payment due date (ISO 8601).bookingDueDatestring (date) format: date example: 2026-06-27Booking due date returned by accounting.customerIdinteger (int64) format: int64 example: 40Id of the customer the invoice was issued to.customerNamestring example: A. Bassi AGDisplay name of the customer — the company name for aCOMPANYcustomer, first and last name for aPERSON.customerTypestring example: COMPANYCustomer type:COMPANYorPERSON.bookingNumbersstring example: 1982Accounting booking numbers created for this invoice, comma-separated. Empty while the invoice is not booked.lastModifiedstring (date-time) format: date-timeLast modification timestamp.
400 Invalid filter or paging parameter — an unknown status, an unknown sort-field, a sort-direction other than ASC/DESC, a negative offset, or a limit outside 1–100.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/v1/invoiceskey / tokenCreate a new KLARA invoice for the authenticated company.
id must be 0 or omitted — this endpoint does not support updating existing invoices.Typical flow:
- Call
GET /core/v1/invoices/next-invoice-numberto obtain the next invoice number. - (Optional) List existing invoices with
GET /core/v1/invoices— filter bystatusand page withoffset/limit— to check what is already booked before creating another. - Look up the customer via
GET /core/v1/customers(with search filters and pagination). - Look up company bank accounts via
GET /core/v1/company-bank-accounts. - Search articles via
GET /core/latest/articles/searchorGET /core/latest/articles/article-numbersto populate order items. - (Optional) Look up open positions via
GET /core/v1/bank-reconciliation/open-positionsto reconcile prepayments / credit notes. - Call
GET /core/v1/orders/next-order-numberto obtain the nextorder.orderNumber(required). - (Optional) Call
GET /core/latest/company-configuration/including-vatto determine the company default forusingVAT. - Build the invoice payload with order items.
- Call this endpoint with
status=INVOICEDto save and book, orstatus=DRAFTto save without booking.
INVOICED or SENT the invoice is also booked into KLARA accounting and inventory transactions are created. This endpoint does not send/deliver the invoice (no email/ePost/eBill/print&send), regardless of postMethod or a SENT status; retrieve the PDF via POST /core/v1/invoices/{id}/printed-document and deliver it yourself. The caller must hold the FINANCE permission on the target company.Status is caller-controlled. The KLARA GUI keeps an invoice in
DRAFT until the user posts it in the final step; via the API you choose — send status=DRAFT to save without booking, or status=INVOICED (or SENT) to book immediately. A DRAFT can be finalized later with PUT /core/v1/invoices (status=INVOICED).Important — booking is created without a printed invoice. When you book via this endpoint (
status=INVOICED/SENT), the accounting booking is created but no PDF is rendered or stored — the invoice and its booking have no printed document (unlike the GUI, which renders, stores and books in one step). To attach the printed invoice, run two follow-up calls: (1) POST /core/v1/invoices/{id}/printed-document to render the PDF and store its printedFileId on the invoice, then (2) PUT /core/v1/bookings/{id}/documents to link that printedFileId (in documentIds) to the booking returned in bookingNumbers.operationId
createInvoice — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 2
| Name | Description |
|---|---|
confirmDontMindClosingFiscalYear | When true, allows save/booking even if the document date falls inside a closing or closed fiscal year. Defaults to false. |
Accept-Language | Preferred response language as a BCP-47 tag (e.g. en, de, fr, it). Forwarded to an internal service. |
Request body required
id field must be 0 or omitted. This endpoint does not support updating existing invoices.Prerequisite APIs (call these first):
GET /core/v1/invoices/next-invoice-number→ providesinvoiceCodeandinvoiceNumber(the next available invoice number for the company).GET /core/v1/customers?search-key=...&limit=...→ providesorder.customer.id,order.customer.company(with addresses, emails), andorder.customer.customerType.GET /core/v1/company-bank-accounts→ providesibanNumberCHF/ibanNumberCHWfor payment accounts.GET /core/latest/articles/search?keyword=...→ search articles by keyword for the autocomplete; providesorderItems[].itemNumer,description,price,vat,unit.GET /core/latest/articles/article-numbers?article-numbers=...→ fetch full article data by article number(s) to fillorderItems[].GET /core/latest/articles/{article-id}/article-set-items→ expands article set/bundle into component line items fororderItems[].GET /core/v1/bank-reconciliation/open-positions→ lists customer's open prepayments / credit notes that can be reconciled; providesopenPositionsLinkedToInvoice[].bookingTypeCode,bookingDetailUri,partialPaymentAmount.GET /core/v1/orders/next-order-number→ providesorder.orderNumber(required); each call advances the in-memory counter — call immediately before creating the invoice, not speculatively.- (Optional)
GET /core/latest/company-configuration/including-vat→ provides the company-level default forusingVAT; returnsfalsewhen no configuration record exists. printedFileId(String, server-assigned) — populated automatically byPOST /core/v1/invoices/{id}/printed-documentafter PDF generation; omit on creation.
Field names that look like typos but are not. The following names are the literal wire field names accepted by the backend. The corrected-looking spellings are not accepted:
orderItems[].itemNumer— article number (notitemNumber). The article lookup endpoints expose the same value under the namearticleNumber. Aligning the two names is tracked separately; until thenitemNumeris the only accepted spelling....address.homeNumber— house number (nothouseNumber)....city.cityName18/cityName27— the 18- and 27-character city name variants of the Swiss Post address directory. Neither is a leftover.
Top-level fields:
id(long, required) — must be0for creation.invoiceCode(String, required) — unique invoice code; obtain fromGET /core/v1/invoices/next-invoice-number.orderType(String, required) — must beINVOICE.status(String, required) — determines booking behavior (not delivery). Allowed:DRAFT(saves without booking),INVOICED(saves and books into accounting),SENT(saves and books; does not send/deliver the invoice).postMethod(String, optional) — distribution channel recorded on the invoice only; this endpoint does not deliver the invoice. Allowed:A_POST,B_POST,SEND_EMAIL,PRINT_AND_MANUAL_SEND,EPOST,EBILL.documentDate(date, required) — invoice issue date, formatyyyy-MM-dd.paymentDate(date, required) — payment due date, must be on or afterdocumentDate.ibanNumberCHF(String, conditional) — CHF IBAN for payment; required when booking is triggered.ibanNumberCHW(String, optional) — WIR IBAN for combined payments.wirAcceptanceRate(int, optional) — WIR acceptance percentage (0–100).invoiceType(String, required) —MANUALorRECURRING.amount(BigDecimal, required) — total invoice amount over all items. Caller-supplied; not recomputed by the server. WithusingVAT=falsethis is net + VAT; withusingVAT=trueit is the sum of the gross item amounts.usingVAT(boolean) — GUI checkbox "VAT included in amount of each item". Controls whether itemprice/amountare VAT-inclusive (true, gross) or VAT-exclusive (false, net). It does not switch VAT on/off (that is the company's VAT registration). UseGET /core/latest/company-configuration/including-vatfor the company default. See VAT handling below.usingExportVat(boolean, optional) — GUI checkbox "Export". Whentrue, the invoice is an export: set everyorderItems[].vat.rateto0so no VAT is charged. Defaults tofalse.subject(String, optional) — invoice subject/title.ourReference/yourReference(String, optional) — reference texts.companyCityAndDate(String, optional) — city and date line printed on invoice.closeAndSignature(String, optional) — closing text and signature block.printedFileId(String, optional) — document ID of uploaded PDF from partner system.
Nested fields —
order (required):order.id(long) — must be0for new orders.order.orderNumber(int, required) — unique order number; must be > 0 (validated). Obtain fromGET /core/v1/orders/next-order-number(not idempotent — each call advances the counter).order.orderName(String, optional) — order description.order.companyId(long, required) — company ID from bearer token scope.order.customer(object, required) — existing customer; obtain fromGET /core/v1/customers. Must includecustomer.id,customer.company(with addresses), andcustomer.customerType(COMPANYorPERSON).
Nested fields —
orderItems[] (required, at least 1):orderItems[].position(int) — line item position (1-based).orderItems[].itemNumer(String) — article number. The field name isitemNumer, notitemNumber— this spelling is the literal wire field name of the KLARA order-management model and is what the backend accepts. It is not a typo in this documentation. The article lookup endpoints expose the same value under the namearticleNumber.orderItems[].description(String) — item description.orderItems[].quantity(double) — quantity.orderItems[].unit(String) — unit of measure (e.g.Unit,Hour).orderItems[].price(double) — unit price (negative for credit notes). VAT-inclusive (gross) whenusingVAT=true, VAT-exclusive (net) whenusingVAT=false. Both variants are available from the article lookup APIs.orderItems[].discount(double) — discount percentage.orderItems[].amount(double) — line total =quantity × price × (1 − discount/100), rounded to the nearest 0.05. Gross or net followingusingVAT(same basis asprice).orderItems[].tag(String, not persisted with the invoice, but used by the accounting booking of this same request) — theorder_itemtable has no column for it, but the value you send becomes the tags of the line's booking position. Required when status triggers booking (INVOICED/SENT): without it the booking is rejected with400 model.invalid("The field tags is mandatory.") and the invoice is not stored. Send the article'saccountingTagsjoined with a comma, the way KLARA builds it for recurring invoices.orderItems[].vatCase(String, not persisted with the invoice, but used by the accounting booking of this same request) — thevatCaseCodeof a sales VAT case (applicabilityREVENUE) fromGET /core/latest/vat-cases, for exampleTAXABLE_SUPPLY,SUPPLY_WITH_OPTION_ART_22orTAX_EXEMPT_SUPPLY. For a company that reports VAT with effective clearing, any other value, including a purchase case, is rejected by the booking with400 model.invalidand the invoice is not stored. For a company that reports VAT with effective clearing or net tax rates it becomes the VAT case of the line's booking position.orderItems[].articleType(String, not persisted with the invoice, but used by the accounting booking of this same request) —PRODUCTION,PREPAYMENT,SERVICE. Selects the account:PREPAYMENTbooks the line to the prepayment receivables account, any other value or none to revenue.- Lines that differ in
tag,vatCaseorarticleTypeare booked as separate positions. orderItems[].vat(object) — VAT details:vatCode,rate,description,masterId. For an export invoice (usingExportVat=true) setrate=0and the export/zerovatCode. This is the VAT code that is actually stored — the siblingorderItems[].vatCodeis a convenience mirror that is not persisted, so do not send the two with conflicting values.orderItems[].id(long) — must be0for new items.
Nested fields —
documentAddress / mailingAddress (optional):documentAddress(object) — address block printed on the invoice document. Derived from the customer when omitted; send it only to print an address other than the customer's default.documentAddress.customerId(long) — customer the address belongs to.documentAddress.customerType(String) —COMPANYorPERSON.documentAddress.address(object) — the postal address to print (same shape ascustomer.company.addresses[], includinghomeNumberandcity.cityName18/cityName27).documentAddress.companyName/personFirstName/personLastName/salutation(String) — recipient name parts printed above the address.mailingAddress(object) — address used for postal delivery, same shape asdocumentAddress. Both are resolved against the customer's stored addresses and referenced by id; the invoice does not keep a private copy of the values sent.
VAT handling — the server does not recalculate amounts. Unlike the KLARA GUI (which recomputes line amounts, VAT and totals whenever you toggle the "VAT included in amount of each item" or "Export" checkbox), this endpoint stores the amounts you send verbatim and does not recalculate them. It does check the VAT of each line: an
orderItems[].vat.rate that is not the rate of its vat.vatCode on the booking date is rejected with 400 invoice.vat_rate_mismatch. Omit vat.rate and the server fills it in from the code and the date. Send orderItems[].price, orderItems[].amount, orderItems[].vat and the document amount already consistent with the two flags:usingVAT=false(VAT-exclusive) —price/amountare net; documentamount= net + VAT.usingVAT=true(VAT-inclusive) —price/amountare gross (VAT already inside); documentamount= sum of gross item amounts.usingExportVat=true(export) — set everyorderItems[].vat.rateto0; VAT = 0 and documentamount= sum of net item amounts.
amount = round0.05(quantity × price × (1 − discount/100)); VAT per rate group = amount × rate/100 when VAT-exclusive, or amount × (rate/100) / (1 + rate/100) when VAT-inclusive — each rounded to the nearest 0.05 (Swiss commercial rounding). Article unit prices for the inclusive, exclusive and export cases come from the article lookup APIs above (each article exposes both a VAT-inclusive and a VAT-exclusive price); pick the one matching usingVAT/usingExportVat.Nested fields —
attachments[] (optional):attachments[].fileId(String) — document file ID uploaded via partner system.attachments[].orderDetailId(long) — set to0for new invoices.attachments[].id(long) — set to0for new attachments.
Nested fields —
openPositionsLinkedToInvoice[] (optional, for reconciliation):openPositionsLinkedToInvoice[].bookingTypeCode(String) —AR_PREPAYMENTorAR_CREDITNOTE.openPositionsLinkedToInvoice[].bookingDetailUri(String) — internal URI of the booking detail to reconcile (format:/…/{tenant-id}/companies/{companyId}/bookings/{bookingId}/booking-details/{detailId}).openPositionsLinkedToInvoice[].partialPaymentAmount(BigDecimal) — amount to offset from this open position.
Validation rules:
paymentDatemust be on or afterdocumentDate(when amount > 0).order.orderNumbermust be > 0.invoiceCodemust be unique within the company.statusmust not be null.- IBAN format is validated when provided.
- When status is
SENT, credit notes (negative total) are not allowed. - Each
orderItems[].tagmust be present when status triggers booking (INVOICED/SENT); otherwise the request fails with400 model.invalidand nothing is stored.
Server-managed fields (ignored on input, populated on output):
vatDate, lastModified, createDate, bookingDueDate, bookingNumbers, businessCaseId, bookingStatus, bookingMessage, bookingSealed, fiscalYearHasCreatedAuto, createBy, issuedDate.application/json InvoiceCreateRequest
idinteger (int64) format: int64 example: 0Invoice id. Must be0or omitted when creating a new invoice. This endpoint only supports creation; updating an existing invoice is not supported.orderTypestring default: INVOICE example: INVOICEPolymorphic discriminator. Must beINVOICE. Allowed values:INVOICE.statusstring example: INVOICEDInvoice status. Allowed values:DRAFT,INVOICED,SENT,PAID,CANCELLED. Required. StatusINVOICEDorSENTtriggers accounting booking.invoiceCodestring required maxLength: 64 pattern: \S example: INV-2026-001Human-readable invoice code. Required and unique per company.invoiceNumberinteger (int64) format: int64 example: 2026001Sequential invoice number, typically obtained fromGET /invoices/next-invoice-number.documentDatestring (date) format: date example: 2026-05-28Invoice document date (ISO 8601). Required whenamountis greater than 0. Must fall inside the company's active Order Management subscription period.paymentDatestring (date) format: date example: 2026-06-27Payment due date (ISO 8601). Required whenamountis greater than 0. Must be on or afterdocumentDate.deliveryDatestring (date) format: date example: 2026-05-25Service delivery date (ISO 8601).issuedDatestring (date) format: date example: 2026-05-28Date the invoice was issued (ISO 8601).servicePeriodFromstring (date) format: date example: 2026-05-01Service period start date (ISO 8601).servicePeriodTostring (date) format: date example: 2026-05-31Service period end date (ISO 8601).servicePeriodPatternstring maxLength: 32 example: MONTHLYService period pattern label (e.g.MONTHLY,YEARLY).vatDatestring (date) format: dateVAT date. Server-managed (read-only).bookingDueDatestring (date) format: dateBooking due date returned by accounting. Server-managed (read-only).lastModifiedstring (date-time) format: date-timeLast modification timestamp. Server-managed (read-only).createDatestring (date-time) format: date-timeCreation timestamp. Server-managed (read-only).amountnumber example: 1080Invoice total. WhenusingVAT=false(VAT-exclusive items) this is the gross total = net + VAT; whenusingVAT=true(VAT-inclusive items) it is the sum of the gross item amounts (VAT already inside). Caller-supplied — the server does not recompute it.usingVATboolean default: false example: TrueControls whether each itemprice/amountis VAT-inclusive (gross) or VAT-exclusive (net). This is the GUI checkbox "VAT included in amount of each item".true= amounts already include VAT (INCLUDE_VAT);false= VAT is added on top of the net amounts (EXCLUDE_VAT). It does not turn VAT on or off — whether VAT applies at all is governed by the company's VAT registration. UseGET /core/latest/company-configuration/including-vatfor the company default. The server stores the amounts you send verbatim and does not recompute them from this flag — sendprice/amountconsistent with the chosen mode (see the create operation's VAT-handling notes).usingExportVatboolean default: false example: FalseExport invoice flag — the GUI "Export" checkbox. Whentrue, the invoice is treated as an export: everyorderItems[].vat.ratemust be0(export/zero VAT code), so no VAT is charged. Whenfalse(default) the items' normal VAT rates apply. The server does not recompute item VAT from this flag — set the per-item VAT accordingly.hasCompanyVatboolean example: TrueWhether the company is liable for VAT. Leave this out. The server derives it from the company's VAT registration for the invoice's effective VAT date (deliveryDatewhen set, otherwisedocumentDate) and a derived value always wins over a value sent here. It is documented only because it is accepted, and because sendingfalseon a VAT-registered company used to book every position at 0% while returning 200 — this field is the master switch for VAT at booking time, ahead of any per-line VAT code. It is only consulted when the company has no VAT configuration for that date, where it cannot be derived at all.subjectstring maxLength: 1024 example: Invoice 2026-001Free-text invoice subject.closeAndSignaturestring maxLength: 4096 example: Thank you for your business.Free-text closing remarks / signature block.ourReferencestring maxLength: 128 example: ACC-2026Internal sender reference.yourReferencestring maxLength: 128 example: PO-9981Customer-side reference (e.g. PO number).companyCityAndDatestring maxLength: 256 example: Zurich, 28.05.2026Header line such as 'Zurich, 28.05.2026'.postMethodstring example: SEND_EMAILDistribution channel recorded on the invoice. Stored only — creating an invoice does not deliver it (no email/ePost/eBill/print&send). Allowed values:A_POST,B_POST,SEND_EMAIL,PRINT_AND_MANUAL_SEND,EPOST,EBILL.deliverystring maxLength: 64 example: DHLDelivery method label (free text).ibanNumberCHFstring example: CH9300762011623852957CHF IBAN for payment. Validated by downstream service.ibanNumberCHWstring example: CH9300762011623852957WIR-franc IBAN for payment.wirAcceptanceRatenumber example: 0WIR acceptance percentage.referenceNumberstring maxLength: 64 example: 21 00000 00003 13947 14300 09017QR / ISR reference number.qrInvoiceboolean default: false example: TrueWhentrue, the invoice is rendered/booked as a Swiss QR-invoice. Defaults to false.fromAutoInvoicingboolean default: false example: FalseIndicates the invoice was generated by auto-invoicing. Defaults to false.fromInvoiceRunboolean default: false example: FalseIndicates the invoice was produced by a recurring invoice run. Whentrue, accounting booking and inventory transactions are skipped. Defaults to false.invoiceTypestring example: MANUALInvoice type. Allowed values:MANUAL,CREDIT_DEBIT.originDistributionMethodstring example: SEND_EMAILOrigin distribution method. Allowed values:A_POST,B_POST,SEND_EMAIL,PRINT_AND_MANUAL_SEND,EPOST,EBILL.templateIdinteger (int64) format: int64 example: 0Template id used to create this invoice.runHistoryIdinteger (int64) format: int64 example: 0Recurring invoice run history id.settledAmountnumber example: 0KLARA-Pay settled amount (online shop only).bookingNumbersstringAccounting booking-number string. Server-managed (read-only).businessCaseIdinteger (int64) format: int64Accounting business case id. Server-managed (read-only).bookingStatusstringBooking status (e.g.OPEN,PARTIAL,PAID). Server-managed (read-only).bookingMessagestringOptional booking error/info code (e.g.INVALID_SUBSCRIPTION_FOR_ACCOUNTING). Server-managed (read-only).bookingSealedbooleanWhether the booking has been finalized. Server-managed (read-only).fiscalYearHasCreatedAutobooleanWhether a fiscal year was auto-created during booking. Server-managed (read-only).createBystringServer-assigned audit user (token subject). Server-managed (read-only).orderobject requiredThe order header the invoice belongs to. Required. Every invoice is created together with its order — sendid=0and a freshorderNumber.show fields
idinteger (int64) format: int64 example: 0Order id. Must be0or omitted for a new order.orderNumberinteger (int32) required format: int32 example: 2026001Order number, unique within the company. Required and must be greater than 0. Obtain it fromGET /core/v1/orders/next-order-number— that endpoint is not idempotent, each call advances the counter.orderNamestring example: Consulting Q2 2026Free-text order name.companyIdinteger (int64) required format: int64 example: 12345Owning KLARA company id — must match the company resolved from the bearer token. Required.customerobject requiredThe invoice recipient. Must be an existing customer — look it up withGET /core/v1/customersand send the returned block back unchanged. PopulatecompanywhencustomerTypeisCOMPANY, orpersonwhen it isPERSON.show fields
idinteger (int64) required format: int64 example: 50123Customer id of an existing customer. Required.customerTypestring required example: COMPANYDiscriminator selectingcompanyorperson. Required. Allowed values:COMPANY,PERSON.companyIdinteger (int64) format: int64 example: 12345Owning KLARA company id — must match the company resolved from the bearer token.companyobjectCompany partner of an invoice customer. Present whencustomerTypeisCOMPANY. Obtain it fromGET /core/v1/customersand send it back unchanged.show fields
idinteger (int64) format: int64 example: 50123Company partner id as returned by the customer lookup.namestring required example: Muster AGCompany name. Required.addressesarray of InvoiceAddressPostal addresses of the company. At least the billing address must be present for the invoice to be printable.show fields
Array of
InvoiceAddress.idinteger (int64) format: int64 example: 0Address id. Use the id returned by the customer lookup;0or omitted for a new address.typestring required example: COMPANYPartner type this address belongs to. Required. Allowed values:COMPANY,PERSON.addressTypestring required example: MAINAddress type label. Required. TypicallyMAINorBILLING.salutationstring example: MALESalutation of the addressee. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.firstNamestring example: HansFirst name of the addressee (person addresses).lastNamestring example: MusterLast name of the addressee (person addresses).companyNamestring example: Muster AGCompany name of the addressee (company addresses).streetstring example: BahnhofstrasseStreet name, without the house number.homeNumberstring example: 12aHouse number.homeNumberis the literal field name used throughout the KLARA address model —houseNumberis not accepted.additionalAddressstring example: c/o Finance DepartmentAdditional address line (c/o, department, ...).addressLinesstring deprecated example: Bahnhofstrasse 12aCombined street and house number. Deprecated — usestreetandhomeNumberinstead.cityobject requiredCity of an invoice address. Obtain a complete city block from the customer lookup (GET /core/v1/customers) and send it back unchanged.show fields
idinteger (int64) format: int64 example: 4247City id from the Swiss Post address directory.addressPostcodestring example: 8005Postcode (PLZ / NPA).cityName18string required example: ZuerichCity name, 18-character Swiss Post variant. Required.cityName18is the literal field name of the Swiss Post address directory (18-character abbreviation) — it is not a typo or a leftover.cityName27string required example: ZuerichCity name, 27-character Swiss Post variant. Required.onrpinteger (int32) format: int32 example: 4247Swiss Post ONRP identifier of the locality.postcodeTypeinteger (int32) format: int32 example: 20Swiss Post postcode type.additionalPostcodestring example: 00Additional postcode suffix (max 2 characters).basicPostcodeinteger (int32) format: int32 example: 8005Basic postcode.languageCodeinteger (int32) format: int32 example: 1Swiss Post language code of the locality.stateobjectCanton / state of an invoice address.show fields
Nesting continues beyond this level. See the specification for the complete structure.
countryobjectCountry of an invoice address.show fields
Nesting continues beyond this level. See the specification for the complete structure.
validFromstring (date) format: date example: 2026-01-01Address valid-from date (ISO 8601).validTostring (date) format: date example: 2026-12-31Address valid-to date (ISO 8601). Must be aftervalidFrom.
emailsarray of InvoiceEmailE-mail addresses of the company.show fields
Array of
InvoiceEmail.idstring example: 1001E-mail entry id.emailAddressstring example: billing@muster.chThe e-mail address.typestring example: WORKE-mail type. Allowed values:PRIVATE,WORK,OFFICE,OTHER.
phonesarray of InvoicePhonePhone numbers of the company.show fields
Array of
InvoicePhone.idinteger (int64) format: int64 example: 2001Phone entry id.phoneNumberstring example: +41 44 123 45 67The phone number.typestring example: WORKPhone type. Allowed values:PRIVATE,OFFICE,FAX,WORK,MOBILE.
companyBillingAddressobjectPostal address of an invoice customer. Obtain a complete address block fromGET /core/v1/customersand send it back unchanged.show fields
idinteger (int64) format: int64 example: 0Address id. Use the id returned by the customer lookup;0or omitted for a new address.typestring required example: COMPANYPartner type this address belongs to. Required. Allowed values:COMPANY,PERSON.addressTypestring required example: MAINAddress type label. Required. TypicallyMAINorBILLING.salutationstring example: MALESalutation of the addressee. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.firstNamestring example: HansFirst name of the addressee (person addresses).lastNamestring example: MusterLast name of the addressee (person addresses).companyNamestring example: Muster AGCompany name of the addressee (company addresses).streetstring example: BahnhofstrasseStreet name, without the house number.homeNumberstring example: 12aHouse number.homeNumberis the literal field name used throughout the KLARA address model —houseNumberis not accepted.additionalAddressstring example: c/o Finance DepartmentAdditional address line (c/o, department, ...).addressLinesstring deprecated example: Bahnhofstrasse 12aCombined street and house number. Deprecated — usestreetandhomeNumberinstead.cityobject requiredCity of an invoice address. Obtain a complete city block from the customer lookup (GET /core/v1/customers) and send it back unchanged.show fields
idinteger (int64) format: int64 example: 4247City id from the Swiss Post address directory.addressPostcodestring example: 8005Postcode (PLZ / NPA).cityName18string required example: ZuerichCity name, 18-character Swiss Post variant. Required.cityName18is the literal field name of the Swiss Post address directory (18-character abbreviation) — it is not a typo or a leftover.cityName27string required example: ZuerichCity name, 27-character Swiss Post variant. Required.onrpinteger (int32) format: int32 example: 4247Swiss Post ONRP identifier of the locality.postcodeTypeinteger (int32) format: int32 example: 20Swiss Post postcode type.additionalPostcodestring example: 00Additional postcode suffix (max 2 characters).basicPostcodeinteger (int32) format: int32 example: 8005Basic postcode.languageCodeinteger (int32) format: int32 example: 1Swiss Post language code of the locality.stateobjectCanton / state of an invoice address.show fields
Nesting continues beyond this level. See the specification for the complete structure.
countryobjectCountry of an invoice address.show fields
Nesting continues beyond this level. See the specification for the complete structure.
validFromstring (date) format: date example: 2026-01-01Address valid-from date (ISO 8601).validTostring (date) format: date example: 2026-12-31Address valid-to date (ISO 8601). Must be aftervalidFrom.
companyBillingAddressEnabledboolean example: FalseWhethercompanyBillingAddressis used instead of the main address.corporateIdentificationNumberstring example: CHE-123.456.789Swiss company identification number (UID).vatNumberstring example: CHE-123.456.789 MWSTVAT registration number.hrNumberstring example: CH-020.3.926.481-3Commercial register number.nogaCodestring example: 620100NOGA economic activity code.companyNumberstring example: C-0001Company number in KLARA.companyOriginReferencestring example: ERP-4711External reference of the company in the partner system.websitestring example: https://www.muster.chCompany website.languagestring example: dePreferred correspondence language as a BCP-47 tag.
personobjectNatural-person partner of an invoice customer. Present whencustomerTypeisPERSON. Obtain it fromGET /core/v1/customersand send it back unchanged.show fields
idinteger (int64) format: int64 example: 50124Person partner id as returned by the customer lookup.salutationstring example: MALESalutation. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.firstNamestring required example: HansFirst name. Required.lastNamestring required example: MusterLast name. Required.birthdaystring (date) required format: date example: 1980-04-17Date of birth (ISO 8601). Required by the downstream person model.addressListarray of InvoiceAddressPostal addresses of the person.show fields
Array of
InvoiceAddress.idinteger (int64) format: int64 example: 0Address id. Use the id returned by the customer lookup;0or omitted for a new address.typestring required example: COMPANYPartner type this address belongs to. Required. Allowed values:COMPANY,PERSON.addressTypestring required example: MAINAddress type label. Required. TypicallyMAINorBILLING.salutationstring example: MALESalutation of the addressee. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.firstNamestring example: HansFirst name of the addressee (person addresses).lastNamestring example: MusterLast name of the addressee (person addresses).companyNamestring example: Muster AGCompany name of the addressee (company addresses).streetstring example: BahnhofstrasseStreet name, without the house number.homeNumberstring example: 12aHouse number.homeNumberis the literal field name used throughout the KLARA address model —houseNumberis not accepted.additionalAddressstring example: c/o Finance DepartmentAdditional address line (c/o, department, ...).addressLinesstring deprecated example: Bahnhofstrasse 12aCombined street and house number. Deprecated — usestreetandhomeNumberinstead.cityobject requiredCity of an invoice address. Obtain a complete city block from the customer lookup (GET /core/v1/customers) and send it back unchanged.show fields
idinteger (int64) format: int64 example: 4247City id from the Swiss Post address directory.addressPostcodestring example: 8005Postcode (PLZ / NPA).cityName18string required example: ZuerichCity name, 18-character Swiss Post variant. Required.cityName18is the literal field name of the Swiss Post address directory (18-character abbreviation) — it is not a typo or a leftover.cityName27string required example: ZuerichCity name, 27-character Swiss Post variant. Required.onrpinteger (int32) format: int32 example: 4247Swiss Post ONRP identifier of the locality.postcodeTypeinteger (int32) format: int32 example: 20Swiss Post postcode type.additionalPostcodestring example: 00Additional postcode suffix (max 2 characters).basicPostcodeinteger (int32) format: int32 example: 8005Basic postcode.languageCodeinteger (int32) format: int32 example: 1Swiss Post language code of the locality.stateobjectCanton / state of an invoice address.show fields
Nesting continues beyond this level. See the specification for the complete structure.
countryobjectCountry of an invoice address.show fields
Nesting continues beyond this level. See the specification for the complete structure.
validFromstring (date) format: date example: 2026-01-01Address valid-from date (ISO 8601).validTostring (date) format: date example: 2026-12-31Address valid-to date (ISO 8601). Must be aftervalidFrom.
emailListarray of InvoiceEmailE-mail addresses of the person.show fields
Array of
InvoiceEmail.idstring example: 1001E-mail entry id.emailAddressstring example: billing@muster.chThe e-mail address.typestring example: WORKE-mail type. Allowed values:PRIVATE,WORK,OFFICE,OTHER.
phoneListarray of InvoicePhonePhone numbers of the person.show fields
Array of
InvoicePhone.idinteger (int64) format: int64 example: 2001Phone entry id.phoneNumberstring example: +41 44 123 45 67The phone number.typestring example: WORKPhone type. Allowed values:PRIVATE,OFFICE,FAX,WORK,MOBILE.
personNumberstring example: P-0001Person number in KLARA.personOriginReferencestring example: ERP-8150External reference of the person in the partner system.websitestring example: https://www.muster.chPersonal website.languagestring example: dePreferred correspondence language as a BCP-47 tag.
termsOfPaymentinteger (int32) format: int32 example: 30Payment terms in days, used to derive the defaultpaymentDate.discountnumber example: 0Default customer discount in percent.priceCategorystring example: STANDARDPrice category assigned to the customer.uuidstring example: 0d9f4d1e-4a2b-4c8d-9f3e-1b2c3d4e5f60Stable external identifier of the customer.
invoiceGroupstring example: DEFAULTInvoice group the order is assigned to.lumpSumboolean example: FalseWhether the order is billed as a lump sum.archivedboolean example: FalseWhether the order is archived.
orderItemsarray of InvoiceOrderItem requiredInvoice line items. Required — at least one entry.show fields
Array of
InvoiceOrderItem.idinteger (int64) format: int64 example: 0Item id. Must be0or omitted for a new item.positioninteger (int64) format: int64 example: 1Line position, 1-based.itemNumerstring example: P0000061123Article number of the item, as returned byGET /core/latest/articles/searchorGET /core/latest/articles/article-numbers. The field name isitemNumer, notitemNumber. This spelling is the literal wire field name of the KLARA order-management model and is what the backend accepts — it is not a typo in this documentation. Note that the article search endpoints expose the same value under the namearticleNumber.descriptionstring example: Consulting servicesItem description printed on the invoice line.articleExtendedDescriptionstring example: Sprint 12, May 2026Additional descriptive text printed below the line.quantitynumber example: 10Quantity billed.unitstring example: HourUnit of measure.pricenumber example: 100Unit price. Negative for credit-note lines. VAT-inclusive (gross) when the document hasusingVAT=true, VAT-exclusive (net) whenusingVAT=false. Both variants are available from the article lookup endpoints.discountnumber example: 0Discount on this line, in percent.amountnumber example: 1000Line total =quantity x price x (1 - discount/100), rounded to the nearest 0.05 (Swiss commercial rounding). Gross or net followingusingVAT, on the same basis asprice.posAmountnumber example: 1000Position amount as shown in the KLARA GUI. Optional; derived fromamountwhen omitted.vatobjectVAT applied to an invoice line item. The server does not recompute VAT from the document flags — send the rate that matchesusingVAT/usingExportVat.show fields
idinteger (int64) format: int64 example: 1VAT id.vatCodestring required example: 1VAT code. Required.ratenumber example: 8.1VAT rate in percent. Set to0for export invoices (usingExportVat=true).descriptionstring example: Normal rate 8.1%Human-readable VAT description.masterIdinteger (int64) format: int64 example: 0Master data id of the VAT record.companySelectedVatboolean example: FalseWhether this is a company-selected VAT.sss1boolean example: FalseWhether the first Swiss social-security special rate applies.sss2boolean example: FalseWhether the second Swiss social-security special rate applies.validFromstring (date) format: date example: 2024-01-01VAT valid-from date (ISO 8601).validTostring (date) format: date example: 2099-12-31VAT valid-to date (ISO 8601).
vatCodestring example: 1VAT code of the line. Convenience mirror ofvat.vatCode. Not persisted on this endpoint — the value that is stored comes fromvat.vatCode. Do not send the two with different values: this field is silently discarded, so a mismatch results in thevat.vatCodevalue being booked.vatCasestring example: TAXABLE_SUPPLYVAT treatment of the line: thevatCaseCodeof a sales VAT case (applicabilityREVENUE) fromGET /core/latest/vat-cases, for exampleTAXABLE_SUPPLY,SUPPLY_WITH_OPTION_ART_22orTAX_EXEMPT_SUPPLY. For a company that reports VAT with effective clearing, any other value, including a purchase case, is rejected by the booking with400 model.invalidand the invoice is not stored. Not persisted with the invoice, but used by the accounting booking of this same request — theorder_itemtable has no column for it. For a company that reports VAT with effective clearing or net tax rates it becomes the VAT case of the line's booking position. When it is missing, the VAT case of the article applies, which can be one the company cannot book; send it with every write that books (INVOICED/SENT).articleTypestring example: SERVICEArticle category. Allowed values:PRODUCTION,PREPAYMENT,SERVICE. Not persisted with the invoice, but used by the accounting booking of this same request — theorder_itemtable has no column for it. It selects the account:PREPAYMENTbooks the line to the prepayment receivables account, any other value or none to revenue.tagstring example: 3400Accounting tag of the line. Not persisted with the invoice, but used by the accounting booking of this same request — theorder_itemtable has no column for it, but the value sent here becomes the tags of the line's booking position. Required whenstatustriggers booking (INVOICED/SENT): without it the booking is rejected with400 model.invalid("The field tags is mandatory.") and the invoice is not stored. Send the article'saccountingTagsjoined with a comma, the way KLARA builds it for recurring invoices.servicePeriodFromstring (date) format: date example: 2026-05-01Service period start for this line (ISO 8601).servicePeriodTostring (date) format: date example: 2026-05-31Service period end for this line (ISO 8601).servicePeriodPatternstring example: MONTHLYService period pattern label for this line.specialRatesstring example: SSS1Swiss social-security special rate applied to the line. Allowed values:SSS1,SSS2.articleSetstring example: SET-001Identifier of the article set this line belongs to.inventorySelectionsarray of InvoiceInventorySelectionInventory selections (serial numbers, storage places) for stock-managed articles. Persisted through a dedicated path rather than with the line itself, so the serial numbers you send are validated separately — an invalid serial number fails the request even though the surrounding line is accepted.show fields
Array of
InvoiceInventorySelection.storagePlaceIdinteger (int64) format: int64 example: 77Storage place the quantity is taken from.quantitynumber example: 1Quantity taken from this storage place.serialNumbersarray of stringSerial numbers of the units delivered. Duplicates within the same invoice are rejected.
attachmentsarray of InvoiceAttachmentDocuments attached to the invoice.show fields
Array of
InvoiceAttachment.idinteger (int64) format: int64 example: 0Attachment id. Must be0or omitted for a new attachment.orderDetailIdinteger (int64) format: int64 example: 0Id of the invoice this attachment belongs to. Must be0for a new invoice.fileIdstring example: 5f8d0d55-b1a4-4d6e-9a1f-2c3b4d5e6f70Document id of the uploaded file.
openPositionsLinkedToInvoicearray of InvoiceOpenPositionLinkOpen positions (prepayments, credit notes) offset against this invoice. Persisted through a dedicated path rather than with the invoice row itself.show fields
Array of
InvoiceOpenPositionLink.bookingTypeCodestring required example: AR_PREPAYMENTType of the linked booking. Required. For invoice reconciliation the relevant values areAR_PREPAYMENTandAR_CREDITNOTE.bookingDetailUristring required example: /luz_accounting/api/klara_tenant/companies/12345/bookings/778/booking-details/9912Internal URI of the booking detail to reconcile. Required. Must match the pattern/…/{tenant-id}/companies/{companyId}/bookings/{bookingId}/booking-details/{detailId}.partialPaymentAmountnumber example: 250Amount to offset from this open position.
documentAddressobjectThe address block printed on the invoice document. Omit it to let the backend derive it from the customer's main address.show fields
customerIdinteger (int64) format: int64 example: 50123Customer the address belongs to.customerTypestring example: COMPANYPartner type. Allowed values:COMPANY,PERSON.addressobjectPostal address of an invoice customer. Obtain a complete address block fromGET /core/v1/customersand send it back unchanged.show fields
idinteger (int64) format: int64 example: 0Address id. Use the id returned by the customer lookup;0or omitted for a new address.typestring required example: COMPANYPartner type this address belongs to. Required. Allowed values:COMPANY,PERSON.addressTypestring required example: MAINAddress type label. Required. TypicallyMAINorBILLING.salutationstring example: MALESalutation of the addressee. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.firstNamestring example: HansFirst name of the addressee (person addresses).lastNamestring example: MusterLast name of the addressee (person addresses).companyNamestring example: Muster AGCompany name of the addressee (company addresses).streetstring example: BahnhofstrasseStreet name, without the house number.homeNumberstring example: 12aHouse number.homeNumberis the literal field name used throughout the KLARA address model —houseNumberis not accepted.additionalAddressstring example: c/o Finance DepartmentAdditional address line (c/o, department, ...).addressLinesstring deprecated example: Bahnhofstrasse 12aCombined street and house number. Deprecated — usestreetandhomeNumberinstead.cityobject requiredCity of an invoice address. Obtain a complete city block from the customer lookup (GET /core/v1/customers) and send it back unchanged.show fields
idinteger (int64) format: int64 example: 4247City id from the Swiss Post address directory.addressPostcodestring example: 8005Postcode (PLZ / NPA).cityName18string required example: ZuerichCity name, 18-character Swiss Post variant. Required.cityName18is the literal field name of the Swiss Post address directory (18-character abbreviation) — it is not a typo or a leftover.cityName27string required example: ZuerichCity name, 27-character Swiss Post variant. Required.onrpinteger (int32) format: int32 example: 4247Swiss Post ONRP identifier of the locality.postcodeTypeinteger (int32) format: int32 example: 20Swiss Post postcode type.additionalPostcodestring example: 00Additional postcode suffix (max 2 characters).basicPostcodeinteger (int32) format: int32 example: 8005Basic postcode.languageCodeinteger (int32) format: int32 example: 1Swiss Post language code of the locality.stateobjectCanton / state of an invoice address.show fields
idinteger (int64) format: int64 example: 26State id.codestring example: ZHCanton code (max 3 characters).descriptionstring example: ZuerichCanton name.
countryobjectCountry of an invoice address.show fields
idinteger (int64) format: int64 example: 1Country id.countryNamestring example: SwitzerlandCountry name.iso2Codestring example: CHISO 3166-1 alpha-2 code.iso3Codestring example: CHEISO 3166-1 alpha-3 code.phoneCodestring example: 41International dialling code.numericCodestring example: 756ISO 3166-1 numeric code.
validFromstring (date) format: date example: 2026-01-01Address valid-from date (ISO 8601).validTostring (date) format: date example: 2026-12-31Address valid-to date (ISO 8601). Must be aftervalidFrom.
salutationstring example: MALESalutation printed above the address. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.personFirstNamestring example: HansFirst name printed on the document (person recipients).personLastNamestring example: MusterLast name printed on the document (person recipients).companyNamestring example: Muster AGCompany name printed on the document (company recipients).
mailingAddressobjectThe address block printed on the invoice document. Omit it to let the backend derive it from the customer's main address.show fields
customerIdinteger (int64) format: int64 example: 50123Customer the address belongs to.customerTypestring example: COMPANYPartner type. Allowed values:COMPANY,PERSON.addressobjectPostal address of an invoice customer. Obtain a complete address block fromGET /core/v1/customersand send it back unchanged.show fields
idinteger (int64) format: int64 example: 0Address id. Use the id returned by the customer lookup;0or omitted for a new address.typestring required example: COMPANYPartner type this address belongs to. Required. Allowed values:COMPANY,PERSON.addressTypestring required example: MAINAddress type label. Required. TypicallyMAINorBILLING.salutationstring example: MALESalutation of the addressee. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.firstNamestring example: HansFirst name of the addressee (person addresses).lastNamestring example: MusterLast name of the addressee (person addresses).companyNamestring example: Muster AGCompany name of the addressee (company addresses).streetstring example: BahnhofstrasseStreet name, without the house number.homeNumberstring example: 12aHouse number.homeNumberis the literal field name used throughout the KLARA address model —houseNumberis not accepted.additionalAddressstring example: c/o Finance DepartmentAdditional address line (c/o, department, ...).addressLinesstring deprecated example: Bahnhofstrasse 12aCombined street and house number. Deprecated — usestreetandhomeNumberinstead.cityobject requiredCity of an invoice address. Obtain a complete city block from the customer lookup (GET /core/v1/customers) and send it back unchanged.show fields
idinteger (int64) format: int64 example: 4247City id from the Swiss Post address directory.addressPostcodestring example: 8005Postcode (PLZ / NPA).cityName18string required example: ZuerichCity name, 18-character Swiss Post variant. Required.cityName18is the literal field name of the Swiss Post address directory (18-character abbreviation) — it is not a typo or a leftover.cityName27string required example: ZuerichCity name, 27-character Swiss Post variant. Required.onrpinteger (int32) format: int32 example: 4247Swiss Post ONRP identifier of the locality.postcodeTypeinteger (int32) format: int32 example: 20Swiss Post postcode type.additionalPostcodestring example: 00Additional postcode suffix (max 2 characters).basicPostcodeinteger (int32) format: int32 example: 8005Basic postcode.languageCodeinteger (int32) format: int32 example: 1Swiss Post language code of the locality.stateobjectCanton / state of an invoice address.show fields
idinteger (int64) format: int64 example: 26State id.codestring example: ZHCanton code (max 3 characters).descriptionstring example: ZuerichCanton name.
countryobjectCountry of an invoice address.show fields
idinteger (int64) format: int64 example: 1Country id.countryNamestring example: SwitzerlandCountry name.iso2Codestring example: CHISO 3166-1 alpha-2 code.iso3Codestring example: CHEISO 3166-1 alpha-3 code.phoneCodestring example: 41International dialling code.numericCodestring example: 756ISO 3166-1 numeric code.
validFromstring (date) format: date example: 2026-01-01Address valid-from date (ISO 8601).validTostring (date) format: date example: 2026-12-31Address valid-to date (ISO 8601). Must be aftervalidFrom.
salutationstring example: MALESalutation printed above the address. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.personFirstNamestring example: HansFirst name printed on the document (person recipients).personLastNamestring example: MusterLast name printed on the document (person recipients).companyNamestring example: Muster AGCompany name printed on the document (company recipients).
mailingContactinteger (int64) format: int64 example: 0Contact person id used for postal delivery.emailDistributionobjectE-mail distribution settings recorded on the invoice. Stored only — this endpoint never sends the invoice. Retrieve the PDF viaPOST /core/v1/invoices/{id}/printed-documentand deliver it yourself.show fields
idinteger (int64) format: int64 example: 0Distribution entry id. Must be0or omitted for a new invoice.subjectstring example: Invoice INV-2026-001Subject line stored for the distribution.emailAddressstring example: billing@muster.chPrimary recipient address.ccEmailAddressesarray of stringCarbon-copy recipient addresses.replyTostring example: finance@my-company.chReply-to address.emailTextstring example: Please find our invoice attached.Body text stored for the distribution.
partnerContactIdinteger (int64) format: int64 example: 0Contact person of the customer this invoice is addressed to.printedFileIdstring example: 5f8d0d55-b1a4-4d6e-9a1f-2c3b4d5e6f70Document id of the printed invoice PDF. Normally server-assigned byPOST /core/v1/invoices/{id}/printed-document— omit it on creation. Set it only to attach a PDF your own system rendered.
Responses 7
200 Invoice persisted successfully. show body
application/json Invoice
idinteger (int64) format: int64 example: 0Invoice id. Must be0or omitted when creating a new invoice. This endpoint only supports creation; updating an existing invoice is not supported.orderTypestring default: INVOICE example: INVOICEPolymorphic discriminator. Must beINVOICE. Allowed values:INVOICE.statusstring example: INVOICEDInvoice status. Allowed values:DRAFT,INVOICED,SENT,PAID,CANCELLED. Required. StatusINVOICEDorSENTtriggers accounting booking.invoiceCodestring required maxLength: 64 pattern: \S example: INV-2026-001Human-readable invoice code. Required and unique per company.invoiceNumberinteger (int64) format: int64 example: 2026001Sequential invoice number, typically obtained fromGET /invoices/next-invoice-number.documentDatestring (date) format: date example: 2026-05-28Invoice document date (ISO 8601). Required whenamountis greater than 0. Must fall inside the company's active Order Management subscription period.paymentDatestring (date) format: date example: 2026-06-27Payment due date (ISO 8601). Required whenamountis greater than 0. Must be on or afterdocumentDate.deliveryDatestring (date) format: date example: 2026-05-25Service delivery date (ISO 8601).issuedDatestring (date) format: date example: 2026-05-28Date the invoice was issued (ISO 8601).servicePeriodFromstring (date) format: date example: 2026-05-01Service period start date (ISO 8601).servicePeriodTostring (date) format: date example: 2026-05-31Service period end date (ISO 8601).servicePeriodPatternstring maxLength: 32 example: MONTHLYService period pattern label (e.g.MONTHLY,YEARLY).vatDatestring (date) format: dateVAT date. Server-managed (read-only).bookingDueDatestring (date) format: dateBooking due date returned by accounting. Server-managed (read-only).lastModifiedstring (date-time) format: date-timeLast modification timestamp. Server-managed (read-only).createDatestring (date-time) format: date-timeCreation timestamp. Server-managed (read-only).amountnumber example: 1080Invoice total. WhenusingVAT=false(VAT-exclusive items) this is the gross total = net + VAT; whenusingVAT=true(VAT-inclusive items) it is the sum of the gross item amounts (VAT already inside). Caller-supplied — the server does not recompute it.usingVATboolean default: false example: TrueControls whether each itemprice/amountis VAT-inclusive (gross) or VAT-exclusive (net). This is the GUI checkbox "VAT included in amount of each item".true= amounts already include VAT (INCLUDE_VAT);false= VAT is added on top of the net amounts (EXCLUDE_VAT). It does not turn VAT on or off — whether VAT applies at all is governed by the company's VAT registration. UseGET /core/latest/company-configuration/including-vatfor the company default. The server stores the amounts you send verbatim and does not recompute them from this flag — sendprice/amountconsistent with the chosen mode (see the create operation's VAT-handling notes).usingExportVatboolean default: false example: FalseExport invoice flag — the GUI "Export" checkbox. Whentrue, the invoice is treated as an export: everyorderItems[].vat.ratemust be0(export/zero VAT code), so no VAT is charged. Whenfalse(default) the items' normal VAT rates apply. The server does not recompute item VAT from this flag — set the per-item VAT accordingly.hasCompanyVatboolean example: TrueWhether the company is liable for VAT. Leave this out. The server derives it from the company's VAT registration for the invoice's effective VAT date (deliveryDatewhen set, otherwisedocumentDate) and a derived value always wins over a value sent here. It is documented only because it is accepted, and because sendingfalseon a VAT-registered company used to book every position at 0% while returning 200 — this field is the master switch for VAT at booking time, ahead of any per-line VAT code. It is only consulted when the company has no VAT configuration for that date, where it cannot be derived at all.subjectstring maxLength: 1024 example: Invoice 2026-001Free-text invoice subject.closeAndSignaturestring maxLength: 4096 example: Thank you for your business.Free-text closing remarks / signature block.ourReferencestring maxLength: 128 example: ACC-2026Internal sender reference.yourReferencestring maxLength: 128 example: PO-9981Customer-side reference (e.g. PO number).companyCityAndDatestring maxLength: 256 example: Zurich, 28.05.2026Header line such as 'Zurich, 28.05.2026'.postMethodstring example: SEND_EMAILDistribution channel recorded on the invoice. Stored only — creating an invoice does not deliver it (no email/ePost/eBill/print&send). Allowed values:A_POST,B_POST,SEND_EMAIL,PRINT_AND_MANUAL_SEND,EPOST,EBILL.deliverystring maxLength: 64 example: DHLDelivery method label (free text).ibanNumberCHFstring example: CH9300762011623852957CHF IBAN for payment. Validated by downstream service.ibanNumberCHWstring example: CH9300762011623852957WIR-franc IBAN for payment.wirAcceptanceRatenumber example: 0WIR acceptance percentage.referenceNumberstring maxLength: 64 example: 21 00000 00003 13947 14300 09017QR / ISR reference number.qrInvoiceboolean default: false example: TrueWhentrue, the invoice is rendered/booked as a Swiss QR-invoice. Defaults to false.fromAutoInvoicingboolean default: false example: FalseIndicates the invoice was generated by auto-invoicing. Defaults to false.fromInvoiceRunboolean default: false example: FalseIndicates the invoice was produced by a recurring invoice run. Whentrue, accounting booking and inventory transactions are skipped. Defaults to false.invoiceTypestring example: MANUALInvoice type. Allowed values:MANUAL,CREDIT_DEBIT.originDistributionMethodstring example: SEND_EMAILOrigin distribution method. Allowed values:A_POST,B_POST,SEND_EMAIL,PRINT_AND_MANUAL_SEND,EPOST,EBILL.templateIdinteger (int64) format: int64 example: 0Template id used to create this invoice.runHistoryIdinteger (int64) format: int64 example: 0Recurring invoice run history id.settledAmountnumber example: 0KLARA-Pay settled amount (online shop only).bookingNumbersstringAccounting booking-number string. Server-managed (read-only).businessCaseIdinteger (int64) format: int64Accounting business case id. Server-managed (read-only).bookingStatusstringBooking status (e.g.OPEN,PARTIAL,PAID). Server-managed (read-only).bookingMessagestringOptional booking error/info code (e.g.INVALID_SUBSCRIPTION_FOR_ACCOUNTING). Server-managed (read-only).bookingSealedbooleanWhether the booking has been finalized. Server-managed (read-only).fiscalYearHasCreatedAutobooleanWhether a fiscal year was auto-created during booking. Server-managed (read-only).createBystringServer-assigned audit user (token subject). Server-managed (read-only).
400 Data invalid
Error codes for this response (the code field of the response body):invoice.id_must_be_zero — The request body carried a non-zero id. This operation only creates invoices; use PUT /core/v1/invoices to modify an existing one.invoice.vat_code_missing — At least one orderItems[] entry set VAT on vatType, vatCase or the top-level vatCode while leaving vat.vatCode empty. Only vat.vatCode is stored, so that line would have been booked at 0%. Move the code to vat.vatCode, or send "0" ("No VAT") for a position that genuinely carries none.invoice.vat_rate_mismatch — At least one orderItems[] entry sent a vat.rate that is not the rate of its vat.vatCode. The booking always uses the code's rate, so the invoice document would state a different percentage than the accounting record. Send the matching rate, or omit vat.rate and let the server fill it in.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
invoice.id_must_be_zero — The request body carried a non-zero id. This operation only creates invoices; use PUT /core/v1/invoices to modify an existing one.invoice.vat_code_missing — At least one orderItems[] entry set VAT on vatType, vatCase or the top-level vatCode while leaving vat.vatCode empty. Only vat.vatCode is stored, so that line would have been booked at 0%. Move the code to vat.vatCode, or send "0" ("No VAT") for a position that genuinely carries none.invoice.vat_rate_mismatch — At least one orderItems[] entry sent a vat.rate that is not the rate of its vat.vatCode. The booking always uses the code's rate, so the invoice document would state a different percentage than the accounting record. Send the matching rate, or omit vat.rate and let the server fill it in.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Error codes for this response (the code field of the response body):auth.credentials_missing — Neither an Authorization: Bearer header nor an API key header was present on the request.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
auth.credentials_missing — Neither an Authorization: Bearer header nor an API key header was present on the request.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
PUT/core/v1/invoiceskey / tokenUpdate an existing DRAFT invoice for the authenticated company.
invoice.id in the request body. Only invoices in DRAFT status can be updated — any other status returns 400. If the incoming status is INVOICED or SENT, the invoice is booked into KLARA accounting and inventory transactions are created, identical to the booking behavior of POST /core/v1/invoices. This is the call that finalizes a DRAFT — the GUI equivalent of posting in the final step; status is caller-controlled, so keep it DRAFT to re-save without booking. This endpoint does not send/deliver the invoice (no email/ePost/eBill/print&send), regardless of postMethod; retrieve the PDF via POST /core/v1/invoices/{id}/printed-document and deliver it yourself. The caller must hold the FINANCE permission on the target company.Important — finalizing a DRAFT books it without a printed invoice. Setting
status=INVOICED/SENT here creates the accounting booking but renders/stores no PDF. To attach the printed invoice to the booking, after this call run (1) POST /core/v1/invoices/{id}/printed-document to render and store the printedFileId, then (2) PUT /core/v1/bookings/{id}/documents to link that printedFileId (in documentIds) to the booking from bookingNumbers.operationId
updateInvoice — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
confirmDontMindClosingFiscalYear | When true, allows save/booking even if the document date falls inside a closing or closed fiscal year. Defaults to false. |
Request body required
POST /core/v1/invoices with one critical difference: id must be the numeric primary key of an existing invoice currently in DRAFT status.Typical flow:
- Call
POST /core/v1/invoiceswithstatus=DRAFTto create the invoice. - Call
GET /core/v1/invoices/{id}to retrieve the current state. - Modify the desired fields (items, amounts, dates, etc.).
- Call this endpoint to update — or to book it by changing
statustoINVOICED/SENT.
GET /core/v1/invoices/{id}→ provides the current invoice body to modify and re-submit.GET /core/v1/company-bank-accounts→ provides updatedibanNumberCHF/ibanNumberCHW.GET /core/latest/articles/search?keyword=...→ search for articles to add/change order items.GET /core/v1/bank-reconciliation/open-positions→ providesopenPositionsLinkedToInvoice[]for reconciliation.GET /core/latest/company-configuration/including-vat→ providesusingVATdefault.
Key differences from POST (create):
id(long, required) — must be > 0 and match an existing DRAFT invoice. Returns 400 if the stored invoice is not in DRAFT status.invoiceCode— uniqueness is NOT re-validated; retain the original value.order.id— must match the existing order; retain from the original invoice.status— set toINVOICEDorSENTto book the invoice (triggers accounting); set toDRAFTto save without booking.
Top-level fields:
id(long, required) — must be > 0 (existing DRAFT invoice id).invoiceCode(String, required) — must not be empty; retain the original value.orderType(String, required) — must beINVOICE.status(String, required) —DRAFT(saves without booking),INVOICED(saves and books into accounting),SENT(saves and books; does not send/deliver the invoice).postMethod(String, optional) — distribution channel recorded on the invoice only; not delivered. Allowed:A_POST,B_POST,SEND_EMAIL,PRINT_AND_MANUAL_SEND,EPOST,EBILL.documentDate(date, required) — invoice issue date, formatyyyy-MM-dd; must fall inside the active subscription period.paymentDate(date, required when amount > 0) — must be on or afterdocumentDate.ibanNumberCHF(String, conditional) — CHF IBAN; format validated when provided.ibanNumberCHW(String, optional) — WIR IBAN; format validated when provided.wirAcceptanceRate(int, optional) — WIR acceptance percentage (0–100).amount(BigDecimal, required) — total invoice amount. Caller-supplied; not recomputed by the server.usingVAT(boolean) — GUI checkbox "VAT included in amount of each item": itemprice/amountare VAT-inclusive (true, gross) or VAT-exclusive (false, net). It does not switch VAT on/off. Same VAT-handling rules asPOST /core/v1/invoices(server stores amounts verbatim).usingExportVat(boolean, optional) — GUI checkbox "Export"; whentrueset everyorderItems[].vat.rateto0. Defaults tofalse.subject,ourReference,yourReference,companyCityAndDate,closeAndSignature— optional text fields.
Nested fields —
order (required):order.id(long) — must be the existing order id; retain from the original invoice.order.orderNumber(int) — retain from the original invoice.order.companyId(long) — must match the authenticated company; set from bearer token on the downstream.order.customer(object, required) — existing customer; retain from original invoice.
Nested fields —
orderItems[] (required, at least 1):- Same structure as
POST /core/v1/invoices. Existing item ids (> 0) update items in-place; id = 0 adds new items. orderItems[].tag,orderItems[].vatCaseandorderItems[].articleType— not persisted with the invoice, but used by the accounting booking of this same request, as onPOST:articleTypeselects the account (PREPAYMENTor revenue),tagbecomes the booking tags andvatCasethe VAT case. Because they are not stored, send them again on everyPUT;tagmust not be empty when status isINVOICED/SENT.
Nested fields —
attachments[] and openPositionsLinkedToInvoice[]:- Same structure and semantics as
POST /core/v1/invoices.
Validation rules:
idmust be > 0 (adapter guard) and the stored invoice must be DRAFT (downstream guard).paymentDatemust be on or afterdocumentDatewhen amount > 0.- IBAN format is validated when provided.
- Each
orderItems[].tagmust be present when status triggers booking (INVOICED/SENT); otherwise the request fails with400 model.invalidand nothing is stored. - Subscription for Order Management must be active for
documentDate.
Server-managed fields (same as POST):
vatDate, lastModified, createDate, bookingDueDate, bookingNumbers, businessCaseId, bookingStatus, bookingMessage, bookingSealed.application/json InvoiceCreateRequest
idinteger (int64) format: int64 example: 0Invoice id. Must be0or omitted when creating a new invoice. This endpoint only supports creation; updating an existing invoice is not supported.orderTypestring default: INVOICE example: INVOICEPolymorphic discriminator. Must beINVOICE. Allowed values:INVOICE.statusstring example: INVOICEDInvoice status. Allowed values:DRAFT,INVOICED,SENT,PAID,CANCELLED. Required. StatusINVOICEDorSENTtriggers accounting booking.invoiceCodestring required maxLength: 64 pattern: \S example: INV-2026-001Human-readable invoice code. Required and unique per company.invoiceNumberinteger (int64) format: int64 example: 2026001Sequential invoice number, typically obtained fromGET /invoices/next-invoice-number.documentDatestring (date) format: date example: 2026-05-28Invoice document date (ISO 8601). Required whenamountis greater than 0. Must fall inside the company's active Order Management subscription period.paymentDatestring (date) format: date example: 2026-06-27Payment due date (ISO 8601). Required whenamountis greater than 0. Must be on or afterdocumentDate.deliveryDatestring (date) format: date example: 2026-05-25Service delivery date (ISO 8601).issuedDatestring (date) format: date example: 2026-05-28Date the invoice was issued (ISO 8601).servicePeriodFromstring (date) format: date example: 2026-05-01Service period start date (ISO 8601).servicePeriodTostring (date) format: date example: 2026-05-31Service period end date (ISO 8601).servicePeriodPatternstring maxLength: 32 example: MONTHLYService period pattern label (e.g.MONTHLY,YEARLY).vatDatestring (date) format: dateVAT date. Server-managed (read-only).bookingDueDatestring (date) format: dateBooking due date returned by accounting. Server-managed (read-only).lastModifiedstring (date-time) format: date-timeLast modification timestamp. Server-managed (read-only).createDatestring (date-time) format: date-timeCreation timestamp. Server-managed (read-only).amountnumber example: 1080Invoice total. WhenusingVAT=false(VAT-exclusive items) this is the gross total = net + VAT; whenusingVAT=true(VAT-inclusive items) it is the sum of the gross item amounts (VAT already inside). Caller-supplied — the server does not recompute it.usingVATboolean default: false example: TrueControls whether each itemprice/amountis VAT-inclusive (gross) or VAT-exclusive (net). This is the GUI checkbox "VAT included in amount of each item".true= amounts already include VAT (INCLUDE_VAT);false= VAT is added on top of the net amounts (EXCLUDE_VAT). It does not turn VAT on or off — whether VAT applies at all is governed by the company's VAT registration. UseGET /core/latest/company-configuration/including-vatfor the company default. The server stores the amounts you send verbatim and does not recompute them from this flag — sendprice/amountconsistent with the chosen mode (see the create operation's VAT-handling notes).usingExportVatboolean default: false example: FalseExport invoice flag — the GUI "Export" checkbox. Whentrue, the invoice is treated as an export: everyorderItems[].vat.ratemust be0(export/zero VAT code), so no VAT is charged. Whenfalse(default) the items' normal VAT rates apply. The server does not recompute item VAT from this flag — set the per-item VAT accordingly.hasCompanyVatboolean example: TrueWhether the company is liable for VAT. Leave this out. The server derives it from the company's VAT registration for the invoice's effective VAT date (deliveryDatewhen set, otherwisedocumentDate) and a derived value always wins over a value sent here. It is documented only because it is accepted, and because sendingfalseon a VAT-registered company used to book every position at 0% while returning 200 — this field is the master switch for VAT at booking time, ahead of any per-line VAT code. It is only consulted when the company has no VAT configuration for that date, where it cannot be derived at all.subjectstring maxLength: 1024 example: Invoice 2026-001Free-text invoice subject.closeAndSignaturestring maxLength: 4096 example: Thank you for your business.Free-text closing remarks / signature block.ourReferencestring maxLength: 128 example: ACC-2026Internal sender reference.yourReferencestring maxLength: 128 example: PO-9981Customer-side reference (e.g. PO number).companyCityAndDatestring maxLength: 256 example: Zurich, 28.05.2026Header line such as 'Zurich, 28.05.2026'.postMethodstring example: SEND_EMAILDistribution channel recorded on the invoice. Stored only — creating an invoice does not deliver it (no email/ePost/eBill/print&send). Allowed values:A_POST,B_POST,SEND_EMAIL,PRINT_AND_MANUAL_SEND,EPOST,EBILL.deliverystring maxLength: 64 example: DHLDelivery method label (free text).ibanNumberCHFstring example: CH9300762011623852957CHF IBAN for payment. Validated by downstream service.ibanNumberCHWstring example: CH9300762011623852957WIR-franc IBAN for payment.wirAcceptanceRatenumber example: 0WIR acceptance percentage.referenceNumberstring maxLength: 64 example: 21 00000 00003 13947 14300 09017QR / ISR reference number.qrInvoiceboolean default: false example: TrueWhentrue, the invoice is rendered/booked as a Swiss QR-invoice. Defaults to false.fromAutoInvoicingboolean default: false example: FalseIndicates the invoice was generated by auto-invoicing. Defaults to false.fromInvoiceRunboolean default: false example: FalseIndicates the invoice was produced by a recurring invoice run. Whentrue, accounting booking and inventory transactions are skipped. Defaults to false.invoiceTypestring example: MANUALInvoice type. Allowed values:MANUAL,CREDIT_DEBIT.originDistributionMethodstring example: SEND_EMAILOrigin distribution method. Allowed values:A_POST,B_POST,SEND_EMAIL,PRINT_AND_MANUAL_SEND,EPOST,EBILL.templateIdinteger (int64) format: int64 example: 0Template id used to create this invoice.runHistoryIdinteger (int64) format: int64 example: 0Recurring invoice run history id.settledAmountnumber example: 0KLARA-Pay settled amount (online shop only).bookingNumbersstringAccounting booking-number string. Server-managed (read-only).businessCaseIdinteger (int64) format: int64Accounting business case id. Server-managed (read-only).bookingStatusstringBooking status (e.g.OPEN,PARTIAL,PAID). Server-managed (read-only).bookingMessagestringOptional booking error/info code (e.g.INVALID_SUBSCRIPTION_FOR_ACCOUNTING). Server-managed (read-only).bookingSealedbooleanWhether the booking has been finalized. Server-managed (read-only).fiscalYearHasCreatedAutobooleanWhether a fiscal year was auto-created during booking. Server-managed (read-only).createBystringServer-assigned audit user (token subject). Server-managed (read-only).orderobject requiredThe order header the invoice belongs to. Required. Every invoice is created together with its order — sendid=0and a freshorderNumber.show fields
idinteger (int64) format: int64 example: 0Order id. Must be0or omitted for a new order.orderNumberinteger (int32) required format: int32 example: 2026001Order number, unique within the company. Required and must be greater than 0. Obtain it fromGET /core/v1/orders/next-order-number— that endpoint is not idempotent, each call advances the counter.orderNamestring example: Consulting Q2 2026Free-text order name.companyIdinteger (int64) required format: int64 example: 12345Owning KLARA company id — must match the company resolved from the bearer token. Required.customerobject requiredThe invoice recipient. Must be an existing customer — look it up withGET /core/v1/customersand send the returned block back unchanged. PopulatecompanywhencustomerTypeisCOMPANY, orpersonwhen it isPERSON.show fields
idinteger (int64) required format: int64 example: 50123Customer id of an existing customer. Required.customerTypestring required example: COMPANYDiscriminator selectingcompanyorperson. Required. Allowed values:COMPANY,PERSON.companyIdinteger (int64) format: int64 example: 12345Owning KLARA company id — must match the company resolved from the bearer token.companyobjectCompany partner of an invoice customer. Present whencustomerTypeisCOMPANY. Obtain it fromGET /core/v1/customersand send it back unchanged.show fields
idinteger (int64) format: int64 example: 50123Company partner id as returned by the customer lookup.namestring required example: Muster AGCompany name. Required.addressesarray of InvoiceAddressPostal addresses of the company. At least the billing address must be present for the invoice to be printable.show fields
Array of
InvoiceAddress.idinteger (int64) format: int64 example: 0Address id. Use the id returned by the customer lookup;0or omitted for a new address.typestring required example: COMPANYPartner type this address belongs to. Required. Allowed values:COMPANY,PERSON.addressTypestring required example: MAINAddress type label. Required. TypicallyMAINorBILLING.salutationstring example: MALESalutation of the addressee. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.firstNamestring example: HansFirst name of the addressee (person addresses).lastNamestring example: MusterLast name of the addressee (person addresses).companyNamestring example: Muster AGCompany name of the addressee (company addresses).streetstring example: BahnhofstrasseStreet name, without the house number.homeNumberstring example: 12aHouse number.homeNumberis the literal field name used throughout the KLARA address model —houseNumberis not accepted.additionalAddressstring example: c/o Finance DepartmentAdditional address line (c/o, department, ...).addressLinesstring deprecated example: Bahnhofstrasse 12aCombined street and house number. Deprecated — usestreetandhomeNumberinstead.cityobject requiredCity of an invoice address. Obtain a complete city block from the customer lookup (GET /core/v1/customers) and send it back unchanged.show fields
idinteger (int64) format: int64 example: 4247City id from the Swiss Post address directory.addressPostcodestring example: 8005Postcode (PLZ / NPA).cityName18string required example: ZuerichCity name, 18-character Swiss Post variant. Required.cityName18is the literal field name of the Swiss Post address directory (18-character abbreviation) — it is not a typo or a leftover.cityName27string required example: ZuerichCity name, 27-character Swiss Post variant. Required.onrpinteger (int32) format: int32 example: 4247Swiss Post ONRP identifier of the locality.postcodeTypeinteger (int32) format: int32 example: 20Swiss Post postcode type.additionalPostcodestring example: 00Additional postcode suffix (max 2 characters).basicPostcodeinteger (int32) format: int32 example: 8005Basic postcode.languageCodeinteger (int32) format: int32 example: 1Swiss Post language code of the locality.stateobjectCanton / state of an invoice address.show fields
Nesting continues beyond this level. See the specification for the complete structure.
countryobjectCountry of an invoice address.show fields
Nesting continues beyond this level. See the specification for the complete structure.
validFromstring (date) format: date example: 2026-01-01Address valid-from date (ISO 8601).validTostring (date) format: date example: 2026-12-31Address valid-to date (ISO 8601). Must be aftervalidFrom.
emailsarray of InvoiceEmailE-mail addresses of the company.show fields
Array of
InvoiceEmail.idstring example: 1001E-mail entry id.emailAddressstring example: billing@muster.chThe e-mail address.typestring example: WORKE-mail type. Allowed values:PRIVATE,WORK,OFFICE,OTHER.
phonesarray of InvoicePhonePhone numbers of the company.show fields
Array of
InvoicePhone.idinteger (int64) format: int64 example: 2001Phone entry id.phoneNumberstring example: +41 44 123 45 67The phone number.typestring example: WORKPhone type. Allowed values:PRIVATE,OFFICE,FAX,WORK,MOBILE.
companyBillingAddressobjectPostal address of an invoice customer. Obtain a complete address block fromGET /core/v1/customersand send it back unchanged.show fields
idinteger (int64) format: int64 example: 0Address id. Use the id returned by the customer lookup;0or omitted for a new address.typestring required example: COMPANYPartner type this address belongs to. Required. Allowed values:COMPANY,PERSON.addressTypestring required example: MAINAddress type label. Required. TypicallyMAINorBILLING.salutationstring example: MALESalutation of the addressee. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.firstNamestring example: HansFirst name of the addressee (person addresses).lastNamestring example: MusterLast name of the addressee (person addresses).companyNamestring example: Muster AGCompany name of the addressee (company addresses).streetstring example: BahnhofstrasseStreet name, without the house number.homeNumberstring example: 12aHouse number.homeNumberis the literal field name used throughout the KLARA address model —houseNumberis not accepted.additionalAddressstring example: c/o Finance DepartmentAdditional address line (c/o, department, ...).addressLinesstring deprecated example: Bahnhofstrasse 12aCombined street and house number. Deprecated — usestreetandhomeNumberinstead.cityobject requiredCity of an invoice address. Obtain a complete city block from the customer lookup (GET /core/v1/customers) and send it back unchanged.show fields
idinteger (int64) format: int64 example: 4247City id from the Swiss Post address directory.addressPostcodestring example: 8005Postcode (PLZ / NPA).cityName18string required example: ZuerichCity name, 18-character Swiss Post variant. Required.cityName18is the literal field name of the Swiss Post address directory (18-character abbreviation) — it is not a typo or a leftover.cityName27string required example: ZuerichCity name, 27-character Swiss Post variant. Required.onrpinteger (int32) format: int32 example: 4247Swiss Post ONRP identifier of the locality.postcodeTypeinteger (int32) format: int32 example: 20Swiss Post postcode type.additionalPostcodestring example: 00Additional postcode suffix (max 2 characters).basicPostcodeinteger (int32) format: int32 example: 8005Basic postcode.languageCodeinteger (int32) format: int32 example: 1Swiss Post language code of the locality.stateobjectCanton / state of an invoice address.show fields
Nesting continues beyond this level. See the specification for the complete structure.
countryobjectCountry of an invoice address.show fields
Nesting continues beyond this level. See the specification for the complete structure.
validFromstring (date) format: date example: 2026-01-01Address valid-from date (ISO 8601).validTostring (date) format: date example: 2026-12-31Address valid-to date (ISO 8601). Must be aftervalidFrom.
companyBillingAddressEnabledboolean example: FalseWhethercompanyBillingAddressis used instead of the main address.corporateIdentificationNumberstring example: CHE-123.456.789Swiss company identification number (UID).vatNumberstring example: CHE-123.456.789 MWSTVAT registration number.hrNumberstring example: CH-020.3.926.481-3Commercial register number.nogaCodestring example: 620100NOGA economic activity code.companyNumberstring example: C-0001Company number in KLARA.companyOriginReferencestring example: ERP-4711External reference of the company in the partner system.websitestring example: https://www.muster.chCompany website.languagestring example: dePreferred correspondence language as a BCP-47 tag.
personobjectNatural-person partner of an invoice customer. Present whencustomerTypeisPERSON. Obtain it fromGET /core/v1/customersand send it back unchanged.show fields
idinteger (int64) format: int64 example: 50124Person partner id as returned by the customer lookup.salutationstring example: MALESalutation. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.firstNamestring required example: HansFirst name. Required.lastNamestring required example: MusterLast name. Required.birthdaystring (date) required format: date example: 1980-04-17Date of birth (ISO 8601). Required by the downstream person model.addressListarray of InvoiceAddressPostal addresses of the person.show fields
Array of
InvoiceAddress.idinteger (int64) format: int64 example: 0Address id. Use the id returned by the customer lookup;0or omitted for a new address.typestring required example: COMPANYPartner type this address belongs to. Required. Allowed values:COMPANY,PERSON.addressTypestring required example: MAINAddress type label. Required. TypicallyMAINorBILLING.salutationstring example: MALESalutation of the addressee. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.firstNamestring example: HansFirst name of the addressee (person addresses).lastNamestring example: MusterLast name of the addressee (person addresses).companyNamestring example: Muster AGCompany name of the addressee (company addresses).streetstring example: BahnhofstrasseStreet name, without the house number.homeNumberstring example: 12aHouse number.homeNumberis the literal field name used throughout the KLARA address model —houseNumberis not accepted.additionalAddressstring example: c/o Finance DepartmentAdditional address line (c/o, department, ...).addressLinesstring deprecated example: Bahnhofstrasse 12aCombined street and house number. Deprecated — usestreetandhomeNumberinstead.cityobject requiredCity of an invoice address. Obtain a complete city block from the customer lookup (GET /core/v1/customers) and send it back unchanged.show fields
idinteger (int64) format: int64 example: 4247City id from the Swiss Post address directory.addressPostcodestring example: 8005Postcode (PLZ / NPA).cityName18string required example: ZuerichCity name, 18-character Swiss Post variant. Required.cityName18is the literal field name of the Swiss Post address directory (18-character abbreviation) — it is not a typo or a leftover.cityName27string required example: ZuerichCity name, 27-character Swiss Post variant. Required.onrpinteger (int32) format: int32 example: 4247Swiss Post ONRP identifier of the locality.postcodeTypeinteger (int32) format: int32 example: 20Swiss Post postcode type.additionalPostcodestring example: 00Additional postcode suffix (max 2 characters).basicPostcodeinteger (int32) format: int32 example: 8005Basic postcode.languageCodeinteger (int32) format: int32 example: 1Swiss Post language code of the locality.stateobjectCanton / state of an invoice address.show fields
Nesting continues beyond this level. See the specification for the complete structure.
countryobjectCountry of an invoice address.show fields
Nesting continues beyond this level. See the specification for the complete structure.
validFromstring (date) format: date example: 2026-01-01Address valid-from date (ISO 8601).validTostring (date) format: date example: 2026-12-31Address valid-to date (ISO 8601). Must be aftervalidFrom.
emailListarray of InvoiceEmailE-mail addresses of the person.show fields
Array of
InvoiceEmail.idstring example: 1001E-mail entry id.emailAddressstring example: billing@muster.chThe e-mail address.typestring example: WORKE-mail type. Allowed values:PRIVATE,WORK,OFFICE,OTHER.
phoneListarray of InvoicePhonePhone numbers of the person.show fields
Array of
InvoicePhone.idinteger (int64) format: int64 example: 2001Phone entry id.phoneNumberstring example: +41 44 123 45 67The phone number.typestring example: WORKPhone type. Allowed values:PRIVATE,OFFICE,FAX,WORK,MOBILE.
personNumberstring example: P-0001Person number in KLARA.personOriginReferencestring example: ERP-8150External reference of the person in the partner system.websitestring example: https://www.muster.chPersonal website.languagestring example: dePreferred correspondence language as a BCP-47 tag.
termsOfPaymentinteger (int32) format: int32 example: 30Payment terms in days, used to derive the defaultpaymentDate.discountnumber example: 0Default customer discount in percent.priceCategorystring example: STANDARDPrice category assigned to the customer.uuidstring example: 0d9f4d1e-4a2b-4c8d-9f3e-1b2c3d4e5f60Stable external identifier of the customer.
invoiceGroupstring example: DEFAULTInvoice group the order is assigned to.lumpSumboolean example: FalseWhether the order is billed as a lump sum.archivedboolean example: FalseWhether the order is archived.
orderItemsarray of InvoiceOrderItem requiredInvoice line items. Required — at least one entry.show fields
Array of
InvoiceOrderItem.idinteger (int64) format: int64 example: 0Item id. Must be0or omitted for a new item.positioninteger (int64) format: int64 example: 1Line position, 1-based.itemNumerstring example: P0000061123Article number of the item, as returned byGET /core/latest/articles/searchorGET /core/latest/articles/article-numbers. The field name isitemNumer, notitemNumber. This spelling is the literal wire field name of the KLARA order-management model and is what the backend accepts — it is not a typo in this documentation. Note that the article search endpoints expose the same value under the namearticleNumber.descriptionstring example: Consulting servicesItem description printed on the invoice line.articleExtendedDescriptionstring example: Sprint 12, May 2026Additional descriptive text printed below the line.quantitynumber example: 10Quantity billed.unitstring example: HourUnit of measure.pricenumber example: 100Unit price. Negative for credit-note lines. VAT-inclusive (gross) when the document hasusingVAT=true, VAT-exclusive (net) whenusingVAT=false. Both variants are available from the article lookup endpoints.discountnumber example: 0Discount on this line, in percent.amountnumber example: 1000Line total =quantity x price x (1 - discount/100), rounded to the nearest 0.05 (Swiss commercial rounding). Gross or net followingusingVAT, on the same basis asprice.posAmountnumber example: 1000Position amount as shown in the KLARA GUI. Optional; derived fromamountwhen omitted.vatobjectVAT applied to an invoice line item. The server does not recompute VAT from the document flags — send the rate that matchesusingVAT/usingExportVat.show fields
idinteger (int64) format: int64 example: 1VAT id.vatCodestring required example: 1VAT code. Required.ratenumber example: 8.1VAT rate in percent. Set to0for export invoices (usingExportVat=true).descriptionstring example: Normal rate 8.1%Human-readable VAT description.masterIdinteger (int64) format: int64 example: 0Master data id of the VAT record.companySelectedVatboolean example: FalseWhether this is a company-selected VAT.sss1boolean example: FalseWhether the first Swiss social-security special rate applies.sss2boolean example: FalseWhether the second Swiss social-security special rate applies.validFromstring (date) format: date example: 2024-01-01VAT valid-from date (ISO 8601).validTostring (date) format: date example: 2099-12-31VAT valid-to date (ISO 8601).
vatCodestring example: 1VAT code of the line. Convenience mirror ofvat.vatCode. Not persisted on this endpoint — the value that is stored comes fromvat.vatCode. Do not send the two with different values: this field is silently discarded, so a mismatch results in thevat.vatCodevalue being booked.vatCasestring example: TAXABLE_SUPPLYVAT treatment of the line: thevatCaseCodeof a sales VAT case (applicabilityREVENUE) fromGET /core/latest/vat-cases, for exampleTAXABLE_SUPPLY,SUPPLY_WITH_OPTION_ART_22orTAX_EXEMPT_SUPPLY. For a company that reports VAT with effective clearing, any other value, including a purchase case, is rejected by the booking with400 model.invalidand the invoice is not stored. Not persisted with the invoice, but used by the accounting booking of this same request — theorder_itemtable has no column for it. For a company that reports VAT with effective clearing or net tax rates it becomes the VAT case of the line's booking position. When it is missing, the VAT case of the article applies, which can be one the company cannot book; send it with every write that books (INVOICED/SENT).articleTypestring example: SERVICEArticle category. Allowed values:PRODUCTION,PREPAYMENT,SERVICE. Not persisted with the invoice, but used by the accounting booking of this same request — theorder_itemtable has no column for it. It selects the account:PREPAYMENTbooks the line to the prepayment receivables account, any other value or none to revenue.tagstring example: 3400Accounting tag of the line. Not persisted with the invoice, but used by the accounting booking of this same request — theorder_itemtable has no column for it, but the value sent here becomes the tags of the line's booking position. Required whenstatustriggers booking (INVOICED/SENT): without it the booking is rejected with400 model.invalid("The field tags is mandatory.") and the invoice is not stored. Send the article'saccountingTagsjoined with a comma, the way KLARA builds it for recurring invoices.servicePeriodFromstring (date) format: date example: 2026-05-01Service period start for this line (ISO 8601).servicePeriodTostring (date) format: date example: 2026-05-31Service period end for this line (ISO 8601).servicePeriodPatternstring example: MONTHLYService period pattern label for this line.specialRatesstring example: SSS1Swiss social-security special rate applied to the line. Allowed values:SSS1,SSS2.articleSetstring example: SET-001Identifier of the article set this line belongs to.inventorySelectionsarray of InvoiceInventorySelectionInventory selections (serial numbers, storage places) for stock-managed articles. Persisted through a dedicated path rather than with the line itself, so the serial numbers you send are validated separately — an invalid serial number fails the request even though the surrounding line is accepted.show fields
Array of
InvoiceInventorySelection.storagePlaceIdinteger (int64) format: int64 example: 77Storage place the quantity is taken from.quantitynumber example: 1Quantity taken from this storage place.serialNumbersarray of stringSerial numbers of the units delivered. Duplicates within the same invoice are rejected.
attachmentsarray of InvoiceAttachmentDocuments attached to the invoice.show fields
Array of
InvoiceAttachment.idinteger (int64) format: int64 example: 0Attachment id. Must be0or omitted for a new attachment.orderDetailIdinteger (int64) format: int64 example: 0Id of the invoice this attachment belongs to. Must be0for a new invoice.fileIdstring example: 5f8d0d55-b1a4-4d6e-9a1f-2c3b4d5e6f70Document id of the uploaded file.
openPositionsLinkedToInvoicearray of InvoiceOpenPositionLinkOpen positions (prepayments, credit notes) offset against this invoice. Persisted through a dedicated path rather than with the invoice row itself.show fields
Array of
InvoiceOpenPositionLink.bookingTypeCodestring required example: AR_PREPAYMENTType of the linked booking. Required. For invoice reconciliation the relevant values areAR_PREPAYMENTandAR_CREDITNOTE.bookingDetailUristring required example: /luz_accounting/api/klara_tenant/companies/12345/bookings/778/booking-details/9912Internal URI of the booking detail to reconcile. Required. Must match the pattern/…/{tenant-id}/companies/{companyId}/bookings/{bookingId}/booking-details/{detailId}.partialPaymentAmountnumber example: 250Amount to offset from this open position.
documentAddressobjectThe address block printed on the invoice document. Omit it to let the backend derive it from the customer's main address.show fields
customerIdinteger (int64) format: int64 example: 50123Customer the address belongs to.customerTypestring example: COMPANYPartner type. Allowed values:COMPANY,PERSON.addressobjectPostal address of an invoice customer. Obtain a complete address block fromGET /core/v1/customersand send it back unchanged.show fields
idinteger (int64) format: int64 example: 0Address id. Use the id returned by the customer lookup;0or omitted for a new address.typestring required example: COMPANYPartner type this address belongs to. Required. Allowed values:COMPANY,PERSON.addressTypestring required example: MAINAddress type label. Required. TypicallyMAINorBILLING.salutationstring example: MALESalutation of the addressee. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.firstNamestring example: HansFirst name of the addressee (person addresses).lastNamestring example: MusterLast name of the addressee (person addresses).companyNamestring example: Muster AGCompany name of the addressee (company addresses).streetstring example: BahnhofstrasseStreet name, without the house number.homeNumberstring example: 12aHouse number.homeNumberis the literal field name used throughout the KLARA address model —houseNumberis not accepted.additionalAddressstring example: c/o Finance DepartmentAdditional address line (c/o, department, ...).addressLinesstring deprecated example: Bahnhofstrasse 12aCombined street and house number. Deprecated — usestreetandhomeNumberinstead.cityobject requiredCity of an invoice address. Obtain a complete city block from the customer lookup (GET /core/v1/customers) and send it back unchanged.show fields
idinteger (int64) format: int64 example: 4247City id from the Swiss Post address directory.addressPostcodestring example: 8005Postcode (PLZ / NPA).cityName18string required example: ZuerichCity name, 18-character Swiss Post variant. Required.cityName18is the literal field name of the Swiss Post address directory (18-character abbreviation) — it is not a typo or a leftover.cityName27string required example: ZuerichCity name, 27-character Swiss Post variant. Required.onrpinteger (int32) format: int32 example: 4247Swiss Post ONRP identifier of the locality.postcodeTypeinteger (int32) format: int32 example: 20Swiss Post postcode type.additionalPostcodestring example: 00Additional postcode suffix (max 2 characters).basicPostcodeinteger (int32) format: int32 example: 8005Basic postcode.languageCodeinteger (int32) format: int32 example: 1Swiss Post language code of the locality.stateobjectCanton / state of an invoice address.show fields
idinteger (int64) format: int64 example: 26State id.codestring example: ZHCanton code (max 3 characters).descriptionstring example: ZuerichCanton name.
countryobjectCountry of an invoice address.show fields
idinteger (int64) format: int64 example: 1Country id.countryNamestring example: SwitzerlandCountry name.iso2Codestring example: CHISO 3166-1 alpha-2 code.iso3Codestring example: CHEISO 3166-1 alpha-3 code.phoneCodestring example: 41International dialling code.numericCodestring example: 756ISO 3166-1 numeric code.
validFromstring (date) format: date example: 2026-01-01Address valid-from date (ISO 8601).validTostring (date) format: date example: 2026-12-31Address valid-to date (ISO 8601). Must be aftervalidFrom.
salutationstring example: MALESalutation printed above the address. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.personFirstNamestring example: HansFirst name printed on the document (person recipients).personLastNamestring example: MusterLast name printed on the document (person recipients).companyNamestring example: Muster AGCompany name printed on the document (company recipients).
mailingAddressobjectThe address block printed on the invoice document. Omit it to let the backend derive it from the customer's main address.show fields
customerIdinteger (int64) format: int64 example: 50123Customer the address belongs to.customerTypestring example: COMPANYPartner type. Allowed values:COMPANY,PERSON.addressobjectPostal address of an invoice customer. Obtain a complete address block fromGET /core/v1/customersand send it back unchanged.show fields
idinteger (int64) format: int64 example: 0Address id. Use the id returned by the customer lookup;0or omitted for a new address.typestring required example: COMPANYPartner type this address belongs to. Required. Allowed values:COMPANY,PERSON.addressTypestring required example: MAINAddress type label. Required. TypicallyMAINorBILLING.salutationstring example: MALESalutation of the addressee. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.firstNamestring example: HansFirst name of the addressee (person addresses).lastNamestring example: MusterLast name of the addressee (person addresses).companyNamestring example: Muster AGCompany name of the addressee (company addresses).streetstring example: BahnhofstrasseStreet name, without the house number.homeNumberstring example: 12aHouse number.homeNumberis the literal field name used throughout the KLARA address model —houseNumberis not accepted.additionalAddressstring example: c/o Finance DepartmentAdditional address line (c/o, department, ...).addressLinesstring deprecated example: Bahnhofstrasse 12aCombined street and house number. Deprecated — usestreetandhomeNumberinstead.cityobject requiredCity of an invoice address. Obtain a complete city block from the customer lookup (GET /core/v1/customers) and send it back unchanged.show fields
idinteger (int64) format: int64 example: 4247City id from the Swiss Post address directory.addressPostcodestring example: 8005Postcode (PLZ / NPA).cityName18string required example: ZuerichCity name, 18-character Swiss Post variant. Required.cityName18is the literal field name of the Swiss Post address directory (18-character abbreviation) — it is not a typo or a leftover.cityName27string required example: ZuerichCity name, 27-character Swiss Post variant. Required.onrpinteger (int32) format: int32 example: 4247Swiss Post ONRP identifier of the locality.postcodeTypeinteger (int32) format: int32 example: 20Swiss Post postcode type.additionalPostcodestring example: 00Additional postcode suffix (max 2 characters).basicPostcodeinteger (int32) format: int32 example: 8005Basic postcode.languageCodeinteger (int32) format: int32 example: 1Swiss Post language code of the locality.stateobjectCanton / state of an invoice address.show fields
idinteger (int64) format: int64 example: 26State id.codestring example: ZHCanton code (max 3 characters).descriptionstring example: ZuerichCanton name.
countryobjectCountry of an invoice address.show fields
idinteger (int64) format: int64 example: 1Country id.countryNamestring example: SwitzerlandCountry name.iso2Codestring example: CHISO 3166-1 alpha-2 code.iso3Codestring example: CHEISO 3166-1 alpha-3 code.phoneCodestring example: 41International dialling code.numericCodestring example: 756ISO 3166-1 numeric code.
validFromstring (date) format: date example: 2026-01-01Address valid-from date (ISO 8601).validTostring (date) format: date example: 2026-12-31Address valid-to date (ISO 8601). Must be aftervalidFrom.
salutationstring example: MALESalutation printed above the address. Allowed values:MALE,FEMALE,MALE_FEMALE,FAMILY.personFirstNamestring example: HansFirst name printed on the document (person recipients).personLastNamestring example: MusterLast name printed on the document (person recipients).companyNamestring example: Muster AGCompany name printed on the document (company recipients).
mailingContactinteger (int64) format: int64 example: 0Contact person id used for postal delivery.emailDistributionobjectE-mail distribution settings recorded on the invoice. Stored only — this endpoint never sends the invoice. Retrieve the PDF viaPOST /core/v1/invoices/{id}/printed-documentand deliver it yourself.show fields
idinteger (int64) format: int64 example: 0Distribution entry id. Must be0or omitted for a new invoice.subjectstring example: Invoice INV-2026-001Subject line stored for the distribution.emailAddressstring example: billing@muster.chPrimary recipient address.ccEmailAddressesarray of stringCarbon-copy recipient addresses.replyTostring example: finance@my-company.chReply-to address.emailTextstring example: Please find our invoice attached.Body text stored for the distribution.
partnerContactIdinteger (int64) format: int64 example: 0Contact person of the customer this invoice is addressed to.printedFileIdstring example: 5f8d0d55-b1a4-4d6e-9a1f-2c3b4d5e6f70Document id of the printed invoice PDF. Normally server-assigned byPOST /core/v1/invoices/{id}/printed-document— omit it on creation. Set it only to attach a PDF your own system rendered.
Responses 7
200 Invoice updated successfully. show body
application/json Invoice
idinteger (int64) format: int64 example: 0Invoice id. Must be0or omitted when creating a new invoice. This endpoint only supports creation; updating an existing invoice is not supported.orderTypestring default: INVOICE example: INVOICEPolymorphic discriminator. Must beINVOICE. Allowed values:INVOICE.statusstring example: INVOICEDInvoice status. Allowed values:DRAFT,INVOICED,SENT,PAID,CANCELLED. Required. StatusINVOICEDorSENTtriggers accounting booking.invoiceCodestring required maxLength: 64 pattern: \S example: INV-2026-001Human-readable invoice code. Required and unique per company.invoiceNumberinteger (int64) format: int64 example: 2026001Sequential invoice number, typically obtained fromGET /invoices/next-invoice-number.documentDatestring (date) format: date example: 2026-05-28Invoice document date (ISO 8601). Required whenamountis greater than 0. Must fall inside the company's active Order Management subscription period.paymentDatestring (date) format: date example: 2026-06-27Payment due date (ISO 8601). Required whenamountis greater than 0. Must be on or afterdocumentDate.deliveryDatestring (date) format: date example: 2026-05-25Service delivery date (ISO 8601).issuedDatestring (date) format: date example: 2026-05-28Date the invoice was issued (ISO 8601).servicePeriodFromstring (date) format: date example: 2026-05-01Service period start date (ISO 8601).servicePeriodTostring (date) format: date example: 2026-05-31Service period end date (ISO 8601).servicePeriodPatternstring maxLength: 32 example: MONTHLYService period pattern label (e.g.MONTHLY,YEARLY).vatDatestring (date) format: dateVAT date. Server-managed (read-only).bookingDueDatestring (date) format: dateBooking due date returned by accounting. Server-managed (read-only).lastModifiedstring (date-time) format: date-timeLast modification timestamp. Server-managed (read-only).createDatestring (date-time) format: date-timeCreation timestamp. Server-managed (read-only).amountnumber example: 1080Invoice total. WhenusingVAT=false(VAT-exclusive items) this is the gross total = net + VAT; whenusingVAT=true(VAT-inclusive items) it is the sum of the gross item amounts (VAT already inside). Caller-supplied — the server does not recompute it.usingVATboolean default: false example: TrueControls whether each itemprice/amountis VAT-inclusive (gross) or VAT-exclusive (net). This is the GUI checkbox "VAT included in amount of each item".true= amounts already include VAT (INCLUDE_VAT);false= VAT is added on top of the net amounts (EXCLUDE_VAT). It does not turn VAT on or off — whether VAT applies at all is governed by the company's VAT registration. UseGET /core/latest/company-configuration/including-vatfor the company default. The server stores the amounts you send verbatim and does not recompute them from this flag — sendprice/amountconsistent with the chosen mode (see the create operation's VAT-handling notes).usingExportVatboolean default: false example: FalseExport invoice flag — the GUI "Export" checkbox. Whentrue, the invoice is treated as an export: everyorderItems[].vat.ratemust be0(export/zero VAT code), so no VAT is charged. Whenfalse(default) the items' normal VAT rates apply. The server does not recompute item VAT from this flag — set the per-item VAT accordingly.hasCompanyVatboolean example: TrueWhether the company is liable for VAT. Leave this out. The server derives it from the company's VAT registration for the invoice's effective VAT date (deliveryDatewhen set, otherwisedocumentDate) and a derived value always wins over a value sent here. It is documented only because it is accepted, and because sendingfalseon a VAT-registered company used to book every position at 0% while returning 200 — this field is the master switch for VAT at booking time, ahead of any per-line VAT code. It is only consulted when the company has no VAT configuration for that date, where it cannot be derived at all.subjectstring maxLength: 1024 example: Invoice 2026-001Free-text invoice subject.closeAndSignaturestring maxLength: 4096 example: Thank you for your business.Free-text closing remarks / signature block.ourReferencestring maxLength: 128 example: ACC-2026Internal sender reference.yourReferencestring maxLength: 128 example: PO-9981Customer-side reference (e.g. PO number).companyCityAndDatestring maxLength: 256 example: Zurich, 28.05.2026Header line such as 'Zurich, 28.05.2026'.postMethodstring example: SEND_EMAILDistribution channel recorded on the invoice. Stored only — creating an invoice does not deliver it (no email/ePost/eBill/print&send). Allowed values:A_POST,B_POST,SEND_EMAIL,PRINT_AND_MANUAL_SEND,EPOST,EBILL.deliverystring maxLength: 64 example: DHLDelivery method label (free text).ibanNumberCHFstring example: CH9300762011623852957CHF IBAN for payment. Validated by downstream service.ibanNumberCHWstring example: CH9300762011623852957WIR-franc IBAN for payment.wirAcceptanceRatenumber example: 0WIR acceptance percentage.referenceNumberstring maxLength: 64 example: 21 00000 00003 13947 14300 09017QR / ISR reference number.qrInvoiceboolean default: false example: TrueWhentrue, the invoice is rendered/booked as a Swiss QR-invoice. Defaults to false.fromAutoInvoicingboolean default: false example: FalseIndicates the invoice was generated by auto-invoicing. Defaults to false.fromInvoiceRunboolean default: false example: FalseIndicates the invoice was produced by a recurring invoice run. Whentrue, accounting booking and inventory transactions are skipped. Defaults to false.invoiceTypestring example: MANUALInvoice type. Allowed values:MANUAL,CREDIT_DEBIT.originDistributionMethodstring example: SEND_EMAILOrigin distribution method. Allowed values:A_POST,B_POST,SEND_EMAIL,PRINT_AND_MANUAL_SEND,EPOST,EBILL.templateIdinteger (int64) format: int64 example: 0Template id used to create this invoice.runHistoryIdinteger (int64) format: int64 example: 0Recurring invoice run history id.settledAmountnumber example: 0KLARA-Pay settled amount (online shop only).bookingNumbersstringAccounting booking-number string. Server-managed (read-only).businessCaseIdinteger (int64) format: int64Accounting business case id. Server-managed (read-only).bookingStatusstringBooking status (e.g.OPEN,PARTIAL,PAID). Server-managed (read-only).bookingMessagestringOptional booking error/info code (e.g.INVALID_SUBSCRIPTION_FOR_ACCOUNTING). Server-managed (read-only).bookingSealedbooleanWhether the booking has been finalized. Server-managed (read-only).fiscalYearHasCreatedAutobooleanWhether a fiscal year was auto-created during booking. Server-managed (read-only).createBystringServer-assigned audit user (token subject). Server-managed (read-only).
400 Data invalid
Error codes for this response (the code field of the response body):invoice.vat_code_missing — At least one orderItems[] entry set VAT on vatType, vatCase or the top-level vatCode while leaving vat.vatCode empty. Only vat.vatCode is stored, so that line would have been booked at 0%. Move the code to vat.vatCode, or send "0" ("No VAT") for a position that genuinely carries none.invoice.vat_rate_mismatch — At least one orderItems[] entry sent a vat.rate that is not the rate of its vat.vatCode. The booking always uses the code's rate, so the invoice document would state a different percentage than the accounting record. Send the matching rate, or omit vat.rate and let the server fill it in.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
invoice.vat_code_missing — At least one orderItems[] entry set VAT on vatType, vatCase or the top-level vatCode while leaving vat.vatCode empty. Only vat.vatCode is stored, so that line would have been booked at 0%. Move the code to vat.vatCode, or send "0" ("No VAT") for a position that genuinely carries none.invoice.vat_rate_mismatch — At least one orderItems[] entry sent a vat.rate that is not the rate of its vat.vatCode. The booking always uses the code's rate, so the invoice document would state a different percentage than the accounting record. Send the matching rate, or omit vat.rate and let the server fill it in.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/invoices/next-invoice-numberkey / tokenGet the next available invoice number for the authenticated company.
FINANCE permission on the target company. This operation is NOT idempotent — each successful call advances the persisted next-invoice-number counter on an internal service, so the returned value is reserved and will not be returned again. Do not retry on success.operationId
getNextInvoiceNumber — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Responses 6
200 Next available invoice number returned. show body
application/json NextInvoiceNumberResponse
nextInvoiceNumberinteger (int64) format: int64 example: 2026001The next available invoice number reserved for the authenticated company. Each successful call advances the persisted counter; the value is therefore unique per call.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/invoices/{id}key / tokenGet a single invoice by its numeric id.
id under the company resolved from the bearer JWT. The response includes order items enriched with inventory selection data and accounting booking-status fields (bookingStatus, bookingDueDate, bookingSealed) populated by an internal service. The caller must hold the FINANCE permission on the target company.operationId
getInvoiceById — the method name a generated client uses.
Required permission
FINANCE_GET_INVOICE
Available through: Administrator, External user, Buchhalter, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
id required | Numeric primary key of the invoice to retrieve. Obtain this from the id field of a previously created invoice (POST /core/v1/invoices). |
Responses 6
200 Invoice found and returned. show body
application/json Invoice
idinteger (int64) format: int64 example: 0Invoice id. Must be0or omitted when creating a new invoice. This endpoint only supports creation; updating an existing invoice is not supported.orderTypestring default: INVOICE example: INVOICEPolymorphic discriminator. Must beINVOICE. Allowed values:INVOICE.statusstring example: INVOICEDInvoice status. Allowed values:DRAFT,INVOICED,SENT,PAID,CANCELLED. Required. StatusINVOICEDorSENTtriggers accounting booking.invoiceCodestring required maxLength: 64 pattern: \S example: INV-2026-001Human-readable invoice code. Required and unique per company.invoiceNumberinteger (int64) format: int64 example: 2026001Sequential invoice number, typically obtained fromGET /invoices/next-invoice-number.documentDatestring (date) format: date example: 2026-05-28Invoice document date (ISO 8601). Required whenamountis greater than 0. Must fall inside the company's active Order Management subscription period.paymentDatestring (date) format: date example: 2026-06-27Payment due date (ISO 8601). Required whenamountis greater than 0. Must be on or afterdocumentDate.deliveryDatestring (date) format: date example: 2026-05-25Service delivery date (ISO 8601).issuedDatestring (date) format: date example: 2026-05-28Date the invoice was issued (ISO 8601).servicePeriodFromstring (date) format: date example: 2026-05-01Service period start date (ISO 8601).servicePeriodTostring (date) format: date example: 2026-05-31Service period end date (ISO 8601).servicePeriodPatternstring maxLength: 32 example: MONTHLYService period pattern label (e.g.MONTHLY,YEARLY).vatDatestring (date) format: dateVAT date. Server-managed (read-only).bookingDueDatestring (date) format: dateBooking due date returned by accounting. Server-managed (read-only).lastModifiedstring (date-time) format: date-timeLast modification timestamp. Server-managed (read-only).createDatestring (date-time) format: date-timeCreation timestamp. Server-managed (read-only).amountnumber example: 1080Invoice total. WhenusingVAT=false(VAT-exclusive items) this is the gross total = net + VAT; whenusingVAT=true(VAT-inclusive items) it is the sum of the gross item amounts (VAT already inside). Caller-supplied — the server does not recompute it.usingVATboolean default: false example: TrueControls whether each itemprice/amountis VAT-inclusive (gross) or VAT-exclusive (net). This is the GUI checkbox "VAT included in amount of each item".true= amounts already include VAT (INCLUDE_VAT);false= VAT is added on top of the net amounts (EXCLUDE_VAT). It does not turn VAT on or off — whether VAT applies at all is governed by the company's VAT registration. UseGET /core/latest/company-configuration/including-vatfor the company default. The server stores the amounts you send verbatim and does not recompute them from this flag — sendprice/amountconsistent with the chosen mode (see the create operation's VAT-handling notes).usingExportVatboolean default: false example: FalseExport invoice flag — the GUI "Export" checkbox. Whentrue, the invoice is treated as an export: everyorderItems[].vat.ratemust be0(export/zero VAT code), so no VAT is charged. Whenfalse(default) the items' normal VAT rates apply. The server does not recompute item VAT from this flag — set the per-item VAT accordingly.hasCompanyVatboolean example: TrueWhether the company is liable for VAT. Leave this out. The server derives it from the company's VAT registration for the invoice's effective VAT date (deliveryDatewhen set, otherwisedocumentDate) and a derived value always wins over a value sent here. It is documented only because it is accepted, and because sendingfalseon a VAT-registered company used to book every position at 0% while returning 200 — this field is the master switch for VAT at booking time, ahead of any per-line VAT code. It is only consulted when the company has no VAT configuration for that date, where it cannot be derived at all.subjectstring maxLength: 1024 example: Invoice 2026-001Free-text invoice subject.closeAndSignaturestring maxLength: 4096 example: Thank you for your business.Free-text closing remarks / signature block.ourReferencestring maxLength: 128 example: ACC-2026Internal sender reference.yourReferencestring maxLength: 128 example: PO-9981Customer-side reference (e.g. PO number).companyCityAndDatestring maxLength: 256 example: Zurich, 28.05.2026Header line such as 'Zurich, 28.05.2026'.postMethodstring example: SEND_EMAILDistribution channel recorded on the invoice. Stored only — creating an invoice does not deliver it (no email/ePost/eBill/print&send). Allowed values:A_POST,B_POST,SEND_EMAIL,PRINT_AND_MANUAL_SEND,EPOST,EBILL.deliverystring maxLength: 64 example: DHLDelivery method label (free text).ibanNumberCHFstring example: CH9300762011623852957CHF IBAN for payment. Validated by downstream service.ibanNumberCHWstring example: CH9300762011623852957WIR-franc IBAN for payment.wirAcceptanceRatenumber example: 0WIR acceptance percentage.referenceNumberstring maxLength: 64 example: 21 00000 00003 13947 14300 09017QR / ISR reference number.qrInvoiceboolean default: false example: TrueWhentrue, the invoice is rendered/booked as a Swiss QR-invoice. Defaults to false.fromAutoInvoicingboolean default: false example: FalseIndicates the invoice was generated by auto-invoicing. Defaults to false.fromInvoiceRunboolean default: false example: FalseIndicates the invoice was produced by a recurring invoice run. Whentrue, accounting booking and inventory transactions are skipped. Defaults to false.invoiceTypestring example: MANUALInvoice type. Allowed values:MANUAL,CREDIT_DEBIT.originDistributionMethodstring example: SEND_EMAILOrigin distribution method. Allowed values:A_POST,B_POST,SEND_EMAIL,PRINT_AND_MANUAL_SEND,EPOST,EBILL.templateIdinteger (int64) format: int64 example: 0Template id used to create this invoice.runHistoryIdinteger (int64) format: int64 example: 0Recurring invoice run history id.settledAmountnumber example: 0KLARA-Pay settled amount (online shop only).bookingNumbersstringAccounting booking-number string. Server-managed (read-only).businessCaseIdinteger (int64) format: int64Accounting business case id. Server-managed (read-only).bookingStatusstringBooking status (e.g.OPEN,PARTIAL,PAID). Server-managed (read-only).bookingMessagestringOptional booking error/info code (e.g.INVALID_SUBSCRIPTION_FOR_ACCOUNTING). Server-managed (read-only).bookingSealedbooleanWhether the booking has been finalized. Server-managed (read-only).fiscalYearHasCreatedAutobooleanWhether a fiscal year was auto-created during booking. Server-managed (read-only).createBystringServer-assigned audit user (token subject). Server-managed (read-only).
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 No invoice with the given id exists for the authenticated company.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/v1/invoices/{id}/printed-documentkey / tokenReturn the invoice as a PDF (rendering it if needed).
application/pdf stream via the internal KLARA printing pipeline (an internal service + Aspose Words), mirroring the behaviour of the KLARA GUI. The caller must hold the FINANCE permission on the target company.Reuse vs. render (mirrors the KLARA GUI): if the invoice was already printed, the previously rendered PDF is fetched from storage and returned as-is; if it was not yet printed, it is rendered now and the
printedFileId is stored on the invoice record. In both cases the response body is the binary PDF with a Content-Disposition: attachment header containing the suggested filename. This is a POST (not GET) because the first print persists the printedFileId.operationId
printInvoice — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
id required | ID of the invoice to return as PDF. Must belong to the company resolved from the bearer JWT. |
Responses 6
200 Invoice PDF returned as a binary application/pdf stream with a Content-Disposition: attachment header — either freshly rendered (first print) or the previously stored PDF (already printed). show body
application/pdf any
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Invoice not found.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/v1/invoices/{id}/sendkey / tokenSend a booked invoice (smart delivery or a forced channel).
Omit
channel for smart delivery: the system auto-routes through EPOST, EBILL, SEND_EMAIL and Print&Send and only fails if none can deliver. Provide channel to force that exact channel: if the recipient is not eligible (e.g. no email on file, not eBill-registered, Print&Send not subscribed) the call fails with 400. The invoice PDF is rendered on demand when it has not been printed yet.Prerequisites: the invoice must already be booked —
DRAFT and cancelled invoices are rejected with 400. Create/book it via POST /core/v1/invoices (status=INVOICED) first.Not idempotent: each successful call performs a real delivery (sends an email / hands a letter to the postal channel) and overwrites the invoice's recorded post method — do not retry blindly on success.
channel uses the same values as Invoice.postMethod, except PRINT_AND_MANUAL_SEND, which is not a deliverable channel and is rejected with 400. Authentication is API key + bearer JWT; the caller must hold the FINANCE permission on the target company.operationId
sendInvoice — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 2
| Name | Description |
|---|---|
id required | Numeric primary key of the booked invoice to send. Must belong to the company resolved from the bearer JWT. Obtain it from the id of a previously created invoice (POST /core/v1/invoices). |
channel | Forced distribution channel. Leave empty for smart delivery (auto-routing) — the default is no forced channel. Allowed values: EPOST, EBILL, SEND_EMAIL, A_POST, B_POST. PRINT_AND_MANUAL_SEND is rejected with 400 (not a deliverable channel).Allowed values: A_POST, B_POST, SEND_EMAIL, PRINT_AND_MANUAL_SEND, EPOST, EBILL |
Responses 7
200 Invoice delivered. Returns the channel actually used, whether it was smart-routed, the OneAPI delivery id and the archived PDF's printedFileId. show body
application/json SendInvoiceResult
deliveredboolean example: Truetruewhen delivery was confirmed via the channel actually used.smartboolean example: Truetruewhen the channel was auto-selected (smart delivery, i.e. nochannelwas forced);falsewhen a channel was forced.channelobject example: SEND_EMAILThe channel actually used to deliver the invoice. For physical post this is the resolved postage method (e.g.A_POST).Allowed values:A_POST,B_POST,SEND_EMAIL,PRINT_AND_MANUAL_SEND,EPOST,EBILLdeliveryIdstring example: 9b1f4c8e-2d3a-4f6b-8c7d-1e2f3a4b5c6dOneAPI delivery id, when available (forced sends only;nullfor smart delivery).printedFileIdstring example: 1771764The printedFileId of the archived invoice PDF rendered/reused during the send.
400 Invoice is DRAFT/cancelled, the channel is unsupported (PRINT_AND_MANUAL_SEND), the recipient is not eligible for the forced channel, or smart delivery found no channel.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 No invoice with the given id exists for the authenticated company.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/order-documents/filter/type-and-order-numberkey / tokenList order-management documents by type and order number.
type and business order-number. Used to discover sibling documents on the same order chain (e.g. find the DELIVERY_NOTEs for an order number before creating an INVOICE from them). The caller must hold the FINANCE permission on the target company. This operation is idempotent and read-only — it can be safely retried.operationId
listOrderDocumentsByTypeAndOrderNumber — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 2
| Name | Description |
|---|---|
order-number required | Business order number shared by all documents in the same order chain (e.g. the order.orderNumber returned by POST /core/v1/invoices). Exact match. Required. |
type required | Order-document type to filter by. Allowed values: OFFER, CONFIRMATION, DELIVERY_NOTE, INVOICE, CREDIT_NOTE, FRIENDLY_REMINDER, FIRST_REMINDER, SECOND_REMINDER, PAYSLIP, RECURRING_INVOICE_TEMPLATE. Required.Allowed values: OFFER, CONFIRMATION, DELIVERY_NOTE, INVOICE, CREDIT_NOTE, FRIENDLY_REMINDER, FIRST_REMINDER, SECOND_REMINDER, PAYSLIP, RECURRING_INVOICE_TEMPLATE |
Responses 6
200 Matching order-management documents. show body
application/json array of OrderDocument
Array of OrderDocument.
idinteger (int64) format: int64 example: 1234Document id (database primary key).orderTypestring example: DELIVERY_NOTEPolymorphic discriminator. Allowed values:OFFER,CONFIRMATION,DELIVERY_NOTE,INVOICE,CREDIT_NOTE,FRIENDLY_REMINDER,FIRST_REMINDER,SECOND_REMINDER,PAYSLIP,RECURRING_INVOICE_TEMPLATE.statusstring example: SENTDocument status (subtype-specific). For invoices:DRAFT,INVOICED,SENT,PAID,CANCELLED.documentDatestring (date) format: date example: 2026-05-28Document creation/business date (ISO 8601).issuedDatestring (date) format: date example: 2026-05-28Date the document was issued (ISO 8601).amountnumber example: 500Document gross total (incl. VAT when applicable).ourReferencestring example: ACC-2026Internal sender reference.yourReferencestring example: PO-9981Customer-side reference (e.g. PO number).subjectstring example: Delivery note 377Free-text document subject.closeAndSignaturestring example: Thank you for your business.Free-text closing remarks / signature block.companyCityAndDatestring example: Zurich, 28.05.2026Header line such as 'Zurich, 28.05.2026'.usingVATboolean default: false example: TrueWhether VAT is applied on this document.vatDatestring (date) format: dateVAT date. Server-managed (read-only).printedFileIdstring example: 1771764Document file id of the rendered PDF (if any).
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/order-documents/{order-type}/next-document-numberkey / tokenGet the next document number for a given order-document type.
order-type. Use the returned documentCode as invoiceCode / offerCode when subsequently creating a document with POST /core/v1/invoices. Side effect for INVOICE: the persisted counter is advanced on every call — do not call speculatively. Only meaningful for OFFER, CONFIRMATION, DELIVERY_NOTE, and INVOICE; other types always return documentNumber = 0. If the company has configured MANUAL numbering for the requested type, the downstream service returns HTTP 500 — check GET /core/v1/order-numbering-configurations first. The caller must hold the FINANCE permission on the target company.operationId
getNextDocumentNumber — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
order-type required | Order-document type whose counter to advance. Meaningful values: OFFER, CONFIRMATION, DELIVERY_NOTE, INVOICE. Other enum values (CREDIT_NOTE, FRIENDLY_REMINDER, FIRST_REMINDER, SECOND_REMINDER, PAYSLIP, RECURRING_INVOICE_TEMPLATE) are accepted but always return documentNumber = 0. An invalid value returns HTTP 400.Allowed values: OFFER, CONFIRMATION, DELIVERY_NOTE, INVOICE, CREDIT_NOTE, FRIENDLY_REMINDER, FIRST_REMINDER, SECOND_REMINDER, PAYSLIP, RECURRING_INVOICE_TEMPLATE |
Responses 6
200 Next document number and formatted code for the requested order type. show body
application/json OrderNumberingResult
orderTypeobject example: INVOICEOrder-management document type. Used as the discriminator onOrderDocument.orderType.orderNumberingTypeobject example: STANDARDStrategy used to assign document numbers for an order type.STANDARD— server auto-increments;MANUAL— caller supplies the number;CUSTOMISED— caller supplies a formatted code matching the configured pattern.startingNumberinteger (int64) format: int64 example: 1000Starting sequence number for STANDARD and CUSTOMISED strategies.incrementinteger (int64) format: int64 example: 1Step size between successive auto-incremented numbers.formatstring example: INV-2026-Alphanumeric prefix for CUSTOMISED numbering (the server appends the sequence number).documentNumberinteger (int64) format: int64 example: 1001The next document number to use (the sequence integer). For INVOICE this counter is persisted on every call — do not call speculatively.documentCodestring example: 1001The next document code to use as invoiceCode / offerCode. For STANDARD and MANUAL this equals String.valueOf(documentNumber); for CUSTOMISED it equals format + documentNumber (e.g. "INV-2026-1001").
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/order-numbering-configurationskey / tokenGet the order-numbering configuration for a document type.
order-type of the company resolved from the bearer JWT. Use this before creating a document to decide how to supply the document number in POST /core/v1/invoices: STANDARD — server auto-assigns; MANUAL — set invoiceCode yourself; CUSTOMISED — set invoiceCode to a value matching the returned format pattern. If no configuration has been saved by the company administrator, a default STANDARD configuration is returned. The caller must hold the FINANCE permission on the target company. This operation is idempotent and read-only.operationId
getOrderNumberingConfiguration — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
order-type | Document type to retrieve the numbering configuration for. Allowed values: OFFER, CONFIRMATION, DELIVERY_NOTE, INVOICE, CREDIT_NOTE, FRIENDLY_REMINDER, FIRST_REMINDER, SECOND_REMINDER, PAYSLIP, RECURRING_INVOICE_TEMPLATE. Recommended — omitting it returns a generic default with a null orderType field.Allowed values: OFFER, CONFIRMATION, DELIVERY_NOTE, INVOICE, CREDIT_NOTE, FRIENDLY_REMINDER, FIRST_REMINDER, SECOND_REMINDER, PAYSLIP, RECURRING_INVOICE_TEMPLATE |
Responses 6
200 Numbering configuration for the requested document type. show body
application/json OrderNumberingConfiguration
orderTypeobject example: INVOICEOrder-management document type. Used as the discriminator onOrderDocument.orderType.orderNumberingTypeobject example: STANDARDStrategy used to assign document numbers for an order type.STANDARD— server auto-increments;MANUAL— caller supplies the number;CUSTOMISED— caller supplies a formatted code matching the configured pattern.startingNumberinteger (int64) format: int64 example: 1000The first number in the auto-increment sequence (relevant for STANDARD). Null when not configured.incrementinteger (int64) format: int64 example: 1Step size between successive auto-incremented numbers (relevant for STANDARD). Null when not configured.formatstring example: INV-2026-{SEQ}Alphanumeric format pattern for CUSTOMISED numbering (e.g.INV-{YYYY}-{SEQ}). Null when not configured.
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/orders/next-order-numberkey / tokenGet the next available order number for the authenticated company.
nextOrderNumber as the orderNumber field when subsequently creating an order. Not idempotent: each call reserves and advances the in-memory counter — call this immediately before creating the order and do not call speculatively. Gaps may appear in the sequence if the subsequent order creation fails. The caller must hold the FINANCE permission on the target company.operationId
getNextOrderNumber — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Responses 5
200 Next available order number for the authenticated company. show body
application/json OrderNextNumberResult
nextOrderNumberinteger (int32) format: int32 example: 10041The next available business order number for the authenticated company. Reserved exclusively for this call — use it as the orderNumber when subsequently creating the order. Gaps may appear in the sequence if the order creation fails after this call.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
Sales & Articles
Article28
GET/core/latest/article-categorieskey / tokenGet all categories
offset and limit; the size of the whole filtered collection is returned in the X-Total-Count response header, so a caller knows how far it still has to walk. Omitting limit returns the whole collection, as before.operationId
listArticleCategories — the method name a generated client uses.
Required permission
ARTICLE_READ_ONLY
Available through: Administrator, External user, Mitarbeiter und Lohn, Kundenbeziehungen, Zeit- und Materialrapporte, Online Terminbuchung
Parameters 6
| Name | Description |
|---|---|
active-status | Active status |
keyword | Renamed to search-key. This name is accepted until 2027-09-01; when both are sent, search-key wins. After that date, a request sending keyword without search-key is rejected with 400.Deprecated — use search-key instead. Free-text search over the name. This name has no length limit and search-key rejects values over 256 characters, so shorten anything longer before migrating. |
limit | Limit filters returned |
offset | 0-based pagination offset - the number of rows to skip before the returned page. Defaults to 0. Combine with limit to walk the full collection; the total to walk is returned in the X-Total-Count response header. |
search-key | Free-text search over the name, matched case-insensitively in the language selected by Accept-Language. Maximum length 256 characters. |
Accept-Language | Language code is used for filtering by the keyword with multilingual |
Responses 5
200 Return successfully show body
application/json array of ArticleCategory
Array of ArticleCategory.
idstring read-only example: 1Id of the category. Does not need to be included when creating article categorynameDEstring required example: German nameName of the category in GermannameENstring example: English nameName of the category in EnglishnameFRstring example: French nameName of the category in FrenchnameITstring example: Italian nameName of the category in Italianorderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article category.activebooleanIndicates if the category is active or notimageIdstring read-only example: 1Image Id of the category. Does not need to be included when creating article category_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/latest/article-categorieskey / tokenCreate a new category
operationId
createArticleCategory — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Request body
application/json ArticleCategory
idstring read-only example: 1Id of the category. Does not need to be included when creating article categorynameDEstring required example: German nameName of the category in GermannameENstring example: English nameName of the category in EnglishnameFRstring example: French nameName of the category in FrenchnameITstring example: Italian nameName of the category in Italianorderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article category.activebooleanIndicates if the category is active or notimageIdstring read-only example: 1Image Id of the category. Does not need to be included when creating article category_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
Responses 5
201 Category created show body
application/json ArticleCategory
idstring read-only example: 1Id of the category. Does not need to be included when creating article categorynameDEstring required example: German nameName of the category in GermannameENstring example: English nameName of the category in EnglishnameFRstring example: French nameName of the category in FrenchnameITstring example: Italian nameName of the category in Italianorderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article category.activebooleanIndicates if the category is active or notimageIdstring read-only example: 1Image Id of the category. Does not need to be included when creating article category_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
DELETE/core/latest/article-categories/{category-id}key / tokenDelete category by Id
operationId
deleteArticleCategory — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
category-id required |
Responses 6
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/article-categories/{category-id}key / tokenGet category by id
operationId
getArticleCategoryById — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
category-id required |
Responses 5
200 Return successfully show body
application/json ArticleCategory
idstring read-only example: 1Id of the category. Does not need to be included when creating article categorynameDEstring required example: German nameName of the category in GermannameENstring example: English nameName of the category in EnglishnameFRstring example: French nameName of the category in FrenchnameITstring example: Italian nameName of the category in Italianorderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article category.activebooleanIndicates if the category is active or notimageIdstring read-only example: 1Image Id of the category. Does not need to be included when creating article category_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
PUT/core/latest/article-categories/{category-id}key / tokenUpdate category by Id
operationId
updateArticleCategory — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
category-id required |
Request body
application/json ArticleCategory
idstring read-only example: 1Id of the category. Does not need to be included when creating article categorynameDEstring required example: German nameName of the category in GermannameENstring example: English nameName of the category in EnglishnameFRstring example: French nameName of the category in FrenchnameITstring example: Italian nameName of the category in Italianorderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article category.activebooleanIndicates if the category is active or notimageIdstring read-only example: 1Image Id of the category. Does not need to be included when creating article category_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
Responses 6
200 Updated successfully show body
application/json ArticleCategory
idstring read-only example: 1Id of the category. Does not need to be included when creating article categorynameDEstring required example: German nameName of the category in GermannameENstring example: English nameName of the category in EnglishnameFRstring example: French nameName of the category in FrenchnameITstring example: Italian nameName of the category in Italianorderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article category.activebooleanIndicates if the category is active or notimageIdstring read-only example: 1Image Id of the category. Does not need to be included when creating article category_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/latest/article-categories/{category-id}/assign-to-articleskey / tokenAssign category to articles
Only the articles entered in the request body will have the specified article category added to their respective filters.
Other articles will not be affected
operationId
assignArticleCategoryToArticles — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
category-id required |
Request body
application/json CategoryAssigningGroup
articleIdsForOnlineShoparray of stringArticle ids need to be assigned with a online shop categoryarticleIdsForBookingarray of stringArticle ids need to be assigned with a booking categoryarticleIdsForPosarray of stringArticle ids need to be assigned with a pos category
Responses 6
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/article-filterskey / tokenSearch article filters
offset and limit; the size of the whole filtered collection is returned in the X-Total-Count response header, so a caller knows how far it still has to walk. Omitting limit returns the whole collection, as before.operationId
listArticleFilters — the method name a generated client uses.
Required permission
ARTICLE_READ_ONLY
Available through: Administrator, External user, Mitarbeiter und Lohn, Kundenbeziehungen, Zeit- und Materialrapporte, Online Terminbuchung
Parameters 6
| Name | Description |
|---|---|
active-status | Active status |
keyword | Renamed to search-key. This name is accepted until 2027-09-01; when both are sent, search-key wins. After that date, a request sending keyword without search-key is rejected with 400.Deprecated — use search-key instead. Free-text search over the name. This name has no length limit and search-key rejects values over 256 characters, so shorten anything longer before migrating. |
limit | Limit filters returned |
offset | 0-based pagination offset - the number of rows to skip before the returned page. Defaults to 0. Combine with limit to walk the full collection; the total to walk is returned in the X-Total-Count response header. |
search-key | Free-text search over the name, matched case-insensitively in the language selected by Accept-Language. Maximum length 256 characters. |
Accept-Language | Language code is used for filtering by the keyword with multilingual |
Responses 4
200 Filters show body
application/json array of ArticleFilter
Array of ArticleFilter.
idstring read-only example: 1Id of the filter. Does not need to be included when creating article filternameDEstring required example: shopName of the filter in germannameENstring example: shopName of the filter in englishnameFRstring example: shopName of the filter in frenchnameITstring example: shopName of the filter in italyorderinteger (int32) format: int32Order of this filter.
Does not need to be included when creating article filter.activebooleanIndicates if the filter is active or notimageIdstring read-onlyThe image id of the filter. Does not need to be included when creating article_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/latest/article-filterskey / tokenCreate a article filter
operationId
createArticleFilter — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Request body required
application/json ArticleFilter
idstring read-only example: 1Id of the filter. Does not need to be included when creating article filternameDEstring required example: shopName of the filter in germannameENstring example: shopName of the filter in englishnameFRstring example: shopName of the filter in frenchnameITstring example: shopName of the filter in italyorderinteger (int32) format: int32Order of this filter.
Does not need to be included when creating article filter.activebooleanIndicates if the filter is active or notimageIdstring read-onlyThe image id of the filter. Does not need to be included when creating article_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
Responses 5
201 Filter created show body
application/json ArticleFilter
idstring read-only example: 1Id of the filter. Does not need to be included when creating article filternameDEstring required example: shopName of the filter in germannameENstring example: shopName of the filter in englishnameFRstring example: shopName of the filter in frenchnameITstring example: shopName of the filter in italyorderinteger (int32) format: int32Order of this filter.
Does not need to be included when creating article filter.activebooleanIndicates if the filter is active or notimageIdstring read-onlyThe image id of the filter. Does not need to be included when creating article_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
DELETE/core/latest/article-filters/{filter-id}key / tokenDelete article filter by id
operationId
deleteArticleFilter — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
filter-id required |
Responses 5
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/article-filters/{filter-id}key / tokenGet article filter by id
operationId
getArticleFilterById — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
filter-id required |
Responses 5
200 Filter show body
application/json ArticleFilter
idstring read-only example: 1Id of the filter. Does not need to be included when creating article filternameDEstring required example: shopName of the filter in germannameENstring example: shopName of the filter in englishnameFRstring example: shopName of the filter in frenchnameITstring example: shopName of the filter in italyorderinteger (int32) format: int32Order of this filter.
Does not need to be included when creating article filter.activebooleanIndicates if the filter is active or notimageIdstring read-onlyThe image id of the filter. Does not need to be included when creating article_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
PUT/core/latest/article-filters/{filter-id}key / tokenUpdate article filter by id
operationId
updateArticleFilter — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
filter-id required |
Request body required
application/json ArticleFilter
idstring read-only example: 1Id of the filter. Does not need to be included when creating article filternameDEstring required example: shopName of the filter in germannameENstring example: shopName of the filter in englishnameFRstring example: shopName of the filter in frenchnameITstring example: shopName of the filter in italyorderinteger (int32) format: int32Order of this filter.
Does not need to be included when creating article filter.activebooleanIndicates if the filter is active or notimageIdstring read-onlyThe image id of the filter. Does not need to be included when creating article_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
Responses 6
200 Update successfully show body
application/json ArticleFilter
idstring read-only example: 1Id of the filter. Does not need to be included when creating article filternameDEstring required example: shopName of the filter in germannameENstring example: shopName of the filter in englishnameFRstring example: shopName of the filter in frenchnameITstring example: shopName of the filter in italyorderinteger (int32) format: int32Order of this filter.
Does not need to be included when creating article filter.activebooleanIndicates if the filter is active or notimageIdstring read-onlyThe image id of the filter. Does not need to be included when creating article_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/latest/article-filters/{filter-id}/assign-to-articleskey / tokenAssign filter to articles
Only the articles entered in the request body will have the specified article filter added to their respective filters.
Other articles will not be affected
operationId
assignArticleFilterToArticles — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
filter-id required |
Request body required
application/json FilterAssigningGroup1
assignedPosArticleIdsarray of stringArticle ids will have the filter as a pos filterassignedOnlineShopArticleIdsarray of stringArticle ids will have the filter as a online shop filterassignedBookingArticleIdsarray of stringArticle ids will have the filter as a booking filter
Responses 6
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/articleskey / tokenReturns article list of a company
operationId
listArticles — the method name a generated client uses.
Required permission
ARTICLE_READ_ONLY
Available through: Administrator, External user, Mitarbeiter und Lohn, Kundenbeziehungen, Zeit- und Materialrapporte, Online Terminbuchung
Parameters 3
| Name | Description |
|---|---|
limit | Define the limit of the article list that this API returns. For example, if a company have 20 articles in total, and this limit parameter is 5, and the offset parameter is 0, then this API will return article list containing the first 5 articles If not set, then default value of 48 is used |
offset | Define which position to start getting article list. For example, if a company have 20 articles in total, and this offset parameter is 5, then this API will return article list from the 5th article. If not set, then default value of 0 is used |
product-type | Filter articles with this product type. Allowed values: SERVICE, PRODUCTION, TRADE, OTHER, GIFT_CARD, PREPAYMENT |
Responses 4
200 Articles show body
application/json array of Article
Array of Article.
idstring read-only example: 1Id of the article. Does not need to be included when creating articlenameDEstring requiredName of the article in GermannameENstringName of the article in EnglishnameFRstringName of the article in FrenchnameITstringName of the article in ItaliandescriptionDEstringDescription of the article in GermandescriptionENstringDescription of the article in EnglishdescriptionFRstringDescription of the article in FrenchdescriptionITstringDescription of the article in ItalianextendedDescriptionDEstringExtended description of the article in GermanextendedDescriptionENstringExtended description of the article in EnglishextendedDescriptionFRstringExtended description of the article in FrenchextendedDescriptionITstringExtended description of the article in ItalianunitDEstring requiredUnit of the article in GermanunitENstringUnit of the article in EnglishunitFRstringUnit of the article in FrenchunitITstringUnit of the article in ItalianbarcodestringBarcode of the articleusePosbooleanDecides if this article is used for POS or notpricePeriodsarray of PricePeriodPrice periods for the article.
If article only has single price period, ignore and don't include validFrom and validTo in the PricePeriod.
If article have different prices valid for different periods, set value for validFrom for each price period or that price period is ignored.show fields
Array of
PricePeriod.validFromstring (date) format: dateThe price period is valid from this timevalidTostring (date) format: date read-onlyThe price period is invalid after this timepricenumber pattern: ^\d{1,19}([.]\d{1,2})?$The price used for an article within this price periodpriceCategoriesarray of PriceCategoryList of price categories effective for this price periodshow fields
Array of
PriceCategory.namestringName of the price categorypricenumber pattern: ^\d{1,19}([.]\d{1,2})?$Effective price of this price category
optionsarray of ArticleOptionOptions for the article. If specify, variants for this article will be generated.show fields
Array of
ArticleOption.namestring example: colorName of the article optionvaluesarray of stringAvailable choices for the article option
imageHrefsarray of string read-onlyReference uris for the images of this article if present.isArticleSetbooleanDecides if this article is an article setarticleSetNamestringName of the article set. Does not need to be included if article is not an article set.defaultQuantitynumber pattern: ^\d{1,19}([.]\d{1,2})?$The default quantity of the articleaccountingTagsarray of string requiredTags used for accounting. Articles with the same tag, same VAT case and same VAT rate are grouped together in the postingarticleNumberstring required example: ABC123Article numberhasVariantbooleanSpecify if the article has variants or notincludedInArticleSetsarray of stringNames of the article sets that the article is included in.
If the article have some variants, then only the variants will show the article set name they belong to, not the parent article (null value is shown).sellInOnlineShopbooleanSpecify if the article is able to be sold on the Online shop or notisAdultArticlebooleanSpecify if the article is only used for adult or notproductTypeobject requiredType of product used for an articleposCategoriesarray of ArticleCategoryRefCategories used for Point of Sale of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
posFiltersarray of ArticleFilterRefFilters used for Point of Sale of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopCategoriesarray of ArticleCategoryRefCategories used for Online shop of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopFiltersarray of ArticleFilterRefFilters used for Online shop of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
bookingCategoriesarray of ArticleCategoryRefCategories used for Online Booking of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
searchTagsarray of stringSearch tags make it easier for your customer to find your product in the online shopshippingInfoobjectshipping information for an article.show fields
shippingAttributesarray of stringList of attributes used for shippingweightUnitstringWeight unit used for shipping of the articleAllowed values:GRAM,KILOGRAMdimensionUnitstringDimension unit used for shipping of the articleAllowed values:CENTIMETER,METERweightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Weight of this articlewidthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Width of this articleheightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Height of this articledepthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Depth of this article
_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
vatsarray of ArticleVatVAT information for the articleshow fields
Array of
ArticleVat.vatTypeobject example: NORMALArticle vat type of the articlevatCasestring example: TAXABLE_SUPPLYVAT case of the articlevatCodestring example: 1VAT code of the article VATsss1boolean example: FalseReporting net tax rate with SSS1 optionsss2boolean example: FalseReporting net tax rate with SSS2 optionreportingNetTaxRateboolean example: FalseUsing VAT reporting net tax rate optionexcludeVatboolean example: FalseUsing exclude VAT option
numberTypeobjectInventory Number Type
Use either NO_NUMBER or SERIAL_NUMBER
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/latest/articleskey / tokenCreate a new article
operationId
createArticle — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Request body required
application/json Article
idstring read-only example: 1Id of the article. Does not need to be included when creating articlenameDEstring requiredName of the article in GermannameENstringName of the article in EnglishnameFRstringName of the article in FrenchnameITstringName of the article in ItaliandescriptionDEstringDescription of the article in GermandescriptionENstringDescription of the article in EnglishdescriptionFRstringDescription of the article in FrenchdescriptionITstringDescription of the article in ItalianextendedDescriptionDEstringExtended description of the article in GermanextendedDescriptionENstringExtended description of the article in EnglishextendedDescriptionFRstringExtended description of the article in FrenchextendedDescriptionITstringExtended description of the article in ItalianunitDEstring requiredUnit of the article in GermanunitENstringUnit of the article in EnglishunitFRstringUnit of the article in FrenchunitITstringUnit of the article in ItalianbarcodestringBarcode of the articleusePosbooleanDecides if this article is used for POS or notpricePeriodsarray of PricePeriodPrice periods for the article.
If article only has single price period, ignore and don't include validFrom and validTo in the PricePeriod.
If article have different prices valid for different periods, set value for validFrom for each price period or that price period is ignored.show fields
Array of
PricePeriod.validFromstring (date) format: dateThe price period is valid from this timevalidTostring (date) format: date read-onlyThe price period is invalid after this timepricenumber pattern: ^\d{1,19}([.]\d{1,2})?$The price used for an article within this price periodpriceCategoriesarray of PriceCategoryList of price categories effective for this price periodshow fields
Array of
PriceCategory.namestringName of the price categorypricenumber pattern: ^\d{1,19}([.]\d{1,2})?$Effective price of this price category
optionsarray of ArticleOptionOptions for the article. If specify, variants for this article will be generated.show fields
Array of
ArticleOption.namestring example: colorName of the article optionvaluesarray of stringAvailable choices for the article option
imageHrefsarray of string read-onlyReference uris for the images of this article if present.isArticleSetbooleanDecides if this article is an article setarticleSetNamestringName of the article set. Does not need to be included if article is not an article set.defaultQuantitynumber pattern: ^\d{1,19}([.]\d{1,2})?$The default quantity of the articleaccountingTagsarray of string requiredTags used for accounting. Articles with the same tag, same VAT case and same VAT rate are grouped together in the postingarticleNumberstring required example: ABC123Article numberhasVariantbooleanSpecify if the article has variants or notincludedInArticleSetsarray of stringNames of the article sets that the article is included in.
If the article have some variants, then only the variants will show the article set name they belong to, not the parent article (null value is shown).sellInOnlineShopbooleanSpecify if the article is able to be sold on the Online shop or notisAdultArticlebooleanSpecify if the article is only used for adult or notproductTypeobject requiredType of product used for an articleposCategoriesarray of ArticleCategoryRefCategories used for Point of Sale of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
posFiltersarray of ArticleFilterRefFilters used for Point of Sale of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopCategoriesarray of ArticleCategoryRefCategories used for Online shop of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopFiltersarray of ArticleFilterRefFilters used for Online shop of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
bookingCategoriesarray of ArticleCategoryRefCategories used for Online Booking of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
searchTagsarray of stringSearch tags make it easier for your customer to find your product in the online shopshippingInfoobjectshipping information for an article.show fields
shippingAttributesarray of stringList of attributes used for shippingweightUnitstringWeight unit used for shipping of the articleAllowed values:GRAM,KILOGRAMdimensionUnitstringDimension unit used for shipping of the articleAllowed values:CENTIMETER,METERweightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Weight of this articlewidthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Width of this articleheightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Height of this articledepthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Depth of this article
_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
vatsarray of ArticleVatVAT information for the articleshow fields
Array of
ArticleVat.vatTypeobject example: NORMALArticle vat type of the articlevatCasestring example: TAXABLE_SUPPLYVAT case of the articlevatCodestring example: 1VAT code of the article VATsss1boolean example: FalseReporting net tax rate with SSS1 optionsss2boolean example: FalseReporting net tax rate with SSS2 optionreportingNetTaxRateboolean example: FalseUsing VAT reporting net tax rate optionexcludeVatboolean example: FalseUsing exclude VAT option
numberTypeobjectInventory Number Type
Use either NO_NUMBER or SERIAL_NUMBER
Responses 5
201 Article created show body
application/json Article
idstring read-only example: 1Id of the article. Does not need to be included when creating articlenameDEstring requiredName of the article in GermannameENstringName of the article in EnglishnameFRstringName of the article in FrenchnameITstringName of the article in ItaliandescriptionDEstringDescription of the article in GermandescriptionENstringDescription of the article in EnglishdescriptionFRstringDescription of the article in FrenchdescriptionITstringDescription of the article in ItalianextendedDescriptionDEstringExtended description of the article in GermanextendedDescriptionENstringExtended description of the article in EnglishextendedDescriptionFRstringExtended description of the article in FrenchextendedDescriptionITstringExtended description of the article in ItalianunitDEstring requiredUnit of the article in GermanunitENstringUnit of the article in EnglishunitFRstringUnit of the article in FrenchunitITstringUnit of the article in ItalianbarcodestringBarcode of the articleusePosbooleanDecides if this article is used for POS or notpricePeriodsarray of PricePeriodPrice periods for the article.
If article only has single price period, ignore and don't include validFrom and validTo in the PricePeriod.
If article have different prices valid for different periods, set value for validFrom for each price period or that price period is ignored.show fields
Array of
PricePeriod.validFromstring (date) format: dateThe price period is valid from this timevalidTostring (date) format: date read-onlyThe price period is invalid after this timepricenumber pattern: ^\d{1,19}([.]\d{1,2})?$The price used for an article within this price periodpriceCategoriesarray of PriceCategoryList of price categories effective for this price periodshow fields
Array of
PriceCategory.namestringName of the price categorypricenumber pattern: ^\d{1,19}([.]\d{1,2})?$Effective price of this price category
optionsarray of ArticleOptionOptions for the article. If specify, variants for this article will be generated.show fields
Array of
ArticleOption.namestring example: colorName of the article optionvaluesarray of stringAvailable choices for the article option
imageHrefsarray of string read-onlyReference uris for the images of this article if present.isArticleSetbooleanDecides if this article is an article setarticleSetNamestringName of the article set. Does not need to be included if article is not an article set.defaultQuantitynumber pattern: ^\d{1,19}([.]\d{1,2})?$The default quantity of the articleaccountingTagsarray of string requiredTags used for accounting. Articles with the same tag, same VAT case and same VAT rate are grouped together in the postingarticleNumberstring required example: ABC123Article numberhasVariantbooleanSpecify if the article has variants or notincludedInArticleSetsarray of stringNames of the article sets that the article is included in.
If the article have some variants, then only the variants will show the article set name they belong to, not the parent article (null value is shown).sellInOnlineShopbooleanSpecify if the article is able to be sold on the Online shop or notisAdultArticlebooleanSpecify if the article is only used for adult or notproductTypeobject requiredType of product used for an articleposCategoriesarray of ArticleCategoryRefCategories used for Point of Sale of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
posFiltersarray of ArticleFilterRefFilters used for Point of Sale of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopCategoriesarray of ArticleCategoryRefCategories used for Online shop of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopFiltersarray of ArticleFilterRefFilters used for Online shop of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
bookingCategoriesarray of ArticleCategoryRefCategories used for Online Booking of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
searchTagsarray of stringSearch tags make it easier for your customer to find your product in the online shopshippingInfoobjectshipping information for an article.show fields
shippingAttributesarray of stringList of attributes used for shippingweightUnitstringWeight unit used for shipping of the articleAllowed values:GRAM,KILOGRAMdimensionUnitstringDimension unit used for shipping of the articleAllowed values:CENTIMETER,METERweightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Weight of this articlewidthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Width of this articleheightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Height of this articledepthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Depth of this article
_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
vatsarray of ArticleVatVAT information for the articleshow fields
Array of
ArticleVat.vatTypeobject example: NORMALArticle vat type of the articlevatCasestring example: TAXABLE_SUPPLYVAT case of the articlevatCodestring example: 1VAT code of the article VATsss1boolean example: FalseReporting net tax rate with SSS1 optionsss2boolean example: FalseReporting net tax rate with SSS2 optionreportingNetTaxRateboolean example: FalseUsing VAT reporting net tax rate optionexcludeVatboolean example: FalseUsing exclude VAT option
numberTypeobjectInventory Number Type
Use either NO_NUMBER or SERIAL_NUMBER
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/articles/article-and-variantskey / tokenReturns list of articles and treat a variant combination same as an article
operationId
listArticlesWithVariants — the method name a generated client uses.
Required permission
ARTICLE_READ_ONLY
Available through: Administrator, External user, Mitarbeiter und Lohn, Kundenbeziehungen, Zeit- und Materialrapporte, Online Terminbuchung
Parameters 6
| Name | Description |
|---|---|
include-quantity | flag to include quantity in the result. |
limit | Define the limit of the article list that this API returns. For example, if a company have 20 articles in total, and this limit parameter is 5, and the offset parameter is 0, then this API will return article list containing the first 5 articles If not set, then default value of 48 is used |
offset | Define which position to start getting article list. For example, if a company have 20 articles in total, and this offset parameter is 5, then this API will return article list from the 5th article. If not set, then default value of 0 is used |
sell-in-booking | flag to define sellable article for booking. |
sell-in-online-shop | flag to query articles that are sold in online shop. |
use-pos | flag to define article that are using in POS. |
Responses 4
200 List of article and variant show body
application/json array of ArticleAndVariant
Array of ArticleAndVariant.
idstring example: 1Id of the articlenamestringName of the articledescriptionstringDescription for the articleextendedDescriptionstringThis description will be used for example in your online shopunitstringDefine how the article is count bybarcodestringBarcode of the articledefaultQuantitynumberThe default quantity of the articleaccountingTagsarray of stringTags used for accounting. Articles with the same tag, same VAT case and same VAT rate are grouped together in the postingarticleNumberstring example: ABC123Number of the articleproductTypeobjectType of product used for an articlepriceCategoriesarray of ArticlePriceCategoryPrice categories of the articleshow fields
Array of
ArticlePriceCategory.namestringpriceIncludeVatnumberpriceExcludeVatnumber
vatRatenumberVat rate of the articlearticleTypeobjectArticle typepriceIncludeVatnumberprice include vatpriceExcludeVatnumberprice exclude vathasInventorybooleanThis article has inventory or notquantityInStocknumberQuantity in stockoptionValuesarray of stringVariant option of this articleableToOrderOutOfStockbooleanFlag define the article is allow to order out of stock
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/articles/article-numberskey / tokenFind articles by article numbers
operationId
listArticlesByArticleNumbers — the method name a generated client uses.
Required permission
ARTICLE_READ_ONLY
Available through: Administrator, External user, Mitarbeiter und Lohn, Kundenbeziehungen, Zeit- und Materialrapporte, Online Terminbuchung
Parameters 4
| Name | Description |
|---|---|
article-numbers | Article numbers to look up. Repeat the parameter for each value (e.g. `?article-numbers=ART-001&article-numbers=ART-002`). At most 100 entries; each entry up to 64 characters. |
export-vat | If `true`, return ABROAD (export) VAT rate; otherwise NORMAL. Defaults to false. |
price-date | Date on which prices are evaluated. Format: yyyy-MM-dd. Defaults to today when omitted. |
should-validate-vat | If `true`, cross-validate each row's VAT code against the company's VAT setup on `price-date`. Defaults to false. |
Responses 6
200 Matching articles show body
application/json array of ArticleAndVariant
Array of ArticleAndVariant.
idstring example: 1Id of the articlenamestringName of the articledescriptionstringDescription for the articleextendedDescriptionstringThis description will be used for example in your online shopunitstringDefine how the article is count bybarcodestringBarcode of the articledefaultQuantitynumberThe default quantity of the articleaccountingTagsarray of stringTags used for accounting. Articles with the same tag, same VAT case and same VAT rate are grouped together in the postingarticleNumberstring example: ABC123Number of the articleproductTypeobjectType of product used for an articlepriceCategoriesarray of ArticlePriceCategoryPrice categories of the articleshow fields
Array of
ArticlePriceCategory.namestringpriceIncludeVatnumberpriceExcludeVatnumber
vatRatenumberVat rate of the articlearticleTypeobjectArticle typepriceIncludeVatnumberprice include vatpriceExcludeVatnumberprice exclude vathasInventorybooleanThis article has inventory or notquantityInStocknumberQuantity in stockoptionValuesarray of stringVariant option of this articleableToOrderOutOfStockbooleanFlag define the article is allow to order out of stock
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/latest/articles/bulkkey / tokenCreate articles
operationId
createArticlesBulk — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Request body required
application/json array of Article
Array of Article.
idstring read-only example: 1Id of the article. Does not need to be included when creating articlenameDEstring requiredName of the article in GermannameENstringName of the article in EnglishnameFRstringName of the article in FrenchnameITstringName of the article in ItaliandescriptionDEstringDescription of the article in GermandescriptionENstringDescription of the article in EnglishdescriptionFRstringDescription of the article in FrenchdescriptionITstringDescription of the article in ItalianextendedDescriptionDEstringExtended description of the article in GermanextendedDescriptionENstringExtended description of the article in EnglishextendedDescriptionFRstringExtended description of the article in FrenchextendedDescriptionITstringExtended description of the article in ItalianunitDEstring requiredUnit of the article in GermanunitENstringUnit of the article in EnglishunitFRstringUnit of the article in FrenchunitITstringUnit of the article in ItalianbarcodestringBarcode of the articleusePosbooleanDecides if this article is used for POS or notpricePeriodsarray of PricePeriodPrice periods for the article.
If article only has single price period, ignore and don't include validFrom and validTo in the PricePeriod.
If article have different prices valid for different periods, set value for validFrom for each price period or that price period is ignored.show fields
Array of
PricePeriod.validFromstring (date) format: dateThe price period is valid from this timevalidTostring (date) format: date read-onlyThe price period is invalid after this timepricenumber pattern: ^\d{1,19}([.]\d{1,2})?$The price used for an article within this price periodpriceCategoriesarray of PriceCategoryList of price categories effective for this price periodshow fields
Array of
PriceCategory.namestringName of the price categorypricenumber pattern: ^\d{1,19}([.]\d{1,2})?$Effective price of this price category
optionsarray of ArticleOptionOptions for the article. If specify, variants for this article will be generated.show fields
Array of
ArticleOption.namestring example: colorName of the article optionvaluesarray of stringAvailable choices for the article option
imageHrefsarray of string read-onlyReference uris for the images of this article if present.isArticleSetbooleanDecides if this article is an article setarticleSetNamestringName of the article set. Does not need to be included if article is not an article set.defaultQuantitynumber pattern: ^\d{1,19}([.]\d{1,2})?$The default quantity of the articleaccountingTagsarray of string requiredTags used for accounting. Articles with the same tag, same VAT case and same VAT rate are grouped together in the postingarticleNumberstring required example: ABC123Article numberhasVariantbooleanSpecify if the article has variants or notincludedInArticleSetsarray of stringNames of the article sets that the article is included in.
If the article have some variants, then only the variants will show the article set name they belong to, not the parent article (null value is shown).sellInOnlineShopbooleanSpecify if the article is able to be sold on the Online shop or notisAdultArticlebooleanSpecify if the article is only used for adult or notproductTypeobject requiredType of product used for an articleposCategoriesarray of ArticleCategoryRefCategories used for Point of Sale of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
posFiltersarray of ArticleFilterRefFilters used for Point of Sale of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopCategoriesarray of ArticleCategoryRefCategories used for Online shop of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopFiltersarray of ArticleFilterRefFilters used for Online shop of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
bookingCategoriesarray of ArticleCategoryRefCategories used for Online Booking of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
searchTagsarray of stringSearch tags make it easier for your customer to find your product in the online shopshippingInfoobjectshipping information for an article.show fields
shippingAttributesarray of stringList of attributes used for shippingweightUnitstringWeight unit used for shipping of the articleAllowed values:GRAM,KILOGRAMdimensionUnitstringDimension unit used for shipping of the articleAllowed values:CENTIMETER,METERweightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Weight of this articlewidthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Width of this articleheightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Height of this articledepthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Depth of this article
_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
vatsarray of ArticleVatVAT information for the articleshow fields
Array of
ArticleVat.vatTypeobject example: NORMALArticle vat type of the articlevatCasestring example: TAXABLE_SUPPLYVAT case of the articlevatCodestring example: 1VAT code of the article VATsss1boolean example: FalseReporting net tax rate with SSS1 optionsss2boolean example: FalseReporting net tax rate with SSS2 optionreportingNetTaxRateboolean example: FalseUsing VAT reporting net tax rate optionexcludeVatboolean example: FalseUsing exclude VAT option
numberTypeobjectInventory Number Type
Use either NO_NUMBER or SERIAL_NUMBER
Responses 4
200 Article created show body
application/json BulkArticleCreatingResponse
numberOfSuccessinteger (int32) format: int32 example: 2Number of articles saved successfullynumberOfFailinteger (int32) format: int32 example: 2Number of articles saved unsuccessfullysuccessarray of ArticleA list of saved articlesshow fields
Array of
Article.idstring read-only example: 1Id of the article. Does not need to be included when creating articlenameDEstring requiredName of the article in GermannameENstringName of the article in EnglishnameFRstringName of the article in FrenchnameITstringName of the article in ItaliandescriptionDEstringDescription of the article in GermandescriptionENstringDescription of the article in EnglishdescriptionFRstringDescription of the article in FrenchdescriptionITstringDescription of the article in ItalianextendedDescriptionDEstringExtended description of the article in GermanextendedDescriptionENstringExtended description of the article in EnglishextendedDescriptionFRstringExtended description of the article in FrenchextendedDescriptionITstringExtended description of the article in ItalianunitDEstring requiredUnit of the article in GermanunitENstringUnit of the article in EnglishunitFRstringUnit of the article in FrenchunitITstringUnit of the article in ItalianbarcodestringBarcode of the articleusePosbooleanDecides if this article is used for POS or notpricePeriodsarray of PricePeriodPrice periods for the article.
If article only has single price period, ignore and don't include validFrom and validTo in the PricePeriod.
If article have different prices valid for different periods, set value for validFrom for each price period or that price period is ignored.show fields
Array of
PricePeriod.validFromstring (date) format: dateThe price period is valid from this timevalidTostring (date) format: date read-onlyThe price period is invalid after this timepricenumber pattern: ^\d{1,19}([.]\d{1,2})?$The price used for an article within this price periodpriceCategoriesarray of PriceCategoryList of price categories effective for this price periodshow fields
Array of
PriceCategory.namestringName of the price categorypricenumber pattern: ^\d{1,19}([.]\d{1,2})?$Effective price of this price category
optionsarray of ArticleOptionOptions for the article. If specify, variants for this article will be generated.show fields
Array of
ArticleOption.namestring example: colorName of the article optionvaluesarray of stringAvailable choices for the article option
imageHrefsarray of string read-onlyReference uris for the images of this article if present.isArticleSetbooleanDecides if this article is an article setarticleSetNamestringName of the article set. Does not need to be included if article is not an article set.defaultQuantitynumber pattern: ^\d{1,19}([.]\d{1,2})?$The default quantity of the articleaccountingTagsarray of string requiredTags used for accounting. Articles with the same tag, same VAT case and same VAT rate are grouped together in the postingarticleNumberstring required example: ABC123Article numberhasVariantbooleanSpecify if the article has variants or notincludedInArticleSetsarray of stringNames of the article sets that the article is included in.
If the article have some variants, then only the variants will show the article set name they belong to, not the parent article (null value is shown).sellInOnlineShopbooleanSpecify if the article is able to be sold on the Online shop or notisAdultArticlebooleanSpecify if the article is only used for adult or notproductTypeobject requiredType of product used for an articleposCategoriesarray of ArticleCategoryRefCategories used for Point of Sale of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
posFiltersarray of ArticleFilterRefFilters used for Point of Sale of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopCategoriesarray of ArticleCategoryRefCategories used for Online shop of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopFiltersarray of ArticleFilterRefFilters used for Online shop of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
bookingCategoriesarray of ArticleCategoryRefCategories used for Online Booking of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
searchTagsarray of stringSearch tags make it easier for your customer to find your product in the online shopshippingInfoobjectshipping information for an article.show fields
shippingAttributesarray of stringList of attributes used for shippingweightUnitstringWeight unit used for shipping of the articleAllowed values:GRAM,KILOGRAMdimensionUnitstringDimension unit used for shipping of the articleAllowed values:CENTIMETER,METERweightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Weight of this articlewidthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Width of this articleheightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Height of this articledepthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Depth of this article
_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
vatsarray of ArticleVatVAT information for the articleshow fields
Array of
ArticleVat.vatTypeobject example: NORMALArticle vat type of the articlevatCasestring example: TAXABLE_SUPPLYVAT case of the articlevatCodestring example: 1VAT code of the article VATsss1boolean example: FalseReporting net tax rate with SSS1 optionsss2boolean example: FalseReporting net tax rate with SSS2 optionreportingNetTaxRateboolean example: FalseUsing VAT reporting net tax rate optionexcludeVatboolean example: FalseUsing exclude VAT option
numberTypeobjectInventory Number Type
Use either NO_NUMBER or SERIAL_NUMBER
failarray of PublicApiFailArticleA list of unsaved articles with error messageshow fields
Array of
PublicApiFailArticle.errorCodestring example: article.number.could.not.be.duplicatedError codeerrorMessagestring example: Article number could not be duplicatedError messageunsavedArticleobjectAn article.show fields
idstring read-only example: 1Id of the article. Does not need to be included when creating articlenameDEstring requiredName of the article in GermannameENstringName of the article in EnglishnameFRstringName of the article in FrenchnameITstringName of the article in ItaliandescriptionDEstringDescription of the article in GermandescriptionENstringDescription of the article in EnglishdescriptionFRstringDescription of the article in FrenchdescriptionITstringDescription of the article in ItalianextendedDescriptionDEstringExtended description of the article in GermanextendedDescriptionENstringExtended description of the article in EnglishextendedDescriptionFRstringExtended description of the article in FrenchextendedDescriptionITstringExtended description of the article in ItalianunitDEstring requiredUnit of the article in GermanunitENstringUnit of the article in EnglishunitFRstringUnit of the article in FrenchunitITstringUnit of the article in ItalianbarcodestringBarcode of the articleusePosbooleanDecides if this article is used for POS or notpricePeriodsarray of PricePeriodPrice periods for the article.
If article only has single price period, ignore and don't include validFrom and validTo in the PricePeriod.
If article have different prices valid for different periods, set value for validFrom for each price period or that price period is ignored.show fields
Array of
PricePeriod.validFromstring (date) format: dateThe price period is valid from this timevalidTostring (date) format: date read-onlyThe price period is invalid after this timepricenumber pattern: ^\d{1,19}([.]\d{1,2})?$The price used for an article within this price periodpriceCategoriesarray of PriceCategoryList of price categories effective for this price periodshow fields
Array of
PriceCategory.namestringName of the price categorypricenumber pattern: ^\d{1,19}([.]\d{1,2})?$Effective price of this price category
optionsarray of ArticleOptionOptions for the article. If specify, variants for this article will be generated.show fields
Array of
ArticleOption.namestring example: colorName of the article optionvaluesarray of stringAvailable choices for the article option
imageHrefsarray of string read-onlyReference uris for the images of this article if present.isArticleSetbooleanDecides if this article is an article setarticleSetNamestringName of the article set. Does not need to be included if article is not an article set.defaultQuantitynumber pattern: ^\d{1,19}([.]\d{1,2})?$The default quantity of the articleaccountingTagsarray of string requiredTags used for accounting. Articles with the same tag, same VAT case and same VAT rate are grouped together in the postingarticleNumberstring required example: ABC123Article numberhasVariantbooleanSpecify if the article has variants or notincludedInArticleSetsarray of stringNames of the article sets that the article is included in.
If the article have some variants, then only the variants will show the article set name they belong to, not the parent article (null value is shown).sellInOnlineShopbooleanSpecify if the article is able to be sold on the Online shop or notisAdultArticlebooleanSpecify if the article is only used for adult or notproductTypeobject requiredType of product used for an articleposCategoriesarray of ArticleCategoryRefCategories used for Point of Sale of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
posFiltersarray of ArticleFilterRefFilters used for Point of Sale of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopCategoriesarray of ArticleCategoryRefCategories used for Online shop of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopFiltersarray of ArticleFilterRefFilters used for Online shop of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
bookingCategoriesarray of ArticleCategoryRefCategories used for Online Booking of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
searchTagsarray of stringSearch tags make it easier for your customer to find your product in the online shopshippingInfoobjectshipping information for an article.show fields
shippingAttributesarray of stringList of attributes used for shippingweightUnitstringWeight unit used for shipping of the articleAllowed values:GRAM,KILOGRAMdimensionUnitstringDimension unit used for shipping of the articleAllowed values:CENTIMETER,METERweightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Weight of this articlewidthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Width of this articleheightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Height of this articledepthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Depth of this article
_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
vatsarray of ArticleVatVAT information for the articleshow fields
Array of
ArticleVat.vatTypeobject example: NORMALArticle vat type of the articlevatCasestring example: TAXABLE_SUPPLYVAT case of the articlevatCodestring example: 1VAT code of the article VATsss1boolean example: FalseReporting net tax rate with SSS1 optionsss2boolean example: FalseReporting net tax rate with SSS2 optionreportingNetTaxRateboolean example: FalseUsing VAT reporting net tax rate optionexcludeVatboolean example: FalseUsing exclude VAT option
numberTypeobjectInventory Number Type
Use either NO_NUMBER or SERIAL_NUMBER
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/articles/searchkey / tokenFree-text search across sellable articles
operationId
searchSellableArticles — the method name a generated client uses.
Required permission
ARTICLE_READ_ONLY
Available through: Administrator, External user, Mitarbeiter und Lohn, Kundenbeziehungen, Zeit- und Materialrapporte, Online Terminbuchung
Parameters 7
| Name | Description |
|---|---|
export-vat | If `true`, return ABROAD (export) VAT rate; otherwise NORMAL. |
keyword | Renamed to search-key. This name is accepted until 2027-09-01; when both are sent, search-key wins. After that date, a request sending keyword without search-key is rejected with 400.Deprecated — use search-key instead. Free-text search key. Trimmed; empty/missing returns the first page unfiltered. |
limit | Page size (1–100). |
offset | 0-based pagination offset. |
price-date | Date on which prices are evaluated. Format: yyyy-MM-dd. Defaults to today when omitted. |
search-key | Free-text search key. Trimmed; empty/missing returns the first page unfiltered. |
should-validate-vat | If `true`, cross-validate each row's VAT code against the company's VAT setup on `price-date`. |
Responses 6
200 Matching articles show body
application/json array of ArticleAndVariant
Array of ArticleAndVariant.
idstring example: 1Id of the articlenamestringName of the articledescriptionstringDescription for the articleextendedDescriptionstringThis description will be used for example in your online shopunitstringDefine how the article is count bybarcodestringBarcode of the articledefaultQuantitynumberThe default quantity of the articleaccountingTagsarray of stringTags used for accounting. Articles with the same tag, same VAT case and same VAT rate are grouped together in the postingarticleNumberstring example: ABC123Number of the articleproductTypeobjectType of product used for an articlepriceCategoriesarray of ArticlePriceCategoryPrice categories of the articleshow fields
Array of
ArticlePriceCategory.namestringpriceIncludeVatnumberpriceExcludeVatnumber
vatRatenumberVat rate of the articlearticleTypeobjectArticle typepriceIncludeVatnumberprice include vatpriceExcludeVatnumberprice exclude vathasInventorybooleanThis article has inventory or notquantityInStocknumberQuantity in stockoptionValuesarray of stringVariant option of this articleableToOrderOutOfStockbooleanFlag define the article is allow to order out of stock
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
DELETE/core/latest/articles/{article-id}key / tokenDelete an article
operationId
deleteArticle — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
article-id required | Id of the article to be deleted |
Responses 7
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/articles/{article-id}key / tokenGet article by article id
operationId
getArticleById — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
article-id required |
Responses 5
200 Found article show body
application/json Article
idstring read-only example: 1Id of the article. Does not need to be included when creating articlenameDEstring requiredName of the article in GermannameENstringName of the article in EnglishnameFRstringName of the article in FrenchnameITstringName of the article in ItaliandescriptionDEstringDescription of the article in GermandescriptionENstringDescription of the article in EnglishdescriptionFRstringDescription of the article in FrenchdescriptionITstringDescription of the article in ItalianextendedDescriptionDEstringExtended description of the article in GermanextendedDescriptionENstringExtended description of the article in EnglishextendedDescriptionFRstringExtended description of the article in FrenchextendedDescriptionITstringExtended description of the article in ItalianunitDEstring requiredUnit of the article in GermanunitENstringUnit of the article in EnglishunitFRstringUnit of the article in FrenchunitITstringUnit of the article in ItalianbarcodestringBarcode of the articleusePosbooleanDecides if this article is used for POS or notpricePeriodsarray of PricePeriodPrice periods for the article.
If article only has single price period, ignore and don't include validFrom and validTo in the PricePeriod.
If article have different prices valid for different periods, set value for validFrom for each price period or that price period is ignored.show fields
Array of
PricePeriod.validFromstring (date) format: dateThe price period is valid from this timevalidTostring (date) format: date read-onlyThe price period is invalid after this timepricenumber pattern: ^\d{1,19}([.]\d{1,2})?$The price used for an article within this price periodpriceCategoriesarray of PriceCategoryList of price categories effective for this price periodshow fields
Array of
PriceCategory.namestringName of the price categorypricenumber pattern: ^\d{1,19}([.]\d{1,2})?$Effective price of this price category
optionsarray of ArticleOptionOptions for the article. If specify, variants for this article will be generated.show fields
Array of
ArticleOption.namestring example: colorName of the article optionvaluesarray of stringAvailable choices for the article option
imageHrefsarray of string read-onlyReference uris for the images of this article if present.isArticleSetbooleanDecides if this article is an article setarticleSetNamestringName of the article set. Does not need to be included if article is not an article set.defaultQuantitynumber pattern: ^\d{1,19}([.]\d{1,2})?$The default quantity of the articleaccountingTagsarray of string requiredTags used for accounting. Articles with the same tag, same VAT case and same VAT rate are grouped together in the postingarticleNumberstring required example: ABC123Article numberhasVariantbooleanSpecify if the article has variants or notincludedInArticleSetsarray of stringNames of the article sets that the article is included in.
If the article have some variants, then only the variants will show the article set name they belong to, not the parent article (null value is shown).sellInOnlineShopbooleanSpecify if the article is able to be sold on the Online shop or notisAdultArticlebooleanSpecify if the article is only used for adult or notproductTypeobject requiredType of product used for an articleposCategoriesarray of ArticleCategoryRefCategories used for Point of Sale of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
posFiltersarray of ArticleFilterRefFilters used for Point of Sale of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopCategoriesarray of ArticleCategoryRefCategories used for Online shop of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopFiltersarray of ArticleFilterRefFilters used for Online shop of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
bookingCategoriesarray of ArticleCategoryRefCategories used for Online Booking of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
searchTagsarray of stringSearch tags make it easier for your customer to find your product in the online shopshippingInfoobjectshipping information for an article.show fields
shippingAttributesarray of stringList of attributes used for shippingweightUnitstringWeight unit used for shipping of the articleAllowed values:GRAM,KILOGRAMdimensionUnitstringDimension unit used for shipping of the articleAllowed values:CENTIMETER,METERweightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Weight of this articlewidthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Width of this articleheightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Height of this articledepthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Depth of this article
_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
vatsarray of ArticleVatVAT information for the articleshow fields
Array of
ArticleVat.vatTypeobject example: NORMALArticle vat type of the articlevatCasestring example: TAXABLE_SUPPLYVAT case of the articlevatCodestring example: 1VAT code of the article VATsss1boolean example: FalseReporting net tax rate with SSS1 optionsss2boolean example: FalseReporting net tax rate with SSS2 optionreportingNetTaxRateboolean example: FalseUsing VAT reporting net tax rate optionexcludeVatboolean example: FalseUsing exclude VAT option
numberTypeobjectInventory Number Type
Use either NO_NUMBER or SERIAL_NUMBER
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
PUT/core/latest/articles/{article-id}key / tokenUpdate an existing article
operationId
updateArticle — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
article-id required |
Request body required
application/json Article
idstring read-only example: 1Id of the article. Does not need to be included when creating articlenameDEstring requiredName of the article in GermannameENstringName of the article in EnglishnameFRstringName of the article in FrenchnameITstringName of the article in ItaliandescriptionDEstringDescription of the article in GermandescriptionENstringDescription of the article in EnglishdescriptionFRstringDescription of the article in FrenchdescriptionITstringDescription of the article in ItalianextendedDescriptionDEstringExtended description of the article in GermanextendedDescriptionENstringExtended description of the article in EnglishextendedDescriptionFRstringExtended description of the article in FrenchextendedDescriptionITstringExtended description of the article in ItalianunitDEstring requiredUnit of the article in GermanunitENstringUnit of the article in EnglishunitFRstringUnit of the article in FrenchunitITstringUnit of the article in ItalianbarcodestringBarcode of the articleusePosbooleanDecides if this article is used for POS or notpricePeriodsarray of PricePeriodPrice periods for the article.
If article only has single price period, ignore and don't include validFrom and validTo in the PricePeriod.
If article have different prices valid for different periods, set value for validFrom for each price period or that price period is ignored.show fields
Array of
PricePeriod.validFromstring (date) format: dateThe price period is valid from this timevalidTostring (date) format: date read-onlyThe price period is invalid after this timepricenumber pattern: ^\d{1,19}([.]\d{1,2})?$The price used for an article within this price periodpriceCategoriesarray of PriceCategoryList of price categories effective for this price periodshow fields
Array of
PriceCategory.namestringName of the price categorypricenumber pattern: ^\d{1,19}([.]\d{1,2})?$Effective price of this price category
optionsarray of ArticleOptionOptions for the article. If specify, variants for this article will be generated.show fields
Array of
ArticleOption.namestring example: colorName of the article optionvaluesarray of stringAvailable choices for the article option
imageHrefsarray of string read-onlyReference uris for the images of this article if present.isArticleSetbooleanDecides if this article is an article setarticleSetNamestringName of the article set. Does not need to be included if article is not an article set.defaultQuantitynumber pattern: ^\d{1,19}([.]\d{1,2})?$The default quantity of the articleaccountingTagsarray of string requiredTags used for accounting. Articles with the same tag, same VAT case and same VAT rate are grouped together in the postingarticleNumberstring required example: ABC123Article numberhasVariantbooleanSpecify if the article has variants or notincludedInArticleSetsarray of stringNames of the article sets that the article is included in.
If the article have some variants, then only the variants will show the article set name they belong to, not the parent article (null value is shown).sellInOnlineShopbooleanSpecify if the article is able to be sold on the Online shop or notisAdultArticlebooleanSpecify if the article is only used for adult or notproductTypeobject requiredType of product used for an articleposCategoriesarray of ArticleCategoryRefCategories used for Point of Sale of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
posFiltersarray of ArticleFilterRefFilters used for Point of Sale of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopCategoriesarray of ArticleCategoryRefCategories used for Online shop of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopFiltersarray of ArticleFilterRefFilters used for Online shop of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
bookingCategoriesarray of ArticleCategoryRefCategories used for Online Booking of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
searchTagsarray of stringSearch tags make it easier for your customer to find your product in the online shopshippingInfoobjectshipping information for an article.show fields
shippingAttributesarray of stringList of attributes used for shippingweightUnitstringWeight unit used for shipping of the articleAllowed values:GRAM,KILOGRAMdimensionUnitstringDimension unit used for shipping of the articleAllowed values:CENTIMETER,METERweightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Weight of this articlewidthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Width of this articleheightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Height of this articledepthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Depth of this article
_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
vatsarray of ArticleVatVAT information for the articleshow fields
Array of
ArticleVat.vatTypeobject example: NORMALArticle vat type of the articlevatCasestring example: TAXABLE_SUPPLYVAT case of the articlevatCodestring example: 1VAT code of the article VATsss1boolean example: FalseReporting net tax rate with SSS1 optionsss2boolean example: FalseReporting net tax rate with SSS2 optionreportingNetTaxRateboolean example: FalseUsing VAT reporting net tax rate optionexcludeVatboolean example: FalseUsing exclude VAT option
numberTypeobjectInventory Number Type
Use either NO_NUMBER or SERIAL_NUMBER
Responses 5
200 Article updated show body
application/json Article
idstring read-only example: 1Id of the article. Does not need to be included when creating articlenameDEstring requiredName of the article in GermannameENstringName of the article in EnglishnameFRstringName of the article in FrenchnameITstringName of the article in ItaliandescriptionDEstringDescription of the article in GermandescriptionENstringDescription of the article in EnglishdescriptionFRstringDescription of the article in FrenchdescriptionITstringDescription of the article in ItalianextendedDescriptionDEstringExtended description of the article in GermanextendedDescriptionENstringExtended description of the article in EnglishextendedDescriptionFRstringExtended description of the article in FrenchextendedDescriptionITstringExtended description of the article in ItalianunitDEstring requiredUnit of the article in GermanunitENstringUnit of the article in EnglishunitFRstringUnit of the article in FrenchunitITstringUnit of the article in ItalianbarcodestringBarcode of the articleusePosbooleanDecides if this article is used for POS or notpricePeriodsarray of PricePeriodPrice periods for the article.
If article only has single price period, ignore and don't include validFrom and validTo in the PricePeriod.
If article have different prices valid for different periods, set value for validFrom for each price period or that price period is ignored.show fields
Array of
PricePeriod.validFromstring (date) format: dateThe price period is valid from this timevalidTostring (date) format: date read-onlyThe price period is invalid after this timepricenumber pattern: ^\d{1,19}([.]\d{1,2})?$The price used for an article within this price periodpriceCategoriesarray of PriceCategoryList of price categories effective for this price periodshow fields
Array of
PriceCategory.namestringName of the price categorypricenumber pattern: ^\d{1,19}([.]\d{1,2})?$Effective price of this price category
optionsarray of ArticleOptionOptions for the article. If specify, variants for this article will be generated.show fields
Array of
ArticleOption.namestring example: colorName of the article optionvaluesarray of stringAvailable choices for the article option
imageHrefsarray of string read-onlyReference uris for the images of this article if present.isArticleSetbooleanDecides if this article is an article setarticleSetNamestringName of the article set. Does not need to be included if article is not an article set.defaultQuantitynumber pattern: ^\d{1,19}([.]\d{1,2})?$The default quantity of the articleaccountingTagsarray of string requiredTags used for accounting. Articles with the same tag, same VAT case and same VAT rate are grouped together in the postingarticleNumberstring required example: ABC123Article numberhasVariantbooleanSpecify if the article has variants or notincludedInArticleSetsarray of stringNames of the article sets that the article is included in.
If the article have some variants, then only the variants will show the article set name they belong to, not the parent article (null value is shown).sellInOnlineShopbooleanSpecify if the article is able to be sold on the Online shop or notisAdultArticlebooleanSpecify if the article is only used for adult or notproductTypeobject requiredType of product used for an articleposCategoriesarray of ArticleCategoryRefCategories used for Point of Sale of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
posFiltersarray of ArticleFilterRefFilters used for Point of Sale of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopCategoriesarray of ArticleCategoryRefCategories used for Online shop of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
onlineShopFiltersarray of ArticleFilterRefFilters used for Online shop of the article
Provide only either id or href of each filter when creating Articleshow fields
Array of
ArticleFilterRef.idstring read-only example: 1Id of the filter. Does not need to be included when creating article.filter_hrefstring required write-only example: https://api.klara.ch/core/latest/article-filters/1Reference uri for an article filter. If specified, this article will be assigned to the entered article filter.nameDEstring read-only example: shopName of the filter in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the filter in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the filter in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the filter in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this filter.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the filter is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
bookingCategoriesarray of ArticleCategoryRefCategories used for Online Booking of the article
Provide only either id or href of each category when creating Articleshow fields
Array of
ArticleCategoryRef.idstring read-only example: 1Id of the category. Does not need to be included when creating articlecategory_hrefstring required write-only example: https://api.klara.ch/core/latest/article-categories/1Reference uri for an article category. If specified, this article will be assigned to the entered article category.nameDEstring read-only example: shopName of the category in german.
Does not need to be included when creating article.nameENstring read-only example: shopName of the category in english.
Does not need to be included when creating article.nameFRstring read-only example: shopName of the category in french.
Does not need to be included when creating article.nameITstring read-only example: shopName of the category in italy.
Does not need to be included when creating article.orderinteger (int32) format: int32 read-onlyOrder of this category.
Does not need to be included when creating article.activeboolean read-onlyIndicates if the category is active or not_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
searchTagsarray of stringSearch tags make it easier for your customer to find your product in the online shopshippingInfoobjectshipping information for an article.show fields
shippingAttributesarray of stringList of attributes used for shippingweightUnitstringWeight unit used for shipping of the articleAllowed values:GRAM,KILOGRAMdimensionUnitstringDimension unit used for shipping of the articleAllowed values:CENTIMETER,METERweightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Weight of this articlewidthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Width of this articleheightnumber pattern: ^\d{1,19}([.]\d{1,2})?$Height of this articledepthnumber pattern: ^\d{1,19}([.]\d{1,2})?$Depth of this article
_linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
vatsarray of ArticleVatVAT information for the articleshow fields
Array of
ArticleVat.vatTypeobject example: NORMALArticle vat type of the articlevatCasestring example: TAXABLE_SUPPLYVAT case of the articlevatCodestring example: 1VAT code of the article VATsss1boolean example: FalseReporting net tax rate with SSS1 optionsss2boolean example: FalseReporting net tax rate with SSS2 optionreportingNetTaxRateboolean example: FalseUsing VAT reporting net tax rate optionexcludeVatboolean example: FalseUsing exclude VAT option
numberTypeobjectInventory Number Type
Use either NO_NUMBER or SERIAL_NUMBER
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/articles/{article-id}/article-set-itemskey / tokenGet list of items from article set
operationId
getArticleSetWithItemsById — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
article-id required |
Responses 5
200 Return successfully show body
application/json array of PublicApiArticleSetItem
Array of PublicApiArticleSetItem.
idstring example: 1Id of the article setarticleNamestring example: Mobile phoneArticle name of the articlenumberstring example: 1The number of the articleproductTypeobject example: PRODUCTIONType of product used for an articlepricenumberPrice of the articlevatobjectVat of the articleshow fields
vatTypeobject example: NORMALArticle vat type of the articlevatCasestring example: TAXABLE_SUPPLYVAT case of the articlevatCodestring example: 1VAT code of the article VATsss1boolean example: FalseReporting net tax rate with SSS1 optionsss2boolean example: FalseReporting net tax rate with SSS2 optionreportingNetTaxRateboolean example: FalseUsing VAT reporting net tax rate optionexcludeVatboolean example: FalseUsing exclude VAT option
optionValuesarray of stringOptions for the set item if it is a varianthrefstring example: https://api.klara.ch/core/latest/articles/1Reference resource link
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/latest/articles/{article-id}/imageskey / tokenAdd an image to an article
Supported image type: PNG, JPG, JPEG
operationId
addArticleImage — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
article-id required | Id of the article to add an image to |
Request body required
multipart/form-data BinaryFile
filestring (binary) format: binary
Responses 7
201 Image added for article show body
application/json ArticleImage
imageIdstring
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
415 Unsupported Media Type
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
DELETE/core/latest/articles/{article-id}/images/{image-id}key / tokenDelete an article image
operationId
deleteArticleImage — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 2
| Name | Description |
|---|---|
article-id required | Id of the article to delete an image from |
image-id required | Id of the image to delete |
Responses 7
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 The image of the article or the article itself could not be found.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/articles/{article-id}/images/{image-id}key / tokenGet the content of an article image
operationId
getArticleImage — the method name a generated client uses.
Required permission
ARTICLE_READ_ONLY
Available through: Administrator, External user, Mitarbeiter und Lohn, Kundenbeziehungen, Zeit- und Materialrapporte, Online Terminbuchung
Parameters 2
| Name | Description |
|---|---|
article-id required | Id of the article to get an image from |
image-id required | Id of the image to get the content from |
Responses 6
200 Content of an article image show body
application/octet-stream any
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 The image of the article or the article itself could not be found.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
PUT/core/latest/articles/{article-id}/images/{image-id}key / tokenUpdate an article image
Supported image type: PNG, JPG, JPEG
operationId
updateArticleImage — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 2
| Name | Description |
|---|---|
article-id required | Id of the article to update an image |
image-id required | Id of the image to update |
Request body required
multipart/form-data BinaryFile
filestring (binary) format: binary
Responses 8
200 Image updated for article show body
application/json ArticleImage
imageIdstring
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 The image of the article or the article itself could not be found.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
415 Unsupported Media Type
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/articles/{article-id}/variantskey / tokenGet variants of an article
operationId
getVariantsByArticleId — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
article-id required |
Responses 5
200 Found variants show body
application/json array of Variant
Array of Variant.
idstring example: 1Id of the variantnumberstring required example: ABC123Article numberbarcodestring default:Barcode for the variantaccountingTagsarray of string requiredTags used for accounting. Articles with the same tag, same VAT case and same VAT rate are grouped together in the postingarticleSetsarray of stringName of the article sets that the variant is included indefaultQuantitynumberThe default quantity of the articleactiveboolean default: falseDecide if this variant is active or notpricePeriodsarray of PricePeriodPrice periods for the article variant.
If variant only has 1 price, don't include validFrom and validTo in the PricePeriod.
If variant have many prices, set value for validFrom for the date that the price is active for each PricePeriod.show fields
Array of
PricePeriod.validFromstring (date) format: dateThe price period is valid from this timevalidTostring (date) format: date read-onlyThe price period is invalid after this timepricenumber pattern: ^\d{1,19}([.]\d{1,2})?$The price used for an article within this price periodpriceCategoriesarray of PriceCategoryList of price categories effective for this price periodshow fields
Array of
PriceCategory.namestringName of the price categorypricenumber pattern: ^\d{1,19}([.]\d{1,2})?$Effective price of this price category
variantOptionValuesarray of stringValues for the options that this article variant represent
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/articles/{article-id}/variants/{variant-id}key / tokenGet variants of an article with id
operationId
getVariantById — the method name a generated client uses.
Required permission
ARTICLE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 2
| Name | Description |
|---|---|
article-id required | |
variant-id required |
Responses 5
200 Found article variant show body
application/json Variant
idstring example: 1Id of the variantnumberstring required example: ABC123Article numberbarcodestring default:Barcode for the variantaccountingTagsarray of string requiredTags used for accounting. Articles with the same tag, same VAT case and same VAT rate are grouped together in the postingarticleSetsarray of stringName of the article sets that the variant is included indefaultQuantitynumberThe default quantity of the articleactiveboolean default: falseDecide if this variant is active or notpricePeriodsarray of PricePeriodPrice periods for the article variant.
If variant only has 1 price, don't include validFrom and validTo in the PricePeriod.
If variant have many prices, set value for validFrom for the date that the price is active for each PricePeriod.show fields
Array of
PricePeriod.validFromstring (date) format: dateThe price period is valid from this timevalidTostring (date) format: date read-onlyThe price period is invalid after this timepricenumber pattern: ^\d{1,19}([.]\d{1,2})?$The price used for an article within this price periodpriceCategoriesarray of PriceCategoryList of price categories effective for this price periodshow fields
Array of
PriceCategory.namestringName of the price categorypricenumber pattern: ^\d{1,19}([.]\d{1,2})?$Effective price of this price category
variantOptionValuesarray of stringValues for the options that this article variant represent
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
Customer14
GET/core/latest/customerskey / tokenReturns all customers of a company
operationId
listCustomers — the method name a generated client uses.
Required permission
FINANCE_GET_CUSTOMER
Available through: Administrator, External user, Buchhalter, Kundenbeziehungen
Responses 5
200 Customers show body
application/json array of Customer
Array of Customer.
idstring read-only example: 1Id of this Customer. Does not need to be included when creating customerpersonobjectA partner person.show fields
websitestring example: www.my-company.comThe website address of this customercategoriesarray of stringAdd one or more categories to this customer that you can use as filter criteria for selecting partnersonlinePlatformsarray of OnlinePlatformThe list of online platforms that this customer usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
languagestring example: enThe main language that this partner uses, valid values is [en, de, fr, it]responsibleCounterpartstring example: Mr. MarcThe name of a contact person for this customercorrespondenceobject required example: MAILThe preferred method of correspondence, how this customer wants to receive the pay slips by defaultidstring example: 1Id of this person. Does not need to be included when creating customersalutationobject required example: MALESalutation for this person, valid values is: [MALE, FEMALE, MALE_FEMALE, FAMILY]firstNamestring required pattern: \S example: JohnFirst name of this personlastNamestring required pattern: \S example: HenryLast name of this personbirthdaystring (date) format: date example: 2020-01-20Birth date of this person in ISO 8601 format (yyyy-MM-dd)addressesarray of AddressPostal addresses of this person. At least one address is required when creating or updating a customer with customerType = PERSON - omitting it is rejected with 400. Not marked required here because existing customers created before this rule may still be returned without an address.show fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
phonesarray of PhonePhone number list of this personshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of EmailEmail list of this personshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
personNumberstringThis is a number the KLARA user can give to this customer/partner/supplier
companyobjectA company.show fields
websitestring example: www.my-company.comThe website address of this customercategoriesarray of stringAdd one or more categories to this customer that you can use as filter criteria for selecting partnersonlinePlatformsarray of OnlinePlatformThe list of online platforms that this customer usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
languagestring example: enThe main language that this partner uses, valid values is [en, de, fr, it]responsibleCounterpartstring example: Mr. MarcThe name of a contact person for this customercorrespondenceobject required example: MAILThe preferred method of correspondence, how this customer wants to receive the pay slips by defaultidstring read-only example: 1Id of this company. Does not need to be included when creating customernamestring required pattern: \S example: ABC-CorpName of the companyphonesarray of PhonePhone numbers of the companyshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of EmailEmails of this companyshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
addressesarray of AddressPostal addresses of this company. At least one address is required when creating or updating a customer with customerType = COMPANY - omitting it is rejected with 400. Not marked required here because existing customers created before this rule may still be returned without an address.show fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
corporateIdentificationNumberstring example: CHE-123.456.789Every business active in Switzerland is given a unique enterprise identification number (UID). To ensure that numbers are correctly allocated and managed, the UID register is run by the Federal Statistical OfficevatNumberstring example: CHE-123.456.789This is the official CH VAT number of the companyhrNumberstring example: CHE-123.456.789This is the official CH number for this company in the CH trade registernogaCodestring example: 1234The NOGA code of this companyfoundingDatestring (date) format: date example: 2019-12-20Founding date of this comany in ISO 8601 format (yyyy-mm-dd)companyNumberstringThis is a number the KLARA user can give to this customer/partner/supplier
priceCategorystring example: Sale priceYou can select / enter a price category. On the articles you can define a special price for this price category. When such an article is sold / invoiced, the price of this category will apply if it is identical for the article and the customer.customerTypeobject required example: PERSONThe type of this partner. Could be either Person or Company._linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/latest/customerskey / tokenCreate a new customer
operationId
createCustomer — the method name a generated client uses.
Required permission
FINANCE_CREATE_CUSTOMER
Available through: Administrator, External user, Kundenbeziehungen
Request body required
application/json Customer
idstring read-only example: 1Id of this Customer. Does not need to be included when creating customerpersonobjectA partner person.show fields
websitestring example: www.my-company.comThe website address of this customercategoriesarray of stringAdd one or more categories to this customer that you can use as filter criteria for selecting partnersonlinePlatformsarray of OnlinePlatformThe list of online platforms that this customer usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
languagestring example: enThe main language that this partner uses, valid values is [en, de, fr, it]responsibleCounterpartstring example: Mr. MarcThe name of a contact person for this customercorrespondenceobject required example: MAILThe preferred method of correspondence, how this customer wants to receive the pay slips by defaultidstring example: 1Id of this person. Does not need to be included when creating customersalutationobject required example: MALESalutation for this person, valid values is: [MALE, FEMALE, MALE_FEMALE, FAMILY]firstNamestring required pattern: \S example: JohnFirst name of this personlastNamestring required pattern: \S example: HenryLast name of this personbirthdaystring (date) format: date example: 2020-01-20Birth date of this person in ISO 8601 format (yyyy-MM-dd)addressesarray of AddressPostal addresses of this person. At least one address is required when creating or updating a customer with customerType = PERSON - omitting it is rejected with 400. Not marked required here because existing customers created before this rule may still be returned without an address.show fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
phonesarray of PhonePhone number list of this personshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of EmailEmail list of this personshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
personNumberstringThis is a number the KLARA user can give to this customer/partner/supplier
companyobjectA company.show fields
websitestring example: www.my-company.comThe website address of this customercategoriesarray of stringAdd one or more categories to this customer that you can use as filter criteria for selecting partnersonlinePlatformsarray of OnlinePlatformThe list of online platforms that this customer usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
languagestring example: enThe main language that this partner uses, valid values is [en, de, fr, it]responsibleCounterpartstring example: Mr. MarcThe name of a contact person for this customercorrespondenceobject required example: MAILThe preferred method of correspondence, how this customer wants to receive the pay slips by defaultidstring read-only example: 1Id of this company. Does not need to be included when creating customernamestring required pattern: \S example: ABC-CorpName of the companyphonesarray of PhonePhone numbers of the companyshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of EmailEmails of this companyshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
addressesarray of AddressPostal addresses of this company. At least one address is required when creating or updating a customer with customerType = COMPANY - omitting it is rejected with 400. Not marked required here because existing customers created before this rule may still be returned without an address.show fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
corporateIdentificationNumberstring example: CHE-123.456.789Every business active in Switzerland is given a unique enterprise identification number (UID). To ensure that numbers are correctly allocated and managed, the UID register is run by the Federal Statistical OfficevatNumberstring example: CHE-123.456.789This is the official CH VAT number of the companyhrNumberstring example: CHE-123.456.789This is the official CH number for this company in the CH trade registernogaCodestring example: 1234The NOGA code of this companyfoundingDatestring (date) format: date example: 2019-12-20Founding date of this comany in ISO 8601 format (yyyy-mm-dd)companyNumberstringThis is a number the KLARA user can give to this customer/partner/supplier
priceCategorystring example: Sale priceYou can select / enter a price category. On the articles you can define a special price for this price category. When such an article is sold / invoiced, the price of this category will apply if it is identical for the article and the customer.customerTypeobject required example: PERSONThe type of this partner. Could be either Person or Company._linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
Responses 6
201 Customer created show body
application/json Customer
idstring read-only example: 1Id of this Customer. Does not need to be included when creating customerpersonobjectA partner person.show fields
websitestring example: www.my-company.comThe website address of this customercategoriesarray of stringAdd one or more categories to this customer that you can use as filter criteria for selecting partnersonlinePlatformsarray of OnlinePlatformThe list of online platforms that this customer usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
languagestring example: enThe main language that this partner uses, valid values is [en, de, fr, it]responsibleCounterpartstring example: Mr. MarcThe name of a contact person for this customercorrespondenceobject required example: MAILThe preferred method of correspondence, how this customer wants to receive the pay slips by defaultidstring example: 1Id of this person. Does not need to be included when creating customersalutationobject required example: MALESalutation for this person, valid values is: [MALE, FEMALE, MALE_FEMALE, FAMILY]firstNamestring required pattern: \S example: JohnFirst name of this personlastNamestring required pattern: \S example: HenryLast name of this personbirthdaystring (date) format: date example: 2020-01-20Birth date of this person in ISO 8601 format (yyyy-MM-dd)addressesarray of AddressPostal addresses of this person. At least one address is required when creating or updating a customer with customerType = PERSON - omitting it is rejected with 400. Not marked required here because existing customers created before this rule may still be returned without an address.show fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
phonesarray of PhonePhone number list of this personshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of EmailEmail list of this personshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
personNumberstringThis is a number the KLARA user can give to this customer/partner/supplier
companyobjectA company.show fields
websitestring example: www.my-company.comThe website address of this customercategoriesarray of stringAdd one or more categories to this customer that you can use as filter criteria for selecting partnersonlinePlatformsarray of OnlinePlatformThe list of online platforms that this customer usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
languagestring example: enThe main language that this partner uses, valid values is [en, de, fr, it]responsibleCounterpartstring example: Mr. MarcThe name of a contact person for this customercorrespondenceobject required example: MAILThe preferred method of correspondence, how this customer wants to receive the pay slips by defaultidstring read-only example: 1Id of this company. Does not need to be included when creating customernamestring required pattern: \S example: ABC-CorpName of the companyphonesarray of PhonePhone numbers of the companyshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of EmailEmails of this companyshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
addressesarray of AddressPostal addresses of this company. At least one address is required when creating or updating a customer with customerType = COMPANY - omitting it is rejected with 400. Not marked required here because existing customers created before this rule may still be returned without an address.show fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
corporateIdentificationNumberstring example: CHE-123.456.789Every business active in Switzerland is given a unique enterprise identification number (UID). To ensure that numbers are correctly allocated and managed, the UID register is run by the Federal Statistical OfficevatNumberstring example: CHE-123.456.789This is the official CH VAT number of the companyhrNumberstring example: CHE-123.456.789This is the official CH number for this company in the CH trade registernogaCodestring example: 1234The NOGA code of this companyfoundingDatestring (date) format: date example: 2019-12-20Founding date of this comany in ISO 8601 format (yyyy-mm-dd)companyNumberstringThis is a number the KLARA user can give to this customer/partner/supplier
priceCategorystring example: Sale priceYou can select / enter a price category. On the articles you can define a special price for this price category. When such an article is sold / invoiced, the price of this category will apply if it is identical for the article and the customer.customerTypeobject required example: PERSONThe type of this partner. Could be either Person or Company._linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
DELETE/core/latest/customers/{customer-id}key / tokenDelete a customer
operationId
deleteCustomer — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
customer-id required | Id of the customer to be deleted |
Responses 6
400 Could not delete Customer that contain orders
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/customers/{customer-id}key / tokenReturns a customer of a company based on given id
operationId
getCustomer — the method name a generated client uses.
Required permission
FINANCE_GET_CUSTOMER
Available through: Administrator, External user, Buchhalter, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
customer-id required | Id of the customer |
Responses 5
200 Found Customer show body
application/json Customer
idstring read-only example: 1Id of this Customer. Does not need to be included when creating customerpersonobjectA partner person.show fields
websitestring example: www.my-company.comThe website address of this customercategoriesarray of stringAdd one or more categories to this customer that you can use as filter criteria for selecting partnersonlinePlatformsarray of OnlinePlatformThe list of online platforms that this customer usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
languagestring example: enThe main language that this partner uses, valid values is [en, de, fr, it]responsibleCounterpartstring example: Mr. MarcThe name of a contact person for this customercorrespondenceobject required example: MAILThe preferred method of correspondence, how this customer wants to receive the pay slips by defaultidstring example: 1Id of this person. Does not need to be included when creating customersalutationobject required example: MALESalutation for this person, valid values is: [MALE, FEMALE, MALE_FEMALE, FAMILY]firstNamestring required pattern: \S example: JohnFirst name of this personlastNamestring required pattern: \S example: HenryLast name of this personbirthdaystring (date) format: date example: 2020-01-20Birth date of this person in ISO 8601 format (yyyy-MM-dd)addressesarray of AddressPostal addresses of this person. At least one address is required when creating or updating a customer with customerType = PERSON - omitting it is rejected with 400. Not marked required here because existing customers created before this rule may still be returned without an address.show fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
phonesarray of PhonePhone number list of this personshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of EmailEmail list of this personshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
personNumberstringThis is a number the KLARA user can give to this customer/partner/supplier
companyobjectA company.show fields
websitestring example: www.my-company.comThe website address of this customercategoriesarray of stringAdd one or more categories to this customer that you can use as filter criteria for selecting partnersonlinePlatformsarray of OnlinePlatformThe list of online platforms that this customer usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
languagestring example: enThe main language that this partner uses, valid values is [en, de, fr, it]responsibleCounterpartstring example: Mr. MarcThe name of a contact person for this customercorrespondenceobject required example: MAILThe preferred method of correspondence, how this customer wants to receive the pay slips by defaultidstring read-only example: 1Id of this company. Does not need to be included when creating customernamestring required pattern: \S example: ABC-CorpName of the companyphonesarray of PhonePhone numbers of the companyshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of EmailEmails of this companyshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
addressesarray of AddressPostal addresses of this company. At least one address is required when creating or updating a customer with customerType = COMPANY - omitting it is rejected with 400. Not marked required here because existing customers created before this rule may still be returned without an address.show fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
corporateIdentificationNumberstring example: CHE-123.456.789Every business active in Switzerland is given a unique enterprise identification number (UID). To ensure that numbers are correctly allocated and managed, the UID register is run by the Federal Statistical OfficevatNumberstring example: CHE-123.456.789This is the official CH VAT number of the companyhrNumberstring example: CHE-123.456.789This is the official CH number for this company in the CH trade registernogaCodestring example: 1234The NOGA code of this companyfoundingDatestring (date) format: date example: 2019-12-20Founding date of this comany in ISO 8601 format (yyyy-mm-dd)companyNumberstringThis is a number the KLARA user can give to this customer/partner/supplier
priceCategorystring example: Sale priceYou can select / enter a price category. On the articles you can define a special price for this price category. When such an article is sold / invoiced, the price of this category will apply if it is identical for the article and the customer.customerTypeobject required example: PERSONThe type of this partner. Could be either Person or Company._linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
PUT/core/latest/customers/{customer-id}key / tokenUpdate an existing customer
operationId
updateCustomer — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
customer-id required | Id of the customer to be updated |
Request body required
application/json Customer
idstring read-only example: 1Id of this Customer. Does not need to be included when creating customerpersonobjectA partner person.show fields
websitestring example: www.my-company.comThe website address of this customercategoriesarray of stringAdd one or more categories to this customer that you can use as filter criteria for selecting partnersonlinePlatformsarray of OnlinePlatformThe list of online platforms that this customer usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
languagestring example: enThe main language that this partner uses, valid values is [en, de, fr, it]responsibleCounterpartstring example: Mr. MarcThe name of a contact person for this customercorrespondenceobject required example: MAILThe preferred method of correspondence, how this customer wants to receive the pay slips by defaultidstring example: 1Id of this person. Does not need to be included when creating customersalutationobject required example: MALESalutation for this person, valid values is: [MALE, FEMALE, MALE_FEMALE, FAMILY]firstNamestring required pattern: \S example: JohnFirst name of this personlastNamestring required pattern: \S example: HenryLast name of this personbirthdaystring (date) format: date example: 2020-01-20Birth date of this person in ISO 8601 format (yyyy-MM-dd)addressesarray of AddressPostal addresses of this person. At least one address is required when creating or updating a customer with customerType = PERSON - omitting it is rejected with 400. Not marked required here because existing customers created before this rule may still be returned without an address.show fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
phonesarray of PhonePhone number list of this personshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of EmailEmail list of this personshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
personNumberstringThis is a number the KLARA user can give to this customer/partner/supplier
companyobjectA company.show fields
websitestring example: www.my-company.comThe website address of this customercategoriesarray of stringAdd one or more categories to this customer that you can use as filter criteria for selecting partnersonlinePlatformsarray of OnlinePlatformThe list of online platforms that this customer usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
languagestring example: enThe main language that this partner uses, valid values is [en, de, fr, it]responsibleCounterpartstring example: Mr. MarcThe name of a contact person for this customercorrespondenceobject required example: MAILThe preferred method of correspondence, how this customer wants to receive the pay slips by defaultidstring read-only example: 1Id of this company. Does not need to be included when creating customernamestring required pattern: \S example: ABC-CorpName of the companyphonesarray of PhonePhone numbers of the companyshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of EmailEmails of this companyshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
addressesarray of AddressPostal addresses of this company. At least one address is required when creating or updating a customer with customerType = COMPANY - omitting it is rejected with 400. Not marked required here because existing customers created before this rule may still be returned without an address.show fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
corporateIdentificationNumberstring example: CHE-123.456.789Every business active in Switzerland is given a unique enterprise identification number (UID). To ensure that numbers are correctly allocated and managed, the UID register is run by the Federal Statistical OfficevatNumberstring example: CHE-123.456.789This is the official CH VAT number of the companyhrNumberstring example: CHE-123.456.789This is the official CH number for this company in the CH trade registernogaCodestring example: 1234The NOGA code of this companyfoundingDatestring (date) format: date example: 2019-12-20Founding date of this comany in ISO 8601 format (yyyy-mm-dd)companyNumberstringThis is a number the KLARA user can give to this customer/partner/supplier
priceCategorystring example: Sale priceYou can select / enter a price category. On the articles you can define a special price for this price category. When such an article is sold / invoiced, the price of this category will apply if it is identical for the article and the customer.customerTypeobject required example: PERSONThe type of this partner. Could be either Person or Company._linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
Responses 6
200 Customer updated show body
application/json Customer
idstring read-only example: 1Id of this Customer. Does not need to be included when creating customerpersonobjectA partner person.show fields
websitestring example: www.my-company.comThe website address of this customercategoriesarray of stringAdd one or more categories to this customer that you can use as filter criteria for selecting partnersonlinePlatformsarray of OnlinePlatformThe list of online platforms that this customer usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
languagestring example: enThe main language that this partner uses, valid values is [en, de, fr, it]responsibleCounterpartstring example: Mr. MarcThe name of a contact person for this customercorrespondenceobject required example: MAILThe preferred method of correspondence, how this customer wants to receive the pay slips by defaultidstring example: 1Id of this person. Does not need to be included when creating customersalutationobject required example: MALESalutation for this person, valid values is: [MALE, FEMALE, MALE_FEMALE, FAMILY]firstNamestring required pattern: \S example: JohnFirst name of this personlastNamestring required pattern: \S example: HenryLast name of this personbirthdaystring (date) format: date example: 2020-01-20Birth date of this person in ISO 8601 format (yyyy-MM-dd)addressesarray of AddressPostal addresses of this person. At least one address is required when creating or updating a customer with customerType = PERSON - omitting it is rejected with 400. Not marked required here because existing customers created before this rule may still be returned without an address.show fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
phonesarray of PhonePhone number list of this personshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of EmailEmail list of this personshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
personNumberstringThis is a number the KLARA user can give to this customer/partner/supplier
companyobjectA company.show fields
websitestring example: www.my-company.comThe website address of this customercategoriesarray of stringAdd one or more categories to this customer that you can use as filter criteria for selecting partnersonlinePlatformsarray of OnlinePlatformThe list of online platforms that this customer usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
languagestring example: enThe main language that this partner uses, valid values is [en, de, fr, it]responsibleCounterpartstring example: Mr. MarcThe name of a contact person for this customercorrespondenceobject required example: MAILThe preferred method of correspondence, how this customer wants to receive the pay slips by defaultidstring read-only example: 1Id of this company. Does not need to be included when creating customernamestring required pattern: \S example: ABC-CorpName of the companyphonesarray of PhonePhone numbers of the companyshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of EmailEmails of this companyshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
addressesarray of AddressPostal addresses of this company. At least one address is required when creating or updating a customer with customerType = COMPANY - omitting it is rejected with 400. Not marked required here because existing customers created before this rule may still be returned without an address.show fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
corporateIdentificationNumberstring example: CHE-123.456.789Every business active in Switzerland is given a unique enterprise identification number (UID). To ensure that numbers are correctly allocated and managed, the UID register is run by the Federal Statistical OfficevatNumberstring example: CHE-123.456.789This is the official CH VAT number of the companyhrNumberstring example: CHE-123.456.789This is the official CH number for this company in the CH trade registernogaCodestring example: 1234The NOGA code of this companyfoundingDatestring (date) format: date example: 2019-12-20Founding date of this comany in ISO 8601 format (yyyy-mm-dd)companyNumberstringThis is a number the KLARA user can give to this customer/partner/supplier
priceCategorystring example: Sale priceYou can select / enter a price category. On the articles you can define a special price for this price category. When such an article is sold / invoiced, the price of this category will apply if it is identical for the article and the customer.customerTypeobject required example: PERSONThe type of this partner. Could be either Person or Company._linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/customers/{customer-id}/additional-addresseskey / tokenGets all additional addresses of a customer
operationId
listCustomerAdditionalAddresses — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
customer-id required | Id of the customer to get additional addresses |
Responses 5
200 List of all additional addresses show body
application/json array of Address
Array of Address.
idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/latest/customers/{customer-id}/additional-addresseskey / tokenCreates a new customer's additional address
operationId
createCustomerAdditionalAddress — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
customer-id required | Id of the customer to add additional addresses to |
Request body required
application/json Address
idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
Responses 6
200 Customer's new additional address created show body
application/json Address
idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
DELETE/core/latest/customers/{customer-id}/additional-addresses/{address-id}key / tokenDelete an additional-address data by customer's id and customer's contact-id
operationId
deleteCustomerAdditionalAddress — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 2
| Name | Description |
|---|---|
address-id required | Id of the additional address needed to be updated |
customer-id required | Id of the customer to update an additional address deleted |
Responses 5
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
PUT/core/latest/customers/{customer-id}/additional-addresses/{address-id}key / tokenUpdates a Address
operationId
updateCustomerAdditionalAddress — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 2
| Name | Description |
|---|---|
address-id required | The id of the requested Address |
customer-id required | Id of the customer needed to update an additional address |
Request body required
application/json Address
idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
Responses 6
200 Updated additional-addresses show body
application/json Address
idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/customers/{customer-id}/contactskey / tokenGets all contacts of a customer
operationId
listCustomerContacts — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
customer-id required | Id of the customer to get all contacts from |
Responses 5
200 List of contacts show body
application/json array of CustomerContact
Array of CustomerContact.
idstring read-only example: 1Id of this contact. Does not need to be included when creating CustomerContactimageIdstring read-only example: 1Id of this contact's image. Does not need to be included when creating CustomerContactsalutationobject example: MALESalutation for this contactfirstNamestring required example: JohnFirst name of this contactlastNamestring required example: HenryLast name of this contactemailstring example: john.henry@gmail.comEmail of this contactwebsitestring example: www.youtube.comWebsite of this contactadditionalAddressDefinitionstringAdditional address definition of this contactphonesarray of PhonePhone number list of this contactshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
categoriesarray of stringCategory list of this contactonlinePlatformsarray of OnlinePlatformThe list of online platforms that this contact usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
customFieldsarray of CustomFieldThe list of custom information of this contactshow fields
Array of
CustomField.idstring read-only example: 1Id of this custom field. Does not need to be included when creating CustomerContactcustomNamestring example: name at homename of this custom fieldcustomValuestring example: John Henryvalue of this custom field
functionstringFunction of this contactbirthdaystring (date) format: date example: 2020-12-20Birth date of this person in ISO 8601 format (yyyy-mm-dd)notestring example: this is a important contact.Note of this contact
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/latest/customers/{customer-id}/contactskey / tokenCreates a new customer's contact
operationId
createCustomerContact — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
customer-id required | The id of the requested customer to add new contact to |
Request body required
application/json CustomerContact
idstring read-only example: 1Id of this contact. Does not need to be included when creating CustomerContactimageIdstring read-only example: 1Id of this contact's image. Does not need to be included when creating CustomerContactsalutationobject example: MALESalutation for this contactfirstNamestring required example: JohnFirst name of this contactlastNamestring required example: HenryLast name of this contactemailstring example: john.henry@gmail.comEmail of this contactwebsitestring example: www.youtube.comWebsite of this contactadditionalAddressDefinitionstringAdditional address definition of this contactphonesarray of PhonePhone number list of this contactshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
categoriesarray of stringCategory list of this contactonlinePlatformsarray of OnlinePlatformThe list of online platforms that this contact usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
customFieldsarray of CustomFieldThe list of custom information of this contactshow fields
Array of
CustomField.idstring read-only example: 1Id of this custom field. Does not need to be included when creating CustomerContactcustomNamestring example: name at homename of this custom fieldcustomValuestring example: John Henryvalue of this custom field
functionstringFunction of this contactbirthdaystring (date) format: date example: 2020-12-20Birth date of this person in ISO 8601 format (yyyy-mm-dd)notestring example: this is a important contact.Note of this contact
Responses 6
200 Customer's new contact created show body
application/json CustomerContact
idstring read-only example: 1Id of this contact. Does not need to be included when creating CustomerContactimageIdstring read-only example: 1Id of this contact's image. Does not need to be included when creating CustomerContactsalutationobject example: MALESalutation for this contactfirstNamestring required example: JohnFirst name of this contactlastNamestring required example: HenryLast name of this contactemailstring example: john.henry@gmail.comEmail of this contactwebsitestring example: www.youtube.comWebsite of this contactadditionalAddressDefinitionstringAdditional address definition of this contactphonesarray of PhonePhone number list of this contactshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
categoriesarray of stringCategory list of this contactonlinePlatformsarray of OnlinePlatformThe list of online platforms that this contact usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
customFieldsarray of CustomFieldThe list of custom information of this contactshow fields
Array of
CustomField.idstring read-only example: 1Id of this custom field. Does not need to be included when creating CustomerContactcustomNamestring example: name at homename of this custom fieldcustomValuestring example: John Henryvalue of this custom field
functionstringFunction of this contactbirthdaystring (date) format: date example: 2020-12-20Birth date of this person in ISO 8601 format (yyyy-mm-dd)notestring example: this is a important contact.Note of this contact
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
DELETE/core/latest/customers/{customer-id}/contacts/{contact-id}key / tokenDelete a CustomerContact data by customer's id and customer's contact-id
operationId
deleteCustomerContact — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 2
| Name | Description |
|---|---|
contact-id required | Id of a customer's contact to be deleted |
customer-id required | Id of the requested customer to have a contact deleted |
Responses 5
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
PUT/core/latest/customers/{customer-id}/contacts/{contact-id}key / tokenUpdates a CustomerContact
operationId
updateCustomerContact — the method name a generated client uses.
Required permission
FINANCE
Available through: Administrator, External user, Kundenbeziehungen
Parameters 2
| Name | Description |
|---|---|
contact-id required | The id of the requested customer's contact to be updated |
customer-id required | Id of the customer to have a contact updated |
Request body required
application/json CustomerContact
idstring read-only example: 1Id of this contact. Does not need to be included when creating CustomerContactimageIdstring read-only example: 1Id of this contact's image. Does not need to be included when creating CustomerContactsalutationobject example: MALESalutation for this contactfirstNamestring required example: JohnFirst name of this contactlastNamestring required example: HenryLast name of this contactemailstring example: john.henry@gmail.comEmail of this contactwebsitestring example: www.youtube.comWebsite of this contactadditionalAddressDefinitionstringAdditional address definition of this contactphonesarray of PhonePhone number list of this contactshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
categoriesarray of stringCategory list of this contactonlinePlatformsarray of OnlinePlatformThe list of online platforms that this contact usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
customFieldsarray of CustomFieldThe list of custom information of this contactshow fields
Array of
CustomField.idstring read-only example: 1Id of this custom field. Does not need to be included when creating CustomerContactcustomNamestring example: name at homename of this custom fieldcustomValuestring example: John Henryvalue of this custom field
functionstringFunction of this contactbirthdaystring (date) format: date example: 2020-12-20Birth date of this person in ISO 8601 format (yyyy-mm-dd)notestring example: this is a important contact.Note of this contact
Responses 6
200 Updated contact show body
application/json CustomerContact
idstring read-only example: 1Id of this contact. Does not need to be included when creating CustomerContactimageIdstring read-only example: 1Id of this contact's image. Does not need to be included when creating CustomerContactsalutationobject example: MALESalutation for this contactfirstNamestring required example: JohnFirst name of this contactlastNamestring required example: HenryLast name of this contactemailstring example: john.henry@gmail.comEmail of this contactwebsitestring example: www.youtube.comWebsite of this contactadditionalAddressDefinitionstringAdditional address definition of this contactphonesarray of PhonePhone number list of this contactshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
categoriesarray of stringCategory list of this contactonlinePlatformsarray of OnlinePlatformThe list of online platforms that this contact usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
customFieldsarray of CustomFieldThe list of custom information of this contactshow fields
Array of
CustomField.idstring read-only example: 1Id of this custom field. Does not need to be included when creating CustomerContactcustomNamestring example: name at homename of this custom fieldcustomValuestring example: John Henryvalue of this custom field
functionstringFunction of this contactbirthdaystring (date) format: date example: 2020-12-20Birth date of this person in ISO 8601 format (yyyy-mm-dd)notestring example: this is a important contact.Note of this contact
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/customerskey / tokenSearch and page the customers of the caller's company.
Persons + Companies) of the caller's company, with optional free-text search (search-key) and status filter (status). Results are paged with offset and limit: to retrieve every customer, iterate offset=0, limit, 2×limit, … until a response returns fewer than limit rows. All query parameters are optional; without any, the endpoint returns the first 50 active customers (downstream default ordering). This is a read-only, idempotent operation. The tenant and company are derived from the JWT (
@CurrentSession Token) and are never accepted as parameters. The caller must be authenticated (apiKeyAuth + bearerAuth) and must hold the FINANCE_GET_CUSTOMER permission on that company; otherwise the endpoint returns 403.operationId
listCustomersV1 — the method name a generated client uses.
Required permission
FINANCE_GET_CUSTOMER
Available through: Administrator, External user, Buchhalter, Kundenbeziehungen
Parameters 4
| Name | Description |
|---|---|
limit | Page size. Defaults to 50; hard cap 100. Requests above the cap are rejected with 400. |
offset | 0-based pagination offset — the number of customers to skip before the returned page. Defaults to 0. Combine with limit to walk the full list. |
search-key | Free-text search across customer name, email, phone and customer number. Tokenised on whitespace; matches are case-insensitive substring matches. Maximum length 256 characters. |
status | Filter by customer state. Allowed values: ACTIVE, ALL, ARCHIVED. When omitted, the downstream service applies its default (active customers only).Allowed values: ACTIVE, ALL, ARCHIVED |
Responses 6
200 Customers show body
application/json array of Customer
Array of Customer.
idstring read-only example: 1Id of this Customer. Does not need to be included when creating customerpersonobjectA partner person.show fields
websitestring example: www.my-company.comThe website address of this customercategoriesarray of stringAdd one or more categories to this customer that you can use as filter criteria for selecting partnersonlinePlatformsarray of OnlinePlatformThe list of online platforms that this customer usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
languagestring example: enThe main language that this partner uses, valid values is [en, de, fr, it]responsibleCounterpartstring example: Mr. MarcThe name of a contact person for this customercorrespondenceobject required example: MAILThe preferred method of correspondence, how this customer wants to receive the pay slips by defaultidstring example: 1Id of this person. Does not need to be included when creating customersalutationobject required example: MALESalutation for this person, valid values is: [MALE, FEMALE, MALE_FEMALE, FAMILY]firstNamestring required pattern: \S example: JohnFirst name of this personlastNamestring required pattern: \S example: HenryLast name of this personbirthdaystring (date) format: date example: 2020-01-20Birth date of this person in ISO 8601 format (yyyy-MM-dd)addressesarray of AddressPostal addresses of this person. At least one address is required when creating or updating a customer with customerType = PERSON - omitting it is rejected with 400. Not marked required here because existing customers created before this rule may still be returned without an address.show fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
phonesarray of PhonePhone number list of this personshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of EmailEmail list of this personshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
personNumberstringThis is a number the KLARA user can give to this customer/partner/supplier
companyobjectA company.show fields
websitestring example: www.my-company.comThe website address of this customercategoriesarray of stringAdd one or more categories to this customer that you can use as filter criteria for selecting partnersonlinePlatformsarray of OnlinePlatformThe list of online platforms that this customer usesshow fields
Array of
OnlinePlatform.idstring read-only example: 1Id of this Online platform. Does not need to be included when creating Customer.platformNameobject example: FACEBOOKName of the platform that this customer usesplatformValuestring example: www.linkedin.com/abcUrl of customer's online platform/webpage
languagestring example: enThe main language that this partner uses, valid values is [en, de, fr, it]responsibleCounterpartstring example: Mr. MarcThe name of a contact person for this customercorrespondenceobject required example: MAILThe preferred method of correspondence, how this customer wants to receive the pay slips by defaultidstring read-only example: 1Id of this company. Does not need to be included when creating customernamestring required pattern: \S example: ABC-CorpName of the companyphonesarray of PhonePhone numbers of the companyshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of EmailEmails of this companyshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
addressesarray of AddressPostal addresses of this company. At least one address is required when creating or updating a customer with customerType = COMPANY - omitting it is rejected with 400. Not marked required here because existing customers created before this rule may still be returned without an address.show fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
corporateIdentificationNumberstring example: CHE-123.456.789Every business active in Switzerland is given a unique enterprise identification number (UID). To ensure that numbers are correctly allocated and managed, the UID register is run by the Federal Statistical OfficevatNumberstring example: CHE-123.456.789This is the official CH VAT number of the companyhrNumberstring example: CHE-123.456.789This is the official CH number for this company in the CH trade registernogaCodestring example: 1234The NOGA code of this companyfoundingDatestring (date) format: date example: 2019-12-20Founding date of this comany in ISO 8601 format (yyyy-mm-dd)companyNumberstringThis is a number the KLARA user can give to this customer/partner/supplier
priceCategorystring example: Sale priceYou can select / enter a price category. On the articles you can define a special price for this price category. When such an article is sold / invoiced, the price of this category will apply if it is identical for the article and the customer.customerTypeobject required example: PERSONThe type of this partner. Could be either Person or Company._linksobjectlinks metadatashow fields
selfLinkLink metadatashow fields
hrefstring
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
Individual2
GET/core/v2/tenants/individuals/profilekey / token[PREVIEW_API] Get profile from tenant's ID
operationId
getIndividualProfile — the method name a generated client uses.
Required permission
Not established. Assume a permission is needed, and ask support if a call is rejected.
Responses 5
200 Retrieved profile successfully show body
application/json object
participantIdstring read-only example: 969b2b24-5ffe-4b7c-b1e2-a2a59fb1acb5firstNamestring example: NikolalastNamestring example: Teslaemailstring example: email@klara.chMain email addresstenantEntryTypestring example: INDIVIDUALTenant entry type of the profile
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Profile not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/v2/tenants/individuals/profilekey / token[PREVIEW_API] Create profile
operationId
createIndividualProfile — the method name a generated client uses.
Required permission
Not established. Assume a permission is needed, and ask support if a call is rejected.
Responses 5
200 Created profile successfully show body
application/json object
participantIdstring read-only example: 969b2b24-5ffe-4b7c-b1e2-a2a59fb1acb5firstNamestring example: NikolalastNamestring example: Teslaemailstring example: email@klara.chMain email addresstenantEntryTypestring example: INDIVIDUALTenant entry type of the profile
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
Payroll
Payroll3
GET/core/v1/employees/short-infokey / tokenList the company's employees as short-info entries, filtered and sorted.
id is the employeeId consumed by other employee-scoped endpoints (e.g. GET /payroll/employees/{employeeId}/addable-salary-items) — call this endpoint first to resolve an employee's id. Results can be narrowed with a free-text search-key (matched against name, employee number and email), restricted to specific workplaces via workplace-ids, and filtered by contract status; ordering is controlled by sort-field and sort-direction. The tenant and company are derived from the authenticated token; the caller must hold the COMPENSATION_GET_EMPLOYEE permission on that company.operationId
listEmployeesShortInfo — the method name a generated client uses.
Required permission
COMPENSATION_TIME_TRACKING
Available through: Administrator, External user, Mitarbeiter und Lohn, Zeit- und Materialrapporte
Parameters 6
| Name | Description |
|---|---|
filter-by-status | Renamed to status. This name is accepted until 2027-09-01; when both are sent, status wins. After that date, a request sending filter-by-status without status is rejected with 400.Deprecated — use status instead. Contract-status filter. Allowed values: ALL, ACTIVE, INACTIVE, DRAFT. Defaults to ALL.Allowed values: ALL, ACTIVE, INACTIVE, DRAFT |
search-key | Case-insensitive substring matched against the employee's full name, employee number and email. When omitted, no text filter is applied. |
sort-direction | Sort direction. Allowed values: ASC, DESC. Allowed values: ASC, DESC |
sort-field | Field to sort by. Allowed values: NAME, EMAIL, EMPLOYEE_NUMBER. Defaults to NAME. Allowed values: NAME, EMAIL, EMPLOYEE_NUMBER |
status | Contract-status filter. Allowed values: ALL, ACTIVE, INACTIVE, DRAFT. Defaults to ALL. Allowed values: ALL, ACTIVE, INACTIVE, DRAFT |
workplace-ids | Restrict results to employees whose current contract workplace is in this set. Repeat the parameter for multiple ids (e.g. workplace-ids=12&workplace-ids=13). When omitted, employees of all workplaces are returned. |
Responses 7
200 Successful operation show body
application/json array of PublicApiEmployeeShortInfo
Array of PublicApiEmployeeShortInfo.
idinteger (int64) format: int64 example: 3487Employee id. Use this as employeeId in employee-scoped endpoints.firstNamestring example: AnnaEmployee's first name (resolved from the person record).lastNamestring example: MüllerEmployee's last name (resolved from the person record).employeeNumberstring example: E-00123Company-assigned employee number.emailstring example: anna.mueller@example.comEmployee's primary email (resolved from the person record).workplaceIdinteger (int64) format: int64 example: 12Id of the workplace of the employee's current contract.personnelNumberstring example: P-4711Personnel number of the employee.numberOfChildreninteger (int64) format: int64 deprecated example: 0Deprecated and not populated. Always returns0; do not read this field. It was published in error — the employee directory does not carry family data — and the compensation service has never supplied a value for it. Scheduled for removal in/core/v2; it is retained here only so the published/core/v1response shape is not altered.cashPaymentboolean deprecated example: FalseDeprecated and not populated. Always returnsfalse; do not read this field. It was published in error — the employee directory does not carry payment arrangements — and the compensation service has never supplied a value for it. Scheduled for removal in/core/v2; it is retained here only so the published/core/v1response shape is not altered.statusstring example: ACTIVEContract status of the employee. Allowed values: ACTIVE, INACTIVE, DRAFT.
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/v1/payroll/contracts/{contractId}/payslips/{payslipId}/salary-itemskey / tokenAdd a salary item to an employee's payslip.
payslipId, then always recalculates that month. Returns the added salary item with its server-assigned id. This operation is not idempotent: repeated calls append duplicate items or throw an error when the item is not duplicatable (subject to the item's duplicatable flag). Salary items can only be added for active employees: if the contract is inactive (the employee has left the company), the request is rejected with 400 and nothing is added. Prerequisite: call GET /payroll/employees/{employeeId}/addable-salary-items first — its response provides the contractId and payslipId to target and the addable codes; resolve employeeId beforehand via GET /employees/short-info. The tenant and company are derived from the authenticated token; the caller must hold the COMPENSATION permission on that company.operationId
addSalaryItem — the method name a generated client uses.
Required permission
COMPENSATION
Available through: Administrator, External user, Mitarbeiter und Lohn, Buchhalter, Kundenbeziehungen, Online Terminbuchung
Parameters 2
| Name | Description |
|---|---|
contractId required | Id of the employee's contract to add the salary item to. Obtained from the contractId field of the GET /payroll/employees/{employeeId}/addable-salary-items response — call that endpoint first to select the employee and obtain this id. |
payslipId required | Id of the target (editable, non-sealed) payslip. Obtained from the payslipId field of the GET /payroll/employees/{employeeId}/addable-salary-items response — call that endpoint first to select the employee and obtain this id. |
Request body required
code must be one of the addable salary items for this payslip, and only the value fields the item allows may be sent.Prerequisite APIs / value sources:
GET /employees/short-info→ providesemployeeIdGET /payroll/employees/{employeeId}/addable-salary-items→ provides thecontractIdandpayslipIdpath parameters, plussalaryItems[].code(→code) and each item'seditableFields(which ofbaseValue/rate/quantity/valuemay be sent)
code(string, required) — salary-type code from the addable-salary-items response.salaryItemValues(object, optional) — the numeric values; see below.remark(string, optional, max 1024) — free-text comment (GUI "Comments").
salaryItemValues:baseValue— GUI "Base".rate— GUI "Percent (%)", but expressed as a decimal multiplier, not a percentage number:1= 100%,0.5= 50%,2= 200%. If your application wants to keep a normal percentage input for the user (e.g. typing 50 for 50%), it must divide that value by 100 before sending it here (50 / 100 = 0.5).quantity— GUI "Quantity".value— GUI "Amount".
400); the code must be addable to this payslip (returned by the addable-salary-items endpoint); only fields listed in the item's editableFields should be provided and the your application should also only show input boxes for those fields; with salary items that are not duplicatable (duplicatable=false), the your application should have a mechanism to recall the GET /payroll/employees/{employeeId}/addable-salary-items endpoint after each add to refresh the list of addable items and prevent adding duplicates, or automatically remove the added item from the list of addable items in the GUI; salaryItemValues.rate is a decimal multiplier (1 = 100%, 0.5 = 50%, 2 = 200%), not a percentage number — do not send a raw percentage like 50 for 50%, send 0.5.application/json PayslipSalaryItemRequest
codestring required maxLength: 64 pattern: \S example: 1005Salary-type code identifying the item to add. Must be one of the codes returned by GET /payroll/employees/{employeeId}/addable-salary-items (salaryItems[].code).salaryItemValuesobjectNumeric value fields of a salary item (GUI Base / Percent / Quantity / Amount). Only fields listed in the salary item's editableFields may be provided.show fields
baseValuenumber example: 5000GUI "Base" value.ratenumber example: 0.5GUI "Percent (%)" value, expressed as a decimal multiplier — NOT a percentage number. 1 = 100%, 0.5 = 50%, 2 = 200%. If your application wants to keep a normal percentage input for the user (typing 50 for 50%) instead of a multiplier (0.5), it must divide that input by 100 before sending it here (50 / 100 = 0.5).quantitynumber example: 1GUI "Quantity" value.valuenumber example: 425GUI "Amount" value.
remarkstring maxLength: 1024 example: Adjustment for MarchOptional free-text comment (GUI "Comments").
Responses 7
200 Successful operation show body
application/json PayslipSalaryItem
idinteger (int64) format: int64 example: 778812Server-assigned id of the added salary item (present in the response only).codestring example: 1005Salary-type code of the added salary item.salaryItemValuesobjectNumeric value fields of a salary item (GUI Base / Percent / Quantity / Amount). Only fields listed in the salary item's editableFields may be provided.show fields
baseValuenumber example: 5000GUI "Base" value.ratenumber example: 0.5GUI "Percent (%)" value, expressed as a decimal multiplier — NOT a percentage number. 1 = 100%, 0.5 = 50%, 2 = 200%. If your application wants to keep a normal percentage input for the user (typing 50 for 50%) instead of a multiplier (0.5), it must divide that input by 100 before sending it here (50 / 100 = 0.5).quantitynumber example: 1GUI "Quantity" value.valuenumber example: 425GUI "Amount" value.
remarkstring example: Adjustment for MarchFree-text comment attached to the salary item (GUI "Comments").
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Error codes for this response (the code field of the response body):auth.credentials_missing — Neither an Authorization: Bearer header nor an API key header was present on the request.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
auth.credentials_missing — Neither an Authorization: Bearer header nor an API key header was present on the request.application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/v1/payroll/employees/{employeeId}/addable-salary-itemskey / tokenGet the salary items that can be added to an employee's payslip.
code), together with the resolved contractId and payslipId so the response can be chained into the add-salary-item call. Prerequisite: call GET /employees/short-info first to resolve the employeeId path parameter from the returned entries' id field. When month is provided that month's payslip is used; when it is omitted the employee's current payslip is used. An employee who has left (inactive) is rejected with 400. This call does not recalculate or create payslips, with one exception: the current payslip may be created on first access. A month whose payslip is already sealed (paid) is rejected with 400, and a month for which no payslip exists (e.g. a future month) returns 404. The tenant and company are derived from the authenticated token; the caller must hold the COMPENSATION permission on that company.operationId
listAddableSalaryItems — the method name a generated client uses.
Required permission
COMPENSATION
Available through: Administrator, External user, Mitarbeiter und Lohn, Buchhalter, Kundenbeziehungen, Online Terminbuchung
Parameters 3
| Name | Description |
|---|---|
employeeId required | Id of the employee whose addable salary items are resolved. Obtained from the id field of an entry returned by GET /employees/short-info. |
month | Payslip month in the format MM.yyyy (e.g. 06.2025). If omitted, the employee's current payslip is used. The month's payslip must exist and must not be sealed (see the operation description). |
Accept-Language | Preferred language for localised salary-item descriptions, as an IETF language tag. Examples: de-CH, fr-CH, it-CH, en. Defaults to the tenant's language when omitted. |
Responses 7
200 Successful operation show body
application/json AddablePayslipSalaryItems
employeeIdinteger (int64) format: int64 example: 3487Id of the employee the addable salary items were resolved for.contractIdinteger (int64) format: int64 example: 9021Id of the employee's resolved main (latest) contract. Pass this to the add-salary-item call.payslipIdinteger (int64) format: int64 example: 9542Id of the resolved editable payslip. Pass this to the add-salary-item call.periodFromstring (date-time) format: date-time example: 2018-03-01T00:00:00ZMonth (first day) of the resolved payslip (yyyy-MM-ddT00:00:00Z).salaryItemsarray of AddableSalaryItemAddable salary items as blank templates (value fields cleared), distinct by code.show fields
Array of
AddableSalaryItem.codestring example: 1005Salary-type code. Send this as the salary item code when adding it to the payslip.namestring example: Hourly SalaryCanonical (non-localized) name of the salary item.descriptionstring example: StundenlohnLocalised description/label of the salary item (localised via the Accept-Language header).editableFieldsstring example: baseValue,quantityComma-separated list of the value fields that can be provided when adding this salary item (baseValue, rate, quantity, value).duplicatableboolean example: TrueWhether more than one instance of this salary item can be added to the same payslip. When false, only one instance of this salary item can be added, try to add another one will result in an error.showOnPayslipboolean example: TrueWhether the salary item is shown on the payslip.employerRelatedboolean example: FalseWhether the salary item is employer-related (as opposed to employee-related).paymentTypeSitobject example: BANKHow the salary item is paid out. Allowed values: BANK, PAYINSLIP, CASH.salaryItemTypeIdinteger (int64) format: int64 example: 42Id of the underlying salary-item type definition.accountingGroupstring example: SALARYAccounting group the salary item belongs to.printSequenceinteger (int32) format: int32 example: 100Print/order sequence of the salary item on the payslip.
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
Company & Locations
Company3
GET/core/v2/tenants/companieskey / tokenFind KLARA business company of tenant
operationId
findCompany — the method name a generated client uses.
Required permission
COMPENSATION_COMPANY_INFO
Available through: Administrator, External user, Mitarbeiter und Lohn, Buchhalter, Kundenbeziehungen, Zeit- und Materialrapporte, Online Terminbuchung, Objektmanager
Responses 5
201 Company found show body
application/json BusinessCompany
namestring required pattern: \S example: ABC-CorpName of the companylegalFormobject required example: LIMITED_LIABILITYLegal form of a company. The values below are what this API returns. On input the German abbreviation (GmbH, AG, EU, V, EG, KG, KDG, G, S, OR, IOER) is also accepted, case-insensitively.phonesarray of Phone requiredPhone numbers of the companyshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of Email requiredEmails of this companyshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
addressesarray of Address requiredAddress list of this company, at least one should be add. For company, address type MUST be PRIVATEshow fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
languagestring required pattern: \S example: dePreferred language of the company. Supported: English, German, French, ItalianAllowed values:de,en,fr,itcorporateIdentificationNumberstring example: CHE-123.456.789Every business active in Switzerland is given a unique enterprise identification number (UID). To ensure that numbers are correctly allocated and managed, the UID register is run by the Federal Statistical OfficefoundingDatestring (date) format: date example: 2019-12-20Founding date of this company in ISO 8601 format (yyyy-mm-dd)
401 Invalid credentials
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
403 The user has been disabled
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong when find company
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
POST/core/v2/tenants/companieskey / tokenCreate a KLARA business company
operationId
createTenantAndBusinessCompany — the method name a generated client uses.
Required permission
COMPENSATION FINANCE_COMPANY_VAT
Whether both are required or one is enough is not confirmed. Plan for both.
Available through: Administrator, External user, Mitarbeiter und Lohn, Buchhalter
Request body
application/json BusinessCompany
namestring required pattern: \S example: ABC-CorpName of the companylegalFormobject required example: LIMITED_LIABILITYLegal form of a company. The values below are what this API returns. On input the German abbreviation (GmbH, AG, EU, V, EG, KG, KDG, G, S, OR, IOER) is also accepted, case-insensitively.phonesarray of Phone requiredPhone numbers of the companyshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of Email requiredEmails of this companyshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
addressesarray of Address requiredAddress list of this company, at least one should be add. For company, address type MUST be PRIVATEshow fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
languagestring required pattern: \S example: dePreferred language of the company. Supported: English, German, French, ItalianAllowed values:de,en,fr,itcorporateIdentificationNumberstring example: CHE-123.456.789Every business active in Switzerland is given a unique enterprise identification number (UID). To ensure that numbers are correctly allocated and managed, the UID register is run by the Federal Statistical OfficefoundingDatestring (date) format: date example: 2019-12-20Founding date of this company in ISO 8601 format (yyyy-mm-dd)
Responses 6
201 Tenant and company created show body
application/json array of Tenant
Array of Tenant.
tenant_idstring example: aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeecompany_idinteger (int64) format: int64 example: 1company_namestring example: ABC Company
400 Invalid company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
401 Invalid credentials
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
403 The user has been disabled
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong when creating tenant and business company
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
PUT/core/v2/tenants/companieskey / tokenUpdate a KLARA business company
operationId
updateCompany — the method name a generated client uses.
Required permission
COMPENSATION
Available through: Administrator, External user, Mitarbeiter und Lohn, Buchhalter, Kundenbeziehungen, Online Terminbuchung
Request body
application/json BusinessCompany
namestring required pattern: \S example: ABC-CorpName of the companylegalFormobject required example: LIMITED_LIABILITYLegal form of a company. The values below are what this API returns. On input the German abbreviation (GmbH, AG, EU, V, EG, KG, KDG, G, S, OR, IOER) is also accepted, case-insensitively.phonesarray of Phone requiredPhone numbers of the companyshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of Email requiredEmails of this companyshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
addressesarray of Address requiredAddress list of this company, at least one should be add. For company, address type MUST be PRIVATEshow fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
languagestring required pattern: \S example: dePreferred language of the company. Supported: English, German, French, ItalianAllowed values:de,en,fr,itcorporateIdentificationNumberstring example: CHE-123.456.789Every business active in Switzerland is given a unique enterprise identification number (UID). To ensure that numbers are correctly allocated and managed, the UID register is run by the Federal Statistical OfficefoundingDatestring (date) format: date example: 2019-12-20Founding date of this company in ISO 8601 format (yyyy-mm-dd)
Responses 6
201 Company updated show body
application/json BusinessCompany
namestring required pattern: \S example: ABC-CorpName of the companylegalFormobject required example: LIMITED_LIABILITYLegal form of a company. The values below are what this API returns. On input the German abbreviation (GmbH, AG, EU, V, EG, KG, KDG, G, S, OR, IOER) is also accepted, case-insensitively.phonesarray of Phone requiredPhone numbers of the companyshow fields
Array of
Phone.idstring example: 1Id of this Phone. Does not need to be included when creating customer.phoneNumberstring required example: 41783334444typeobject required example: PRIVATEType of this phone number. For company, only OFFICE type is supported. The full set of accepted values is the PhoneType schema.
emailsarray of Email requiredEmails of this companyshow fields
Array of
Email.idstring example: 1Id of this Email. Does not need to be included when creating customeremailAddressstring example: example@gmail.comEmail addresstypeobject required example: PRIVATEType of this email address. The full set of accepted values is the EmailType schema.
addressesarray of Address requiredAddress list of this company, at least one should be add. For company, address type MUST be PRIVATEshow fields
Array of
Address.idstring example: 1Id of this Address. Does not need to be included when creating customervalidFromstring (date) format: dateThe timestamp from which this address is validvalidTostring (date) format: dateThe timestamp to which this address is validaddressLinesstring required pattern: \S example: Chemin de la Caquerette 12The address lines for this AddressaddressTypestring required pattern: \S example: WORKThe type of address, could be [PRIVATE, WORK, SHIPPING]. For company, address type MUST be PRIVATE.cityNamestring required pattern: \S example: BernName of this CitycityZipCodestring example: 3003The postal code of the city for this address. Required for Switzerland addresses (countryIso2Code = CH), where it is matched against the KLARA city register together with cityName; a missing or non-matching combination is rejected with 400. Ignored for every other country, where cityName is taken as given. Conditional on another field, so it is not marked required.countryIso2Codestring required pattern: \S example: CH2 letter country code. For company, only accept SwitzerlandcountryIso3Codestring example: CHE3 letter country code. For company, only accept SwitzerlandcountryNumericCodestring example: 756ISO-numeric code. For company, only accept Switzerlandcity_hrefstring read-only example: https://api.klara.ch/core/latest/cities/1The path to get City object by city's id, /cities/{}definitionNamestring example: 2nd addressdefinition name of this address; in case main address, value is null; else value is not blankadditionalAddressstring example: No. 13, street 123Additional address for more specific
languagestring required pattern: \S example: dePreferred language of the company. Supported: English, German, French, ItalianAllowed values:de,en,fr,itcorporateIdentificationNumberstring example: CHE-123.456.789Every business active in Switzerland is given a unique enterprise identification number (UID). To ensure that numbers are correctly allocated and managed, the UID register is run by the Federal Statistical OfficefoundingDatestring (date) format: date example: 2019-12-20Founding date of this company in ISO 8601 format (yyyy-mm-dd)
400 Invalid company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
401 Invalid credentials
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
403 The user has been disabled
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong when updating tenant
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
Company general4
GET/core/latest/company-configuration/including-vatkey / tokenGet the VAT inclusion setting for the authenticated company.
includingVat: true) or excluding VAT (includingVat: false). Use this value before creating or displaying invoices to apply the correct pricing model. When no configuration record exists for the company, the endpoint returns false (excluding VAT) as the default. The caller must hold the FINANCE permission on the target company.operationId
getCompanyIncludingVatSetting — the method name a generated client uses.
Required permission
FINANCE_COMPANY_GET_VAT
Available through: Administrator, External user, Mitarbeiter und Lohn, Buchhalter, Kundenbeziehungen
Responses 5
200 VAT inclusion setting for the authenticated company. show body
application/json CompanyConfigurationIncludingVatResult
includingVatboolean example: FalseWhether invoice amounts for the authenticated company are displayed and calculated including VAT. Whentrue, VAT is baked into the displayed prices. Whenfalse, VAT is shown as a separate line item. Returnsfalsewhen no configuration record has been set for the company.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/company-vatskey / tokenReturns vat list of a company
operationId
listCompanyVatLiabilities — the method name a generated client uses.
Required permission
FINANCE_COMPANY_GET_VAT
Available through: Administrator, External user, Mitarbeiter und Lohn, Buchhalter, Kundenbeziehungen
Parameters 1
| Name | Description |
|---|---|
Accept-Language |
Responses 3
200 Company vats show body
application/json array of CompanyVAT
Array of CompanyVAT.
idstring example: 123Id of the company VAT.hasVatbooleanFlag mark the company have VAT or not.vatNumberstring example: ABC-123The VAT number.validFromstring (date) format: dateThe company VAT is valid from this time.validTostring (date) format: dateThe company VAT is invalid after this time.companyIdinteger (int64) format: int64 example: 1Id of the companyvatsarray of VATThis is list VAT value of the company.show fields
Array of
VAT.idstring example: 1Id of the VAT.vatCodestring example: ABCCode of the VAT.ratenumber example: 5Rate of the VAT. Rate unit is percentage (%)descriptionstring example: VAT's descriptionThe additional infomation for VAT.validFromstring (date) format: dateThe VAT is valid from this time.validTostring (date) format: dateThe VAT is invalid after this time.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/vat-caseskey / tokenReturns VAT case list.
operationId
listVatCases — the method name a generated client uses.
Required permission
none A valid token is enough. No particular permission is checked for this endpoint.
Parameters 2
| Name | Description |
|---|---|
applicability | Allowed values: REVENUE, COST |
Accept-Language |
Responses 3
200 VAT cases show body
application/json array of VatCase
Array of VatCase.
idstring example: 1Id of the VAT Case.vatCaseCodestring example: ABCCode of the VAT Case.descriptionstring example: VAT Case's descriptionThe additional infomation for VAT.referenceMasterVatstringThe reference master for VAT.vatCaseNamesobjectThe map contain VAT case names in many languages.show fields
Open map with values of type
string.applicabilityobject example: REVENUEThe VAT case type.orderNumberinteger (int32) format: int32 example: 2This value present how this VAT case order in the list as sequence.createDatestring (date-time) format: date-timeThe date that VAT Case created.updateDatestring (date-time) format: date-timeThe date that VAT Case updated.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
GET/core/latest/vat-cases/{vat-case-id}key / tokenGet the VAT case by Id.
operationId
getVatCaseById — the method name a generated client uses.
Required permission
none A valid token is enough. No particular permission is checked for this endpoint.
Parameters 2
| Name | Description |
|---|---|
vat-case-id required | |
Accept-Language |
Responses 3
200 VAT case show body
application/json VatCase
idstring example: 1Id of the VAT Case.vatCaseCodestring example: ABCCode of the VAT Case.descriptionstring example: VAT Case's descriptionThe additional infomation for VAT.referenceMasterVatstringThe reference master for VAT.vatCaseNamesobjectThe map contain VAT case names in many languages.show fields
Open map with values of type
string.applicabilityobject example: REVENUEThe VAT case type.orderNumberinteger (int32) format: int32 example: 2This value present how this VAT case order in the list as sequence.createDatestring (date-time) format: date-timeThe date that VAT Case created.updateDatestring (date-time) format: date-timeThe date that VAT Case updated.
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
Company documents1
POST/core/latest/companies/{company-id}/documentskey / tokenUpload a document for a company
Important: When uploading documents as part of the create booking functionality only the
LIABILITY_UPLOAD category is allowed (the documents are automatically moved to LIABILITIES when the booking is created successfully via POST /core/v1/bookings).operationId
uploadCompanyDocument — the method name a generated client uses.
Required roles
COMPANY_ADMINISTRATOR TRUSTED_USER ACCOUNTANT CUSTOMER_RELATIONSHIP_MANAGER EMPLOYEE MYKLARA_USER One of them is enough. This comes from the specification text, not from the source code analysis behind the other permission statements: the service that enforces it was not available for analysis. Of these, Administrator, Buchhalter, Kundenbeziehungen are roles you can assign in KLARA, see Roles & permissions. The others are platform roles and are not part of that matrix.
Parameters 1
| Name | Description |
|---|---|
company-id required | Identifier of the company that owns the document. Must match the company id carried by the bearer token, otherwise the request is rejected with 403. |
Request body required
multipart/form-data CompanyDocumentUploadForm
categorystring requiredDocument category. Determines where the file is stored and which downstream post-processing is triggered (e.g. LIABILITY_UPLOAD triggers asynchronous AI analysis). Important: For the create booking functionality, onlyLIABILITY_UPLOADis allowed — the booking creation GUI must always useLIABILITY_UPLOADwhen uploading documents in this context.Allowed values:SALARY_STATEMENTS,YEARLY_REPORTS,PAYMENT_FILES,INSURANCE_CERTIFICATES,SALARY_TRANSMISSIONS,OWN_DOCUMENTS,LIABILITY_UPLOAD,EXPENSES,LIABILITIESfilestring (binary) required format: binaryThe document file to upload. Maximum size 25 MB. Allowed file types are enforced by the downstream service.
Responses 8
200 Document successfully uploaded. show body
application/json object
documentIdstring example: 550e8400-e29b-41d4-a716-446655440000Identifier of the stored document, assigned by the document service.
400 Data invalid
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
403 The current user is not allowed to access this company data
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
413 Uploaded file exceeds the 25 MB limit.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
415 Unsupported Media Type
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong on our side while processing the request. Please kindly contact our support.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
Location1
GET/core/latest/cities/{city-id}key / tokenReturns city details
operationId
getCityById — the method name a generated client uses.
Required permission
none A valid token is enough. No particular permission is checked for this endpoint.
Parameters 1
| Name | Description |
|---|---|
city-id required | City id |
Responses 4
200 Found city show body
application/json City
idinteger (int64) format: int64 read-only example: 1The id of this City objectzipCodestring example: 8034The postal code for this citybasicPostcodestringnamestring example: GerlafingenName of this CitycityName27stringstateobjectA partner State.show fields
idstring read-onlycodestring example: VDCode of this Statedescriptionstring example: VaudExtended description of this State
communityobjectA Community that this partner locates.show fields
idstring read-onlybfsNumberinteger (int32) format: int32 example: 5480BFS number of this CommunitycommunityNamestring example: DaillensName of this CommunityconurbationNumberstring example: 5586Conurbation number of this CommunitystateobjectA partner State.show fields
idstring read-onlycodestring example: VDCode of this Statedescriptionstring example: VaudExtended description of this State
countryobjectA Country that this partner locates.show fields
idstring read-onlycountryNamestring example: SchweizName of this Countryiso2Codestring example: CH2 letter country codeiso3Codestring example: CHE3 letter country codephoneCodestring example: 41Country calling codenumericCodestring example: 756ISO-numeric code
401 No Authorization header found or invalid token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
404 Resource not found
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
Subscription1
POST/core/latest/subscriptionskey / tokenCreate subscriptions for KLARA tenants.
Each subscription is subjective to its own terms and conditions. Please ask your KLARA contacts or see more details using the KLARA webclient.
operationId
createSubscription — the method name a generated client uses.
Required permission
STORE_CUSTOMER
Available through: Administrator, External user, Mitarbeiter und Lohn, Buchhalter, Kundenbeziehungen, Online Terminbuchung
Parameters 1
| Name | Description |
|---|---|
marketing-code | Marketing code to identify which product will be subscribed. The marketing codes to create subscriptions for. |
Responses 6
201 Subscription created successfully show body
application/json array of Subscription
Array of Subscription.
productobject requiredA product in KLARA widget store. Enable different features for users.show fields
codestring required pattern: \S example: PRINTANDSENTIdentifier code for each product-should be unique across all productsnamestring required example: Print and sentThe name of the product
marketingCodesarray of string required example: K-01-0002-00-M, K-02-0005-00-YMarketing code to identify which product will be subscribed.pricePlanobject example: MONTHLYSpecify how the subscription is paid. The full set of accepted values is the PricePlan schema.- SINGLE: Pay once for the whole subscription period.
- VOLUME: Pay once for the whole subscription period and pay for each volume.
- MONTHLY: Pay monthly for the subscription period.
- QUARTERLY: Pay quarterly for the subscription period.
- YEARLY: Pay yearly for the subscription period.
- FREE: Free subscription.
- PAY_PER_USE: Pay for each usage.
pricenumber read-only example: 10The price of this subscription at this momentsubscriptionFromstring (date-time) format: date-time example: 2023-11-20 T10:15:30Specify when the subscription will start effectively. By default, the start date is todaysubscriptionUntilstring (date-time) format: date-time read-only example: 2024-11-20 T10:15:30Specify when the subscription will end effectively after unsubscribe. This value will be calculated by service itself.renewalDatestring (date) format: date example: 2024-20-11Indicates the date that subscription will automatically renewed for another period if no cancellation is made before this date.
400 Invalid subscription data. Note: for historical reasons this operation reports errors in the OAuth error/error_description shape rather than the ErrorMessage shape used elsewhere in the business API.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
401 Invalid credentials
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
403 The user has been disabled
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong when creating subscriptions for the company. Note: for historical reasons this operation reports errors in the OAuth error/error_description shape rather than the ErrorMessage shape used elsewhere in the business API.
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
Authentication
Authentication3
POST/core/latest/tenantspublicReturns all tenants of a user
The tenant and company id returned by this endpoint can be used to generate tokens to access other endpoints. Use your KLARA username and password OR access-token to get the list of tenants.
operationId
listTenants — the method name a generated client uses.
Required permission
none A valid token is enough. No particular permission is checked for this endpoint.
Request body
application/x-www-form-urlencoded object
usernamestringpasswordstringaccess_tokenstring
Responses 6
200 Found tenants show body
application/json array of Tenant
Array of Tenant.
tenant_idstring example: aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeecompany_idinteger (int64) format: int64 example: 1company_namestring example: ABC Company
400 Missing parameters
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
401 Invalid credentials
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
403 The user has been disabled
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Something went wrong when getting list of tenants
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorResponse
errorstringSummary of the error responseerror_descriptionstringDescription of the error response
POST/core/latest/tokenpublicGenerate tokens to access other KLARA core endpoints
A grant_type of password is used for a Password grant, which requires username, password, tenant and company id to produce access token, refresh token from scratch.
A grant_type of refresh_token is used for a Refresh token grant, which is used for acquiring the access token using refresh token.
A grant_type of token_exchange performs an OAuth 2.0 Token Exchange (RFC 8693). Provide subject_token (the raw upstream Bearer token, without the 'Bearer ' prefix) and audience to identify the target token type.
Supported audience values:
- cossa — exchanges a COSSA bearer token for a ePost access token.
operationId
createPublicApiToken — the method name a generated client uses.
Required permission
none A valid token is enough. No particular permission is checked for this endpoint.
Request body
application/x-www-form-urlencoded object
usernamestring default:passwordstring default:grant_typestring default:tenant_idstring default:company_idstring default:refresh_tokenstring default:subject_tokenstring default:audiencestring default:
Responses 5
200 Token created show body
application/json PublicAPIToken
access_tokenstringToken used to access KLARA Public API endpoints, should be place at Authorization header of request. Access token is valid only for one company tenantexpires_ininteger (int64) format: int64Amount of time in seconds left that the access token is valid forrefresh_expires_ininteger (int64) format: int64Amount of time in seconds left that the refresh token is valid forrefreshTokenstringToken used to renew the access tokentoken_typestringType of access token that should be included in the Authorziation header of each request
400 Could not get token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 Invalid credentials
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Internal server error
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
POST/core/latest/token/by-microsoftpublicExchange Microsoft access token for system token
operationId
createPublicApiTokenByMicrosoft — the method name a generated client uses.
Required permission
none A valid token is enough. No particular permission is checked for this endpoint.
Request body
application/x-www-form-urlencoded object
microsoft_access_tokenstringtenant_idstring
Responses 5
200 Token created show body
application/json AccessTokenResponse
access_tokenstringexpires_ininteger (int64) format: int64refresh_expires_ininteger (int64) format: int64refresh_tokenstringtoken_typestringid_tokenstringnot-before-policyinteger (int32) format: int32session_statestringotherClaimsobjectshow fields
Open map with values of type
object.
400 Could not get token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 Invalid credentials
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Internal server error
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
KLARA authentication generic1
POST/core/latest/generic-tokenpublicGenerate tokens to use KLARA specific endpoint
A grant_type of password is used for a Password grant, which requires username, password, access token, refresh token from scratch.
A grant_type of refresh_token is used for a Refresh token grant, which is used for acquiring the access token using refresh token.
operationId
createGenericApiToken — the method name a generated client uses.
Required permission
none A valid token is enough. No particular permission is checked for this endpoint.
Request body
application/x-www-form-urlencoded object
usernamestring default:passwordstring default:grant_typestring default:refresh_tokenstring default:
Responses 5
200 Token created show body
application/json PublicAPIToken
access_tokenstringToken used to access KLARA Public API endpoints, should be place at Authorization header of request. Access token is valid only for one company tenantexpires_ininteger (int64) format: int64Amount of time in seconds left that the access token is valid forrefresh_expires_ininteger (int64) format: int64Amount of time in seconds left that the refresh token is valid forrefreshTokenstringToken used to renew the access tokentoken_typestringType of access token that should be included in the Authorziation header of each request
400 Could not get token
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
401 Invalid credentials
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
429 API rate limit exceeded
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
500 Internal server error
Failures detected by a downstream service carry that service's own code, which this reference does not enumerate, so the code field may hold a value not documented here. Treat an unrecognised code as a generic failure of the status it arrives with, and do not branch on a code this reference does not list. show body
application/json ErrorMessage
uuidstringcreatedTimestringcodestringmessagestringdetailstring deprecated
Changelog
What changed and when. Changes that can break an existing integration are marked as such.
API changes
9 November 202611 new
New
- GET
/core/v1/accounting/accounts/{accountCode}/statement— Get the statement of one account for a period: opening balance, all movements, closing balance. - GET
/core/v1/accounting/accounts/{accountCode}/sub-accounts— List the sub-accounts of one account, for example the bank accounts of 1020. - GET
/core/v1/accounting/business-case-templates/{businessCaseTemplateId}/payment-sources— List the payment sources a business case template offers for one payment group. - POST
/core/v1/accounting/document-bookings/paid— Book an uploaded document through a business case as already paid. - GET
/core/v1/accounting/fiscal-years— List the fiscal years of the company with their status. - GET
/core/v1/accounting/kpis/income-expenses— Get the company's income and expenses per month for a period. - GET
/core/v1/accounting/kpis/spendings-and-earnings— Get the company's spendings and earnings for a period, compared with a previous period. - GET
/core/v1/accounting/reports/balance-sheet— Get the balance sheet at a date, optionally with a comparison date. - GET
/core/v1/accounting/reports/general-ledger— Get the general ledger: the statements of all accounts for a period, page by page. - GET
/core/v1/accounting/reports/partner-amounts— Get the open amounts and monthly payments of a customer or supplier, or of all partners. - GET
/core/v1/accounting/reports/profit-and-loss— Get the profit and loss statement for a period, optionally with a comparison period.
20 October 20265 new
New
- GET
/core/v1/accounting/tags— List the tags used on bookings. - GET
/core/v1/bank-transactions— List bank transactions that are not reconciled yet. - GET
/core/v1/bookings— Search the journal: list bookings by text, booking date, amount or tag. - GET
/core/v1/bookings/{bookingId}— Read one booking with all its debit and credit lines. - GET
/core/v1/customers/{customerId}/open-positions— List the open items of one customer or supplier.
7 October 20263 changed · breaking
POST /core/v1/payroll/contracts/{contractId}/payslips/{payslipId}/salary-items.Changed
- PUT
/core/v1/invoices— documentation correction: `order` and `orderItems` have always been required, the specification now lists them. Existing integrations are not affected - POST
/core/v1/invoices— documentation correction: `order` and `orderItems` have always been required, the specification now lists them. Existing integrations are not affected - POST
/core/v1/payroll/contracts/{contractId}/payslips/{payslipId}/salary-items— parameter `query:recalculate` removed
18 September 20261 new · 97 changed
New
- GET
/core/v1/invoices— Search and page the invoices of the authenticated company.
Changed
- GET
/core/latest/article-categories— new parameter `query:offset`; new parameter `query:search-key`; response body now documented for 401 (ErrorMessage), 429 (ErrorMessage) - GET
/core/latest/article-filters— new parameter `query:offset`; new parameter `query:search-key`; response body now documented for 401 (ErrorMessage), 429 (ErrorMessage) - 33 endpoints — response body now documented for 401 (ErrorMessage), 429 (ErrorMessage)
Show the endpoints
- GET
/core/latest/articles - GET
/core/latest/articles/article-and-variants - GET
/core/latest/articles/{article-id} - GET
/core/latest/articles/{article-id}/article-set-items - GET
/core/latest/articles/{article-id}/variants - GET
/core/latest/articles/{article-id}/variants/{variant-id} - GET
/core/latest/company-configuration/including-vat - GET
/core/v1/accounting/accounts - GET
/core/v1/accounting/accounts/account-displaying - GET
/core/v1/accounting/accounts/by-code/{accountCode} - GET
/core/v1/accounting/booking-types - GET
/core/v1/accounting/business-cases - GET
/core/v1/accounting/business-cases/v2 - GET
/core/v1/accounting/business-cases/{businessCaseId} - GET
/core/v1/accounting/companies/current - GET
/core/v1/accounting/companies/current/business-case-templates - GET
/core/v1/accounting/companies/current/financial-years - GET
/core/v1/accounting/currencies/exchange-rate - GET
/core/v1/accounting/master-vats - GET
/core/v1/accounting/master-vats/current - GET
/core/v1/accounting/master-vats/{masterVatId} - GET
/core/v1/accounting/vat-types - GET
/core/v1/accounting/vat-types/{vatTypeId} - GET
/core/v1/order-documents/{order-type}/next-document-number - GET
/core/v1/order-numbering-configurations - GET
/core/v1/orders/next-order-number - POST
/core/latest/article-categories - POST
/core/latest/article-filters - POST
/core/latest/articles - POST
/core/latest/articles/bulk - POST
/core/v1/bookings - PUT
/core/latest/articles/{article-id} - PUT
/core/v1/bookings/{id}/documents
- GET
- 25 endpoints — response body now documented for 401 (ErrorMessage), 404 (ErrorMessage), 429 (ErrorMessage)
Show the endpoints
- DELETE
/core/latest/article-categories/{category-id} - DELETE
/core/latest/article-filters/{filter-id} - DELETE
/core/latest/customers/{customer-id}/additional-addresses/{address-id} - DELETE
/core/latest/customers/{customer-id}/contacts/{contact-id} - GET
/core/latest/article-categories/{category-id} - GET
/core/latest/article-filters/{filter-id} - GET
/core/latest/cities/{city-id} - GET
/core/latest/customers - GET
/core/latest/customers/{customer-id} - GET
/core/latest/customers/{customer-id}/additional-addresses - GET
/core/latest/customers/{customer-id}/contacts - GET
/core/v1/accounting/business-case-templates/{businessCaseTemplateId} - GET
/core/v1/customers - GET
/core/v1/invoices/{id} - POST
/core/latest/article-categories/{category-id}/assign-to-articles - POST
/core/latest/article-filters/{filter-id}/assign-to-articles - POST
/core/latest/customers - POST
/core/latest/customers/{customer-id}/additional-addresses - POST
/core/latest/customers/{customer-id}/contacts - POST
/core/v1/invoices/{id}/send - PUT
/core/latest/article-categories/{category-id} - PUT
/core/latest/article-filters/{filter-id} - PUT
/core/latest/customers/{customer-id} - PUT
/core/latest/customers/{customer-id}/additional-addresses/{address-id} - PUT
/core/latest/customers/{customer-id}/contacts/{contact-id}
- DELETE
- 6 endpoints — response body now documented for 401 (ErrorMessage), 429 (ErrorMessage), 500 (ErrorMessage)
Show the endpoints
- DELETE
/core/latest/articles/{article-id} - DELETE
/core/latest/articles/{article-id}/images/{image-id} - GET
/core/latest/articles/article-numbers - GET
/core/latest/articles/{article-id}/images/{image-id} - GET
/core/v1/order-documents/filter/type-and-order-number - POST
/core/latest/payroll-interface-file
- DELETE
- POST
/core/latest/articles/{article-id}/images— response body now documented for 401 (ErrorMessage), 415 (ErrorMessage), 429 (ErrorMessage), 500 (ErrorMessage) - PUT
/core/latest/articles/{article-id}/images/{image-id}— response body now documented for 401 (ErrorMessage), 415 (ErrorMessage), 429 (ErrorMessage), 500 (ErrorMessage) - GET
/core/latest/articles/search— new parameter `query:search-key`; response body now documented for 401 (ErrorMessage), 429 (ErrorMessage), 500 (ErrorMessage) - POST
/core/latest/companies/{company-id}/documents— response body now documented for 401 (ErrorMessage), 415 (ErrorMessage), 429 (ErrorMessage); response schema renamed, 400: `ErrorMessage1` to `ErrorMessage`; 403: `ErrorMessage1` to `ErrorMessage`; 413: `ErrorMessage1` to `ErrorMessage`; 500: `ErrorMessage1` to `ErrorMessage`. Generated client type names change with it - 5 endpoints — response body now documented for 401 (ErrorMessage)
Show the endpoints
- GET
/core/latest/company-vats - GET
/core/latest/vat-cases - GET
/core/latest/vat-cases/{vat-case-id} - GET
/core/v2/tenants/individuals/profile - POST
/core/v2/tenants/individuals/profile
- GET
- DELETE
/core/latest/customers/{customer-id}— response body now documented for 401 (ErrorMessage), 404 (ErrorMessage), 429 (ErrorMessage); response schema renamed, 400: `ErrorResponse` to `ErrorMessage`. Generated client type names change with it - POST
/core/latest/generic-token— response body now documented for 400 (ErrorMessage), 401 (ErrorMessage), 429 (ErrorMessage), 500 (ErrorMessage) - POST
/core/latest/token— response body now documented for 400 (ErrorMessage), 401 (ErrorMessage), 429 (ErrorMessage), 500 (ErrorMessage) - POST
/core/latest/token/by-microsoft— response body now documented for 400 (ErrorMessage), 401 (ErrorMessage), 429 (ErrorMessage), 500 (ErrorMessage) - 5 endpoints — response body now documented for 429 (ErrorMessage)
Show the endpoints
- GET
/core/v2/tenants/companies - POST
/core/latest/subscriptions - POST
/core/latest/tenants - POST
/core/v2/tenants/companies - PUT
/core/v2/tenants/companies
- GET
- GET
/core/v1/accounting/business-case-templates— new parameter `query:sort-field`; response body now documented for 401 (ErrorMessage), 429 (ErrorMessage) - GET
/core/v1/bank-reconciliation/open-positions— new parameter `query:search-key`; response body now documented for 401 (ErrorMessage), 429 (ErrorMessage) - GET
/core/v1/accounting/vat-profile— new status codes: 429; response body now documented for 401 (ErrorMessage) - GET
/core/v1/accounting/vat-suggestions— new status codes: 429; response body now documented for 401 (ErrorMessage) - 6 endpoints — response body now documented for 401 (ErrorMessage), 404 (ErrorMessage), 429 (ErrorMessage), 500 (ErrorMessage)
Show the endpoints
- GET
/core/v1/company-bank-accounts - GET
/core/v1/invoices/next-invoice-number - POST
/core/v1/invoices - POST
/core/v1/invoices/{id}/printed-document - POST
/core/v1/vat-clearing-reports/{year}/{quarter} - PUT
/core/v1/invoices
- GET
- GET
/core/v1/employees/short-info— new parameter `query:status`; response body now documented for 401 (ErrorMessage), 429 (ErrorMessage), 500 (ErrorMessage); response schema renamed, 400: `ErrorMessage1` to `ErrorMessage`; 403: `ErrorMessage1` to `ErrorMessage`; 404: `ErrorMessage1` to `ErrorMessage`. Generated client type names change with it - POST
/core/v1/payroll/contracts/{contractId}/payslips/{payslipId}/salary-items— response body now documented for 401 (ErrorMessage), 429 (ErrorMessage), 500 (ErrorMessage); response schema renamed, 400: `ErrorMessage1` to `ErrorMessage`; 403: `ErrorMessage1` to `ErrorMessage`; 404: `ErrorMessage1` to `ErrorMessage`. Generated client type names change with it - GET
/core/v1/payroll/employees/{employeeId}/addable-salary-items— response body now documented for 401 (ErrorMessage), 429 (ErrorMessage), 500 (ErrorMessage); response schema renamed, 400: `ErrorMessage1` to `ErrorMessage`; 403: `ErrorMessage1` to `ErrorMessage`; 404: `ErrorMessage1` to `ErrorMessage`. Generated client type names change with it
7 September 20267 changed
Changed
- 7 endpoints — new status codes: 404
Show the endpoints
- GET
/core/latest/customers - GET
/core/latest/customers/{customer-id}/additional-addresses - GET
/core/latest/customers/{customer-id}/contacts - GET
/core/v1/customers - POST
/core/latest/customers - POST
/core/latest/customers/{customer-id}/additional-addresses - POST
/core/latest/customers/{customer-id}/contacts
- GET
31 August 202672 changed
Changed
- 68 endpoints — operationId added, `…`. A generated client used to invent a method name from the path and will now use this id
Show the endpoints
- DELETE
/core/latest/article-categories/{category-id} - DELETE
/core/latest/article-filters/{filter-id} - DELETE
/core/latest/articles/{article-id} - DELETE
/core/latest/articles/{article-id}/images/{image-id} - DELETE
/core/latest/customers/{customer-id} - GET
/core/latest/article-categories - GET
/core/latest/article-categories/{category-id} - GET
/core/latest/article-filters - GET
/core/latest/article-filters/{filter-id} - GET
/core/latest/articles - GET
/core/latest/articles/article-and-variants - GET
/core/latest/articles/article-numbers - GET
/core/latest/articles/search - GET
/core/latest/articles/{article-id} - GET
/core/latest/articles/{article-id}/article-set-items - GET
/core/latest/articles/{article-id}/images/{image-id} - GET
/core/latest/articles/{article-id}/variants - GET
/core/latest/articles/{article-id}/variants/{variant-id} - GET
/core/latest/cities/{city-id} - GET
/core/latest/company-configuration/including-vat - GET
/core/latest/company-vats - GET
/core/latest/customers - GET
/core/latest/customers/{customer-id} - GET
/core/latest/customers/{customer-id}/additional-addresses - GET
/core/latest/customers/{customer-id}/contacts - GET
/core/latest/vat-cases - GET
/core/latest/vat-cases/{vat-case-id} - GET
/core/v1/company-bank-accounts - GET
/core/v1/customers - GET
/core/v1/employees/short-info - GET
/core/v1/invoices/next-invoice-number - GET
/core/v1/invoices/{id} - GET
/core/v1/order-documents/filter/type-and-order-number - GET
/core/v1/order-documents/{order-type}/next-document-number - GET
/core/v1/order-numbering-configurations - GET
/core/v1/orders/next-order-number - GET
/core/v1/payroll/employees/{employeeId}/addable-salary-items - GET
/core/v2/tenants/companies - GET
/core/v2/tenants/individuals/profile - POST
/core/latest/article-categories - POST
/core/latest/article-categories/{category-id}/assign-to-articles - POST
/core/latest/article-filters - POST
/core/latest/article-filters/{filter-id}/assign-to-articles - POST
/core/latest/articles - POST
/core/latest/articles/bulk - POST
/core/latest/articles/{article-id}/images - POST
/core/latest/customers - POST
/core/latest/customers/{customer-id}/additional-addresses - POST
/core/latest/customers/{customer-id}/contacts - POST
/core/latest/generic-token - POST
/core/latest/payroll-interface-file - POST
/core/latest/subscriptions - POST
/core/latest/tenants - POST
/core/latest/token - POST
/core/latest/token/by-microsoft - POST
/core/v1/invoices - POST
/core/v1/invoices/{id}/printed-document - POST
/core/v1/invoices/{id}/send - POST
/core/v1/payroll/contracts/{contractId}/payslips/{payslipId}/salary-items - POST
/core/v2/tenants/companies - POST
/core/v2/tenants/individuals/profile - PUT
/core/latest/article-categories/{category-id} - PUT
/core/latest/article-filters/{filter-id} - PUT
/core/latest/articles/{article-id} - PUT
/core/latest/articles/{article-id}/images/{image-id} - PUT
/core/latest/customers/{customer-id} - PUT
/core/v1/invoices - PUT
/core/v2/tenants/companies
- DELETE
- PUT
/core/latest/customers/{customer-id}/additional-addresses/{address-id}— operationId renamed from `update additional-addresses` to `updateCustomerAdditionalAddress`. Generated method names change with it - DELETE
/core/latest/customers/{customer-id}/additional-addresses/{address-id}— operationId renamed from `delete additional-address` to `deleteCustomerAdditionalAddress`. Generated method names change with it - PUT
/core/latest/customers/{customer-id}/contacts/{contact-id}— operationId renamed from `update CustomerContact` to `updateCustomerContact`. Generated method names change with it - DELETE
/core/latest/customers/{customer-id}/contacts/{contact-id}— operationId renamed from `delete CustomerContact` to `deleteCustomerContact`. Generated method names change with it
28 August 20261 changed
Changed
- POST
/core/latest/generic-token— moved from area Klara authentication generic to KLARA authentication generic
Documentation changes
11 November 2026Permissions confirmed, sending needs a bearer token, booking title
- Permissions confirmed for two accounting endpoints. Booking a document as paid and listing the payment sources of a business case template work for Administrator, External user and Buchhalter. For the payment group of employees, access to payroll is also needed, so Buchhalter receives
403there. - Sending an invoice also needs a bearer token for now. The FAQ on
401now lists four endpoints, and the examples under smart delivery use a bearer token. bookingTitleis not stored. The title KLARA shows is the description of the line with the lowest account code, VAT lines excluded.- New FAQ: whether an API key can be restricted to articles.
9 November 2026Bearer token for three endpoints, VAT notes updated
- Three endpoints currently need a bearer token. Uploading a document, booking a document as paid and fetching the invoice PDF fail with an API key (
401or500). Use a bearer token and send noX-API-KEYheader. See the FAQ on401. autoCalculateVatno longer rejects bookings. The temporary note about400errors is removed.- Do not rely on the recommended VAT suggestion. Choose the VAT rate and account yourself until the recommendation is corrected.
12 October 2026Fewer roles can create and send invoices
Breaking for existing keys. This changed in the KLARA roles, not in the API contract, so the list of API changes above does not show it.
- Since September 2026, Buchhalter, Mitarbeiter und Lohn and Online Terminbuchung no longer hold
FINANCE. Keys with only these roles can no longer create, update, send or list invoices, and no longer update or delete customers. They receive403. This page still listed them until today. For invoicing, use Administrator, External user or Kundenbeziehungen. - Four endpoints check a narrower permission than this page said.
GET /core/v1/invoices/{id}checksFINANCE_GET_INVOICE, so Buchhalter can read a single invoice again.GET /core/latest/customers/{customer-id}checksFINANCE_GET_CUSTOMER. Both VAT reads,GET /core/latest/company-configuration/including-vatandGET /core/latest/company-vats, checkFINANCE_COMPANY_GET_VAT.
9 October 2026Invoice status guide starts from the invoice list
- Showing invoice status in your CRM now starts from the invoice list. Filter with
statusandbooking-statusinstead of keeping every invoice id in your own system. Two older notes that still said invoices could not be listed are gone.
18 September 2026Invoice list, one search pattern, sunset dates and error bodies
- New:
GET /core/v1/invoicesreturns a page of invoices with free-text search, paging and sorting, so you no longer have to keep every invoice id in your own system. It needs theFINANCEpermission. Read the note onstatusbefore you build on it: that parameter is the filter from the KLARA invoice overview, not an equality check on the field.status=OPENreturns rows that readINVOICEDorPAID. Usebooking-statusto filter on the payment state exactly. - The superseded
/core/latestaccounting operations now carry a sunset date: 14 August 2027. From the day after, they answer410 Goneinstead of data. Each one names its/core/v1successor in the contract. Replacing the prefix remains the whole migration. See Path prefixes and what is current. - One search and sort pattern across the API.
search-key,offset,limit,sort-field,sort-directionandstatusare now the names everywhere. Nothing was renamed: the old nameskeyword,general-search,orderColumnsandfilter-by-statuskeep working and are marked deprecated. Send both and the new name wins. - Every error response now carries a documented body. Until now 444 of them declared none. At the same time the duplicate schema
ErrorMessage1is gone, and four operations that used it now answer withErrorMessage. If you generate a client, this is the one change that forces a regeneration: the type name changes, the fields do not. - The contract now names its own error codes in
x-error-codes. There are three today, and the list is not exhaustive on purpose. See What an error body contains. - Pagination on article categories and article filters is fixed. Both accept
offsetnow and return the total in theX-Total-Countheader. Until now they tooklimitwithoutoffset, so nothing beyond the first page was reachable. - The specification names the real host
https://api.klara.chinstead of/, and states in its own description that this is the only environment customers can reach.
7 September 2026Roles for the document upload, and 404 on the customer endpoints
- The document upload now names the roles that may call it.
POST /core/latest/companies/{company-id}/documentslistsCOMPANY_ADMINISTRATOR,TRUSTED_USER,ACCOUNTANT,CUSTOMER_RELATIONSHIP_MANAGER,EMPLOYEEandMYKLARA_USER, and one of them is enough. Until now this endpoint said the requirement was not established. The statement comes from the specification text rather than from the source analysis behind the other permission statements, and the endpoint says so. - Seven customer endpoints now declare
404: reading and creating customers under both/core/latestand/core/v1, plus their additional addresses and contacts. No response body, as with the other error statuses there. If you generate a client, it gains a404branch on those calls. - Nothing was added or removed. 97 endpoints, same paths, same request and response shapes.
31 August 2026Every endpoint now has a stable operationId
- All 97 operations carry an
operationId, 68 of them for the first time. Until now a client generator had to invent method names from the path, and those names changed whenever a path changed. From now on the id is the name. - If you generate a client, expect method names to change once. Where no
operationIdexisted, your generator invented one; it will now use ours. Paths, parameters, request bodies and responses are untouched, so nothing changes on the wire. Regenerate, fix the names in your code, and you are done. - Four ids that contained spaces and could not be used in generated code are corrected:
update additional-addressesis nowupdateCustomerAdditionalAddress,delete additional-addressisdeleteCustomerAdditionalAddress,update CustomerContactisupdateCustomerContact, anddelete CustomerContactisdeleteCustomerContact. - The endpoint set is unchanged: 97 operations, same paths, same permissions.
28 August 2026Machine-readable formats, error bodies, search, roles and superseded paths
- This documentation is now available in machine-readable form.
llms.txtindexes every chapter as a Markdown file and every area of the reference as a Markdown file with parameters, request and response bodies, the required permission and the roles that carry it. Built in the same run as this page, from the same source. The specification itself is unchanged and remains the contract. - The specification is now linked at the top of this page instead of only inside API basics.
- The specification now spells the brand KLARA in capitals, including one tag name that was
Klara authentication generic. If your client generator groups methods by tag, that group is renamed. Paths, parameters and response shapes are untouched. - The superseded
/core/latestaccounting and booking operations are excluded from the published specification, not just left undocumented. They still respond at the API. Each has an identical counterpart under/core/v1, and replacing the prefix is the whole migration. See Path prefixes and what is current. - Error bodies on the authentication endpoints are now listed per endpoint and per status, because the general rule does not hold for them. Three of them declare no body for any error status.
POST /core/latest/tenantsdeclareserroranderror_descriptionfor400,401,403and500, and nothing for429. See Authentication. - Free-text search and filtering by field are now separated, because they are not the same thing. Free-text search exists on six endpoints. 32 endpoints filter by field, with 73 parameters in total, and there you have to know the value you are filtering on. Two endpoints accept a sort order. See Searching and filtering.
- Correction, please check your key: the permission summary of Webshop order to customer and invoice was incomplete. It did not include the permissions of the invoicing steps that flow reuses.
ARTICLE_READ_ONLYandFINANCE_BANK_ACCOUNTare now listed. A key provisioned from the earlier list is short of both. - Correction, the recommended starting role has changed. The getting started guide recommended
Accountant, which cannot read articles, so the first call of the guide answered403. The guide now recommends a role that covers every call it makes.
24 August 2026Rate limit, error responses, pagination and API keys
- The rate limit is at least 10,000 requests per minute, counted per calling IP address, the same on every endpoint. The informational rate limit headers are suppressed at the gateway, so do not expect them. See Limits.
401returnsErrorMessageeven where the specification declares no body.429returns a body produced by the gateway rather than the application. There is no governed catalogue of error codes, so branch on the HTTP status and not on the code.- Pagination has no total count and no guaranteed order, so a full read is a snapshot rather than a transaction.
GET /core/latest/article-categoriesandGET /core/latest/article-filtersacceptlimitwithoutoffset, so only the first page is reachable. - API keys do not expire. You can revoke one yourself with immediate effect under Benutzer, and a last used timestamp is shown per key. The role of a key is fixed when it is created and cannot be changed later.
- Adding a salary item is not idempotent: a retry after a timeout appends a second item.
PUTandDELETEdo not exist on salary items yet, so corrections happen in the KLARA interface. - New endpoints are versioned explicitly and start on
/core/v1. A replaced endpoint stays available for twelve months after it is marked deprecated. - Correction to an earlier statement:
External userholds the same Public API permissions asAdministrator. Choosing it instead of Administrator does not narrow what a key can reach.
17 August 2026Initial publication
- 97 endpoints across accounting, finance, articles, customers, payroll and delivery. Accounting, finance and payroll are served under
/core/v1, articles, customers and authentication under/core/latest. - Every endpoint names the permission it requires and the roles that carry it.
- Eight integration flows with the calls they take and the permissions those calls need in total.
- The full specification is available for download, for generating clients and for contract testing.
Known limitations
We open KLARA step by step rather than all at once. These are the gaps we know about, listed here so you find out before you build rather than halfway through.
- No webhooks. There is no way to be notified of invoice or payment events, so you need to poll, and poll gently. See rate limiting.
- No general order resource. For webshop integrations, create a customer and an invoice instead.
- Free-text search exists on a handful of endpoints only. Everywhere else you need to know the value you are looking for, because filtering by field is not the same as searching. Searching and filtering lists both, counted from the contract.
- Payroll master data is not writable. Variable salary items are writable, see Submitting variable payroll data, but contracts and base salaries are not.
- No appointment booking API, despite the role name in KLARA.
- No
PATCH. Partial updates require a completePUT.
Separately, KLARA operates file-based interfaces for certified payroll partner systems. They are not part of this documentation. If you are a payroll partner, contact support.
Are you blocked by one of these? Tell us via support and describe what you are building. That is what shapes what we open next.
FAQ
Straight answers, including where the API cannot help you yet. Better to find out here than halfway through an integration.
Is an OpenAPI specification available?
Yes. Download it here. Use it to generate clients, mock servers or contract tests.
Can I list all invoices, or filter them by status?
Yes, since 18 September 2026. GET /core/v1/invoices returns a page of invoices
with free-text search, paging and sorting. One thing to know before you build on it: the
status parameter is the filter from the KLARA invoice overview, not an equality
check on the status field of a row. status=OPEN returns rows that
read INVOICED or PAID, because it also looks at the payment state.
Use booking-status when you want to filter on the payment state exactly, and
?status=INVOICED&booking-status=OPEN for «invoiced and not yet paid».
Can I write variable payroll data?
Yes. Add salary items such as hours, allowances and bonuses to an employee's editable payslip. See Submitting variable payroll data. Master data such as contracts and base salaries is still not writable through the API.
Is there a general order API?
No. Order endpoints exist only as a two-step partner protocol and are not part of this documentation. For webshop integrations, create a customer and an invoice instead. See Getting started.
Are there webhooks?
No. You need to poll, and poll gently. See rate limiting. If this blocks your use case, let us know and describe what you are building.
Can I book appointments through the API?
No. Despite the role name, KLARA Online Terminbuchung has no public endpoints. The tag SHRM Booking refers to salary-run bookings, not calendar appointments.
Why do I get a 401 even though my API key is correct?
Check three things first: the key belongs to the company whose data you are requesting, the
header is spelled X-API-KEY, and the user behind the key holds the permission the
endpoint needs. See Roles & permissions. If all three are right and the
call still fails, repeat it with a bearer token instead of the API key, and send only one of the
two headers. If the bearer token works, please tell support which endpoint it was.
Note that the token endpoints themselves take no
authentication at all, listed under Authentication.
Four endpoints currently work only with a bearer token:
POST /core/latest/companies/{company-id}/documents (upload a document),
POST /core/v1/accounting/document-bookings/paid (book a document as paid),
POST /core/v1/invoices/{id}/printed-document (invoice PDF) and
POST /core/v1/invoices/{id}/send (send an invoice). With an API key they
return 401 or 500. Use a bearer token and send no
X-API-KEY header.
Can I restrict an API key to articles only?
No. A key carries the roles chosen when it was created, and there is no role for articles only. The narrowest roles are Zeit- und Materialrapporte, which can read articles, and Kundenbeziehungen, which can read and write them. Both reach more than articles. See Roles & permissions.
Why do ePost and eBill appear in a KLARA API?
They are delivery channels for KLARA invoices, not separate products you need to integrate. See Sending documents. If you are building on the ePost Communication Platform itself, you want developer.epost.ch.
Why is my use case not supported?
We open KLARA step by step rather than all at once. The gaps we already know about are listed under Known limitations. If yours is not there, tell us via support and describe what you are building. That is what shapes what we open next.
Support
Questions and problem reports: support.klara.ch. When
reporting an error, include the uuid from the error response and the steps to
reproduce it, but never your API key or any credentials.
Every release is recorded in the changelog, including breaking changes.