Андрей, для того, чтобы подобные глобальные корректировки делать, надо очень четко понимать структуру биллинга (а она довольно обширная и имеет много зависимостей). Корзина — это Заказ (объект Order). К Заказу имеются связки Заказ-Товар (OrderProduct). И вот здесь сразу подходим к самому важному: оплате. По сути оплата может быть совершенно не связанная с Заказами, то есть она может быть вообще произвольная (Смотрите модель класса Payment, колонка order_id в ней nullable). К слову, даже если order_id указан, в ShopModxBox предусмотрена частичная оплата по заказу.
Резюмирую: вы вообще можете принимать оплату за свои товары без всякого оформления заказа, просто выводя форму для оплаты и написав собственный обработчик принимаемых платежей, к примеру, задействовав form-процессор. А вот пытаться как-то играться с наличием только одного товара в заказе или типа того — не очень эффективный подход.
В общем, все это можно, но если очень хорошо понимаете ShopModxBox и четко представляете себе как это будете делать.