OdooWiki OCA HUB

NFS-e Nacional

l10n_br_nfse_nacional folder_open OCA/l10n-brazil open_in_new
Localisation License: AGPL-3

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.

auto_awesome What this module does

AI-generated from the code · Odoo 18.0

Lets Brazilian companies issue the national standard electronic service invoice (NFS-e Nacional) directly to the federal Sefin Nacional / ADN environment, without a paid gateway or city webservice. It builds, signs, sends the DPS, stores the returned NFS-e key and prints the DANFSe.

This module adds the national NFS-e provider to Odoo's Brazilian fiscal documents. On a confirmed service fiscal document (model SE) whose company is set to the "Sefin Nacional (ADN)" provider, Odoo builds the DPS (the service declaration sent to the government), validates it against the official schema, signs it with the company's A1 certificate and sends it to the national environment. The returned NFS-e access key, number and protocol are stored on the document, and the document moves to authorized or rejected; rejection messages are shown and posted in the chatter.

  • A "Consultar Status" button appears on authorized service documents to check whether the NFS-e was cancelled directly at the national environment.
  • The cancellation wizard gains a mandatory cancellation reason code for service documents.
  • A DANFSe Nacional PDF report is available, rendered from the authorized NFS-e XML.
  • Company and contact records get national-standard fields (CNPJ/CPF, municipal registration, address, phone, e-mail, Simples Nacional tax regime) filled automatically from existing data.
  • The DPS number and its 42-digit key are generated automatically, and the usual 44-digit key check is skipped for NFS-e.
  • Service lines compute the tax details sent in the DPS (ISS, PIS/COFINS, federal withholdings, total tax percentages), and the new IBS/CBS tax reform group is included when the line carries the classification data.

It touches fiscal documents, their lines, companies, contacts, the cancellation wizard and reports.

Models and fields (6)
  • res.company · new modelnfse10_IM, nfse10_CPF, nfse10_end, nfse10_CNPJ, nfse10_fone, nfse10_email, nfse10_xNome, provedor_nfse, nfse10_opSimpNac, nfse10_regEspTrib, nfse10_regApTribSN
  • res.partner · new modelnfse10_IM, nfse10_CEP, nfse10_CPF, nfse10_end, nfse10_nro, nfse10_CNPJ, nfse10_cMun, nfse10_fone, nfse10_xCpl, nfse10_xLgr, nfse10_email, nfse10_xNome, nfse10_endNac, nfse10_cNaoNIF, nfse10_xBairro
  • ir.actions.report · extends an existing model
  • l10n_br_fiscal.document · new modelnfse_key (NFS-e Access Key), nfse10_Id, nfse10_nDPS, nfse10_serv, nfse10_toma, nfse_number (NFS-e Number), nfse10_dhEmi, nfse10_prest, nfse10_serie, nfse10_tpAmb, nfse10_infDPS, nfse10_interm, nfse10_tpEmit, nfse_protocol (NFS-e Protocol), nfse10_cLocEmi, nfse10_dCompet, nfse10_valores, nfse10_verAplic, edoc_error_message
  • l10n_br_fiscal.document.line · new modelnfse10_CST, nfse10_cNBS, nfse10_trib (Tributação), nfse10_vPis, nfse10_cServ (Código Serviço), nfse10_pAliq, nfse10_vServ, nfse10_vRetCP, nfse10_totTrib (Total Tributos), nfse10_tribFed (Tributos Federais), nfse10_tribMun (Tributos Municipais), nfse10_vCofins, nfse10_cTribMun, nfse10_cTribNac, nfse10_locPrest (Local Prestação), nfse10_pAliqPis, nfse10_pTotTrib (Percentual Total de Tributos), nfse10_vRetCSLL, nfse10_vRetIRRF, nfse10_piscofins (PIS/COFINS), nfse10_tribISSQN, nfse10_vDescCond, nfse10_xDescServ, nfse10_indTotTrib, nfse10_pTotTribSN, nfse10_tpRetISSQN, nfse10_vServPrest (Valores Serviço), nfse10_pAliqCofins, nfse10_pTotTribEst, nfse10_pTotTribFed
  • l10n_br_fiscal.document.cancel.wizard · extends an existing modelnfse_nacional_motive (Cancellation Reason Code)

Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 2 confirmed, 7 with no information of 9 versions.

Sources · Odoo 18.0

Confirmed on 2026-11-03 in branch 18.0 of OCA/l10n-brazil.

terminal Installation and usage

OCA documentation · Odoo 18.0

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.

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.

No verified information in OCA: Installation.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.