Your comments

как описываете Вы, то получается раздача (ну и списание) бонусов только за скачивание и регистрацию в приложении.
Изначальный смысл был в том, чтобы поддерживать интерес клиента к приложению и поездкам постоянно, т.е. распространять промокоды по разным поводам и праздникам. 8 марта, день города, и пр.

но с ограничением по времени и/или количеству использований
Как вижу это я:

Создается шифр промокода (буквенно-числовой набор символов)
Настраивается срок действия бонуса (в сутках) или количество поездок
Настраивается тип (фиксированная сумма или % скидка на тариф (напр. -30%))

Если настроен фиксированный бонус по промокоду, то списание может производиться согласно действующих настроек бонусной программы. Если процентная скидка, то отнимается от тарифа, при поездке разово или в настроенный временной интервал

Прошу обратить внимание на тему Промокод для клиентов

Опыт показывает, что водители не активно реагируют на участие в акциях. Их интересует сиюминутная выгода. Здесь и сейчас.

По своему опыту знаю, что видимость заказа ОДНОВРЕМЕННО всеми ближайшими водителями приводит не к ускорению подачи автомобиля клиенту, а к появлению не нужных вопросов "Почему этот заказ не взял я?" и к подозрению что заказы "сливаются". Замахаетесь водителям объяснять почему так происходит...
Метод перебора (по очередно) самых ближайших, позволяет соблюсти принцип "социальной справедливости" и повышению лояльности со стороны водителей к службе такси.

Подсмотрено у других. Если водитель сразу после принятия заказа пытается нажать "На месте", ему выводится уведомление, о том что он находится слишком далеко от адреса подачи. А когда водитель уже почти подъехал (метров 100-200), то автоматически переводится в статус "На месте" (выводится уведомление "Мы оповещаем клиента, что вы подъезжаете") и производится дозвон или отправляется смс. Заказы "за гаражами" остаются за водителем, он сам будет нажимать "На месте", но для подстраховки можно установить паузу между нажатиями "Принял" и "На месте" в несколько минут