BrasilNFe 2.3.9

There is a newer version of this package available.
See the version list below for details.
dotnet add package BrasilNFe --version 2.3.9
                    
NuGet\Install-Package BrasilNFe -Version 2.3.9
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="BrasilNFe" Version="2.3.9" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="BrasilNFe" Version="2.3.9" />
                    
Directory.Packages.props
<PackageReference Include="BrasilNFe" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add BrasilNFe --version 2.3.9
                    
#r "nuget: BrasilNFe, 2.3.9"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package BrasilNFe@2.3.9
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=BrasilNFe&version=2.3.9
                    
Install as a Cake Addin
#tool nuget:?package=BrasilNFe&version=2.3.9
                    
Install as a Cake Tool

Brasil NFe SDK (.NET)

NuGet .NET Framework License

SDK oficial em C# / .NET para integração com a API da Brasil NFe. Permite emitir, consultar, cancelar e gerenciar documentos fiscais eletrônicos (NF-e, NFC-e, CT-e, MDF-e, NFS-e, DC-e, NF3-e) e arquivos fiscais (SPED, Sintegra, FCI), de forma orientada a objetos com tipagem forte e serialização automática.

Equivalente em .NET aos pacotes brasilnfe (Node.js) e brasilnfe/brasilnfe-php-sdk (PHP).

Índice

Sobre a Brasil NFe

A Brasil NFe oferece uma API REST para emissão de notas fiscais e documentos eletrônicos, com foco em estabilidade, performance e conformidade com a legislação brasileira.

Recursos

O SDK cobre todos os módulos da API REST da Brasil NFe:

  • Emissão de documentos fiscais

    • NF-e (modelo 55)
    • NFC-e (modelo 65)
    • NFS-e (nota fiscal de serviço)
    • CT-e (modelo 57)
    • MDF-e (modelo 58)
    • DC-e (Declaração de Conteúdo)
    • NF3-e / NF-e de Energia (NFEnerCom)
    • Nota Fiscal Complementar
    • Envio em lote
  • Eventos

    • Cancelamento
    • Carta de Correção (CC-e)
    • Inutilização de numeração
    • Manifestação do Destinatário
    • Encerramento de MDF-e
  • Consultas

    • Status SEFAZ
    • Consulta de Cadastro (IE/CNPJ)
    • Busca de notas por período
    • Pré-visualização de DANFE
    • Cálculo de impostos
  • Arquivos fiscais

    • Download de XML e DANFE (byte[])
    • SPED Fiscal e Contribuições (individual e unificado)
    • Sintegra
    • FCI (Ficha de Conteúdo de Importação)
    • Arquivos por range de chaves
  • Gestão

    • Cadastro e edição de empresas
    • Envio e verificação de certificados digitais A1

Requisitos

  • .NET Framework 4.5.2+ (testado em 4.8)
  • Newtonsoft.Json 12.0.2 ou superior
  • Token de acesso válido do painel Brasil NFe

Instalação

Via Package Manager Console:

Install-Package BrasilNFe

Via .NET CLI:

dotnet add package BrasilNFe

Via packages.config:

<package id="BrasilNFe" version="2.3.9" targetFramework="net48" />

Configuração Inicial

A classe principal é BrasilNFe. Com um Token você já tem acesso a todos os módulos fiscais. O UserToken é opcional e só é necessário para o módulo de gestão de empresas/certificados.

using BrasilNFePack;

var token     = "SEU_TOKEN_AQUI";   // Token da empresa (obrigatório)
var userToken = "SEU_USER_TOKEN";   // Token do usuário (opcional, p/ Empresa)

var bnfe = new BrasilNFe(token, userToken);

// Por padrão o SDK aponta para https://api.brasilnfe.com.br/services/
// Para sobrescrever (ex.: ambiente interno / sandbox específico):
var bnfeCustom = new BrasilNFe(token, userToken, "https://api.brasilnfe.com.br/services/");

A definição de produção x homologação não é feita pela URL: é controlada pelo campo TipoAmbiente (1 = Produção, 2 = Homologação) de cada requisição.

Arquitetura do SDK

A instância BrasilNFe agrega cinco módulos públicos:

Módulo Propriedade Classe Responsabilidade
Nota Fiscal bnfe.NotaFiscal NotaFiscal Emissão de NF-e, NFC-e, NFS-e, CT-e, MDF-e, DC-e, NF3-e, lote e complementar
Eventos bnfe.Eventos Eventos Cancelamento, CC-e, inutilização, manifestação, encerramento de MDF-e
Consultas bnfe.Consultas Consultas Status SEFAZ, busca, cadastro, cálculo de impostos
Arquivos bnfe.Arquivos Arquivos XML, DANFE, SPED, Sintegra, FCI
Empresa bnfe.Empresa Empresa Cadastro de empresas e certificados (requer userToken)

Estrutura de diretórios:

BrasilNFePack/
├── BrasilNFe.cs            # Classe agregadora e BrasilNFeHelper
├── BrasilNFeRequest.cs     # Camada HTTP (HttpWebRequest) + headers
├── Methods/                # Módulos de alto nível
│   ├── NotaFiscal.cs
│   ├── Eventos.cs
│   ├── Consultas.cs
│   ├── Arquivos.cs
│   └── Empresa.cs
└── Models/                 # POCOs de envio e retorno
    ├── NotaFiscal/
    ├── Eventos/
    ├── Consultas/
    ├── Empresa/
    ├── Arquivos/
    └── Outros/

Guia Rápido

using BrasilNFePack;
using BrasilNFePack.Envio;

var bnfe = new BrasilNFe("SEU_TOKEN");

var req = new StatusSefazEnvio
{
    ModeloDocumento = 55,
    TipoAmbiente    = 2, // homologação
};

var resp = bnfe.Consultas.StatusSefaz(req);
Console.WriteLine(resp.StatusSefaz?.DsStatusRespostaSefaz ?? "indisponível");

Exemplos

1. Emitir NF-e (modelo 55)

using BrasilNFePack;
using BrasilNFePack.Envio;
using System.Collections.Generic;

var bnfe = new BrasilNFe("SEU_TOKEN");

var nf = new NotaFiscalEnvio
{
    TipoAmbiente     = 2,                        // 1 = Produção, 2 = Homologação
    ModeloDocumento  = 55,                       // NF-e
    Finalidade       = 1,                        // Normal
    NaturezaOperacao = "VENDA DE MERCADORIA",
    IndicadorPresenca = 1,
    ConsumidorFinal  = false,
    EnviarEmail      = true,

    Cliente = new Pessoa
    {
        CpfCnpj    = "00000000000191",
        NmCliente  = "EMPRESA EXEMPLO LTDA",
        IndicadorIe = 1, // Contribuinte ICMS
        Ie         = "123456789",
        Contato    = new Contato { Email = "financeiro@cliente.com.br" },
        Endereco   = new Endereco
        {
            Logradouro   = "Av. Industrial",
            Numero       = "500",
            Bairro       = "Distrito Industrial",
            CodMunicipio = "3550308",
            Municipio    = "São Paulo",
            Uf           = "SP",
            Cep          = "01000000",
        },
    },

    Produtos = new List<Produto>
    {
        new Produto
        {
            CodProdutoServico = "COD-100",
            NmProduto         = "PARAFUSADEIRA ELETRICA 220V",
            NCM               = "84672100",
            CFOP              = 5102,
            UnidadeComercial  = "UN",
            Quantidade        = 2,
            ValorUnitario     = 150.00m,
            ValorTotal        = 300.00m,
            OrigemProduto     = 0,
            Imposto = new Imposto
            {
                ICMS   = new ICMS   { CodSituacaoTributaria = "102", AliquotaICMS = 0 },
                PIS    = new PIS    { CodSituacaoTributaria = "99",  Aliquota     = 0 },
                COFINS = new COFINS { CodSituacaoTributaria = "99",  Aliquota     = 0 },
            },
        },
    },

    Pagamentos = new List<Pagamento>
    {
        new Pagamento { IndicadorPagamento = 0, FormaPagamento = "15", VlPago = 300.00m },
    },

    Transporte = new Transporte
    {
        ModalidadeFrete = 0, // CIF
        Volume = new Volume
        {
            QuantidadeVolume = 2,
            Especie          = "CAIXA",
            PesoBruto        = 5.500m,
            PesoLiquido      = 5.000m,
        },
    },
};

try
{
    var resp = bnfe.NotaFiscal.EnviarNotaFiscal(nf);

    if (resp.ReturnNF?.Ok == true)
    {
        Console.WriteLine("NF-e autorizada!");
        Console.WriteLine($"Chave:     {resp.ReturnNF.ChaveNF}");
        Console.WriteLine($"Protocolo: {resp.ReturnNF.Numero}");
        Console.WriteLine($"PDF:       {(resp.Base64File != null ? "recebido" : "não gerado")}");
    }
    else
    {
        Console.WriteLine($"Rejeitada: {resp.ReturnNF?.DsStatusRespostaSefaz}");
        if (resp.erros != null)
            foreach (var e in resp.erros)
                Console.WriteLine($" - [{e.codigo}] {e.descricao}");
    }
}
catch (System.ApplicationException ex)
{
    Console.Error.WriteLine($"Erro de comunicação: {ex.Message}");
}

2. Emitir NFC-e (modelo 65)

using BrasilNFePack.Envio;

var nfce = new NotaFiscalEnvio
{
    TipoAmbiente     = 2,
    ModeloDocumento  = 65,                  // NFC-e
    Finalidade       = 1,
    NaturezaOperacao = "VENDA AO CONSUMIDOR",
    IndicadorPresenca = 1,
    ConsumidorFinal  = true,                // obrigatório em NFC-e

    Cliente = new Pessoa
    {
        CpfCnpj = "12345678909",            // opcional em valores baixos
    },

    Produtos = new List<Produto>
    {
        new Produto
        {
            CodProdutoServico = "REFRI-LATA",
            NmProduto         = "REFRIGERANTE LATA 350ML",
            NCM               = "22021000",
            CFOP              = 5102,
            UnidadeComercial  = "UN",
            Quantidade        = 1,
            ValorUnitario     = 5.00m,
            ValorTotal        = 5.00m,
            OrigemProduto     = 0,
            Imposto = new Imposto
            {
                ICMS   = new ICMS   { CodSituacaoTributaria = "102", AliquotaICMS = 0 },
                PIS    = new PIS    { CodSituacaoTributaria = "99",  Aliquota     = 0 },
                COFINS = new COFINS { CodSituacaoTributaria = "99",  Aliquota     = 0 },
            },
        },
    },

    Pagamentos = new List<Pagamento>
    {
        new Pagamento
        {
            IndicadorPagamento = 0,
            FormaPagamento     = "03",      // Cartão de crédito
            VlPago             = 5.00m,
            BandeiraOperadora  = "01",      // Visa
        },
    },
};

var resp = bnfe.NotaFiscal.EnviarNotaFiscal(nfce);

3. Emitir NF-e em lote

using BrasilNFePack.Envio;

var lote = new NotaFiscalLoteEnvio
{
    TipoAmbiente    = 2,
    ModeloDocumento = 55,
    nFInfos = pedidos.Select(pedido => new NotaFiscalEnvio
    {
        TipoAmbiente     = 2,
        ModeloDocumento  = 55,
        Finalidade       = 1,
        NaturezaOperacao = "VENDA DE MERCADORIA",
        Cliente   = /* ... */,
        Produtos  = /* ... */,
        Pagamentos = /* ... */,
    }).ToList(),
};

var resp = bnfe.NotaFiscal.EnviarNotaFiscalLote(lote);
Console.WriteLine($"Chave da 1ª nota: {resp.ReturnNF?.ChaveNF}");

4. Emitir NFS-e

using BrasilNFePack.NFS.Envio;

var nfse = new NotaFiscalServicoEnvio
{
    TipoAmbiente = 2,
    // ... preencha tomador, serviço, valores conforme sua prefeitura
};

var resp = bnfe.NotaFiscal.EnviarNotaFiscalServico(nfse);

5. Emitir CT-e

using BrasilNFePack.CTe;

var cte = new CTeEnvio
{
    TipoAmbiente     = 2,
    ModeloDocumento  = 57,
    TipoCte          = 0,                 // 0 = Normal
    NaturezaOperacao = "PRESTAÇÃO DE SERVIÇO DE TRANSPORTE",
    // preencha Remetente, Destinatário, Tomador, Serviço, Carga, Modal, Imposto...
};

var resp = bnfe.NotaFiscal.EnviarConhecimentoTransporte(cte);
Console.WriteLine($"Chave CT-e: {resp.chave}");

6. Emitir DC-e (Declaração de Conteúdo)

using BrasilNFePack.DCe;

var dce = new DCeEnvio
{
    TipoAmbiente         = 2,
    TipoEmitente         = 3,            // 3 = Transportadora
    ModalidadeTransporte = 2,
    Remetente = new Pessoa
    {
        CpfCnpj  = "00000000000191",
        Nome     = "EMPRESA EXEMPLO LTDA",
        Endereco = new Endereco { Cep = "01000000", Uf = "SP", Municipio = "São Paulo" },
    },
    Destinatario = new Pessoa
    {
        CpfCnpj  = "12345678909",
        Nome     = "JOÃO DA SILVA",
        Endereco = new Endereco { Cep = "30130000", Uf = "MG", Municipio = "Belo Horizonte" },
    },
    Itens = new List<ItemDCe>
    {
        new ItemDCe
        {
            Descricao     = "Livros didáticos",
            NCM           = "4901",
            Quantidade    = 3,
            ValorUnitario = 80.00m,
            ValorTotal    = 240.00m,
        },
    },
    ValorTotal = 240.00m,
};

var resp = bnfe.NotaFiscal.EnviarDeclaracaoConteudo(dce);

7. Cancelar NF-e

using BrasilNFePack.Envio;

var cancel = new CancelarNotaFiscalEnvio
{
    ChaveNF          = "35230100000000000000550010000000011000000000",
    NumeroProtocolo  = "135230000000000",
    Justificativa    = "Erro de digitação no valor do produto",
    TipoAmbienteNFSe = 2,
};

var resp = bnfe.Eventos.CancelarNotaFiscal(cancel);
Console.WriteLine($"Status: {resp.Status}");

8. Carta de Correção (CC-e)

using BrasilNFePack.Envio;

var cce = new CartaCorrecaoEnvio
{
    TipoAmbiente     = 1,
    ChaveNF          = "35230100000000000000550010000000011000000000",
    Correcao         = "Correção na descrição do produto item 1",
    NumeroSequencial = 1,
};

bnfe.Eventos.EnviarCartaCorrecao(cce);

9. Inutilizar numeração

using BrasilNFePack.Envio;

var inut = new InutilizarNumeracaoEnvio
{
    TipoAmbiente     = 1,
    ModeloDocumento  = 55,
    Serie            = 1,
    NumeracaoInicial = 101,
    NumeracaoFinal   = 105,
    Justificativa    = "Falha no sistema durante emissão sequencial",
};

bnfe.Eventos.InutilizarNumeracao(inut);

10. Manifestar NF-e de entrada

using BrasilNFePack.Envio;

var evt = new ManifestarNotaFiscalEnvio
{
    Chave             = "35230100000000000000550010000000011000000000",
    TipoAmbiente      = 1,
    TipoManifestacao  = 1, // 1=Confirmação, 2=Ciência, 3=Desconhecimento, 4=Não realizada
};

bnfe.Eventos.ManifestarNotaFiscal(evt);

11. Consultar status da SEFAZ

using BrasilNFePack.Envio;

var req = new StatusSefazEnvio { TipoAmbiente = 2, ModeloDocumento = 55 };
var resp = bnfe.Consultas.StatusSefaz(req);
Console.WriteLine(resp.StatusSefaz?.DsStatusRespostaSefaz);

12. Buscar notas por período

using BrasilNFePack.Envio;

var busca = new BuscarNotaFiscalEnvio
{
    TipoDocumentoFiscal = 1,                                // 0 = Entradas, 1 = Saídas
    DtInicio = new DateTime(2026, 4, 1, 0, 0, 0),
    DtFim    = new DateTime(2026, 4, 18, 23, 59, 59),
};

var resp = bnfe.Consultas.BuscarNotaFiscal(busca);

13. Baixar XML / DANFE

using BrasilNFePack.Envio;
using System.IO;

var req = new PegarArquivoEnvio
{
    ChaveNF             = "35230100000000000000550010000000011000000000",
    FileType            = 2,        // 1 = XML, 2 = DANFE/Cupom
    TipoDocumentoFiscal = 1,        // 0 = Entrada, 1 = Saída
};

byte[] bytes = bnfe.Arquivos.PegarArquivo(req);   // já vem decodificado de base64
File.WriteAllBytes("danfe.pdf", bytes);

14. Gerar SPED e Sintegra

using BrasilNFePack.Envio;
using BrasilNFePack.Envio.Sped;

var sped = new SpedEnvio { /* período, tipo, finalidade... */ };
var respSped = bnfe.Arquivos.ObterArquivoSped(sped);

var sintegra = new SintegraEnvio { /* ... */ };
var respSintegra = bnfe.Arquivos.ObterArquivoSintegra(sintegra);

15. Gestão de empresas e certificados

Requer userToken no construtor de BrasilNFe.

using BrasilNFePack;
using BrasilNFePack.Envio;
using System.IO;

var bnfe = new BrasilNFe("TOKEN", "USER_TOKEN");

// Cadastro
var empresa = new EmpresaEnvio
{
    Cnpj     = "00000000000191",
    RzSocial = "EMPRESA EXEMPLO LTDA",
    Crt      = 1,                           // 1=Simples, 3=Regime Normal
};
bnfe.Empresa.AdicionarEmpresa(empresa);

// Certificado A1
var cert = new CertificadoEnvio
{
    Base64Certificado = Convert.ToBase64String(File.ReadAllBytes("certificado.pfx")),
    Senha             = "senha-do-pfx",
};
bnfe.Empresa.AlterarCertificado(cert);

// Listagem
var empresas = bnfe.Empresa.BuscarTodasEmpresas();

Referência de Métodos

NotaFiscal

Método Endpoint Payload Retorno
EnviarNotaFiscal EnviarNotaFiscal NotaFiscalEnvio (+ int? crt) NotaFiscalRetorno
EnviarNotaFiscalLote EnviarNotaFiscalLote NotaFiscalLoteEnvio (+ int? crt) NotaFiscalRetorno
EnviarNotaFiscalServico EnviarNotaFiscalServico NotaFiscalServicoEnvio NotaFiscalServicoRetorno
EnviarManifestoTransporte EnviarManifestoTransporte ManifestoTransporteEnvio ManifestoTransporteRetorno
EnviarNFEnerCom EnviarNFEnerCom NFEnerComEnvio NFEnerComRetorno
EnviarNotaFiscalComplementar EnviarNotaFiscalComplementar NotaFiscalComplementarEnvio NotaFiscalRetorno
EnviarConhecimentoTransporte EnviarConhecimentoTransporte CTeEnvio CTeRetorno
EnviarDeclaracaoConteudo EnviarDeclaracaoConteudo DCeEnvio DCeRetorno

Eventos

Método Endpoint Payload Retorno
CancelarNotaFiscal CancelNF CancelarNotaFiscalEnvio EventoNotaFiscalRetorno
EnviarCartaCorrecao EnviarCartaCorrecao CartaCorrecaoEnvio EventoNotaFiscalRetorno
InutilizarNumeracao InutilizarNumeracao InutilizarNumeracaoEnvio EventoNotaFiscalRetorno
ManifestarNotaFiscal ManifestarNotaFiscal ManifestarNotaFiscalEnvio EventoNotaFiscalRetorno
EncerrarManifestoTransporte EncerrarManifestoTransporte EncerrarManifestoTransporteEnvio EventoNotaFiscalRetorno

Consultas

Método Endpoint Payload Retorno
StatusSefaz StatusSefaz StatusSefazEnvio StatusSefazRetorno
CalcularImpostos CalcularImpostos List<Produto> CalculoImpostosRetorno
PreVisualizarNotaFiscal PreVisualizarNotaFiscal PreVisualizarNotaFiscalEnvio PreVisualizarNotaFiscalRetorno
BuscarNotaFiscal BuscarNotaFiscal BuscarNotaFiscalEnvio BuscarNotaFiscalRetorno
BuscarNotaFiscalServico BuscarNotaFiscalServico BuscarNotaFiscalServicoEnvio NotaFiscalServicoRetorno
ConsultarCadastroSefaz ConsultarCadastroSefaz ConsultarCadastroEnvio ConsultarCadastroRetorno
BuscarArquivoSped BuscarArquivoSped/?codigo= string (código) SpedRetorno

Arquivos

Método Endpoint Payload Retorno
ObterArquivoSintegra ObterArquivoSintegra SintegraEnvio SintegraRetorno
ObterArquivoFci ObterArquivoFci FciEnvio FciRetorno
ObterArqEnerCom ObterArquivoNFEnerCom ArqEnerComEnvio ArqEnerComRetorno
ObterArquivoSped ObterArquivoSped SpedEnvio SpedRetorno
ObterArquivoSpedUnificado ObterArquivoSpedUnificado UnificarSpedEnvio SpedRetorno
RecriarArquivoSped RecriarArquivoSped/?codigo= string (código) SpedRetorno
PegarArquivo GetFile PegarArquivoEnvio byte[]
PegarArquivoEvento GetFileFromEvent PegarArquivoEventoEnvio byte[]
ObterArquivosPorRange ObterArquivosPorRange ObterArquivosRangeEnvio ObterArquivosRangeRetorno

Empresa

Método Endpoint Payload Retorno
AlterarCertificado AlterarCertificado CertificadoEnvio CertificadoRetorno
VerificarCertificado VerifyCertificate CertificadoEnvio CertificadoRetorno
AdicionarEmpresa AdicionarEmpresa EmpresaEnvio EmpresaRetorno
EditarEmpresa EditarEmpresa EmpresaEnvio EmpresaRetorno
BuscarEmpresa BuscarEmpresa EmpresaEnvio
BuscarTodasEmpresas BuscarTodasEmpresas List<EmpresaEnvio>

Tratamento de Erros

O SDK lança ApplicationException em dois casos:

  1. Falha de comunicação (timeout, DNS, TLS, HTTP fora de 2xx).
  2. Falha na desserialização do retorno.

Rejeições da SEFAZ não lançam exceção — elas vêm dentro do objeto de retorno. Sempre verifique ReturnNF?.Ok (e os campos Error / Avisos / erros nos retornos que herdam de Erros).

try
{
    var resp = bnfe.NotaFiscal.EnviarNotaFiscal(nf);

    if (resp.ReturnNF?.Ok != true)
    {
        Console.WriteLine($"Rejeitada [{resp.ReturnNF?.CodStatusRespostaSefaz}] " +
                          $"{resp.ReturnNF?.DsStatusRespostaSefaz}");

        if (!string.IsNullOrEmpty(resp.Error))
            Console.WriteLine($"Erro: {resp.Error}");

        if (resp.Avisos != null)
            foreach (var a in resp.Avisos)
                Console.WriteLine($"Aviso: {a}");

        return;
    }

    Console.WriteLine($"Autorizada: chave {resp.ReturnNF.ChaveNF}");
}
catch (System.ApplicationException ex)
{
    Console.Error.WriteLine($"Falha na integração Brasil NFe: {ex.Message}");
}

Tabelas de Referência

Modelos de documento

Código Documento
55 NF-e
57 CT-e
58 MDF-e
65 NFC-e

TipoAmbiente

Código Ambiente
1 Produção
2 Homologação

Finalidade (NF-e)

Código Finalidade
1 Normal
2 Complementar
3 Ajuste
4 Devolução / Retorno

IndicadorPresenca

Código Descrição
0 Não se aplica
1 Operação presencial
2 Operação não presencial, Internet
3 Operação não presencial, teleatendimento
4 NFC-e com entrega em domicílio
5 Presencial fora do estabelecimento
9 Operação não presencial, outros

IndicadorIe (destinatário)

Código Situação
1 Contribuinte ICMS (IE obrigatória)
2 Contribuinte isento
9 Não contribuinte

ModalidadeFrete

Código Descrição
0 Por conta do Remetente (CIF)
1 Por conta do Destinatário (FOB)
2 Por conta de Terceiros
3 Transporte próprio, conta do Remetente
4 Transporte próprio, conta do Destinatário
9 Sem ocorrência de transporte

FormaPagamento

Código Forma
01 Dinheiro
02 Cheque
03 Cartão de Crédito
04 Cartão de Débito
05 Crediário / Private Label
10–13 Vales (Alimentação, Refeição, Presente, Combustível)
14 Duplicata Mercantil
15 Boleto Bancário
16 Depósito Bancário
17 PIX Dinâmico
18 Transferência / Carteira Digital
19 Programa de fidelidade / cashback
20 PIX Estático
90 Sem pagamento
99 Outros

TipoManifestacao

Código Evento
1 Confirmação da Operação
2 Ciência da Operação
3 Desconhecimento da Operação
4 Operação não Realizada

Crt (Empresa)

Código Regime
1 Simples Nacional
2 Simples Nacional — Excesso de sublimite
3 Regime Normal

Ambientes

  • Homologação: envie TipoAmbiente = 2 em cada requisição. Ideal para testes; nenhuma nota tem validade fiscal.
  • Produção: TipoAmbiente = 1. A partir daqui a nota é real — o usuário e CNPJ precisam estar devidamente autorizados no painel Brasil NFe e com certificado digital A1 válido.

A URL base padrão é https://api.brasilnfe.com.br/services/ — a mesma para homologação e produção. O ambiente é sempre determinado pelo campo do payload.

Como o SDK serializa o payload

O SDK usa HttpWebRequest configurado em BrasilNFeRequest:

  • Payloads são serializados com Newtonsoft.Json e enviados como JSON (application/json).

  • As propriedades respeitam o casing esperado pela API (PascalCase na maioria dos módulos NF-e/Eventos).

  • Todas as chamadas são POST para a URL base + nome do método.

  • O retorno é desserializado com JavaScriptSerializer (MaxJsonLength = 999999999).

  • Datas seguem DateFormatHandling.IsoDateFormat com cultura pt-BR.

  • Toda requisição envia os headers:

    Content-Type:    application/json
    Accept:          application/json
    Token:           <seu token>
    UserToken:       <user token, se houver>
    Package-Version: 1.22.3
    
  • Timeout padrão: 300s (5 minutos).

  • Arquivos binários (XML/DANFE) são devolvidos em byte[] — o SDK decodifica o base64 automaticamente em PegarArquivo e PegarArquivoEvento.

Utilitário BrasilNFeHelper

A classe estática BrasilNFeHelper expõe um método de extensão Ratear<T> para distribuir valores proporcionalmente entre itens de uma List<T> (útil para distribuir frete, desconto ou seguro entre produtos da nota). O ajuste é aplicado por reflection na primeira propriedade decimal que casar com o seletor.

using BrasilNFePack;
using static BrasilNFePack.BrasilNFeHelper;

nf.Produtos.Ratear(
    valorTotal:        50.00m,                  // valor total a distribuir (ex.: frete)
    seletor:           p => p.ValorFrete,       // valor base a ajustar
    seletorProporcao:  p => p.ValorTotal,       // base de proporcionalidade
    tipoRateio:        TipoRateio.Somar         // Substituir | Somar | Subtrair
);

Tipos de rateio disponíveis:

Valor Comportamento
TipoRateio.Substituir Substitui o valor atual pelo valor rateado
TipoRateio.Somar Soma o valor rateado ao valor atual
TipoRateio.Subtrair Subtrai o valor rateado do valor atual

Licença

Distribuído sob licença proprietária. Uso autorizado mediante contrato com a BRASIL NFE LTDA.

Suporte

Desenvolvido por BRASIL NFE LTDA — CNPJ 39.658.743/0001-99.

Product Compatible and additional computed target framework versions.
.NET Framework net is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.1.1 178 6/26/2026
3.1.0 179 6/19/2026
3.0.0 368 5/21/2026
2.3.9 464 4/28/2026
Loading failed

2.3.9 — Adicionado README.md ao pacote.