Develop a Transport Company Website with Online Booking on 1C-Bitrix

How to Develop a Transportation Company Website on 1C-Bitrix with Online Booking A client asks: "Is there a Minsk—Moscow trip on Friday? How much does it cost to rent a bus for 45 people?" — if the answer can't be found in two clicks, they go to an aggregator. Without an online booking system wit

Our competencies:

Frequently Asked Questions

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    995
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    734
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    863
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    773
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1134

How to Develop a Transportation Company Website on 1C-Bitrix with Online Booking

A client asks: "Is there a Minsk—Moscow trip on Friday? How much does it cost to rent a bus for 45 people?" — if the answer can't be found in two clicks, they go to an aggregator. Without an online booking system with dynamic pricing, the site becomes a business card that no one uses. We design an architecture where the central element is the tariff grid managed via Highload-blocks.

Problems We Solve — Transport Company Website Development

The main technical challenge is the diversity of services: regular trips, bus rental, corporate transfers, excursions. Each type requires its own parameters: for rental — route, hours, vehicle type; for a trip — date and number of seats. A single information block with conditional properties complicates the code, so we create separate Highload-blocks.

The second problem is cost calculation based on a complex tariff grid. The price depends on distance, time, bus class, season, surcharges. Storing this in information blocks is inefficient — we use HL-blocks with custom fields and indexes.

What Is a Tariff Grid and How to Implement It?

Let's look at an example of bus rental by distance. The system consists of several HL-blocks: Highload-block TariffGrid:

Field Type Purpose
UF_VEHICLE_TYPE enumeration Minibus / Medium Bus / Large Bus
UF_COMFORT_CLASS enumeration Standard / Comfort / VIP
UF_TARIFF_TYPE enumeration Per km / Per hour / Fixed route
UF_PRICE_PER_UNIT float Price per unit (km or hour)
UF_MIN_HOURS integer Minimum order in hours
UF_MIN_PRICE float Minimum order cost
UF_CITY_FROM string Departure city
UF_CITY_TO string Arrival city
UF_FIXED_PRICE float Fixed route price
UF_SEASON enumeration Low / High / Holiday
UF_VALID_FROM date Tariff valid from date
UF_VALID_TO date Tariff valid to date

Highload-block TariffSurcharge — surcharges:

Field Type Purpose
UF_TYPE enumeration Night delivery / Holiday / International / Baggage
UF_SURCHARGE_TYPE enumeration Percentage / Fixed amount
UF_VALUE float Surcharge value
UF_VEHICLE_TYPE enumeration Which vehicle type it applies to

Calculation algorithm:

  1. Determine the distance between points. For popular routes, we use pre-calculated data from HL-block RouteDistance, for non-standard routes — Google Distance Matrix API or OSRM.
  2. Select tariff from TariffGrid by vehicle type, comfort class, and date.
  3. Base cost = distance * UF_PRICE_PER_UNIT.
  4. If base is less than UF_MIN_PRICE, use UF_MIN_PRICE.
  5. Apply surcharges from TariffSurcharge (night delivery, holiday, international route).
  6. For round-trip routes — double the distance with a coefficient of 0.85-0.9.

Implementation in code:

$tariff = TariffGridTable::getRow([ 'filter' => [ 'UF_VEHICLE_TYPE' => $vehicleType, 'UF_COMFORT_CLASS' => $comfortClass, 'UF_TARIFF_TYPE' => 'per_km', '<=UF_VALID_FROM' => $tripDate, '>=UF_VALID_TO' => $tripDate, ], ]); $basePrice = max( $distance * $tariff['UF_PRICE_PER_UNIT'], $tariff['UF_MIN_PRICE'] ); // Наценки $surcharges = TariffSurchargeTable::getList([ 'filter' => ['UF_VEHICLE_TYPE' => $vehicleType], ])->fetchAll(); foreach ($surcharges as $s) { if (isSurchargeApplicable($s, $tripDate, $tripTime, $isInternational)) { $basePrice = applySurcharge($basePrice, $s); } } 

For hourly rental, the calculation is simpler: hours * tariff per hour, with a minimum check. For fixed routes, UF_FIXED_PRICE is used directly.

Why Online Booking Increases Conversion by 2-3 Times?

The client has no time to call and clarify prices. The online calculator provides an instant answer. Our booking system processes the request 5 times faster than custom PHP solutions, thanks to tagged caching and optimized queries to HL-blocks. We integrate it with the REST API of Bitrix, so after confirmation, an order with trip parameters is created. Payment — 30-50% prepaid via acquiring or full payment at boarding.

Additional Modules

  • Fleet — an information block with cards for each vehicle: type, capacity, class, photos, characteristics. Filtering by capacity and class. During booking — automatic selection of suitable buses.
  • GPS trip tracking — integration with trackers (WIALON, Galileosky). On the site — a map with the bus location, updated every 30-60 seconds.
  • B2B portal — a private section for corporate clients: authorization by contract, submitting requests, exporting invoices and statements from 1C, order history, prepayment balance.
  • Route landing pages — for SEO traffic. For each popular route, an information block element is created with a unique description, schedule, and booking widget.

Process of Work

  1. Analytics — study the carrier's business processes, gather requirements for tariffs, routes, integrations.
  2. Design — develop HL-block architecture, calculation scheme, interface prototype.
  3. Development — implement booking, fleet, and integration modules. Write code in PHP 8.1+ using Component 2.0.
  4. Testing — verify cost calculation for 50+ scenarios, load testing of the calculator.
  5. Deployment and support — configure caching, monitoring, transfer access and documentation.

What Is Included in the Work

  • Development of information block and Highload-block structure
  • Implementation of cost calculation algorithm
  • Integration with payment systems (YooKassa, Sber)
  • Integration with 1C (CommerceML or HTTP services)
  • Caching and performance optimization
  • SEO optimization of route landing pages
  • Training operators to work with the admin panel
  • 6-month warranty support

Estimated Deadlines

Scale Composition Time
Small carrier (5-10 routes) Service catalog, fleet, application form, route pages 6-8 weeks
Medium company + online booking with tariff grid, payment, trip schedule 12-16 weeks
Large carrier + B2B portal, GPS tracking, 1C integration, multilingual 20-26 weeks

The cost is calculated individually — we will evaluate the project after the brief. 1C-Bitrix: Data management via Highload-blocks. Contact us for an audit of your business process. Request a consultation — we will send a commercial proposal with an estimate.

Case example: 35% savings on operational costsFor one transportation company, we automated the cost calculation and exchange with 1C. Manual order processing reduced from 4 hours to 20 minutes per day. Savings on operational costs reached 35%.