К списку постов

Зачем бумажному ваучеру QR-код в 2026 году

Ваучер — это не просто PDF-ка для красоты. Это контракт между туроператором и поставщиком на конкретную услугу. И QR-код превращает его из бумажки в живой статус.

29 апреля 2026 г.5 minINITE Travel
ваучерыQRоперации

Каждый туроператор когда-нибудь сталкивался с ситуацией: гид приехал на встречу, клиент протягивает ваучер, гид смотрит в свой WhatsApp — а там ваучер за прошлую неделю на похожую группу. Через десять минут разбирательств выясняется, что да, действительно, ваучер актуальный, просто гид забыл проверить дату.

Это нормально. Гид не виноват. Виноват ваучер: он бумажный, статичный, и не умеет сам сказать «я свежий, я выдан сегодня, я для этой группы».

Что такое ваучер технически

В простом виде это PDF с реквизитами: код, поставщик, дата услуги, число pax, контакт оператора. Двойная функция: для клиента — подтверждение того, что услуга оплачена; для поставщика — подтверждение того, что эту услугу нужно оказать.

Слабое место в обеих функциях — статичность. Ваучер выдан в апреле на услугу в сентябре. За пять месяцев между выдачей и предоставлением услуги может произойти что угодно: бронь отменили, доплату не получили, поставщика заменили, дату сдвинули. Бумага этого не знает.

Что меняется с QR-кодом

QR — это просто URL. Поставщик сканирует, попадает на публичную страницу с актуальным статусом ваучера: valid / consumed / cancelled. Никакой авторизации, никакого приложения для сканирования — стандартная камера телефона + браузер.

И теперь у вас есть три новых возможности, которых не было с бумагой.

Real-time валидация на месте услуги. Гид перед началом экскурсии сканирует ваучер, видит «valid, оплачено, 8 pax», и спокойно начинает работу. Если ваучер отменён, он видит это сразу, а не после того как полтора часа провёл с группой бесплатно.

Защита от дублей. Один QR — один ваучер. Если кто-то распечатал копию или переслал PDF дальше, сервер всё равно знает, какой ваучер был изначально issued, и не позволит дважды его «скушать».

Автоматический отчёт по поставщику. Каждое сканирование оставляет след. В конце месяца вы знаете, какие ваучеры реально были предъявлены, а какие нет — это и есть достоверная сверка с поставщиком, без обзвонов и переписки.

Что должно быть в правильном QR-ваучере

Несколько прагматичных требований, которые на пятый раз превращаются в очевидные.

QR ведёт на короткий стабильный URL. Не надо туда зашивать всю информацию — длинный QR неудобен и плохо сканируется на смятой бумаге. Двадцать-тридцать символов токена в URL — достаточно.

Токен непредсказуемый. Не последовательный «voucher #42», а cryptorandom, например 24 байта в base64url (192 бита энтропии). Иначе кто-то перебором узнает действующие ваучеры.

Публичный эндпоинт отдаёт минимум данных. Имя поставщика, статус, число pax, время услуги — да. Имя клиента, телефон, паспорт, цена — нет. Поставщику не нужно знать стоимость, гиду не нужны паспортные данные. Всё, что выше необходимости, — это утечка PII.

Status FSM с одной правильной траекторией. draft → issued → delivered → consumed, и cancelled из любого нефинального состояния. Никакого «consumed → issued» — потому что физически нельзя «развыдать» уже использованный ваучер.

Audit log на каждое изменение. Кто и когда выдал, кто отменил, кто отметил как использованный. Эта история нужна не вам, она нужна вашему бухгалтеру и в редких случаях — суду.

Как это устроено в INITE Travel

Мы только что выкатили эту систему в Phase 10. Каждый ваучер получает уникальный код вида V-2026-0042 (последовательный per-company) и cryptorandom qrToken (192 бита). PDF рендерится через @react-pdf/renderer, QR — через qrcode npm-пакет, как PNG dataURL прямо в документ.

Публичный эндпоинт /api/vouchers/verify/[qrToken] отдаёт JSON со статусом и базовыми реквизитами без авторизации. Поставщик сканирует — видит ответ. Никакой регистрации, никакого приложения.

PDF умеет также отдаваться по этому же токену: ?token=qrToken вместо ?companyId=.... Это позволяет переслать ваучер клиенту по WhatsApp / Telegram / email, и клиент откроет PDF без логина в бэкофисе.

Бонус: bulk-генерация. Один клик из карточки брони — система проходит по всему маршруту и создаёт draft-ваучер на каждую услугу (трансфер, отель, гид, активность). Идемпотентно: повторный клик не создаёт дубликаты.

Если вы пока без этого — главный совет: даже простейший QR-ваучер из самописного скрипта с публичной HTML-страницей статуса даёт вам 80% выгод от полноценной системы. Час работы, и поставщикам уже не нужно вам звонить.

Почитать ещё

Зачем бумажному ваучеру QR-код в 2026 году | INITE Travel