Everything your technical team needs to integrate DutyBoost into your booking platform — so every confirmed booking automatically generates a DutyCredit for the traveler.
Booking confirmed
Traveler books a flight through your platform
API call
Your system calls the DutyBoost API with booking details
Voucher generated
DutyBoost creates a personalised QR code voucher
Email sent
Traveler receives their DutyCredit — ready to use at the airport
Account creation and access:
Your DutyBoost Travel Partner account is created by the DutyBoost team. You'll receive a welcome email with a magic link to set your password and access your Travel Partner dashboard. No manual signup needed — just wait for the email and click the link.
You will need:
Never expose your API key on the frontend. All calls to the DutyBoost API must be made from your server, not from client-side JavaScript in the browser.
Log into your DutyBoost Travel Partner dashboard and navigate to Settings → API Integration. Copy your API key. This key identifies your Travel Partner account and attributes commissions correctly.
Test your API key works with a quick curl call:
# Replace with your DutyBoost API key from your Travel Partner dashboard
curl -X POST https://api.dutyboost.com/v1/generate-duty-credit \
-H "Content-Type: application/json" \
-H "X-DutyBoost-Key: YOUR_API_KEY" \
-d '{
"booking_id": "TEST-001",
"total_ticket_price": 500,
"number_of_travelers": 1,
"travel_type": "Short-haul",
"departure_airport": "AMS",
"travel_date": "2025-12-01",
"traveler_email": "test@youragency.com",
"traveler_name": "Test Traveler",
"agency_email": "you@youragency.com"
}'You should receive a JSON response with success: true and a voucher_code. A test email will be sent to the traveler_email you provided.
After every confirmed flight booking, your system must make a single POST request to the DutyBoost API. The ideal trigger point is your booking confirmation webhook, post-payment callback, or the "booking completed" event in your booking engine.
https://api.dutyboost.com/v1/generate-duty-credit| Field | Type | Req. | Description |
|---|---|---|---|
| booking_id | string | ✅ | Your unique booking reference ID |
| total_ticket_price | number | ✅ | Total ticket price in EUR (all travelers) |
| number_of_travelers | integer | ✅ | Number of travelers on the booking |
| travel_type | string | ✅ | "Short-haul" or "Long-haul" |
| departure_airport | string | ✅ | IATA code (e.g. "AMS") or full airport name |
| travel_date | string | ✅ | Flight date in YYYY-MM-DD format |
| traveler_email | string | ✅ | Email to send the DutyCredit voucher to |
| traveler_name | string | — | Used for personalised email greeting |
| travel_partner_email | string | — | Your Travel Partner email for commission tracking |
| travel_partner_name | string | — | Displayed in the traveler-facing email |
Code examples:
The API returns a JSON object. On success, use the fields below:
{
"success": true,
"voucher_code": "DB-X7K2M4NP",
"discount_percentage": 16,
"expiration_date": "2025-12-01",
"duty_credit_url": "https://dutyboost.com/voucher?code=DB-X7K2M4NP",
"qr_image_url": "https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=DB-X7K2M4NP",
"html_snippet": "<div style='...'>...</div>",
"message": "DutyCredit generated and emailed to traveler"
}| Field | Description |
|---|---|
| voucher_code | Unique alphanumeric code for the traveler to quote manually if QR fails |
| credit_amount_eur | The fixed euro DutyCredit value (e.g. 14.00) — display this prominently in your email |
| max_basket_pct | Credit cap as a fraction of basket (0.15 = 15%) — no minimum spend, just proportional to basket |
| expiration_date | The voucher expires at midnight on the departure date |
| duty_credit_url | Direct link to the traveler's voucher page — include this in any email |
| qr_image_url | Hosted QR code image URL — usable in custom email templates |
| html_snippet | Ready-made HTML block — paste directly into your confirmation email template |
The API response includes a ready-to-use html_snippet — a self-contained HTML block compatible with all major email clients (Gmail, Outlook, Apple Mail). Inject it into your booking confirmation email template, right below the booking summary.
// After calling the DutyBoost API, inject html_snippet into your email:
const duty = await issueDutyCredit(booking);
const confirmationEmailHtml = `
<h2>Your booking is confirmed! ✈️</h2>
<p>Booking reference: ${booking.id}</p>
<p>Departure: ${booking.departureAirport} on ${booking.departureDate}</p>
<!-- ↓↓↓ Paste DutyBoost block here ↓↓↓ -->
${duty.html_snippet}
<!-- ↑↑↑ End DutyBoost block ↑↑↑ -->
<p>Have a great trip!</p>
`;DutyBoost also sends its own email automatically
Even if you don't embed the snippet, DutyBoost sends a standalone co-branded email to the traveler from your Travel Partner name. Embedding the snippet in your own email gives a better, more seamless experience.
DutyBoost calculates discounts based on basket spend — simple and transparent. Discounts are capped at €60 on €300+ spend.
| Basket spend (before discount) | Traveler discount (DutyCredit) |
|---|---|
| €70 | €5 discount |
| €100 | €10+ discount |
| €200 | €30+ discount |
| €300+ | Up to €60 discount |
The more the traveler spends, the higher the discount — up to a maximum of €60 on €300+ spend.
Example: A traveler spends €300 at a retailer and receives a €60 discount. The net sales value (€240) is the basis for commission distribution.
Key redemption rules:
→ Minimum basket spend: €70 — travelers need at least €70 to receive a DutyCredit.
→ Discount cap: €60 — maximum discount available at €300+ spend.
This performance-based model rewards both travelers and retailers — higher spending means higher discounts, and travel partners earn commission on the full transaction value.
When a traveler redeems their DutyCredit at an airport store, DutyBoost can notify your system via a webhook. This is useful for CRM updates, commission tracking, or notifying account managers.
Configure your webhook URL in your Travel Partner dashboard under Settings → Webhooks.
// DutyBoost will POST to your webhook URL when a voucher is redeemed
// Configure your webhook URL in your Travel Partner dashboard settings
app.post('/webhooks/dutyboost', (req, res) => {
const { event, voucher_code, store_name, discount_amount, redeemed_at } = req.body;
if (event === 'voucher.redeemed') {
// Log commission earned, update CRM, notify account manager, etc.
console.log(`Voucher ${voucher_code} redeemed at ${store_name}`);
console.log(`You earned commission on ${discount_amount} EUR discount applied`);
}
res.status(200).send('OK');
});Sandbox mode
Add "test_mode": true to any API request to use the sandbox. Vouchers generated in sandbox mode are flagged and will not be accepted at stores.
Check the email
Use a real email address when testing. Verify the DutyCredit email arrives correctly and the QR code resolves to a valid voucher page.
Verify the voucher page
Open the duty_credit_url from the response. It should show the correct discount %, store list, and expiry date.
Dashboard confirmation
Log into your Travel Partner dashboard → Vouchers. Every API call should appear here in real time.
DutyBoost operates on a performance-based revenue model. You earn commission on every redeemed DutyCredit based on the net sales value at the retailer.
Example transaction:
Commission distribution on €240:
How it works:
Booking confirmation email
The DutyCredit block appears inside your confirmation email — branded with your Travel Partner name. No separate email needed from you.
Personal QR code page
Tapping the link opens a mobile-optimised voucher page showing the QR code, participating stores at their departure airport, discount %, and expiry.
Instant scan at the store
The retailer scans the QR code at the till. Discount is applied immediately. Traveler gets their discount — you earn your commission.
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