Skip to content

open-nfseNFS-e Padrão Nacional em TypeScript

Cliente direto à API oficial da Receita Federal — consulta, emissão segura, eventos, parâmetros municipais e DANFSe. Sem gateway no meio.

open-nfse

Por que

A partir de 1º de janeiro de 2026, toda NFS-e no Brasil passa a ser emitida pelo Padrão Nacional (LC 214/2025), com uma única API mantida pela Receita Federal em substituição aos ~5.570 sistemas municipais. Este pacote é uma camada fina sobre essa API: mTLS com certificado A1, parsing/geração de XML conforme os XSDs oficiais, DTOs tipados.

Instalação

bash
npm install open-nfse

Uso rápido

typescript
import {
  NfseClient,
  Ambiente,
  createInMemoryDpsCounter,
  createInMemoryRetryStore,
  OpcaoSimplesNacional,
  RegimeEspecialTributacao,
} from 'open-nfse';

const cliente = new NfseClient({
  ambiente: Ambiente.ProducaoRestrita,
  certificado: { pfx: readFileSync('./cert.pfx'), password: process.env.CERT_PASSWORD! },
  dpsCounter: createInMemoryDpsCounter(),   // em prod: wrap seu DB (UPDATE ... RETURNING)
  retryStore: createInMemoryRetryStore(),   // em prod: wrap seu DB (upsert/list/delete)
});

const r = await cliente.emitir({
  emitente: {
    cnpj: '00574753000100',
    codMunicipio: '2111300',
    regime: {
      opSimpNac: OpcaoSimplesNacional.MeEpp,
      regEspTrib: RegimeEspecialTributacao.Nenhum,
    },
  },
  serie: '1',
  servico: { cTribNac: '010101', cNBS: '123456789', descricao: 'Consultoria' },
  valores: { vServ: 1500.0, aliqIss: 2.5 },
});

if (r.status === 'ok') {
  console.log(r.nfse.chaveAcesso);
  console.log(r.nfse.xmlNfse);
}

Ver guia completo →

Licença MIT — biblioteca não oficial, sem vínculo com a Receita Federal.