PHPackages                             quantumtecnology/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. [PDF &amp; Document Generation](/categories/documents)
4. /
5. quantumtecnology/nfse-nacional

ActiveLibrary[PDF &amp; Document Generation](/categories/documents)

quantumtecnology/nfse-nacional
==============================

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

3.2.4(2w ago)1412↓71.1%2[1 issues](https://github.com/Quantum-Tecnology/nfse-nacional/issues)MITPHPPHP ^8.1

Since Oct 30Pushed 2mo agoCompare

[ Source](https://github.com/Quantum-Tecnology/nfse-nacional)[ Packagist](https://packagist.org/packages/quantumtecnology/nfse-nacional)[ RSS](/packages/quantumtecnology-nfse-nacional/feed)WikiDiscussions master Synced 2w ago

READMEChangelogDependencies (36)Versions (34)Used By (0)

NFSe Padrão Nacional — Quantum Tecnology
========================================

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

Pacote PHP para emissão, consulta e geração de DANFSe da **NFS-e Padrão Nacional** ([nfse.gov.br](https://www.nfse.gov.br/)), construído sobre os componentes [NFePHP](https://github.com/nfephp-org).

Este é um **fork mantido pela [Quantum Tecnology](https://github.com/Quantum-Tecnology)** do excelente trabalho da equipe **Hadder** (ver [Créditos](#cr%C3%A9ditos)). Partindo daquela base, evoluímos o pacote com foco em **robustez em produção, suporte a prefeituras com emissor próprio e geração de DANFSe local** — recursos detalhados abaixo.

> **Em uso em produção**, porém em evolução contínua. Contribuições são bem-vindas via PR.

✨ Melhorias desta versão (Quantum)
----------------------------------

[](#-melhorias-desta-versão-quantum)

Além de tudo que já existia no pacote original, esta versão adiciona:

### 🏛️ Destaque de IBS/CBS (Reforma Tributária — EC 132/2023)

[](#️-destaque-de-ibscbs-reforma-tributária--ec-1322023)

O grupo `` do DPS é gerado a partir de `$std->infDPS->IBSCBS`.

> 🚨 **A partir de 01/08/2026 este grupo é obrigatório** — sem ele a NFS-e é rejeitada na recepção. No pacote ele continua sendo emitido apenas quando presente no payload (sem o campo, o XML sai como antes), então **a responsabilidade de preenchê-lo é de quem integra**. Veja o [calendário](#-calend%C3%A1rio-da-reforma--o-que-entra-e-o-que-sai-e-quando).

No DPS você **apenas declara a situação tributária** — `CST` e `cClassTrib`. As alíquotas e os valores de IBS/CBS são calculados pelo Ambiente de Dados Nacional e voltam no `` da NFS-e autorizada; **não envie valores**.

```
$std->infDPS->IBSCBS = (object) [
    'finNFSe'  => '0',        // 0 = regular (único valor aceito no schema v1.01)
    'indFinal' => '0',        // 0 = não é consumidor final
    'cIndOp'   => '030101',   // 6 dígitos (tabela oficial)
    'indDest'  => '0',        // 0 = tomador é o destinatário
    'valores'  => (object) [
        'trib' => (object) [
            'gIBSCBS' => (object) [
                'CST'        => '000',     // 3 dígitos
                'cClassTrib' => '000001',  // 6 dígitos
            ],
        ],
    ],
];
```

Grupos opcionais suportados: `tpOper`, `gRefNFSe` (até 99 chaves), `tpEnteGov`, `dest` (com endereço nacional ou exterior), `imovel` (`cCIB` ou endereço), `gReeRepRes` (até 1000 documentos), `cCredPres`, `gTribRegular` e `gDif`.

> ⚠️ **Os códigos são strings, nunca inteiros.** `CST`, `cClassTrib`, `cIndOp` e `cCredPres` têm zero à esquerda significativo — um cast para `int` transforma `'000001'` em `1` e a nota é rejeitada.

#### 📅 Calendário da Reforma — o que entra e o que sai, e quando

[](#-calendário-da-reforma--o-que-entra-e-o-que-sai-e-quando)

DataO que mudaImpacto em quem emite**01/08/2026**O grupo `` **passa a ser obrigatório** para autorização/recepção da NFS-e🚨 **Emissão sem o grupo é rejeitada.** Quem hoje não preenche `$std->infDPS->IBSCBS` para de emitir**01/08/2026**`tpRetPisCofins` **deixa de aceitar os valores `1` e `2`**Use os códigos novos (`3` a `9`) ou `0`**01/01/2027**`IBSCBS` passa a ser obrigatório **também para optantes do Simples Nacional** (até lá, dispensados)Emissores do Simples precisam preencher o grupo**01/01/2027**IBS/CBS passam a ser cobrados **"por fora"**: `vTotNF = vLiq + vCBS + vIBSTot` (em 2026 é só `vLiq`)Muda o valor total da nota — atenção a conciliação e integrações**01/01/2027**PIS/COFINS saem da base do IBS/CBS: `vBC` deixa de subtrair `vPIS`/`vCOFINS`Base de cálculo aumenta**até 2032**Período de transição da EC 132/2023Convivência dos dois regimes> As datas acima constam do **Anexo VI da NT SE/CGNFS-e nº 009** (leiaute RTC IBS/CBS v1.04) e da **NT SE/CGNFS-e nº 007**, de 07/02/2026. Confirme sempre no [portal da NFS-e](https://www.nfse.gov.br/) — o cronograma da Reforma vem sendo ajustado.

#### 🔭 Já previsto na NT 009, ainda não implementado

[](#-já-previsto-na-nt-009-ainda-não-implementado)

Estes campos existem no leiaute v1.04 mas **não** nos XSDs v1.01 que o pacote empacota. Serão adicionados quando os schemas v1.04 forem publicados:

Campo / grupoPara quê`indZFMALC`Zona Franca de Manaus / ALC — alíquota zero de CBS`indDoacao` + `gEstornoCred`operação de doação e estorno dos créditos de entrada`gIBSCBSAjuste`notas de ajuste (`vIBS`, `vCBS`)`gPagAntecipado`referência a NFS-e de pagamento antecipado`gPgtoVinc`vinculação com a transação de pagamento (PIX, cartão)`bensMoveis`locação de bens móveis (`cTribNac` 99.04.01)Dois pontos **mudam estrutura** e por isso aguardam os novos schemas: `finNFSe` migra de `IBSCBS/finNFSe` para `infDPS/finNFSe` (passando a aceitar `0` regular, `1` crédito e `2` débito), e o grupo `imovel` é redesenhado em `cMun` + `gLocacao` + `gUnidImob`.

### 🧭 Roteamento inteligente por município (emissão × cancelamento × consulta)

[](#-roteamento-inteligente-por-município-emissão--cancelamento--consulta)

Municípios com **emissor próprio** (ex.: **Americana-SP**) aceitam o leiaute nacional, mas num endpoint específico da prefeitura — enquanto as **consultas** continuam no Ambiente Nacional (ADN/SEFIN).

O pacote separa essas responsabilidades automaticamente:

- **Emissão / cancelamento** → usam a URL configurada em `storage/prefeituras.json` (override da prefeitura).
- **Consultas por chave** → usam sempre o Ambiente Nacional central.

Isso elimina os erros `404` que ocorriam quando a consulta era enviada, por engano, ao endpoint de emissão da prefeitura.

> ⚠️ **Emissão e cancelamento costumam ter endpoints DIFERENTES.** Em Americana-SP, por exemplo, a emissão vai para `.../api/adn/dps/recepcao` e o cancelamento (evento) para `.../api/adn/dps/evento`. Por isso o `storage/prefeituras.json` separa `urls` (base) de `operations` (caminho por operação): a URL final é `base + "/" + operação`. Se `cancelar_nfse` ficar vazio, o evento de cancelamento é postado na base de emissão e a prefeitura rejeita com **"DPS inválido ou não informado"**. Veja [Configuração da prefeitura](#configura%C3%A7%C3%A3o-da-prefeitura).

### 🧾 DANFSe local (sem depender do ADN)

[](#-danfse-local-sem-depender-do-adn)

Geração do PDF da DANFSe **diretamente a partir do XML**, sem precisar baixar o PDF oficial do Ambiente Nacional:

- **`Danfse`** — DANFSe completa a partir do XML autorizado.
- **`DanfseSimples`** — renderização tolerante (lê só a estrutura, não exige assinatura), ideal para **rascunhos, prévias e notas recebidas via DFe**.

Útil quando o ADN está indisponível, para pré-visualização antes da transmissão, ou para notas importadas que não têm PDF oficial salvo.

### ✅ Validação contra os XSDs oficiais

[](#-validação-contra-os-xsds-oficiais)

Os schemas em `storage/schemes/` eram arquivos órfãos: o pacote assinava e transmitia XML fora do schema, e o erro só aparecia como rejeição genérica da SEFAZ (`L2103`). Agora **toda transmissão é validada antes de assinar**, seguindo o mesmo padrão do [sped-nfe](https://github.com/nfephp-org/sped-nfe).

`enviaDps()` e `cancelaNfse()` lançam `SchemaValidationException` — com o elemento exato apontado — em vez de mandar um documento inválido para a SEFAZ:

```
use QuantumTecnology\NfseNacional\SchemaValidationException;

try {
    $retorno = $tools->enviaDps($dps->render());
} catch (SchemaValidationException $e) {
    // ["Element 'cServ': Missing child element(s). Expected is ( cNBS ). (linha 1)"]
    $erros = $e->getErrors();
}
```

Para validar por conta própria, antes de transmitir:

```
$xml = $dps->render();

if ($erros = $dps->validate($xml)) {   // [] quando válido
    // trata sem gastar uma ida à SEFAZ
}

$dps->getErrors();  // campos obrigatórios que ficaram vazios na montagem
```

O XSD é escolhido pela versão declarada no próprio XML (``), então a convivência de v1.01 e futuras v1.04 funciona sem configuração. Se o schema de uma versão não estiver no pacote, a emissão **não é bloqueada** — mesma decisão do sped-nfe. Para desligar: `$tools->setValidateSchema(false)`.

### 🛡️ Validação que falha cedo e com mensagem clara

[](#️-validação-que-falha-cedo-e-com-mensagem-clara)

- **`cTribNac` obrigatório (6 dígitos)** é validado na montagem do DPS. Antes, um valor ausente gerava uma tag `` vazia e a SEFAZ rejeitava com **`L2103`** (XML fora do schema) — erro difícil de diagnosticar. Agora você recebe uma `InvalidArgumentException` clara, **antes** de assinar e transmitir.
- **`getOperation()`** e a resolução de URL lançam exceção em chaves/origens desconhecidas, em vez de falhar silenciosamente.

### 🏷️ Namespace próprio

[](#️-namespace-próprio)

O namespace passou a ser **`QuantumTecnology\NfseNacional`**, alinhado aos demais pacotes da Quantum.

> ⚠️ **Breaking change** ao migrar de versões anteriores: troque os `use Hadder\NfseNacional\...` por `use QuantumTecnology\NfseNacional\...`.

### 🔁 Eventos: cancelamento e cancelamento por substituição

[](#-eventos-cancelamento-e-cancelamento-por-substituição)

O `renderEvento()` **nunca gerou XML válido** em versões anteriores: faltava o elemento obrigatório `` e o atributo `Id` tinha 59 caracteres onde o schema exige 62. Na prática, **nenhum cancelamento era aceito** pelo Ambiente Nacional. Corrigido.

Além do `e101101` (cancelamento), agora também é gerado o corpo do **`e105102`** (cancelamento por substituição), que antes tinha o código mapeado mas produzia um `infPedReg` sem o grupo do evento.

```
$std->infPedReg->e101101 = (object) [
    'cMotivo' => '1',                              // TSCodJustCanc: 1, 2 ou 9
    'xMotivo' => 'Erro na emissao da nota fiscal',
];

// Substituição usa outra enumeração — com zero à esquerda:
$std->infPedReg->e105102 = (object) [
    'cMotivo'      => '01',                        // TSCodJustSubst: 01..05, 99
    'chSubstituta' => '...',                       // chave da NFS-e substituta
];
```

O `xDesc` **não precisa ser informado** — é enumeração de valor fixo no schema e o pacote o deriva do próprio evento (a grafia do 105102, por exemplo, não leva cedilha). O `nPedRegEvento` assume `1` por padrão; informe-o em `$std->infPedReg->nPedRegEvento` nos eventos que podem se repetir.

### 🛡️ Compatibilidade de versão do PHP

[](#️-compatibilidade-de-versão-do-php)

`generateId()` e o cliente HTTP usavam `mb_str_pad()` e `mb_trim()`, **funções exclusivas do PHP 8.4**, enquanto o pacote declara `^8.1`. Em PHP 8.1–8.3 a instalação passava sem aviso e o pacote quebrava na primeira emissão. Trocadas por `str_pad()`/`trim()`.

> A regra `mb_str_functions` do `.php-cs-fixer.php` foi **desligada de propósito**: ela reconvertia essas chamadas automaticamente, reintroduzindo o bug a cada formatação.

### 🧹 Limpeza e correções

[](#-limpeza-e-correções)

- **`cNBS` é obrigatório** no schema e era emitido sob `isset()`, como se fosse opcional — a nota saía sem ele e a SEFAZ rejeitava com `L2103`.
- Remoção de código morto (incluindo um elemento `` órfão criado dentro do gerador de eventos) e de um `dump()` que vazava no output em produção.
- Correção de recursão sem `return` na geração de nomes de arquivos temporários de certificado.

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

[](#instalação)

Este pacote é distribuído via [Composer](https://getcomposer.org/):

```
composer require quantumtecnology/nfse-nacional
```

### Requisitos

[](#requisitos)

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

### Testes

[](#testes)

```
composer install
composer test          # ou: vendor/bin/phpunit
```

A suíte valida o XML gerado contra os **XSDs oficiais v1.01** (`storage/schemes/`) e inclui um teste de paridade com uma NFS-e real autorizada pelo Ambiente Nacional (fixture anonimizada em `tests/Fixtures/`).

Serviços implementados
----------------------

[](#serviços-implementados)

MétodoDescriçãoExemplo`enviaDps`Emite a NFS-e (envia o DPS)[MakeDps.php](examples/MakeDps.php)`enviaDps` **com IBS/CBS**Emissão com o destaque da Reforma Tributária[MakeDpsIbsCbs.php](examples/MakeDpsIbsCbs.php)`cancelaNfse` (`e101101`)Cancela uma NFS-e autorizada[CancelaNfse.php](examples/CancelaNfse.php)`cancelaNfse` (`e105102`)Cancelamento por **substituição**[SubstituiNfse.php](examples/SubstituiNfse.php)`consultarNfseChave`Consulta a NFS-e pela chave (XML)[ConsultaNfseChave.php](examples/ConsultaNfseChave.php)`consultarDpsChave`Consulta o DPS pela chave[ConsultaDpsChave.php](examples/ConsultaDpsChave.php)`consultarNfseEventos`Consulta eventos de uma NFS-e[ConsultaNfseEventos.php](examples/ConsultaNfseEventos.php)`consultarDanfse`Baixa a DANFSe (PDF oficial) do ADN[ConsultaDanfse.php](examples/ConsultaDanfse.php)`Danfse` / `DanfseSimples`DANFSe oficial **com fallback local** quando o ADN falha[GeraDanfseLocal.php](examples/GeraDanfseLocal.php)`Dps::validate()` / `getErrors()`Valida o XML antes de transmitir[MakeDpsIbsCbs.php](examples/MakeDpsIbsCbs.php)Todos os exemplos estão em [`examples/`](examples/) e rodam em PHP puro — basta ajustar o certificado e os dados do emitente.

⚠️ Avisos importantes
---------------------

[](#️-avisos-importantes)

### DANFSe: o endpoint do ADN é intermitente

[](#danfse-o-endpoint-do-adn-é-intermitente)

`consultarDanfse()` pode voltar **vazio para uma chave válida** — indisponibilidade temporária do Ambiente Nacional, não "nota inexistente". Em produção, trate assim:

1. **Repita algumas vezes** antes de desistir (com espera progressiva);
2. **Confira a assinatura do PDF** (`str_starts_with($retorno, '%PDF')`) — o endpoint também devolve JSON de erro;
3. **Não repita em caso de exceção** (certificado, config, rede): é falha dura;
4. **Caia para a geração local** a partir do XML.

> 🔑 A chave precisa ser **numérica, 50 dígitos**. A SEFAZ devolve `chaveAcesso` com o prefixo `NFS` (decoração do `Id` do XML) e, com ele, a consulta volta **vazia sem erro** — um dos enganos mais comuns. Limpe com `preg_replace('/\D/', '', $chave)`.

A implementação completa está em [GeraDanfseLocal.php](examples/GeraDanfseLocal.php).

### Configuração da prefeitura

[](#configuração-da-prefeitura)

A variável `prefeitura` aceita atualmente dois formatos:

- Um identificador textual, por exemplo: `americana-sp`
- O **código IBGE** do município (ex.: `3501608`)

⚠️ Ambos são aceitos por compatibilidade, mas **o padrão futuro será exclusivamente o código IBGE**. Recomenda-se já adotá-lo. As URLs e operações por município ficam em [`storage/prefeituras.json`](storage/prefeituras.json).

#### Estrutura do `prefeituras.json`

[](#estrutura-do-prefeiturasjson)

Cada município tem `urls` (a **base** por ambiente) e `operations` (o **caminho** de cada operação). A URL final é montada como `base + "/" + operação` (a operação vazia `""` usa a base direta):

```
{
    "3501608": {                         // código IBGE (chave recomendada)
        "urls": {
            "sefin_producao":    "https://nfse.americana.sp.gov.br/api/adn/dps",
            "sefin_homologacao": "https://americanahomologacao.nfe.com.br/api/adn/dps"
        },
        "operations": {
            "emitir_nfse":   "recepcao",  // => .../api/adn/dps/recepcao
            "cancelar_nfse": "evento"     // => .../api/adn/dps/evento
        }
    }
}
```

> ⚠️ **Não deixe `cancelar_nfse` vazio quando o cancelamento usa um caminho diferente da emissão.** Se a base apontar para `.../recepcao` e `cancelar_nfse` for `""`, o evento de cancelamento será postado em `.../recepcao` e a prefeitura responderá **"DPS inválido ou não informado"**. Prefira manter a base no nível comum (`.../api/adn/dps`) e especificar cada operação. Consulte o manual da prefeitura para os endpoints corretos (emissão, evento/cancelamento, consulta por chave, download de XML/DANFSe).

### `consultarNfseChave()` e encoding

[](#consultarnfsechave-e-encoding)

O XML, após o `gzdecode`, vem em **ISO-8859-1**. Por padrão o método mantém ISO via `mb_convert_encoding`. Caso tenha problemas, passe `false` no segundo parâmetro para receber o XML cru:

```
// Retorna ISO-8859-1 (padrão)
$tools->consultarNfseChave('CHAVE_NFSE');

// Retorna o XML cru, sem mb_convert_encoding
$tools->consultarNfseChave('CHAVE_NFSE', false);
```

FAQ — E999 (erro não catalogado)
--------------------------------

[](#faq--e999-erro-não-catalogado)

Esse erro se refere a uma falha **não catalogada pela própria Receita**, incluindo erros de servidor (500) e problemas aleatórios. No ambiente de **homologação** costuma aparecer sem motivo aparente, enquanto em **produção** a nota normalmente é emitida sem problemas.

Causa mais comum relatada:

- CPF/CNPJ do **prestador** não existente / não cadastrado / não habilitado na NFS-e Nacional ou na prefeitura.

Créditos
--------

[](#créditos)

Este fork é mantido pela **[Quantum Tecnology](https://github.com/Quantum-Tecnology)**, mas **não nasceu do zero**. Ele se apoia inteiramente no trabalho de quem veio antes.

Nosso agradecimento à **equipe Hadder** e em especial ao **Fernando Friedrich** ([Rainzart/nfse-nacional](https://github.com/Rainzart/nfse-nacional)) por criar, manter e disponibilizar este pacote como Open Source. As melhorias desta versão só foram possíveis porque havia uma base sólida e bem estruturada para construir em cima.

A seguir, o agradecimento original do autor — que mantemos na íntegra:

> ### (por Fernando Friedrich)
>
> [](#por-fernando-friedrich)
>
> Este pacote **não caiu do céu**, **não apareceu por geração espontânea** e muito menos foi escrito do zero em um surto de genialidade de minha parte.
>
> Ele foi **copiado, clonado, analisado, desmontado, reaproveitado, adaptado e por fim ajustado por mim**, tendo como base pacotes de emissão de **NFSe** que eram disponibilizados como **Open Source** pelo Sr. **[Roberto L. Machado](https://github.com/robmachado)** e que, atualmente, não se encontram mais disponíveis publicamente.
>
> Sim, **variáveis, métodos, classes, estruturas e ideias de arquitetura** foram utilizadas como referência (copiadas) — algumas foram alteradas, outras melhoradas, outras apenas sobreviveram ao tempo — sempre tendo como principal base o projeto **[NFePHP](https://github.com/robmachado/sped-nfse)**.
>
> Na época da criação deste repositório, o cenário era simples: eu precisava **emitir notas fiscais para meus clientes**. Não existia nenhuma alternativa Open Source ativa e funcional em PHP, e depender de **APIs pagas** definitivamente não era uma opção para mim.
>
> Diante disso, fica aqui meu agradecimento **mais do que merecido** ao **Roberto**, por criar, manter e disponibilizar gratuitamente projetos como o **NFePHP**.
>
> Sem esse trabalho prévio, este repositório **muito provavelmente não existiria**.

E, por fim, obrigado a **todas as pessoas que contribuem** com este projeto — enviando PRs, sugerindo melhorias, corrigindo bugs ou apontando problemas. A lista de contribuidores do projeto original pode ser vista em:

Licença
-------

[](#licença)

MIT.

###  Health Score

44

—

FairBetter than 90% of packages

Maintenance71

Regular maintenance activity

Popularity17

Limited adoption so far

Community18

Small or concentrated contributor base

Maturity60

Established project with proven stability

 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 ~20 days

Recently: every ~11 days

Total

32

Last Release

18d ago

Major Versions

1.0.6 → 2.0.02026-01-03

2.3.4 → 3.0.02026-06-16

PHP version history (2 changes)1.0.0PHP ^8.2

2.3.0PHP ^8.1

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/60905574?v=4)[Luis Gustavo Santarosa Pinto](/maintainers/GustavoSantarosa)[@GustavoSantarosa](https://github.com/GustavoSantarosa)

---

Top Contributors

[![Rainzart](https://avatars.githubusercontent.com/u/563814?v=4)](https://github.com/Rainzart "Rainzart (30 commits)")[![GustavoSantarosa](https://avatars.githubusercontent.com/u/60905574?v=4)](https://github.com/GustavoSantarosa "GustavoSantarosa (28 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)")[![gersonfs](https://avatars.githubusercontent.com/u/293154?v=4)](https://github.com/gersonfs "gersonfs (2 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)")[![visio-simenes](https://avatars.githubusercontent.com/u/215207795?v=4)](https://github.com/visio-simenes "visio-simenes (1 commits)")[![brunoalvim](https://avatars.githubusercontent.com/u/24271696?v=4)](https://github.com/brunoalvim "brunoalvim (1 commits)")[![evandro-simenes](https://avatars.githubusercontent.com/u/215207795?v=4)](https://github.com/evandro-simenes "evandro-simenes (1 commits)")[![MarcelaBeh](https://avatars.githubusercontent.com/u/102764966?v=4)](https://github.com/MarcelaBeh "MarcelaBeh (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

nfsenfse-nacionalmei

###  Code Quality

TestsPHPUnit

Code StyleLaravel Pint

### Embed Badge

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

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

###  Alternatives

[laravel/framework

The Laravel Framework.

34.9k556.2M21.5k](/packages/laravel-framework)[pimcore/pimcore

Content &amp; Product Management Framework (CMS/PIM/E-Commerce)

3.8k3.9M535](/packages/pimcore-pimcore)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

762297.9k53](/packages/civicrm-civicrm-core)[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k39.6k](/packages/matomo-matomo)[hadder/nfse-nacional

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

765.2k](/packages/hadder-nfse-nacional)[solspace/craft-freeform

The most flexible and user-friendly form building plugin!

54686.7k25](/packages/solspace-craft-freeform)

PHPackages © 2026

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