Quickstart Guide Quickstart Guide
Dein erster BEEP! API-Call in unter 5 Minuten. Wir richten eine Sandbox-Sitzung ein, checken einen Kunden ein und führen einen Checkout durch.
Your first BEEP! API call in under 5 minutes. We set up a sandbox session, check in a customer and run through a checkout.
💡
Alle Calls in diesem Guide nutzen die Sandbox. Dein Account wird automatisch im All calls in this guide use the sandbox. Your account is automatically created in Test Mode Test Mode erstellt. Test-Keys beginnen mit created. Test keys start with bk_test_ und erzeugen niemals echte Transaktionen. and never generate real transactions.
Schritt 1: Developer Account & API-Key Step 1: Developer Account & API Key
Erstelle deinen kostenlosen Developer-Account auf developer.beep-technologies.de/dashboard . Nach der Registrierung findest du deine Test-Keys im Dashboard:
Create your free developer account at developer.beep-technologies.de/dashboard . After signing up, find your Test Keys in the Dashboard:
Publishable Key
bk_test_pk_A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6
Copy
Secret Key
bk_test_sk_••••••••••••••••••••••••••3N4O
Reveal & Copy
⚠️
Der Secret Key (sk) ist nur serverseitig zu verwenden. Committe ihn nie in Git. Der Publishable Key (pk) kann im Client-Code genutzt werden.
The Secret Key (sk) is for server-side use only. Never commit it to Git. The Publishable Key (pk) can be used in client code.
Schritt 2: Sandbox-Store abrufen Step 2: Fetch Sandbox Store
In der Sandbox stehen 3 vorbereitete Test-Stores bereit. Hole dir die Store-ID die du in weiteren Calls benötigst:
The sandbox contains 3 pre-configured test stores. Fetch the store ID you need for subsequent calls:
curl -G \
"https://europe-west1-beep-c6786.cloudfunctions.net/fetchStores" \
-H "Authorization: Bearer ${BEEP_TEST_SK} "
{
"data" : [
{
"id" : "sandbox_store_001" ,
"name" : {
"legal" : "BEEP! Testmarkt GmbH" ,
"trading" : "BEEP! Testmarkt Berlin"
} ,
"mode" : "demo" ,
"package" : "grow" ,
"address" : {
"street" : "Unter den Linden 1" ,
"city" : "Berlin" ,
"postalCode" : "10117" ,
"countryCode" : "DE"
}
}
],
"total" : 3
}
Schritt 3: Kunden einchecken (Scan & Go starten) Step 3: Check in a customer (start Scan & Go)
Das Check-in startet eine Scan & Go Session. In der BEEP-App scannt der Kunde den Store-QR-Code. Per API kannst du das manuell triggern:
Check-in starts a Scan & Go session. In the BEEP app the customer scans the store QR code. Via the API you can trigger this manually:
curl -X POST \
"https://europe-west1-beep-c6786.cloudfunctions.net/checkIn" \
-H "Authorization: Bearer ${BEEP_TEST_SK} " \
-H "Content-Type: application/json" \
-d '{
"storeId": "sandbox_store_001",
"userId": "usr_test_consumer_42"
}'
{
"success" : true ,
"sessionId" : "sess_k7aB3xQm9wPz" ,
"storeId" : "sandbox_store_001" ,
"userId" : "usr_test_consumer_42" ,
"checkedInAt" : "2026-02-27T09:41:22.000Z" ,
"message" : "Check-in successful"
}
Schritt 4: Checkout starten Step 4: Start checkout
Nachdem der Kunde seine Produkte gescannt hat, startet er den Checkout. Übergib die Session-ID und die Items-Liste:
After the customer has scanned their products, they start checkout. Pass the session ID and items list:
curl -X POST \
"https://europe-west1-beep-c6786.cloudfunctions.net/startCheckout" \
-H "Authorization: Bearer ${BEEP_TEST_SK} " \
-H "Content-Type: application/json" \
-d '{
"userId": "usr_test_consumer_42",
"storeId": "sandbox_store_001",
"sessionId": "sess_k7aB3xQm9wPz",
"currency": "EUR",
"destination": "PSP_ACCOUNT_ID ",
"items": [
{
"name": "Bionade Holunder 0,5L",
"priceUnit": 129,
"quantity": 2,
"vat": 7
},
{
"name": "Lay'\''s Classic 175g",
"priceUnit": 179,
"quantity": 1,
"vat": 19
}
]
}'
📌
priceUnit ist immer in Cent (Integer). vat ist 7 oder 19 (%). In der Sandbox wird Stripe im Test-Mode verwendet, keine echten Zahlungen.
priceUnit is always in cents (integer). vat is 7 or 19 (%). In the sandbox Stripe is used in test mode, no real payments.
{
"success" : true ,
"transactionId" : "txn_sandbox_mP4kR9nX" ,
"sessionId" : "sess_k7aB3xQm9wPz" ,
"stripeSessionId" : "cs_test_a1B2c3D4e5F6g7H8" ,
"checkoutUrl" : "https://checkout.stripe.com/pay/cs_test_..." ,
"total" : 437 ,
"currency" : "EUR" ,
"status" : "PENDING_PAYMENT" ,
"createdAt" : "2026-02-27T09:41:55.000Z"
}
Schritt 5: Webhook empfangen Step 5: Receive webhook
Wenn der Kunde zahlt, sendet BEEP! ein checkout.completed-Event an dein konfigurierten Webhook-Endpoint. So verifizierst du die Signatur:
When the customer pays, BEEP! sends a checkout.completed event to your configured webhook endpoint. Here is how to verify the signature:
const crypto = require('crypto' );
app.post('/beep/webhook' , express.raw({ type: 'application/json' }), (req, res) => {
const sig = req.headers['x-beep-signature' ];
const secret = process.env.BEEP_WEBHOOK_SECRET;
const expected = crypto
.createHmac('sha256' , secret)
.update(req.body)
.digest('hex' );
if (!crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected))) {
return res.status(400 ).send('Invalid signature' );
}
const event = JSON.parse(req.body);
switch (event.type) {
case 'checkout.completed' :
console.log('Checkout completed:' , event.data.transactionId);
break;
case 'offer.published' :
console.log('New offer live:' , event.data.offerId);
break;
}
res.status(200 ).json({ received: true });
});
Nächste Schritte Next steps
Du hast erfolgreich deinen ersten Scan & Go Checkout Flow durchlaufen. Was kommt als nächstes?
You have successfully completed your first Scan & Go checkout flow. What comes next?