NFS-e Nacional
Este módulo emite a NFS-e Nacional (Nota Fiscal de Serviços eletrônica no padrão nacional) diretamente no ambiente Sefin Nacional / ADN (Ambiente de Dados Nacional), sem gateway pago e sem passar pelo webservice de cada prefeitura.
O que é a NFS-e Nacional. É o padrão único de NFS-e mantido pelo Governo Federal e pelos municípios, com leiaute e regras de validação comuns. O prestador não emite a nota diretamente: ele envia uma DPS (Declaração de Prestação de Serviços) assinada, e o ADN valida, autoriza e devolve a NFS-e com sua chave de acesso de 50 dígitos. Os municípios conveniados ao padrão nacional usam esse mesmo ambiente.
O que o módulo faz. A partir de um l10n_br_fiscal.document de serviço (modelo SE) confirmado:
monta a DPS (versão 1.00 do leiaute) e valida contra o XSD oficial;
assina a DPS com o certificado A1 (ICP-Brasil) da empresa;
envia ao ADN por REST com mTLS e grava a NFS-e autorizada, a chave de acesso de 50 dígitos, o número e o protocolo;
trata a rejeição do ADN, mostrando o motivo legível no chatter e no evento do documento;
cancela a NFS-e pelo evento 101101, com o código do motivo escolhido no assistente de cancelamento;
consulta no ADN se a nota foi cancelada fora do Odoo (eventos 101101 e 305101);
gera o DANFSe em PDF a partir do XML autorizado (layout v2.0 da NT 008/2026), sem consultar nenhum portal;
importa o XML de uma NFS-e Nacional ou de uma DPS para um documento fiscal.
Como se encaixa. Depende de l10n_br_nfse, de onde vêm o campo de provedor e o de ambiente da NFS-e, mas mapeia a DPS direto sobre o l10n_br_fiscal.document: os campos de serviço e de impostos já estão no núcleo fiscal, então nada do fluxo municipal (RPS, ABRASF) é reaproveitado. O leiaute vem do módulo l10n_br_nfse_spec (mixins xsdata-odoo sobre os schemas oficiais), ligado ao documento pelo spec_driven_model. Ao escolher o provedor Sefin Nacional (ADN) na empresa, os documentos de serviço dela passam por este módulo, e os módulos municipais e de gateway continuam atendendo as demais empresas.
Table of contents
Configuration
Na empresa:
Certificado digital: cadastre o certificado A1 (ICP-Brasil) da empresa (módulo l10n_br_fiscal_certificate). Ele assina a DPS e os eventos e também autentica a conexão mTLS com o ADN. A chave privada é usada só em memória e em arquivo temporário com permissão restrita, e não é registrada em log.
Processador de documentos eletrônicos: Odoo Community (oca).
Provedor de NFS-e: Sefin Nacional (ADN) (provedor_nfse = nacional). Só as empresas com esse provedor emitem pelo ADN.
Ambiente da NFS-e: Produção ou Homologação. No ADN a homologação se chama produção restrita e usa outro endereço. O documento copia o ambiente da empresa na criação, e você pode alterá-lo no próprio documento.
Cadastro da empresa: CNPJ ou CPF, município (com código IBGE) e regime tributário (MEI, Simples Nacional ou regime normal), pois a DPS informa o município emissor e o regime do prestador.
Série e numeração. A série e o número do documento vêm do documento fiscal (a série na linha de numeração da empresa). O número informado é o nDPS, e não existe RPS: a numeração é livre e a chave da DPS, de 42 dígitos, é montada com município, tipo de emissor, CNPJ/CPF, série e número.
Município. O município do prestador precisa estar conveniado ao padrão nacional. Para testar, use o ambiente de homologação (produção restrita) com o certificado da empresa.
Dependências Python: nfelib, brazilfiscalreport, erpbrasil.assinatura, requests e cryptography.
Usage
Emitir
Crie um documento fiscal de serviço (modelo SE) para uma empresa configurada com o provedor Sefin Nacional (ADN), com tomador, linhas de serviço (código de serviço, impostos) e a operação fiscal.
Confirme o documento. O módulo monta a DPS, assina com o certificado A1 e valida contra o XSD. Se houver erro de schema, ele aparece no documento e nada é enviado; volte o documento para rascunho, corrija e confirme de novo.
Envie o documento. O módulo transmite a DPS ao ADN por REST/mTLS.
Na autorização, o documento fica Autorizada e guarda a chave de acesso de 50 dígitos, o número da NFS-e, o protocolo e o XML autorizado. Na rejeição, o documento fica Rejeitada e o motivo devolvido pelo ADN aparece no chatter e no evento.
O DANFSe em PDF é gerado localmente a partir do XML autorizado, pela ação de imprimir/gerar o PDF do documento.
Cancelar
No documento autorizado, use Cancelar e informe a justificativa.
Escolha o código do motivo (1 - erro na emissão, 2 - serviço não prestado, 9 - outros).
O módulo assina e envia o evento de cancelamento 101101 ao ADN e, aceito o evento, marca o documento como cancelado.
A inutilização de numeração não existe para a NFS-e Nacional, e por isso o botão fica oculto nos documentos de serviço.
Consultar o status
Em documento autorizado, o botão Consultar Status pergunta ao ADN se a nota foi cancelada por fora do Odoo (evento 101101 ou 305101, este de ofício) e, se foi, atualiza o documento.
Importar XML
O módulo importa o XML de uma NFS-e Nacional ou de uma DPS e cria o documento fiscal correspondente.
Known issues / Roadmap
Já implementado
Mapeamento da DPS sobre o documento fiscal, com prestador, tomador, serviço e valores, e o regime tributário (MEI, Simples Nacional ou normal) deduzido da empresa.
Cliente REST/mTLS com verificação de certificado do servidor, nova tentativa apenas em GET e sem registrar payload nem chaves em log.
Emissão, rejeição legível, cancelamento pelo evento 101101 e consulta de cancelamento feito fora do Odoo.
DANFSe gerado do XML autorizado.
Limitações conhecidas
A alíquota (pAliq) nunca é informada na DPS para município conveniado: o ADN toma a alíquota dos parâmetros municipais e recusa a alíquota informada em casos como o erro E0625.
Empresa fora do Simples Nacional informa o tributo aproximado em pTotTrib; empresa do Simples sem faixa de receita cai no indicador indTotTrib, pois o ADN exige uma das opções.
CNAB e cobrança bancária não se aplicam a este módulo.
Não existe inutilização de numeração para a NFS-e Nacional (a numeração da DPS é livre).
Ainda não implementado
Reconciliação de resposta perdida (GET /nfse/{chave} e GET /dps/{id} antes de reenviar a DPS).
Eventos de substituição (e105xxx) e os demais tipos de evento.
IBS/CBS (reforma tributária), distribuição de documentos recebidos, contingência e envio assíncrono com fila (queue_job).
Bug Tracker
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed feedback.
Do not contact contributors directly about support or help with technical issues.
Credits
Contributors
-
Raphaël Valyi <raphael.valyi@akretion.com>
KMEE:
Ygor Carvalho <ygor.carvalho@kmee.com.br>
Luis Felipe Mileo <mileo@kmee.com.br>
Maintainers
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.
This module is part of the OCA/l10n-brazil project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
Metadata
Release files for odoo-addon-l10n-br-nfse-nacional 18.0.1.0.0.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| odoo_addon_l10n_br_nfse_nacional-18.0.1.0.0.8-py3-none-any.whl | Python 3 | none | any | Details |
Release files / odoo_addon_l10n_br_nfse_nacional-18.0.1.0.0.8-py3-none-any.whl
| Download URL | odoo_addon_l10n_br_nfse_nacional-18.0.1.0.0.8-py3-none-any.whl |
|---|---|
| Size | 169.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d7ca8e240fc88fcec48dcf60b623e3912d5403ddef469ce74b815d29318a469d
|
|
BLAKE2b-256 checksum How to use checksums |
57e5f43c03c5ee5b292d177002d5e078655e4bff0766624d051b42ccf33f9b0d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|