PHPackages                             betocampoy/champs-fiscal - 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. [API Development](/categories/api)
4. /
5. betocampoy/champs-fiscal

ActiveLibrary[API Development](/categories/api)

betocampoy/champs-fiscal
========================

Componente fiscal reutilizável para DC-e (DACE) e NFS-e Nacional — emissão, consulta, cancelamento.

v1.0.13(1mo ago)047MITPHPPHP &gt;=8.1

Since Apr 23Pushed 1mo agoCompare

[ Source](https://github.com/betocampoy/champs-fiscal)[ Packagist](https://packagist.org/packages/betocampoy/champs-fiscal)[ RSS](/packages/betocampoy-champs-fiscal/feed)WikiDiscussions main Synced 3w ago

READMEChangelogDependencies (10)Versions (15)Used By (0)

Champs Fiscal
=============

[](#champs-fiscal)

Componente PHP reutilizável para rotinas fiscais brasileiras. Suporta:

DocumentoOperações**DC-e** (Declaração de Conteúdo Eletrônica)Emissão, consulta, cancelamento, DACE**NFS-e Nacional** (Nota Fiscal de Serviço Eletrônica)Emissão, consultaInstalação
----------

[](#instalação)

```
composer require betocampoy/champs-fiscal
```

Requisitos
----------

[](#requisitos)

- PHP `>= 8.1`
- Extensões: `ext-dom`, `ext-libxml`, `ext-openssl`, `ext-soap`, `ext-mbstring`

Dependências
------------

[](#dependências)

- `betocampoy/champs-certificate` — abertura e leitura de certificados A1/A3
- `symfony/http-client` — transporte HTTP/REST para NFS-e Nacional
- `endroid/qr-code` — geração de QR Code para DACE
- `picqer/php-barcode-generator` — geração de código de barras para DACE

---

DC-e
----

[](#dc-e)

### Variáveis de ambiente

[](#variáveis-de-ambiente)

```
# .env
CHAMPS_FISCAL_DCE_EMISSION_TYPE='1'
CHAMPS_FISCAL_DCE_AUTHORIZER_SITE_NUMBER='0'
CHAMPS_FISCAL_DCE_APPLICATION_VERSION='MINHA APP'
CHAMPS_DCE_QRCODE_BASE_URL='https://dfe-portal.svrs.rs.gov.br/dce/QRCode'

# .env.local  (não versionar)
CHAMPS_FISCAL_DCE_ENVIRONMENT='2'   # 1=produção, 2=homologação
```

```
use BetoCampoy\Champs\Fiscal\Config\DceEnvironmentDefaults;

$defaults = DceEnvironmentDefaults::fromEnv();
```

### Autorização

[](#autorização)

```
use BetoCampoy\Champs\Fiscal\Dce\Authorization\DceAuthorizationService;

$service = new DceAuthorizationService(environment: 'homolog');

$response = $service->authorize($payload, $openedCertificateData);

if ($response->isSuccess()) {
    $chave = $response->getParsedValue('access_key');
}
```

### Consulta

[](#consulta)

```
use BetoCampoy\Champs\Fiscal\Facade\FiscalDocumentQueryFacade;

$facade = new FiscalDocumentQueryFacade();
$response = $facade->queryByAccessKey($accessKey, $openedCertificate);
```

### Cancelamento

[](#cancelamento)

```
use BetoCampoy\Champs\Fiscal\Dce\Event\Cancel\DceCancelService;

$service = new DceCancelService(environment: 'homolog');
$response = $service->cancel($payload, $openedCertificateData);
```

### Normalização de request

[](#normalização-de-request)

```
use BetoCampoy\Champs\Fiscal\Config\DceEnvironmentDefaults;
use BetoCampoy\Champs\Fiscal\Dce\Request\Authorization\Normalizer\DceAuthorizationRequestNormalizer;

$normalizer = new DceAuthorizationRequestNormalizer();
$request = $normalizer->normalize($request, DceEnvironmentDefaults::fromEnv());
```

---

NFS-e Nacional
--------------

[](#nfs-e-nacional)

Suporte à **NFS-e Nacional** (sistema federal obrigatório para municípios aderentes desde 2026). Comunicação via REST + JSON com autenticação mTLS por certificado ICP-Brasil.

- Produção: `https://adn.nfse.gov.br`
- Homologação: `https://adn.producaorestrita.nfse.gov.br`

### Emissão

[](#emissão)

```
use BetoCampoy\Champs\Fiscal\Nfse\Facade\NfseFacade;
use BetoCampoy\Champs\Fiscal\Nfse\Request\Input\NfseEmitRequest;
use BetoCampoy\Champs\Fiscal\Nfse\Request\Input\NfseProviderRequest;
use BetoCampoy\Champs\Fiscal\Nfse\Request\Input\NfseTakerRequest;
use BetoCampoy\Champs\Fiscal\Nfse\Request\Input\NfseTakerAddressRequest;
use BetoCampoy\Champs\Fiscal\Nfse\Request\Input\NfseServiceRequest;
use BetoCampoy\Champs\Fiscal\Nfse\Request\Input\NfseValuesRequest;

$facade = new NfseFacade(environment: 'homolog'); // ou 'prod'

$response = $facade->emit(
    request: new NfseEmitRequest(
        provider: new NfseProviderRequest(
            cnpj: '12345678000195',
            municipalRegistration: '12345',    // inscrição municipal
            emitterIbgeCode: '3515152',         // código IBGE do município do prestador
            simplesNacional: false,
        ),
        taker: new NfseTakerRequest(
            name: 'Empresa Cliente Ltda',
            cnpj: '98765432000111',             // ou cpf: '...'
            address: new NfseTakerAddressRequest(
                ibgeCode: '3550308',
                zipCode: '01310100',
                street: 'Av. Paulista',
                number: '1000',
                neighborhood: 'Bela Vista',
            ),
            email: 'financeiro@cliente.com.br',
        ),
        service: new NfseServiceRequest(
            nationalServiceCode: '16.01',        // código de tributação nacional
            municipalServiceCode: '1601',        // código do município
            description: 'Serviço de coleta e entrega de encomendas',
            serviceMunicipalityIbge: '3515152',  // IBGE do local de prestação
            cnae: '5320201',
        ),
        values: new NfseValuesRequest(
            serviceValue: 150.00,
            issAliquot: 0.02,    // 2% — verificar alíquota do município
            issRetained: false,
        ),
        rpsNumber: 1,
        rpsSeries: 'E',
    ),
    certificate: $openedCertificate,
);

if ($response->isSuccess()) {
    $chaveNfse = $response->getParsedValue('access_key');
    $numero    = $response->getParsedValue('number');
}
```

### Consulta

[](#consulta-1)

```
$response = $facade->query($chaveNfse, $openedCertificate);
```

### Abertura do certificado

[](#abertura-do-certificado)

O parâmetro `$openedCertificate` é um `OpenedCertificateData` do pacote `betocampoy/champs-certificate`:

```
use BetoCampoy\Champs\Certificate\Service\CertificateReaderService;

$reader = new CertificateReaderService();
$openedCertificate = $reader->readFromFile('/path/to/cert.pfx', 'senha');
```

---

Estrutura do pacote
-------------------

[](#estrutura-do-pacote)

```
src/
├── Config/              Leitura de variáveis de ambiente (DC-e)
├── Dce/
│   ├── Authorization/   Emissão DC-e
│   ├── Query/           Consulta DC-e
│   ├── Event/Cancel/    Cancelamento DC-e
│   ├── Dace/            Impressão e mapeamento DACE
│   ├── Request/         Input, Builder, Mapper, Normalizer, Validator
│   ├── Response/        Parsers de resposta SOAP
│   ├── Transmission/    Transmissão SOAP + configuração
│   └── Signer/          Configuração de assinatura XML
├── Nfse/
│   ├── Authorization/   Emissão NFS-e (DPS → NFS-e)
│   ├── Query/           Consulta NFS-e
│   ├── Common/          DTOs compartilhados (Provider, Taker, Service, Values)
│   ├── Request/         Input e Payload builder
│   ├── Transmission/    Transmissão REST + configuração
│   └── Facade/          NfseFacade (entry point)
├── Facade/              FiscalDocumentQueryFacade (consulta DC-e)
├── Transmission/
│   ├── Contract/        DocumentTransmitterInterface
│   ├── Dto/             DocumentRequest, DocumentResponse, DocumentOperation
│   └── Transport/       SoapTransport, HttpTransport, credenciais TLS
├── Xml/                 XmlSigner, XmlSignatureConfig
├── ValueObject/         DfeAccessKey, DfeAccessKeyType
└── resources/           XSDs e WSDLs locais

```

---

Uso em desenvolvimento (path local)
-----------------------------------

[](#uso-em-desenvolvimento-path-local)

Para apontar para o pacote local sem publicar no Packagist, adicione ao `composer.json` do projeto consumidor:

```
{
    "repositories": [
        {
            "type": "path",
            "url": "../champs-fiscal",
            "options": {
                "symlink": true
            }
        }
    ],
    "require": {
        "betocampoy/champs-fiscal": "@dev"
    }
}
```

Após rodar `composer update betocampoy/champs-fiscal`, o Composer criará um symlink para o diretório local — qualquer alteração no pacote é imediatamente refletida no projeto consumidor sem necessidade de reinstalar.

> Ajuste o `url` para o caminho relativo correto entre os dois projetos.

---

Publicação de nova versão
-------------------------

[](#publicação-de-nova-versão)

```
git add .
git commit -m "feat: adiciona suporte a NFS-e Nacional"
git tag v2.0.0
git push origin main --tags
```

Licença
-------

[](#licença)

MIT

###  Health Score

42

—

FairBetter than 88% of packages

Maintenance93

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

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

Total

14

Last Release

32d ago

### Community

Maintainers

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

---

Top Contributors

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

---

Tags

phpcertificatesoapnfsenfs-edcefiscalnota-fiscal-servicodace

### Embed Badge

![Health badge](/badges/betocampoy-champs-fiscal/health.svg)

```
[![Health](https://phpackages.com/badges/betocampoy-champs-fiscal/health.svg)](https://phpackages.com/packages/betocampoy-champs-fiscal)
```

###  Alternatives

[kimai/kimai

Kimai - Time Tracking

4.8k9.0k1](/packages/kimai-kimai)[leantime/leantime

Open source project management system for non-project managers. Simple like Trello, powerful like Jira. Built with neurodiversity in mind.

10.2k4.0k](/packages/leantime-leantime)[n1ebieski/ksef-php-client

PHP API client that allows you to interact with the API Krajowego Systemu e-Faktur

9067.8k](/packages/n1ebieski-ksef-php-client)[chameleon-system/chameleon-base

The Chameleon System core.

1028.7k5](/packages/chameleon-system-chameleon-base)

PHPackages © 2026

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