KASSA.AT API-Dokumentation
Die KASSA.AT API ermöglicht die Integration von Kassendaten in externe Systeme. Alle Endpunkte sind unter der folgenden Basis-URL erreichbar:
https://<company_dns>.kassa.at/api/v1/
<company_dns> ist der individuelle DNS-Name Ihrer Firma.
Authentifizierung
Alle API-Aufrufe benötigen einen Bearer Token im Authorization-Header:
Authorization: <api_token> Content-Type: application/json
Globale Fehler
Diese Fehler können bei jedem Aufruf auftreten.
| HTTP Status | Bedeutung |
|---|---|
| 400 | Bad Request — Parametervalidierung fehlgeschlagen |
| 401 | Unauthorized — Kein oder falscher Token / falsche Subdomain |
| 429 | Too Many Requests — Rate Limit überschritten |
400 Bad Request (Parametervalidierung fehlgeschlagen)
Die error_codes stammen aus der 1000er Reihe. Mehrere Fehler werden kommagetrennt im details-Array zurückgegeben.
{
"status": 400,
"error_code": 1000,
"error": "Parametervalidation failed!",
"details": [
{
"error_code": 1003,
"error": "Parameter is not set!",
"error_message": "Parameter 'username' is not set!"
},
{
"error_code": 1004,
"error": "Parameter is not set!",
"error_message": "Parameter 'password' is not set!"
}
]
}
401 Unauthorized (Kein Token übermittelt)
{
"status": 401,
"error_code": 2009,
"error": "Unauthorized!",
"details": [
{
"error_code": 2003,
"error": "Unauthorized!",
"error_message": "No token given!"
}
]
}
401 Unauthorized (Falscher Token übermittelt)
{
"status": 401,
"error_code": 2009,
"error": "Unauthorized!",
"details": [
{
"error_code": 2004,
"error": "Unauthorized!",
"error_message": "Token is invalid!"
}
]
}
401 Unauthorized (Falsche oder keine Subdomain)
Jeder Aufruf (ausgenommen Tokenerstellung und Companyerstellung) benötigt eine Subdomain. Sollte keine oder eine falsche Subdomain übergeben werden, wird dieser Fehler zurückgegeben.
{
"status": 401,
"error_code": 2001,
"error": "Company missing!",
"details": [
{
"error_code": 2001,
"error": "Company missing!",
"error_message": "No company in subdomain!"
}
]
}
/authentications
Die authentication-Aufrufe sind zur Erstellung von API-Tokens.
2.1.1 /create
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| company_dns | string | Pflicht | DNS-Name der Firma (3–32 Zeichen) |
| username | string | Pflicht | Benutzername des Administrators (3–64 Zeichen) |
| password | string | Pflicht | Passwort (8–72 Zeichen) |
| description | string | Optional | Beschreibung für diesen Token |
curl -X POST https://api.kassa.at/api/v1/authentications/ \
-H 'Content-Type: application/json' \
-d '{"company_dns":"meinefirma","username":"admin","password":"meinpasswort","description":"System XY"}'
{"status":200,"data":[{"token":"224ac7a5-d4cc8055a2fe479b","description":"System XY","company":"meinefirma"}]}
2.1.2 /authenticate
Prüft ob ein Token gültig ist und gibt die zugehörigen Daten zurück. Keine weiteren Parameter — Authentifizierung erfolgt ausschließlich über den Authorization-Header.
curl -X GET https://api.kassa.at/api/v1/authentications/authenticate \ -H 'authorization: <api_token>'
{
"status": 200,
"data": [
{
"token": "224ac7a5-d4cc8055a2fe479b",
"description": "System XY",
"company": "meinefirma"
}
]
}
/companies
2.2.1 /create
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| company | string | Pflicht | Name der Firma (<64 Zeichen) |
| company_dns | string | Pflicht | Gewünschter DNS-Name (3–32 Zeichen) |
| username | string | Pflicht | Admin-Benutzername |
| password | string | Pflicht | Passwort (8–72 Zeichen) |
| string | Pflicht | E-Mail-Adresse (<64 Zeichen, gültiges Format) | |
| silent | bool | Optional | Keine Bestätigungs-E-Mail senden. Werte: true, false |
curl -X POST https://api.kassa.at/api/v1/companies/ \
-H 'Content-Type: application/json' \
-d '{"company":"Meine Firma GmbH","company_dns":"meinefirma","username":"admin","password":"meinpasswort","email":"admin@meinefirma.at"}'
{
"status": 200,
"data": [
{
"company_dns": "meinefirma",
"company": "Meine Firma GmbH"
}
]
}
2.2.2 /determine_dns_name
Gibt einen verfügbaren DNS-Vorschlag basierend auf dem Firmennamen zurück.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| company | string | Pflicht | Firmenname, für den ein DNS-Vorschlag generiert werden soll |
curl -X GET 'https://api.kassa.at/api/v1/companies/determine_dns_name?company=Meine+Firma+GmbH'
{
"status": 200,
"data": [
{
"company_dns": "meinefirmagmbh"
}
]
}
/articles
2.3.1 /index
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| pagination_limit | int | Optional | Einträge pro Seite |
| pagination_page | int | Optional | Seitennummer |
| query | string | Optional | Volltext-Suche |
| sort | string | Optional | Sortierfeld und Richtung |
| fields | string | Optional | Kommagetrennte Feldliste für Rückgabe (z. B. id,line_item_name,article_number) |
| filter_id | string | Optional | Filter nach interner ID |
| filter_company_article_id | string | Optional | Filter nach firmeninterner Artikel-ID |
| filter_line_item_name | string | Optional | Filter nach Artikelname |
| filter_article_number | string | Optional | Filter nach Artikelnummer |
| filter_bar_code | string | Optional | Filter nach Barcode 1 |
| filter_bar_code_2 | string | Optional | Filter nach Barcode 2 |
| filter_product_name | string | Optional | Filter nach Produktname |
| filter_product_type | string | Optional | Filter nach Produkttyp |
| filter_brand | string | Optional | Filter nach Marke |
| filter_manufacturer | string | Optional | Filter nach Hersteller |
| filter_supplier_article_number | string | Optional | Filter nach Lieferantenartikelnummer |
| filter_product_description | string | Optional | Filter nach Produktbeschreibung |
| filter_attribute | string | Optional | Filter über alle Attributfelder (attribute1–5) |
| filter_variant_description | string | Optional | Filter nach Variantenbeschreibung |
| filter_unit | string | Optional | Filter nach Einheit |
| filter_default_quantity | string | Optional | Filter nach Standardmenge |
| filter_gross_amount_per_item | string | Optional | Filter nach Bruttopreis |
| filter_sales_tax_percentage | string | Optional | Filter nach Steuersatz |
| filter_favourite | bool | Optional | Nur Favoriten (true) oder nicht-Favoriten (false) |
| filter_food | bool | Optional | Nur Speisen (true) oder nicht (false) |
| filter_drink | bool | Optional | Nur Getränke (true) oder nicht (false) |
| filter_product_category_id | string | Optional | Filter nach Kategorie-ID |
{
"status": 200,
"data": [
{
"id": 1,
"line_item_name": "Testartikel",
"article_number": "ART001",
"gross_amount_per_item": "9.99",
"sales_tax_percentage": "20.0",
"default_quantity": "1.0",
"unit": "Stk",
"bar_code": null,
"bar_code_2": null,
"favourite": false,
"food": false,
"drink": false
}
],
"pagination": {
"total": 1,
"page": 1,
"limit": 20
}
}
2.3.2 /create
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| line_item_name | string | Pflicht | Artikelname (<250 Zeichen) |
| gross_amount_per_item | float | Pflicht | Bruttopreis |
| sales_tax_percentage | float | Pflicht | Steuersatz: 0, 10, 13, 20 |
| default_quantity | float | Pflicht | Standardmenge |
| article_number | string | Optional | Artikelnummer |
| unit | string | Optional | Einheit (z. B. Stk, kg) |
| bar_code | string | Optional | Barcode 1 |
| bar_code_2 | string | Optional | Barcode 2 |
| product_name | string | Optional | Produktname (für Anzeige) |
| product_type | string | Optional | Produkttyp |
| brand | string | Optional | Marke |
| manufacturer | string | Optional | Hersteller |
| supplier_article_number | string | Optional | Lieferantenartikelnummer |
| product_description | string | Optional | Produktbeschreibung |
| attribute1 | string | Optional | Attributfeld 1 |
| attribute2 | string | Optional | Attributfeld 2 |
| attribute3 | string | Optional | Attributfeld 3 |
| attribute4 | string | Optional | Attributfeld 4 |
| attribute5 | string | Optional | Attributfeld 5 |
| variant_description | string | Optional | Variantenbeschreibung |
| favourite | bool | Optional | Als Favorit markieren (true/false) |
| food | bool | Optional | Als Speise kennzeichnen (true/false) |
| drink | bool | Optional | Als Getränk kennzeichnen (true/false) |
| manual_gross_amount_entry | bool | Optional | Preis manuell eingeben (true/false) |
| manual_quantity_entry | bool | Optional | Menge manuell eingeben (true/false) |
| print_price_per_kg | bool | Optional | Preis pro kg drucken (true/false) |
| print_pickup_number | bool | Optional | Abholnummer drucken (true/false) |
| product_category_id | string | Optional | Kommagetrennte Kategorie-IDs |
{
"status": 201,
"data": [
{
"id": 42,
"line_item_name": "Testartikel",
"article_number": "ART001",
"gross_amount_per_item": "9.99",
"sales_tax_percentage": "20.0",
"default_quantity": "1.0",
"unit": "Stk"
}
]
}
2.3.3 /delete
{"status": 200, "data": []}
2.3.4 /update
Aktualisiert einen Artikel. Alle Parameter aus /create können optional übergeben werden. Nur geänderte Felder müssen übermittelt werden.
{
"status": 200,
"data": [
{
"id": 42,
"line_item_name": "Testartikel (aktualisiert)",
"gross_amount_per_item": "12.99",
"sales_tax_percentage": "20.0",
"default_quantity": "1.0"
}
]
}
2.3.5 /product_categories
{
"status": 200,
"data": [
{
"id": 3,
"name": "Getränke",
"color": "#29ABE2"
}
]
}
/customers
2.4.1 /index
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| pagination_limit | int | Optional | Einträge pro Seite |
| pagination_page | int | Optional | Seitennummer |
| query | string | Optional | Volltext-Suche |
| sort | string | Optional | Sortierfeld und Richtung |
| fields | string | Optional | Kommagetrennte Feldliste für Rückgabe |
| filter_id | string | Optional | Filter nach interner ID |
| filter_company_customer_id | string | Optional | Filter nach firmeninterner Kunden-ID |
| filter_customer_number | string | Optional | Filter nach Kundennummer |
| filter_company_name | string | Optional | Filter nach Firmenname |
| filter_first_name | string | Optional | Filter nach Vorname |
| filter_last_name | string | Optional | Filter nach Nachname |
| filter_address | string | Optional | Filter nach Adresse |
| filter_city | string | Optional | Filter nach Stadt |
| filter_zip | string | Optional | Filter nach PLZ |
| filter_country | string | Optional | Filter nach Land |
| filter_phone_number | string | Optional | Filter nach Telefonnummer |
| filter_fax_number | string | Optional | Filter nach Faxnummer |
| filter_email | string | Optional | Filter nach E-Mail |
| filter_uid | string | Optional | Filter nach UID-Nummer |
| filter_tax_number | string | Optional | Filter nach Steuernummer |
| filter_notice | string | Optional | Filter über alle Notizfelder (notice_1–3) |
{
"status": 200,
"data": [
{
"id": 7,
"customer_number": "K-0001",
"company_name": "Musterfirma GmbH",
"first_name": "Max",
"last_name": "Mustermann",
"address": "Musterstraße 1",
"city": "Wien",
"zip": "1010",
"country": "Österreich",
"phone_number": "+43 1 234567",
"email": "max@musterfirma.at",
"deleted": false
}
],
"pagination": {
"total": 1,
"page": 1,
"limit": 20
}
}
2.4.2 /create
Alle Parameter sind optional — mindestens ein Pflichtfeld muss jedoch angegeben werden.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| company_name | string | Optional | Firmenname des Kunden |
| first_name | string | Optional | Vorname |
| last_name | string | Optional | Nachname |
| address | string | Optional | Straße und Hausnummer |
| city | string | Optional | Stadt |
| zip | string | Optional | Postleitzahl |
| country | string | Optional | Land |
| phone_number | string | Optional | Telefonnummer |
| fax_number | string | Optional | Faxnummer |
| string | Optional | E-Mail-Adresse | |
| uid | string | Optional | UID-Nummer |
| tax_number | string | Optional | Steuernummer |
| customer_number | string | Optional | Kundennummer |
| notice_1 | string | Optional | Notizfeld 1 |
| notice_2 | string | Optional | Notizfeld 2 |
| notice_3 | string | Optional | Notizfeld 3 |
{
"status": 201,
"data": [
{
"id": 7,
"customer_number": "K-0001",
"first_name": "Max",
"last_name": "Mustermann",
"email": "max@musterfirma.at"
}
]
}
2.4.3 /update
Alle Felder aus /create können optional übergeben werden — nur geänderte Felder müssen übermittelt werden.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | int | Pflicht | Interne Kunden-ID (in URL) |
| company_name | string | Optional | Firmenname |
| first_name | string | Optional | Vorname |
| last_name | string | Optional | Nachname |
| address | string | Optional | Straße und Hausnummer |
| city | string | Optional | Stadt |
| zip | string | Optional | Postleitzahl |
| country | string | Optional | Land |
| phone_number | string | Optional | Telefonnummer |
| fax_number | string | Optional | Faxnummer |
| string | Optional | E-Mail-Adresse | |
| uid | string | Optional | UID-Nummer |
| tax_number | string | Optional | Steuernummer |
| customer_number | string | Optional | Kundennummer |
| notice_1 | string | Optional | Notizfeld 1 |
| notice_2 | string | Optional | Notizfeld 2 |
| notice_3 | string | Optional | Notizfeld 3 |
{"status": 200, "data": []}
2.4.4 /delete
Setzt das deleted-Flag des Kunden auf true.
{"status": 200, "data": []}
2.4.5 /customer_number
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| customer_number | string | Pflicht | Kundennummer nach der gesucht wird |
{
"status": 200,
"data": [
{
"id": 7,
"customer_number": "K-0001",
"first_name": "Max",
"last_name": "Mustermann"
}
]
}
2.4.6 /addresses
Gibt Adressfelder (address, city, zip, country) des Kunden zurück.
{
"status": 200,
"data": [
{
"address": "Musterstraße 1",
"city": "Wien",
"zip": "1010",
"country": "Österreich"
}
]
}
2.4.7 /contacts
Gibt Kontaktfelder (company_name, first_name, last_name, phone_number, email, fax_number) des Kunden zurück.
{
"status": 200,
"data": [
{
"company_name": "Musterfirma GmbH",
"first_name": "Max",
"last_name": "Mustermann",
"phone_number": "+43 1 234567",
"email": "max@musterfirma.at",
"fax_number": null
}
]
}
2.4.8 /invoices
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| id | int | Pflicht | Interne Kunden-ID (in URL) |
| pagination_limit | int | Optional | Einträge pro Seite |
| pagination_page | int | Optional | Seitennummer |
| sort | string | Optional | Sortierfeld und Richtung |
| fields | string | Optional | Kommagetrennte Feldliste für Rückgabe |
{
"status": 200,
"data": [
{
"id": 101,
"invoiceno": "RE-2024-001",
"date": "25.06.2024",
"total": "49.90",
"payment_method": "cash"
}
],
"pagination": {
"total": 1,
"page": 1,
"limit": 20
}
}
/warehouses
2.5.1 /index
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| deleted | bool | Optional | Nur gelöschte (true) oder nur aktive (false) Lager zurückgeben. Mögliche Werte: true, false, "true", "false" |
{
"status": 200,
"data": [
{
"id": 1,
"description": "Standard Lager",
"deleted": false
},
{
"id": 2,
"description": "Außenlager",
"deleted": false
}
]
}
/inventories
2.6.1 /index
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| warehouse_id | int | Pflicht | ID des Lagers (in URL) |
| article_number | string | Optional | Filter nach einer Artikelnummer |
| article_numbers | string / array | Optional | Filter nach mehreren Artikelnummern. Kommagetrennt oder als Array. |
| article | int | Optional | Filter nach interner Artikel-ID |
| active | bool | Optional | Nur aktive oder inaktive Inventories |
| inspect_stock | bool | Optional | Wenn true: aktuellen Lagerstand im Feld stock zurückgeben |
Retry-After-Header.{
"status": 200,
"data": [
{
"id": 15,
"article": {
"id": 2,
"line_item_name": "Testartikel",
"article_number": "ART001"
},
"warehouse": {
"id": 1,
"description": "Standard Lager"
},
"active": true,
"warning_at": 5,
"stock": "13.42"
}
]
}
2.6.2 /search NEU
POST-Variante von /index — identische Parameter, ideal für große Artikelnummer-Arrays im Body. Antwortstruktur identisch mit 2.6.1.
curl -X POST https://<company_dns>.kassa.at/api/v1/warehouses/1/inventories/search \
-H 'Content-Type: application/json' \
-H 'authorization: <api_token>' \
-d '{"article_numbers": ["ART001","ART002","ART003"], "inspect_stock": true}'
2.6.3 /stock (GET)
{
"status": 200,
"data": [
{
"stock": "13.42"
}
]
}
2.6.4 /stock (POST)
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| quantity | float | Pflicht | Neuer absoluter Lagerstand |
| text | string | Optional | Beschreibung der Lagerbewegung (<100 Zeichen) |
curl -X POST https://<company_dns>.kassa.at/api/v1/warehouses/1/inventories/15/stock \
-H 'Content-Type: application/json' \
-H 'authorization: <api_token>' \
-d '{"quantity": 13.42, "text": "Lagerstandsprüfung: Mai"}'
{
"status": 200,
"data": [
{
"inventory": {
"id": 15,
"article": {
"id": 2,
"line_item_name": "Dies ist ein Testartikel",
"article_number": null
},
"warehouse": {
"id": 1,
"description": "Standard Lager"
},
"warning_at": 5,
"created_at": {"format": "DD.MM.YYYY hh:mm:ss", "localized": "05.07.2018 11:25"},
"updated_at": {"format": "DD.MM.YYYY hh:mm:ss", "localized": "05.07.2018 11:25"}
},
"old_stock": "-4.0",
"new_stock": "13.42"
}
]
}
{
"status": 400,
"error_code": 3000,
"error": "Object not found!",
"details": [
{
"error_code": 3008,
"error": "Object not found!",
"error_message": "No warehouse found with given parameter!"
}
]
}
/movements
2.7.1 /create
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| quantity | float | Pflicht | Menge (positiv = Zugang, negativ = Abgang) |
| text | string | Optional | Beschreibung (<100 Zeichen) |
| type | string | Optional | Erzwingt Richtung: "increase" oder "decrease" |
curl -X POST https://<company_dns>.kassa.at/api/v1/warehouses/1/inventories/15/movements \
-H 'Content-Type: application/json' \
-H 'authorization: <api_token>' \
-d '{"quantity": -2, "text": "Ich hatte hunger"}'
{
"status": 201,
"data": [
{
"id": 3010,
"inventory": {
"id": 15,
"article": {
"id": 2,
"line_item_name": "Dies ist ein Testartikel"
},
"warehouse": {
"id": 1,
"description": "Standard Lager"
},
"old_stock": "13.42",
"new_stock": "11.42"
},
"quantity": "-2.0",
"description": "Ich hatte hunger",
"created_at": {"format": "DD.MM.YYYY hh:mm:ss", "localized": "11.01.2021 11:49"},
"updated_at": {"format": "DD.MM.YYYY hh:mm:ss", "localized": "11.01.2021 11:49"}
}
]
}
{
"status": 400,
"error_code": 3000,
"error": "Object not found!",
"details": [
{
"error_code": 3008,
"error": "Object not found!",
"error_message": "No warehouse found with given parameter!"
}
]
}
/manual_receipts NEU in v1.3
Nacherfassen und Abrufen von Handbons (RKSV-konform signiert).
2.8.1 /create
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| invoiceno | string / int | Pflicht | Belegnummer (<80 Zeichen) |
| date | string | Pflicht | Belegdatum: dd.mm.yyyy oder yyyy-mm-dd |
| price | float / string | Pflicht | Bruttobetrag. Dezimaltrennzeichen: Punkt oder Komma (als String) |
| tax | int | Pflicht | Steuersatz. Üblicherweise 0. Möglich: 0, 10, 13, 20 |
| payment_method | string | Pflicht | Z. B. "cash", "card", "other" |
| username | string | Optional | Kassier-Benutzer |
| register_number | string | Optional | Kassanummer |
| file_return | string | Optional | "no-file" → nur JSON | "base64" → PDF als Base64 | weggelassen → PDF-Download |
curl -X POST https://<company_dns>.kassa.at/api/v1/manual_receipts \
-H 'Content-Type: application/json' \
-H 'authorization: <api_token>' \
-d '{"invoiceno":"RE-2024-001","date":"25.06.2024","price":"49.90","tax":0,"payment_method":"cash","file_return":"no-file"}'
curl -X POST https://<company_dns>.kassa.at/api/v1/manual_receipts \
-H 'Content-Type: application/json' \
-H 'authorization: <api_token>' \
-d '{"invoiceno":"RE-2024-001","date":"25.06.2024","price":"49.90","tax":0,"payment_method":"cash"}' \
--output beleg.pdf
2.8.2 /index
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| number | int | Optional* | Interne Rechnungsnummer |
| invoiceno | string | Optional* | Handbon-Belegnummer |
| register_number | string | Optional | Suche auf eine Kasse einschränken |
| file_return | string | Optional | "base64" oder weggelassen (PDF-Download) |
* Entweder number oder invoiceno ist verpflichtend.
Error Codes
1000er — Parametervalidierung
Die Fehler der 1000er Reihe beschreiben Parametervalidierungsfehler.
| Code | error | error_message |
|---|---|---|
| 1000 | Parametervalidation failed! | Parametervalidation failed! |
| 1001 | Parameter is not set! | Parameter 'company' is not set! |
| 1002 | Parameter is not set! | Parameter 'company_dns' is not set! |
| 1003 | Parameter is not set! | Parameter 'username' is not set! |
| 1004 | Parameter is not set! | Parameter 'password' is not set! |
| 1005 | Parameter is not set! | Parameter 'email' is not set! |
| 1006 | Parameter is invalid! | Parameter 'company' doesn't match expected length (<64)! |
| 1007 | Parameter is invalid! | Parameter 'company_dns' includes forbidden characters (a-z A-Z 0-9 - _)! |
| 1008 | Parameter is invalid! | Parameter 'company_dns' doesn't match expected length (3..32)! |
| 1009 | Parameter is invalid! | Parameter 'company_dns' is already used! |
| 1010 | Parameter is invalid! | Parameter 'username' doesn't match expected length (3..64)! |
| 1011 | Parameter is invalid! | Parameter 'password' doesn't match expected length (8..72)! |
| 1012 | Parameter is invalid! | Parameter 'email' is invalid! |
| 1013 | Parameter is not set! | Parameter 'line_item_name' is not set! |
| 1014 | Parameter is not set! | Parameter 'quantity' is not set! |
| 1015 | Parameter is not set! | Parameter 'gross_amount_per_item' is not set! |
| 1026 | Parameter is not set! | Parameter 'sales_tax_percentage' is not set! |
| 1027 | Parameter is invalid! | Parameter 'line_item_name' doesn't match expected length (<250)! |
| 1028 | Parameter is invalid! | Parameter 'quantity' is not the right format. Check the documentation to see the right format! |
| 1029 | Parameter is invalid! | Parameter 'gross_amount_per_item' is not the right format. Check the documentation to see the right format! |
| 1030 | Parameter is invalid! | Parameter 'sales_tax_percentage' must be '0', '10', '13', '20' or '5'! |
| 1031 | Parameter is invalid! | Well done. You found a hidden achievement. Parameter 'product_description' doesn't match expected length (<15000000)! Did you do that on purpose? |
| 1032 | Parameter is invalid! | Parameter 'article' must be an integer (0-9)! |
| 1035 | Parameter is invalid! | Parameter 'deleted' must be 'true' or 'false'! |
| 1036 | Parameter is not set! | Parameter 'warehouse_id' is not set! |
| 1037 | Parameter is invalid! | Parameter 'warehouse_id' must be an integer (0-9)! |
| 1038 | Parameter is invalid! | Parameter 'active' must be 'true' or 'false'! |
| 1039 | Parameter is not set! | Parameter 'inventory_id' is not set! |
| 1040 | Parameter is invalid! | Parameter 'inventory_id' must be an integer (0-9)! |
| 1041 | Parameter is invalid! | Parameter 'text' doesn't match expected length (0..100)! |
| 1042 | Parameter is invalid! | Parameter 'type' must be 'increase' or 'decrease'! |
| 1043 | Parameter is invalid! | Parameter 'inspect_stock' must be true or false! |
| 1044 | Parameter is invalid! | Parameter 'description' doesn't match expected length (<250)! |
| 1045 | Parameter is invalid! | Parameter 'article_number' doesn't match expected length (0..60)! |
| 1046 | Parameter is invalid! | Parameter 'quantity' can't be 0! |
| 1047 | Parameter is not set! | Parameter 'test_mode' is not set! |
| 1048 | Parameter is invalid! | Parameter 'test_mode' must be 'true' or 'false'! |
| 1049 | Parameter is invalid! | Parameter 'silent' must be 'true' or 'false'! |
| 1050 | Parameter is not set! | Parameter 'pagination_limit' is not set, while 'pagination_page' is set! |
| 1051 | Parameter is not set! | Parameter 'pagination_page' is not set, while 'pagination_limit' is set! |
| 1052 | Parameter is invalid! | Parameter 'pagination_limit' must be an integer (0-9)! |
| 1053 | Parameter is invalid! | Parameter 'pagination_page' must be an integer (0-9)! |
| 1054 | Parameter is invalid! | Parameter 'sort' is not the right format. Check the documentation to see the right format! |
| 1055 | Parameter is invalid! | Parameter 'filter_id' must be an integer (0-9)! But filteroperators can be used as shown in the documentation! |
| 1056 | Parameter is invalid! | Parameter 'filter_company_article_id' must be an integer (0-9)! But filteroperators can be used as shown in the documentation! |
| 1057 | Parameter is invalid! | Parameter 'filter_default_quantity' is not the right format. Check the documentation to see the right format! |
| 1058 | Parameter is invalid! | Parameter 'filter_sales_tax_percentage' must be '0', '10', '13', '20' or '5'! But filteroperators can be used as shown in the documentation! |
| 1059 | Parameter is invalid! | Parameter 'filter_gross_amount_per_item' is not the right format. Check the documentation to see the right format! |
| 1060 | Parameter is invalid! | Parameter 'filter_favourite' must be 'true' or 'false'! |
| 1061 | Parameter is invalid! | Parameter 'filter_food' must be 'true' or 'false'! |
| 1062 | Parameter is invalid! | Parameter 'filter_drink' must be 'true' or 'false'! |
| 1063 | Parameter is invalid! | Parameter 'filter_product_category_id' must be an integer (0-9)! But filteroperators can be used as shown in the documentation! |
| 1064 | Parameter not allowed! | Parameter 'fields' does not allow value '{fieldname}'! Read the documentation to see what fieldnames are allowed in this action! |
| 1065 | Parameter not allowed! | Parameter '{parameter_key}' is not an allowed filter! Read the documentation to see what filters are allowed in this action! |
| 1066 | Parameter is not set! | Parameter 'default_quantity' is not set! |
| 1067 | Parameter is invalid! | Parameter 'default_quantity' is not the right format. Check the documentation to see the right format! |
| 1068 | Parameter is invalid! | Parameter 'unit' doesn't match expected length (<10)! |
| 1069 | Parameter is invalid! | Parameter 'bar_code' doesn't match expected length (<60)! |
| 1070 | Parameter is invalid! | Parameter 'bar_code_2' doesn't match expected length (<60)! |
| 1071 | Parameter is invalid! | Parameter 'article_number' doesn't match expected length (<60)! |
| 1072 | Parameter is invalid! | Parameter 'product_name' doesn't match expected length (<60)! |
| 1073 | Parameter is invalid! | Parameter 'product_type' doesn't match expected length (<60)! |
| 1074 | Parameter is invalid! | Parameter 'brand' doesn't match expected length (<60)! |
| 1075 | Parameter is invalid! | Parameter 'manufacturer' doesn't match expected length (<60)! |
| 1076 | Parameter is invalid! | Parameter 'supplier_article_number' doesn't match expected length (<60)! |
| 1077 | Parameter is invalid! | Parameter 'attribute1' doesn't match expected length (<60)! |
| 1078 | Parameter is invalid! | Parameter 'attribute2' doesn't match expected length (<60)! |
| 1079 | Parameter is invalid! | Parameter 'attribute3' doesn't match expected length (<60)! |
| 1080 | Parameter is invalid! | Parameter 'attribute4' doesn't match expected length (<60)! |
| 1081 | Parameter is invalid! | Parameter 'attribute5' doesn't match expected length (<60)! |
| 1082 | Parameter is invalid! | Parameter 'variant_description' doesn't match expected length (<60)! |
| 1083 | Parameter is invalid! | Parameter 'favourite' must be 'true' or 'false'! |
| 1084 | Parameter is invalid! | Parameter 'food' must be 'true' or 'false'! |
| 1085 | Parameter is invalid! | Parameter 'drink' must be 'true' or 'false'! |
| 1086 | Parameter is invalid! | Parameter 'product_category_id' is not the right format. Check the documentation to see the right format! |
| 1087 | Parameter is invalid! | Parameter 'manual_gross_amount_entry' must be 'true' or 'false'! |
| 1088 | Parameter is invalid! | Parameter 'manual_quantity_entry' must be 'true' or 'false'! |
| 1089 | Parameter is invalid! | Parameter 'print_price_per_kg' must be 'true' or 'false'! |
| 1090 | Parameter is invalid! | Parameter 'print_pickup_number' must be 'true' or 'false'! |
| 1091 | Parameter is not set! | Parameter 'article_id' is not set! |
| 1092 | Parameter is invalid! | Parameter 'article_id' must be an integer (0-9)! |
| 1093 | Parameter not allowed | Parameter 'fields' can not start or end with ','! |
| 1094 | Parameter is invalid! | Parameter 'filter_company_customer_id' must be an integer (0-9)! But filteroperators can be used as shown in the documentation! |
| 1095 | Parameter is invalid! | Parameter 'company_name' doesn't match expected length (<120)! |
| 1096 | Parameter is invalid! | Parameter 'first_name' doesn't match expected length (<100)! |
| 1097 | Parameter is invalid! | Parameter 'last_name' doesn't match expected length (<100)! |
| 1098 | Parameter is invalid! | Parameter 'address' doesn't match expected length (<100)! |
| 1099 | Parameter is invalid! | Parameter 'city' doesn't match expected length (<100)! |
| 1100 | Parameter is invalid! | Parameter 'zip' doesn't match expected length (<100)! |
| 1101 | Parameter is invalid! | Parameter 'country' doesn't match expected length (<100)! |
| 1102 | Parameter is invalid! | Parameter 'phone_number' doesn't match expected length (<100)! |
| 1103 | Parameter is invalid! | Parameter 'fax_number' doesn't match expected length (<100)! |
| 1104 | Parameter is invalid! | Parameter 'email' doesn't match expected length (<100)! |
| 1105 | Parameter is invalid! | Parameter 'uid' doesn't match expected length (<100)! |
| 1106 | Parameter is invalid! | Parameter 'tax_number' doesn't match expected length (<100)! |
| 1107 | Parameter is invalid! | Parameter 'customer_number' doesn't match expected length (<60)! |
| 1108 | Parameter is invalid! | Parameter 'notice_1' doesn't match expected length (<240)! |
| 1109 | Parameter is invalid! | Parameter 'notice_2' doesn't match expected length (<240)! |
| 1110 | Parameter is invalid! | Parameter 'notice_3' doesn't match expected length (<240)! |
| 1111 | Parameter is invalid! | Parameter 'customer_id' must be an integer (0-9)! |
| 1112 | Parameter is not set! | Parameter 'customer_number' is not set! |
2000er — Authentifizierung
Die Fehler dieser Nummern beschreiben einen Fehler bei der Authentifizierung.
| Code | error | error_message |
|---|---|---|
| 2000 | Company missing! | No company with given dns_name! |
| 2001 | Company missing! | No company in subdomain! |
| 2002 | User invalid! | Username or password invalid or not an admin! |
| 2003 | Unauthorized! | No token given! |
| 2004 | Unauthorized! | Token is invalid! |
| 2008 | User invalid! | User invalid! |
| 2009 | Unauthorized! | Unauthorized! |
| 2010 | Operation not possible! | Operation not possible! |
3000er — Objekt nicht gefunden
Fehler der 3000er Serie zeigen an, dass durch eingegebene Daten kein Ergebnis gefunden wurde, z.B. eine ID in der URL zeigt auf keinen existierenden Eintrag.
| Code | error | error_message |
|---|---|---|
| 3000 | Object not found! | Object not found! |
| 3007 | Object not found! | No inventory found with given parameter! |
| 3008 | Object not found! | No warehouse found with given parameter! |
| 3009 | Object not found! | No user found with given parameter! |
| 3010 | Object not found! | No product_category found with given parameter (id: {id-number})! |
| 3011 | Object not found! | No article found with given parameter (article_id: {article_id})! |
| 3012 | Object not found! | No customer found with given parameter (customer_id: {customer_id})! |
| 3013 | Object not found! | No invoice found with given parameters (...) |
4000er — Operation nicht möglich
Fehler der 4000er Reihe zeigen an, dass eine Funktion (momentan) nicht ausgeführt werden kann. Dies kann an Settings liegen, die die Funktion stören, oder Parameter, mit denen die Funktion nicht arbeiten kann.
| Code | error | error_message |
|---|---|---|
| 4006 | No possible value available! | Your given companyname (parameter 'company') doesn't work with this function! |
4290er — Rate Limiting
| Code | error | error_message |
|---|---|---|
| 4290 | Rate limit exceeded! | Rate limit exceeded! |
| 4291 | Rate limit exceeded! | Too many inventory requests. Please retry after <n>s |
Retry-After mit der Wartezeit in Sekunden gesetzt.Glossar
Parameter-Glossar
| Begriff | Beschreibung |
|---|---|
| <company_dns> | Die Subdomain der Firma. Diese wird bei Erstellung der Firma bekanntgegeben und kann (momentan nur über die Webseite, nicht per API) in den Firmeneinstellungen eingesehen und verändert werden. |
| <api_token> | Der generierte Token muss immer mitgegeben werden. Zur Tokengenerierung siehe /authentications/create. |
| <n> | Bezeichnet die ID des Objekts, das in der Adresse davor steht. Beispiel: /api/v1/warehouses/<n>/inventories — hier ist <n> die ID des Lagers, in dem nach Inventories gesucht werden soll. |
Changelog
v1.3 — 25.06.2026
- Neu:
POST /manual_receipts— Handbons erstellen (RKSV-konform) - Neu:
GET /manual_receipts— Handbons abrufen - Neu:
POST /inventories/search— POST-Variante des Inventory-Index - Neu: Parameter
article_numbers(Array) fürGET /inventories - Neu: Parameter
typefürPOST /movements - Neu: Rate Limiting für
GET /inventories(Fehlercodes 4290/4291) - Neu: Fehlercode 3013
v1.2.0 — 25.04.2022
- Neu:
/articles/index,/articles/create,/articles/update,/articles/delete,/articles/product_categories - Neu:
/customers/index,/customers/create,/customers/update,/customers/destroy,/customers/customer_number,/customers/addresses,/customers/contacts,/customers/invoices - Fehlercodes hinzugefügt: 1013, 1015, 1026, 1027, 1029, 1030, 1031, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 3010, 3011
v1.1.0 — 07.04.2021
- Neu:
/companies/create,/companies/determine_dns_name - Fehlercodes hinzugefügt: 1001, 1005, 1006, 1009, 1012, 1047, 1048, 1049, 2010, 3009, 4006
- Die Subdomain wurde bei Calls ohne
company_dnsvondevaufapigeändert - Bei
/inventories/stock(POST) und/movements(POST): fehlerhafter Fehlercode 1036 durch korrekten Code 1039 ersetzt
v1.0.0 — 12.01.2021
- Neu:
/authentications/create,/authentications/authenticate - Neu:
/warehouses/index - Neu:
/warehouses/inventories/index,/warehouses/inventories/stock(GET),/warehouses/inventories/stock(POST),/warehouses/inventories/movements/create - Fehlercodes hinzugefügt: 1000, 1002, 1003, 1004, 1007, 1008, 1010, 1011, 1014, 1028, 1032, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 2000, 2002, 2003, 2004, 2008, 2009, 3000, 3007, 3008
