Download OpenAPI specification:
Onlinebon API allows consumers to manage their POS data of onlinebon.at.
The version of the endpoint you are requesting can be controlled by the api-version header:
api-version: 2
| Version | Released at |
|---|---|
| v1 | 01.03.2020 |
| v2 | 01.01.2021 |
To test your implementation use the test environment at https://api-test.onlinebon.at
| username required | string <email> |
| password required | string |
{- "username": "user@onlinebon.at",
- "password": "your_password"
}{- "jwt": "eyJhbGciOiJIUzI1NiJ9.e30.XmNK3GpH3Ys_7wsYBfq4C3M6goz71I7dTgUkuIa5lyQ",
- "uid": "507f1f77bcf86cd799439011",
- "expires_at": "2026-07-22T18:00:00.000Z",
- "refresh_token": "string",
- "refresh_expires_at": "2026-08-21T16:00:00.000Z"
}Creates a customer, cashdesk, and owner user in one step, then logs in the new account.
password must be at least 12 characters and include upper/lowercase letters, a number,
and a special character.
| email required | string <email> |
| password required | string Min. 12 chars, upper + lowercase, a number, and a special character. |
| firstname required | string |
| lastname required | string |
| business | string |
| source | string Default: "web" |
| name | string Company/customer name. Defaults to a placeholder if omitted. |
{- "email": "user@example.com",
- "password": "string",
- "firstname": "string",
- "lastname": "string",
- "business": "string",
- "source": "web",
- "name": "string"
}{- "jwt": "eyJhbGciOiJIUzI1NiJ9.e30.XmNK3GpH3Ys_7wsYBfq4C3M6goz71I7dTgUkuIa5lyQ",
- "uid": "507f1f77bcf86cd799439011",
- "expires_at": "2026-07-22T18:00:00.000Z",
- "refresh_token": "string",
- "refresh_expires_at": "2026-08-21T16:00:00.000Z"
}Sends a password-reset email containing a link with a single-use, opaque token (10 minute expiry) if the given email is registered. Clients should always show a generic "check your email" confirmation regardless of the response — do not surface whether the email exists.
| email required | string <email> |
{- "email": "user@onlinebon.at"
}{- "statusCode": 400,
- "error": "Bad Request",
- "message": "string"
}| token required | string |
| password required | string |
| passwordRe required | string |
{- "token": "string",
- "password": "string",
- "passwordRe": "string"
}{- "username": "string",
- "firstname": "string",
- "lastname": "string"
}Exchanges a valid, unexpired refresh token for a new 8h access JWT and a new refresh token. The refresh token is single-use (rotated on every call) — the old refresh token is invalidated as soon as it's exchanged. Refresh tokens are valid for 30 days and a user may hold several at once (e.g. one per logged-in device); logging in on a new device does not invalidate refresh tokens issued to other devices.
| refresh_token required | string |
{- "refresh_token": "string"
}{- "jwt": "eyJhbGciOiJIUzI1NiJ9.e30.XmNK3GpH3Ys_7wsYBfq4C3M6goz71I7dTgUkuIa5lyQ",
- "uid": "507f1f77bcf86cd799439011",
- "expires_at": "2026-07-22T18:00:00.000Z",
- "refresh_token": "string",
- "refresh_expires_at": "2026-08-21T16:00:00.000Z"
}Revokes a single refresh token (e.g. on device logout). Idempotent — logging out with a refresh token that's already invalid or unknown still returns success. Only revokes the given token; other devices' refresh tokens are unaffected.
| refresh_token required | string |
{- "refresh_token": "string"
}{- "success": true
}Returns a valid SumUp access token for the authenticated user's customer account. If the stored token is expired or about to expire (within 5 minutes), it is automatically refreshed using the stored refresh token.
{- "access_token": "sup_sk_abc123def456ghi789jkl012mno345pqr",
- "expires_at": "2026-02-23T15:30:00.000Z"
}{- "_id": "string",
- "firstname": "string",
- "lastname": "string",
- "status": true,
- "email": "user@example.com",
- "username": "string",
- "role": "admin",
- "created_at": "string",
- "consents": [
- {
- "_id": "string",
- "accepted_at": "string",
- "policyversion": {
- "_id": "string",
- "url": "string",
- "valid_from": "string",
- "version": 0,
- "type": "terms"
}
}
], - "cashdesk": {
- "_id": "string",
- "cashdeskId": "string",
- "contact": {
- "email": "string",
- "phone": "string",
- "name": "string",
- "website": "string"
}, - "status": true,
- "registered": true,
- "registered_at": "string",
- "started": true,
- "address": {
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}, - "openings": [
- {
- "label": "Montag",
- "from": "09:00",
- "until": "18:00"
}
], - "bank": {
- "name": "string",
- "iban": "string",
- "bic": "string"
}, - "settings": {
- "product": {
- "limit": 0,
- "sort": "string"
}, - "receipt": {
- "commercial": "string",
- "kv": "string",
- "footerText": "string",
- "showOpenings": true
}, - "tip": {
- "enabled": true,
- "transferToCashbook": true
}
}, - "lock": {
- "status": true,
- "reason": "string",
- "date": "string"
}, - "closed": true
}, - "customer": {
- "_id": "string",
- "name": "string",
- "activated_at": "string",
- "created_at": "string",
- "uid": "string",
- "steuernr": "string",
- "taxexempt": true,
- "state": "TESTING",
- "business": {
- "_id": "string",
- "name": "string"
}, - "logo": {
- "_id": "string",
- "name": "string",
}
}
}{- "id": "string",
- "firstname": "string",
- "lastname": "string",
- "is_active": true,
- "email": "user@example.com",
- "username": "string",
- "role": "admin",
- "created_at": "string",
- "active_session": {
- "id": "string",
- "active": true,
- "started_at": "string",
- "change_funds": 0,
- "ended_at": "string",
- "report_id": "string",
- "user": {
- "id": "string",
- "username": "string"
}
}, - "sum_up": {
- "enabled": true,
- "access_token": "string",
- "refresh_token": "string",
- "expires_at": "string",
- "tip_rates": [
- 0.05,
- 0.1,
- 0.15
]
}, - "status": {
- "locked": true,
- "has_to_be_activated": true,
- "has_to_register_bmf": true,
- "has_to_accept_policies": true
}, - "consents": [
- {
- "_id": "string",
- "accepted_at": "string",
- "policyversion": {
- "_id": "string",
- "url": "string",
- "valid_from": "string",
- "version": 0,
- "type": "terms"
}
}
], - "cashdesk": {
- "id": "string",
- "cashdesk_number": "string",
- "address": {
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}, - "openings": [
- {
- "label": "Montag",
- "from": "09:00",
- "until": "18:00"
}
], - "bank": {
- "name": "string",
- "iban": "string",
- "bic": "string"
}, - "contact": {
- "email": "string",
- "phone": "string",
- "name": "string",
- "website": "string"
}, - "is_open": true,
- "demo_modus": true,
- "demo_expires": "string",
- "settings": {
- "product": {
- "limit": 0,
- "sort": "string"
}, - "receipt": {
- "commercial": "string",
- "kv": "string",
- "footerText": "string",
- "showOpenings": true
}, - "tip": {
- "enabled": true,
- "transferToCashbook": true
}
}, - "current_balance": 0,
- "current_balance_cash": 0,
- "current_cashbook_balance": 0,
- "live_since": "string",
- "last_session": {
- "id": "string",
- "active": true,
- "started_at": "string",
- "change_funds": 0,
- "ended_at": "string",
- "report_id": "string",
- "user": {
- "id": "string",
- "username": "string"
}
}
}, - "company": {
- "id": "string",
- "name": "string",
- "activated_at": "string",
- "created_at": "string",
- "company_registration_number": "string",
- "tax_number": "string",
- "free_from_tax": true,
- "business": {
- "_id": "string",
- "name": "string"
}, - "logo": [
- {
- "_id": "string",
- "name": "string",
}
]
}
}| limit | integer [ 1 .. 100 ] Default: 20 |
| offset | integer >= 0 Default: 0 |
| parent | string |
| noparent | boolean |
| active | boolean |
| search | string |
[- {
- "_id": "string",
- "name": "string",
- "description": "string",
- "active": true,
- "sells": 0,
- "color": "string",
- "customer": {
- "_id": "string",
- "name": "string"
}, - "parent": {
- "_id": "string",
- "name": "string",
- "active": true
}
}
]| name required | string |
| description | string |
| color | string |
| parent | string |
{- "name": "Arizona Cardinals",
- "description": "string",
- "color": "#cccccc",
- "parent": "string"
}{- "_id": "string",
- "name": "string",
- "description": "string",
- "active": true,
- "sells": 0,
- "color": "string",
- "customer": {
- "_id": "string",
- "name": "string"
}, - "parent": {
- "_id": "string",
- "name": "string",
- "active": true
}
}{- "_id": "string",
- "name": "string",
- "description": "string",
- "active": true,
- "sells": 0,
- "color": "string",
- "customer": {
- "_id": "string",
- "name": "string"
}, - "parent": {
- "_id": "string",
- "name": "string",
- "active": true
}
}| id required | string |
| name | string |
| active | boolean |
| description | string |
| color | string |
| parent | string |
{- "name": "string",
- "active": true,
- "description": "string",
- "color": "string",
- "parent": "string"
}{- "_id": "string",
- "name": "string",
- "description": "string",
- "active": true,
- "sells": 0,
- "color": "string",
- "customer": {
- "_id": "string",
- "name": "string"
}, - "parent": {
- "_id": "string",
- "name": "string",
- "active": true
}
}| limit | integer [ 1 .. 100 ] Default: 20 |
| offset | integer >= 0 Default: 0 |
| account | string Account ID (admin only) |
| active | boolean |
| search | string |
| parent | string |
| noparent | boolean |
| business | string |
{- "rows": [
- {
- "_id": "string",
- "id": "string",
- "name": "string",
- "description": "string",
- "active": true,
- "sells": 0,
- "color": "string",
- "customer": {
- "_id": "string",
- "name": "string"
}, - "parent": {
- "_id": "string",
- "name": "string",
- "active": true
}, - "products": [
- {
- "_id": "string",
- "name": "string"
}
]
}
], - "count": 0,
- "has_more": true,
- "paginate": {
- "limit": 20,
- "offset": 0
}
}| limit | integer [ 1 .. 100 ] Default: 20 |
| offset | integer >= 0 Default: 0 |
| productgroup | string |
| active | boolean |
| taxRate | number |
| quantityUnit | string (QuantityUnit) Enum: "kg" "g" "l" "ml" "m" "mm" "pcs" "km" "min" Example: quantityUnit=pcs |
| search | string |
[- {
- "_id": "string",
- "name": "string",
- "active": true,
- "description": "string",
- "nominale": 0,
- "purchasePrice": 0,
- "taxRate": 0,
- "sells": 0,
- "ean": "string",
- "quantityUnit": "pcs",
- "trackStock": true,
- "stockCount": 0,
- "config": [
- "string"
], - "productgroup": {
- "_id": "string",
- "name": "string",
- "color": "string"
}
}
]| name required | string |
| nominale required | number |
| purchasePrice | number |
| productgroup required | string |
| taxRate required | number |
| ean | string |
| quantityUnit | string (QuantityUnit) Enum: "kg" "g" "l" "ml" "m" "mm" "pcs" "km" "min" |
| color | string |
| config | Array of strings |
| active | boolean |
| description | string |
{- "name": "string",
- "nominale": 0,
- "purchasePrice": 0,
- "productgroup": "string",
- "taxRate": 0,
- "ean": "string",
- "quantityUnit": "pcs",
- "color": "string",
- "config": [
- "string"
], - "active": true,
- "description": "string"
}{- "_id": "string",
- "name": "string",
- "active": true,
- "description": "string",
- "nominale": 0,
- "purchasePrice": 0,
- "taxRate": 0,
- "sells": 0,
- "ean": "string",
- "quantityUnit": "pcs",
- "trackStock": true,
- "stockCount": 0,
- "config": [
- "string"
], - "productgroup": {
- "_id": "string",
- "name": "string",
- "color": "string"
}
}{- "_id": "string",
- "name": "string",
- "active": true,
- "description": "string",
- "nominale": 0,
- "purchasePrice": 0,
- "taxRate": 0,
- "sells": 0,
- "ean": "string",
- "quantityUnit": "pcs",
- "trackStock": true,
- "stockCount": 0,
- "config": [
- "string"
], - "productgroup": {
- "_id": "string",
- "name": "string",
- "color": "string"
}
}| id required | string |
| name | string |
| nominale | number |
| purchasePrice | number |
| ean | string |
| config | Array of strings |
| active | boolean |
| description | string |
| quantityUnit | string (QuantityUnit) Enum: "kg" "g" "l" "ml" "m" "mm" "pcs" "km" "min" |
| productgroup | string |
{- "name": "string",
- "nominale": 0,
- "purchasePrice": 0,
- "ean": "string",
- "config": [
- "string"
], - "active": true,
- "description": "string",
- "quantityUnit": "pcs",
- "productgroup": "string"
}{- "_id": "string",
- "name": "string",
- "active": true,
- "description": "string",
- "nominale": 0,
- "purchasePrice": 0,
- "taxRate": 0,
- "sells": 0,
- "ean": "string",
- "quantityUnit": "pcs",
- "trackStock": true,
- "stockCount": 0,
- "config": [
- "string"
], - "productgroup": {
- "_id": "string",
- "name": "string",
- "color": "string"
}
}Returns a paginated list of products with stock info if the stock-management feature is enabled.
| limit | integer [ 1 .. 100 ] Default: 20 |
| offset | integer >= 0 Default: 0 |
| account | string Account ID (admin only) |
| active | boolean |
| search | string |
| productgroup | string |
| taxRate | number |
| quantityUnit | string (QuantityUnit) Enum: "kg" "g" "l" "ml" "m" "mm" "pcs" "km" "min" Example: quantityUnit=pcs |
{- "rows": [
- {
- "_id": "string",
- "id": "string",
- "name": "string",
- "active": true,
- "description": "string",
- "nominale": 0,
- "purchasePrice": 0,
- "taxRate": 0,
- "sells": 0,
- "ean": "string",
- "quantityUnit": "pcs",
- "trackStock": true,
- "stockCount": 0,
- "config": [
- "string"
], - "productgroup": {
- "_id": "string",
- "name": "string",
- "active": true,
- "color": "string"
}, - "customer": {
- "_id": "string",
- "name": "string"
}, - "stock": {
- "enabled": true,
- "minThreshold": 0,
- "maxThreshold": 0,
- "status": "disabled"
}
}
], - "count": 0,
- "has_more": true,
- "paginate": {
- "limit": 20,
- "offset": 0
}
}| limit | integer [ 1 .. 100 ] Default: 20 |
| offset | integer >= 0 Default: 0 |
| firstname | string |
| lastname | string |
string | |
| company | string |
| active | boolean |
| city | string |
| country | string |
| plz | integer |
| search | string |
| search_email | string |
| name_exists | boolean Find clients where both first- and lastname exist |
[- {
- "_id": "string",
- "active": true,
- "firstname": "string",
- "lastname": "string",
- "email": "user@example.com",
- "company": "string",
- "phone": "string",
- "prefix": "string",
- "uid": "string",
- "birthday": "2019-08-24",
- "comments": "string",
- "address": {
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}, - "customer": {
- "_id": "string",
- "name": "string"
}
}
]| firstname | string |
| lastname | string |
| uid | string |
string <email> | |
| company | string |
| phone | string |
| prefix | string |
| birthday | string <date> |
| comments | string |
| street | string |
| plz | string |
| city | string |
| country | string |
{- "firstname": "string",
- "lastname": "string",
- "uid": "string",
- "email": "user@example.com",
- "company": "string",
- "phone": "string",
- "prefix": "string",
- "birthday": "2019-08-24",
- "comments": "string",
- "street": "string",
- "plz": "string",
- "city": "string",
- "country": "string"
}{- "_id": "string",
- "active": true,
- "firstname": "string",
- "lastname": "string",
- "email": "user@example.com",
- "company": "string",
- "phone": "string",
- "prefix": "string",
- "uid": "string",
- "birthday": "2019-08-24",
- "comments": "string",
- "address": {
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}, - "customer": {
- "_id": "string",
- "name": "string"
}
}{- "_id": "string",
- "active": true,
- "firstname": "string",
- "lastname": "string",
- "email": "user@example.com",
- "company": "string",
- "phone": "string",
- "prefix": "string",
- "uid": "string",
- "birthday": "2019-08-24",
- "comments": "string",
- "address": {
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}, - "customer": {
- "_id": "string",
- "name": "string"
}
}| id required | string |
| active | boolean |
| firstname | string |
| lastname | string |
string <email> | |
| company | string |
| phone | string |
| prefix | string |
| uid | string |
| birthday | string <date> |
| comments | string |
| street | string |
| plz | integer |
| city | string |
| country | string |
{- "active": true,
- "firstname": "string",
- "lastname": "string",
- "email": "user@example.com",
- "company": "string",
- "phone": "string",
- "prefix": "string",
- "uid": "string",
- "birthday": "2019-08-24",
- "comments": "string",
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}{- "_id": "string",
- "active": true,
- "firstname": "string",
- "lastname": "string",
- "email": "user@example.com",
- "company": "string",
- "phone": "string",
- "prefix": "string",
- "uid": "string",
- "birthday": "2019-08-24",
- "comments": "string",
- "address": {
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}, - "customer": {
- "_id": "string",
- "name": "string"
}
}| limit | integer [ 1 .. 100 ] Default: 20 |
| offset | integer >= 0 Default: 0 |
| account | string Account ID (admin only) |
| search | string |
| active | boolean |
| tag_ids | string Filter to customers carrying ALL of these tag ids. Pass a comma-separated list (e.g. |
| revenue_min | number >= 0 Only customers whose lifetime revenue (in eurocent) is ≥ this value. |
| receipt_count_min | integer >= 0 Only customers with at least this many receipts (frequent buyers). |
| inactive_months | integer >= 1 Only customers whose last purchase is older than this many months. Customers who never purchased are excluded (use never_purchased for those). |
| never_purchased | boolean When true, only customers with no (net) purchases. |
| top_revenue_percent | number [ 1 .. 100 ] Only the top N% of the filtered population by lifetime revenue (1–100). The threshold is computed within the population matching the other filters. |
| sort_by | string Default: "last_receipt" Enum: "last_receipt" "revenue" Field to sort by. Defaults to last_receipt. |
| sort_order | string Default: "desc" Enum: "asc" "desc" Sort direction. Defaults to desc. |
{- "rows": [
- {
- "id": "string",
- "firstname": "string",
- "lastname": "string",
- "email": "user@example.com",
- "active": true,
- "company": "string",
- "prefix": "string",
- "phone": "string",
- "address": {
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}, - "birthday": "2019-08-24",
- "receipt_count": 0,
- "last_receipt": "2019-08-24T14:15:22Z",
- "revenue": 0,
- "tags": [
- {
- "id": "string",
- "name": "string",
- "color": "string"
}
]
}
], - "count": 0,
- "has_more": true,
- "paginate": {
- "limit": 20,
- "offset": 0
}
}Exports customers matching the same filters as the list endpoint (account, search, active, tag_ids, and the segmentation filters) as a CSV file.
| account | string Account ID (admin only) |
| search | string |
| active | boolean |
| tag_ids | string Filter to customers carrying ALL of these tag ids. Pass a comma-separated list (e.g. |
| revenue_min | number >= 0 Only customers whose lifetime revenue (in eurocent) is ≥ this value. |
| receipt_count_min | integer >= 0 Only customers with at least this many receipts (frequent buyers). |
| inactive_months | integer >= 1 Only customers whose last purchase is older than this many months. Customers who never purchased are excluded (use never_purchased for those). |
| never_purchased | boolean When true, only customers with no (net) purchases. |
| top_revenue_percent | number [ 1 .. 100 ] Only the top N% of the filtered population by lifetime revenue (1–100). |
{- "id": "string",
- "firstname": "string",
- "lastname": "string",
- "email": "user@example.com",
- "active": true,
- "company": "string",
- "prefix": "string",
- "phone": "string",
- "address": {
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}, - "birthday": "2019-08-24",
- "receipt_count": 0,
- "last_receipt": "2019-08-24T14:15:22Z",
- "revenue": 0,
- "tags": [
- {
- "id": "string",
- "name": "string",
- "color": "string"
}
]
}| limit | integer [ 1 .. 100 ] Default: 20 |
| offset | integer >= 0 Default: 0 |
| search_serial | string |
| number | string |
| from | string <date> |
| until | string <date> |
| type | string |
| product_id | string |
| user_id | string |
{- "total": 0,
- "has_more": true,
- "rows": [
- {
- "id": "string",
- "number": "RE_00000001",
- "date": "string",
- "description": "string",
- "is_demo": true,
- "rksv_id": 0,
- "net": 0,
- "gross": 0,
- "tip_amount": 0,
- "type": {
- "id": "string",
- "name": "string",
- "prefix": "RE"
}, - "created_by": {
- "id": "string",
- "username": "string",
- "firstname": "string",
- "lastname": "string"
}, - "discount": {
- "fixed_amount": 0,
- "percentage": 0
}, - "extras": {
- "has_differtial_tax": true,
- "has_ura_info": true,
- "commercial_text": "string",
- "footer_Text": "string",
- "show_openings": true
}, - "payment": {
- "method": {
- "_id": "string",
- "name": "string",
- "invoiceText": "string",
- "type": "CASH",
- "hasToBeSigned": true,
- "active": true,
- "position": 0
}, - "value": 0,
- "tip_amount": 0,
- "change": 0,
- "due_date": "string",
- "due_days": 0,
- "status": true,
- "info": "string"
}, - "security": {
- "signature": "string",
- "qrcode": "string",
- "cert": {
- "id": "string",
- "vda": "string",
- "serial": "string"
}
}, - "customer": {
- "id": "string",
- "firstname": "string",
- "lastname": "string",
- "prefix": "string",
- "email": "string",
- "company": "string",
- "phone": "string",
- "uid": "string",
- "address": { }
}, - "invoicing_company": {
- "cashdesk_id": "string",
- "company_id": "string",
- "cashdesk_number": "string",
- "name": "string",
- "uid": "string",
- "free_from_tax": true,
- "state": "TESTING",
- "taxexempt": true,
- "openings": [
- {
- "label": "Montag",
- "from": "09:00",
- "until": "18:00"
}
], - "contact": {
- "email": "string",
- "phone": "string",
- "name": "string",
- "website": "string"
}, - "address": {
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}, - "bank": {
- "name": "string",
- "iban": "string",
- "bic": "string"
}
}, - "items": [
- {
- "id": "string",
- "amount": 0,
- "amount_unit": "pcs",
- "text": "string",
- "gross": 0,
- "net": 0,
- "tax": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "product": {
- "id": "string",
- "name": "string"
}, - "discounts": [
- {
- "fixed_amount": 0
}
]
}
], - "taxes": [
- {
- "tax_rate": 0,
- "price": 0,
- "value": 0
}
], - "cost_estimation": {
- "status": true,
- "valid_until": "string",
- "receipt": {
- "id": "string",
- "number": "string"
}
}, - "cancelled_receipt": {
- "id": "string",
- "number": "string",
- "date": "string"
}
}
], - "paginate": {
- "limit": 20,
- "offset": 0
}
}Creates a new receipt. When creating an ST (cancellation) receipt that references an original receipt with SumUp payments, the system will automatically attempt to refund all succeeded SumUp payment transactions.
| type required | string Enum: "RE" "ST" "KV" RE=Invoice, ST=Cancellation (auto-refunds SumUp payments), KV=Cost estimation |
| client_id | string or null |
required | object (ReceiptPaymentInput) |
object (ReceiptDiscount) | |
required | Array of objects (ReceiptItemInput) |
| description | string |
| cancelled_receipt_id | string or null |
object or null |
{- "type": "RE",
- "client_id": "string",
- "payment": {
- "value": 0,
- "tip_amount": 0,
- "change": 0,
- "payment_method_id": "string",
- "due_days": 0,
- "status": true,
- "info": "string"
}, - "discount": {
- "fixed_amount": 0,
- "percentage": 0
}, - "items": [
- {
- "amount": 0,
- "amount_unit": "pcs",
- "text": "string",
- "gross": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "infos": "string",
- "discounts": [
- {
- "fixed_amount": 0
}
], - "product_id": "string",
- "has_ura": true
}
], - "description": "string",
- "cancelled_receipt_id": "string",
- "cost_estimation": {
- "valid_days": 0
}
}{- "id": "string",
- "number": "RE_00000001",
- "date": "string",
- "description": "string",
- "is_demo": true,
- "rksv_id": 0,
- "net": 0,
- "gross": 0,
- "tip_amount": 0,
- "type": {
- "id": "string",
- "name": "string",
- "prefix": "RE"
}, - "created_by": {
- "id": "string",
- "username": "string",
- "firstname": "string",
- "lastname": "string"
}, - "discount": {
- "fixed_amount": 0,
- "percentage": 0
}, - "extras": {
- "has_differtial_tax": true,
- "has_ura_info": true,
- "commercial_text": "string",
- "footer_Text": "string",
- "show_openings": true
}, - "payment": {
- "method": {
- "_id": "string",
- "name": "string",
- "invoiceText": "string",
- "type": "CASH",
- "hasToBeSigned": true,
- "active": true,
- "position": 0
}, - "value": 0,
- "tip_amount": 0,
- "change": 0,
- "due_date": "string",
- "due_days": 0,
- "status": true,
- "info": "string"
}, - "security": {
- "signature": "string",
- "qrcode": "string",
- "cert": {
- "id": "string",
- "vda": "string",
- "serial": "string"
}
}, - "customer": {
- "id": "string",
- "firstname": "string",
- "lastname": "string",
- "prefix": "string",
- "email": "string",
- "company": "string",
- "phone": "string",
- "uid": "string",
- "address": { }
}, - "invoicing_company": {
- "cashdesk_id": "string",
- "company_id": "string",
- "cashdesk_number": "string",
- "name": "string",
- "uid": "string",
- "free_from_tax": true,
- "state": "TESTING",
- "taxexempt": true,
- "openings": [
- {
- "label": "Montag",
- "from": "09:00",
- "until": "18:00"
}
], - "contact": {
- "email": "string",
- "phone": "string",
- "name": "string",
- "website": "string"
}, - "address": {
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}, - "bank": {
- "name": "string",
- "iban": "string",
- "bic": "string"
}
}, - "items": [
- {
- "id": "string",
- "amount": 0,
- "amount_unit": "pcs",
- "text": "string",
- "gross": 0,
- "net": 0,
- "tax": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "product": {
- "id": "string",
- "name": "string"
}, - "discounts": [
- {
- "fixed_amount": 0
}
]
}
], - "taxes": [
- {
- "tax_rate": 0,
- "price": 0,
- "value": 0
}
], - "cost_estimation": {
- "status": true,
- "valid_until": "string",
- "receipt": {
- "id": "string",
- "number": "string"
}
}, - "cancelled_receipt": {
- "id": "string",
- "number": "string",
- "date": "string"
}
}| id required | string |
| output | string Default: "JSON" Enum: "JSON" "HTML" Response format: JSON or HTML |
| format | integer Default: 58 Enum: 58 80 Receipt width in mm (58 or 80) |
{- "id": "string",
- "number": "RE_00000001",
- "date": "string",
- "description": "string",
- "is_demo": true,
- "rksv_id": 0,
- "net": 0,
- "gross": 0,
- "tip_amount": 0,
- "type": {
- "id": "string",
- "name": "string",
- "prefix": "RE"
}, - "created_by": {
- "id": "string",
- "username": "string",
- "firstname": "string",
- "lastname": "string"
}, - "discount": {
- "fixed_amount": 0,
- "percentage": 0
}, - "extras": {
- "has_differtial_tax": true,
- "has_ura_info": true,
- "commercial_text": "string",
- "footer_Text": "string",
- "show_openings": true
}, - "payment": {
- "method": {
- "_id": "string",
- "name": "string",
- "invoiceText": "string",
- "type": "CASH",
- "hasToBeSigned": true,
- "active": true,
- "position": 0
}, - "value": 0,
- "tip_amount": 0,
- "change": 0,
- "due_date": "string",
- "due_days": 0,
- "status": true,
- "info": "string"
}, - "security": {
- "signature": "string",
- "qrcode": "string",
- "cert": {
- "id": "string",
- "vda": "string",
- "serial": "string"
}
}, - "customer": {
- "id": "string",
- "firstname": "string",
- "lastname": "string",
- "prefix": "string",
- "email": "string",
- "company": "string",
- "phone": "string",
- "uid": "string",
- "address": { }
}, - "invoicing_company": {
- "cashdesk_id": "string",
- "company_id": "string",
- "cashdesk_number": "string",
- "name": "string",
- "uid": "string",
- "free_from_tax": true,
- "state": "TESTING",
- "taxexempt": true,
- "openings": [
- {
- "label": "Montag",
- "from": "09:00",
- "until": "18:00"
}
], - "contact": {
- "email": "string",
- "phone": "string",
- "name": "string",
- "website": "string"
}, - "address": {
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}, - "bank": {
- "name": "string",
- "iban": "string",
- "bic": "string"
}
}, - "items": [
- {
- "id": "string",
- "amount": 0,
- "amount_unit": "pcs",
- "text": "string",
- "gross": 0,
- "net": 0,
- "tax": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "product": {
- "id": "string",
- "name": "string"
}, - "discounts": [
- {
- "fixed_amount": 0
}
]
}
], - "taxes": [
- {
- "tax_rate": 0,
- "price": 0,
- "value": 0
}
], - "cost_estimation": {
- "status": true,
- "valid_until": "string",
- "receipt": {
- "id": "string",
- "number": "string"
}
}, - "cancelled_receipt": {
- "id": "string",
- "number": "string",
- "date": "string"
}
}Creates a cancellation (ST) receipt. Supports two modes:
payments body): mirrors original payments with negative amounts and auto-refunds via SumUp.payments array): uses specified methods, skips SumUp auto-refund.| id required | string Example: 507f1f77bcf86cd799439011 The ID of the receipt to cancel |
Array of objects (CancellationPayment) Omit for automatic refund. Provide for manual refund. |
{ }{- "id": "string",
- "number": "RE_00000001",
- "date": "string",
- "description": "string",
- "is_demo": true,
- "rksv_id": 0,
- "net": 0,
- "gross": 0,
- "tip_amount": 0,
- "type": {
- "id": "string",
- "name": "string",
- "prefix": "RE"
}, - "created_by": {
- "id": "string",
- "username": "string",
- "firstname": "string",
- "lastname": "string"
}, - "discount": {
- "fixed_amount": 0,
- "percentage": 0
}, - "extras": {
- "has_differtial_tax": true,
- "has_ura_info": true,
- "commercial_text": "string",
- "footer_Text": "string",
- "show_openings": true
}, - "payment": {
- "method": {
- "_id": "string",
- "name": "string",
- "invoiceText": "string",
- "type": "CASH",
- "hasToBeSigned": true,
- "active": true,
- "position": 0
}, - "value": 0,
- "tip_amount": 0,
- "change": 0,
- "due_date": "string",
- "due_days": 0,
- "status": true,
- "info": "string"
}, - "security": {
- "signature": "string",
- "qrcode": "string",
- "cert": {
- "id": "string",
- "vda": "string",
- "serial": "string"
}
}, - "customer": {
- "id": "string",
- "firstname": "string",
- "lastname": "string",
- "prefix": "string",
- "email": "string",
- "company": "string",
- "phone": "string",
- "uid": "string",
- "address": { }
}, - "invoicing_company": {
- "cashdesk_id": "string",
- "company_id": "string",
- "cashdesk_number": "string",
- "name": "string",
- "uid": "string",
- "free_from_tax": true,
- "state": "TESTING",
- "taxexempt": true,
- "openings": [
- {
- "label": "Montag",
- "from": "09:00",
- "until": "18:00"
}
], - "contact": {
- "email": "string",
- "phone": "string",
- "name": "string",
- "website": "string"
}, - "address": {
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}, - "bank": {
- "name": "string",
- "iban": "string",
- "bic": "string"
}
}, - "items": [
- {
- "id": "string",
- "amount": 0,
- "amount_unit": "pcs",
- "text": "string",
- "gross": 0,
- "net": 0,
- "tax": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "product": {
- "id": "string",
- "name": "string"
}, - "discounts": [
- {
- "fixed_amount": 0
}
]
}
], - "taxes": [
- {
- "tax_rate": 0,
- "price": 0,
- "value": 0
}
], - "cost_estimation": {
- "status": true,
- "valid_until": "string",
- "receipt": {
- "id": "string",
- "number": "string"
}
}, - "cancelled_receipt": {
- "id": "string",
- "number": "string",
- "date": "string"
}
}Returns receipt items that have a purchase price (aw) set, used for differential taxation reporting.
| from | string <date> |
| until | string <date> |
| cashdesk | string |
{- "rows": [
- {
- "_id": "string",
- "name": "string",
- "soldValue": 0,
- "receiptNumber": "string",
- "taxexempt": true,
- "serial": "string",
- "date": "string",
- "purchaseValue": 0,
- "taxRate": 0,
- "discount": 0,
- "diff": 0,
- "profitNetto": 0,
- "tax": 0
}
], - "total": {
- "count": 0,
- "tax": 0,
- "brutto": 0,
- "netto": 0,
- "diff": 0,
- "soldvalue": 0
}
}Verifies the receipt signature against the Austrian tax authority (BMF).
| id required | string |
{- "id": "string",
- "number": "RE_00000001",
- "date": "string",
- "description": "string",
- "is_demo": true,
- "rksv_id": 0,
- "net": 0,
- "gross": 0,
- "tip_amount": 0,
- "type": {
- "id": "string",
- "name": "string",
- "prefix": "RE"
}, - "created_by": {
- "id": "string",
- "username": "string",
- "firstname": "string",
- "lastname": "string"
}, - "discount": {
- "fixed_amount": 0,
- "percentage": 0
}, - "extras": {
- "has_differtial_tax": true,
- "has_ura_info": true,
- "commercial_text": "string",
- "footer_Text": "string",
- "show_openings": true
}, - "payment": {
- "method": {
- "_id": "string",
- "name": "string",
- "invoiceText": "string",
- "type": "CASH",
- "hasToBeSigned": true,
- "active": true,
- "position": 0
}, - "value": 0,
- "tip_amount": 0,
- "change": 0,
- "due_date": "string",
- "due_days": 0,
- "status": true,
- "info": "string"
}, - "security": {
- "signature": "string",
- "qrcode": "string",
- "cert": {
- "id": "string",
- "vda": "string",
- "serial": "string"
}
}, - "customer": {
- "id": "string",
- "firstname": "string",
- "lastname": "string",
- "prefix": "string",
- "email": "string",
- "company": "string",
- "phone": "string",
- "uid": "string",
- "address": { }
}, - "invoicing_company": {
- "cashdesk_id": "string",
- "company_id": "string",
- "cashdesk_number": "string",
- "name": "string",
- "uid": "string",
- "free_from_tax": true,
- "state": "TESTING",
- "taxexempt": true,
- "openings": [
- {
- "label": "Montag",
- "from": "09:00",
- "until": "18:00"
}
], - "contact": {
- "email": "string",
- "phone": "string",
- "name": "string",
- "website": "string"
}, - "address": {
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}, - "bank": {
- "name": "string",
- "iban": "string",
- "bic": "string"
}
}, - "items": [
- {
- "id": "string",
- "amount": 0,
- "amount_unit": "pcs",
- "text": "string",
- "gross": 0,
- "net": 0,
- "tax": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "product": {
- "id": "string",
- "name": "string"
}, - "discounts": [
- {
- "fixed_amount": 0
}
]
}
], - "taxes": [
- {
- "tax_rate": 0,
- "price": 0,
- "value": 0
}
], - "cost_estimation": {
- "status": true,
- "valid_until": "string",
- "receipt": {
- "id": "string",
- "number": "string"
}
}, - "cancelled_receipt": {
- "id": "string",
- "number": "string",
- "date": "string"
}
}| id required | string |
| email required | string <email> |
{- "email": "user@example.com"
}{- "success": true
}| id required | string |
| paymentId required | string Example: 507f1f77bcf86cd799439022 |
| status | string |
| info | string or null |
| deadline | integer or null |
{- "status": "string",
- "info": "string",
- "deadline": 0
}{- "id": "string",
- "number": "RE_00000001",
- "date": "string",
- "description": "string",
- "is_demo": true,
- "rksv_id": 0,
- "net": 0,
- "gross": 0,
- "tip_amount": 0,
- "type": {
- "id": "string",
- "name": "string",
- "prefix": "RE"
}, - "created_by": {
- "id": "string",
- "username": "string",
- "firstname": "string",
- "lastname": "string"
}, - "discount": {
- "fixed_amount": 0,
- "percentage": 0
}, - "extras": {
- "has_differtial_tax": true,
- "has_ura_info": true,
- "commercial_text": "string",
- "footer_Text": "string",
- "show_openings": true
}, - "payment": {
- "method": {
- "_id": "string",
- "name": "string",
- "invoiceText": "string",
- "type": "CASH",
- "hasToBeSigned": true,
- "active": true,
- "position": 0
}, - "value": 0,
- "tip_amount": 0,
- "change": 0,
- "due_date": "string",
- "due_days": 0,
- "status": true,
- "info": "string"
}, - "security": {
- "signature": "string",
- "qrcode": "string",
- "cert": {
- "id": "string",
- "vda": "string",
- "serial": "string"
}
}, - "customer": {
- "id": "string",
- "firstname": "string",
- "lastname": "string",
- "prefix": "string",
- "email": "string",
- "company": "string",
- "phone": "string",
- "uid": "string",
- "address": { }
}, - "invoicing_company": {
- "cashdesk_id": "string",
- "company_id": "string",
- "cashdesk_number": "string",
- "name": "string",
- "uid": "string",
- "free_from_tax": true,
- "state": "TESTING",
- "taxexempt": true,
- "openings": [
- {
- "label": "Montag",
- "from": "09:00",
- "until": "18:00"
}
], - "contact": {
- "email": "string",
- "phone": "string",
- "name": "string",
- "website": "string"
}, - "address": {
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}, - "bank": {
- "name": "string",
- "iban": "string",
- "bic": "string"
}
}, - "items": [
- {
- "id": "string",
- "amount": 0,
- "amount_unit": "pcs",
- "text": "string",
- "gross": 0,
- "net": 0,
- "tax": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "product": {
- "id": "string",
- "name": "string"
}, - "discounts": [
- {
- "fixed_amount": 0
}
]
}
], - "taxes": [
- {
- "tax_rate": 0,
- "price": 0,
- "value": 0
}
], - "cost_estimation": {
- "status": true,
- "valid_until": "string",
- "receipt": {
- "id": "string",
- "number": "string"
}
}, - "cancelled_receipt": {
- "id": "string",
- "number": "string",
- "date": "string"
}
}| cashdesk | string Cashdesk ID (required for admin users) |
| limit | integer [ 1 .. 100 ] Default: 20 |
| offset | integer >= 0 Default: 0 |
| completion | string Filter by completion status |
{- "rows": [
- {
- "id": "string",
- "active": true,
- "started_at": "string",
- "change_funds": 0,
- "ended_at": "string",
- "report_id": "string",
- "user": {
- "id": "string",
- "username": "string"
}
}
], - "total_count": 0,
- "has_more": true
}| change_funds | integer Change funds in eurocent |
{- "change_funds": 1000
}{- "id": "string",
- "active": true,
- "started_at": "string",
- "change_funds": 0,
- "ended_at": "string",
- "report_id": "string",
- "user": {
- "id": "string",
- "username": "string"
}
}| id required | string |
| output | string Default: "JSON" Enum: "JSON" "PDF" "FILE_URL" Response format: JSON, PDF, or FILE_URL |
{- "id": "string",
- "active": true,
- "started_at": "string",
- "change_funds": 0,
- "ended_at": "string",
- "report_id": "string",
- "user": {
- "id": "string",
- "username": "string"
}
}| id required | string |
| end_session required | boolean |
{- "end_session": true
}{- "id": "string",
- "active": true,
- "started_at": "string",
- "change_funds": 0,
- "ended_at": "string",
- "report_id": "string",
- "user": {
- "id": "string",
- "username": "string"
}
}Returns a paginated list of orders sorted by creation date descending. Accessible by admin users only.
| limit | integer [ 1 .. 100 ] Default: 20 |
| offset | integer >= 0 Default: 0 |
| id | string Example: id=507f1f77bcf86cd799439010 Filter by order ID |
| cashdesk_id | string Example: cashdesk_id=507f1f77bcf86cd799439011 Filter by cashdesk ID |
| account_id | string Example: account_id=507f1f77bcf86cd799439012 Filter by account (customer) ID |
| status | string Enum: "pending" "payment_pending" "completed" "failed" "canceled" "aborted" Filter by order status |
| after | string <date-time> Example: after=2026-01-01T00:00:00.000Z Return orders created at or after this ISO 8601 datetime |
| before | string <date-time> Example: before=2026-12-31T23:59:59.999Z Return orders created at or before this ISO 8601 datetime |
{- "total": 2,
- "has_more": false,
- "paginate": {
- "limit": 30,
- "offset": 0
}, - "rows": [
- {
- "id": "507f1f77bcf86cd799439020",
- "status": "completed",
- "receipt": {
- "id": "507f1f77bcf86cd799439030",
- "number": "RE-2026-0042"
}, - "reader_status": null,
- "items": [
- {
- "id": "507f1f77bcf86cd799439021",
- "amount": 1,
- "amount_unit": "pcs",
- "name": "Product A",
- "gross": 1190,
- "tax_rate": 20,
- "has_ura": false,
- "discounts": [ ],
- "product": null,
- "productgroup": null
}
], - "payments": [
- {
- "id": "507f1f77bcf86cd799439022",
- "value": 1190,
- "status": "succeeded",
- "method": {
- "id": "507f1f77bcf86cd799439015",
- "name": "Cash",
- "type": "CASH"
}
}
], - "is_cost_estimation": false
}, - {
- "id": "507f1f77bcf86cd799439023",
- "status": "pending",
- "receipt": null,
- "reader_status": null,
- "items": [ ],
- "payments": [ ],
- "is_cost_estimation": false
}
]
}Creates a new order with items and payments. The order is automatically executed and a receipt is generated.
| cashdesk_id | string or null Required for admin users |
| client_id | string or null |
required | Array of objects (OrderItem) |
required | Array of objects (OrderPayment) |
{- "cashdesk_id": "507f1f77bcf86cd799439011",
- "items": [
- {
- "amount": 2,
- "amount_unit": "pcs",
- "text": "Product Name",
- "gross": 1990,
- "tax_rate": 20,
- "product_id": "507f1f77bcf86cd799439013"
}
], - "payments": [
- {
- "value": 3780,
- "payment_method_id": "507f1f77bcf86cd799439015",
- "status": "succeeded"
}
]
}{- "id": "string",
- "status": "pending",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "receipt": {
- "id": "string",
- "number": "string"
}, - "customer": {
- "id": "string",
- "name": "string"
}, - "reader_status": {
- "status": "string",
- "name": "string"
}, - "items": [
- {
- "id": "string",
- "quantity": 0,
- "quantity_unit": "pcs",
- "name": "string",
- "gross": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "infos": "string",
- "has_ura": true,
- "discounts": [
- {
- "fixed_amount": 0
}
], - "product": {
- "id": "string",
- "name": "string"
}, - "productgroup": {
- "id": "string",
- "name": "string"
}
}
], - "payments": [
- {
- "id": "string",
- "value": 0,
- "tip_amount": 0,
- "change": 0,
- "status": "open",
- "info": "string",
- "due_days": 0,
- "provider": "string",
- "sumup": {
- "transaction_id": "string",
- "checkout_id": "string",
- "reader_id": "string",
- "foreign_transaction_id": "string",
- "integration": "cloud"
}, - "commission": {
- "amount": 47,
- "metadata": {
- "type": "percentage",
- "percentage": 1.25,
- "base_amount": 3780
}
}, - "method": {
- "id": "string",
- "name": "string",
- "type": "CASH"
}
}
], - "change_logs": [
- {
- "id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "user": "string",
- "action": "created",
- "changes": [
- {
- "field": "string",
- "old_value": null,
- "new_value": null,
- "item_index": 0,
- "item_id": "string"
}
], - "metadata": { }
}
], - "is_cost_estimation": true,
- "cost_estimation_valid_days": 0,
- "table": "string",
- "service_type": "dine_in",
- "text": "string",
- "discount": {
- "fixed_amount": 0,
- "percentage": 0
}
}{- "id": "string",
- "status": "pending",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "receipt": {
- "id": "string",
- "number": "string"
}, - "customer": {
- "id": "string",
- "name": "string"
}, - "reader_status": {
- "status": "string",
- "name": "string"
}, - "items": [
- {
- "id": "string",
- "quantity": 0,
- "quantity_unit": "pcs",
- "name": "string",
- "gross": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "infos": "string",
- "has_ura": true,
- "discounts": [
- {
- "fixed_amount": 0
}
], - "product": {
- "id": "string",
- "name": "string"
}, - "productgroup": {
- "id": "string",
- "name": "string"
}
}
], - "payments": [
- {
- "id": "string",
- "value": 0,
- "tip_amount": 0,
- "change": 0,
- "status": "open",
- "info": "string",
- "due_days": 0,
- "provider": "string",
- "sumup": {
- "transaction_id": "string",
- "checkout_id": "string",
- "reader_id": "string",
- "foreign_transaction_id": "string",
- "integration": "cloud"
}, - "commission": {
- "amount": 47,
- "metadata": {
- "type": "percentage",
- "percentage": 1.25,
- "base_amount": 3780
}
}, - "method": {
- "id": "string",
- "name": "string",
- "type": "CASH"
}
}
], - "change_logs": [
- {
- "id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "user": "string",
- "action": "created",
- "changes": [
- {
- "field": "string",
- "old_value": null,
- "new_value": null,
- "item_index": 0,
- "item_id": "string"
}
], - "metadata": { }
}
], - "is_cost_estimation": true,
- "cost_estimation_valid_days": 0,
- "table": "string",
- "service_type": "dine_in",
- "text": "string",
- "discount": {
- "fixed_amount": 0,
- "percentage": 0
}
}Update description, client, items, or add payments. Tracks changes in the order changelog.
items is provided, it replaces all existing items.| id required | string |
| client_id | string or null |
| description | string or null |
| status | string Enum: "payment_pending" "aborted" |
Array of objects (OrderItem) | |
Array of objects (OrderPayment) |
{- "client_id": "string",
- "description": "string",
- "status": "payment_pending",
- "items": [
- {
- "amount": 0,
- "amount_unit": "pcs",
- "name": "string",
- "gross": 0,
- "tax_rate": 0,
- "product_id": "string",
- "discounts": [
- {
- "fixed_amount": 0
}
], - "aw": 0,
- "serial": "string",
- "infos": "string",
- "has_ura": true
}
], - "payments": [
- {
- "value": 0,
- "tip_amount": 0,
- "payment_method_id": "string",
- "due_days": 0,
- "status": "open",
- "info": "string",
- "provider": "sumup"
}
]
}{- "id": "string",
- "status": "pending",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "receipt": {
- "id": "string",
- "number": "string"
}, - "customer": {
- "id": "string",
- "name": "string"
}, - "reader_status": {
- "status": "string",
- "name": "string"
}, - "items": [
- {
- "id": "string",
- "quantity": 0,
- "quantity_unit": "pcs",
- "name": "string",
- "gross": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "infos": "string",
- "has_ura": true,
- "discounts": [
- {
- "fixed_amount": 0
}
], - "product": {
- "id": "string",
- "name": "string"
}, - "productgroup": {
- "id": "string",
- "name": "string"
}
}
], - "payments": [
- {
- "id": "string",
- "value": 0,
- "tip_amount": 0,
- "change": 0,
- "status": "open",
- "info": "string",
- "due_days": 0,
- "provider": "string",
- "sumup": {
- "transaction_id": "string",
- "checkout_id": "string",
- "reader_id": "string",
- "foreign_transaction_id": "string",
- "integration": "cloud"
}, - "commission": {
- "amount": 47,
- "metadata": {
- "type": "percentage",
- "percentage": 1.25,
- "base_amount": 3780
}
}, - "method": {
- "id": "string",
- "name": "string",
- "type": "CASH"
}
}
], - "change_logs": [
- {
- "id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "user": "string",
- "action": "created",
- "changes": [
- {
- "field": "string",
- "old_value": null,
- "new_value": null,
- "item_index": 0,
- "item_id": "string"
}
], - "metadata": { }
}
], - "is_cost_estimation": true,
- "cost_estimation_valid_days": 0,
- "table": "string",
- "service_type": "dine_in",
- "text": "string",
- "discount": {
- "fixed_amount": 0,
- "percentage": 0
}
}Adds a new item. Tracked in changelog with action='item_added'.
| id required | string |
| amount required | number Quantity with 2 decimal precision |
| amount_unit | string (QuantityUnit) Enum: "kg" "g" "l" "ml" "m" "mm" "pcs" "km" "min" |
| name required | string |
| gross required | integer Gross price in eurocent |
| tax_rate required | number |
| product_id | string or null |
Array of objects or null (ItemDiscount) | |
| aw | number or null Purchase price / Wareneinsatz in eurocent |
| serial | string or null |
| infos | string or null |
| has_ura | boolean or null |
{- "amount": 3,
- "amount_unit": "pcs",
- "name": "New Product",
- "gross": 2990,
- "tax_rate": 20,
- "product_id": "507f1f77bcf86cd799439013"
}{- "id": "string",
- "status": "pending",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "receipt": {
- "id": "string",
- "number": "string"
}, - "customer": {
- "id": "string",
- "name": "string"
}, - "reader_status": {
- "status": "string",
- "name": "string"
}, - "items": [
- {
- "id": "string",
- "quantity": 0,
- "quantity_unit": "pcs",
- "name": "string",
- "gross": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "infos": "string",
- "has_ura": true,
- "discounts": [
- {
- "fixed_amount": 0
}
], - "product": {
- "id": "string",
- "name": "string"
}, - "productgroup": {
- "id": "string",
- "name": "string"
}
}
], - "payments": [
- {
- "id": "string",
- "value": 0,
- "tip_amount": 0,
- "change": 0,
- "status": "open",
- "info": "string",
- "due_days": 0,
- "provider": "string",
- "sumup": {
- "transaction_id": "string",
- "checkout_id": "string",
- "reader_id": "string",
- "foreign_transaction_id": "string",
- "integration": "cloud"
}, - "commission": {
- "amount": 47,
- "metadata": {
- "type": "percentage",
- "percentage": 1.25,
- "base_amount": 3780
}
}, - "method": {
- "id": "string",
- "name": "string",
- "type": "CASH"
}
}
], - "change_logs": [
- {
- "id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "user": "string",
- "action": "created",
- "changes": [
- {
- "field": "string",
- "old_value": null,
- "new_value": null,
- "item_index": 0,
- "item_id": "string"
}
], - "metadata": { }
}
], - "is_cost_estimation": true,
- "cost_estimation_valid_days": 0,
- "table": "string",
- "service_type": "dine_in",
- "text": "string",
- "discount": {
- "fixed_amount": 0,
- "percentage": 0
}
}Updates fields of an existing item. Tracked in changelog with action='item_updated'.
| id required | string |
| itemId required | string Example: 507f1f77bcf86cd799439016 |
| amount | number |
| amount_unit | string (QuantityUnit) Enum: "kg" "g" "l" "ml" "m" "mm" "pcs" "km" "min" |
| name | string |
| gross | integer |
| tax_rate | number |
| product_id | string or null |
Array of objects or null (ItemDiscountUpdate) | |
| aw | number or null |
| serial | string or null |
| infos | string or null |
| has_ura | boolean or null |
{- "amount": 0,
- "amount_unit": "pcs",
- "name": "string",
- "gross": 0,
- "tax_rate": 0,
- "product_id": "string",
- "discounts": [
- {
- "fixed_amount": 0
}
], - "aw": 0,
- "serial": "string",
- "infos": "string",
- "has_ura": true
}{- "id": "string",
- "status": "pending",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "receipt": {
- "id": "string",
- "number": "string"
}, - "customer": {
- "id": "string",
- "name": "string"
}, - "reader_status": {
- "status": "string",
- "name": "string"
}, - "items": [
- {
- "id": "string",
- "quantity": 0,
- "quantity_unit": "pcs",
- "name": "string",
- "gross": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "infos": "string",
- "has_ura": true,
- "discounts": [
- {
- "fixed_amount": 0
}
], - "product": {
- "id": "string",
- "name": "string"
}, - "productgroup": {
- "id": "string",
- "name": "string"
}
}
], - "payments": [
- {
- "id": "string",
- "value": 0,
- "tip_amount": 0,
- "change": 0,
- "status": "open",
- "info": "string",
- "due_days": 0,
- "provider": "string",
- "sumup": {
- "transaction_id": "string",
- "checkout_id": "string",
- "reader_id": "string",
- "foreign_transaction_id": "string",
- "integration": "cloud"
}, - "commission": {
- "amount": 47,
- "metadata": {
- "type": "percentage",
- "percentage": 1.25,
- "base_amount": 3780
}
}, - "method": {
- "id": "string",
- "name": "string",
- "type": "CASH"
}
}
], - "change_logs": [
- {
- "id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "user": "string",
- "action": "created",
- "changes": [
- {
- "field": "string",
- "old_value": null,
- "new_value": null,
- "item_index": 0,
- "item_id": "string"
}
], - "metadata": { }
}
], - "is_cost_estimation": true,
- "cost_estimation_valid_days": 0,
- "table": "string",
- "service_type": "dine_in",
- "text": "string",
- "discount": {
- "fixed_amount": 0,
- "percentage": 0
}
}Removes an item. Tracked in changelog with action='item_removed'.
| id required | string |
| itemId required | string Example: 507f1f77bcf86cd799439016 |
{- "id": "string",
- "status": "pending",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "receipt": {
- "id": "string",
- "number": "string"
}, - "customer": {
- "id": "string",
- "name": "string"
}, - "reader_status": {
- "status": "string",
- "name": "string"
}, - "items": [
- {
- "id": "string",
- "quantity": 0,
- "quantity_unit": "pcs",
- "name": "string",
- "gross": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "infos": "string",
- "has_ura": true,
- "discounts": [
- {
- "fixed_amount": 0
}
], - "product": {
- "id": "string",
- "name": "string"
}, - "productgroup": {
- "id": "string",
- "name": "string"
}
}
], - "payments": [
- {
- "id": "string",
- "value": 0,
- "tip_amount": 0,
- "change": 0,
- "status": "open",
- "info": "string",
- "due_days": 0,
- "provider": "string",
- "sumup": {
- "transaction_id": "string",
- "checkout_id": "string",
- "reader_id": "string",
- "foreign_transaction_id": "string",
- "integration": "cloud"
}, - "commission": {
- "amount": 47,
- "metadata": {
- "type": "percentage",
- "percentage": 1.25,
- "base_amount": 3780
}
}, - "method": {
- "id": "string",
- "name": "string",
- "type": "CASH"
}
}
], - "change_logs": [
- {
- "id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "user": "string",
- "action": "created",
- "changes": [
- {
- "field": "string",
- "old_value": null,
- "new_value": null,
- "item_index": 0,
- "item_id": "string"
}
], - "metadata": { }
}
], - "is_cost_estimation": true,
- "cost_estimation_valid_days": 0,
- "table": "string",
- "service_type": "dine_in",
- "text": "string",
- "discount": {
- "fixed_amount": 0,
- "percentage": 0
}
}Adds a payment. Tracked in changelog with action='payment_added'. Supports SumUp integration.
| id required | string |
| value required | integer Payment amount in cents |
| tip_amount | integer or null Tip amount in cents, reported by the client after processing the SumUp payment on-device. Not included in |
| payment_method_id required | string |
| due_days | integer or null |
| status | string (PaymentStatus) Enum: "open" "processing" "succeeded" "failed" "aborted" "refunded" |
| info | string or null |
| provider | string or null Value: "sumup" |
object (SumUpPaymentData) |
{- "value": 5000,
- "tip_amount": 500,
- "payment_method_id": "507f1f77bcf86cd799439015",
- "due_days": 0,
- "status": "open",
- "info": "string",
- "provider": "sumup",
- "sumup": {
- "transaction_id": "string",
- "checkout_id": "string",
- "reader_id": "string",
- "foreign_transaction_id": "string",
- "integration": "cloud"
}
}{- "id": "string",
- "status": "pending",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "receipt": {
- "id": "string",
- "number": "string"
}, - "customer": {
- "id": "string",
- "name": "string"
}, - "reader_status": {
- "status": "string",
- "name": "string"
}, - "items": [
- {
- "id": "string",
- "quantity": 0,
- "quantity_unit": "pcs",
- "name": "string",
- "gross": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "infos": "string",
- "has_ura": true,
- "discounts": [
- {
- "fixed_amount": 0
}
], - "product": {
- "id": "string",
- "name": "string"
}, - "productgroup": {
- "id": "string",
- "name": "string"
}
}
], - "payments": [
- {
- "id": "string",
- "value": 0,
- "tip_amount": 0,
- "change": 0,
- "status": "open",
- "info": "string",
- "due_days": 0,
- "provider": "string",
- "sumup": {
- "transaction_id": "string",
- "checkout_id": "string",
- "reader_id": "string",
- "foreign_transaction_id": "string",
- "integration": "cloud"
}, - "commission": {
- "amount": 47,
- "metadata": {
- "type": "percentage",
- "percentage": 1.25,
- "base_amount": 3780
}
}, - "method": {
- "id": "string",
- "name": "string",
- "type": "CASH"
}
}
], - "change_logs": [
- {
- "id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "user": "string",
- "action": "created",
- "changes": [
- {
- "field": "string",
- "old_value": null,
- "new_value": null,
- "item_index": 0,
- "item_id": "string"
}
], - "metadata": { }
}
], - "is_cost_estimation": true,
- "cost_estimation_valid_days": 0,
- "table": "string",
- "service_type": "dine_in",
- "text": "string",
- "discount": {
- "fixed_amount": 0,
- "percentage": 0
}
}Updates an existing payment. Tracked in changelog with action='payment_updated'.
| id required | string |
| paymentId required | string Example: 507f1f77bcf86cd799439022 |
| value | integer |
| tip_amount | integer or null Tip amount in cents, reported by the client for SumUp payments processed on-device. |
| due_days | integer |
| status | string (PaymentStatus) Enum: "open" "processing" "succeeded" "failed" "aborted" "refunded" |
| info | string |
object (SumUpPaymentData) |
{- "value": 0,
- "tip_amount": 0,
- "due_days": 0,
- "status": "open",
- "info": "string",
- "sumup": {
- "transaction_id": "string",
- "checkout_id": "string",
- "reader_id": "string",
- "foreign_transaction_id": "string",
- "integration": "cloud"
}
}{- "id": "string",
- "status": "pending",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "receipt": {
- "id": "string",
- "number": "string"
}, - "customer": {
- "id": "string",
- "name": "string"
}, - "reader_status": {
- "status": "string",
- "name": "string"
}, - "items": [
- {
- "id": "string",
- "quantity": 0,
- "quantity_unit": "pcs",
- "name": "string",
- "gross": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "infos": "string",
- "has_ura": true,
- "discounts": [
- {
- "fixed_amount": 0
}
], - "product": {
- "id": "string",
- "name": "string"
}, - "productgroup": {
- "id": "string",
- "name": "string"
}
}
], - "payments": [
- {
- "id": "string",
- "value": 0,
- "tip_amount": 0,
- "change": 0,
- "status": "open",
- "info": "string",
- "due_days": 0,
- "provider": "string",
- "sumup": {
- "transaction_id": "string",
- "checkout_id": "string",
- "reader_id": "string",
- "foreign_transaction_id": "string",
- "integration": "cloud"
}, - "commission": {
- "amount": 47,
- "metadata": {
- "type": "percentage",
- "percentage": 1.25,
- "base_amount": 3780
}
}, - "method": {
- "id": "string",
- "name": "string",
- "type": "CASH"
}
}
], - "change_logs": [
- {
- "id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "user": "string",
- "action": "created",
- "changes": [
- {
- "field": "string",
- "old_value": null,
- "new_value": null,
- "item_index": 0,
- "item_id": "string"
}
], - "metadata": { }
}
], - "is_cost_estimation": true,
- "cost_estimation_valid_days": 0,
- "table": "string",
- "service_type": "dine_in",
- "text": "string",
- "discount": {
- "fixed_amount": 0,
- "percentage": 0
}
}Manually triggers a live SumUp transaction status check for a payment stuck in processing.
Finds the SumUp payment on the order, calls the SumUp API, and transitions the payment and
order to the resolved state if the transaction is available. If the transaction is not yet
visible in SumUp's API, the current order state is returned unchanged (no error).
| id required | string |
{- "id": "string",
- "status": "pending",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "receipt": {
- "id": "string",
- "number": "string"
}, - "customer": {
- "id": "string",
- "name": "string"
}, - "reader_status": {
- "status": "string",
- "name": "string"
}, - "items": [
- {
- "id": "string",
- "quantity": 0,
- "quantity_unit": "pcs",
- "name": "string",
- "gross": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "infos": "string",
- "has_ura": true,
- "discounts": [
- {
- "fixed_amount": 0
}
], - "product": {
- "id": "string",
- "name": "string"
}, - "productgroup": {
- "id": "string",
- "name": "string"
}
}
], - "payments": [
- {
- "id": "string",
- "value": 0,
- "tip_amount": 0,
- "change": 0,
- "status": "open",
- "info": "string",
- "due_days": 0,
- "provider": "string",
- "sumup": {
- "transaction_id": "string",
- "checkout_id": "string",
- "reader_id": "string",
- "foreign_transaction_id": "string",
- "integration": "cloud"
}, - "commission": {
- "amount": 47,
- "metadata": {
- "type": "percentage",
- "percentage": 1.25,
- "base_amount": 3780
}
}, - "method": {
- "id": "string",
- "name": "string",
- "type": "CASH"
}
}
], - "change_logs": [
- {
- "id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "user": "string",
- "action": "created",
- "changes": [
- {
- "field": "string",
- "old_value": null,
- "new_value": null,
- "item_index": 0,
- "item_id": "string"
}
], - "metadata": { }
}
], - "is_cost_estimation": true,
- "cost_estimation_valid_days": 0,
- "table": "string",
- "service_type": "dine_in",
- "text": "string",
- "discount": {
- "fixed_amount": 0,
- "percentage": 0
}
}| id required | string |
| limit | integer [ 1 .. 100 ] Default: 20 |
| offset | integer >= 0 Default: 0 |
{- "rows": [
- {
- "_id": "string",
- "number": 0,
- "typ": "betrieblich",
- "date": "2019-08-24T14:15:22Z",
- "amount": 0,
- "description": "string",
- "balance": 0,
- "createdBy": {
- "_id": "string",
- "username": "string",
- "firstname": "string",
- "lastname": "string"
}
}
], - "total_count": 0,
- "has_more": true
}| id required | string |
required | Array of objects |
| description | string or null |
| type | string Enum: "betrieblich" "privat" |
| invoice | string or null |
| supplier | string or null |
{- "positions": [
- {
- "taxRate": 0,
- "gross": 0
}
], - "description": "string",
- "type": "betrieblich",
- "invoice": "string",
- "supplier": "string"
}{- "_id": "string",
- "number": 0,
- "typ": "betrieblich",
- "date": "2019-08-24T14:15:22Z",
- "amount": 0,
- "description": "string",
- "balance": 0,
- "createdBy": {
- "_id": "string",
- "username": "string",
- "firstname": "string",
- "lastname": "string"
}
}Returns a CSV or PDF export of cashbook entries for the given date range.
| id required | string |
| from | string <date> |
| until | string <date> |
| format | string Default: "csv" Enum: "csv" "pdf" |
{- "statusCode": 400,
- "error": "Bad Request",
- "message": "string"
}| cashdesk | string Cashdesk ID (required for admin users) |
| limit | integer [ 1 .. 100 ] Default: 20 |
| offset | integer >= 0 Default: 0 |
{- "rows": [
- {
- "id": "string",
- "start": "2026-03-01 00:00:00",
- "end": "2026-03-31 23:59:59",
- "month": "2026-03",
- "revenue": 0,
- "createdAt": "2026-04-01 08:30:00"
}
], - "total_count": 0,
- "has_more": true
}| month required | integer [ 1 .. 12 ] |
| year required | integer |
| cashdesk | string Cashdesk ID (admin only) |
{- "month": 3,
- "year": 2026,
- "cashdesk": "string"
}{- "id": "string",
- "start": "2026-03-01 00:00:00",
- "end": "2026-03-31 23:59:59",
- "month": "2026-03",
- "revenue": 0,
- "createdAt": "2026-04-01 08:30:00"
}| id required | string |
| output | string Default: "JSON" Enum: "JSON" "PDF" "FILE_URL" Response format: JSON, PDF, or FILE_URL |
{- "id": "string",
- "start": "2026-03-01 00:00:00",
- "end": "2026-03-31 23:59:59",
- "month": "2026-03",
- "revenue": 0,
- "createdAt": "2026-04-01 08:30:00"
}Returns a paginated, sortable list of payments. Accessible by admins (all cashdesks) and owners (own cashdesk only, automatically scoped).
| limit | integer [ 1 .. 100 ] Default: 20 |
| offset | integer >= 0 Default: 0 |
| cashdesk | string Example: cashdesk=507f1f77bcf86cd799439011 Filter by cashdesk ID (admin only — owners are always scoped to their own cashdesk) |
| provider | string Value: "sumup" Filter by payment provider |
| status | string (PaymentStatus) Enum: "open" "processing" "succeeded" "failed" "aborted" "refunded" Filter by payment status |
| from | string <date-time> Example: from=2026-01-01T00:00:00.000Z Filter payments created at or after this ISO 8601 datetime |
| until | string <date-time> Example: until=2026-12-31T23:59:59.999Z Filter payments created at or before this ISO 8601 datetime |
| sumup_client_transaction_id | string Filter by SumUp client transaction ID (exact match) |
| sort_by | string Default: "created_at" Enum: "created_at" "updated_at" "amount" "status" |
| sort_order | string Default: "desc" Enum: "asc" "desc" |
{- "total": 42,
- "rows": [
- {
- "id": "507f1f77bcf86cd799439033",
- "amount": 1990,
- "change": 10,
- "status": "open",
- "error": "string",
- "method": {
- "id": "string",
- "name": "string",
- "type": "CASH"
}, - "cashdesk": {
- "id": "string",
- "cashdesk_id": "string",
- "customer_name": "string"
}, - "provider": "sumup",
- "currency": "EUR",
- "deadline": 0,
- "info": "string",
- "sumup": {
- "transaction_id": "string",
- "transaction_code": "string",
- "client_transaction_id": "string",
- "integration": "cloud"
}, - "created_by": "507f1f77bcf86cd799439011",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "has_more": true,
- "paginate": {
- "limit": 20,
- "offset": 0
}
}Returns a single payment with its resolved cashdesk and payment method.
If the payment has a SumUp client_transaction_id, the live SumUp transaction
is fetched and attached under sumup_transaction. If the fetch fails or no
credentials are available, sumup_transaction is null.
For SumUp payments, the related webhook event record is also returned under
webhook_event (or null if no webhook has been received yet for this transaction).
| id required | string |
{- "payment": {
- "id": "507f1f77bcf86cd799439033",
- "amount": 1990,
- "change": 10,
- "status": "open",
- "error": "string",
- "method": {
- "id": "string",
- "name": "string",
- "type": "CASH"
}, - "cashdesk": {
- "id": "string",
- "cashdesk_id": "string",
- "customer_name": "string"
}, - "provider": "sumup",
- "currency": "EUR",
- "deadline": 0,
- "info": "string",
- "sumup": {
- "transaction_id": "string",
- "transaction_code": "string",
- "client_transaction_id": "string",
- "integration": "cloud"
}, - "created_by": "507f1f77bcf86cd799439011",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}, - "sumup_transaction": { },
- "webhook_event": {
- "id": "507f1f77bcf86cd799439011",
- "provider": "sumup",
- "eventId": "txn_01HV9BQKP8RJCM1X2ZFYWQPD3",
- "eventType": "solo.transaction.updated",
- "payload": { },
- "status": "succeeded",
- "lastError": "string",
- "processedAt": "2024-03-15T10:30:00.000Z",
- "createdAt": "2024-03-15T10:29:45.000Z",
- "updatedAt": "2024-03-15T10:30:00.000Z"
}
}Triggers a refund for a succeeded SumUp payment via the SumUp API and marks
the payment as refunded. Requires the payment to have a SumUp transaction_id.
Prerequisites:
provider must be sumupsumup.transaction_id (set after the transaction was completed)Error cases:
400 — not a SumUp payment, missing transaction ID, no credentials, or SumUp
rejected the refund (e.g. insufficient funds in the merchant account)404 — payment not found| id required | string |
{- "id": "507f1f77bcf86cd799439033",
- "amount": 1990,
- "change": 10,
- "status": "open",
- "error": "string",
- "method": {
- "id": "string",
- "name": "string",
- "type": "CASH"
}, - "cashdesk": {
- "id": "string",
- "cashdesk_id": "string",
- "customer_name": "string"
}, - "provider": "sumup",
- "currency": "EUR",
- "deadline": 0,
- "info": "string",
- "sumup": {
- "transaction_id": "string",
- "transaction_code": "string",
- "client_transaction_id": "string",
- "integration": "cloud"
}, - "created_by": "507f1f77bcf86cd799439011",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Validates the uploaded image (PNG, JPEG or WebP, max 10 MB), optimizes the original and generates the named receipt thumbnail formats, then stores everything on the account's S3 bucket with public-read access.
| file required | string <binary> The image file (PNG, JPEG or WebP) |
| account_id | string Target account ID. Admin only; non-admins always upload to their own account. |
{- "id": "507f1f77bcf86cd799439011",
- "public_id": "eb3ce6c7-ce7e-4638-a072-e5054706f601",
- "name": "string",
- "mime": "image/png",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Restaurant floor management. Gated behind the restaurant extension, checked on the logged-in user's cashdesk. Tables and zones belong to the account (customer); list/create take an account id (required for admins, regular users use their own), while item routes resolve the entity by id and enforce account ownership. A table's open tab is a long-lived pending order attached to the table — opening one records the register via cashdesk_id.
Returns the floor state for a cashdesk. Poll-friendly: pass since to
get only tables changed after that timestamp (delta), so clients can
poll frequently for cross-terminal freshness. Requires the restaurant
feature.
| account | string Example: account=507f1f77bcf86cd799439011 Account (customer) ID. Required for admin users. |
| status | string Enum: "free" "occupied" "reserved" "cleaning" Filter by table status |
| active | boolean Filter by active flag |
| since | string <date-time> Example: since=2026-07-13T10:00:00.000Z Return only tables updated after this ISO 8601 datetime (delta polling) |
{- "count": 12,
- "rows": [
- {
- "id": "507f1f77bcf86cd799439050",
- "name": "Tisch 1",
- "number": 1,
- "zone": {
- "id": "507f1f77bcf86cd799439060",
- "name": "Gastraum"
}, - "seats": 4,
- "x": 0,
- "y": 0,
- "w": 0,
- "h": 0,
- "status": "occupied",
- "active": true,
- "active_order": {
- "id": "507f1f77bcf86cd799439040",
- "status": "pending",
- "item_count": 3,
- "total": 4560
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}Requires the restaurant feature.
| account | string Account (customer) ID. Required for admin users. |
| name | string |
| number | integer or null |
| zone_id | string or null ID of the zone to assign the table to. null clears the assignment. |
| seats | integer or null |
| x | number or null |
| y | number or null |
| w | number or null |
| h | number or null |
| status | string Enum: "free" "occupied" "reserved" "cleaning" |
| active | boolean |
{- "name": "Tisch 1",
- "number": 1,
- "zone_id": "507f1f77bcf86cd799439060",
- "seats": 4,
- "x": 100,
- "y": 120,
- "w": 60,
- "h": 60
}{- "id": "507f1f77bcf86cd799439050",
- "name": "Tisch 1",
- "number": 1,
- "zone": {
- "id": "507f1f77bcf86cd799439060",
- "name": "Gastraum"
}, - "seats": 4,
- "x": 0,
- "y": 0,
- "w": 0,
- "h": 0,
- "status": "occupied",
- "active": true,
- "active_order": {
- "id": "507f1f77bcf86cd799439040",
- "status": "pending",
- "item_count": 3,
- "total": 4560
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}{- "id": "507f1f77bcf86cd799439050",
- "name": "Tisch 1",
- "number": 1,
- "zone": {
- "id": "507f1f77bcf86cd799439060",
- "name": "Gastraum"
}, - "seats": 4,
- "x": 0,
- "y": 0,
- "w": 0,
- "h": 0,
- "status": "occupied",
- "active": true,
- "active_order": {
- "id": "507f1f77bcf86cd799439040",
- "status": "pending",
- "item_count": 3,
- "total": 4560
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Update geometry, name, zone, seats, status, or active flag.
| id required | string |
| name | string |
| number | integer or null |
| zone_id | string or null ID of the zone to assign the table to. null clears the assignment. |
| seats | integer or null |
| x | number or null |
| y | number or null |
| w | number or null |
| h | number or null |
| status | string Enum: "free" "occupied" "reserved" "cleaning" |
| active | boolean |
{- "name": "Tisch 1",
- "number": 1,
- "zone_id": "507f1f77bcf86cd799439060",
- "seats": 4,
- "x": 0,
- "y": 0,
- "w": 0,
- "h": 0,
- "status": "free",
- "active": true
}{- "id": "507f1f77bcf86cd799439050",
- "name": "Tisch 1",
- "number": 1,
- "zone": {
- "id": "507f1f77bcf86cd799439060",
- "name": "Gastraum"
}, - "seats": 4,
- "x": 0,
- "y": 0,
- "w": 0,
- "h": 0,
- "status": "occupied",
- "active": true,
- "active_order": {
- "id": "507f1f77bcf86cd799439040",
- "status": "pending",
- "item_count": 3,
- "total": 4560
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Attaches a long-lived pending order (the tab) to the table and marks
it occupied. If the table already has an open tab, that existing order
is returned unchanged (resume).
| id required | string |
| service_type | string Default: "dine_in" Enum: "dine_in" "takeaway" |
| cashdesk_id | string Register the tab is opened on. Defaults to the caller's own cashdesk; required when an admin opens a tab. |
{- "service_type": "dine_in",
- "cashdesk_id": "string"
}{- "id": "string",
- "status": "pending",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "receipt": {
- "id": "string",
- "number": "string"
}, - "customer": {
- "id": "string",
- "name": "string"
}, - "reader_status": {
- "status": "string",
- "name": "string"
}, - "items": [
- {
- "id": "string",
- "quantity": 0,
- "quantity_unit": "pcs",
- "name": "string",
- "gross": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "infos": "string",
- "has_ura": true,
- "discounts": [
- {
- "fixed_amount": 0
}
], - "product": {
- "id": "string",
- "name": "string"
}, - "productgroup": {
- "id": "string",
- "name": "string"
}
}
], - "payments": [
- {
- "id": "string",
- "value": 0,
- "tip_amount": 0,
- "change": 0,
- "status": "open",
- "info": "string",
- "due_days": 0,
- "provider": "string",
- "sumup": {
- "transaction_id": "string",
- "checkout_id": "string",
- "reader_id": "string",
- "foreign_transaction_id": "string",
- "integration": "cloud"
}, - "commission": {
- "amount": 47,
- "metadata": {
- "type": "percentage",
- "percentage": 1.25,
- "base_amount": 3780
}
}, - "method": {
- "id": "string",
- "name": "string",
- "type": "CASH"
}
}
], - "change_logs": [
- {
- "id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "user": "string",
- "action": "created",
- "changes": [
- {
- "field": "string",
- "old_value": null,
- "new_value": null,
- "item_index": 0,
- "item_id": "string"
}
], - "metadata": { }
}
], - "is_cost_estimation": true,
- "cost_estimation_valid_days": 0,
- "table": "string",
- "service_type": "dine_in",
- "text": "string",
- "discount": {
- "fixed_amount": 0,
- "percentage": 0
}
}{- "id": "string",
- "status": "pending",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "receipt": {
- "id": "string",
- "number": "string"
}, - "customer": {
- "id": "string",
- "name": "string"
}, - "reader_status": {
- "status": "string",
- "name": "string"
}, - "items": [
- {
- "id": "string",
- "quantity": 0,
- "quantity_unit": "pcs",
- "name": "string",
- "gross": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "infos": "string",
- "has_ura": true,
- "discounts": [
- {
- "fixed_amount": 0
}
], - "product": {
- "id": "string",
- "name": "string"
}, - "productgroup": {
- "id": "string",
- "name": "string"
}
}
], - "payments": [
- {
- "id": "string",
- "value": 0,
- "tip_amount": 0,
- "change": 0,
- "status": "open",
- "info": "string",
- "due_days": 0,
- "provider": "string",
- "sumup": {
- "transaction_id": "string",
- "checkout_id": "string",
- "reader_id": "string",
- "foreign_transaction_id": "string",
- "integration": "cloud"
}, - "commission": {
- "amount": 47,
- "metadata": {
- "type": "percentage",
- "percentage": 1.25,
- "base_amount": 3780
}
}, - "method": {
- "id": "string",
- "name": "string",
- "type": "CASH"
}
}
], - "change_logs": [
- {
- "id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "user": "string",
- "action": "created",
- "changes": [
- {
- "field": "string",
- "old_value": null,
- "new_value": null,
- "item_index": 0,
- "item_id": "string"
}
], - "metadata": { }
}
], - "is_cost_estimation": true,
- "cost_estimation_valid_days": 0,
- "table": "string",
- "service_type": "dine_in",
- "text": "string",
- "discount": {
- "fixed_amount": 0,
- "percentage": 0
}
}Frees the table and detaches its tab. Settling the order itself is done through the normal order flow; closing only releases the table.
| id required | string |
{- "id": "507f1f77bcf86cd799439050",
- "name": "Tisch 1",
- "number": 1,
- "zone": {
- "id": "507f1f77bcf86cd799439060",
- "name": "Gastraum"
}, - "seats": 4,
- "x": 0,
- "y": 0,
- "w": 0,
- "h": 0,
- "status": "occupied",
- "active": true,
- "active_order": {
- "id": "507f1f77bcf86cd799439040",
- "status": "pending",
- "item_count": 3,
- "total": 4560
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Zones group tables (e.g. Gastraum, Terrasse). Requires the restaurant feature.
| account | string Account (customer) ID. Required for admin users. |
{- "count": 2,
- "rows": [
- {
- "id": "507f1f77bcf86cd799439060",
- "name": "Gastraum",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]
}| account | string Account (customer) ID. Required for admin users. |
| name | string |
{- "name": "Terrasse"
}{- "id": "507f1f77bcf86cd799439060",
- "name": "Gastraum",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}| id required | string |
| name | string |
{- "name": "Gastraum"
}{- "id": "507f1f77bcf86cd799439060",
- "name": "Gastraum",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Cursor-paginated alternative to GET /v2/receipts. Does not return a total count.
Pages are ordered by (date DESC, _id DESC). To fetch the next page, pass the
next_cursor from the previous response in the cursor query parameter. When
next_cursor is null, the end of the result set has been reached. Cursors are
opaque base64url strings and should not be parsed by the client.
| limit | integer [ 1 .. 100 ] Default: 30 |
| cursor | string Opaque cursor from a previous response's |
| number | string |
| type | string Single receipt-type prefix (e.g. |
| types | string Comma-separated list of receipt-type prefixes (e.g. |
| product_id | string |
| user_id | string |
| serial | string |
| serial_search | string Case-insensitive prefix search on item serial numbers. |
| from | string <date-time> |
| until | string <date-time> |
| origin | string |
| reversal | boolean |
| client_id | string |
| payment_method_id | string |
| payment_status | string |
| cashdesk | string Admin-only. For non-admin users the cashdesk is forced to the caller's. |
| account | string Admin-only. For non-admin users the account is forced to the caller's customer. |
| demo | boolean Admin-only override. For non-admin users |
{- "rows": [
- {
- "id": "string",
- "number": "RE_00000001",
- "date": "string",
- "description": "string",
- "is_demo": true,
- "rksv_id": 0,
- "net": 0,
- "gross": 0,
- "tip_amount": 0,
- "type": {
- "id": "string",
- "name": "string",
- "prefix": "RE"
}, - "created_by": {
- "id": "string",
- "username": "string",
- "firstname": "string",
- "lastname": "string"
}, - "discount": {
- "fixed_amount": 0,
- "percentage": 0
}, - "extras": {
- "has_differtial_tax": true,
- "has_ura_info": true,
- "commercial_text": "string",
- "footer_Text": "string",
- "show_openings": true
}, - "payment": {
- "method": {
- "_id": "string",
- "name": "string",
- "invoiceText": "string",
- "type": "CASH",
- "hasToBeSigned": true,
- "active": true,
- "position": 0
}, - "value": 0,
- "tip_amount": 0,
- "change": 0,
- "due_date": "string",
- "due_days": 0,
- "status": true,
- "info": "string"
}, - "security": {
- "signature": "string",
- "qrcode": "string",
- "cert": {
- "id": "string",
- "vda": "string",
- "serial": "string"
}
}, - "customer": {
- "id": "string",
- "firstname": "string",
- "lastname": "string",
- "prefix": "string",
- "email": "string",
- "company": "string",
- "phone": "string",
- "uid": "string",
- "address": { }
}, - "invoicing_company": {
- "cashdesk_id": "string",
- "company_id": "string",
- "cashdesk_number": "string",
- "name": "string",
- "uid": "string",
- "free_from_tax": true,
- "state": "TESTING",
- "taxexempt": true,
- "openings": [
- {
- "label": "Montag",
- "from": "09:00",
- "until": "18:00"
}
], - "contact": {
- "email": "string",
- "phone": "string",
- "name": "string",
- "website": "string"
}, - "address": {
- "street": "string",
- "plz": 0,
- "city": "string",
- "country": "string"
}, - "bank": {
- "name": "string",
- "iban": "string",
- "bic": "string"
}
}, - "items": [
- {
- "id": "string",
- "amount": 0,
- "amount_unit": "pcs",
- "text": "string",
- "gross": 0,
- "net": 0,
- "tax": 0,
- "tax_rate": 0,
- "serial": "string",
- "aw": 0,
- "product": {
- "id": "string",
- "name": "string"
}, - "discounts": [
- {
- "fixed_amount": 0
}
]
}
], - "taxes": [
- {
- "tax_rate": 0,
- "price": 0,
- "value": 0
}
], - "cost_estimation": {
- "status": true,
- "valid_until": "string",
- "receipt": {
- "id": "string",
- "number": "string"
}
}, - "cancelled_receipt": {
- "id": "string",
- "number": "string",
- "date": "string"
}
}
], - "paginate": {
- "limit": 0,
- "next_cursor": "string"
}
}