Configuring Step-by-Step Order Checkout in 1C-Bitrix
Step-by-step checkout in Bitrix is the operating mode of the bitrix:sale.order.ajax component with the parameter DELIVERY_MODE = SPLIT_DELIVERY. The buyer goes through several steps: buyer details → delivery method → payment method → confirmation. The most common problem clients come with: either the steps do not switch correctly on AJAX requests, or they need to add an extra step (such as delivery time selection) that the standard component does not have.
How the Step-by-Step Mode Works
The component is split into steps via the template. The template folder /bitrix/components/bitrix/sale.order.ajax/templates/.default/ contains order_ajax.php — the main template file — and a set of step_*.php files. Step switching is the JavaScript function orderAjax.gotoStep(), which sends the current step's data to the server and receives the markup for the next step.
When working with a custom template, it is important to preserve the structure of the JS variables the component expects: arOrderAjaxFields, arDeliveryList, arPaySystemList. If these objects are not correctly populated, AJAX step switching will break.
Configuring the Number and Order of Steps
The standard template supports 3 steps. To add a step (for example, "Select delivery time" or "Gift wrapping"):
- Create a copy of the template in
/local/components/bitrix/sale.order.ajax/templates/ - Add a new file
step_delivery_time.phpwith the step markup - Add the step to the JavaScript steps array
orderAjax.steps - In the
OnSaleComponentOrderMakeOrderhandler, save the additional step data to order properties
Configuring Conditional Step Transitions
If certain delivery types (pickup) require skipping the address step — this is implemented via a JS step-change event:
BX.addCustomEvent('onSaleOrderAjaxStepChange', function(currentStep, nextStep) {
if (currentStep === 'DELIVERY' && selectedDeliveryIsPickup()) {
orderAjax.gotoStep('PAYMENT'); // skip the address step
return false;
}
});
On the server, address fields must correspondingly be made non-required for pickup — via a condition in the OnSalePropertyValueCheck handler.
Configuration Timeline
Configuring step-by-step checkout based on the standard component (template modification, step order, conditional logic) — 1–3 working days. Adding non-standard steps with data saved to order properties — 2–5 days.

