Everything your technical team needs to validate and redeem DutyBoost vouchers at your point-of-sale — giving eligible travelers their discount at the till, automatically.
Flexible timing — scan QR at any point
The customer can present their QR code before they start shopping (DutyCredit is reserved) or at the till when ready to pay. Both flows work identically — the discount is only finalised and applied once the basket total is entered.
Customer presents QR
Traveler shows their DutyBoost QR code — at any point: when entering the store, while browsing, or at the till
Cashier scans & validates
Your POS scanner reads the QR code and calls the DutyBoost API — the DutyCredit is instantly confirmed and reserved
Customer continues shopping
If scanned early, the voucher is held while the customer browses. If at checkout, proceed directly to step 4
Basket entered & discount applied
Once the final basket total is known, enter it to calculate and apply the tiered credit. DutyBoost records the transaction.
Select the method that fits your POS infrastructure. Option A is recommended for most retailers.
Option A — API Integration
Your POS software calls the DutyBoost API directly. Full automation, real-time validation, and no manual steps. Requires a developer to add ~50 lines of code to your POS software.
Option B — DutyBoost Terminal
We provide a dedicated tablet or screen at your till. Cashier enters or scans the code on the DutyBoost device — no changes to your existing POS needed. Contact us to set up.
Option C — Manual Dashboard
Log into your DutyBoost retailer dashboard on any device and look up voucher codes manually. No tech integration required — best for low-volume stores.
Account creation and access:
Your DutyBoost account is created by the DutyBoost team. You'll receive a welcome email with a magic link to set your password and access your retailer dashboard. No manual signup needed — just wait for the email and click the link.
You will need:
Never store API keys in frontend or client-side code. API calls must be made from your POS backend or middleware — not from browser-based POS interfaces.
Once the customer's basket is finalised, call the redeem endpoint with the final basket total. DutyBoost calculates the effective tiered credit (10%/15%/20%, capped at €25), marks the voucher as used, and records the transaction for your monthly invoice.
Discount structure & platform fees:
| Basket spend | Traveler discount | DutyBoost fee |
|---|---|---|
| €50–€99 | €5 | ≤ €25 cap |
| €100–€199 | €10+ | ≤ €25 cap |
| €200–€299 | €30+ | ≤ €25 cap |
| €300–€1,000 | Up to €60 | ≤ €25 cap |
| €1,000+ | Up to €60 | €0 (all above €1,000 is yours) |
Key point: Platform fees are capped at €25 on all baskets up to €1,000. Any basket value above €1,000 is yours entirely — no platform fee applies.
Only call /redeem-voucher once per transaction, at the moment of final checkout — never during scanning or preview. Calling it twice will fail with an "already redeemed" error.
https://api.dutyboost.com/v1/redeem-voucherRequest body:
{
"voucher_code": "DB-X7K2M4NP",
"retailer_id": "YOUR_RETAILER_ID",
"transaction_value": 200.00,
"num_items": 3
}Response:
{
"success": true,
"voucher_code": "DB-X7K2M4NP",
"credit_amount_eur": 14.00,
"effective_credit": 7.50,
"amount_charged": 42.50,
"platform_fee": 2.50,
"transaction_id": "TXN-20251201-4482",
"retailer_net_pct": 85,
"message": "Voucher redeemed. €7.50 credit applied (15% of €50 basket — cap applied)."
}| Response field | What to do with it |
|---|---|
| credit_amount_eur | The traveler's DutyCredit value in EUR (e.g. 14.00) — this is the maximum that can be applied |
| effective_credit | Actual EUR credit applied = min(credit_amount_eur, basket × 0.15) — apply this to the receipt |
| amount_charged | The final amount the customer pays (basket − effective_credit) — display on screen and receipt |
| platform_fee | DutyBoost's fee for this transaction — included in your monthly invoice |
| transaction_id | Store this in your POS records for reconciliation and dispute resolution |
If your POS loses internet
If the QR code won't scan
Monthly invoice
On the 1st of each month, DutyBoost sends an invoice for all transactions from the prior month. Each line shows the voucher code, transaction value, discount applied, and DutyBoost platform fee.
Transaction log
All redeemed vouchers are visible in your retailer dashboard → Transactions. Each record includes the transaction_id, discount amount, and platform fee.
Webhook notifications
Optionally receive a webhook notification after every redemption so your back-office system can log the platform_fee in real time.
Configure a webhook URL in your retailer dashboard → Settings → Webhooks to receive real-time transaction confirmations.
// DutyBoost sends a confirmation webhook after every successful redemption
// Set your webhook URL in the retailer dashboard → Settings → Webhooks
app.post('/webhooks/dutyboost', (req, res) => {
const { event, transaction_id, voucher_code, discount_amount, platform_fee } = req.body;
if (event === 'voucher.redeemed') {
// Log the transaction in your back-office system
// platform_fee is what DutyBoost will invoice you for at month end
saveTransaction({ transaction_id, voucher_code, discount_amount, platform_fee });
}
res.status(200).send('OK');
});Use sandbox mode
Add "test_mode": true to your API requests. Sandbox vouchers are marked and won't affect your invoice or production stats.
Get a test voucher
Your DutyBoost account manager can generate a sandbox voucher code for you to scan during testing.
Simulate the full flow
Scan → validate (check discount shown) → complete checkout → redeem (check transaction_id returned).
Check your dashboard
All test transactions appear in your retailer dashboard → Transactions with a "sandbox" badge.
We use cookies to improve your experience. You decide which cookies to allow — essential cookies are always required for the platform to function. Cookie Policy