PHPackages                             marcelabeh/emissor-nfse-nacional - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. marcelabeh/emissor-nfse-nacional

ActiveLibrary[Payment Processing](/categories/payments)

marcelabeh/emissor-nfse-nacional
================================

Biblioteca PHP para emissão, consulta e cancelamento de NFS-e Nacional (Sefin) — Clean Architecture, validação XSD v1.01, assinatura SHA-256, suporte IBS/CBS

v2.1.1(2w ago)1052↑188.5%LGPL-3.0-or-laterPHPPHP ^8.3CI passing

Since May 12Pushed 2w agoCompare

[ Source](https://github.com/MarcelaBeh/emissor-nfse-nacional)[ Packagist](https://packagist.org/packages/marcelabeh/emissor-nfse-nacional)[ Docs](https://github.com/marcelabeh/emissor-nfse-nacional)[ RSS](/packages/marcelabeh-emissor-nfse-nacional/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (4)DependenciesVersions (9)Used By (0)

NFSe Padrão Nacional
====================

[](#nfse-padrão-nacional)

 [![NFSe Nacional](images/logo-nfs-e-horizontal.png)](images/logo-nfs-e-horizontal.png)

[![Packagist](https://camo.githubusercontent.com/94c6835b73451592a1df28e1b2a8a1c9309de1e5dc8b4f81992657ed44a006b8/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d617263656c616265682f656d6973736f722d6e6673652d6e6163696f6e616c2e737667)](https://packagist.org/packages/marcelabeh/emissor-nfse-nacional)[![PHP Version](https://camo.githubusercontent.com/d7c4f27dd0348b109205b0fc7e563091cecc355551565680ddeac0febed65b11/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e332b2d3737374242343f6c6f676f3d706870)](https://www.php.net/)[![PHPStan](https://camo.githubusercontent.com/ff3c7f8c8667ce643f47e74532748f673482a5f95d7d4269f925f2eebbe5117e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048505374616e2d6c6576656c253230382d627269676874677265656e)](https://phpstan.org/)[![Tests](https://camo.githubusercontent.com/19d706dd88b0c7598b3876cc17a3792bad308de0d9772dc3e8bbfb7c1f9d5641/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f74657374732d36333325323070617373696e672d627269676874677265656e)](https://phpunit.de/)[![License](https://camo.githubusercontent.com/614d00210a2a803b31960d39ad46afca4b23218a83c84cf994c4cebe1929cd6f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4c47504c2d2d332e302d626c75652e737667)](LICENSE)

**Biblioteca PHP para integração com NFSe Nacional** - Pacote Composer reutilizável para emissão, consulta e cancelamento de Notas Fiscais de Serviço Eletrônicas no padrão nacional.

**Clean Architecture** • **SOLID** • **PSR-12** • **PHP 8.3+** • **PHPStan Level 8**

---

📦 Instalação
------------

[](#-instalação)

```
composer require marcelabeh/emissor-nfse-nacional
```

🚀 Uso Rápido
------------

[](#-uso-rápido)

```
use MarcelaBeh\EmissorNfseNacional\Presentation\Facade\NfseNacionalFacade;
use MarcelaBeh\EmissorNfseNacional\Presentation\Factory\ConfigFactory;
use NFePHP\Common\Certificate;

// 1. Carregar certificado
$certificado = Certificate::loadPfx($caminhoCertificado, $senha);

// 2. Criar configuração
$config = ConfigFactory::createHomologacao('codigo-ibge-municipio');

// 3. Criar facade
$nfse = NfseNacionalFacade::create((array)$config, $certificado);

// 4. Emitir DPS
$response = $nfse->emitirDps($dpsRequest);
```

📚 Documentação
--------------

[](#-documentação)

DocumentoDescrição[GUIA\_IMPLEMENTACAO.md](docs/GUIA_IMPLEMENTACAO.md)Guia completo de uso com exemplos[ARQUITETURA.md](docs/ARQUITETURA.md)Arquitetura do sistema e decisões de design[SEGURANCA\_COMPLIANCE.md](docs/SEGURANCA_COMPLIANCE.md)Diretrizes de segurança[CONTRIBUTING.md](CONTRIBUTING.md)Como contribuir[CHANGELOG.md](CHANGELOG.md)Histórico de alterações[examples/](examples/)Exemplos práticos de uso✅ Requisitos
------------

[](#-requisitos)

- PHP 8.3+
- ext-dom, ext-curl, ext-zlib, ext-openssl, ext-mbstring

🔧 Qualidade de Código
---------------------

[](#-qualidade-de-código)

```
composer test    # PHPUnit (633 testes, 1571 assertions)
composer cs      # PHP-CS-Fixer (dry-run)
composer cs:fix  # PHP-CS-Fixer (aplicar)
composer stan    # PHPStan nível 8
composer check   # Tudo junto
```

**Métricas:**

- ✅ **633 testes** unitários e de integração
- ✅ **PHPStan nível 8** (máximo rigor) - 0 erros
- ✅ **Clean Architecture** - 9.5/10
- ✅ **SOLID completo** - 9/10
- ✅ **PSR-12** - Code style padronizado
- ✅ **100% compliance** com especificações NFSe Nacional v1.00 e v1.01

📁 Estrutura
-----------

[](#-estrutura)

```
src/
├── Domain/           # Entidades e Value Objects
├── Application/     # Services e DTOs
├── Infrastructure/  # HTTP, XML, Segurança
└── Presentation/    # Facade e Factories

```

🏛️ Padrões Aplicados
--------------------

[](#️-padrões-aplicados)

PadrãoOndeClean ArchitectureSeparação em camadas (Domain → Application → Infrastructure → Presentation)Facade`NfseNacionalFacade` - ponto único de entradaFactory`ServiceFactory`, `ConfigFactory` - criação de dependênciasDTO`DpsRequest`, `NfseResponse`, `EventoRequest` - transporte de dadosValue Object`Cnpj`, `Cpf`, `Money`, `ChaveAcesso` - imutáveis e auto-validáveisValidator`DpsValidator`, `XsdValidator` - validação de entrada e XML🔄 Fluxo de Uso
--------------

[](#-fluxo-de-uso)

```
1. Carregar certificado → Certificate::loadPfx()
2. Criar configuração → ConfigFactory::createHomologacao() ou createProducao()
3. Instanciar facade → NfseNacionalFacade::create()
4. Montar request → DpsRequest / EventoRequest
5. Executar operação → facade->emitirDps() / consultarPorChave() / cancelar()

```

📄 API Principal
---------------

[](#-api-principal)

**NfseNacionalFacade** - Ponto único de entrada:

- `emitirDps(DpsRequest)` → `NfseResponse`
- `consultarPorChave(string)` → `NfseResponse|null`
- `consultarDpsPorChave(string)` → `array`
- `cancelar(EventoRequest)` → `EventoResponse`
- `consultarEventos(string)` → `array`
- `consultarDanfse(string)` → `string|array`
- `consultarDanfseNfse(string)` → `string|array`

⚠️ Avisos Importantes
---------------------

[](#️-avisos-importantes)

### Configuração do Município

[](#configuração-do-município)

A variável `prefeitura` deve receber o **código IBGE do município** (7 dígitos), conforme especificação dos XSDs da NFSe (ABRASF).

### Encoding XML

[](#encoding-xml)

O XML pode vir em ISO-8859-1. Use o segundo parâmetro se necessário:

```
$nfse->consultarPorChave('CHAVE', false);
```

🐛 FAQ - Erro E999
-----------------

[](#-faq---erro-e999)

O erro E999 indica falha não catalogada pela Receita. Causas comuns:

- CNPJ/CPF do prestador não cadastrado/habilitado na NFSe Nacional
- Erros de servidor (500)
- Problemas no ambiente de homologação (comum)

🤝 Créditos e Agradecimentos
---------------------------

[](#-créditos-e-agradecimentos)

Este projeto é uma **reestruturação completa** com Clean Architecture do projeto original.

### 📦 Projeto Original

[](#-projeto-original)

- **Repositório:** [hadder/nfse-nacional](https://github.com/Rainzart/nfse-nacional)
- **Autor:** Fernando Friedrich ([@fernando-friedrich](https://github.com/Rainzart))
- **Contribuição:** Base inicial e compreensão das regras de negócio NFSe Nacional

### 🔐 Dependências

[](#-dependências)

- **NFePHP/sped-common** - Manipulação de certificados digitais A1/A3 e assinatura XML
    - Projeto mantido pela comunidade brasileira desde 2008
    - [github.com/nfephp-org/sped-common](https://github.com/nfephp-org/sped-common)
    - Criado por Roberto L. Machado ([@robmachado](https://github.com/robmachado))

### 👩‍💻 Manutenção Atual

[](#‍-manutenção-atual)

- **Marcela Beatriz** ([@marcelabeh](https://github.com/marcelabeh))
- Arquitetura: Clean Architecture + SOLID + DDD
- Cobertura de testes: 633 testes
- Análise estática: PHPStan level 8

📜 Licença
---------

[](#-licença)

**LGPL-3.0-or-later** (GNU Lesser General Public License v3.0 ou posterior)

Veja o arquivo [LICENSE](LICENSE) para detalhes completos.

### 💼 O que isso significa?

[](#-o-que-isso-significa)

✅ **Você PODE:**

- Usar comercialmente (grátis)
- Modificar o código
- Distribuir em projetos proprietários
- Vender produtos que usam esta biblioteca

⚠️ **Você DEVE:**

- Manter o copyright original
- Se modificar A BIBLIOTECA, compartilhar as mudanças (LGPL)
- Incluir uma cópia da licença LGPL

###  Health Score

48

—

FairBetter than 94% of packages

Maintenance96

Actively maintained with recent releases

Popularity18

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

7

Last Release

18d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/5282c6cc82e016260bf64a68012a32317ea056f82c4d869dbfe08f2e546b726b?d=identicon)[Marcela Beh](/maintainers/Marcela%20Beh)

---

Top Contributors

[![MarcelaBeh](https://avatars.githubusercontent.com/u/102764966?v=4)](https://github.com/MarcelaBeh "MarcelaBeh (47 commits)")[![Rainzart](https://avatars.githubusercontent.com/u/563814?v=4)](https://github.com/Rainzart "Rainzart (29 commits)")[![BangemannGuilherme](https://avatars.githubusercontent.com/u/65203625?v=4)](https://github.com/BangemannGuilherme "BangemannGuilherme (3 commits)")[![jonathanpmartins](https://avatars.githubusercontent.com/u/6137992?v=4)](https://github.com/jonathanpmartins "jonathanpmartins (3 commits)")[![leandro-mafra](https://avatars.githubusercontent.com/u/17616770?v=4)](https://github.com/leandro-mafra "leandro-mafra (3 commits)")[![muriloelias](https://avatars.githubusercontent.com/u/2312096?v=4)](https://github.com/muriloelias "muriloelias (2 commits)")[![OswaldoAranda](https://avatars.githubusercontent.com/u/42947585?v=4)](https://github.com/OswaldoAranda "OswaldoAranda (2 commits)")[![gersonfs](https://avatars.githubusercontent.com/u/293154?v=4)](https://github.com/gersonfs "gersonfs (2 commits)")[![visio-simenes](https://avatars.githubusercontent.com/u/215207795?v=4)](https://github.com/visio-simenes "visio-simenes (1 commits)")[![mskamot](https://avatars.githubusercontent.com/u/11540014?v=4)](https://github.com/mskamot "mskamot (1 commits)")[![nagualcode](https://avatars.githubusercontent.com/u/13026978?v=4)](https://github.com/nagualcode "nagualcode (1 commits)")[![TI-Einov](https://avatars.githubusercontent.com/u/146743576?v=4)](https://github.com/TI-Einov "TI-Einov (1 commits)")[![ahwelp](https://avatars.githubusercontent.com/u/14235495?v=4)](https://github.com/ahwelp "ahwelp (1 commits)")

---

Tags

dpsnfsenfse-nacionalnfephpbrasilfiscalsefinnota-fiscal-servicoibscbs

### Embed Badge

![Health badge](/badges/marcelabeh-emissor-nfse-nacional/health.svg)

```
[![Health](https://phpackages.com/badges/marcelabeh-emissor-nfse-nacional/health.svg)](https://phpackages.com/packages/marcelabeh-emissor-nfse-nacional)
```

###  Alternatives

[omnipay/paymentexpress

Payment Express (DPS) driver for the Omnipay payment processing library

261.6M15](/packages/omnipay-paymentexpress)[hadder/nfse-nacional

Pacote para geração de NFSe Nacional usando componentes NFePHP (https://github.com/nfephp-org)

664.0k](/packages/hadder-nfse-nacional)[nfephp-org/sped-nfse-ginfes

API para geração e comunicação de RPS e NFSe no padão Ginfes.

445.1k](/packages/nfephp-org-sped-nfse-ginfes)[nfephp-org/sped-mail

API para geração e envio dos emails relacionados com o SPED.

1126.1k](/packages/nfephp-org-sped-mail)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
