Как программно уменьшить количество товара в корзине?
Алексей Емельянов: Скорее всего нужно сначала удалить документ отгрузки.
При обновлении через админку, документы не помеха (остаются проведёнными, появляется уточнение о том, сколько отгружено и сколько нужно до-отгрузить).
Также нужно быть осторожным, поскольку «спрыгивают» применённые при создании подарки. Скидки не проверял.Используйте D7.
Работающий код 
(внутри — PHPDocs, без которых IDE не может сориентироваться в подсказках):// Читаем заказ, читаем корзину
$order= \Bitrix\Sale\Order::load( 6924 );
$basket= $order->getBasket();
$basket_items= $basket->getBasketItems();

/**
 * @var $bi \Bitrix\Sale\BasketItem
 */
foreach ( $basket_items as $bi ) {
	$quantity_current= $bi->getField( 'QUANTITY' );
	
	//Приходит в формате "3.000"
	$quantity_current++;
	$quantity_current= $bi->setField( 'QUANTITY', $quantity_current );
	
	$save_result= $bi->save();
	if ( !$save_result->isSuccess() ) {
		ShowError( $save_result->getErrorMessages() );
		exit;
	}
}(!) При изменении таким способом, накапливается и история изменений в сопроводительной информации к заказу.
В частности: изменение количества заказа, стоимости заказа, изменений в подарках.
Также в отгрузках корректно срабатывает счётчик требуемой до-отгрузки.
Не дает уменьшить из-за привязки товара к отгрузкам - покажите точную формулировку ошибки, которую возвращает api.
А корзина случайно не привязана уже к заказу? Скорее всего нужно сначала удалить документ отгрузки.