Добрый день.
Всё описанное будет очень сложно в реализации.
И поломает всю совместимость с модулями чекаута расчёт стоимости доставки и т.д. Т.к. полностью ломается архитектура корзины.
Мне кажется, проще решить данный вопрос отдельным товаром. И просто его закидывать в корзину вместе с нужным товаром.
Опишу ориентировочные шаги.
1) Заводим ныжные товары, например: Устуга1, Услуга2 и т.д.
2) В поле upc у товаров указываем id товара услуги.
3) Если у товара заполнено поле upc, то вытягиваем цену товара с названием и выводим это как опцию в товаре с галочкой
4) В скрипте добавления в корзину проверяем выставленность галочки. Если галочка выставлена, то добвляем кщё в корзину и услугу.
Такой подход позволит удалять услугу из корзины, отдельно от товара.
И не нарушит соместимость со всеми остальными модулями по оформлению заказа.
Без детальной постановки задачи сложно сказать подробнее.