PHPackages                             voopenp/laravel-nfe - 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. voopenp/laravel-nfe

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

voopenp/laravel-nfe
===================

Emissão de NF-e (modelo 55) e NFC-e (modelo 65) na SEFAZ para aplicações Laravel: numeração segura sob concorrência, DANFE/DANFCE em PDF via dompdf e QR code de NFC-e.

0.1.1(1mo ago)111AGPL-3.0-or-laterPHPPHP ^8.1

Since Jul 2Pushed 1mo agoCompare

[ Source](https://github.com/voopenp/laravel-nfe)[ Packagist](https://packagist.org/packages/voopenp/laravel-nfe)[ RSS](/packages/voopenp-laravel-nfe/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependencies (5)Versions (3)Used By (0)

voopenp/laravel-nfe
===================

[](#voopenplaravel-nfe)

Emissão de **NF-e (modelo 55)** e **NFC-e (modelo 65)** direto na SEFAZ para aplicações Laravel, usando [sped-nfe](https://github.com/nfephp-org/sped-nfe).

- Montagem e validação do XML (layout 4.00), assinatura com certificado A1 e envio síncrono, com reconsulta de recibo quando a SEFAZ demora.
- Numeração por modelo + série + ambiente segura sob concorrência, reaproveitando números de notas rejeitadas/erro da mesma referência.
- Rateio de desconto entre os itens com fechamento exato dos totais.
- Cancelamento (evento) e reconsulta de status pela chave.
- Histórico no model `NfeNota` (rascunho/autorizada/processando/rejeitada/cancelada/erro).
- DANFE/DANFCE em PDF via Blade + dompdf, com QR code da NFC-e embutido (sped-da conflita com tc-lib-barcode 2.x).

**Escopo:** venda presencial a consumidor final, pagamento à vista, sem frete, PIS/COFINS CST 49 sem valor. ICMS por CSOSN (CRT 1/4) ou CST com alíquota simples (CRT 2/3).

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

[](#instalação)

```
composer require voopenp/laravel-nfe

php artisan vendor:publish --tag=nfe-migrations
php artisan migrate
```

O service provider é registrado por auto-discovery. Em aplicações multi-tenant (ex.: stancl/tenancy), mova a migration publicada para o diretório de migrations do tenant.

Config e views são publicáveis com as tags `nfe-config` e `nfe-views`.

Uso
---

[](#uso)

### 1. Implemente o `NfeConfigProvider`

[](#1-implemente-o-nfeconfigprovider)

Único ponto obrigatório: diz ao pacote quem emite, com qual certificado e em qual ambiente.

```
use Voope\Nfe\Contracts\NfeConfigProvider;
use Voope\Nfe\Data\{Emitente, CertificadoA1, Csc};
use Voope\Nfe\Exceptions\NfeException;

class MeuNfeProvider implements NfeConfigProvider
{
    public function habilitado(): bool
    {
        return true;
    }

    public function ambiente(): int
    {
        return 2; // 1 produção, 2 homologação
    }

    public function emitente(): Emitente
    {
        return new Emitente(
            razaoSocial: 'EMPRESA LTDA',
            cnpj: '00000000000000',
            ie: '0000000000',
            crt: 1,                        // 1 Simples, 2 sublimite, 3 normal, 4 MEI
            codigoMunicipio: '4314902',    // IBGE, 7 dígitos
            logradouro: 'Rua Tal',
            numero: '100',
            bairro: 'Centro',
            cidade: 'Porto Alegre',
            cep: '90000000',
            fone: '5133330000',
            email: 'fiscal@empresa.com.br',
        );
    }

    public function certificado(): CertificadoA1
    {
        $raw = file_get_contents($caminhoDoPfx);
        if ($raw === false) {
            throw new NfeException('Certificado digital não encontrado.');
        }

        return new CertificadoA1($raw, $senha);
    }

    public function certificadoConfigurado(): bool
    {
        return $caminhoDoPfx !== '' && $senha !== '';
    }

    public function csc(): ?Csc
    {
        return $id && $token ? new Csc($id, $token) : null; // exigido só para NFC-e
    }

    public function serie(int $modelo): int
    {
        return 1;
    }
}
```

Registre no container:

```
$this->app->bind(NfeConfigProvider::class, MeuNfeProvider::class);
```

### 2. Emita a partir do seu domínio

[](#2-emita-a-partir-do-seu-domínio)

```
use Voope\Nfe\NfeService;
use Voope\Nfe\Data\{Nota, Item, Pagamento, Destinatario};

$nota = app(NfeService::class)->emitir(new Nota(
    modelo: 65,
    itens: [
        new Item(
            descricao: 'Produto X',
            quantidade: 2,
            valorUnitario: 49.90,
            codigo: 'SKU-1',
            ncm: '93062100',
            csosn: '102',
        ),
    ],
    pagamento: new Pagamento(tPag: '17'), // tpIntegra=2 automático p/ cartão e pix
    destinatario: new Destinatario(cpfCnpj: '00000000000', nome: 'Fulano'),
    desconto: 5.00,
    referencia: $venda->id, // vínculo livre com o seu domínio
));

$nota->status;      // autorizada / rejeitada / processando / erro
$nota->chave;
$nota->danfe_path;  // PDF no disco configurado
```

### Cancelamento, reconsulta e checklist

[](#cancelamento-reconsulta-e-checklist)

```
app(NfeService::class)->cancelar($nota, 'Justificativa com no mínimo 15 caracteres');
app(NfeService::class)->consultar($nota);

// para telas de configuração; nunca lança exceção
app(NfeService::class)->checklist();
// ['cert' => true, 'cnpj' => true, ..., 'baseOk' => true, 'nfceOk' => false, 'emProducao' => false]
```

Utilitário de QR code (data URI PNG): `Voope\Nfe\Support\QrCode::dataUri($texto)`.

Configuração (`config/nfe.php`)
-------------------------------

[](#configuração-confignfephp)

chaveuso`ver_proc`nome do aplicativo emissor gravado na tag `verProc``token_ibpt`token IBPT opcional`resp_tec.*`responsável técnico (NT2018.005); vazio usa o emitente`storage.disk` / `storage.path`onde os PDFs são gravados (`{path}/{modelo}/{chave}.pdf`)`table`tabela do histórico (`nfe_notas`)`views.danfe` / `views.danfce`views usadas nos PDFs`schemes` / `versao`pacote de schemas e versão do layoutRequisitos
----------

[](#requisitos)

- PHP &gt;= 8.1 com ext-openssl e ext-soap (exigência do sped-nfe)
- Laravel 10, 11 ou 12
- Certificado digital A1 (.pfx)

Licença
-------

[](#licença)

[AGPL-3.0-or-later](LICENSE). Quem usar este pacote num sistema acessado pela rede precisa disponibilizar o código-fonte completo do sistema aos usuários.

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance90

Actively maintained with recent releases

Popularity9

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity33

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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

Total

2

Last Release

48d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a5c981d5d2f75daef48ec27bb42e4d6711b108cdaae670f347e11a6172a1a565?d=identicon)[N7z](/maintainers/N7z)

---

Top Contributors

[![N7z](https://avatars.githubusercontent.com/u/73448096?v=4)](https://github.com/N7z "N7z (4 commits)")

### Embed Badge

![Health badge](/badges/voopenp-laravel-nfe/health.svg)

```
[![Health](https://phpackages.com/badges/voopenp-laravel-nfe/health.svg)](https://phpackages.com/packages/voopenp-laravel-nfe)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3345.4M354](/packages/psalm-plugin-laravel)[yajra/laravel-oci8

Oracle DB driver for Laravel via OCI8

8723.3M27](/packages/yajra-laravel-oci8)[mike-bronner/laravel-model-caching

Automatic caching for Eloquent models.

2.4k161.4k2](/packages/mike-bronner-laravel-model-caching)[api-platform/laravel

API Platform support for Laravel

58190.1k21](/packages/api-platform-laravel)[pressbooks/pressbooks

Pressbooks is an open source book publishing tool built on a WordPress multisite platform. Pressbooks outputs books in multiple formats, including PDF, EPUB, web, and a variety of XML flavours, using a theming/templating system, driven by CSS.

45844.8k1](/packages/pressbooks-pressbooks)[forjedio/inertia-table

Backend-driven dynamic tables for Laravel + Inertia.js

272.0k](/packages/forjedio-inertia-table)

PHPackages © 2026

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