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:

BASE URL
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:

HEADER
Authorization: <api_token>
Content-Type: application/json

Globale Fehler

Diese Fehler können bei jedem Aufruf auftreten.

HTTP StatusBedeutung
400Bad Request — Parametervalidierung fehlgeschlagen
401Unauthorized — Kein oder falscher Token / falsche Subdomain
429Too 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.

400 Bad Request
JSON
{
  "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)

401 Unauthorized
JSON
{
  "status": 401,
  "error_code": 2009,
  "error": "Unauthorized!",
  "details": [
    {
      "error_code": 2003,
      "error": "Unauthorized!",
      "error_message": "No token given!"
    }
  ]
}

401 Unauthorized (Falscher Token übermittelt)

401 Unauthorized
JSON
{
  "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.

401 Unauthorized
JSON
{
  "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

POST https://api.kassa.at/api/v1/authentications/
ParameterTypPflichtBeschreibung
company_dnsstringPflichtDNS-Name der Firma (3–32 Zeichen)
usernamestringPflichtBenutzername des Administrators (3–64 Zeichen)
passwordstringPflichtPasswort (8–72 Zeichen)
descriptionstringOptionalBeschreibung für diesen Token
CURL
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"}'
200 OK
JSON
{"status":200,"data":[{"token":"224ac7a5-d4cc8055a2fe479b","description":"System XY","company":"meinefirma"}]}

2.1.2 /authenticate

GET https://api.kassa.at/api/v1/authentications/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
curl -X GET https://api.kassa.at/api/v1/authentications/authenticate \
  -H 'authorization: <api_token>'
200 OK
JSON
{
  "status": 200,
  "data": [
    {
      "token": "224ac7a5-d4cc8055a2fe479b",
      "description": "System XY",
      "company": "meinefirma"
    }
  ]
}

/companies

2.2.1 /create

POST https://api.kassa.at/api/v1/companies/
ParameterTypPflichtBeschreibung
companystringPflichtName der Firma (<64 Zeichen)
company_dnsstringPflichtGewünschter DNS-Name (3–32 Zeichen)
usernamestringPflichtAdmin-Benutzername
passwordstringPflichtPasswort (8–72 Zeichen)
emailstringPflichtE-Mail-Adresse (<64 Zeichen, gültiges Format)
silentboolOptionalKeine Bestätigungs-E-Mail senden. Werte: true, false
CURL
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"}'
200 OK
JSON
{
  "status": 200,
  "data": [
    {
      "company_dns": "meinefirma",
      "company": "Meine Firma GmbH"
    }
  ]
}

2.2.2 /determine_dns_name

GET https://api.kassa.at/api/v1/companies/determine_dns_name

Gibt einen verfügbaren DNS-Vorschlag basierend auf dem Firmennamen zurück.

ParameterTypPflichtBeschreibung
companystringPflichtFirmenname, für den ein DNS-Vorschlag generiert werden soll
CURL
curl -X GET 'https://api.kassa.at/api/v1/companies/determine_dns_name?company=Meine+Firma+GmbH'
200 OK
JSON
{
  "status": 200,
  "data": [
    {
      "company_dns": "meinefirmagmbh"
    }
  ]
}

/articles

2.3.1 /index

GET https://<company_dns>.kassa.at/api/v1/articles
ParameterTypPflichtBeschreibung
pagination_limitintOptionalEinträge pro Seite
pagination_pageintOptionalSeitennummer
querystringOptionalVolltext-Suche
sortstringOptionalSortierfeld und Richtung
fieldsstringOptionalKommagetrennte Feldliste für Rückgabe (z. B. id,line_item_name,article_number)
filter_idstringOptionalFilter nach interner ID
filter_company_article_idstringOptionalFilter nach firmeninterner Artikel-ID
filter_line_item_namestringOptionalFilter nach Artikelname
filter_article_numberstringOptionalFilter nach Artikelnummer
filter_bar_codestringOptionalFilter nach Barcode 1
filter_bar_code_2stringOptionalFilter nach Barcode 2
filter_product_namestringOptionalFilter nach Produktname
filter_product_typestringOptionalFilter nach Produkttyp
filter_brandstringOptionalFilter nach Marke
filter_manufacturerstringOptionalFilter nach Hersteller
filter_supplier_article_numberstringOptionalFilter nach Lieferantenartikelnummer
filter_product_descriptionstringOptionalFilter nach Produktbeschreibung
filter_attributestringOptionalFilter über alle Attributfelder (attribute1–5)
filter_variant_descriptionstringOptionalFilter nach Variantenbeschreibung
filter_unitstringOptionalFilter nach Einheit
filter_default_quantitystringOptionalFilter nach Standardmenge
filter_gross_amount_per_itemstringOptionalFilter nach Bruttopreis
filter_sales_tax_percentagestringOptionalFilter nach Steuersatz
filter_favouriteboolOptionalNur Favoriten (true) oder nicht-Favoriten (false)
filter_foodboolOptionalNur Speisen (true) oder nicht (false)
filter_drinkboolOptionalNur Getränke (true) oder nicht (false)
filter_product_category_idstringOptionalFilter nach Kategorie-ID
200 OK
JSON
{
  "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

POST https://<company_dns>.kassa.at/api/v1/articles
ParameterTypPflichtBeschreibung
line_item_namestringPflichtArtikelname (<250 Zeichen)
gross_amount_per_itemfloatPflichtBruttopreis
sales_tax_percentagefloatPflichtSteuersatz: 0, 10, 13, 20
default_quantityfloatPflichtStandardmenge
article_numberstringOptionalArtikelnummer
unitstringOptionalEinheit (z. B. Stk, kg)
bar_codestringOptionalBarcode 1
bar_code_2stringOptionalBarcode 2
product_namestringOptionalProduktname (für Anzeige)
product_typestringOptionalProdukttyp
brandstringOptionalMarke
manufacturerstringOptionalHersteller
supplier_article_numberstringOptionalLieferantenartikelnummer
product_descriptionstringOptionalProduktbeschreibung
attribute1stringOptionalAttributfeld 1
attribute2stringOptionalAttributfeld 2
attribute3stringOptionalAttributfeld 3
attribute4stringOptionalAttributfeld 4
attribute5stringOptionalAttributfeld 5
variant_descriptionstringOptionalVariantenbeschreibung
favouriteboolOptionalAls Favorit markieren (true/false)
foodboolOptionalAls Speise kennzeichnen (true/false)
drinkboolOptionalAls Getränk kennzeichnen (true/false)
manual_gross_amount_entryboolOptionalPreis manuell eingeben (true/false)
manual_quantity_entryboolOptionalMenge manuell eingeben (true/false)
print_price_per_kgboolOptionalPreis pro kg drucken (true/false)
print_pickup_numberboolOptionalAbholnummer drucken (true/false)
product_category_idstringOptionalKommagetrennte Kategorie-IDs
201 Created
JSON
{
  "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

DELETE https://<company_dns>.kassa.at/api/v1/articles/<id>
200 OK
JSON
{"status": 200, "data": []}

2.3.4 /update

PATCH https://<company_dns>.kassa.at/api/v1/articles/<id>

Aktualisiert einen Artikel. Alle Parameter aus /create können optional übergeben werden. Nur geänderte Felder müssen übermittelt werden.

200 OK
JSON
{
  "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

GET https://<company_dns>.kassa.at/api/v1/articles/<id>/product_categories
200 OK
JSON
{
  "status": 200,
  "data": [
    {
      "id": 3,
      "name": "Getränke",
      "color": "#29ABE2"
    }
  ]
}

/customers

2.4.1 /index

GEThttps://<company_dns>.kassa.at/api/v1/customers
ParameterTypPflichtBeschreibung
pagination_limitintOptionalEinträge pro Seite
pagination_pageintOptionalSeitennummer
querystringOptionalVolltext-Suche
sortstringOptionalSortierfeld und Richtung
fieldsstringOptionalKommagetrennte Feldliste für Rückgabe
filter_idstringOptionalFilter nach interner ID
filter_company_customer_idstringOptionalFilter nach firmeninterner Kunden-ID
filter_customer_numberstringOptionalFilter nach Kundennummer
filter_company_namestringOptionalFilter nach Firmenname
filter_first_namestringOptionalFilter nach Vorname
filter_last_namestringOptionalFilter nach Nachname
filter_addressstringOptionalFilter nach Adresse
filter_citystringOptionalFilter nach Stadt
filter_zipstringOptionalFilter nach PLZ
filter_countrystringOptionalFilter nach Land
filter_phone_numberstringOptionalFilter nach Telefonnummer
filter_fax_numberstringOptionalFilter nach Faxnummer
filter_emailstringOptionalFilter nach E-Mail
filter_uidstringOptionalFilter nach UID-Nummer
filter_tax_numberstringOptionalFilter nach Steuernummer
filter_noticestringOptionalFilter über alle Notizfelder (notice_1–3)
200 OK
JSON
{
  "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

POSThttps://<company_dns>.kassa.at/api/v1/customers

Alle Parameter sind optional — mindestens ein Pflichtfeld muss jedoch angegeben werden.

ParameterTypPflichtBeschreibung
company_namestringOptionalFirmenname des Kunden
first_namestringOptionalVorname
last_namestringOptionalNachname
addressstringOptionalStraße und Hausnummer
citystringOptionalStadt
zipstringOptionalPostleitzahl
countrystringOptionalLand
phone_numberstringOptionalTelefonnummer
fax_numberstringOptionalFaxnummer
emailstringOptionalE-Mail-Adresse
uidstringOptionalUID-Nummer
tax_numberstringOptionalSteuernummer
customer_numberstringOptionalKundennummer
notice_1stringOptionalNotizfeld 1
notice_2stringOptionalNotizfeld 2
notice_3stringOptionalNotizfeld 3
201 Created
JSON
{
  "status": 201,
  "data": [
    {
      "id": 7,
      "customer_number": "K-0001",
      "first_name": "Max",
      "last_name": "Mustermann",
      "email": "max@musterfirma.at"
    }
  ]
}

2.4.3 /update

PATCHhttps://<company_dns>.kassa.at/api/v1/customers/<id>

Alle Felder aus /create können optional übergeben werden — nur geänderte Felder müssen übermittelt werden.

ParameterTypPflichtBeschreibung
idintPflichtInterne Kunden-ID (in URL)
company_namestringOptionalFirmenname
first_namestringOptionalVorname
last_namestringOptionalNachname
addressstringOptionalStraße und Hausnummer
citystringOptionalStadt
zipstringOptionalPostleitzahl
countrystringOptionalLand
phone_numberstringOptionalTelefonnummer
fax_numberstringOptionalFaxnummer
emailstringOptionalE-Mail-Adresse
uidstringOptionalUID-Nummer
tax_numberstringOptionalSteuernummer
customer_numberstringOptionalKundennummer
notice_1stringOptionalNotizfeld 1
notice_2stringOptionalNotizfeld 2
notice_3stringOptionalNotizfeld 3
200 OK
JSON
{"status": 200, "data": []}

2.4.4 /delete

DELETEhttps://<company_dns>.kassa.at/api/v1/customers/<id>

Setzt das deleted-Flag des Kunden auf true.

200 OK
JSON
{"status": 200, "data": []}

2.4.5 /customer_number

GEThttps://<company_dns>.kassa.at/api/v1/customers/customer_number
ParameterTypPflichtBeschreibung
customer_numberstringPflichtKundennummer nach der gesucht wird
200 OK
JSON
{
  "status": 200,
  "data": [
    {
      "id": 7,
      "customer_number": "K-0001",
      "first_name": "Max",
      "last_name": "Mustermann"
    }
  ]
}

2.4.6 /addresses

GEThttps://<company_dns>.kassa.at/api/v1/customers/<id>/addresses

Gibt Adressfelder (address, city, zip, country) des Kunden zurück.

200 OK
JSON
{
  "status": 200,
  "data": [
    {
      "address": "Musterstraße 1",
      "city": "Wien",
      "zip": "1010",
      "country": "Österreich"
    }
  ]
}

2.4.7 /contacts

GEThttps://<company_dns>.kassa.at/api/v1/customers/<id>/contacts

Gibt Kontaktfelder (company_name, first_name, last_name, phone_number, email, fax_number) des Kunden zurück.

200 OK
JSON
{
  "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

GEThttps://<company_dns>.kassa.at/api/v1/customers/<id>/invoices
ParameterTypPflichtBeschreibung
idintPflichtInterne Kunden-ID (in URL)
pagination_limitintOptionalEinträge pro Seite
pagination_pageintOptionalSeitennummer
sortstringOptionalSortierfeld und Richtung
fieldsstringOptionalKommagetrennte Feldliste für Rückgabe
200 OK
JSON
{
  "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

GEThttps://<company_dns>.kassa.at/api/v1/warehouses
ParameterTypPflichtBeschreibung
deletedboolOptionalNur gelöschte (true) oder nur aktive (false) Lager zurückgeben. Mögliche Werte: true, false, "true", "false"
200 OK
JSON
{
  "status": 200,
  "data": [
    {
      "id": 1,
      "description": "Standard Lager",
      "deleted": false
    },
    {
      "id": 2,
      "description": "Außenlager",
      "deleted": false
    }
  ]
}

/inventories

2.6.1 /index

GEThttps://<company_dns>.kassa.at/api/v1/warehouses/<warehouse_id>/inventories
ParameterTypPflichtBeschreibung
warehouse_idintPflichtID des Lagers (in URL)
article_numberstringOptionalFilter nach einer Artikelnummer
article_numbersstring / arrayOptionalFilter nach mehreren Artikelnummern. Kommagetrennt oder als Array.
articleintOptionalFilter nach interner Artikel-ID
activeboolOptionalNur aktive oder inaktive Inventories
inspect_stockboolOptionalWenn true: aktuellen Lagerstand im Feld stock zurückgeben
⚠️ Rate-limitiert. Bei zu vielen Anfragen: HTTP 429 mit Retry-After-Header.
200 OK
JSON
{
  "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"
    }
  ]
}
POSThttps://<company_dns>.kassa.at/api/v1/warehouses/<warehouse_id>/inventories/search

POST-Variante von /index — identische Parameter, ideal für große Artikelnummer-Arrays im Body. Antwortstruktur identisch mit 2.6.1.

CURL
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)

GEThttps://<company_dns>.kassa.at/api/v1/warehouses/<warehouse_id>/inventories/<inventory_id>/stock
200 OK
JSON
{
  "status": 200,
  "data": [
    {
      "stock": "13.42"
    }
  ]
}

2.6.4 /stock (POST)

POSThttps://<company_dns>.kassa.at/api/v1/warehouses/<warehouse_id>/inventories/<inventory_id>/stock
ParameterTypPflichtBeschreibung
quantityfloatPflichtNeuer absoluter Lagerstand
textstringOptionalBeschreibung der Lagerbewegung (<100 Zeichen)
CURL
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"}'
200 OK
JSON
{
  "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"
    }
  ]
}
400 Bad Request (Warehouse-ID nicht gefunden)
JSON
{
  "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

POSThttps://<company_dns>.kassa.at/api/v1/warehouses/<warehouse_id>/inventories/<inventory_id>/movements
ParameterTypPflichtBeschreibung
quantityfloatPflichtMenge (positiv = Zugang, negativ = Abgang)
textstringOptionalBeschreibung (<100 Zeichen)
typestringOptionalErzwingt Richtung: "increase" oder "decrease"
CURL
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"}'
201 Created
JSON
{
  "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"}
    }
  ]
}
400 Bad Request (Warehouse-ID nicht gefunden)
JSON
{
  "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

POSThttps://<company_dns>.kassa.at/api/v1/manual_receipts
ParameterTypPflichtBeschreibung
invoicenostring / intPflichtBelegnummer (<80 Zeichen)
datestringPflichtBelegdatum: dd.mm.yyyy oder yyyy-mm-dd
pricefloat / stringPflichtBruttobetrag. Dezimaltrennzeichen: Punkt oder Komma (als String)
taxintPflichtSteuersatz. Üblicherweise 0. Möglich: 0, 10, 13, 20
payment_methodstringPflichtZ. B. "cash", "card", "other"
usernamestringOptionalKassier-Benutzer
register_numberstringOptionalKassanummer
file_returnstringOptional"no-file" → nur JSON  |  "base64" → PDF als Base64  |  weggelassen → PDF-Download
CURL — Beispiel (nur JSON)
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 — Beispiel (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"}' \
  --output beleg.pdf

2.8.2 /index

GEThttps://<company_dns>.kassa.at/api/v1/manual_receipts
ParameterTypPflichtBeschreibung
numberintOptional*Interne Rechnungsnummer
invoicenostringOptional*Handbon-Belegnummer
register_numberstringOptionalSuche auf eine Kasse einschränken
file_returnstringOptional"base64" oder weggelassen (PDF-Download)

* Entweder number oder invoiceno ist verpflichtend.


Error Codes

1000er — Parametervalidierung

Die Fehler der 1000er Reihe beschreiben Parametervalidierungsfehler.

Codeerrorerror_message
1000Parametervalidation failed!Parametervalidation failed!
1001Parameter is not set!Parameter 'company' is not set!
1002Parameter is not set!Parameter 'company_dns' is not set!
1003Parameter is not set!Parameter 'username' is not set!
1004Parameter is not set!Parameter 'password' is not set!
1005Parameter is not set!Parameter 'email' is not set!
1006Parameter is invalid!Parameter 'company' doesn't match expected length (<64)!
1007Parameter is invalid!Parameter 'company_dns' includes forbidden characters (a-z A-Z 0-9 - _)!
1008Parameter is invalid!Parameter 'company_dns' doesn't match expected length (3..32)!
1009Parameter is invalid!Parameter 'company_dns' is already used!
1010Parameter is invalid!Parameter 'username' doesn't match expected length (3..64)!
1011Parameter is invalid!Parameter 'password' doesn't match expected length (8..72)!
1012Parameter is invalid!Parameter 'email' is invalid!
1013Parameter is not set!Parameter 'line_item_name' is not set!
1014Parameter is not set!Parameter 'quantity' is not set!
1015Parameter is not set!Parameter 'gross_amount_per_item' is not set!
1026Parameter is not set!Parameter 'sales_tax_percentage' is not set!
1027Parameter is invalid!Parameter 'line_item_name' doesn't match expected length (<250)!
1028Parameter is invalid!Parameter 'quantity' is not the right format. Check the documentation to see the right format!
1029Parameter is invalid!Parameter 'gross_amount_per_item' is not the right format. Check the documentation to see the right format!
1030Parameter is invalid!Parameter 'sales_tax_percentage' must be '0', '10', '13', '20' or '5'!
1031Parameter is invalid!Well done. You found a hidden achievement. Parameter 'product_description' doesn't match expected length (<15000000)! Did you do that on purpose?
1032Parameter is invalid!Parameter 'article' must be an integer (0-9)!
1035Parameter is invalid!Parameter 'deleted' must be 'true' or 'false'!
1036Parameter is not set!Parameter 'warehouse_id' is not set!
1037Parameter is invalid!Parameter 'warehouse_id' must be an integer (0-9)!
1038Parameter is invalid!Parameter 'active' must be 'true' or 'false'!
1039Parameter is not set!Parameter 'inventory_id' is not set!
1040Parameter is invalid!Parameter 'inventory_id' must be an integer (0-9)!
1041Parameter is invalid!Parameter 'text' doesn't match expected length (0..100)!
1042Parameter is invalid!Parameter 'type' must be 'increase' or 'decrease'!
1043Parameter is invalid!Parameter 'inspect_stock' must be true or false!
1044Parameter is invalid!Parameter 'description' doesn't match expected length (<250)!
1045Parameter is invalid!Parameter 'article_number' doesn't match expected length (0..60)!
1046Parameter is invalid!Parameter 'quantity' can't be 0!
1047Parameter is not set!Parameter 'test_mode' is not set!
1048Parameter is invalid!Parameter 'test_mode' must be 'true' or 'false'!
1049Parameter is invalid!Parameter 'silent' must be 'true' or 'false'!
1050Parameter is not set!Parameter 'pagination_limit' is not set, while 'pagination_page' is set!
1051Parameter is not set!Parameter 'pagination_page' is not set, while 'pagination_limit' is set!
1052Parameter is invalid!Parameter 'pagination_limit' must be an integer (0-9)!
1053Parameter is invalid!Parameter 'pagination_page' must be an integer (0-9)!
1054Parameter is invalid!Parameter 'sort' is not the right format. Check the documentation to see the right format!
1055Parameter is invalid!Parameter 'filter_id' must be an integer (0-9)! But filteroperators can be used as shown in the documentation!
1056Parameter is invalid!Parameter 'filter_company_article_id' must be an integer (0-9)! But filteroperators can be used as shown in the documentation!
1057Parameter is invalid!Parameter 'filter_default_quantity' is not the right format. Check the documentation to see the right format!
1058Parameter 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!
1059Parameter is invalid!Parameter 'filter_gross_amount_per_item' is not the right format. Check the documentation to see the right format!
1060Parameter is invalid!Parameter 'filter_favourite' must be 'true' or 'false'!
1061Parameter is invalid!Parameter 'filter_food' must be 'true' or 'false'!
1062Parameter is invalid!Parameter 'filter_drink' must be 'true' or 'false'!
1063Parameter is invalid!Parameter 'filter_product_category_id' must be an integer (0-9)! But filteroperators can be used as shown in the documentation!
1064Parameter not allowed!Parameter 'fields' does not allow value '{fieldname}'! Read the documentation to see what fieldnames are allowed in this action!
1065Parameter not allowed!Parameter '{parameter_key}' is not an allowed filter! Read the documentation to see what filters are allowed in this action!
1066Parameter is not set!Parameter 'default_quantity' is not set!
1067Parameter is invalid!Parameter 'default_quantity' is not the right format. Check the documentation to see the right format!
1068Parameter is invalid!Parameter 'unit' doesn't match expected length (<10)!
1069Parameter is invalid!Parameter 'bar_code' doesn't match expected length (<60)!
1070Parameter is invalid!Parameter 'bar_code_2' doesn't match expected length (<60)!
1071Parameter is invalid!Parameter 'article_number' doesn't match expected length (<60)!
1072Parameter is invalid!Parameter 'product_name' doesn't match expected length (<60)!
1073Parameter is invalid!Parameter 'product_type' doesn't match expected length (<60)!
1074Parameter is invalid!Parameter 'brand' doesn't match expected length (<60)!
1075Parameter is invalid!Parameter 'manufacturer' doesn't match expected length (<60)!
1076Parameter is invalid!Parameter 'supplier_article_number' doesn't match expected length (<60)!
1077Parameter is invalid!Parameter 'attribute1' doesn't match expected length (<60)!
1078Parameter is invalid!Parameter 'attribute2' doesn't match expected length (<60)!
1079Parameter is invalid!Parameter 'attribute3' doesn't match expected length (<60)!
1080Parameter is invalid!Parameter 'attribute4' doesn't match expected length (<60)!
1081Parameter is invalid!Parameter 'attribute5' doesn't match expected length (<60)!
1082Parameter is invalid!Parameter 'variant_description' doesn't match expected length (<60)!
1083Parameter is invalid!Parameter 'favourite' must be 'true' or 'false'!
1084Parameter is invalid!Parameter 'food' must be 'true' or 'false'!
1085Parameter is invalid!Parameter 'drink' must be 'true' or 'false'!
1086Parameter is invalid!Parameter 'product_category_id' is not the right format. Check the documentation to see the right format!
1087Parameter is invalid!Parameter 'manual_gross_amount_entry' must be 'true' or 'false'!
1088Parameter is invalid!Parameter 'manual_quantity_entry' must be 'true' or 'false'!
1089Parameter is invalid!Parameter 'print_price_per_kg' must be 'true' or 'false'!
1090Parameter is invalid!Parameter 'print_pickup_number' must be 'true' or 'false'!
1091Parameter is not set!Parameter 'article_id' is not set!
1092Parameter is invalid!Parameter 'article_id' must be an integer (0-9)!
1093Parameter not allowedParameter 'fields' can not start or end with ','!
1094Parameter is invalid!Parameter 'filter_company_customer_id' must be an integer (0-9)! But filteroperators can be used as shown in the documentation!
1095Parameter is invalid!Parameter 'company_name' doesn't match expected length (<120)!
1096Parameter is invalid!Parameter 'first_name' doesn't match expected length (<100)!
1097Parameter is invalid!Parameter 'last_name' doesn't match expected length (<100)!
1098Parameter is invalid!Parameter 'address' doesn't match expected length (<100)!
1099Parameter is invalid!Parameter 'city' doesn't match expected length (<100)!
1100Parameter is invalid!Parameter 'zip' doesn't match expected length (<100)!
1101Parameter is invalid!Parameter 'country' doesn't match expected length (<100)!
1102Parameter is invalid!Parameter 'phone_number' doesn't match expected length (<100)!
1103Parameter is invalid!Parameter 'fax_number' doesn't match expected length (<100)!
1104Parameter is invalid!Parameter 'email' doesn't match expected length (<100)!
1105Parameter is invalid!Parameter 'uid' doesn't match expected length (<100)!
1106Parameter is invalid!Parameter 'tax_number' doesn't match expected length (<100)!
1107Parameter is invalid!Parameter 'customer_number' doesn't match expected length (<60)!
1108Parameter is invalid!Parameter 'notice_1' doesn't match expected length (<240)!
1109Parameter is invalid!Parameter 'notice_2' doesn't match expected length (<240)!
1110Parameter is invalid!Parameter 'notice_3' doesn't match expected length (<240)!
1111Parameter is invalid!Parameter 'customer_id' must be an integer (0-9)!
1112Parameter is not set!Parameter 'customer_number' is not set!

2000er — Authentifizierung

Die Fehler dieser Nummern beschreiben einen Fehler bei der Authentifizierung.

Codeerrorerror_message
2000Company missing!No company with given dns_name!
2001Company missing!No company in subdomain!
2002User invalid!Username or password invalid or not an admin!
2003Unauthorized!No token given!
2004Unauthorized!Token is invalid!
2008User invalid!User invalid!
2009Unauthorized!Unauthorized!
2010Operation 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.

Codeerrorerror_message
3000Object not found!Object not found!
3007Object not found!No inventory found with given parameter!
3008Object not found!No warehouse found with given parameter!
3009Object not found!No user found with given parameter!
3010Object not found!No product_category found with given parameter (id: {id-number})!
3011Object not found!No article found with given parameter (article_id: {article_id})!
3012Object not found!No customer found with given parameter (customer_id: {customer_id})!
3013Object 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.

Codeerrorerror_message
4006No possible value available!Your given companyname (parameter 'company') doesn't work with this function!

4290er — Rate Limiting

Codeerrorerror_message
4290Rate limit exceeded!Rate limit exceeded!
4291Rate limit exceeded!Too many inventory requests. Please retry after <n>s
Bei HTTP 429 wird der Response-Header Retry-After mit der Wartezeit in Sekunden gesetzt.

Glossar

Parameter-Glossar

BegriffBeschreibung
<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ür GET /inventories
  • Neu: Parameter type für POST /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_dns von dev auf api geä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