Skip to content
  • info@demircode.com
  • Monday - Friday: 09:00 - 18:00

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.

Service 01

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.

Multi-room · Voucher
Cancellation policy · Allotment
Service 02

Flight
Booking

One-way, return and multi-leg searches. Passenger types, seat and baggage selection, ticket lookup by PNR.

Seat · Baggage · Meal
PNR lookup · E-ticket
Service 03 · Separate product

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.

One request/response · Unlimited suppliers
Currency resolved for you
System modules and their status
CodeModuleStatus
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.

B2C

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.

B2B

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.

ADMIN

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 brandWhat can be set
DomainEach brand publishes on its own domain; traffic sees the brand matching that address
IdentityLogo, favicon, primary and secondary colour, tagline — managed from the panel
LanguageDefault language and the set of languages that brand supports are chosen separately
CurrencySelling currency differs per brand; rate and margin are resolved behind the scenes
CountryTax rules are filtered on the country axis — a foreign brand runs on different rates
ContactIts 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.

Türkçe English Deutsch Русский Srpski + the language you need

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.

TRY ₺ EUR € USD $ GBP £ RSD + the currency you need

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.

3,081Translation keys, managed from the database
15Automated background jobs
Sub-agency tiers — no depth limit
Supplier APIs that can be connected

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.

Sub-agency network

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.

TIER 1 You — the platform owner own margin
TIER 2 Your reseller agency + own margin
TIER 3 Their sub-agency + own margin

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.

Corporate customers

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.

RoleWhat they do
Company adminAdds and removes company users, sees all bookings and total spend
Company userCreates 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.

Unlimited suppliers · Automatic best price

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.

Step 1

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.

Step 2

Merged into one list

Different currencies and different response shapes are converted into a single model, so prices become directly comparable.

Step 3

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

SupplierScopeNote
EasyGdsFlight + HotelMulti-room, child/infant passengers, cancellation endpoint
TurnaFlightSession-based basket flow
DuffelFlightSeat, baggage and meal detail
HotelBedsHotelAllotment and cancellation policy
LiteApiHotelBroad inventory
Your requestFlight / Hotel / TransferSign your agreement, we build the integration
Capability reporting

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.

Currency

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.

Payment

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.

Markup chain

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.

Balances and deposits

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.

Tax

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.

Exchange rates

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.

Separate product

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

EndpointWhat it does
POST/v1/hotels/searchSimultaneous search across all suppliers, merged into a single list
GET/v1/hotels/suggestText search — city and hotel suggestions
GET/v1/hotels/{id}Accommodation detail — room types, amenities, photos
POST/v1/hotels/quotePrice lock — final price and cancellation terms before booking
POST/v1/hotels/bookingsCreate a booking — multi-room supported
GET/v1/hotels/bookings/{id}Booking status and voucher details
POST/v1/hotels/bookings/{id}/cancelCancellation — returns penalty amount and refund detail

Flight endpoints

EndpointWhat it does
POST/v1/flights/searchOne-way, return and multi-city searches
GET/v1/flights/offers/{id}Offer detail — legs, baggage allowance, fare rules
GET/v1/flights/offers/{id}/servicesAncillaries — baggage, meals
GET/v1/flights/offers/{id}/seatmapsSeat map (where the supplier supports it)
POST/v1/flights/ordersIssue a ticket — passenger details and selected ancillaries
GET/v1/flights/orders/{id}Order status, PNR and ticket numbers
POST/v1/flights/orders/{id}/cancelCancellation and refund
GET/v1/reference/airportsAirport, 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
  }
}
Why this matters

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

JobWhat it does
Rate updatePulls central bank rates daily and stores buy, sell and mid separately
Daily commissionCalculates earnings and posts them to agency balances
Expired holdsReleases holds from unfinished bookings and frees the balance
Invoice generationCreates periodic invoices
Settlement batchMatches payment and collection records
E-mail dispatchWorks the queue; each agency can send from its own SMTP server
Booking remindersNotifies guests whose check-in date is approaching
Currency watchdogChecks 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

Model 01

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
Model 02

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
Model 03

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