Como Validar Chave de Acesso NF-e em C#

Validação de chaves de Nota Fiscal Eletrônica (NF-e) em C# (.NET).

Introdução

Para aplicações .NET que lidam com documentos fiscais, validar a chave de acesso da NF-e é essencial. Este guia mostra como implementar a validação do DV.

O Algoritmo

Utiliza-se o algoritmo Módulo 11 com pesos de 2 a 9 sobre os 43 primeiros dígitos da chave para calcular o dígito verificador.

Implementação em Csharp

nfe-generator.jscsharp
public static bool ValidateNfeKey(string key)
{
    if (string.IsNullOrEmpty(key) || key.Length != 44 || !key.All(char.IsDigit))
        return false;

    string baseKey = key.Substring(0, 43);
    int[] weights = { 2, 3, 4, 5, 6, 7, 8, 9 };
    int total = 0;
    int weightIndex = 0;

    for (int i = baseKey.Length - 1; i >= 0; i--)
    {
        total += (int)char.GetNumericValue(baseKey[i]) * weights[weightIndex];
        weightIndex = (weightIndex + 1) % 8;
    }

    int remainder = total % 11;
    int dv = (remainder < 2) ? 0 : 11 - remainder;

    return (int)char.GetNumericValue(key[43]) == dv;
}

A função verifica se a string é nula, tem tamanho incorreto ou caracteres não numéricos. O cálculo do DV é feito iterando a chave de trás para frente com os pesos apropriados.

Não quer escrever código?

Use nossa ferramenta online gratuita para processar NFE-GENERATOR instantaneamente. Perfeito para testes rápidos.

Usar Ferramenta de NFE-GENERATOR Online