Swiss QR-bill
O Swiss QR-bill substituiu os boletos de pagamento suíços laranja e vermelho em julho de 2020. É um payload ISO 20022 Customer Credit Transfer Initiation (pain.001) renderizado como QR com uma sobreposição obrigatória de cruz suíça no centro. Todo banco suíço o aceita; nenhum banco suíço aceita nada diferente.
Base ISO: ISO 20022
pain.001 Customer Credit Transfer Initiation. Obrigatório desde: 1º de julho de 2020. Os boletos laranja/vermelho legados foram eliminados em 30 de setembro de 2022.
O que é
O payload é uma lista de 32 campos separados por quebras de linha (CRLF) organizados em sete blocos:
QRType → Sempre "SPC" Version → 0200 (v2.3) Coding → 1 (Latin-1) [Informações do credor] ← 7 campos (IBAN + endereço) [Credor final] ← 7 campos (opcional, geralmente vazio) [Informações do valor de pagamento]← 3 campos (valor, moeda, data de vencimento) [Devedor final] ← 7 campos (opcional) [Referência de pagamento] ← 2 campos (tipo de referência + referência) [Informações adicionais] ← 2 campos (mensagem não estruturada + bill info) [Procedimentos alternativos] ← 2 campos (opcional, raramente usado)
O QR resultante fica dentro de um bloco de "Payment part" no terço inferior da fatura. Todos os apps bancários suíços (UBS, ZKB, PostFinance, Raiffeisen, Neon, Yuh, Revolut CH) o leem nativamente.
QR-IBAN vs IBAN regular
Um "QR-IBAN" é um IBAN suíço especial onde o intervalo do código bancário de 5 dígitos é 30000–31999. QR-IBANs requerem uma referência QR estruturada (QRR, 27 dígitos, verificação mod-10). IBANs suíços regulares aceitam referência de credor (SCOR, RFC 8905) ou sem referência.
| Tipo de IBAN do credor | Tipos de referência válidos | Notas |
|---|---|---|
| QR-IBAN (código bancário 30000–31999) | QRR (27 dígitos, mod-10) | Obrigatório. SCOR e NON são inválidos. |
| IBAN regular (CH ou LI) | SCOR ou NON | QRR é inválido, somente QR-IBAN. |
Vetores de teste canônicos
| Caso | Entradas | Tipo de referência |
|---|---|---|
| Mínimo (IBAN regular, sem valor, sem referência) | iban=CH9300762011623852957 | NON |
| IBAN regular com valor + mensagem não estruturada | (igual ao acima)amount=100.00 | NON |
| QR-IBAN com referência QRR | iban=CH4431999123000889012 | QRR |
| IBAN do Liechtenstein | iban=LI0508800000021904015 | NON |
Validador de IBAN suíço ao vivo
O validador abaixo verifica as três regras específicas da Suíça: (1) o código de país é CH ou LI, (2) o comprimento é exatamente 21, (3) o checksum ISO 7064 mod-97 é aprovado. A entrada colada é normalizada (maiúsculas, espaços removidos).
Armadilhas comuns
- Tipo de referência errado para o tipo de IBAN. Um QR-IBAN com referência NON ou SCOR é rejeitado pelo banco. Um IBAN regular com referência QRR também é rejeitado. A Abundera seleciona automaticamente o tipo correto; codificadores manuais frequentemente erram aqui.
- Sobreposição da cruz suíça faltando. A especificação do QR-bill exige uma bandeira suíça de 7 mm × 7 mm (cruz branca sobre vermelho, com borda branca de 1 mm) centrada no QR. Isso não é opcional, os pipelines de OCR bancário usam isso como assinatura do QR-bill. A Abundera a sobrepõe automaticamente.
- Nível de correção de erros do módulo QR. A especificação requer ECC nível M. Níveis ECC mais altos ou mais baixos geram um QR que parece correto mas o banco rejeita.
- Comprimento do campo de endereço. Nome do credor, rua, código postal, cidade, cada um limitado a 70 caracteres Latin-1. Strings muito longas são silenciosamente truncadas por alguns codificadores, o que quebra a reconciliação.
- Apenas moeda CHF ou EUR. O QR-bill suporta apenas duas moedas. Qualquer outra moeda é rejeitada.
- Referência mod-10 vs mod-97. As referências QRR usam um checksum recursivo mod-10 (variante Luhn). Não confundir com o checksum mod-97 do IBAN. Geradores de referência feitos à mão frequentemente aplicam o Luhn incorretamente.
- Latin-1, não UTF-8. O campo
Codingé "1" = Latin-1. Caracteres não Latin-1 (ä/ö/ü sobrevivem; cirílico/chinês não) quebram alguns apps bancários mais antigos.
Compatibilidade de scanners
| Leitor | Suporte | Notas |
|---|---|---|
| UBS Mobile / PostFinance / ZKB app | Nativo | Todos os apps bancários suíços leem QR-bills nativamente. |
| Neon / Yuh / Revolut CH | Nativo | Neobancos lidam com o payload pain.001 completo. |
| Câmera iOS | Não | iOS trata um QR-bill como uma string bruta, sem análise. O usuário deve abrir um app bancário. |
| Câmera Android / Google Lens | Não | Igual, sem análise nativa. |
| OCR comercial (ex. serviços de pagamento de faturas) | Sim | Ferramentas de OCR de nível bancário leem QR-bills em pipelines de AP/AR. |
Veja também
- /swiss-qr-bill-generator/, o gerador com validação de IBAN inline.
- /standards/, voltar ao índice de padrões.
- SIX Implementation Guidelines, a especificação de referência.