Zum Inhalt
v26.3

API-Referenz

Vollständige REST API mit 341 Endpoints in 34 Bereichen. Authentifizierung via JWT-Bearer-Token (siehe REST API).


Übersicht

Bereich Endpoints Beschreibung
Analytics 5 Analytik
ArticleImport 13 Artikel-Import
Articles 15 Artikel und Artikelgruppen
Auth 6 Login, Token, Refresh
AutoBeleg 14
BankTransfer 7
Banking 50 FinTS, Kontoabruf, SEPA
CustomerGroups 4 Kundengruppen
Customers 16 Kundenstamm, Guthaben, Dokumente
Delivery 18 Lieferservice
Dunning 3 Mahnwesen (3 Stufen)
Export 6 DSFinV-K, GDPdU
Geocoding 3 Geocoding
Invoice 18 Kundenrechnungen, PDF
MenuCard 9 Speisekarten-Verwaltung
OpenBons 9 Offene Bestellungen (Tischbetrieb)
OptionTemplates 5 Optionsvorlagen
Payments 2 Zahlungen durchführen
Receipts 12 Kassenbons, Storno
Reports 7 Umsatz-, Artikel-, Personalberichte
Reservations 8 Tischreservierungen
SavedTransfer 8
SepaMandate 7 SEPA-Mandate
Spendings 9 Ausgaben / Barentnahmen
StockBookings 4
StockInventory 2
StockOrders 5
Stocks 5 Lagerverwaltung
Subscription 7 Abonnements
Tables 20 Tische, Tischgruppen, Status
TimeTracking 8 Zeiterfassung
Vouchers 9 Gutscheine
WhatsApp 10 WhatsApp-Integration
Workshop 17 Werkstatt-Aufträge

Analytics

Methode Endpoint Beschreibung
GET /api/v1/analytics/customer-insights Get customer insights analytics for a date range.
GET /api/v1/analytics/disco-stats Get disco analytics for a date range.
GET /api/v1/analytics/online-orders Get online orders analytics for a date range.
GET /api/v1/analytics/staff-performance Get staff performance analytics for a date range.
GET /api/v1/analytics/workshop-stats Get workshop analytics for a date range.

ArticleImport

Methode Endpoint Beschreibung
POST /api/v1/article-import/ai-extract
POST /api/v1/article-import/ai-suggest
POST /api/v1/article-import/ai/allergens
POST /api/v1/article-import/ai/description
POST /api/v1/article-import/analyze
POST /api/v1/article-import/execute
GET /api/v1/article-import/profiles
POST /api/v1/article-import/profiles
DELETE /api/v1/article-import/profiles/{id}
GET /api/v1/article-import/profiles/{id}
PUT /api/v1/article-import/profiles/{id}
GET /api/v1/article-import/target-fields
GET /api/v1/article-import/template
Request Body: POST /api/v1/article-import/profiles (CreateImportProfileRequest)
Feld Typ Pflicht Beschreibung
name string?
description string?
sourceFormat string?
presetId string?
csvSettings object
excelSettings object
columnMappings array[ColumnMappingDto]?
valueTransforms array[ValueTransformDto]?
defaultGroupId string?
defaultTaxRate number
conflictMode string?
matchField string?
Request Body: PUT /api/v1/article-import/profiles/{id} (UpdateImportProfileRequest)
Feld Typ Pflicht Beschreibung
name string?
description string?
sourceFormat string?
presetId string?
csvSettings object
excelSettings object
columnMappings array[ColumnMappingDto]?
valueTransforms array[ValueTransformDto]?
defaultGroupId string?
defaultTaxRate number?
conflictMode string?
matchField string?

Articles

Methode Endpoint Beschreibung
GET /api/v1/articles List articles, optionally filtered by group, with paging.
POST /api/v1/articles Create a new article.
GET /api/v1/articles/barcode/{barcode} Look up the article that carries a given barcode (e.g. from a scanner).
GET /api/v1/articles/groups
POST /api/v1/articles/groups
DELETE /api/v1/articles/groups/{documentId}
PUT /api/v1/articles/groups/{documentId}
GET /api/v1/articles/search
DELETE /api/v1/articles/{id}
GET /api/v1/articles/{id} Get a single article by its document id.
PUT /api/v1/articles/{id}
PUT /api/v1/articles/{id}/icon
POST /api/v1/articles/{id}/images
DELETE /api/v1/articles/{id}/images/{name}
GET /api/v1/articles/{id}/images/{name}
Request Body: POST /api/v1/articles/groups (CreateArticleGroupRequest)
Feld Typ Pflicht Beschreibung
groupId string?
name string?
shortName string?
description string?
color string?
background string?
sortOrder integer
displayType integer
isActive boolean
Request Body: PUT /api/v1/articles/groups/{documentId} (UpdateArticleGroupRequest)
Feld Typ Pflicht Beschreibung
name string?
shortName string?
description string?
color string?
background string?
sortOrder integer?
displayType integer?
isActive boolean?
printOption object
extraPrintOptions array[ExtraPrintOptionDto]?
extraArticleIds array[string]?
rules array[ArticleRuleDto]?
optionGroups array[ArticleOptionGroupDto]?

Auth

Methode Endpoint Beschreibung
POST /api/v1/auth/change-password Change password for the currently logged-in user.
POST /api/v1/auth/login Log in with username and password and receive JWT tokens.
POST /api/v1/auth/login/card Authenticate with NFC/RFID card.
POST /api/v1/auth/logout Logout and invalidate refresh token.
GET /api/v1/auth/me Get current user information.
POST /api/v1/auth/refresh Exchange a refresh token for a new access token.
Request Body: POST /api/v1/auth/login (LoginRequest)
Feld Typ Pflicht Beschreibung
username string? Username for authentication.
password string? Password for authentication.
Request Body: POST /api/v1/auth/login/card (CardLoginRequest)
Feld Typ Pflicht Beschreibung
cardId string? Card ID from NFC/RFID reader.

AutoBeleg

Methode Endpoint Beschreibung
GET /api/v1/autobeleg/entries
GET /api/v1/autobeleg/entries/{id}
PUT /api/v1/autobeleg/entries/{id}
GET /api/v1/autobeleg/entries/{id}/attachments/{fileName}
POST /api/v1/autobeleg/entries/{id}/convert
POST /api/v1/autobeleg/entries/{id}/ignore
POST /api/v1/autobeleg/fetch
GET /api/v1/autobeleg/rules
POST /api/v1/autobeleg/rules
DELETE /api/v1/autobeleg/rules/{id}
PUT /api/v1/autobeleg/rules/{id}
POST /api/v1/autobeleg/simulate
GET /api/v1/autobeleg/stats
POST /api/v1/autobeleg/test-connection
Request Body: POST /api/v1/autobeleg/rules (CreateAutoBelegRuleRequest)
Feld Typ Pflicht Beschreibung
name string?
senderEmail string?
senderPattern string?
subjectPattern string?
fixedAmount number?
defaultAccountMode integer
defaultAmountNormal number
defaultAmountReduced number
defaultAmountTaxFree number
defaultComment string?
expenseCategoryId string?
imapAccountId string?
isActive boolean
Request Body: PUT /api/v1/autobeleg/rules/{id} (UpdateAutoBelegRuleRequest)
Feld Typ Pflicht Beschreibung
name string?
senderEmail string?
senderPattern string?
subjectPattern string?
fixedAmount number?
defaultAccountMode integer?
defaultAmountNormal number?
defaultAmountReduced number?
defaultAmountTaxFree number?
defaultComment string?
expenseCategoryId string?
imapAccountId string?
isActive boolean?

BankTransfer

Methode Endpoint Beschreibung
GET /api/v1/bank-transfers
DELETE /api/v1/bank-transfers/{id}
GET /api/v1/bank-transfers/{id}
GET /api/v1/bank-transfers/{id}/invoices
POST /api/v1/bank-transfers/{id}/send-emails
GET /api/v1/bank-transfers/{id}/sepa
POST /api/v1/bank-transfers/{id}/submit-fints
Request Body: POST /api/v1/bank-transfers/{id}/submit-fints (SubmitFinTsRequest)
Feld Typ Pflicht Beschreibung
bankAccountId string?

Banking

Methode Endpoint Beschreibung
GET /api/v1/banking/accounts
POST /api/v1/banking/accounts
DELETE /api/v1/banking/accounts/{id}
GET /api/v1/banking/accounts/{id}
PUT /api/v1/banking/accounts/{id}
GET /api/v1/banking/aging-report
POST /api/v1/banking/auto-match
GET /api/v1/banking/cashflow-projection
GET /api/v1/banking/expense-categories
POST /api/v1/banking/expense-categories
DELETE /api/v1/banking/expense-categories/{id}
PUT /api/v1/banking/expense-categories/{id}
GET /api/v1/banking/expense-summary
POST /api/v1/banking/fints/balance
GET /api/v1/banking/fints/bank-lookup
POST /api/v1/banking/fints/batch-transfer
POST /api/v1/banking/fints/direct-debit
POST /api/v1/banking/fints/fetch
GET /api/v1/banking/fints/protocol-log/{sessionToken} Returns a sanitized protocol log for a FinTS session (for diagnostic display before reporting).
POST /api/v1/banking/fints/report-issue Reports a SEPA issue with sanitized protocol log to the DiKAS team.
DELETE /api/v1/banking/fints/sessions/{id}
POST /api/v1/banking/fints/tan
POST /api/v1/banking/fints/transfer
POST /api/v1/banking/fints/vop-confirm/{sessionId} Confirms a VoP (Verification of Payee) name mismatch and proceeds with the transfer.
Called when the user acknowledges a non-matching name and wants to continue.
POST /api/v1/banking/import
GET /api/v1/banking/invoice-search
GET /api/v1/banking/open-items/export
GET /api/v1/banking/overpayments
POST /api/v1/banking/overpayments/{invoiceId}/redistribute
POST /api/v1/banking/overpayments/{invoiceId}/refund
GET /api/v1/banking/payment-journal
POST /api/v1/banking/payment-reminders
POST /api/v1/banking/recompute-hashes Recompute deduplication hashes for all transactions (one-time fix after hash algorithm change)
POST /api/v1/banking/reconcile Rechnungen im Zeitraum zurücksetzen und gegen Bankbewegungen neu abgleichen
POST /api/v1/banking/sepa
GET /api/v1/banking/sessions/{id}
POST /api/v1/banking/sessions/{id}/complete
PUT /api/v1/banking/sessions/{id}/match
GET /api/v1/banking/statements
POST /api/v1/banking/statements/fetch
POST /api/v1/banking/statements/import
DELETE /api/v1/banking/statements/{id}
GET /api/v1/banking/transactions
PUT /api/v1/banking/transactions/{id}/categorize
PUT /api/v1/banking/transactions/{id}/ignore
PUT /api/v1/banking/transactions/{id}/match
POST /api/v1/banking/transactions/{id}/multi-match
POST /api/v1/banking/transactions/{id}/sepa-return
PUT /api/v1/banking/transactions/{id}/unmatch
GET /api/v1/banking/validate-iban Validates an IBAN and returns bank information (BIC, bank name) if derivable.
Request Body: PUT /api/v1/banking/sessions/{id}/match (MatchBankEntryRequest)
Feld Typ Pflicht Beschreibung
entryIndex integer
invoiceId string?
customerId string?
status integer
Request Body: POST /api/v1/banking/accounts (CreateBankAccountRequest)
Feld Typ Pflicht Beschreibung
name string?
iban string?
bic string?
blz string?
finTsUrl string?
userId string?
pin string?
accountHolder string?
tanMethod string?
isDefault boolean

CustomerGroups

Methode Endpoint Beschreibung
GET /api/v1/customer-groups Get all customer groups.
POST /api/v1/customer-groups Create a new customer group.
DELETE /api/v1/customer-groups/{id} Delete a customer group (soft delete).
PUT /api/v1/customer-groups/{id} Update an existing customer group.
Request Body: POST /api/v1/customer-groups (CreateCustomerGroupRequest)
Feld Typ Pflicht Beschreibung
name string?
description string?
defaultDiscount number?
color string?
sortOrder integer
isActive boolean
Request Body: PUT /api/v1/customer-groups/{id} (UpdateCustomerGroupRequest)
Feld Typ Pflicht Beschreibung
name string?
description string?
defaultDiscount number?
color string?
sortOrder integer?
isActive boolean?

Customers

Methode Endpoint Beschreibung
GET /api/v1/customers Get all customers.
POST /api/v1/customers Create a new customer.
DELETE /api/v1/customers/all Delete all customers (hard delete).
GET /api/v1/customers/card/{cardId} Search customer by card ID.
DELETE /api/v1/customers/without-receipts Delete all customers that have no receipts (hard delete).
DELETE /api/v1/customers/{id} Delete a customer.
GET /api/v1/customers/{id} Get a customer by ID.
PUT /api/v1/customers/{id} Update an existing customer.
GET /api/v1/customers/{id}/account-transactions Get account (balance) transactions for a customer.
POST /api/v1/customers/{id}/documents Upload a document for a customer. Max 5MB.
DELETE /api/v1/customers/{id}/documents/{name} Delete a customer document.
GET /api/v1/customers/{id}/documents/{name} Download a customer document.
GET /api/v1/customers/{id}/invoice-summary Get invoice summary for a customer (fast lookup).
POST /api/v1/customers/{id}/payout Payout from customer AccountBalance (not BonusBalance).
GET /api/v1/customers/{id}/point-transactions Get loyalty point transactions for a customer.
POST /api/v1/customers/{id}/portal-invite Send a portal invitation email to a customer.
Request Body: POST /api/v1/customers/{id}/payout (PayoutRequest)
Feld Typ Pflicht Beschreibung
amount number

Delivery

Methode Endpoint Beschreibung
GET /api/v1/delivery
POST /api/v1/delivery
PUT /api/v1/delivery/assign
GET /api/v1/delivery/by-number/{number}
POST /api/v1/delivery/dispatch
POST /api/v1/delivery/optimize-route
POST /api/v1/delivery/place Places a delivery/pickup order with kitchen bons (no payment).
POST /api/v1/delivery/send-route
GET /api/v1/delivery/stats
DELETE /api/v1/delivery/{id}
GET /api/v1/delivery/{id}
GET /api/v1/delivery/{id}/bons Gets unpaid OpenBons for a delivery order.
POST /api/v1/delivery/{id}/complete-payment
POST /api/v1/delivery/{id}/load-for-edit Loads a delivery order with OpenBons for editing in cashpoint.
POST /api/v1/delivery/{id}/pay
PUT /api/v1/delivery/{id}/reassign-driver
PUT /api/v1/delivery/{id}/status
POST /api/v1/delivery/{id}/void-item Voids a single item from an unpaid delivery order.
Request Body: POST /api/v1/delivery (CreateDeliveryOrderRequest)
Feld Typ Pflicht Beschreibung
orderType integer
customerId string?
customerName string?
customerPhone string?
street string?
houseNumber string?
zipCode string?
city string?
requestedTime string?
items array[DeliveryOrderItemRequest]?
notes string?
source string?
externalOrderId string?
isPaid boolean
paymentMethod string?
latitude number?
longitude number?
Request Body: PUT /api/v1/delivery/{id}/status (UpdateDeliveryStatusRequest)
Feld Typ Pflicht Beschreibung
status integer

Dunning

Methode Endpoint Beschreibung
POST /api/v1/dunning/execute
GET /api/v1/dunning/preview/{customerId} Preview the dunning email for a specific customer.
POST /api/v1/dunning/simulate

Export

Methode Endpoint Beschreibung
POST /api/v1/export/dsfinvk
GET /api/v1/export/dsfinvk/{sessionId}
GET /api/v1/export/dsfinvk/{sessionId}/download
POST /api/v1/export/gdpdu
GET /api/v1/export/gdpdu/{sessionId}
GET /api/v1/export/gdpdu/{sessionId}/download
Request Body: POST /api/v1/export/gdpdu (StartExportRequest)
Feld Typ Pflicht Beschreibung
startDate string
endDate string
Request Body: POST /api/v1/export/dsfinvk (StartExportRequest)
Feld Typ Pflicht Beschreibung
startDate string
endDate string

Geocoding

Methode Endpoint Beschreibung
GET /api/v1/geocoding/geocode
GET /api/v1/geocoding/place-details Google Place Details abrufen (schliesst eine Autocomplete-Session ab).
Liefert vollstaendige Adresse mit Koordinaten.
GET /api/v1/geocoding/search

Invoice

Methode Endpoint Beschreibung
GET /api/v1/invoices
POST /api/v1/invoices
POST /api/v1/invoices/bulk-close
GET /api/v1/invoices/overview
POST /api/v1/invoices/write-off
DELETE /api/v1/invoices/{id}
GET /api/v1/invoices/{id}
PUT /api/v1/invoices/{id}
POST /api/v1/invoices/{id}/cancel
POST /api/v1/invoices/{id}/credit-note
POST /api/v1/invoices/{id}/duplicate
GET /api/v1/invoices/{id}/email-preview Preview the email that would be sent for this invoice.
POST /api/v1/invoices/{id}/payment
GET /api/v1/invoices/{id}/payment-journal
GET /api/v1/invoices/{id}/pdf
POST /api/v1/invoices/{id}/send
PUT /api/v1/invoices/{id}/sepa-status
GET /api/v1/invoices/{id}/xml
Request Body: POST /api/v1/invoices (CreateInvoiceRequest)
Feld Typ Pflicht Beschreibung
customerId string?
positions array[InvoicePositionRequest]?
paymentTermDays integer
isBankDebit boolean
notes string?
billingCompanyName string?
billingName string?
billingStreet string?
billingZipCode string?
billingCity string?
Request Body: PUT /api/v1/invoices/{id} (UpdateInvoiceRequest)
Feld Typ Pflicht Beschreibung
customerId string?
positions array[InvoicePositionRequest]?
paymentTermDays integer
isBankDebit boolean
notes string?
billingCompanyName string?
billingName string?
billingStreet string?
billingZipCode string?
billingCity string?
Methode Endpoint Beschreibung
DELETE /api/v1/menu-card/custom-template
GET /api/v1/menu-card/custom-template
POST /api/v1/menu-card/custom-template
GET /api/v1/menu-card/default-template
GET /api/v1/menu-card/excel
GET /api/v1/menu-card/pdf
GET /api/v1/menu-card/settings
PUT /api/v1/menu-card/settings
GET /api/v1/menu-card/template
Request Body: PUT /api/v1/menu-card/settings (UpdateMenuCardSettingsRequest)
Feld Typ Pflicht Beschreibung
restaurantName string?
subtitle string?
footerText string?
showAllergens boolean
showArticleNumbers boolean
showDescriptions boolean
showPrices boolean
showGroupDescriptions boolean
columnCount integer
pageFormat string?
fontSize integer
groupIds array[string]?
headerColor string?
currency string?

OpenBons

Methode Endpoint Beschreibung
GET /api/v1/open-bons Get all open bons with optional filtering.
POST /api/v1/open-bons Create a new open bon (add item to order).
POST /api/v1/open-bons/batch Book a round of items onto a table (the main "place order" call).
GET /api/v1/open-bons/kitchen Get open bons for kitchen display (filtered by work status and kitchen print option).
POST /api/v1/open-bons/move Move open bon items to a different table.
GET /api/v1/open-bons/table/{tableId}/summary Get a table's running tab: all open (unpaid) items and the current total.
PUT /api/v1/open-bons/{id} Update an open bon item.
POST /api/v1/open-bons/{id}/void Void/cancel an open bon item.
PATCH /api/v1/open-bons/{id}/work-status Update the work status of an open bon (kitchen workflow).
Request Body: POST /api/v1/open-bons (CreateOpenBonRequest)
Feld Typ Pflicht Beschreibung
bonId string? Existing bon ID to add to, or null to create new.
tableId string? Table ID for the order.
subTableName string? Sub-table name (e.g., "Gast 1").
seatNumber integer? Seat number for seat-based ordering.
articleId string? Article to order.
customerGroupId string? Customer group for pricing.
price number? Override price (null = use article price).
count number Quantity to order.
gang string? Course number.
extraOptions array[CreateOpenBonExtraOptionRequest]? Extra options/modifiers.
extraDescription string? Additional notes/description.
Request Body: POST /api/v1/open-bons/batch (CreateOpenBonsBatchRequest)
Feld Typ Pflicht Beschreibung
tableId string?
subTableName string?
customerGroupId string?
printerId string?
workplaceId string?
items array[BatchOpenBonItem]?

OptionTemplates

Methode Endpoint Beschreibung
GET /api/v1/option-templates
POST /api/v1/option-templates
DELETE /api/v1/option-templates/{id}
GET /api/v1/option-templates/{id}
PUT /api/v1/option-templates/{id}
Request Body: POST /api/v1/option-templates (CreateOptionTemplateRequest)
Feld Typ Pflicht Beschreibung
name string?
description string?
isActive boolean
sortOrder integer
groups array[ArticleOptionGroupDto]?
Request Body: PUT /api/v1/option-templates/{id} (UpdateOptionTemplateRequest)
Feld Typ Pflicht Beschreibung
name string?
description string?
isActive boolean?
sortOrder integer?
groups array[ArticleOptionGroupDto]?

Payments

Methode Endpoint Beschreibung
POST /api/v1/payments/direct Ring up and pay an over-the-counter sale in one call (no table involved).
POST /api/v1/payments/table Pay a table's open orders and close them into a receipt.
Request Body: POST /api/v1/payments/table (ProcessTablePaymentRequest)
Feld Typ Pflicht Beschreibung
tableId string? Table ID to pay.
openBonIds array[string]? Specific open bon IDs to pay (null = pay all).
items array[PartialPaymentItemRequest]? Partial payment items (alternative to OpenBonIds).

Allows paying a partial quantity of an item. | | payments | array[PaymentEntryRequest]? | | Payment entries. | | customerId | string? | | Customer ID to link. | | tipAmount | number | | Tip amount. | | cashGiven | number | | Cash amount given by customer (for change calculation). | | notes | string? | | Notes. | | printerId | string? | | Target printer ID for auto-printing the receipt bon. | | autoPrint | boolean | | When true, print the receipt even if no explicit PrinterId is set (uses DefaultPrinterId). | | isBewirtungsbeleg | boolean | | When true, marks the receipt as a Bewirtungsbeleg (§4 Abs. 5 Nr. 2 EStG). | | bewirtungTipAmount | number | | Tip amount for Bewirtungsbeleg (included in total for 70% calculation). |

Request Body: POST /api/v1/payments/direct (ProcessDirectSaleRequest)
Feld Typ Pflicht Beschreibung
items array[DirectSaleItemRequest]? Items to sell.
payments array[PaymentEntryRequest]? Payment entries.
customerId string? Customer ID to link.
customerGroupId string? Customer group for pricing.
tipAmount number Tip amount.
cashGiven number Cash amount given by customer (for change calculation).
notes string? Notes.
payoutAmount number Payout amount from customer account balance (0 = no payout).
printerId string? Target printer ID for auto-printing the receipt bon.
autoPrint boolean When true, print the receipt even if no explicit PrinterId is set (uses DefaultPrinterId).
workplaceId string? Workplace ID for price resolution and tracking.
isBewirtungsbeleg boolean When true, marks the receipt as a Bewirtungsbeleg (§4 Abs. 5 Nr. 2 EStG).
bewirtungTipAmount number Tip amount for Bewirtungsbeleg (included in total for 70% calculation).

Receipts

Methode Endpoint Beschreibung
GET /api/v1/receipts Get all receipts with optional filtering.
GET /api/v1/receipts/today Get today's receipts.
GET /api/v1/receipts/{id} Get a receipt by ID.
POST /api/v1/receipts/{id}/assign-customer Assign a customer to an existing receipt (for Bewirtungsbeleg >=250€).
POST /api/v1/receipts/{id}/bewirtungsbeleg/email Send Bewirtungsbeleg PDF via email.
GET /api/v1/receipts/{id}/bewirtungsbeleg/pdf Download a Bewirtungsbeleg as PDF.
POST /api/v1/receipts/{id}/change-payment Change the payment type of a receipt.
POST /api/v1/receipts/{id}/email Send receipt as PDF + ZUGFeRD-XML via email.
GET /api/v1/receipts/{id}/pdf Download a receipt as PDF.
GET /api/v1/receipts/{id}/print Get print bon for a receipt.
POST /api/v1/receipts/{id}/reopen Reopen a receipt: voids it and re-books items as open bons.
POST /api/v1/receipts/{id}/void Void/cancel a receipt.
Request Body: POST /api/v1/receipts/{id}/void (VoidReceiptRequest)
Feld Typ Pflicht Beschreibung
reason string?
terminalId string?
Request Body: POST /api/v1/receipts/{id}/change-payment (ChangePaymentTypeRequest)
Feld Typ Pflicht Beschreibung
newPaymentMethod string?

Reports

Methode Endpoint Beschreibung
GET /api/v1/reports/article-stats Get article statistics (bestseller/worst seller).
GET /api/v1/reports/dayclose Get day close history.
GET /api/v1/reports/financial-overview Get financial overview for a year with optional comparison year.
GET /api/v1/reports/hourly Get hourly revenue breakdown.
GET /api/v1/reports/points Get loyalty points report.
GET /api/v1/reports/revenue Get revenue report for a date range.
GET /api/v1/reports/staff-discounts Get staff discount report for a date range.

Reservations

Methode Endpoint Beschreibung
GET /api/v1/reservations Get all reservations with optional filtering.
POST /api/v1/reservations Create a reservation for a guest.
GET /api/v1/reservations/today Get today's reservations.
GET /api/v1/reservations/upcoming Get upcoming reservations (next 7 days).
POST /api/v1/reservations/{id}/cancel Cancel a reservation.
POST /api/v1/reservations/{id}/confirm Confirm a reservation.
POST /api/v1/reservations/{id}/seat Mark a reservation as seated.
PATCH /api/v1/reservations/{id}/status Update a reservation's status.
Request Body: POST /api/v1/reservations (CreateReservationRequest)
Feld Typ Pflicht Beschreibung
guestName string? Guest name.
guestPhone string? Guest phone.
guestEmail string? Guest email.
customerId string? Customer ID if existing customer.
reservationDateTime string Reservation date and time.
durationMinutes integer Duration in minutes (default: 120).
guestCount integer Number of guests.
tableId string? Preferred table ID.
source string? Source (Manual, Phone, Email, Website, Resmio, OpenTable).
externalReferenceId string? External reference ID.
notes string? Special requests/notes.
internalNotes string? Internal notes.

SavedTransfer

Methode Endpoint Beschreibung
GET /api/v1/saved-transfers
POST /api/v1/saved-transfers
DELETE /api/v1/saved-transfers/{id}
GET /api/v1/saved-transfers/{id}
PUT /api/v1/saved-transfers/{id}
POST /api/v1/saved-transfers/{id}/complete
POST /api/v1/saved-transfers/{id}/execute
POST /api/v1/saved-transfers/{id}/reset
Request Body: POST /api/v1/saved-transfers (CreateSavedTransferRequest)
Feld Typ Pflicht Beschreibung
recipientName string?
recipientIban string?
recipientBic string?
amount number
purpose string?
endToEndId string?
bankAccountId string?
Request Body: PUT /api/v1/saved-transfers/{id} (UpdateSavedTransferRequest)
Feld Typ Pflicht Beschreibung
recipientName string?
recipientIban string?
recipientBic string?
amount number
purpose string?
endToEndId string?
bankAccountId string?

SepaMandate

Methode Endpoint Beschreibung
GET /api/v1/sepa-mandates
POST /api/v1/sepa-mandates
GET /api/v1/sepa-mandates/sign/{token}
POST /api/v1/sepa-mandates/sign/{token}
GET /api/v1/sepa-mandates/{id}
POST /api/v1/sepa-mandates/{id}/revoke
POST /api/v1/sepa-mandates/{id}/send
Request Body: POST /api/v1/sepa-mandates (CreateSepaMandateCommand)
Feld Typ Pflicht Beschreibung
customerId string?
debtorName string?
debtorIban string?
debtorBic string?
mandateType integer
Request Body: POST /api/v1/sepa-mandates/sign/{token} (SignMandateRequest)
Feld Typ Pflicht Beschreibung
signatureImageBase64 string?

Spendings

Methode Endpoint Beschreibung
GET /api/v1/spendings List spendings with optional filters.
POST /api/v1/spendings Create a new spending entry.
POST /api/v1/spendings/migrate-categories Migrate old SpendingTypes (OperationalConfig) to ExpenseCategories
and update existing spendings.
DELETE /api/v1/spendings/{id} Delete a spending entry (soft delete).
GET /api/v1/spendings/{id} Get a spending entry by ID.
PUT /api/v1/spendings/{id} Update an existing spending entry.
POST /api/v1/spendings/{id}/attachments Upload an attachment to a spending entry.
DELETE /api/v1/spendings/{id}/attachments/{name} Delete an attachment from a spending entry.
GET /api/v1/spendings/{id}/attachments/{name} Download an attachment from a spending entry.
Request Body: POST /api/v1/spendings (CreateSpendingRequest)
Feld Typ Pflicht Beschreibung
comment string? Description/comment.
accountType integer Account type (Kontotyp).
accountMode integer Account mode: 0=NotSet, 1=Expense, 2=Transfer, 3=Income, 4=DeferredPayment.
expenseCategoryId string?
receiptDate string Receipt/booking date.
amountNormal number Gross amount at 19% tax rate.
amountReduced number Gross amount at 7% tax rate.
amountTaxFree number Gross amount at 0% tax rate.
Request Body: PUT /api/v1/spendings/{id} (UpdateSpendingRequest)
Feld Typ Pflicht Beschreibung
comment string? Description/comment (optional partial update).
accountType integer? Account type (optional partial update).
accountMode integer? Account mode (optional partial update).
expenseCategoryId string?
receiptDate string? Receipt/booking date (optional partial update).
amountNormal number? Gross amount at 19% (optional partial update).
amountReduced number? Gross amount at 7% (optional partial update).
amountTaxFree number? Gross amount at 0% (optional partial update).

StockBookings

Methode Endpoint Beschreibung
GET /api/v1/stock-bookings Get open stock bookings.
POST /api/v1/stock-bookings Create a new stock booking.
GET /api/v1/stock-bookings/{id} Get a stock booking by ID.
POST /api/v1/stock-bookings/{id}/process Process (execute) a stock booking, updating inventory.
Request Body: POST /api/v1/stock-bookings (CreateStockBookingRequest)
Feld Typ Pflicht Beschreibung
items array[StockBookingItemRequest]?
targetStock string?
workplaceName string?
distributorId string?
targetPrinter string?

StockInventory

Methode Endpoint Beschreibung
GET /api/v1/stock-inventory Get inventory overview for all stocks.
GET /api/v1/stock-inventory/{stockId} Get inventory for a specific stock.

StockOrders

Methode Endpoint Beschreibung
GET /api/v1/stock-orders Get open stock orders.
POST /api/v1/stock-orders Create a new stock order.
GET /api/v1/stock-orders/{id} Get a stock order by ID.
PUT /api/v1/stock-orders/{id} Update an existing stock order.
PUT /api/v1/stock-orders/{id}/status Update the status of a stock order.
Request Body: POST /api/v1/stock-orders (CreateStockOrderRequest)
Feld Typ Pflicht Beschreibung
targetStock string?
distributorId string?
company string?
name2 string?
street string?
city string?
zip string?
country string?
email string?
fax string?
distCustId string?
comment string?
deliveryDate string?
positions array[StockOrderPositionRequest]?
Request Body: PUT /api/v1/stock-orders/{id} (UpdateStockOrderRequest)
Feld Typ Pflicht Beschreibung
targetStock string?
company string?
name2 string?
street string?
city string?
zip string?
country string?
email string?
fax string?
distCustId string?
comment string?
deliveryDate string?
positions array[StockOrderPositionRequest]?

Stocks

Methode Endpoint Beschreibung
GET /api/v1/stocks Get all stock locations.
POST /api/v1/stocks Create a new stock location.
DELETE /api/v1/stocks/{id} Delete a stock location (system stocks cannot be deleted).
GET /api/v1/stocks/{id} Get a stock location by ID.
PUT /api/v1/stocks/{id} Update an existing stock location.
Request Body: POST /api/v1/stocks (CreateStockRequest)
Feld Typ Pflicht Beschreibung
name string?
stockType integer
isCookingMonitor boolean
Request Body: PUT /api/v1/stocks/{id} (UpdateStockRequest)
Feld Typ Pflicht Beschreibung
name string?
stockType integer?
isCookingMonitor boolean?
minMaxRules array[StockMinMaxRuleRequest]?
articleOrder array[string]?

Subscription

Methode Endpoint Beschreibung
GET /api/v1/subscriptions
POST /api/v1/subscriptions
POST /api/v1/subscriptions/generate
POST /api/v1/subscriptions/simulate
DELETE /api/v1/subscriptions/{id}
GET /api/v1/subscriptions/{id}
PUT /api/v1/subscriptions/{id}
Request Body: POST /api/v1/subscriptions (CreateSubscriptionRequest)
Feld Typ Pflicht Beschreibung
customerId string?
name string?
description string?
positions array[InvoicePositionRequest]?
interval integer
startDate string
endDate string?
isBankDebit boolean
paymentTermDays integer
billingCompanyName string?
billingName string?
billingStreet string?
billingZipCode string?
billingCity string?
billingCountry string?
isNettoMode boolean
Request Body: PUT /api/v1/subscriptions/{id} (UpdateSubscriptionRequest)
Feld Typ Pflicht Beschreibung
name string?
description string?
positions array[InvoicePositionRequest]?
interval integer
endDate string?
isBankDebit boolean
paymentTermDays integer
isActive boolean
billingCompanyName string?
billingName string?
billingStreet string?
billingZipCode string?
billingCity string?
billingCountry string?
isNettoMode boolean

Tables

Methode Endpoint Beschreibung
GET /api/v1/tables Get all tables.
POST /api/v1/tables Create a new table.
GET /api/v1/tables/groups Get all table groups.
POST /api/v1/tables/groups Create a new table group.
DELETE /api/v1/tables/groups/{id} Delete a table group.
GET /api/v1/tables/groups/{id} Get a table group by ID.
PUT /api/v1/tables/groups/{id} Update a table group.
POST /api/v1/tables/guest Find or create a guest table by customer ID.
POST /api/v1/tables/guest/by-card/{cardId} Find or create a guest table by NFC card ID.
DELETE /api/v1/tables/{id} Delete a table.
GET /api/v1/tables/{id} Get a table by ID.
PUT /api/v1/tables/{id} Update a table.
POST /api/v1/tables/{id}/cleaned Mark a table as cleaned (transitions from Cleaning to Free).
POST /api/v1/tables/{id}/gang Change the gang (course) for all open bons on a table.
GET /api/v1/tables/{id}/qr QR-Code als PNG für Tisch-Session.
GET /api/v1/tables/{id}/session Aktive QR-Session für Tisch abfragen.
POST /api/v1/tables/{id}/session QR-Session für Tisch generieren/regenerieren.
PATCH /api/v1/tables/{id}/status Update a table's status.
POST /api/v1/tables/{id}/viewed Mark a table as viewed (resets aging timer for all clients).
DELETE /api/v1/tables/{id}/waiter-call Kellner-Ruf zurücksetzen (wenn Kellner den Tisch öffnet).
Request Body: POST /api/v1/tables/groups (CreateTableGroupRequest)
Feld Typ Pflicht Beschreibung
name string?
description string?
color string?
icon string?
sortOrder integer
isActive boolean
bonPrefix string?
showPlan boolean
useSeats boolean
seatCount integer
isPayOffsite boolean
Request Body: POST /api/v1/tables (CreateTableRequest)
Feld Typ Pflicht Beschreibung
tableNumber string?
name string?
groupId string?
seats integer
positionX integer
positionY integer
width integer
height integer
shape string?
color string?
sortOrder integer
isActive boolean
rotation integer
printTableId integer?
extraBonText string?
background string?
isDecorative boolean
decorationType string?
beverageTableNr integer?
customFields object?

TimeTracking

Methode Endpoint Beschreibung
GET /api/v1/time-tracking/active-workers Get all currently active (clocked-in) workers for supervisor dashboard.
GET /api/v1/time-tracking/report Get time report for a date range.
GET /api/v1/time-tracking/report/excel Export time report as Excel file.
DELETE /api/v1/time-tracking/sheets/{id}/stamps/{index} Delete a time stamp (admin).
PUT /api/v1/time-tracking/sheets/{id}/stamps/{index} Edit an existing time stamp (admin correction).
GET /api/v1/time-tracking/sheets/{userId}/{year}/{month} Get a time sheet for a user/year/month (admin view).
POST /api/v1/time-tracking/stamp Clock a worker in or out, or start/end a break.
GET /api/v1/time-tracking/status/{userId} Get current time tracking status for a user (POS display).
Request Body: POST /api/v1/time-tracking/stamp (RecordTimeStampRequest)
Feld Typ Pflicht Beschreibung
userId string?
type integer
note string?
timestamp string?
Request Body: PUT /api/v1/time-tracking/sheets/{id}/stamps/{index} (EditTimeStampRequest)
Feld Typ Pflicht Beschreibung
newTimestamp string?
newType integer?
newNote string?

Vouchers

Methode Endpoint Beschreibung
GET /api/v1/vouchers Get all vouchers with optional filtering.
POST /api/v1/vouchers Create a new voucher.
POST /api/v1/vouchers/batch Batch-create multiple vouchers with the same settings.
POST /api/v1/vouchers/import Import a voucher with a pre-existing serial number.
Checks for duplicate serials and rejects if already exists.
GET /api/v1/vouchers/search/{serial} Search for a voucher by serial number.
Supports 6-digit number (e.g. 481293), legacy V+number (e.g. V000001), or text serial.
GET /api/v1/vouchers/{id} Get a voucher by ID.
POST /api/v1/vouchers/{id}/close Manually close a voucher.
POST /api/v1/vouchers/{id}/redeem Redeem (use) a voucher partially or fully.
POST /api/v1/vouchers/{id}/topup Top up (recharge) a voucher.
Request Body: POST /api/v1/vouchers (CreateVoucherRequest)
Feld Typ Pflicht Beschreibung
amount number Voucher value.
articleId string? Optional article ID linked to the voucher.
name string? Optional voucher name/description.
taxClass integer Tax class (0 = normal, 1 = reduced, etc.).
validDays integer? Optional validity period in days from now. Null = unlimited.
serial string? Optional custom serial code. If not set, an alphanumeric code is auto-generated.
articles array[VoucherArticleRequest]? Optional articles redeemable with the voucher.
Request Body: POST /api/v1/vouchers/{id}/redeem (RedeemVoucherRequest)
Feld Typ Pflicht Beschreibung
amount number Amount to redeem from the voucher.
bonId string? Optional receipt/bon ID for tracking.

WhatsApp

Methode Endpoint Beschreibung
GET /api/v1/whatsapp/messages
POST /api/v1/whatsapp/send
POST /api/v1/whatsapp/send/invoice/{invoiceId}
POST /api/v1/whatsapp/send/work-order/{workOrderId}
GET /api/v1/whatsapp/templates
POST /api/v1/whatsapp/templates
DELETE /api/v1/whatsapp/templates/{id}
GET /api/v1/whatsapp/templates/{id}
PUT /api/v1/whatsapp/templates/{id}
POST /api/v1/whatsapp/test
Request Body: POST /api/v1/whatsapp/send (SendWhatsAppRequest)
Feld Typ Pflicht Beschreibung
to string?
templateName string?
language string?
parameters object?
contextType integer
contextId string?
customerId string?
Request Body: POST /api/v1/whatsapp/templates (CreateWhatsAppTemplateRequest)
Feld Typ Pflicht Beschreibung
name string?
metaTemplateName string?
language string?
contextType integer
parameterMappings array[WhatsAppParameterMappingDto]?
hasDocument boolean
isDefault boolean
isActive boolean
description string?

Workshop

Methode Endpoint Beschreibung
GET /api/v1/workshop/orders
POST /api/v1/workshop/orders
GET /api/v1/workshop/orders/search
GET /api/v1/workshop/orders/{id}
POST /api/v1/workshop/orders/{id}/activities
DELETE /api/v1/workshop/orders/{id}/activities/{index}
POST /api/v1/workshop/orders/{id}/cancel
POST /api/v1/workshop/orders/{id}/complete
POST /api/v1/workshop/orders/{id}/invoice
PUT /api/v1/workshop/orders/{id}/items
POST /api/v1/workshop/orders/{id}/materials
DELETE /api/v1/workshop/orders/{id}/materials/{index}
POST /api/v1/workshop/orders/{id}/pause
POST /api/v1/workshop/orders/{id}/print-label
POST /api/v1/workshop/orders/{id}/reopen
POST /api/v1/workshop/orders/{id}/resume
POST /api/v1/workshop/orders/{id}/start
Request Body: POST /api/v1/workshop/orders (CreateWorkOrderRequest)
Feld Typ Pflicht Beschreibung
customerId string?
faultDescription string?
bikeDescription string?
frameNumber string?
estimatedCompletionDate string?
printLabel boolean
printerId string?
Request Body: POST /api/v1/workshop/orders/{id}/activities (AddActivityRequest)
Feld Typ Pflicht Beschreibung
description string?
durationMinutes integer