Appearance
Compliance
Overview
Compliance settings help you meet legal and regulatory requirements including GDPR, food safety regulations, and fiscal requirements.
Key Purpose: Configure settings for legal and regulatory compliance.
Purpose
This page lets you configure GDPR consent flows, fiscal module integrations, food safety display options, age verification rules, and receipt legal requirements to meet your country's regulations.
Key Concepts
- GDPR Compliance: Settings for privacy policy URL, terms and conditions, cookie consent banners, data retention periods, and marketing consent that control how customer data is collected and managed.
- Fiscal Module: An optional integration with third-party fiscal providers (Fiskaly, EFSTA, or custom) required in countries like Belgium and Germany for tax-compliant transaction recording.
- Age Verification: A checkout-time prompt triggered when alcoholic items are in the cart, with a configurable minimum age that varies by country (16-21 depending on jurisdiction and beverage type).
- Allergen Display: A toggle controlling whether allergen icons and labels appear on menu items in Online Ordering and Kiosk, required by EU food information regulations.
- Sequential Receipt Numbers: A toggle ensuring receipts are numbered in unbroken sequence, a legal requirement in many countries for tax audit purposes.
Actions
Configure GDPR Settings
Set your privacy policy URL, terms and conditions URL, enable the cookie consent banner, and define the data retention period and marketing consent requirements.
Enable Fiscal Module
Turn on fiscal compliance, select a fiscal provider (Fiskaly, EFSTA, or custom), and enter your fiscal registration ID for tax-compliant transaction recording.
Set Age Verification Rules
Enable age verification for alcohol orders and configure the minimum legal age appropriate for your country.
Manage Food Safety Display
Toggle allergen information and nutritional information display for customer-facing menu interfaces.
Location
- Backoffice Route:
/settings/compliance - Backend Controller:
app/Http/Controllers/Api/ComplianceController.php - Vue Component:
src/views/settings/ComplianceComponent.vue
GDPR Compliance
Privacy Policy URL
| Property | Value |
|---|---|
| Field ID | privacy_policy_url |
| Label | Privacy Policy URL |
| Type | URL |
| Required | Yes (EU) |
Description: Link to your privacy policy.
Customer Impact:
- Shown during account creation
- Link in footer of Online Ordering
- Required for GDPR compliance
Terms & Conditions URL
| Property | Value |
|---|---|
| Field ID | terms_url |
| Label | Terms & Conditions URL |
| Type | URL |
| Required | Recommended |
Description: Link to your terms and conditions.
Customer Impact:
- Shown during checkout
- Customer must accept before ordering
Cookie Consent
| Property | Value |
|---|---|
| Field ID | cookie_consent_enabled |
| Label | Show Cookie Banner |
| Type | Toggle |
| Default | true |
Description: Show cookie consent banner to visitors.
Business Logic:
- Required in EU
- Shows on first visit
- Stores consent preference
Data Retention Period
| Property | Value |
|---|---|
| Field ID | data_retention_days |
| Label | Data Retention |
| Type | Number |
| Unit | Days |
| Default | 730 (2 years) |
Description: How long to keep customer data.
Business Logic:
- Customer data deleted after this period
- Transaction records may be kept longer (legal requirement)
Marketing Consent Required
| Property | Value |
|---|---|
| Field ID | marketing_consent_required |
| Label | Require Marketing Consent |
| Type | Toggle |
| Default | true |
Description: Require explicit consent for marketing emails.
Business Logic:
- If true: Checkbox for marketing opt-in
- If false: Opt-out model (not GDPR compliant)
Fiscal Compliance
Fiscal Module Enabled
| Property | Value |
|---|---|
| Field ID | fiscal_enabled |
| Label | Enable Fiscal Module |
| Type | Toggle |
| Default | false |
Description: Enable fiscal/tax compliance features.
Requirements by Country:
- Belgium: Fiscal module required for hospitality
- Netherlands: Not required
- Germany: TSE (Technical Security Equipment) required
Fiscal Provider
| Property | Value |
|---|---|
| Field ID | fiscal_provider |
| Label | Fiscal Provider |
| Type | Select |
| Options | fiskaly, efsta, custom |
| Depends On | fiscal_enabled = true |
Description: Third-party fiscal compliance provider.
Fiscal ID
| Property | Value |
|---|---|
| Field ID | fiscal_id |
| Label | Fiscal ID |
| Type | Text |
| Depends On | fiscal_enabled = true |
Description: Your fiscal registration ID.
Food Safety
Allergen Information
| Property | Value |
|---|---|
| Field ID | allergen_display |
| Label | Show Allergen Information |
| Type | Toggle |
| Default | true |
Description: Display allergen information on menu items.
Customer Impact:
- Allergen icons/labels on items
- Allergen filter in menu
- Required in EU
Nutritional Information
| Property | Value |
|---|---|
| Field ID | nutritional_display |
| Label | Show Nutritional Information |
| Type | Toggle |
| Default | false |
Description: Display nutritional information (calories, etc.).
Customer Impact:
- Calorie counts on items
- Nutritional details in item view
Alcohol Age Verification
| Property | Value |
|---|---|
| Field ID | alcohol_age_check |
| Label | Age Verification for Alcohol |
| Type | Toggle |
| Default | true |
Description: Require age confirmation for alcohol orders.
Business Logic:
- If cart contains alcohol → Age check prompt
- Customer confirms they are of legal age
- May require ID check on delivery
Minimum Alcohol Age
| Property | Value |
|---|---|
| Field ID | minimum_alcohol_age |
| Label | Minimum Age |
| Type | Number |
| Default | 18 |
| Depends On | alcohol_age_check = true |
Description: Minimum age to purchase alcohol.
By Country:
- Netherlands: 18
- Belgium: 16 (beer/wine), 18 (spirits)
- Germany: 16 (beer/wine), 18 (spirits)
- UK: 18
- USA: 21
Receipt Requirements
VAT Number on Receipt
| Property | Value |
|---|---|
| Field ID | vat_on_receipt |
| Label | Show VAT Number |
| Type | Toggle |
| Default | true |
Description: Display VAT number on receipts.
Legal Requirement: Required in EU for VAT-registered businesses.
Company Registration on Receipt
| Property | Value |
|---|---|
| Field ID | company_reg_on_receipt |
| Label | Show Company Registration |
| Type | Toggle |
| Default | false |
Description: Display company registration number on receipts.
Sequential Receipt Numbers
| Property | Value |
|---|---|
| Field ID | sequential_receipts |
| Label | Sequential Receipt Numbers |
| Type | Toggle |
| Default | true |
Description: Use sequential numbering for receipts.
Legal Requirement: Required in many countries for tax purposes.
Business Logic
GDPR Data Request Flow
Customer requests data export/deletion
│
▼
Verify customer identity
│
▼
Export Request:
├── Compile all customer data
├── Generate downloadable file
└── Send to customer
Deletion Request:
├── Delete personal data
├── Anonymize transaction records
├── Confirm deletion to customerCookie Consent Flow
Visitor arrives at site
│
▼
Cookie consent given?
├── Yes → Load all cookies
│
└── No → Show consent banner
├── Accept All → Set consent, load cookies
├── Reject → Set minimal cookies only
└── Customize → Show optionsAge Verification Flow
Customer adds alcohol to cart
│
▼
Proceed to checkout
│
▼
Age verification prompt:
"I confirm I am 18 years or older"
│
├── Confirmed → Continue checkout
└── Not confirmed → Remove alcohol itemsCustomer Impact
Online Ordering
- Cookie consent banner
- Privacy policy link
- Terms acceptance at checkout
- Age verification for alcohol
- Allergen information display
Data Rights
- Request data export
- Request data deletion
- Update marketing preferences
Relations
Depends On
- Locations: Compliance varies by country
Affects
- Online Ordering: Consent flows
- Customers: Data handling
- Receipts: Required information
- Menu Items: Allergen display
Related Features
Business Rules
- Cookie consent is required for EU visitors; the banner appears on first visit and the preference is stored so it does not reappear once accepted or rejected.
- Data retention defaults to 730 days (2 years); after this period customer personal data is deleted, but transaction records may be kept longer to satisfy legal accounting requirements.
- Marketing consent must be opt-in (checkbox) when
marketing_consent_requiredis true; using opt-out mode is not GDPR compliant in the EU. - Age verification is triggered at checkout only when the cart contains items flagged as alcoholic; if the customer does not confirm, alcoholic items are removed from the cart.
- Fiscal module settings (provider, fiscal ID) are only editable when
fiscal_enabledis true; Belgium requires this module for hospitality businesses, while the Netherlands does not.
FAQs
- "Is the cookie consent banner mandatory?" In the EU, yes; the system shows it on first visit and respects the visitor's choice for subsequent visits.
- "What happens when a customer requests data deletion?" Personal data is deleted and transaction records are anonymized; a confirmation is sent to the customer.
- "Do I need a fiscal module in the Netherlands?" No, it is not required; the fiscal module is primarily needed in Belgium (hospitality) and Germany (TSE requirement).
- "Can I set different minimum alcohol ages for beer vs. spirits?" The current system uses a single minimum age field; for countries with split ages (e.g., Belgium: 16 for beer/wine, 18 for spirits), set the higher age or manage product-level restrictions.
- "Are allergen icons shown automatically?" Allergen display must be enabled in compliance settings, and individual menu items must have allergen data configured for the icons to appear.
Troubleshooting
Problem: Cookie banner keeps showing
Causes:
- Cookies being cleared
- Consent not saving
- Browser blocking cookies
Solutions:
- Check browser settings
- Verify consent storage
- Allow cookies from site
Problem: GDPR data request not processing
Causes:
- Large data volume
- System error
- Email delivery issue
Solutions:
- Wait for processing
- Check system logs
- Verify email address
Problem: Age verification not showing
Causes:
- Feature disabled
- No alcohol items in cart
- Items not marked as alcohol
Solutions:
- Enable age verification
- Check cart contents
- Mark items as containing alcohol
Examples
EU Compliant Settings
json
{
"privacy_policy_url": "https://restaurant.com/privacy",
"terms_url": "https://restaurant.com/terms",
"cookie_consent_enabled": true,
"data_retention_days": 730,
"marketing_consent_required": true,
"allergen_display": true,
"alcohol_age_check": true,
"minimum_alcohol_age": 18,
"vat_on_receipt": true,
"sequential_receipts": true
}Belgium Fiscal Compliance
json
{
"fiscal_enabled": true,
"fiscal_provider": "fiskaly",
"fiscal_id": "BE-FISCAL-12345",
"vat_on_receipt": true,
"company_reg_on_receipt": true,
"sequential_receipts": true
}Cookie Consent Banner
┌─────────────────────────────────────────────────────────────┐
│ 🍪 We use cookies │
│ │
│ We use cookies to improve your experience on our site. │
│ By continuing, you agree to our use of cookies. │
│ │
│ [Privacy Policy] │
│ │
│ [Reject All] [Customize] [Accept All] │
└─────────────────────────────────────────────────────────────┘Age Verification Prompt
┌─────────────────────────────────────────────────────────────┐
│ 🍺 Age Verification Required │
│ │
│ Your order contains alcoholic beverages. │
│ │
│ Please confirm that you are 18 years of age or older. │
│ │
│ ☐ I confirm I am 18 years or older │
│ │
│ [Cancel] [Continue to Checkout]│
└─────────────────────────────────────────────────────────────┘GDPR Data Export
json
{
"customer_data_export": {
"personal_info": {
"name": "Jan de Vries",
"email": "jan@example.com",
"phone": "+31612345678",
"created_at": "2023-01-15"
},
"addresses": [
{
"label": "Home",
"address": "Kalverstraat 123, Amsterdam"
}
],
"orders": [
{
"order_number": "1234",
"date": "2024-01-10",
"total": 32.50
}
],
"loyalty": {
"points_balance": 450,
"points_earned": 1200,
"points_redeemed": 750
},
"marketing_consent": true,
"consent_date": "2023-01-15"
}
}