Костыль если нужно применить купон многоразовый купон, одина раз для пользователя
<?php \Bitrix\Main\EventManager::getInstance()->addEventHandler(
'sale', 'OnSaleOrderEntitySaved', 'OnStatusChange'
);
function OnStatusChange(Bitrix\Main\Event $event) {
$groupId = 18;
$couponName = 'ВСЕПО300';
$order = $event->getParameter("ENTITY");
$arOrderVals = $order->getFields()->getValues();
$orderId = $arOrderVals['ID'];
$userId = $order->getUserId();
$discountData = $order->getDiscount()->getApplyResult();
if (key($discountData['COUPON_LIST']) == $couponName) {
\Bitrix\Main\UserGroupTable::delete(array('GROUP_ID' => $groupId, 'USER_ID' => $userId));
/*$arGroups = CUser::GetUserGroup($userId);
unset($arGroups[array_search('17', $arGroups)]);
CUser::SetUserGroup($userId, $arGroups);*/
}
}