One checkout, one payment, far less reconciliation
Take a single payment for the whole trip and give your ops team one record to manage instead of five. Underneath the agent sits a hardened booking engine: a single plan becomes a single payment becomes a single Booking with line items for every component — then idempotent jobs confirm each supplier with retries and partial-confirmation handling.
From finalised plan to confirmed trip
Every component the agent picked flows through one engine — so the traveller pays once and your ops team manages one record.
One plan
The agent finalises a single plan_state holding every picked component, fully priced with your markup.
One checkout
A unified checkout via Stripe or Square takes a single payment for the whole package.
One Booking
A single Booking record is created with a line item for every component in the trip.
Per-component confirm
Idempotent jobs transact each supplier — hotels, flights, cars, activities, transfers — with retries.
Idempotent jobs that don't double-book
After payment, a dedicated confirmation job runs per component, transacting that supplier and writing the result back to the booking. Jobs are idempotent — a retry never books twice — and they retry on transient failures.
Partial confirmation is handled, not ignored. If the flight confirms but a transfer supplier times out, the engine records exactly what's confirmed, retries what isn't, and surfaces the state to ops — no silent half-bookings.
It pairs with the agent's false-"booked" guard: nothing is ever presented as booked until these jobs actually confirm it.
5 of 6 confirmed · 1 retrying · booking held in partial state until resolved. Idempotent — a retry never books twice.
Less admin overhead around every booking
Unified checkout
One payment for the whole package via Stripe or Square — no five-card juggling.
One Booking, many line items
A single record with a line item per component, prices and supplier refs in one place.
Refunds & modifications
Amend or refund at the component level against the same booking, with supplier policies respected.
Admin & ops console
See bookings, confirmation status, partial states and incident telemetry in one view.
Pricing rules & margin
Set markup per component and per install — the quoted price is always your sell price.
Component toggles
Enable any subset of the six components per install via ComponentSetting.
Bring your own credentials
Plug in your own Duffel, HotelBeds, AllAboard and other supplier accounts.
White-label
Run the whole engine under your own brand for your agents or your customers.
Telemetry & audit
Every guard trip, correction and confirmation logged for ops, audit and support.
Configure the platform to your business
A flights-only OTA, a rail-led tour operator, a full multi-modal DMC — each runs the same engine with a different ComponentSetting profile. Flip components on or off; the agent only ever sells what's enabled.
Bring your own credentials, set your margins, ship under your brand — Voyage is the engine, your business is the storefront.
Cars disabled — the agent won't search or sell them. Bring your own supplier credentials per component.
The hardened engine behind the agent
Book a demo and we'll walk you through checkout, confirmation, refunds and the ops console on your own configuration.