Datenformate & IntegrationData Formats
& Integration
Welche Daten BEEP! erwartet (Input) und welche BEEP! zurückgibt (Output). Von POS
über API bis Transaktions-Export.
What data BEEP! expects (input) and what BEEP! returns (output). From POS via API to
transaction export.
Datenfluss-ÜbersichtData
Flow Overview
POS / ERP
Korona, RPOS,
Excel, SAP
Produkte, Preise
→ API / Sync
BEEP! API
europe-west6
Firebase
Transaktionen
Webhooks / API →
Ihr System
Buchhaltung,
Analytics, BI
INPUT (HändlerMerchant → BEEP!)
Produktdaten (EAN, Name, Preis, MwSt.)Product data (EAN,
name, price, VAT)
Angebotsdaten (Rabatt, Gültigkeit)Offer data (discount,
validity)
Store-Stammdaten (Adresse, Logo)Store master data
(address, logo)
Produktbilder (JPEG/PNG)Product images (JPEG/PNG)
OUTPUT (BEEP! → HändlerMerchant)
Transaktionsdaten (Checkout, Items)Transaction data
(checkout, items)
Digitale Belege (PDF, JSON)Digital receipts (PDF,
JSON)
Analytics (Scans, Umsatz, Klicks)Analytics (scans,
revenue, clicks)
Webhook-Events (Echtzeit)Webhook events
(real-time)
Unterstützte POS-SystemeSupported POS Systems
✓ Nativ unterstützt
Korona POS
Vollständiger bidirektionaler Sync. Produkte,
Preise und Kassenumsätze werden automatisch synchronisiert.
↑ Via CSV/API
Excel / CSV
Manuelle und automatisierte Imports via
Excel-Upload in der Händler-App oder via API.
⚙ Custom Webhook
Beliebige POS/ERP
Jedes System, das HTTP-Calls macht. BEEP! empfängt
Produktupdates via POST /insertProduct.
Import-MethodenImport
Methods
| Methode |
Use Case |
Format |
Limit |
| API: POST /insertProduct |
Automatisierter POS-Sync, Echtzeit-Updates |
JSON + multipart |
1 Produkt / Call |
| API: POST /bulkImportProducts |
Batch-Import großer Kataloge |
JSON Array |
500 / Batch |
| Excel-Upload (Händler-App) |
Manuelle Imports durch Store Manager |
.xlsx |
10.000 Zeilen |
| Korona POS Sync |
Automatischer Nacht-Sync aus Korona |
Korona API |
Unbegrenzt |
Produktdaten sind EAN-basiert. Jedes Produkt wird über seinen EAN-13 oder EAN-8
Barcode eindeutig identifiziert. Gleiches EAN in verschiedenen Stores = gleiches Produkt,
unterschiedliche Preise.
Product data is EAN-based. Each product is uniquely identified by its EAN-13 or
EAN-8 barcode. Same EAN in different stores = same product, different prices.
{
"ean": "4000000000001",
"name": "Bio-Vollmilch 3,5%",
"price": 1.49,
"oldPrice": 1.79,
"vat": 7,
"storeId": "store_abc123",
"category": "Molkerei",
"unit": "Liter",
"brand": "BioHof",
"description": "Frische Bio-Vollmilch",
"imageUrl": "https://...",
"weight": "0.5kg",
"isOrganic": true,
"isVegan": true,
"allergens": [],
"flags": {
"requiresHumanVerification": false
},
"createdAt": "2026-02-27T10:00:00.000Z",
"updatedAt": "2026-02-27T10:00:00.000Z",
"nameLower": "bio-vollmilch 3,5%",
"brandLower": "biohof"
}
MwSt.-Sätze
| Wert |
Gilt für |
Beispiele |
| 7 |
Ermäßigter Steuersatz |
Lebensmittel, Getränke (außer Alkohol), Bücher |
| 19 |
Normaler Steuersatz |
Alkohol, Tabak, Non-Food, Elektronik |
Excel / CSV ImportExcel
/ CSV Import
Für manuelle Bulk-Imports akzeptiert BEEP! eine Excel-Datei (.xlsx) mit folgendem
Schema. Lade die Vorlage herunter und befülle sie mit deinen Produktdaten:
For manual bulk imports BEEP! accepts an Excel file (.xlsx) with the following schema.
Download the template and fill it with your product data:
ean,name,price,vat,category,unit,brand,description,is_organic,is_vegan
4000000000001,Bio-Vollmilch 3-5%,1.49,7,Molkerei,Liter,BioHof,Frische Bio-Vollmilch,true,false
4000000000002,Schwarzbier 0-5l,1.19,19,Getränke,Flasche,Klosterbrau,Fränkisches Schwarzbier,false,true
4000000000003,Butterbrezel,0.89,7,Backwaren,Stück,Backstube,Frisch gebackene Butterbrezel,false,true
Wichtige Regeln für den CSV-Import:
- EAN muss exakt 8 oder 13 Stellen haben (ohne führende Nullen)
- Preis als Dezimalzahl mit Punkt (nicht Komma):
1.29 nicht 1,29
- vat muss genau
7 oder 19
sein
- Keine Sonderzeichen in der EAN-Spalte
- Enkoding: UTF-8
GO
Angebote referenzieren immer ein Produkt über seine EAN. Das Produkt muss bereits im
Store-Katalog vorhanden sein.
Offers always reference a product by its EAN. The product must already exist in the
store catalog.
{
"storeIds": ["store_abc123"],
"title": "Bio-Vollmilch Sonderangebot",
"products": [
{
"ean": "4000000000001",
"discountPrice": 1.19,
"originalPrice": 1.49
}
],
"validFrom": "2026-03-01T00:00:00.000Z",
"validTo": "2026-03-07T23:59:59.000Z",
"description": "Nur solange Vorrat reicht",
"imageUrl": "https://...",
"quantity": 500,
"offerId": "off_xyz789",
"groupId": "grp_uuid",
"storeCount": 1,
"status": "ACTIVE",
"clickCount": 0,
"favoritedCount": 0,
"createdAt": "2026-02-27T10:00:00.000Z"
}
{
"id": "store_abc123",
"name": {
"legal": "Mustermann GmbH",
"trading": "Frische Ecke Mitte"
},
"address": {
"street": "Hauptstraße 12",
"city": "Berlin",
"postalCode": "10115",
"countryCode": "DE"
},
"coordinates": {
"latitude": 52.5200,
"longitude": 13.4050
},
"phone": "+49 30 12345678",
"email": "info@frische-ecke.de",
"website": "https://frische-ecke.de",
"media": {
"logo": "https://storage.googleapis.com/...",
"cover": "https://storage.googleapis.com/..."
},
"social": {
"instagram": "@frischeecke",
"facebook": "frischeecke.berlin",
"tiktok": "@frischeecke"
},
"mode": "live",
"package": "grow",
"hasScanAndGo": true,
"hasOffers": true,
"rating": 4,
"openingHours": {
"monday": "08:00-20:00",
"tuesday": "08:00-20:00",
},
"pspAccountId": "acct_1ABC...",
"receiptCount": 1247,
"securityTagMode": "manual",
"securityTagHint": "Bitte nach Bezahlung die Produkte an der Kasse vorzeigen."
}
GROW
Jede abgeschlossene Scan & Go Transaktion wird in der Firestore Collection purchase gespeichert und über Webhooks an dein System gesendet.
Every completed Scan & Go transaction is stored in the Firestore collection purchase and sent to your system via webhooks.
{
"id": "txn_mP4kR9nX",
"sessionId": "sess_k7aB3xQm9wPz",
"userId": "usr_42",
"checkoutSessionId": "cs_live_...",
"storeData": {
"id": "store_abc123",
"name": "Frische Ecke Mitte",
"mode": "live",
"address": { "street": "Hauptstraße 12", },
"logo": "https://storage.googleapis.com/..."
},
"items": [
{
"name": "Bio-Vollmilch 3,5%",
"ean": "4000000000001",
"priceUnit": 149,
"quantity": 2,
"vat": 7,
"totalCent": 298
},
{
"name": "Schwarzbier 0,5l",
"ean": "4000000000002",
"priceUnit": 119,
"quantity": 1,
"vat": 19,
"totalCent": 119
}
],
"currency": "EUR",
"subtotalCent": 437,
"vatBreakdown": {
"7": { "net": 241, "tax": 17 },
"19": { "net": 150, "tax": 29 }
},
"totalVatCent": 46,
"totalCent": 437,
"status": "SUCCESS",
"createdAt": 1740645682000,
"completedAt": 1740645720000,
"receiptUrl": "https://beep-c6786.web.app/receipt/...",
"receiptQrCode": "data:image/png;base64,...",
"securityTagMode": "manual",
"securityTagStatus": "pending",
"securityTagHint": "Bitte nach Bezahlung Produkte an der Kasse vorzeigen."
}
Belege werden von BEEP! generiert und sind in zwei Formaten verfügbar:
Receipts are generated by BEEP! and available in two formats:
JSON (via API)
Strukturierte Daten über POST /fetchPurchase
✓ Für Buchhaltungs-Integration
PDF (Landing Page)
Rendern via receiptUrl aus der Transaktion
✓ TSE-konform, druckfähig
GROW
Analytics-Daten können über die Firestore-Collections direkt abgerufen werden (für
eigene BI-Tools) oder als aggregierte Report-JSONs via API:
Analytics data can be fetched directly from Firestore collections (for custom BI tools)
or as aggregated report JSONs via API:
{
"storeId": "store_abc123",
"date": "2026-02-27",
"period": "daily",
"scanAndGo": {
"sessions": 47,
"completedCheckouts": 41,
"abandonedRate": 12.7,
"revenueCent": 189453,
"avgBasketCent": 4621,
"itemsScanned": 284
},
"offers": {
"activeOffers": 8,
"totalClicks": 342,
"totalFavorites": 89,
"conversionRate": 26.0
},
"store": {
"profileViews": 156,
"newFollowers": 12,
"totalFollowers": 847,
"dmReceived": 7
}
}
POS/ERP/PSP-Sync (generisch)
GROW
Der bidirektionale Sync läuft über die generischen API-Endpoints syncPOS, pushToPOS, syncERP, pushToERP, configurePSP, processPayment und refundPayment. BEEP! ist nicht an ein bestimmtes Kassensystem, ERP oder
Zahlungsanbieter gebunden, der Händler nutzt sein eigenes System.
Bidirectional sync runs via the generic API endpoints syncPOS, pushToPOS, syncERP, pushToERP, configurePSP, processPayment and refundPayment. BEEP! is not tied to a specific POS system, ERP or payment
provider; the merchant uses their own system.
Korona, Vectron, Casio, Lightspeed, SumUp POS, Zettle
SAP Business One, lexoffice, sevDesk, Xentral, weclapp
Alle gängigen PSPs (z.B. Adyen, Mollie, Payone, Unzer, SumUp)
pos.article_number → ean
pos.article_name → name
pos.sell_price → price (EUR)
pos.tax_rate → vat (7 oder 19)
pos.category → category
pos.unit → unit
pos.image_url → imageUrl
pos.external_id → externalProductId
pos.receipt_number → receiptCount
pos.revenue → scanAndGo.revenueCent
Korona POS: Integration
GROW
Korona ist das am häufigsten angebundene Kassensystem bei BEEP!. Die Synchronisation
läuft über die syncPOS API mit system: "korona".
Korona is the most commonly connected POS system at BEEP!. Synchronization runs via the
syncPOS API with system: "korona".
korona.product.number → ean
korona.product.name → name
korona.product.price → price
korona.product.taxRate → vat
korona.commodity_group → category
korona.product.sector → tags[]
korona.product.image → imageUrl
korona.receipt.number → receiptNumber
korona.receipt.total → totalCent
korona.receipt.items[] → items[]
korona.receipt.timestamp → createdAt
Der bestehende Korona-Sync importiert Produkte automatisch. Über die Developer
API (syncPOS) kann derselbe Sync manuell für eigene
Integrationen ausgelöst werden.The existing Korona sync imports products
automatically. Via the Developer API (syncPOS) you can trigger the
same sync manually for your own integrations.
Custom POS: Eigene Integration
GROW
Für Kassensysteme, die nicht direkt unterstützt werden, nutze die generische POS-API.
Du definierst das Feld-Mapping selbst und synchronisierst Produkte über bulkImportProducts oder syncPOS.
For POS systems not directly supported, use the generic POS API. You define the field
mapping yourself and sync products via bulkImportProducts or syncPOS.
POST /api/v1/syncPOS
system: "custom"
credentials: { apiUrl, apiKey, ... }
POST /api/v1/bulkImportProducts
products: [
{ barcode: "4000000000001", name: "Produkt A",
price: 1.99, vat: 7 },
{ barcode: "4000000000002", name: "Produkt B",
price: 2.49, vat: 19 },
...
]
POST /api/v1/exportSalesData
from: "2026-02-01", to: "2026-02-27"
POST /api/v1/pushToPOS
system: "custom"
dataType: "transactions"
records: [ ... ]
Tipp: Nutze
checkout.completed Webhooks,
um Transaktionen in Echtzeit an dein POS zu pushen, ohne Polling.