Markup Fees
Depending on your agreement with Distribusion you might have to include markup fees in the prices you get via API. To find out what carriers can have markup fees applied to your account please contact your partnership manager.
The markup fees are not included in the prices you get from the API, so it is important to display and charge this fee as part of your booking flow. The fee can be only displayed in the check out page, but you might want to show this upfront to the user starting from the seach results page.
Markup Fee Amount
Read the markup_fee_percentage field for each carrier from the /connections/find endpoint. The fee is always presented as a percentage.
"attributes": {
"booking_fee": 0,
"code": "RJET",
"legal_name": "Student Agency k.s.",
"markup_fee_percentage": 4.0,
"trade_name": "RegioJet"
}For other endpoints such as /connections/vacancy, /reservations/{reservation_id}, /bookings/{booking_id} and /cancellations/conditions, the fee is presented in the ammount field an absolute value based on the price of the trip selected.
"included": [
{
"id": "MRKP-0",
"type": "fees",
"attributes": {
"code": "MRKP",
"name": "markup fee",
"component": "retailer",
"included_in_price": null,
"amount": 100
}
}
]Calculating Price
Whether a percentage or an absolute value is presented, this should be added to the price of the trip.
For the /connections/find endpoint where the fee is presented as a percentage, consider the following scenario:
- Price from API: 25.00
- Markup percentage: 4.00%
- Price with markup fee (to be calculated by you): 26.00
For the other endpoints where the fee is presented as an absolute value, consider the following scenario:
- Price from API: 25.00
- Markup amount: 1.00
- Price with markup fee (to be calculated by you): 26.00
We highly recommend that when you decide to show the price with the markup fee, the you fully disclose to user that a fee is included.
API Workflow
- Call the /connections/find endpoint and check the
markup_fee_percentagefield under the attributes section. - The
pricefield for each fare class available via /connections/find endpoint does not included the markup fee. If you want to display the fee to users in this step, use the calculation logic above. - Check if the price of the trip is still the same using /connections/vacancy. If you want to display the fee to users in this step, use the calculation logic above.
- Create the reservation using the /reservations/create endpoint. At this point the fee must be displayed to the users using the calculation logic above and must be charged from users as part of their payment.
- All subsequent steps must show the price and the markup fee.
API Examples
Sample Request to /connections/find
{
"locale": "en",
"currency": "EUR",
"search_bounds": [
{
"is_requested": true,
"departure_date": "2026-05-28",
"departure_start_time": "19:00",
"departure_location": {
"type": "city",
"value": "DEBER"
},
"arrival_location": {
"type": "city",
"value": "CZPRG"
}
}
],
"passengers": [
{
"pax": 1,
"max_age": 25
}
]
}Sample Response from /connections/find
{
"data": [
{
"attributes": {
"duration": 16200,
"departure_time": "2026-05-28T19:00",
"arrival_time": "2026-05-28T23:30",
"offer_id": null,
"booked_out": false,
"electronic_ticket_available": false,
"cheapest_fare_class_code": "FARE-15",
"total_seats_left": 57,
"offer_bundle": null,
"leg_type": "outbound",
"cheapest_total_adult_price": 1790,
"co2_kg": 18.325712203979492,
"co2e_kg": 21.019020080566406,
"co2e_savings": 22.523975372314453
},
"id": "RJET-DEBERCBS-CZPRGZOB-2026-05-28T19:00-2026-05-28T23:30",
"type": "connections",
"relationships": {
"segments": {
"data": [
{
"id": "RJET-DEBERCBS-CZPRGZOB-2026-05-28T19:00-2026-05-28T23:30-0",
"type": "segments"
}
]
},
"fares": {
"data": [
{
"id": "RJET-DEBERCBS-CZPRGZOB-2026-05-28T19:00-2026-05-28T23:30-FARE-15",
"type": "fares",
"price": 1790,
"fare_class": {
"code": "FARE-15",
"id": "RJET-FARE-15",
"type": "fare_classes"
},
"original_price": 1790
},
{
"id": "RJET-DEBERCBS-CZPRGZOB-2026-05-28T19:00-2026-05-28T23:30-FARE-14",
"type": "fares",
"price": 2090,
"fare_class": {
"code": "FARE-14",
"id": "RJET-FARE-14",
"type": "fare_classes"
},
"original_price": 2090
}
]
},
"partial_fares": {
"data": []
},
"marketing_carrier": {
"data": {
"id": "RJET",
"type": "marketing_carriers"
}
},
"departure_station": {
"data": {
"id": "DEBERCBS",
"type": "stations"
}
},
"arrival_station": {
"data": {
"id": "CZPRGZOB",
"type": "stations"
}
}
}
}
],
"meta": {
"currency": "EUR",
"locale": "en"
},
"included": [
{
"attributes": {
"age": 25
},
"id": "pax-25-1",
"type": "passengers"
},
{
"attributes": {
"code": "BUS"
},
"id": "BUS",
"type": "vehicle_types"
},
{
"attributes": {
"index": 0,
"line": "263",
"departure_time": "2026-05-28T19:00",
"arrival_time": "2026-05-28T23:30",
"segment_type": "regular"
},
"id": "RJET-DEBERCBS-CZPRGZOB-2026-05-28T19:00-2026-05-28T23:30-0",
"type": "segments",
"relationships": {
"fares": {
"data": []
},
"vehicle": {
"data": {
"id": "BUS-RJET-DEBERCBS-CZPRGZOB-2026-05-28T19:00-2026-05-28T23:30-0",
"type": "vehicles"
}
},
"marketing_carrier": {
"data": {
"id": "RJET",
"type": "marketing_carriers"
}
},
"departure_station": {
"data": {
"id": "DEBERCBS",
"type": "stations"
}
},
"arrival_station": {
"data": {
"id": "CZPRGZOB",
"type": "stations"
}
},
"operating_carrier": {
"data": {
"id": "RJET",
"type": "operating_carriers"
}
},
"amenities": {
"data": []
}
}
},
{
"id": "BUS-RJET-DEBERCBS-CZPRGZOB-2026-05-28T19:00-2026-05-28T23:30-0",
"type": "vehicles",
"relationships": {
"vehicle_type": {
"data": {
"id": "BUS",
"type": "vehicle_types"
}
}
}
},
{
"attributes": {
"price": 1790,
"booking_type": "standalone",
"offer_id": "c92ed581-7d97-4935-ba2b-390388168d81|46",
"passenger_ids": [
"pax-25-1"
],
"segment_ids": [
"RJET-DEBERCBS-CZPRGZOB-2026-05-28T19:00-2026-05-28T23:30-0"
],
"segment_coverage_type": "collective",
"passenger_coverage_type": "collective",
"booked_out": false,
"seats_left": 19,
"original_price": 1790,
"offer_expires_at": "2026-04-14T13:10:11.179794Z"
},
"id": "RJET-DEBERCBS-CZPRGZOB-2026-05-28T19:00-2026-05-28T23:30-FARE-15",
"type": "fares",
"relationships": {
"applied_cards": {
"data": []
},
"fare_class": {
"data": {
"id": "RJET-FARE-15",
"type": "fare_classes"
}
},
"conditions": {
"data": []
},
"promotional_campaigns": {
"data": []
}
}
},
{
"attributes": {
"price": 2090,
"booking_type": "standalone",
"offer_id": "c92ed581-7d97-4935-ba2b-390388168d81|47",
"passenger_ids": [
"pax-25-1"
],
"segment_ids": [
"RJET-DEBERCBS-CZPRGZOB-2026-05-28T19:00-2026-05-28T23:30-0"
],
"segment_coverage_type": "collective",
"passenger_coverage_type": "collective",
"booked_out": false,
"seats_left": 38,
"original_price": 2090,
"offer_expires_at": "2026-04-14T13:10:11.179794Z"
},
"id": "RJET-DEBERCBS-CZPRGZOB-2026-05-28T19:00-2026-05-28T23:30-FARE-14",
"type": "fares",
"relationships": {
"applied_cards": {
"data": []
},
"fare_class": {
"data": {
"id": "RJET-FARE-14",
"type": "fare_classes"
}
},
"conditions": {
"data": []
},
"promotional_campaigns": {
"data": []
}
}
},
{
"attributes": {
"code": "RJET",
"booking_fee": 0,
"legal_name": "RegioJet a.s.",
"trade_name": "RegioJet",
"markup_fee_percentage": 0.0
},
"id": "RJET",
"type": "marketing_carriers",
"relationships": {
"fare_classes": {
"data": [
{
"id": "RJET-FARE-14",
"type": "fare_classes"
},
{
"id": "RJET-FARE-15",
"type": "fare_classes"
}
]
},
"passenger_types": {
"data": [
{
"id": "PNOS",
"type": "passenger_types"
},
{
"id": "PSEI",
"type": "passenger_types"
},
{
"id": "PCUN",
"type": "passenger_types"
},
{
"id": "PCIL",
"type": "passenger_types"
},
{
"id": "PCUT",
"type": "passenger_types"
}
]
},
"extra_types": {
"data": []
}
}
},
{
"attributes": {
"code": "RJET",
"legal_name": "RegioJet a.s.",
"trade_name": "RegioJet"
},
"id": "RJET",
"type": "operating_carriers"
},
{
"attributes": {
"code": "PNOS",
"name": "Adult",
"description": "",
"max_age": 64,
"min_age": 18
},
"id": "PNOS",
"type": "passenger_types"
},
{
"attributes": {
"code": "PSEI",
"name": "Seniors over 65",
"description": "",
"max_age": 99,
"min_age": 65
},
"id": "PSEI",
"type": "passenger_types"
},
{
"attributes": {
"code": "PCUN",
"name": "Young Adult 18-25",
"description": "",
"max_age": 17,
"min_age": 13
},
"id": "PCUN",
"type": "passenger_types"
},
{
"attributes": {
"code": "PCIL",
"name": "Child",
"description": "",
"max_age": 12,
"min_age": 6
},
"id": "PCIL",
"type": "passenger_types"
},
{
"attributes": {
"code": "PCUT",
"name": "Children 0-6",
"description": "",
"max_age": 5,
"min_age": 0
},
"id": "PCUT",
"type": "passenger_types"
},
{
"attributes": {
"code": "CZPRGZOB",
"name": "Prague Florenc Central Bus Station",
"description": "The bus station is located on Křižíkova 2110/2b.\nThere's Denni Bar Florenc and Florence Tourist Center.",
"time_zone": "Europe/Prague",
"latitude": 50.08958911322947,
"longitude": 14.44074203035995,
"street_and_number": "Křižíkova 2110/2b",
"zip_code": "186 00"
},
"id": "CZPRGZOB",
"type": "stations",
"relationships": {
"city": {
"data": {
"id": "CZPRG",
"type": "cities"
}
},
"area": {
"data": {
"id": "CZPRGPB",
"type": "areas"
}
}
}
},
{
"attributes": {
"code": "DEBERCBS",
"name": "Berlin Central Bus Station",
"description": "The Berlin Central Bus Station is located close to the S-Bahn Station \"Berlin Messe Nord\" (lines S41, S42 and S46).\nIn case of waiting times, a waiting area with 130 seats and a snack bar can help passengers stay relaxed and comfortable.",
"time_zone": "Europe/Berlin",
"latitude": 52.507589,
"longitude": 13.279692,
"street_and_number": "Masurenallee 4-6",
"zip_code": "14057"
},
"id": "DEBERCBS",
"type": "stations",
"relationships": {
"city": {
"data": {
"id": "DEBER",
"type": "cities"
}
},
"area": {
"data": {
"id": "DEBERBE",
"type": "areas"
}
}
}
},
{
"attributes": {
"code": "CZPRG",
"name": "Prague"
},
"id": "CZPRG",
"type": "cities"
},
{
"attributes": {
"code": "DEBER",
"name": "Berlin"
},
"id": "DEBER",
"type": "cities"
},
{
"attributes": {
"code": "CZPRGPB",
"name": "Prague Central Bus Station"
},
"id": "CZPRGPB",
"type": "areas"
},
{
"attributes": {
"code": "DEBERBE",
"name": "Berlin Central Bus Station"
},
"id": "DEBERBE",
"type": "areas"
},
{
"attributes": {
"code": "FARE-14",
"name": "Relax (Bus)",
"journey_type": "single",
"iata_category": "Economy Class"
},
"id": "RJET-FARE-14",
"type": "fare_classes",
"relationships": {
"fare_features": {
"data": [
{
"id": "RJET-WIFI",
"type": "fare_features"
},
{
"id": "RJET-MAGA",
"type": "fare_features"
},
{
"id": "RJET-DRIN",
"type": "fare_features"
},
{
"id": "RJET-MSYS",
"type": "fare_features"
},
{
"id": "RJET-PSOC",
"type": "fare_features"
},
{
"id": "RJET-TOIL",
"type": "fare_features"
},
{
"id": "RJET-ACON",
"type": "fare_features"
},
{
"id": "RJET-REFU",
"type": "fare_features"
}
]
}
}
},
{
"attributes": {
"code": "FARE-15",
"name": "Standard (Bus)",
"journey_type": "single",
"iata_category": "Economy Class"
},
"id": "RJET-FARE-15",
"type": "fare_classes",
"relationships": {
"fare_features": {
"data": [
{
"id": "RJET-WIFI",
"type": "fare_features"
},
{
"id": "RJET-MAGA",
"type": "fare_features"
},
{
"id": "RJET-DRIN",
"type": "fare_features"
},
{
"id": "RJET-MSYS",
"type": "fare_features"
},
{
"id": "RJET-PSOC",
"type": "fare_features"
},
{
"id": "RJET-TOIL",
"type": "fare_features"
},
{
"id": "RJET-ACON",
"type": "fare_features"
},
{
"id": "RJET-REFU",
"type": "fare_features"
}
]
}
}
},
{
"attributes": {
"code": "ACON",
"name": "Air Conditioning",
"description": "The vehicle has a cooling ventilation system."
},
"id": "RJET-ACON",
"type": "fare_features"
},
{
"attributes": {
"code": "DRIN",
"name": "Drinks",
"description": "Drinks are available on board."
},
"id": "RJET-DRIN",
"type": "fare_features"
},
{
"attributes": {
"code": "MAGA",
"name": "Magazines",
"description": "Magazines are available on board."
},
"id": "RJET-MAGA",
"type": "fare_features"
},
{
"attributes": {
"code": "MSYS",
"name": "Media System",
"description": "A media system is available on board."
},
"id": "RJET-MSYS",
"type": "fare_features"
},
{
"attributes": {
"code": "PSOC",
"name": "Power Socket",
"description": "Power supply is available at every seat."
},
"id": "RJET-PSOC",
"type": "fare_features"
},
{
"attributes": {
"code": "REFU",
"name": "Fully refundable",
"description": "The ticket can be cancelled for a full refund up to 15 minutes before departure."
},
"id": "RJET-REFU",
"type": "fare_features"
},
{
"attributes": {
"code": "TOIL",
"name": "Toilet",
"description": "A toilet is available on board."
},
"id": "RJET-TOIL",
"type": "fare_features"
},
{
"attributes": {
"code": "WIFI",
"name": "Wifi",
"description": "Free wifi is available on board."
},
"id": "RJET-WIFI",
"type": "fare_features"
}
],
"jsonapi": {
"version": "1.0"
}
}Sample Request to /connections/vacancy
{
"locale": "en",
"currency": "EUR",
"offers": [
{
"id": "c92ed581-7d97-4935-ba2b-390388168d81|47",
"passenger_ids": [
"pax-25-1"
]
}
],
"passengers": [
{
"id": "pax-25-1",
"type": "PNOS",
"pax": 1
}
]
}Sample Response from /connections/vacancy
{
"data": {
"id": "RJET-DEBERCBS-CZPRGZOB-2026-05-28T19:00-2026-05-28T23:30",
"type": "vacancies",
"attributes": {
"vacant": true,
"total_price": 2500,
"original_price": 2500
},
"relationships": {
"agent": {
"data": null
},
"customer": {
"data": null
},
"applied_cards": {
"data": []
},
"fees": {
"data": [
{
"id": "MRKP-0",
"type": "fees"
}
]
},
"ancillary_options": {
"data": []
},
"connection_passengers": {
"data": [
{
"id": "PNOS-1-1776170811",
"type": "passengers"
}
]
},
"required_attributes": {
"data": [
{
"id": "82db72ce-1131-4eec-a170-84b29197538f",
"type": "required_attributes"
},
{
"id": "24211c06-1640-4176-8778-93d3dd7b5b4a",
"type": "required_attributes"
}
]
}
}
},
"jsonapi": {
"version": "1.0"
},
"meta": {
"currency": "EUR"
},
"included": [
{
"id": "PNOS-1-1776170811",
"type": "passengers",
"relationships": {
"required_attributes": {
"data": [
{
"id": "2dc55386-8bc7-4e78-89d5-6b84c6cf9c46",
"type": "passenger_required_attributes"
},
{
"id": "e853c851-9f4b-4ea4-b919-95fd11f8efcc",
"type": "passenger_required_attributes"
}
]
}
}
},
{
"id": "2dc55386-8bc7-4e78-89d5-6b84c6cf9c46",
"type": "passenger_required_attributes",
"attributes": {
"mandatory": [],
"endpoint": "reservations/create"
}
},
{
"id": "e853c851-9f4b-4ea4-b919-95fd11f8efcc",
"type": "passenger_required_attributes",
"attributes": {
"mandatory": [
"first_name",
"last_name"
],
"endpoint": "reservations/confirm",
"internal_source": true
}
},
{
"id": "82db72ce-1131-4eec-a170-84b29197538f",
"type": "required_attributes",
"attributes": {
"mandatory": [],
"endpoint": "reservations/create"
}
},
{
"id": "24211c06-1640-4176-8778-93d3dd7b5b4a",
"type": "required_attributes",
"attributes": {
"mandatory": [
"city",
"email",
"first_name",
"last_name",
"street_and_number",
"zip_code",
"terms_accepted"
],
"endpoint": "reservations/confirm"
}
},
{
"id": "MRKP-0",
"type": "fees",
"attributes": {
"code": "MRKP",
"name": "markup fee",
"component": "retailer",
"included_in_price": null,
"amount": 100
}
}
]
}On this page
- Markup Fees