Почему лишние операции? При создании купона указать ему дату начала и конца = сегодняшней дате. Думаю, в течение дня менеджер управится.
Если хочется дать понять клиенту, что купон одноразовый и хитропопость не пройдёт - можно в названии купона отразить словами ONETIME, ONCE и т.п.
Но я бы не стал. Наоборот, можно использовать и приветствовать такую любознательность и хитропопость на пользу себе. Например, ставить купону минимальную сумму в 500-800 грн. Купив на эту сумму, клиент принесет гривен 100 профита. Скидка обычно примерно на ту же суммму оформляется, нсколько понимаю. Отдав этот профит хитропопому клиенту, получаем: (а) лояльность и положительные эмоции, (б) оборот. Даже если не будет особого профита, оборот - неплохая штука и может при общении с поставщиками служить аргументом для получения большей скидки на закупках. Одним хаком убиваем двух зайцев. А то и трех, так как не факт, что человек ограничится минимальной суммой заказа - тогда ещё может и профит получим. Лояльность/игра, нескучный клиент (и может даже чуть азартный - вообще мечта для продавца), оборот на повторных заказах в течение 1-2 дней, и может ещё профит останется.
То есть получается игровая механика для стимуляции повторных заказов в течение небольшого промежутка после первого заказа.
С суммами и скидками надо подумать, конечно: 100 грн за лид может и многовато, но тут уже можно оперировать статистикой и средним чеком.
Можно даже дальше пойти: купоны называть по каким-то правилам, устанавливать срок действия или кол-во срабатываний, и дать возможность любознательному клиенту легко угадать купон. Изменив, например, DAY на WEEK в нём. Поигрался с корзиной, увидел скидку 10%, например. Окрыленный, попробовал заменить WEEK на MONTH -- увидел скидку 3%. Может станет покупать каждую неделю. А о таких загадках можно намекать в соцсетях или рассказывать иногда в блоге.