dfe 0.7.2

DFE - Documentos Fiscais Eletrônicos Brasileiros
Documentation

dfe

Documentos Fiscais Eletrônicos Brasileiros — crate Rust para integração com os webservices da SEFAZ.

Cobre o ciclo fiscal de NF-e e NFC-e — emissão, eventos, assinatura, validação, DANFE e impressão — em uma única biblioteca Rust async, com roteamento para as 27 UFs.

Crates.io Docs.rs License: MIT Sponsor GustavoOta


Características

  • API async em Rust. Cada operação é um builder fluente que retorna a resposta da SEFAZ tipada.
  • Roteamento multi-UF. Seleciona o webservice a partir da UF do documento (autorizadores próprios e compartilhados), em produção e homologação, para as 27 UFs.
  • Certificado A1 (.pfx). Assinatura XML-DSig (RSA-SHA1) e TLS mútuo resolvidos internamente. Não depende de OpenSSL; libxml2 é linkado estaticamente.
  • Validação XSD. Schemas oficiais da SEFAZ embutidos no binário, sem arquivos externos.
  • Erros tipados. Todas as operações retornam Result<T, DfeError>; o caminho de request não dá panic.
  • Build modular. As camadas de DANFE, ESC/POS e distribuição são features opcionais (ligadas por padrão) — veja Features de compilação.

Funcionalidades

Documentos e eventos fiscais

Funcionalidade Descrição
Emissão NF-e / NFC-e Autorização via SOAP (modelos 55 e 65), com totais calculados automaticamente
Cancelamento Evento 110111 (NF-e e NFC-e)
Cancelamento por substituição Evento 110112 para NFC-e (NT 2018.004)
Carta de Correção (CC-e) Evento 110110, com nSeqEvento acumulativo
Manifestação do destinatário Ciência, confirmação, desconhecimento e operação não realizada
Distribuição de DF-e Consulta ao Ambiente Nacional por NSU ou chave de acesso
Status do webservice Disponibilidade por UF e ambiente

Fiscal, impressão e infraestrutura

Funcionalidade Descrição
Roteamento multi-UF 27 UFs (autorizadores próprios e compartilhados), produção e homologação
IBS/CBS (Reforma Tributária) Grupo IBS/CBS por item e nos totais (omitido quando não aplicável)
CNPJ alfanumérico Suporte ao novo formato de CNPJ (letras e dígitos)
DANFE em PDF A4 e 80mm, NF-e e NFC-e, com suporte a logotipo
ESC/POS EscPosBuilder (layout livre) e EscPosNFCeBuilder (NFC-e pronto)
Validação XSD Schemas oficiais da SEFAZ embutidos no binário
Validação CNPJ/CPF Dígito verificador (inclui CNPJ alfanumérico)
Extração de XML Leitura de campos de XML autorizado

Início rápido

[dependencies]
dfe = "0.6"
use dfe::{NFeBuilder, DfeError};
use dfe::tipos::{Det, Emit, Icms, Ide, Pag, Pis, Cofins, Total, Transp};

async fn emitir() -> Result<(), DfeError> {
    let resp = NFeBuilder::new()
        .cert("./cert.pfx", "senha")
        .ide(Ide { c_uf: 35, mod_: 55, serie: 1, n_nf: 1, tp_amb: 2, ..Default::default() })
        .emitente(Emit { cnpj: Some("11111111111111".into()), ..Default::default() })
        .itens(vec![Det {
            c_prod: "001".into(), x_prod: "PRODUTO".into(), ncm: "22030000".into(),
            cfop: 5102, q_com: 1.0, v_un_com: 10.0, v_prod: 10.0,
            icms: Icms::sn102(0, "400"),
            pis: Pis::Nt { cst: "07".into() },
            cofins: Cofins::Nt { cst: "07".into() },
            ..Default::default()
        }])
        .total(Total::default())
        .transporte(Transp::default())
        .pagamento(Pag::default())
        .emitir()
        .await?;

    println!("cStat: {}", resp.protocolo.inf_prot.c_stat);
    Ok(())
}

Windows: antes de compilar, leia docs/instalacao.md — é necessário configurar o vcpkg para linking estático do libxml2. OpenSSL não é uma dependência.


Features de compilação

Todas as features são ligadas por padrão. Para reduzir o build e as dependências, desligue as que não usar:

Feature Liga Padrão
danfe Geração de DANFE em PDF ✅
escpos Impressão ESC/POS ✅
distribuicao Distribuição de DF-e + manifestação ✅
# Só emissão/cancelamento + DANFE, sem ESC/POS nem distribuição:
dfe = { version = "0.6", default-features = false, features = ["danfe"] }

O núcleo — emissão, cancelamento, substituição, carta de correção, status, extração de XML, assinatura e validação — está sempre disponível, independente das features.


Documentação

Seção Descrição
Instalação Plataformas suportadas, libxml2/vcpkg (linking estático no Windows)
Emissão NF-e / NFC-e NFeBuilder, métodos, totais automáticos
Cancelamento CancelarBuilder
Manifestação do Destinatário Ciência, confirmação, desconhecimento, op. não realizada
Distribuição de DF-e Consulta por NSU e chave de acesso
DANFE Geração de PDF A4 e 80mm
ESC/POS EscPosBuilder e EscPosNFCeBuilder
Status do Webservice Disponibilidade por UF e modelo (NF-e 55 / NFC-e 65), códigos e limite de consulta
Tratamento de Erros DfeError — variantes e quando ocorrem
ICMS, PIS, COFINS Tipos de ICMS, IPI, PIS/COFINS e validação CNPJ/CPF
Testes Suites disponíveis e requisitos
Notas e Roadmap Boas práticas e funcionalidades planejadas

Referência completa dos builders (incluindo SubstituicaoBuilder, CartaCorrecaoBuilder e as features) em API.md.


Licença

MIT — veja LICENSE.