Airport Retailer · Implementation Guide

Retailer POS Integration Guide

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.

~1–2 day integration
Two API calls
Works with any POS system

How it works in your store

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.

1

Customer presents QR

Traveler shows their DutyBoost QR code — at any point: when entering the store, while browsing, or at the till

2

Cashier scans & validates

Your POS scanner reads the QR code and calls the DutyBoost API — the DutyCredit is instantly confirmed and reserved

3

Customer continues shopping

If scanned early, the voucher is held while the customer browses. If at checkout, proceed directly to step 4

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.

Choose your integration method

Select the method that fits your POS infrastructure. Option A is recommended for most retailers.

Recommended

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.

No dev needed

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.

Simple fallback

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.

Getting started

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.

Before you start (Option A)

You will need:

  • Your DutyBoost Retailer API Key — from your retailer dashboard under Settings → API
  • Your DutyBoost Retailer ID — shown in the same settings screen
  • A QR scanner connected to your POS system (standard USB or Bluetooth scanner works)
  • A developer who can modify your POS software to make HTTP API calls
  • Outbound HTTPS access from your POS network to api.dutyboost.com (port 443)

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.

1
...
2

Confirm the redemption at checkout

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 spendTraveler discountDutyBoost fee
€50–€99€5≤ €25 cap
€100–€199€10+≤ €25 cap
€200–€299€30+≤ €25 cap
€300–€1,000Up 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.

POST
https://api.dutyboost.com/v1/redeem-voucher

Request body:

redeem-request.json
{
  "voucher_code": "DB-X7K2M4NP",
  "retailer_id": "YOUR_RETAILER_ID",
  "transaction_value": 200.00,
  "num_items": 3
}

Response:

redeem-response.json
{
  "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 fieldWhat to do with it
credit_amount_eurThe traveler's DutyCredit value in EUR (e.g. 14.00) — this is the maximum that can be applied
effective_creditActual EUR credit applied = min(credit_amount_eur, basket × 0.15) — apply this to the receipt
amount_chargedThe final amount the customer pays (basket − effective_credit) — display on screen and receipt
platform_feeDutyBoost's fee for this transaction — included in your monthly invoice
transaction_idStore this in your POS records for reconciliation and dispute resolution

Full POS integration code

Offline & fallback handling

If your POS loses internet

  • → Do not accept the voucher if you cannot validate it
  • → Ask the customer to show the voucher code — log it manually
  • → Once back online, call /redeem-voucher with the recorded code
  • → Contact us if the voucher has expired before you could reconnect

If the QR code won't scan

  • → The traveler can read out their voucher code (e.g. DB-X7K2M4NP)
  • → Enter it manually in your POS or in the DutyBoost retailer dashboard
  • → Validate and redeem using the same API calls

Billing & reconciliation

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.

Optional: Redemption webhooks

Configure a webhook URL in your retailer dashboard → Settings → Webhooks to receive real-time transaction confirmations.

webhook-handler.js
// 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');
});

Testing your integration

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.

Need integration support?

Our technical team can assist with POS integration, provide sandbox credentials, or connect you with your POS vendor's developer. Most retailers are live within 1–2 business days.

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