Diese Seite zeigt typische Anfragen an die Public API. Die Beispiele decken nahezu alle verfügbaren Vorgänge ab: lesende Abfragen, das synchrone Pflegen von Kunden sowie das asynchrone Einspielen von Bestellungen und Zahlungen.
Die verwendeten IDs und Beträge sind Platzhalter; ersetzen Sie <ihr-api-token> durch Ihren Token. Grundlagen zu Authentifizierung, Paginierung und Zeitzonen finden Sie unter Erste Schritte.
Kassenabschlüsse abfragen
Schichten (Kassenabschlüsse) lassen sich nach Kassa und Zeitraum filtern:
curl -H "Authorization: Token <ihr-api-token>" \
"https://api.diekasse.app/v1/public/shifts/?sales_point=450e8400-e29b-41d4-a716-446655440001×tamp__gte=2026-06-01T00:00:00Z×tamp__lte=2026-06-30T23:59:59Z"
{
"next": null,
"previous": null,
"results": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"sales_point": "450e8400-e29b-41d4-a716-446655440001",
"started": "2026-06-15T09:00:00Z",
"started_by_username": "kassa_001",
"ended": "2026-06-15T17:30:00Z",
"ended_by_username": "kassa_001",
"timestamp": "2026-06-15T17:30:00Z"
}
]
}
Hintergrund zum Vorgang finden Sie unter Kassenabschluss.
Rechnung samt Bestellungen und Positionen abfragen
Eine Zahlung (Rechnung) liefert Eckdaten und die Zahlpositionen:
curl -H "Authorization: Token <ihr-api-token>" \
"https://api.diekasse.app/v1/public/payments/650e8400-e29b-41d4-a716-446655440006/"
{
"id": "650e8400-e29b-41d4-a716-446655440006",
"sales_point": "450e8400-e29b-41d4-a716-446655440001",
"type": "PAYMENT",
"sequential_id": 1234,
"timestamp": "2026-06-15T15:30:00Z",
"items": [
{ "method_name": "VISA", "method_type": "CREDIT_CARD", "gross_price": "19.99", "tip": "1.00", "currency_code": "EUR" }
],
"metadata": { "gross": "19.99", "net": "16.80", "vat": "3.19" }
}
Die zugehörigen Bestellungen samt Positionen rufen Sie über den payment-Filter ab:
curl -H "Authorization: Token <ihr-api-token>" \
"https://api.diekasse.app/v1/public/orders/?payment=650e8400-e29b-41d4-a716-446655440006"
{
"next": null,
"previous": null,
"results": [
{
"id": "550e8400-e29b-41d4-a716-446655440010",
"payment": "650e8400-e29b-41d4-a716-446655440006",
"order_group_name": "Tisch 5",
"items": [
{ "article_name": "Espresso", "quantity": 2.0, "gross_price": "5.00", "vat_rate": "20.00" }
],
"metadata": { "gross": "5.00", "net": "4.17", "vat": "0.83" }
}
]
}
Berichte abfragen
Umsatzberichte erwarten einen Zeitraum und eine Kassa:
curl -H "Authorization: Token <ihr-api-token>" \
"https://api.diekasse.app/v1/public/reports/turnover/venue/?sales_point=450e8400-e29b-41d4-a716-446655440001&start=2026-06-01T00:00:00Z&end=2026-06-30T23:59:59Z"
{
"next": null,
"previous": null,
"results": [
{
"name": "Hauptstandort",
"net": "5234.56",
"vat": "1046.91",
"gross": "6281.47",
"methods": [
{ "name": "VISA", "type": "CREDIT_CARD", "gross": "3650.00", "count": 45 },
{ "name": "Bar", "type": "CASH", "gross": "2631.47", "count": 112 }
]
}
]
}
Eine Übersicht der Auswertungen in der Oberfläche bietet Berichte an der Kassa.
Lagerstand abfragen
stock-transactions/latest liefert die jeweils jüngste Lagerbewegung je Artikel und Lager:
curl -H "Authorization: Token <ihr-api-token>" \
"https://api.diekasse.app/v1/public/stock-transactions/latest/?warehouse=150e8400-e29b-41d4-a716-446655440002"
{
"next": null,
"previous": null,
"results": [
{
"id": "950e8400-e29b-41d4-a716-446655440040",
"warehouse": "150e8400-e29b-41d4-a716-446655440002",
"article": "050e8400-e29b-41d4-a716-446655440005",
"type": "STOCK_UP",
"quantity": 45.5,
"cost": "12.90",
"created": "2026-06-15T10:00:00Z",
"updated": "2026-06-15T10:00:00Z"
}
]
}
Artikel und Lager werden als UUID referenziert; die Bezeichnungen lösen Sie über articles bzw. die Lagerverwaltung auf. type gibt die Art der Bewegung an (ORDER, CANCEL, STOCK_UP, REDUCE, STOCKTAKING, TRANSFER, DAILY).
Den Bestand aller Lager als CSV-Datei liefert zusätzlich:
curl -H "Authorization: Token <ihr-api-token>" \
"https://api.diekasse.app/v1/public/warehouse/stockup/?warehouse=150e8400-e29b-41d4-a716-446655440002"
Beide Endpunkte sind rein lesend. Lagerstände lassen sich über die Public API nicht verändern – erfassen Sie Zu- und Abgänge in der Kassa oder im bessa Manager.
Mehr zur Lagerführung finden Sie unter Lagerverwaltung.
Kunden anlegen und ändern
customers ist die einzige Ressource, die synchron geschrieben wird. Ein neuer Kunde wird per POST angelegt:
curl -X POST -H "Authorization: Token <ihr-api-token>" -H "Content-Type: application/json" \
"https://api.diekasse.app/v1/public/customers/" \
-d '{
"first_name": "Maria",
"last_name": "Huber",
"email": "maria.huber@example.com",
"external_id": "CRM-4711",
"default_discount_percentage": 5.0
}'
Die Antwort enthält den angelegten Kunden samt id. Einzelne Felder ändern Sie anschließend per PATCH:
curl -X PATCH -H "Authorization: Token <ihr-api-token>" -H "Content-Type: application/json" \
"https://api.diekasse.app/v1/public/customers/a50e8400-e29b-41d4-a716-446655440050/" \
-d '{ "default_discount_percentage": 10.0 }'
Über external_id verknüpfen Sie den Kunden mit dem Datensatz in Ihrem eigenen System. Zum Wiederfinden stehen auf dem Listen-Endpunkt die Filter first_name, last_name, email und phone sowie search zur Verfügung.
Bestellung einspielen (asynchron)
Eine Bestellung wird als Auftrag übergeben:
curl -X POST -H "Authorization: Token <ihr-api-token>" -H "Content-Type: application/json" \
"https://api.diekasse.app/v1/public/requests/orders/" \
-d '{
"sales_point": "450e8400-e29b-41d4-a716-446655440001",
"order_group": "350e8400-e29b-41d4-a716-446655440003",
"type": "ORDER",
"items": [
{ "article": "050e8400-e29b-41d4-a716-446655440005", "quantity": 1.0, "price": "2.50" }
]
}'
Pflichtfelder sind sales_point, order_group, type (ORDER oder CANCEL) und items. Die passende Bestellgruppen-ID finden Sie über order-groups; optional lassen sich order_group_nr, order_group_name und order_sub_group_nr mitgeben.
Die Antwort enthält die Auftrags-ID; die Verarbeitung erfolgt asynchron:
{
"id": "770e8400-e29b-41d4-a716-446655440020",
"type": "ORDER",
"sales_point": "450e8400-e29b-41d4-a716-446655440001",
"created": "2026-06-15T15:35:00Z",
"received": null,
"processed": null,
"success": null,
"result": null
}
Fragen Sie den Status anschließend über GET /v1/public/requests/orders/<id>/ ab. received und processed werden gesetzt, sobald die Kassa den Auftrag empfangen bzw. verarbeitet hat; success (true/false) und result enthalten das Ergebnis.
Zahlung einspielen (asynchron)
Analog wird eine Zahlung für eine offene Bestellgruppe übergeben:
curl -X POST -H "Authorization: Token <ihr-api-token>" -H "Content-Type: application/json" \
"https://api.diekasse.app/v1/public/requests/payment/" \
-d '{
"sales_point": "450e8400-e29b-41d4-a716-446655440001",
"payment": {
"open_order_group": "250e8400-e29b-41d4-a716-446655440007",
"payments": [
{ "method": "550e8400-e29b-41d4-a716-446655440008", "value": "5.95", "tip": "0.50", "currency": "EUR" }
]
}
}'
{
"id": "880e8400-e29b-41d4-a716-446655440030",
"type": "PAYMENT",
"sales_point": "450e8400-e29b-41d4-a716-446655440001",
"created": "2026-06-15T15:40:00Z",
"received": null,
"processed": null,
"success": null,
"result": null
}
Zum Stornieren einer Zahlung dient POST /v1/public/requests/payment-cancel/ mit der Kassa und der Zahlungs-ID:
{
"sales_point": "450e8400-e29b-41d4-a716-446655440001",
"payment": "650e8400-e29b-41d4-a716-446655440006"
}
Der Status wird – wie beim Einspielen – über den jeweiligen GET .../requests/.../<id>/-Endpunkt abgefragt.