OpenAC.Net.NFSe 1.8.0

Prefix Reserved
dotnet add package OpenAC.Net.NFSe --version 1.8.0
                    
NuGet\Install-Package OpenAC.Net.NFSe -Version 1.8.0
                    
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="OpenAC.Net.NFSe" Version="1.8.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OpenAC.Net.NFSe" Version="1.8.0" />
                    
Directory.Packages.props
<PackageReference Include="OpenAC.Net.NFSe" />
                    
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 OpenAC.Net.NFSe --version 1.8.0
                    
#r "nuget: OpenAC.Net.NFSe, 1.8.0"
                    
#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 OpenAC.Net.NFSe@1.8.0
                    
#: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=OpenAC.Net.NFSe&version=1.8.0
                    
Install as a Cake Addin
#tool nuget:?package=OpenAC.Net.NFSe&version=1.8.0
                    
Install as a Cake Tool

OpenAC.Net.NFSe

NuGet Version NuGet Downloads Discord License: MIT Target Frameworks Target Frameworks

Biblioteca .NET multiplataforma para geração, assinatura, transmissão, consulta e impressão de NFS-e (Nota Fiscal de Serviço Eletrônica) para centenas de municípios brasileiros.

Desenvolvida pelo time OpenAC .Net, a biblioteca abstrai as particularidades dos diversos provedores municipais e padrões existentes (ABRASF 1.0, ABRASF 2.0x, DSF, Ginfes, SigISS, Betha, IPM, Governos próprios, entre outros).


🚀 Funcionalidades

  • Emissão e Transmissão de RPS / NFS-e:
    • Emissão Síncrona e Assíncrona.
    • Envio de RPS individual ou em lote.
    • Substituição de NFS-e / RPS.
  • Cancelamento de NFS-e:
    • Cancelamento por código de motivo, justificativa ou pedido assinado.
  • Consultas:
    • Consulta de Situação do Lote.
    • Consulta de Lote de RPS.
    • Consulta de NFS-e por RPS.
    • Consulta de NFS-e por período / faixa de datas.
    • Consulta de Link da NFS-e.
  • Impressão do DANFSe em PDF:
    • Motor de impressão OpenAC.Net.NFSe.DANFSe.PDFSharp baseado em PDFsharp 6.x e QRCoder.
    • 100% Open Source / MIT, sem custos de licença ou marcas d'água de terceiros.
    • Native AOT Safe & Multiplataforma: Fontes TrueType embutidas, pronto para Docker, Linux (Alpine/Debian/Ubuntu), Windows e macOS.
    • Suporte à customização de cabeçalhos, logos da prefeitura e do prestador, discriminação de itens em tabela ou texto livre e criptografia por senha.
  • Assinatura e Validação Digital:
    • Assinatura digital XML com certificados A1 e A3 (DFeSignature).
    • Validação de esquemas XML / Schemas XSD oficiais.
  • Alta Performance:
    • Serialização e desserialização XML baseada em Source Generators (OpenAC.Net.DFe.Core).
  • Suporte à Reforma Tributária (IBS / CBS):
    • Estruturas prontas para os novos tributos municipais e federais.

🏛️ Provedores e Padrões Suportados

A biblioteca suporta os principais padrões de mercado e provedores municipais:

Padrão / Provedor Padrão / Provedor Padrão / Provedor
ABRASF v1.00 ABRASF v2.00 a v2.04 Abaco
ABase Agili Assessor Público
Betha (v1 e v2) BHISS (Belo Horizonte) Citta
Conam Coplan DBSeller
DSF / ISSDSF Equiplano FintelISS
Fiorilli Fisco FissLex
GIAP Ginfes GISS / SigISS
GovBR IPM (v1 e v2) ISSCampinas
ISSCuritiba ISSGoiania ISSIntegra
ISSNet ISSPortoVelho ISSRecife
ISSRio (Nota Carioca) ISSSJP ISSSaoPaulo (Paulistana)
ISSVitoria ISSe Megasoft
MetropolisWeb Mitra NFe Cidades (GovDigital)
Prodata Pronim (v1, v2, v203) RLZ Informática
SiapNet Sigep SigissWeb
SimplISS (v1 e v2) Sintese SmarAPD
SpeedGov SystemPro Thema
Tinus Tiplan (v1 e v2) WebISS (v1 e v2)

📦 Instalação

Adicione os pacotes via NuGet:

1. Componente Principal (NFS-e)

dotnet add package OpenAC.Net.NFSe
Install-Package OpenAC.Net.NFSe

2. Componente de Impressão (DANFSe em PDF via PDFsharp)

dotnet add package OpenAC.Net.NFSe.DANFSe.PDFSharp
Install-Package OpenAC.Net.NFSe.DANFSe.PDFSharp

🛠️ Como Usar

1. Inicializando e Configurando o Componente

using OpenAC.Net.DFe.Core.Common;
using OpenAC.Net.NFSe;

var openNFSe = new OpenNFSe();

// Configurações Gerais
openNFSe.Configuracoes.Geral.RetirarAcentos = true;
openNFSe.Configuracoes.Geral.Salvar = true;

// Configurações dos WebServices / Cidade
openNFSe.Configuracoes.WebServices.Ambiente = DFeTipoAmbiente.Homologacao;
openNFSe.Configuracoes.WebServices.CodigoMunicipio = 3550308; // Código IBGE (Ex: São Paulo - SP)
openNFSe.Configuracoes.WebServices.Usuario = "usuario_ws";
openNFSe.Configuracoes.WebServices.Senha = "senha_ws";

// Configurações dos Arquivos
openNFSe.Configuracoes.Arquivos.PathSalvar = @"C:\NFSe\Arquivos";
openNFSe.Configuracoes.Arquivos.PathSchemas = @"C:\NFSe\Schemas";

// Configurações do Certificado Digital
openNFSe.Configuracoes.Certificados.Certificado = @"C:\Certificados\certificado.pfx";
openNFSe.Configuracoes.Certificados.Senha = "123456";

// Dados do Prestador Padrão
openNFSe.Configuracoes.PrestadorPadrao.CpfCnpj = "12345678000195";
openNFSe.Configuracoes.PrestadorPadrao.InscricaoMunicipal = "12345678";

2. Criando e Emitindo uma Nota Fiscal de Serviço (RPS)

using System;
using OpenAC.Net.NFSe.Nota;

// Limpa notas anteriores
openNFSe.NotasServico.Clear();

// Adiciona um novo RPS
var nota = openNFSe.NotasServico.AddNew();

// Identificação do RPS
nota.IdentificacaoRps.Numero = "100";
nota.IdentificacaoRps.Serie = "1";
nota.IdentificacaoRps.Tipo = TipoRps.RPS;
nota.IdentificacaoRps.DataEmissao = DateTime.Now;

// Regime Tributário
nota.RegimeEspecialTributacao = RegimeEspecialTributacao.SimplesNacional;
nota.OptanteSimplesNacional = NFSeSimNao.Sim;
nota.IncentivadorCultural = NFSeSimNao.Nao;

// Prestador
nota.Prestador.CpfCnpj = "12345678000195";
nota.Prestador.InscricaoMunicipal = "12345678";
nota.Prestador.RazaoSocial = "EMPRESA PRESTADORA DE SERVICOS LTDA";

// Tomador
nota.Tomador.CpfCnpj = "98765432000100";
nota.Tomador.RazaoSocial = "CLIENTE TOMADOR DE SERVICOS S/A";
nota.Tomador.Endereco.Logradouro = "AVENIDA PAULISTA";
nota.Tomador.Endereco.Numero = "1000";
nota.Tomador.Endereco.Bairro = "BELA VISTA";
nota.Tomador.Endereco.Municipio = "SAO PAULO";
nota.Tomador.Endereco.Uf = "SP";
nota.Tomador.Endereco.Cep = "01310100";
nota.Tomador.DadosContato.Email = "financeiro@cliente.com.br";

// Serviço
nota.Servico.ItemListaServico = "01.07";
nota.Servico.Discriminacao = "Desenvolvimento e manutenção de software sob medida.";
nota.Servico.Valores.ValorServicos = 2500.00M;
nota.Servico.Valores.BaseCalculo = 2500.00M;
nota.Servico.Valores.Aliquota = 2.00M;
nota.Servico.Valores.ValorIss = 50.00M;
nota.Servico.Valores.ValorLiquidoNfse = 2450.00M;

// Envio do Lote de RPS
var retorno = openNFSe.Enviar(lote: 1, sincronico: false);

if (retorno.Sucesso)
{
    Console.WriteLine($"Sucesso! Protocolo: {retorno.Protocolo}");
}
else
{
    foreach (var alerta in retorno.Alertas)
        Console.WriteLine($"Alerta: {alerta.Codigo} - {alerta.Descricao}");
    foreach (var erro in retorno.Erros)
        Console.WriteLine($"Erro: {erro.Codigo} - {erro.Descricao}");
}

3. Gerando e Imprimindo o DANFSe em PDF

Utilizando o pacote OpenAC.Net.NFSe.DANFSe.PDFSharp:

using OpenAC.Net.NFSe.DANFSe.PDFSharp.Extensions;

// 1. Exportar diretamente para arquivo PDF
openNFSe.ImprimirPDF(@"C:\NFSe\Danfse.pdf", opt =>
{
    opt.CabecalhoLinha1 = "PREFEITURA MUNICIPAL DE SÃO PAULO";
    opt.CabecalhoLinha2 = "SECRETARIA MUNICIPAL DA FAZENDA";
    opt.ExibirQRCode = true;
    opt.Homologacao = false;
});

// 2. Exportar para uma Stream (ex: download em API Web / ASP.NET Core)
using var ms = new MemoryStream();
openNFSe.ImprimirPDF(ms);
var bytes = ms.ToArray();

// 3. Obter os bytes do PDF diretamente
byte[] pdfBytes = openNFSe.GerarPDF();

// 4. Imprimir / Visualizar na tela
openNFSe.Imprimir(opt => opt.MostrarPreview = true);
Proteção e Criptografia do PDF com Senha:
openNFSe.ImprimirPDF(@"C:\NFSe\Danfse_Protegido.pdf", opt =>
{
    opt.Seguranca.SenhaUsuario = "123456";          // Senha exigida para abrir o PDF
    opt.Seguranca.SenhaProprietario = "adminMaster"; // Senha do proprietário
    opt.Seguranca.PermitirImpressao = true;
    opt.Seguranca.PermitirModificacao = false;
    opt.Seguranca.PermitirCopiarConteudo = false;
});

4. Consultas

// Consulta de NFS-e por Número do RPS
var retornoRps = openNFSe.ConsultarNFSePorRps(numeroRps: 100, serieRps: "1", tipoRps: TipoRps.RPS);

// Consulta de Situação do Lote
var retornoSituacao = openNFSe.ConsultarSituacaoLoteRps(protocolo: "123456789", lote: 1);

// Consulta de Lote de RPS
var retornoLote = openNFSe.ConsultarLoteRps(protocolo: "123456789", lote: 1);

5. Cancelamento de NFS-e

var retornoCancelamento = openNFSe.CancelarNFSe(
    codigoCancelamento: "1",
    numeroNFSe: "202600000000100",
    motivo: "Erro na discriminação dos serviços."
);

if (retornoCancelamento.Sucesso)
{
    Console.WriteLine("NFS-e cancelada com sucesso!");
}

📁 Estrutura da Solução

  • OpenAC.Net.NFSe: Biblioteca principal contendo o core, provedores municipais, webservices, serializadores e modelos de dados.
  • OpenAC.Net.NFSe.DANFSe.PDFSharp: Gerador e impressor do DANFSe em PDF via PDFsharp 6.x e QRCoder (100% MIT / Open Source).
  • OpenAC.Net.NFSe.Demo: Aplicativo de demonstração Windows Forms completo com exemplos de preenchimento, testes de cidades e impressão.
  • OpenAC.Net.NFSe.Test: Suíte de testes unitários e de integração com xUnit.

📚 Documentação e Guias


🤝 Como Contribuir

Contribuições são muito bem-vindas! Para contribuir:

  1. Faça um Fork do projeto.
  2. Crie uma Branch para a sua feature (git checkout -b feature/novo-provedor).
  3. Commit suas alterações (git commit -m 'feat: adiciona suporte ao provedor XYZ').
  4. Push para a branch (git push origin feature/novo-provedor).
  5. Abra um Pull Request.

💖 Apoie o Projeto OpenAC .Net

Se o OpenAC.Net.NFSe é útil para você ou sua empresa e você deseja apoiar a continuidade e evolução da biblioteca:

  • Participe da nossa comunidade no Discord.
  • Deixe uma estrela ⭐ no GitHub.
  • Compartilhe com outros desenvolvedores da comunidade .NET.

📄 Licença

Este projeto é distribuído sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 is compatible.  net463 was computed.  net47 is compatible.  net471 was computed.  net472 was computed.  net48 is compatible.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on OpenAC.Net.NFSe:

Package Downloads
OpenAC.Net.NFSe.DANFSe.QuestPdf

Biblioteca de impressão de DANFSe usando o QuestPdf.

OpenAC.Net.NFSe.DANFSe.FastReport.OpenSource

Biblioteca de impressão de DANFSe usando o FastReport OpenSource.

OpenAC.Net.NFSe.DANFSe.PDFSharp

Biblioteca para geração e impressão de DANFSe (Documento Auxiliar da NFS-e) em PDF usando PDFsharp (100% Open Source / MIT).

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.8.0 0 8/21/2026
1.7.6 142 8/8/2026
1.7.5 954 6/16/2026
1.7.4 172 6/9/2026
1.7.3 464 5/18/2026
1.7.2 258 5/8/2026
1.7.1 2,790 2/7/2026
1.7.0 287 1/17/2026
1.6.4 822 12/15/2025
1.6.3 412 11/7/2025
1.6.2 13,735 6/14/2025
1.6.1 2,387 3/22/2025
1.6.0.1 14,635 9/24/2024
1.5.1 2,543 8/16/2024
1.5.0.2 1,009 3/13/2024
1.5.0.1 428 2/6/2024
1.5.0 4,876 2/12/2023
1.5.0-rc.2 379 4/27/2022
1.5.0-rc.1 291 4/26/2022
1.5.0-preview.3 287 4/5/2022
Loading failed