Stepwise Order Checkout Customization for 1C-Bitrix

When a Bitrix project already has a standard order component, but you need to add a step for selecting delivery time or a conditional jump for self-pickup — the standard logic breaks? Clients lose conversions, and developers go into weeks of fixes. We are a team with 10+ years of experience devel

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
    733
  • 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
    772
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1134

When a Bitrix project already has a standard order component, but you need to add a step for selecting delivery time or a conditional jump for self-pickup — the standard logic breaks?

Clients lose conversions, and developers go into weeks of fixes. We are a team with 10+ years of experience developing on Bitrix and over 50 successful projects — we configure stepwise order checkout from scratch or modify the existing one. We configure the number of steps, order, AJAX switching, and additional fields. Evaluate your project in 1 day — just write to us. According to statistics, a properly configured stepwise checkout increases conversion by 1.3 times compared to a single-page form, by reducing cognitive load on the user. We solve tasks of any complexity: from adding one field to complex logic with conditional transitions, integration with 1C, and fiscalization.

How stepwise mode works

The component bitrix:sale.order.ajax with parameter DELIVERY_MODE = SPLIT_DELIVERY splits the checkout into steps. In the .default template folder, there are order_ajax.php and files step_*.php. Switching between steps is done by the JavaScript function orderAjax.gotoStep(). It sends the current step's data to the server and receives the next step's markup. It is important to preserve the structure of JS variables: arOrderAjaxFields, arDeliveryList, arPaySystemList. If these objects are not filled correctly — AJAX switching will break.

How to add a new step to the stepwise checkout?

The default template supports 3 steps. To add a new one (e.g., "Delivery time selection" or "Gift wrapping"), follow this algorithm:

  1. Create a copy of the template in /local/components/bitrix/sale.order.ajax/templates/.
  2. Add a file step_delivery_time.php with the step markup.
  3. Register the step in the JavaScript array orderAjax.steps.
  4. In the handler OnSaleComponentOrderMakeOrder, save the additional step data in order properties.
Example JS code for registering a step
BX.message({STEP_DELIVERY_TIME: 'Select delivery time'}); orderAjax.steps.push('STEP_DELIVERY_TIME'); 

On the server, in the method initStep, we check if the step is present in the data.

Reasons for breaking the standard component with custom steps

The main reason is incompatibility with the expected data structure. Each step must return JSON with fields HTML, TITLE, DATA. If the format is broken, orderAjax does not update the step. The second reason is lack of handling new fields in the checkValid function. We always add validation for each custom field. According to official Bitrix documentation, copying the template to /local is the first step to preserve changes during core updates.

Configuring conditional step transitions

If self-pickup requires skipping the address step, this is implemented via a JS event:

BX.addCustomEvent('onSaleOrderAjaxStepChange', function(currentStep, nextStep) { if (currentStep === 'DELIVERY' && selectedDeliveryIsPickup()) { orderAjax.gotoStep('PAYMENT'); return false; } }); 

On the server, we remove the mandatory requirement for address fields for self-pickup — via a condition in OnSalePropertyValueCheck.

How to speed up AJAX switching between steps?

AJAX switching is already asynchronous, but speed can be increased by tagged caching for delivery and payment lists. Use Bitrix\Main\Data\Cache with tags sale_delivery and sale_pay_system. Also disable unnecessary GetList calls in the epilogue. With proper configuration, a step switches in 200–400 ms — 3 times faster than a full page reload.

Comparison: stepwise vs single-page checkout

Parameter Stepwise checkout Single-page checkout
Conversion (average) 68–72% 55–60%
Fields on screen up to 7 up to 20
Support for complex logic conditional transitions, custom steps only basic fields
Customization development time 2–5 days 1–2 days
Risk of errors with 1C integration moderate (testing required) low

What is included in the work

  • Documentation: technical specification with step descriptions, state diagram, operation manual.
  • Access: configuring component access rights, roles for operators.
  • Training: a session for administrators on managing custom steps.
  • Support: 1-year warranty service, consultations on modifications.

Stages of work

Stage What we do Result
Analytics Audit of current checkout scheme, check integrations (1C, payment systems) Technical specification with step descriptions
Design Design step structure, conditional transition logic State diagram
Implementation Write custom template, add steps, configure AJAX Working component in /local
Testing Test on all scenarios (self-pickup, courier, card/cash payment) Test checklist
Deployment Upload to production server, tagged caching, documentation Operation manual

Timeline and guarantees

Configuration based on the standard component — 1–3 working days. Adding non-standard steps — 2–5 days. The cost is determined after analysis of your project and fixed in the contract. Our clients save up to 40% of time on modifications compared to DIY customization. All work comes with a 1-year warranty. The team is a certified 1C-Bitrix partner with over 10 years of experience and more than 50 implemented online stores. We use only licensed software.

Typical technical mistakes when customizing

  • Template not copied to /local — changes will be lost during core update.
  • New step not added to orderAjax.steps — "Next" button does not appear.
  • Event onSaleOrderAjaxStepChange not handled for conditional transition — user gets stuck on a step.
  • Fiscalization (Federal Law 54-FZ) not considered when changing steps — receipts do not pass. We configure data transfer to ATOL Online or similar.

Before starting work, we check compliance with requirements from Wikipedia: 1C-Bitrix and AJAX.

Contact us — we will evaluate your project in 1 day. Get a consultation and a roadmap. Write to us — we will configure stepwise order checkout for your tasks.