Можно попробовать какой-то мессенджер с привязкой к телефону, например, Вайбер.
Всё это делать следующим образом… Если есть привязанный к телефону Вайбер, то отправляем код туда, а если нет, то отправляем по смс. Так называемый
Chain паттерн.
Это сильно может удешевить вашу проверку на подтверждение. Однако это не исключает полного исключения обычных смс, так как Вайбер может быть не у всех. Так же это может быть немного запутано для клиента.
Стоит подумать так ли это дорого. Ведь подтверждение телефона клиента всего один раз.