Setting up free shipping according to 1C-Bitrix terms

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Website development for FIXPER company
    811
  • 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
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    747
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    976

Setting Up Conditional Free Delivery in 1C-Bitrix

Free delivery upon meeting conditions is one of the most effective tools for increasing the average order value. Customers add more items to reach the threshold. In 1C-Bitrix this is implemented in several ways depending on the complexity of the conditions.

Method 1: Separate service with an order amount restriction

The cleanest approach. Create a "Free Delivery" service with zero price. Set a minimum order amount in the restrictions.

Shop → Settings → Delivery Services → Add → Manual (fixed price) → Price: 0

Then: [service] → Restrictions → Add restriction → Order amount → min: 3000

This method works through b_sale_delivery_restriction — when calculating available services, 1C-Bitrix checks restrictions and hides the service if the condition is not met.

Method 2: 100% discount via marketing rules

Shop → Marketing → Cart Rules → Add:

  • Condition: Order amount >= 3000
  • Action: Delivery discount 100%

Applies to the delivery service chosen by the customer. Downside: the 100% discount will apply to any service, even to express delivery that you do not want to make free.

Solution: restrict the list of services to which the discount applies in the rule — "standard delivery only."

Complex conditions: multiple criteria

Free delivery only for registered users from 5,000 rubles, or for everyone from 7,000 rubles — this cannot be covered by standard restrictions. Implementation via a custom handler:

public function isCompatible(\Bitrix\Sale\Shipment $shipment): bool
{
    $order = $shipment->getOrder();
    $price = $order->getPrice();
    $userId = $order->getUserId();

    // Registered user + from 5000
    if ($userId > 0 && $price >= 5000) return true;

    // Anyone + from 7000
    if ($price >= 7000) return true;

    return false;
}

"X away from free delivery" widget

This is a UX element in the cart: "Add another 1,200 ₽ and get free delivery." It is not part of the standard 1C-Bitrix template — it requires customizing the cart component.

// In the cart component template
$threshold = \Bitrix\Main\Config\Option::get('my_shop', 'free_delivery_threshold', 3000);
$currentSum = $arResult['PRICE'];
$remaining = max(0, $threshold - $currentSum);

if ($remaining > 0) {
    echo 'Until free delivery: ' . \CCurrencyLang::CurrencyFormat($remaining, 'RUB');
}

The threshold is stored in the module settings or site settings (b_option), not in the template — so that a manager can change it without a developer.

Free delivery progress bar

A visual progress bar converts better than a text string. Implementation — a fill bar in percentage:

const threshold = 3000;
const current = parseFloat(document.getElementById('basket-sum').dataset.sum);
const pct = Math.min(100, Math.round((current / threshold) * 100));
document.getElementById('free-delivery-bar').style.width = pct + '%';
document.getElementById('free-delivery-remaining').textContent =
    pct < 100 ? 'Add ' + (threshold - current) + ' ₽' : 'Free delivery!';

The progress bar updates when items are added to the cart via the standard 1C-Bitrix basket:update event.

Free delivery via promo code

Another option — free delivery as a promo code bonus. Implemented via a marketing rule with the condition "Coupon X applied" and the action "Delivery discount 100%." A coupon is created in the section Marketing → Coupons and linked to the cart rule.

Regional restrictions

Free delivery only in Moscow and St. Petersburg — a common scenario. Implementation: the "Free Delivery" service is restricted to two locations via the "Locations" tab. In other regions, this service is not shown and standard delivery applies.

Implementation timelines

Basic setup (separate service or discount via marketing) — 2–4 hours. With the "X away from free delivery" widget and progress bar — 1 working day. With promo codes and regional restrictions — 1–1.5 days.