UPI
UPI (Unified Payments Interface) é o trilho de pagamentos instantâneos da Índia, operado pelo National Payments Corporation of India (NPCI). Dois formatos QR coexistem: o esquema URI upi://pay simples (simples, funciona em todo app UPI) e o NPCI BR Code, um subconjunto EMVCo MPM com Informação de Conta do Comerciante (tag 26) carregando o VPA. UPI processou mais de 11 bilhões de transações por mês em 2024; todos os apps bancários e de pagamento indianos o suportam.
Esquema URI:
upi://pay?pa=VPA&pn=NAME&am=AMT&cu=INR, o formato QR UPI mais simples. Funciona em todos os apps UPI. Especificação pai:EMVCo MPM v1.1. UPI reserva a tag de conta do comerciante
26 no formato BR Code. Regulador:Reserve Bank of India (RBI), emite circulares UPI; NPCI é o operador.
Dois formatos QR
- Esquema URI upi://. Intenção de pagamento codificada em URL simples. Usado por todos os QR UPI voltados ao consumidor (adesivos Paytm/Google Pay/PhonePe em pequenos comerciantes). Legível por todos os apps UPI.
- NPCI BR Code (EMVCo MPM). Formato codificado TLV com tag
26para Informação de Conta do Comerciante UPI. Usado para QR unificados/interoperáveis (Bharat QR) e implantações corporativas maiores onde o QR pode carregar simultaneamente UPI + RuPay + cartões.
Parâmetros do esquema URI upi://
| Parâmetro | Nome | Obrigatório | Notas |
|---|---|---|---|
pa | Endereço do beneficiário (VPA) | Sim | Formato: user@handle. Exemplo: alice@oksbi, merchant@paytm. |
pn | Nome do beneficiário | Sim | Codificado em URL. Exibido ao pagador para confirmação. |
am | Valor | Não | String decimal: 10.00. Omitir para QR estáticos de "insira o valor". |
cu | Moeda | Não | Sempre INR. UPI é somente INR por regulamentação. |
tn | Nota de transação | Não | Memo de texto livre exibido ao pagador, máx. 50 chars. |
tr | Referência de transação | Não | ID fornecido pelo comerciante para conciliação. |
mc | Código de categoria do comerciante | Não | MCC ISO 18245 de 4 dígitos. Obrigatório para contas de comerciante, opcional para P2P. |
tid | ID do terminal | Não | Identificador do terminal POS. |
url | URL da fatura/produto | Não | Deep link que o pagador pode abrir após o pagamento para buscar o recibo. |
NPCI BR Code, estrutura da tag 26
Quando um QR unificado usa o formato BR Code em vez do simples upi://, o payload específico do UPI reside na tag 26 como um TLV aninhado:
| Sub-tag | Nome | Comprimento | Notas |
|---|---|---|---|
00 | GUI, Identificador Único Global | variável | Valor fixo upi.npci.org. Identifica o esquema como UPI. |
01 | VPA | variável | O endereço de pagamento virtual. Exemplo: merchant@oksbi. |
02 | Código do comerciante | variável | Identificador do comerciante atribuído pela NPCI para conciliação com o adquirente. |
Regras de formato VPA
- Formato:
user@handle, um nome de usuário seguido de@e um handle PSP que identifica o provedor de serviços de pagamento. - Parte do nome de usuário. 3–63 caracteres, alfanumérico mais
.,-,_. Não diferencia maiúsculas por especificação, mas alguns apps o tratam como diferenciando maiúsculas (veja armadilhas). - Parte do handle. Atribuído pelo PSP. Handles comuns:
@oksbi(SBI),@okicici(ICICI),@okhdfcbank(HDFC),@paytm(Paytm),@ybl(PhonePe → Yes Bank),@ibl(PhonePe → IDFC FIRST),@apl(Amazon Pay via Axis). - Comprimento total. Máx. ~50 caracteres incluindo o
@. - Resolução. Ao escanear, o app do pagador resolve VPA → conta bancária via NPCI. A resolução retorna o nome do titular da conta registrado, que o app do pagador exibe para confirmação.
Vetor de teste canônico, esquema URI upi://
VPA merchant@oksbi, nome TEST MERCHANT, valor fixo ₹10.00, com referência INV-2026-0001:
upi://pay?pa=merchant@oksbi&pn=TEST%20MERCHANT&am=10.00&cu=INR&tn=Invoice%20INV-2026-0001&tr=INV-2026-0001Adesivo estático mínimo "insira o valor":
upi://pay?pa=merchant@oksbi&pn=TEST%20MERCHANT&cu=INRArmadilhas comuns
- Sensibilidade a maiúsculas/minúsculas de VPA na prática. A especificação NPCI diz que VPA não diferencia maiúsculas. Na prática, alguns apps (PhonePe antigo, Paytm) falham com VPAs em maiúsculas mistas. Emita sempre em minúsculas:
alice@oksbinãoAlice@OKSBI. - Codificação URL do nome do beneficiário. O parâmetro
pnaceita espaços e caracteres acentuados, que devem estar codificados em porcentagem.TEST MERCHANT→TEST%20MERCHANT. Apps que não decodificam corretamente mostram nomes corrompidos na tela de confirmação. - A moeda deve ser INR. UPI é somente INR por regulamentação RBI. Qualquer outro valor de
cué silenciosamente descartado ou rejeitado. Receptores internacionais requerem conformidade com o Esquema de Remessas Liberalizadas do RBI e não usam UPI. - O valor deve ser positivo.
am=0ouam=-5é rejeitado. Para QRs de "insira o valor", omita o parâmetroamcompletamente. - Símbolo ₹ no valor. Nunca inclua o símbolo da rúpia ou "Rs." no valor de
am.am=10.00, nãoam=₹10.00. - Fraude por sobreposição no PDV. Adesivos UPI físicos são um vetor de fraude bem documentado na Índia. Um atacante cola um adesivo com seu próprio VPA sobre o do comerciante. As circulares anti-fraude do RBI exigem que os comerciantes exibam o VPA esperado como texto impresso ao lado do QR para que os pagadores possam verificar.
- GST + analogia 1099-K. Os recibos comerciais UPI contam para o arquivamento do GST. Comerciantes com recibos agregados superiores a ₹20 lakh/ano devem se registrar no GST; os que superam ₹10 crore devem gerar e-faturas no Portal de Registro de Faturas do GST. Os dados de transação UPI são compartilhados com a Rede GST (GSTN) para conciliação.
- Solicitação de investimento restrita. SEBI proíbe UPI para solicitação de valores mobiliários não registrados. QRs UPI que promovem "retornos garantidos", pré-vendas de tokens ou esquemas MLM acionam a aplicação da SEBI.
- Regras de Proteção ao Consumidor (E-Commerce). Um QR UPI impresso que aceita pagamentos é uma oferta comercial sob as Regras de E-Commerce 2020. O comerciante deve exibir a política de reembolso ao lado do QR. Os pagamentos UPI são imediatamente finais; os reembolsos devem ser iniciados como um UPI push separado do comerciante de volta ao pagador.
Compatibilidade de apps UPI
| App | upi:// URI | NPCI BR Code | Notas |
|---|---|---|---|
| Google Pay (Tez) | Sim | Sim | Maior app UPI por volume. |
| PhonePe | Sim | Sim | Suporte UPI + BR Code completo. |
| Paytm | Sim | Sim | Suporte UPI completo + fallback de carteira Paytm própria. |
| Amazon Pay | Sim | Sim | Via Axis Bank (handle @apl). |
| BHIM | Sim | Sim | Implementação de referência do NPCI. Base segura para testes. |
| Todos os grandes apps bancários (SBI YONO, ICICI iMobile, HDFC PayZapp, Axis Mobile) | Sim | Sim | Todos os bancos cadastrados no UPI incluem suporte UPI em seu app de consumo. |
| Câmera iOS/Android genérica | Parcial | Não | Câmeras nativas analisam o esquema upi:// e oferecem "Abrir no app UPI" em dispositivos mais novos, mas não renderizam BR Code TLV diretamente. |
Veja também
- /upi-qr-code/, o gerador UPI com validação VPA e codificação
upi://ao vivo. - /standards/emvco/, a especificação pai EMVCo MPM.
- /standards/pix/, PIX Brasil, o esquema irmão que também usa a tag 26 da EMVCo.
- /standards/, voltar ao índice de padrões.