1. Создаем правило корзины:
/bitrix/admin/sale_discount_edit.php
2. Вывод малой корзины кастомизируем (не знаю как она у вас реализована), но примерно так:
а. получаем сумму товаров в корзине
spoiler$result = Sale\Internals\BasketTable::getList(array(
'filter' => array(
'FUSER_ID' => Sale\Fuser::getId(),
'ORDER_ID' => null,
'LID' => SITE_ID,
'CAN_BUY' => 'Y',
),
'select' => array('BASKET_COUNT', 'BASKET_SUM'),
'runtime' => array(
new \Bitrix\Main\Entity\ExpressionField('BASKET_COUNT', 'COUNT(*)'),
new \Bitrix\Main\Entity\ExpressionField('BASKET_SUM', 'SUM(PRICE*QUANTITY)'),
)
))->fetch();
б. Вычитаете из суммы от которой идет бесплатная доставка сумму товаров в корзине
в. Оборачиваете всё это в ajax для плавности и красоты (Это уже в другую тему)