Validador de TicketBAI (Espanha)
Valide a estrutura, formatação e dígitos de controle de códigos TicketBAI e URLs de QR Code.
Como funciona a validação?
O TicketBAI é o sistema tributário antifraude obrigatório instituído pelo Governo Basco e pelas Haciendas Forales de Álava, Bizkaia (integrado ao Batuz) e Gipuzkoa.
Cada fatura gera um arquivo XML assinado digitalmente, encadeado à fatura anterior, com um código TBAI único de 37 caracteres (TBAI-[NIF]-[Data]-[CRC8]-[DV]) e um QR Code de verificação.
Anatomia & Estrutura do Código TicketBAI (País Basco)
O código identificador TicketBAI (TBAI) é composto por 5 blocos alfanuméricos normatizados pelas Haciendas Forales:
| Posição | Campo | Tamanho | Significado Foral | Exemplo |
|---|---|---|---|---|
| Bloco 1 | Prefixo | 4 letras | Prefixo fixo regulamentar 'TBAI'. | TBAI |
| Bloco 2 | NIF do Emissor | 9 chars | NIF da empresa com código provincial foral (48=Bizkaia, 20=Gipuzkoa, 01=Álava). | B48159227 |
| Bloco 3 | Data de Emissão | 6 dígitos | Data de expedição da fatura no formato oficial DDMMAA. | 240826 |
| Bloco 4 | Assinatura CRC | 8 chars hex | Primeiros 8 caracteres hexadecimais da assinatura eletrônica do software homologado. | D156961E |
| Bloco 5 | Dígito de Controle | 2 dígitos | Checksum calculado por Módulo 97 sobre a representação ASCII da assinatura. | 65 |
Algoritmo de Cálculo do Dígito de Controle TicketBAI (Módulo 97)
O bloco final de 2 dígitos do código TicketBAI é verificado através de Módulo 97:
DV = (Σ ASCII(CRC8[i])) % 97
- 1. Extração do Bloco de Assinatura: isolam-se os 8 caracteres hexadecimais da assinatura (Bloco 4).
- 2. Somatório de Bytes ASCII: calcula-se a soma dos valores ordinais ASCII de cada um dos 8 caracteres.
- 3. Resto da Divisão por 97: divide-se a soma por 97 e obtém-se o resto.
- 4. Formatação de 2 Dígitos: o resto formatado com zero à esquerda (00 a 96) forma o dígito de controle.