Por que um voucher impresso precisa de QR-code em 2026
Voucher não é decoração. É um contrato entre operadora e fornecedor para um serviço específico. O QR-code transforma um papel estático em status vivo.
Toda operadora já viveu essa cena. O guia chega ao ponto de encontro. O cliente entrega o voucher. O guia abre o WhatsApp — e ali está um voucher da semana passada, para um grupo diferente com nome parecido. Dez minutos de conferência confusa depois, descobre-se que sim, o voucher é atual, o guia só esqueceu de checar a data.
Isso é normal. O guia não tem culpa. A culpa é do voucher: ele é de papel, é estático, e não consegue dizer "estou fresco, fui emitido hoje, sou para esse grupo."
O que é um voucher, tecnicamente
A versão simples é um PDF com credenciais: código, fornecedor, data do serviço, número de pax, contato da operadora. Serve duas funções ao mesmo tempo: para o cliente, prova de que o serviço está pago; para o fornecedor, instrução de prestar dito serviço.
A fraqueza nas duas funções é o estatismo. Voucher emitido em abril para serviço em setembro. Qualquer coisa pode acontecer nesses cinco meses: a reserva foi cancelada, o sinal não caiu, o fornecedor foi trocado, a data foi mudada. Papel não sabe.
O que muda com QR-code
QR é só uma URL. O fornecedor escaneia, cai numa página pública de status que mostra o estado atual do voucher: valid / consumed / cancelled. Sem login, sem app — câmera padrão do celular mais navegador.
Isso te dá três capacidades novas que não existiam no papel.
Validação em tempo real no momento do serviço. O guia escaneia o voucher antes de começar o passeio, vê "valid, pago, 8 pax", e começa a trabalhar. Se o voucher tiver sido cancelado, ele vê na hora, não depois de noventa minutos com um grupo não pago.
Proteção contra duplicidade. Um QR por voucher. Se alguém imprimiu cópia ou encaminhou o PDF, o servidor ainda sabe qual voucher era o issued original, e não deixa dois consumirem o mesmo slot.
Conciliação automática com o fornecedor. Cada scan deixa rastro. No fim do mês você sabe quais vouchers foram de fato apresentados e quais não — isso é uma conciliação verificável, sem ligações nem diff de planilhas.
O que um QR-voucher bem feito precisa
Alguns requisitos pragmáticos que ficam óbvios na quinta vez:
O QR aponta para uma URL curta e estável. Não tente cravar toda a informação no QR — QR longo é desconfortável e escaneia mal em papel amassado. Vinte-trinta caracteres de token na URL é suficiente.
O token é imprevisível. Não um sequencial voucher #42 — cryptorandom, por exemplo 24 bytes em base64url (192 bits de entropia). Senão alguém faz brute-force em vouchers ativos.
O endpoint público devolve o mínimo. Nome do fornecedor, status, número de pax, hora do serviço — sim. Nome do cliente, telefone, passaporte, preço — não. O fornecedor não precisa saber o preço, o guia não precisa de dados de passaporte. Tudo além disso é vazamento de PII.
Um FSM de status com uma trajetória correta. draft → issued → delivered → consumed, e cancelled a partir de qualquer estado não-final. Sem "consumed → issued" porque fisicamente não dá para "des-entregar" um serviço já entregue.
Audit log em cada transição. Quem emitiu, quem cancelou, quem marcou como consumido. Esse histórico não é para você — é para seu contador, e em casos raros, para um juiz.
Como funciona no INITE Travel
Acabamos de subir isso na Phase 10. Cada voucher recebe um código único tipo V-2026-0042 (sequencial por empresa) e um qrToken cryptorandom (192 bits). PDFs renderizam via @react-pdf/renderer, o QR é gerado pelo pacote npm qrcode como PNG dataURL embutido direto no documento.
O endpoint público /api/vouchers/verify/[qrToken] devolve um JSON com status e credenciais básicas, sem auth. O fornecedor escaneia — vê a resposta. Sem cadastro, sem app.
O PDF também pode ser puxado pelo mesmo token: ?token=qrToken em vez de ?companyId=.... Assim você encaminha o voucher para o cliente por WhatsApp / Telegram / email, e ele abre o PDF sem precisar logar no back-office.
Bônus: geração em massa. Um clique no cadastro da reserva, e o sistema percorre o itinerário inteiro e cria um voucher draft por serviço (transfer, hotel, guia, atividade). Idempotente: clicar duas vezes não cria duplicata.
Se você ainda não tem isso — conselho principal: até um QR-voucher caseiro apontando para uma página HTML estática de status já te dá 80% do benefício de um sistema completo. Uma hora de trabalho, e seus fornecedores param de te ligar.