Hilfe - Alle Produkte & Anleitungen
German English
German English

Beispiele

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:

Bash
curl -H "Authorization: Token <ihr-api-token>" \
  "https://api.diekasse.app/v1/public/shifts/?sales_point=450e8400-e29b-41d4-a716-446655440001&timestamp__gte=2026-06-01T00:00:00Z&timestamp__lte=2026-06-30T23:59:59Z"
JSON
{
  "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:

Bash
curl -H "Authorization: Token <ihr-api-token>" \
  "https://api.diekasse.app/v1/public/payments/650e8400-e29b-41d4-a716-446655440006/"
JSON
{
  "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:

Bash
curl -H "Authorization: Token <ihr-api-token>" \
  "https://api.diekasse.app/v1/public/orders/?payment=650e8400-e29b-41d4-a716-446655440006"
JSON
{
  "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:

Bash
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"
JSON
{
  "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:

Bash
curl -H "Authorization: Token <ihr-api-token>" \
  "https://api.diekasse.app/v1/public/stock-transactions/latest/?warehouse=150e8400-e29b-41d4-a716-446655440002"
JSON
{
  "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:

Bash
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:

Bash
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:

Bash
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:

Bash
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:

JSON
{
  "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:

Bash
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" }
      ]
    }
  }'
JSON
{
  "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:

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