VerifAI Smart OCR
Análise com IA de documentos genéricos brasileiros que combina OCR (extração de texto) com um modelo generativo que classifica o documento, extrai campos estruturados e alimenta regras de validação dedicadas. O serviço foi projetado para documentos que o padrão OCR de Documentos não cobre (comprovante de residência, comprovante de renda, contrato social, procuração e documentos arbitrários) e é o único serviço no estilo OCR que expõe regras de validação prontas para uso.
Seção: smartOcr
Arquivos obrigatórios: qualquer arquivo de documento (application/pdf, image/png, image/jpeg, image/bmp, image/webp, image/heic, image/heif).
Parâmetros da requisição
Quando o serviço está habilitado, três campos opcionais podem ser passados dentro do atributos objeto de POST /transactions. Eles são encaminhados às regras de validação do Smart OCR; a extração em si ocorre independentemente desses valores.
attributes.holderName
string
Titular do documento
Nome esperado do titular do documento. Comparado (sem diferenciar maiúsculas/minúsculas, sem diferenciar acentos, correspondência por substring) com o nome do titular extraído do documento (customerName, employeeName, taxpayerName, shareholderName1, etc., dependendo da classe do documento).
attributes.holderCpf
string (apenas dígitos, 11 caracteres)
Titular do documento
CPF esperado do titular do documento. Comparado (somente dígitos) com o CPF extraído do documento (customerPersonalTaxId, employeePersonalTaxId, taxpayerPersonalTaxId, shareholderPersonalTaxId1). Quando omitido, recorre a attributes.cpf.
attributes.analysisDate
string (YYYY-MM-DD)
Validade do documento
Data de referência usada para calcular a idade do documento. O padrão é a data da requisição quando omitida. Documentos com data de emissão futura em relação a esse valor são sempre considerados inválidos.
Exemplo de requisição:
{
"templateId": "your_template_id",
"attributes": {
"cpf": "12345678901",
"holderName": "Maria Silva Santos",
"holderCpf": "12345678901",
"analysisDate": "2025-08-15"
},
"files": [{ "data": "https://example.com/proof-of-residence.pdf" }]
}PDFs protegidos por senha
Quando um PDF requer senha para ser aberto, envie a senha no campo filePassword do mesmo item em files. A senha é usada apenas para abrir o arquivo para processamento.
files[].filePassword
string
Senha necessária para abrir o PDF. Opcional; envie-a apenas para arquivos protegidos por senha.
filePassword só é considerada para arquivos enviados com "type": "ATTACHMENTS". Cada arquivo carrega sua própria senha, portanto uma requisição pode misturar arquivos protegidos e não protegidos. Quando um PDF protegido por senha é enviado sem filePassword, ou com uma incorreta, o arquivo não pode ser processado.
Exemplo de requisição com um PDF protegido por senha:
Classificação de documentos
O Smart OCR classifica o documento enviado em uma das classes suportadas antes de extrair campos estruturados. A classificação combina recursos de texto (OCR) e visuais (o modelo generativo), portanto cada documento é processado apenas com o esquema relevante para sua classe.
PROOF_OF_RESIDENCE
—
Contas de consumo (energia, água, gás), faturas de telecom, extratos bancários, boletos de condomínio.
PROOF_OF_INCOME
—
Holerites/contracheques, cartas de emprego com renda, extratos de benefícios previdenciários.
PROOF_OF_INCOME
INCOME_TAX_RETURN
Recibos e declarações de entrega da declaração de imposto de renda (DIRPF / Recibo de Entrega).
SOCIAL_CONTRACT
—
Contratos sociais de empresas, estatutos sociais e alterações consolidadas.
POWER_OF_ATTORNEY
—
Procurações públicas, privadas e digitais.
GENERIC
—
Documentos genéricos que não correspondem às categorias acima (notas fiscais, contratos, declarações).
O resultado da classificação e a subclasse (quando aplicável) são retornados dentro da smartOcr seção junto com os campos extraídos, para que os consumidores posteriores possam decidir como interpretar o payload.
Atributos específicos (PROOF_OF_RESIDENCE)
relatedMonth
Inteiro
Mês de referência do comprovante de residência (1-12, sem zero à esquerda).
relatedYear
Inteiro
Ano de referência do comprovante de residência (4 dígitos).
issueDate
String
Data de emissão do documento (DD/MM/AAAA).
dueDate
String
Data de vencimento do documento (DD/MM/AAAA).
companyName
String
Nome legal/fantasia da empresa emissora (Razão Social).
companyBusinessTaxId
String
CNPJ da empresa emissora (mantidos caracteres de formatação e máscara).
companyAddress
String
Endereço da empresa emissora.
customerName
String
Nome completo do titular do documento.
customerPersonalTaxId
String
CPF do titular do documento (mantidos caracteres de formatação e máscara).
customerBusinessTaxId
String
CNPJ do titular do documento, quando aplicável.
customerCompleteAddress
String
Endereço completo do titular como impresso no documento.
customerAddressStreet
String
Componente de rua do endereço do titular.
customerAddressNumber
String
Componente número do endereço do titular.
customerAddressNeighborhood
String
Componente bairro do endereço do titular.
customerAddressCity
String
Componente cidade do endereço do titular.
customerAddressState
String
Componente estado brasileiro (UF) do endereço do titular.
customerAddressPostalCode
String
Componente CEP do endereço do titular.
customerAddressExtraInfo
String
Informações extras/complemento do endereço.
digitableLine
String
Linha digitável do boleto como impressa no documento, somente dígitos: 47 dígitos para boleto bancário, 48 para boleto de cobrança. Retornada como lida — os valores codificados são derivados do código de barras, não deste campo.
amount
Ponto flutuante
Valor total a ser pago, como impresso no documento. Presente quando o documento exibe um valor.
bankCode
String
Código do banco emissor como impresso no cabeçalho do boleto. Presente apenas em boletos bancários.
barcode
String
Código de barras do boleto, decodificado das barras impressas: 44 dígitos. Presente quando o documento é um boleto e as barras puderam ser lidas.
barcodeAmount
String
Valor codificado no código de barras, em centavos. Omitido quando o boleto traz um valor de referência em vez de um valor efetivo.
barcodeAmountFormatted
String
Mesmo valor em notação decimal, sem símbolo de moeda.
barcodeDueDate
String
Data de vencimento codificada no código de barras (DD/MM/AAAA). Apenas boletos bancários — boletos de cobrança não carregam uma data de vencimento no layout.
barcodeBankCode
String
Código do banco codificado no código de barras. Apenas boletos bancários.
Regra de validação
Comportamento para PROOF_OF_RESIDENCE
Validade do documento
Usa issueDate (ou relatedMonth + relatedYear quando a data de emissão está ausente) comparado a attributes.analysisDate. A janela padrão de expiração é de 180 dias; pode ser personalizada no modelo via documentTypeRules (maxDays, maxMonths, lastMonth, lastYear).
Titular do documento
Compara attributes.holderName com customerName (substring, sem diferenciar caixa/acentos) e/ou attributes.holderCpf (ou attributes.cpf) com customerPersonalTaxId (somente dígitos). Pelo menos uma correspondência torna a regra válida.
Campos obrigatórios
Valida que cada termo configurado no modelo (requiredTerms) esteja presente na extração.
Completude do endereço
Valida cada componente individual (customerAddressStreet, customerAddressNumber, customerAddressPostalCode, customerAddressNeighborhood, customerAddressCity). Todos os cinco devem estar presentes e não vazios.
Código de barras existe
Verifica se o código de barras impresso pôde ser decodificado e seu dígito verificador é válido nos 44 dígitos. Um comprovante de residência sem código de barras legível não é aprovado. Exclusivo para esta classe de documento.
Código de barras corresponde
Verifica o boleto em três etapas: o código de barras é legível, seus 44 dígitos correspondem à linha digitável impressa e os valores codificados correspondem amount, dueDate e bankCode, nos campos selecionados em fieldsToCompare. Exclusivo para esta classe de documento.
Atributos específicos (PROOF_OF_INCOME)
relatedMonth
Inteiro
Mês de referência (1-12).
relatedYear
Inteiro
Ano de referência (4 dígitos).
companyName
String
Nome legal/fantasia do empregador (Razão Social).
companyBusinessTaxId
String
CNPJ do empregador.
companyCompleteAddress
String
Endereço completo do empregador.
companyAddressStreet
String
Componente rua do empregador.
companyAddressNumber
String
Componente número do empregador.
companyAddressNeighborhood
String
Componente bairro do empregador.
companyAddressCity
String
Componente cidade do empregador.
companyAddressState
String
Estado brasileiro (UF) do empregador.
companyAddressPostalCode
String
CEP do empregador.
companyAddressExtraInfo
String
Informações extras do endereço do empregador.
employeeName
String
Nome completo do funcionário.
employeePersonalTaxId
String
CPF do funcionário.
employeeCompleteAddress
String
Endereço completo do funcionário.
employeeRole
String
Cargo/função do funcionário.
employeeContractType
String
Tipo de contrato (ex. Prazo indeterminado, Temporário, Prazo determinado).
employeeHireDate
String
Data de admissão (DD/MM/AAAA).
employeeEndDate
String
Data de término do contrato (vazia quando employmentStatus está Aberto).
employeeBaseIncome
Ponto flutuante
Valor da renda base (sem R$/símbolos).
employeeGrossIncome
Ponto flutuante
Valor da renda bruta.
employeeTotalDeductions
Ponto flutuante
Valor total dos descontos.
employeeNetIncome
Ponto flutuante
Renda líquida (employeeGrossIncome - employeeTotalDeductions).
employeeBankNumber
String
Código/número do banco onde o salário é pago.
employeeBankBranchNumber
String
Número da agência.
employeeBankAccountNumber
String
Número da conta.
employeeRetirementIndicative
String
Indicativo de situação de aposentadoria (ex. Aposentado, Pensão).
employmentStatus
String
Aberto (ativo) ou Encerrado (rescindido).
Regra de validação
Comportamento para PROOF_OF_INCOME
Validade do documento
Usa relatedMonth + relatedYear (fim do mês de referência) comparado a attributes.analysisDate. A janela padrão de expiração é de 180 dias; configurável no modelo.
Titular do documento
Compara attributes.holderName com employeeName (substring, sem diferenciar caixa/acentos) e/ou attributes.holderCpf (reserva attributes.cpf) com employeePersonalTaxId (somente dígitos).
Campos obrigatórios
Valida que cada termo configurado em requiredTerms esteja presente.
Completude do endereço
Valida o funcionário endereço (employeeCompleteAddress). Quando o endereço do empregado não é extraído, o endereço da empresa é usado e um aviso é adicionado.
Atributos específicos (PROOF_OF_INCOME · INCOME_TAX_RETURN)
Quando o documento é classificado como PROOF_OF_INCOME com subClass = INCOME_TAX_RETURN (Recibo de Entrega da Declaração de Imposto de Renda), um conjunto diferente de campos é extraído.
anoFiscal
Inteiro
Ano fiscal da declaração (ex. 2024).
anoCalendario
Inteiro
Ano-calendário da renda informada (ex. 2023).
tipoContribuinte
String
Tipo de contribuinte (ex. Titular, Dependente).
taxpayerName
String
Nome completo do contribuinte.
taxpayerPersonalTaxId
String
CPF do contribuinte.
cnpjDoContribuinte
String
CNPJ do contribuinte quando a declaração pertence a uma pessoa jurídica.
dataDeNascimentoDoContribuinte
String
Data de nascimento do contribuinte (DD/MM/AAAA).
enderecoCompletoDoContribuinte
String
Endereço completo do contribuinte.
emailDoContribuinte
String
E-mail do contribuinte, quando presente.
naturezaDaAtividadeDoContribuinte
String
Natureza da atividade (ex. Empregado, Autônomo).
ocupacaoPrincipalDoContribuinte
String
Principal função/ocupação do contribuinte.
rendaTributavelTotalDoContribuinte
Ponto flutuante
Renda tributável total.
rendaNaoTributavelTotalDoContribuinte
Ponto flutuante
Renda não tributável total.
rendaTributavelExclusivaDoContribuinte
Ponto flutuante
Renda tributável exclusiva.
rendaMensalCalculadaDoContribuinte
Ponto flutuante
Renda mensal média calculada.
Regra de validação
Comportamento para INCOME_TAX_RETURN
Validade do documento
Usa o fim de anoFiscal (ou anoCalendario quando o ano fiscal está ausente) comparado com attributes.analysisDate. A janela de expiração padrão é de 365 dias para declarações de imposto de renda; configurável no template.
Titular do documento
Compara attributes.holderName com taxpayerName e/ou attributes.holderCpf (reserva attributes.cpf) com taxpayerPersonalTaxId.
Campos obrigatórios
Valida o configurado requiredTerms.
Completude do endereço
Valida enderecoCompletoDoContribuinte como uma única string (não componente por componente).
Atributos específicos (SOCIAL_CONTRACT)
companyName
String
Nome empresarial/fantasia da empresa (Razão Social).
companyBusinessTaxId
String
CNPJ da matriz.
cnaeDaEmpresa
Array de strings
Códigos CNAE da atividade principal e descrições ("o objeto da sociedade").
tipoDaEmpresa
String
Tipo da empresa (ex. Sociedade Empresária Limitada, Sociedade Simples Limitada).
companyCompleteAddress
String
Endereço completo da empresa.
companyAddressStreet
String
Componente rua da empresa.
companyAddressNumber
String
Componente número da empresa.
companyAddressNeighborhood
String
Componente bairro da empresa.
companyAddressCity
String
Componente cidade da empresa.
companyAddressState
String
UF da empresa.
companyAddressPostalCode
String
CEP da empresa.
companyAddressExtraInfo
String
Informações complementares do endereço da empresa.
dataDeConstituicaoDaEmpresa
String
Data de constituição da empresa (DD/MM/AAAA).
empresaAtiva
Booleano
true quando o documento indica duração indeterminada (sem data de expiração).
totalDeQuotasDaEmpresa
Inteiro
Quantidade total de quotas.
moedaDasQuotasDaEmpresa
String
Moeda das quotas (ex. BRL).
valorDaQuotaDaEmpresa
Ponto flutuante
Valor de uma quota.
nomeDoSocio{N}
String
Nome do sócio N (1, 2, 3...).
cpfDoSocio{N}
String
CPF do sócio N (quando o sócio é uma pessoa física).
funcaoDoSocio{N}
String
Função do sócio N (ex. Sócio Administrador, Procurador, Representante Legal).
poderesDoSocio{N}
Array de strings
Poderes concedidos ao sócio N.
podeAssinarSozinho{N}
Booleano
true somente quando o documento declarar explicitamente que o sócio pode assinar sozinho.
descricaoDeAssinaturaSozinho{N}
String
Descrição textual da regra de assinatura.
restricoesDoSocio{N}
Array de strings
Restrições aplicáveis ao sócio N.
quotasDoSocio{N}
Inteiro
Quotas de propriedade do sócio N.
cnpjDoSocio{N}
String
CNPJ do sócio N (quando o sócio for uma empresa).
enderecoDoSocio{N}
String
Endereço do sócio N (quando o sócio for uma empresa).
dataInicioDoMandatoDoSocio{N}
String
Data de início do mandato (quando o sócio for uma empresa).
dataFimDoMandatoDoSocio{N}
String
Data de fim do mandato (quando o sócio for uma empresa).
tipoDeAssinaturaDoSocio{N}
String
assinatura_digital ou assinatura_fisica.
assinaturaDoSocioEncontrada{N}
Booleano
true quando a assinatura foi encontrada no documento.
Regra de validação
Comportamento para SOCIAL_CONTRACT
Validade do documento
Usa dataDeConstituicaoDaEmpresa comparado com attributes.analysisDate. A janela padrão é mais ampla (configurável). Documentos cuja data de constituição está no futuro são sempre inválidos.
Titular do documento
Compara attributes.holderName com shareholderName1 (e/ou a cada nomeDoSocio{N}) e attributes.holderCpf (reserva attributes.cpf) com cpfDoSocio{N}.
Campos obrigatórios
Valida o configurado requiredTerms (uso típico: garantir que os poderes do sócio, as quotas e a data de constituição estejam presentes).
Completude do endereço
Valida o sede endereço (companyCompleteAddress). Quando apenas endereços de filiais são extraídos, um aviso informativo é adicionado.
Atributos específicos (PROCURAÇÃO)
companyName
String
Nome da empresa outorgante (quando aplicável).
companyBusinessTaxId
String
CNPJ da empresa outorgante.
companyCompleteAddress
String
Endereço completo da empresa.
companyAddressStreet
String
Componente rua da empresa.
companyAddressNumber
String
Componente número da empresa.
companyAddressNeighborhood
String
Componente bairro da empresa.
companyAddressCity
String
Componente cidade da empresa.
companyAddressState
String
UF da empresa.
companyAddressPostalCode
String
CEP da empresa.
companyAddressExtraInfo
String
Informações complementares do endereço da empresa.
nomeDoSocio{N}
String
Nome completo do outorgante.
cpfDoSocio{N}
String
CPF do outorgante.
funcaoDoSocio{N}
String
Função do outorgante (ex. Outorgante, Sócio Administrador).
poderesDoSocio{N}
Array de strings
Poderes concedidos pelo outorgante N.
podeAssinarSozinho{N}
Booleano
Se o outorgante N pode assinar sozinho.
nomeDoOutorgado{N}
String
Nome completo do outorgado.
outorgadoAssinaSozinho
Booleano
true quando o outorgado pode assinar sozinho após a procuração.
observacaoDeAssinatura
String
Observações sobre a regra de assinatura.
poderesConcedidos
Array de strings
Lista consolidada dos poderes concedidos na procuração.
tipo
String
público, privado ou inválido.
temDataDeExpiração
Booleano
true quando a procuração tem data de expiração.
expirationDate
String
Data de expiração (vazia quando temDataDeExpiração está false).
temSelosDeCartório
Booleano
true quando ao menos um selo de cartório foi encontrado.
formaDeAutenticacaoDoSelo{N}
String
Forma de autenticação do selo N (Assinado digitalmente via GOV.BR, Reconhecimento de Firma, etc.).
nomeNoSelo{N}
String
Nome no selo N (quando legível).
seloCartorialValido{N}
Booleano
Se o selo N é considerado válido.
tipoDoSeloCartorial{N}
String
assinatura_digital ou assinatura_manuscrita.
válido
Booleano
Decisão final de validade calculada pelo modelo.
decisaoTextual
String
Explicação textual de válido.
Regra de validação
Comportamento para POWER_OF_ATTORNEY
Validade do documento
Usa expirationDate quando hasExpirationDate = true; caso contrário, compara attributes.analysisDate (ou a data da solicitação, quando omitida) em relação à janela de validade da procuração. Documentos vencidos expirationDate são sempre inválidos.
Titular do documento
Compara attributes.holderName com nomeDoSocio{N} (outorgantes) e attributes.holderCpf (reserva attributes.cpf) com cpfDoSocio{N}.
Campos obrigatórios
Valida o configurado requiredTerms (uso típico: garantir que poderes como Abrir conta bancária estejam explicitamente listados).
Completude do endereço
Valida companyCompleteAddress como uma única string.
Atributos específicos (GENERIC)
Quando o documento não corresponde a nenhuma das categorias acima, o Smart OCR recorre ao GENERIC esquema com campos baseados em função. Os nomes dos campos seguem o padrão {role}{Property} (ex. nomeDoPagador, cnpjDoRecebedor).
issueDate
String
Data de emissão do documento, quando presente.
dueDate
String
Data de vencimento do documento, quando presente.
nomeDoPagador
String
Nome completo do pagador/devedor.
cpfDoPagador
String
CPF do pagador.
cnpjDoPagador
String
CNPJ do pagador.
nomeDoRecebedor
String
Nome completo do recebedor/credor.
cpfDoRecebedor
String
CPF do recebedor.
cnpjDoRecebedor
String
CNPJ do recebedor.
companyName
String
Nome da empresa, quando aplicável.
companyBusinessTaxId
String
CNPJ da empresa, quando aplicável.
companyAddress
String
Endereço da empresa, quando aplicável.
companyCompleteAddress
String
Endereço completo da empresa, quando aplicável.
valorLiquido
Ponto flutuante
Valor monetário líquido, quando presente.
valorBruto
Ponto flutuante
Valor monetário bruto, quando presente.
Regra de validação
Comportamento para GENERIC
Validade do documento
Usa issueDate (ou dueDate como alternativa) comparado com attributes.analysisDate. Documentos que não tenham nenhum dos dois não podem ser validados e permanecem PENDENTE.
Titular do documento
Compara attributes.holderName com nomeDoPagador/nomeDoRecebedor e attributes.holderCpf (reserva attributes.cpf) com cpfDoPagador/cpfDoRecebedor.
Campos obrigatórios
Valida o configurado requiredTerms (uso típico: garantir que cláusulas contratuais estejam presentes).
Completude do endereço
Valida companyCompleteAddress como uma única string quando presente.
Regras de validação
O smart_ocr as regras abaixo podem ser ativadas no modelo de transação. As descrições abaixo documentam o comportamento exposto publicamente; controles de configuração apenas do template (como documentTypeRules ou requiredTerms) são gerenciados no Trust.
verifai_smart_ocr_document_validity
Validade do documento
attributes.analysisDate
VÁLIDO, INVÁLIDO, PENDENTE
verifai_smart_ocr_document_holder
Titular do documento
attributes.holderName, attributes.holderCpf (reserva attributes.cpf)
VÁLIDO, INVÁLIDO, PENDENTE
verifai_smart_ocr_required_fields
Campos obrigatórios
— (configurado via requiredTerms no template)
VÁLIDO, INVÁLIDO, PENDENTE
verifai_smart_ocr_address_completeness
Completude do endereço
—
VÁLIDO, INVÁLIDO, PENDENTE
smart_ocr_proof_of_residence_barcode_exists
Código de barras no comprovante de residência
—
VÁLIDO, INVÁLIDO, PENDENTE
smart_ocr_proof_of_residence_barcode_match
Comparação do código de barras do comprovante de residência
— (configurado via fieldsToCompare no template)
VÁLIDO, INVÁLIDO, PENDENTE
Validade do documento (verifai_smart_ocr_document_validity)
Verifica se o documento foi emitido dentro da janela máxima configurada. A regra usa a data de emissão do documento, a data de vencimento ou o mês/ano de referência (o que estiver disponível para a classe do documento) para calcular quantos dias se passaram em relação à dataDeAnalise fornecida na solicitação — ou a data da solicitação quando omitida. A janela padrão é 180 dias e pode ser personalizada por classe de documento via documentTypeRules no template (maxDays, maxMonths, lastMonth, lastYear). Documentos cuja data esteja no futuro em relação a dataDeAnalise são sempre considerados inválidos.
Titular do documento (verifai_smart_ocr_document_holder)
Verifica se o documento pertence ao titular esperado. A regra compara o nome do titular e/ou CPF extraídos do documento com os valores informados em attributes.holderName e attributes.holderCpf. A comparação de nome não diferencia maiúsculas de minúsculas nem acentos (correspondência por substring); a comparação de CPF usa apenas dígitos. Basta uma das correspondências — a regra é VÁLIDO quando pelo menos um dos valores fornecidos corresponde ao campo correspondente no documento.
Campos obrigatórios (verifai_smart_ocr_required_fields)
Verifica se os termos listados em requiredTerms (configurados por classe de documento no template) estão todos presentes na extração. Um termo é considerado encontrado quando pelo menos um campo extraído tem correspondência de rótulo/metadados e um valor não vazio.
Completude do endereço (verifai_smart_ocr_address_completeness)
Verifica se o endereço do documento está completo (logradouro, número, CEP, bairro e cidade). PROOF_OF_RESIDENCE valida cada componente individualmente usando os campos dedicados customerAddress* , enquanto outras classes de documento validam companyCompleteAddress / enderecoCompletoDoContribuinte como uma única string. Quando PROOF_OF_INCOME ou SOCIAL_CONTRACT documentos extraem apenas endereços secundários (endereço do funcionário, endereço da filial), um aviso informativo é adicionado à saída da regra sem alterar seu status.
Código de barras no comprovante de residência (smart_ocr_proof_of_residence_barcode_exists)
Verifica se o comprovante de residência é uma fatura, decodificando o código de barras impresso e conferindo o dígito verificador de seus 44 dígitos — o que comprova que a leitura está correta.
Um comprovante de residência cujo código de barras não possa ser lido é não aprovado. O código de barras é a fonte da verdade e a linha digitável impressa não o substitui.
Esta regra se aplica somente a documentos classificados como PROOF_OF_RESIDENCE. Um documento de qualquer outra classe não é avaliado e a regra permanece VÁLIDO.
Comparação do código de barras do comprovante de residência (smart_ocr_proof_of_residence_barcode_match)
Verifica a fatura em relação a ela mesma, em três etapas. A verificação para na primeira etapa que falhar, porque depois de uma falha a seguinte já não diz mais nada.
1
o código de barras é legível e seu dígito verificador confere
o código de barras não pôde ser lido
2
os 44 dígitos correspondem à linha digitável impressa
o código de barras ou a linha digitável foram adulterados
3
os valores codificados correspondem aos campos lidos no corpo do documento
o código de barras ou o corpo da fatura foi adulterado
A Etapa 3 abrange os campos selecionados em fieldsToCompare:
VALOR
o valor codificado no código de barras em relação a amount
DATA_DE_VENCIMENTO
a data de vencimento codificada no código de barras em relação a dueDate
BANCO
o código do banco codificado no código de barras em relação a bankCode
Um campo que o formato da fatura não carrega é ignorado, e os demais campos selecionados continuam sendo comparados: uma fatura de arrecadação — o formato usual em uma conta de serviço público — não carrega nem data de vencimento nem código do banco. Um campo que deveria existir e não foi lido falha na regra, assim como uma divergência.
Sem fieldsToCompare configurado, a regra permanece PENDENTE. Assim como a regra acima, ela se aplica apenas a PROOF_OF_RESIDENCE.
Para a configuração de quais regras estão habilitadas por template e de como availableActions são interpretadas, consulte Regras de validação.
Atualizado

