Travel Booking Platform · White Label
AcenteCode
Sell flights and hotels under your own brand, on your own domain. Customer-facing storefront, agency panel and management centre in one system; supplier APIs sit behind it, gathered into a single contract.
Hotel
Booking
The full journey from city and date search through to payment. Multi-room, child and infant guests, per-room pricing and cancellation policies.
Cancellation policy · Allotment
Flight
Booking
One-way, return and multi-leg searches. Passenger types, seat and baggage selection, ticket lookup by PNR.
PNR lookup · E-ticket
Connect
API
Already have your own system? Take just the middleware: one API that reduces every supplier to a single contract and finds the best price.
Currency resolved for you
| Code | Module | Status |
|---|---|---|
| B2C | Customer-facing storefront — search, booking, payment, e-ticket | LIVE |
| B2B | Agency panel — unlimited sub-agencies, balances, margins, earnings | LIVE |
| ADMIN | Platform management — suppliers, tax, exchange rates, content, reporting | LIVE |
| CORP | Corporate customer panels — company accounts, authorised users | LIVE |
| API | Supplier middleware API — separate product | LIVE |
| PMS | Hotel management module — built, enabled on request | OPTIONAL |
What you are buying
Not three separate products — three faces of one system
Your customer, your agency and you all look at the same data. When a booking is made, inventory, balance, commission and accounting entries move at the same moment from the same source — no panel-to-panel reconciliation.
Storefront
Flight and hotel search, multi-room support, booking and payment flow, ticket lookup by PNR, e-mail and voucher. The search widget becomes a drawer on mobile and stays pinned on results pages.
Agency panel
Create sub-agencies, set a separate markup and commission for each, transfer balances, track earnings, manage their own site branding. Unlimited agency hierarchy depth.
Management centre
Supplier credentials, tax rate matrix, exchange rates and FX margin, content and SEO, booking and cancellation approvals, payment and payout flows.
White label · Multi-tenant
One installation, unlimited brands
Every agency goes live on its own domain with its own logo, colours, language and currency. Same server, same code — visitors see the brand that matches the domain they arrived from.
| Per brand | What can be set |
|---|---|
| Domain | Each brand publishes on its own domain; traffic sees the brand matching that address |
| Identity | Logo, favicon, primary and secondary colour, tagline — managed from the panel |
| Language | Default language and the set of languages that brand supports are chosen separately |
| Currency | Selling currency differs per brand; rate and margin are resolved behind the scenes |
| Country | Tax rules are filtered on the country axis — a foreign brand runs on different rates |
| Contact | Its own mail server, phone number, address and map location |
More than one brand runs live on the same installation today; some based in Türkiye, some abroad. The international case is not incidental: country, language and currency are built-in axes, not a patch added afterwards.
Languages
Languages that ship with the system — more can be added.
Text is not embedded in code; it is managed from the database. Adding a language is a content task, not a software change — it is edited from the panel.
Currencies
Selling and settlement currencies — more can be added.
Rates update automatically each day from the central bank; buy, sell and mid rates are stored separately. Each brand's selling currency is chosen independently.
Headline capability
You don't just sell — you build a distribution network
This is where the system makes the biggest difference: you create agencies beneath you, and they create their own beneath them. For corporate customers you open a separate panel so they can manage their own staff.
Agency hierarchy with unlimited depth
Every agency can create new agencies beneath it. Each tier gets its own markup, its own balance and its own panel — and can publish its own site on its own domain if it wants to.
Confidentiality is built in: a lower tier can never see the tier above it earn. Each agency sees only its own revenue and its own cost.
A dedicated panel for your company clients
Open separate accounts for corporate customers who travel regularly. The company defines its own users, sees its own trips and tracks its own spend — so you no longer take bookings over the phone.
| Role | What they do |
|---|---|
| Company admin | Adds and removes company users, sees all bookings and total spend |
| Company user | Creates and tracks their own trips |
The corporate account's balance, invoicing and payment flow are tracked separately.
Supplier architecture · Headline capability
However many suppliers you have, your customer sees the cheapest
When a search runs, the system queries every connected supplier at the same time, merges the responses and surfaces the lowest price. Neither you nor your customer has to think about which supplier answered.
Sign a new API agreement whenever you like and we will connect it. Amadeus, Sabre, Travelport or a local provider you already work with — there is no cap on the number. From the moment a supplier is added it joins the search on its own and competes on price.
This is not a marketing line but a direct consequence of the architecture: supplier names never appear in the system's business layer, and every provider implements the same contract. If one supplier fails to respond the search does not stop — the others keep returning results.
Simultaneous query
The search goes to every connected supplier at once. Nothing queues; total time equals the slowest supplier, not the sum of all of them.
Merged into one list
Different currencies and different response shapes are converted into a single model, so prices become directly comparable.
Lowest price first
Results are ordered by price, with your margin already calculated into it. Hunting for the cheapest supplier stops being your job.
Suppliers connected today — the list keeps growing
| Supplier | Scope | Note |
|---|---|---|
| EasyGds | Flight + Hotel | Multi-room, child/infant passengers, cancellation endpoint |
| Turna | Flight | Session-based basket flow |
| Duffel | Flight | Seat, baggage and meal detail |
| HotelBeds | Hotel | Allotment and cancellation policy |
| LiteApi | Hotel | Broad inventory |
| Your request | Flight / Hotel / Transfer | Sign your agreement, we build the integration |
Every supplier declares what it can do
If seat selection exists with one supplier it appears in the interface; if not, it doesn't. Your customer never sees an option that was never available.
Request currency is managed from the panel
Which supplier is asked for prices in which currency is not hard-coded. A watchdog job continuously checks whether the supplier really answered in the requested currency.
The payment provider is abstracted too
Card gateway integration runs through a single contract; instalments, refunds and verification flows are shared. Iyzico is connected, others can be added.
Commercial core
Where the profit is made is never left to guesswork
Pricing and cash flow are the parts of this system that took the most work. Each tier sees only its own earnings; a sub-agency can never see what the tier above it made.
Who earns × who they sell to × product × channel
The platform sets a separate margin for each of its agencies; the agency does the same for each of its sub-agencies and for its own B2C/B2B channels. Percentage for hotels, fixed amount for flights. Search and booking use the same rule — the customer pays the price they saw.
Separate pools for flights and hotels
Credit limit, reserved amount and cash are tracked separately. During booking the amount is held, on confirmation it is deducted, on cancellation it is refunded. An agency can transfer balance to its sub-agency — credit limit cannot be transferred.
VAT rates are not hard-coded
The rate is resolved from product, domestic/international scope, operating licence, date and country — including the exemption on international flight commission. Every earnings record carries the rule that taxed it.
Central bank rate plus a managed margin
Rates update automatically every day. The commercial FX margin is applied at a single point; supplier payments and internal reporting use the raw rate, so your own cost is never inflated.
AcenteCode Connect
The middleware API that talks to suppliers
If you already run your own system you may not need the whole platform. In that case you take only the middleware: an API that reduces five separate supplier integrations to one contract and resolves currency and capability differences on your behalf.
# You send one request… POST /v1/hotels/search # …we query every supplier AT THE SAME TIME, # merge the results and put the CHEAPEST first. → EasyGds ┐ → LiteApi ├──▶ one list · one currency · ordered by price → HotelBeds┘
For the full endpoint list and example schema see the “Connect API · Technical appendix” section.
One contract
One request/response model instead of five suppliers, five sets of documentation and five error formats.
Currency resolved
Every supplier answers in a different currency. Conversion, rate stamping and rounding stop being your problem.
Capability gaps hidden
If seat selection exists with one supplier but not another, the API says so explicitly — you never have to guess.
Connect API · Technical appendix
Endpoints and schema
The endpoints below are the externally exposed form of the contract the system uses to talk to suppliers. You never name a supplier — routing, merging and price ordering happen on our side.
Authentication
Authorization: Bearer <api_key> X-Currency: EUR # response currency — supplier differences hidden Accept-Language: en # errors and descriptions in this language
Hotel endpoints
| Endpoint | What it does |
|---|---|
POST/v1/hotels/search | Simultaneous search across all suppliers, merged into a single list |
GET/v1/hotels/suggest | Text search — city and hotel suggestions |
GET/v1/hotels/{id} | Accommodation detail — room types, amenities, photos |
POST/v1/hotels/quote | Price lock — final price and cancellation terms before booking |
POST/v1/hotels/bookings | Create a booking — multi-room supported |
GET/v1/hotels/bookings/{id} | Booking status and voucher details |
POST/v1/hotels/bookings/{id}/cancel | Cancellation — returns penalty amount and refund detail |
Flight endpoints
| Endpoint | What it does |
|---|---|
POST/v1/flights/search | One-way, return and multi-city searches |
GET/v1/flights/offers/{id} | Offer detail — legs, baggage allowance, fare rules |
GET/v1/flights/offers/{id}/services | Ancillaries — baggage, meals |
GET/v1/flights/offers/{id}/seatmaps | Seat map (where the supplier supports it) |
POST/v1/flights/orders | Issue a ticket — passenger details and selected ancillaries |
GET/v1/flights/orders/{id} | Order status, PNR and ticket numbers |
POST/v1/flights/orders/{id}/cancel | Cancellation and refund |
GET/v1/reference/airports | Airport, airline, aircraft and city reference data |
Example — hotel search
POST /v1/hotels/search { "checkInDate": "2026-09-14", "checkOutDate": "2026-09-17", "rooms": 2, "guests": [ { "type": "adult" }, { "type": "adult" }, { "type": "child", "age": 7 } ], "latitude": 41.0082, "longitude": 28.9784, "radiusKm": 15, "freeCancellationOnly": true }
Response — suppliers merged, cheapest first
{
"currency": "EUR",
"queriedProviders": ["EasyGds", "LiteApi", "HotelBeds"],
"results": [
{
"accommodationId": "hx_88213",
"name": "Hilton Istanbul Maslak",
"starRating": 5, "reviewScore": 8.7,
"location": { "city": "Istanbul", "latitude": 41.1105, "longitude": 29.0203 },
"cheapestRateAmount": 214.50,
"cheapestRateCurrency": "EUR",
"rooms": [ /* room type, board, cancellation terms, rateId */ ],
"amenities": ["Free WiFi", "Pool", "Spa"]
}
/* … ordered by price */
]
}
Capability reporting — the endpoint that saves you from guessing
GET /v1/capabilities { "hotels": { "instantBooking": true, "freeCancellation": true, "multiRoom": true, "specialRequests": true, "negotiatedRates": false }, "flights": { "seatSelection": true, "ancillaryServices": true, "partialOffers": true, // separate outbound/return selection "multiCity": true, "orderChange": false } }
Not every supplier supports the same things. The capability endpoint tells you what the currently connected suppliers can actually do — so your interface never offers something that isn't there, and your customer is never disappointed at the final step. When a new supplier is added, this response updates by itself.
Error format — one model, supplier independent
{
"error": {
"code": "RATE_NO_LONGER_AVAILABLE",
"message": "The selected rate is no longer valid, please refresh your search.",
"retryable": true
}
}
You never have to learn five different error formats from five suppliers. The retryable field states plainly whether the request is worth repeating.
The part that runs itself
15 jobs working while you sleep
| Job | What it does |
|---|---|
| Rate update | Pulls central bank rates daily and stores buy, sell and mid separately |
| Daily commission | Calculates earnings and posts them to agency balances |
| Expired holds | Releases holds from unfinished bookings and frees the balance |
| Invoice generation | Creates periodic invoices |
| Settlement batch | Matches payment and collection records |
| E-mail dispatch | Works the queue; each agency can send from its own SMTP server |
| Booking reminders | Notifies guests whose check-in date is approaching |
| Currency watchdog | Checks whether suppliers really answer in the requested currency |
+ 7 more jobs (night audit, session cleanup, amenity sync, notification maintenance…)
How we work
Rent it, license it, or take the API alone
Rental
The fastest start. The system runs on our infrastructure while you go live under your own domain and brand.
- Setup and maintenance on us
- Updates arrive automatically
- Monthly / annual usage fee
Enterprise licence
A dedicated, isolated installation. You work with your own supplier agreements and your own database; the system is operated and updated by us.
- Installation and database reserved for you
- Your own supplier and card gateway agreements
- Custom development on request
- Setup, team training and maintenance included
Connect API only
You already have a system and only need supplier integration. Take the middleware on its own.
- One contract, many suppliers
- Usage-based pricing
- Technical documentation and support