Este módulo é a fundação para a emissão da Nota Fiscal de Serviços Eletrônica de padrão nacional (NFS-e, Sistema Nacional NFS-e) no Odoo, fornecendo uma estrutura de dados completa e fiel ao leiaute oficial 1.01.
É importante entender que este módulo atua como uma biblioteca de modelos abstratos (mixins) e não realiza a emissão da NFS-e por si só. Sua finalidade é ser a base para um módulo de implementação, como o l10n_br_nfse_nacional, que é responsável por mapear esses modelos nos documentos fiscais do Odoo (l10n_br_fiscal.document) e comunicar-se com o ambiente nacional (Sefin Nacional / ADN). Esta arquitetura, que separa a estrutura de dados da lógica de emissão, é a mesma utilizada com sucesso nos outros documentos fiscais eletrônicos da localização brasileira.
No padrão nacional, o contribuinte gera e assina uma DPS (Declaração de Prestação de Serviços) e o ambiente nacional retorna a NFS-e autorizada, que encapsula a DPS.
Estrutura e Principais Conceitos da NFS-e
O módulo l10n_br_nfse_spec mapeia a estrutura hierárquica da DPS e da NFS-e. Os conceitos mais importantes implementados são:
- Identificação da DPS (infDPS): O cabeçalho da declaração, com município emitente, série, número, datas e ambiente.
- Prestador e Tomador (prest, toma): Modelos para os dados cadastrais do prestador e do tomador do serviço, incluindo endereço nacional (endNac) ou exterior (endExt) e o regime de tributação (regTrib).
- Serviço (serv): O detalhamento do serviço prestado, com o local da prestação (locPrest) e a sua codificação (cServ): código de tributação nacional, código de tributação municipal e código NBS.
- Valores (valores): O valor do serviço (vServPrest), os descontos (vDescCondIncond) e a tributação — municipal/ISSQN (tribMun), federal e PIS/COFINS (tribNac) e o total de tributos (tribTotal).
- Eventos: As estruturas para os eventos da NFS-e (como o cancelamento), igualmente geradas a partir dos esquemas oficiais.
Geração de Código Automatizada
A principal característica deste módulo é que 100% dos seus modelos de dados Odoo são gerados automaticamente a partir dos esquemas XSD oficiais, publicados pelo Sistema Nacional NFS-e. Essa geração pelo xsdata-odoo garante máxima fidelidade aos leiautes fiscais e agilidade na atualização para novas versões.
Embora os esquemas XSD oficiais da NFS-e sejam publicados e mantidos pela Receita Federal, a arquitetura deste projeto se apoia na biblioteca nfelib para a tarefa de serialização dos dados em XML. Para facilitar o processo de desenvolvimento e garantir a consistência, a própria nfelib armazena em seu repositório uma cópia atualizada desses esquemas oficiais.
Portanto, a prática recomendada para (re)gerar os modelos deste módulo é utilizar um clone local do repositório da nfelib como fonte para os arquivos de esquema (.xsd), direcionando o comando do xsdata-odoo para o diretório correspondente.
Links:
- GitHub - akretion/xsdata-odoo: Odoo abstract model generator from xsd schemas using xsdata
- GitHub - akretion/nfelib
O comando utilizado para gerar os modelos da versão 1.01 da NFS-e foi:
Prefixo dos campos e versão
Com centenas de campos fiscais, com uma meia dúzia de documentos fiscais complexos, com 3000 módulos OCA, existiria um risco real de conflito com os nomes de campos vindo dos esquemas. Além disso, podemos ter várias versões da NFS-e.
Nisso foi decidido que cada campo tem um prefixo composto do nome do schema e de alguns dígitos da versão do esquema. No caso nfse10_. A escolha de 2 dígitos permite que uma atualização menor do esquema use os mesmos campos (e dados no banco então) e que um simples update Odoo (--update=...) consiga resolver a migração. Enquanto que para uma mudança maior de versão, seria assumido de usar novos campos e novas tabelas (para os objetos não Odoo) e que a lib nfelib iria trabalhar com os campos da versão maior do documento fiscal considerado.
É o caso da atualização do leiaute 1.00 para o 1.01 (grupos IBSCBS da reforma tributária): o leiaute novo entra na mesma pasta v1_0 da nfelib (um leiaute por pasta, como para NF-e/CT-e/MDF-e) e o prefixo continua nfse10_, então os campos e as tabelas já existentes são reusados e a atualização é um simples -u l10n_br_nfse_spec. Os modelos da reforma tributária (IBSCBS, CBS, IBS) entram como modelos novos, e os grupos que o 1.01 abandonou (serv/explRod e o infRej dos eventos) somem dos modelos.
auto_awesome What this module does
AI-generated from the code · Odoo 18.0This module is a technical foundation for Brazilian electronic service invoices (NFS-e). It only defines the data structure of the national NFS-e layout; it does not issue invoices by itself and adds no menus or screens for end users.
This module is a library of abstract data models, not a working feature. It provides the field structure that matches the official national NFS-e (electronic service invoice) layout version 1.01, so that another module can later map it onto Odoo fiscal documents and send invoices to the national environment.
Because it is abstract, it does not create menus, buttons, reports or scheduled actions, and it does not appear anywhere in the user interface on its own. It only becomes visible once an implementation module (such as the national NFS-e issuer) builds on top of it.
What it does define, at data level, are the building blocks of a service invoice: service taxation codes and descriptions (nfse.10.tccserv), addresses in Brazil and abroad (nfse.10.tcendernac, nfse.10.tcenderext, nfse.10.tcendereco), service values and discounts (nfse.10.tcvservprest, nfse.10.tcvdesccondincond), references to other fiscal documents (nfse.10.tcdocnfnfs, nfse.10.tcdocoutnfse), municipal benefits (nfse.10.tcbeneficiomunicipal), and the new IBS/CBS tax groups (nfse.10.tcrtcvaloresibscbs, nfse.10.tcrtctotalibs, nfse.10.tcrtctotalcbs).
A shared base model (spec.mixin.nfse) gives every one of these structures a Brazilian currency field (brl_currency_id) that is automatically set to BRL. No other automatic behaviour, validation or calculation is implemented in the code shown.
Required by other modules
Models and fields (30)
- nfse.10.tcdps · new modelnfse10_infDPS (infDPS), nfse10_versao (versao)
- nfse.10.tcnfse · new modelnfse10_versao (versao), nfse10_infNFSe (infNFSe)
- nfse.10.tcserv · new modelnfse10_obra (Grupo de informações do DPS relativas), nfse10_cServ (Grupo de informações relativas ao código), nfse10_comExt (Grupo de informações relativas), nfse10_locPrest (Grupo de informações relativas ao local), nfse10_atvEvento (atvEvento), nfse10_infoCompl (Grupo)
- nfse.10.tccserv · new modelnfse10_cNBS (Código NBS correspondente), nfse10_cTribMun (Código de tributação municipal do ISSQN), nfse10_cTribNac (Código de tributação nacional do ISSQN), nfse10_xDescServ (Descrição completa do serviço prestado), nfse10_cIntContrib (Código interno do contribuinte)
- spec.mixin.nfse · new modelbrl_currency_id (Moeda)
- nfse.10.tcinfdps · new modelnfse10_Id (Id), nfse10_nDPS (Número do DPS), nfse10_serv (serv), nfse10_toma (toma), nfse10_dhEmi (Data e hora da emissão do DPS), nfse10_prest (Grupo de informações do DPS relativas), nfse10_serie (Número do equipamento emissor do DPS), nfse10_subst (Dados da NFS-e a ser substituída), nfse10_tpAmb (Identificação do Ambiente), nfse10_IBSCBS (Grupo de informações declaradas), nfse10_interm (interm), nfse10_tpEmit (Emitente da DPS: 1 - Prestador; 2), nfse10_cLocEmi (O código de município utilizado), nfse10_dCompet (Data em que se iniciou a prestação), nfse10_valores (Grupo de informações relativas à valores), nfse10_verAplic (Versão do aplicativo que gerou o DPS), nfse10_chNFSeRej (Chave de Acesso da NFS-e rejeitada), nfse10_cMotivoEmisTI (Motivo da Emissão da DPS)
- nfse.10.tcinfnfse · new modelnfse10_Id (Id), nfse10_DPS (DPS), nfse10_emit (Grupo de informações da DPS relativas), nfse10_xNBS (Descrição do código da NBS), nfse10_cStat (Código do Status da mensagem), nfse10_nDFSe (Número sequencial do documento gerado), nfse10_nNFSe (Número sequencial por tipo de emitente), nfse10_IBSCBS (Grupo de informações geradas), nfse10_ambGer (Ambiente gerador da NFS-e), nfse10_dhProc (Data/Hora da validação da DPS e geração), nfse10_tpEmis (Processo de Emissão da DPS), nfse10_procEmi (Processo de Emissão da DPS (procEmi)), nfse10_valores (Grupo de valores referentes), nfse10_xLocEmi (Descrição do código do IBGE), nfse10_xOutInf (Uso), nfse10_verAplic (Versão do aplicativo que gerou a NFS-e), nfse10_xTribMun (Descrição do código (xTribMun)), nfse10_xTribNac (Descrição do código), nfse10_cLocIncid (O código de município utilizado), nfse10_xLocIncid (A descrição do código), nfse10_xLocPrestacao (Descrição do local da prestação)
- nfse.10.tcregtrib · new modelnfse10_opSimpNac (Situação perante o Simples Nacional), nfse10_regEspTrib (Tipos de Regimes Especiais de Tributação), nfse10_regApTribSN (Opção para que o contribuinte optante)
- nfse.10.tcdocnfnfs · new modelnfse10_nNFS (Número da Nota Fiscal NF ou NFS), nfse10_modNFS (Modelo da Nota Fiscal NF ou NFS), nfse10_serieNFS (Série Nota Fiscal NF ou NFS)
- nfse.10.tcemitente · new modelnfse10_IM (Número da inscrição municipal), nfse10_CPF (Número do CPF do emitente da NFS-e), nfse10_CNPJ (Número do CNPJ do emitente da NFS-e), nfse10_fone (Número do telefone do emitente), nfse10_email (E-mail do emitente), nfse10_xFant (Nome / Fantasia do emitente), nfse10_xNome (Nome / Razão Social do emitente), nfse10_enderNac (Grupo de informações)
- nfse.10.tcendereco · new modelnfse10_nro (Número do imóvel), nfse10_xCpl (Complemento do endereço), nfse10_xLgr (Tipo e nome do logradouro da localização), nfse10_endExt (endExt), nfse10_endNac (Grupo de informações específicas), nfse10_xBairro (Bairro)
- nfse.10.tcenderext · new modelnfse10_cPais (Código do país), nfse10_xCidade (Nome da cidade no exterior do prestador), nfse10_cEndPost (Código alfanumérico), nfse10_xEstProvReg (Estado)
- nfse.10.tcendernac · new modelnfse10_CEP (Número do CEP), nfse10_cMun (Código do município)
- nfse.10.tcinfoobra · new modelnfse10_end (Grupo de informações do endereço da obra), nfse10_cCIB (Código), nfse10_cObra (Número de identificação da obra), nfse10_inscImobFisc (Inscrição imobiliária fiscal)
- nfse.10.tclocprest · new modelnfse10_cLocPrestacao (Código do município onde o serviço), nfse10_cPaisPrestacao (Código do país onde o serviço)
- nfse.10.tcatvevento · new modelnfse10_end (Grupo de informações relativas), nfse10_dtFim (Data de fim da atividade de evento), nfse10_dtIni (Data de início da atividade de evento), nfse10_xNome (Descrição do evento Artístico), nfse10_idAtvEvt (Identificação da Atividade de Evento)
- nfse.10.tcdocdedred · new modelnfse10_nDoc (Número de documento não fiscal), nfse10_NFNFS (Grupo de informações de NF ou NFS), nfse10_chNFe (Chave de Acesso da NF-e), nfse10_chNFSe (Chave de Acesso da NFS-e), nfse10_fornec (Grupo de informações do Fornecedor), nfse10_NFSeMun (Grupo de informações de Outras NFS-e), nfse10_dtEmiDoc (Data da emissão do documento dedutível), nfse10_nDocFisc (Número de documento fiscal), nfse10_tpDedRed (Identificação da Dedução/Redução), nfse10_xDescOutDed (Descrição da Dedução/Redução), nfse10_vDeducaoReducao (Valor monetário utilizado), nfse10_vDedutivelRedutivel (vDedutivelRedutivel), nfse10_docDedRed_TCListaDocDedRed_id
- nfse.10.tcinfocompl · new modelnfse10_xPed (Número do pedido/ordem de compra/ordem), nfse10_docRef (Chave da nota), nfse10_gItemPed (Grupo de itens do pedido/ordem), nfse10_idDocTec (Identificador de Documento), nfse10_xInfComp (Informações complementares)
- nfse.10.tcrtcibscbs · new modelnfse10_totCIBS (Grupo de Totalizadores), nfse10_valores (Grupo de valores brutos referentes), nfse10_pRedutor (Percentual de redução de aliquota), nfse10_cLocalidadeIncid (Código IBGE da localidade de incidência), nfse10_xLocalidadeIncid (Nome da localidade de incidência)
- nfse.10.tctribtotal · new modelnfse10_pTotTrib (Valor percentual total aproximado), nfse10_vTotTrib (Valor monetário total aproximado), nfse10_indTotTrib (Indicador de informação de valor total), nfse10_pTotTribSN (Valor percentual aproximado do total)
- nfse.10.tcdocoutnfse · new modelnfse10_nNFSeMun (Número da nota eletrônica municipal), nfse10_cMunNFSeMun (Código Município emissor), nfse10_cVerifNFSeMun (Código de Verificação)
- nfse.10.tcinfodedred · new modelnfse10_pDR (Valor percentual padrão), nfse10_vDR (Valor monetário padrão), nfse10_documentos (Grupo de informações)
- nfse.10.tcinfopessoa · new modelnfse10_IM (Número da inscrição municipal), nfse10_CPF (Número do CPF), nfse10_NIF (Número de Identificação Fiscal fornecido), nfse10_end (Dados de endereço), nfse10_CNPJ (Número do CNPJ), nfse10_fone (Número do telefone do prestador), nfse10_CAEPF (Número do Cadastro), nfse10_email (E-mail), nfse10_xNome (Nome/Nome Empresarial), nfse10_cNaoNIF (Motivo para não informação do NIF)
- nfse.10.tcvservprest · new modelnfse10_vServ (Valor dos serviços em R$), nfse10_vReceb (Valor monetário recebido)
- nfse.10.tccomexterior · new modelnfse10_nDI (Número da Declaração de Importação), nfse10_nRE (Número do Registro de Exportação), nfse10_mdic (Compartilhar as informações), nfse10_tpMoeda (Identifica a moeda), nfse10_vincPrest (Vínculo entre as partes no negócio), nfse10_vServMoeda (Valor do serviço prestado expresso), nfse10_mdPrestacao (Modo de Prestação), nfse10_mecAFComexP (Mecanismo de apoio/fomento), nfse10_mecAFComexT (Mecanismo de apoio/fomento (mecAFComexT)), nfse10_movTempBens (Vínculo da Operação)
- nfse.10.tcinfoitemped · new modelnfse10_xItemPed (Número do item do pedido/ordem)
- nfse.10.tcinforefnfse · new modelnfse10_refNFSe (Chave da NFS-e referenciada)
- nfse.10.tcinfovalores · new modelnfse10_trib (Grupo de informações relacionados), nfse10_vDedRed (Grupo de informações relativas (vDedRed)), nfse10_vServPrest (Grupo de informações relativas), nfse10_vDescCondIncond (vDescCondIncond)
- nfse.10.tcrtcinfodest · new modelnfse10_CPF (Número da inscrição no Cadastro), nfse10_NIF (Número de Identificação Fiscal fornecido), nfse10_end (Grupo de informações do endereço), nfse10_CNPJ (Número da inscrição no Cadastro Nacional), nfse10_fone (Número do telefone do Destinatário), nfse10_email (E-mail do Destinatário do serviço), nfse10_xNome (Nome / Nome Empresarial), nfse10_cNaoNIF (Motivo para não informação do NIF)
- nfse.10.tcrtclistadoc · new modelnfse10_fornec (Grupo de informações do fornecedor), nfse10_docOutro (Grupo de informações de documento), nfse10_dtEmiDoc (Data da emissão do documento dedutível), nfse10_dtCompDoc (Data da competência), nfse10_dFeNacional (Grupo de informações), nfse10_tpReeRepRes (Tipo de valor incluído neste documento), nfse10_vlrReeRepRes (Valor monetário), nfse10_xTpReeRepRes (Descrição do reembolso), nfse10_docFiscalOutro (Grupo de informações (docFiscalOutro)), nfse10_documentos_TCRTCInfoReeRepRes_id
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-03Confirmation status: 2 confirmed, 7 with no information of 9 versions.
Sources · Odoo 16.0
Confirmed on 2026-11-03 in branch 16.0 of OCA/l10n-brazil.
terminal Installation and usage
No verified informationInstallation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
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.