Skip to content
PokutsoftPokutsoft
GlobalAccounting/Localizations/Reporting
Brazil SPED Fiscal icon

Brazil SPED Fiscal

Brazil SPED Fiscal for Odoo: EFD ICMS/IPI flat file in the official Guia Prático 3.2.2 layout, with blocks 0, C, E, H, 1 and 9 written from your invoices and stock and blocks B, D, G and K opened and closed

Odoo 20.0Odoo 19.0Odoo 18.0
EFD ICMS/IPIC100 / C170 / C190Registro 9900Guia Prático 3.2.2Odoo 18, 19 & 20
Brazil SPED Fiscal para Odoo

SPED Fiscal (EFD ICMS/IPI) para Odoo

Gere o arquivo EFD ICMS/IPI mensal — os dez blocos 0/B/C/D/E/G/H/K/1/9 com a totalização correta dos registros — a partir dos seus documentos fiscais.

O que faz

Este módulo monta o arquivo SPED Fiscal (EFD ICMS/IPI) mensal a partir das suas faturas lançadas: os registros delimitados por pipe nos blocos 0 (contribuinte, endereço 0005, contabilista 0100, participantes 0150, unidades 0190, itens 0200), B, C (C100 por documento, C170 itens, C190 ICMS analítico por CST/CFOP/alíquota, tanto de saídas quanto de entradas), D, E (E100/E110 apuração do ICMS com débitos das saídas e créditos das entradas, E116 obrigação a recolher, E500/E510/E520 apuração do IPI), G, H (inventário), K, 1 (informações obrigatórias) e 9 (as contagens de registro 9900 e os totais 9990/9999). Cada registro é emitido a partir da tabela de campos do Guia Prático EFD-ICMS/IPI versão 3.2.2 — quantidade de campos, posição, decimais e tamanhos fixos vêm do documento oficial. A totalização é exata — a linha 9999 corresponde ao número total de linhas — e é coberta por testes automatizados.

Funcionalidades

  • Arquivo EFD — os dez blocos 0/B/C/D/E/G/H/K/1/9 na ordem oficial, com os abridores, os fechadores corretos e o bloco 1 obrigatório.
  • C100 / C170 / C190 — cabeçalho do documento, itens e ICMS analítico agrupado por CST + CFOP + alíquota.
  • C170 pela regra oficial — o C170 é produzido conforme a condição do guia: na NF-e/NFC-e de emissão própria valem o C100 e o C190, como determina a Exceção 2 do registro C100 do Guia Prático; nos modelos 01, 1B e 04 e nos documentos de terceiros o C170 é gerado. No perfil C ele não é apresentado, conforme a tabela de obrigatoriedade.
  • Entradas e crédito de ICMS — as notas de entrada (compras) geram o crédito de ICMS no E110; o saldo apurado é devedor (a recolher) ou credor (a transportar).
  • Apuração do bloco E — E110 no leiaute de 15 campos, E116 obrigação a recolher e E500/E510/E520 apuração do IPI. O E510 é consolidado por CFOP e CST_IPI — a chave do próprio registro — e os campos 03 e 04 do E520 são somados a partir dessas linhas, que é contra o que o guia os valida. O CST_IPI (tabela 4.3.2) é informado ao lado do CFOP e do CST_ICMS na posição fiscal, com substituição linha a linha.
  • Valores lidos da escrituração — os valores de ICMS, IPI, PIS e COFINS vêm das próprias linhas de imposto da fatura, sem recálculo, de modo que C170, C100, C190 e E110 fecham no mesmo centavo. Preço com imposto embutido é informado sobre a base bruta.
  • Mapeamento de CFOP e CST pela posição fiscal — algumas linhas de mapeamento nas posições fiscais que você já usa cobrem a carteira inteira, com substituição linha a linha para as exceções. O módulo confere o CFOP contra a regra de sentido do guia; ele não inventa um CFOP.
  • Bloco H (inventário) — abertura sempre presente; H005/H010 com o inventário anual a partir do estoque quando o módulo Inventário está instalado.
  • Inventário na data certa — a DT_INV é a data do inventário, não o fim do período do arquivo: o inventário de 31/12 é repetido na escrituração de fevereiro, o caso mensal (CNAE 4681-8/01 e 4681-8/02) informa o próprio período, e a quantidade e o valor são lidos como estavam naquela data. A propriedade/posse (IND_PROP) é declarada pelo contribuinte e, em “1” ou “2”, o participante do campo 08 é pedido.
  • Espécie de imposto pelo grupo — cada imposto é classificado a partir de uma tabela curada dos grupos de impostos oficiais do l10n_br, com substituição por imposto para um grupo que a tabela não conheça.
  • Relatório de pendências de conformidade — todo valor não resolvido é listado na escrituração com o registro, o campo, o documento ou a linha a que pertence e onde informá-lo, separado entre o que só o contribuinte pode declarar e o que falta nos registros.
  • Contagem de registros — um 9900 por código de registro, 9990 (contagem do bloco 9) e 9999 (total de linhas) — verificados.
  • Blocos B, G e K — os registros de abertura exigidos pelo guia, com uma costura documentada para quem informa o conteúdo desses blocos.
  • Integração com a NF-e — usa a chave de acesso da NF-e quando o nosso módulo Brazil NF-e (vendido separadamente) está instalado; o CFOP e o CST de produto desse módulo só são lidos com a autorização expressa no cadastro da empresa.
  • Declaração mensal — contagem de documentos, totais, download do TXT e o fluxo rascunho → calculado → enviado.
  • Português do Brasil — rótulos, textos de ajuda, listas de seleção e mensagens traduzidos (pt_BR), além do inglês de origem.

Casos de uso

  • Fim do mês: precisa preparar o arquivo EFD ICMS/IPI a partir das notas fiscais lançadas no período.
  • Já usa o módulo Brazil NF-e e quer que a chave de acesso e o ICMS detalhado sejam aproveitados automaticamente no SPED.
  • Precisa conferir a totalização do bloco 9 (9900/9990/9999) antes de enviar o arquivo ao Programa Validador e Assinador (PVA).
  • Quer manter um histórico das declarações mensais com o status rascunho, calculado e enviado.
  • Precisa saber, antes de fechar o período, exatamente quais valores ainda faltam e em qual cadastro informá-los.
  • Informa o bloco K ou o bloco G e quer acrescentar esse conteúdo sem reescrever o gerador do arquivo.

Blocos do arquivo EFD

Bloco Conteúdo
0Abertura (0000 no leiaute de 15 campos), identificação do contribuinte, 0002 quando a atividade é industrial, endereço 0005, contabilista 0100 (perfis A e B), participantes 0150, unidades 0190 e itens 0200.
BAbertura do bloco do ISS. Os estabelecimentos não domiciliados no Distrito Federal informam apenas B001 e B990, como determina o guia.
CDocumentos fiscais de saída e entrada — C100 por nota, C170 itens conforme a regra oficial, C190 ICMS analítico.
DAbertura do bloco de serviços de transporte e comunicação.
EApuração do ICMS (E100/E110 débitos e créditos, E116 obrigação a recolher) e do IPI (E500/E510/E520).
GAbertura do bloco do CIAP (crédito de ICMS do ativo permanente).
HInventário — H005/H010 a partir do estoque, na data do próprio inventário.
KAbertura do bloco de produção e estoque, com a costura de extensão para quem informa o seu conteúdo.
1Bloco de informações obrigatórias, com o registro 1010 e seus treze indicadores.
9Encerramento — contagens 9900 por registro e totais 9990/9999.

Como funciona

  1. Lance e confirme as faturas do período (com o módulo Brazil NF-e instalado, o ICMS detalhado e a chave de acesso são aproveitados automaticamente).
  2. Informe, no cadastro da empresa, as respostas que só o contribuinte pode dar: perfil da EFD, indicador de atividade, blocos K e G, periodicidade do inventário, indicadores do 1010 e, nos perfis A e B, o contabilista.
  3. Cadastre uma ou duas linhas de CFOP/CST por posição fiscal — uma por sentido da operação, ou uma por tipo de item quando eles diferem.
  4. Abra a declaração SPED do mês e clique em Calcular — o módulo monta os dez blocos e totaliza o registro 9999.
  5. Confira a aba de pendências: cada linha diz o registro, o campo e onde o valor é informado.
  6. Baixe o TXT e valide-o no Programa Validador e Assinador (PVA) da Receita Federal antes da transmissão oficial.

Extensão: bloco K, bloco G e registros próprios

A tabela de leiautes é dado, transcrita do Guia Prático, e os construtores de bloco são abertos. register_layout(código, campos) declara o leiaute de um registro que este módulo não entrega — K100, K230, E200, C500 — e a validação estrutural trata um código não registrado como advertência, e não como erro. Um segundo módulo herda l10n.br.sped.declaration, sobrescreve o construtor do bloco que vai preencher e devolve as linhas na ordem; as contagens 9900, os fechadores de bloco e o total 9999 passam a contar também os registros dele. Esse caminho é exercitado de ponta a ponta pela suíte de testes do próprio módulo, com um bloco K e um E200 acrescentados por outro módulo.

Âmbito e transparência

Este módulo monta o arquivo no layout EFD ICMS/IPI inteiramente dentro do seu banco de dados Odoo; nada é enviado a terceiros. A transmissão oficial ao Sistema Público de Escrituração Digital (SPED) exige a validação e assinatura pelo Programa Validador e Assinador (PVA) da Receita Federal, com o seu próprio certificado digital. Confirme o layout vigente e as regras de validação junto à documentação oficial do SPED antes de enviar declarações reais.


English

Brazil SPED Fiscal for Odoo

Generate the EFD ICMS/IPI file — all ten blocks 0/B/C/D/E/G/H/K/1/9 with correct register totalisation — from your fiscal documents.

Builds the Brazilian SPED Fiscal (EFD ICMS/IPI) monthly file from your posted customer and supplier invoices: the pipe-delimited registers across blocks 0 (taxpayer, 0002 for an industrial activity, address 0005, accountant 0100, participants 0150, units 0190, items 0200), B, C (C100 per document, C170 item lines, C190 analytical ICMS by CST/CFOP/aliquota, for both sales and purchases), D, E (E100/E110 ICMS apuração with sales debits and purchase credits, E116 payment obligation, E500/E510/E520 IPI apuração), G, H (inventory), K, 1 (mandatory information) and 9 (the 9900 register counts and the 9990/9999 totals). Every register is emitted from the field table of the Guia Prático EFD-ICMS/IPI version 3.2.2 — field counts, positions, decimals and fixed widths come from the official document. The totalisation is exact — the 9999 line equals the total number of lines — and is covered by automated tests.

  • EFD file — all ten blocks 0/B/C/D/E/G/H/K/1/9 in the official order, with the correct openers, closers and the mandatory block 1.
  • C100 / C170 / C190 — document header, item lines and analytical ICMS grouped by CST + CFOP + aliquota.
  • C170 by the official rule — C170 is produced according to the guide's own condition: for an NF-e or NFC-e you issued yourself, C100 and C190 are what the Guia Prático's Exceção 2 to register C100 asks for; models 01, 1B and 04 and third-party documents do get C170. Profile C reports none at all, as the obrigatoriedade table states.
  • Purchases & ICMS credit — input (purchase) invoices feed the ICMS credit into E110; the assessed balance is either payable or carried forward.
  • E-block apuração — E110 in the 15-field layout, E116 payment obligation and E500/E510/E520 IPI apuração. E510 is consolidated per CFOP and CST_IPI — the register's own key — and E520 fields 03 and 04 are summed from those rows, which is what the guide validates them against. The CST_IPI (table 4.3.2) is declared beside the CFOP and the CST_ICMS on the fiscal position, with a per-line override.
  • Figures read from the ledger — the ICMS, IPI, PIS and COFINS amounts come from the invoice's own tax lines, never recomputed, so C170, C100, C190 and E110 add up to the same centavo. A tax-included price is reported on its gross base.
  • CFOP and CST from the fiscal position — a handful of mapping rows on the fiscal positions you already use cover the whole portfolio, with a per-line override for the exceptions. The module validates the CFOP against the direction rule of the guide; it does not invent one.
  • Block H (inventory) — opener always present; H005/H010 annual inventory from stock valuation when the Inventory app is installed.
  • The inventory's own date — DT_INV is the date of the inventory, not the end of the file's period: the 31 December inventory is repeated in the February file, the monthly CNAE 4681-8/01 and 4681-8/02 case reports its own period end, and quantity and value are read as they were on that date. Ownership (IND_PROP) is the taxpayer's declaration, and "1" or "2" asks for the field 08 counterparty.
  • Tax kinds from the tax group — each tax is classified from a curated table of the official l10n_br tax-group records, with a per-tax override for a group the table does not know.
  • Compliance gap report — every unresolved value is listed on the declaration with its register, its field, the document or line it belongs to and where to enter it, split into what only the taxpayer can state and what is missing from the records.
  • Register counts — one 9900 per register code, 9990 (block-9 count) and 9999 (total lines) — verified.
  • Blocks B, G and K — the openers the guide demands, with a documented seam for whoever reports their contents.
  • NF-e aware — uses the NF-e access key when our Brazil NF-e module (sold separately) is installed; that module's product CFOP and CST are read only with the explicit permission you give on the company form.
  • Monthly declaration — document count, totals, TXT download and draft → computed → filed workflow.
  • Brazilian Portuguese — field labels, help texts, selection values and messages translated (pt_BR), alongside the English source.

EFD file blocks

Block Contents
0Opening (0000 in the 15-field layout), taxpayer identification, 0002 when the activity is industrial, address 0005, accountant 0100 (profiles A and B), participants 0150, units 0190 and items 0200.
BOpener of the ISS block. Establishments not domiciled in the Distrito Federal report only B001 and B990, as the guide requires.
COutgoing and incoming fiscal documents — C100 per document, C170 item lines by the official rule, C190 analytical ICMS.
DOpener of the transport and communication services block.
EICMS apuração (E100/E110 debits and credits, E116 payment obligation) and IPI (E500/E510/E520).
GOpener of the CIAP block (ICMS credit on fixed assets).
HInventory — H005/H010 from stock, dated by the inventory itself.
KOpener of the production and stock block, with the extension seam for whoever reports its contents.
1Mandatory information block, with register 1010 and its thirteen indicators.
9Closing — 9900 counts per register and the 9990/9999 totals.

Extending it: bloco K, bloco G and your own registers

The layout table is data, transcribed from the Guia Prático, and the block builders are open. register_layout(code, fields) declares the layout of a register this module does not ship — K100, K230, E200, C500 — and the structural check treats an unregistered code as a warning rather than an error. A second module inherits l10n.br.sped.declaration, overrides the builder of the block it fills and returns the lines in order; the 9900 counters, the block closers and the 9999 total then count its registers as well. This path is exercised end to end by the module's own test suite, with a bloco K and an E200 added by another module.

Scope & disclosure

This module builds the file in the EFD ICMS/IPI layout entirely inside your Odoo database; nothing is sent to a third party. The official submission to the Sistema Público de Escrituração Digital (SPED) requires validation and signing through the Receita Federal's Programa Validador e Assinador (PVA) with your own digital certificate. Confirm the current layout and validation rules against the official SPED documentation before filing real declarations.

Screenshots

Brazil SPED Fiscal

SPED Fiscal

Especificações

  • Odoo 18.0, 19.0 ou 20.0 (Community ou Enterprise) com o módulo Accounting.
  • Opcionalmente o módulo Brazil NF-e para a chave de acesso e o ICMS detalhado.
  • Opcionalmente o módulo Inventário (stock) e a Valorização de estoque (stock_account) para o bloco H.
  • Leiaute de referência: Guia Prático EFD-ICMS/IPI versão 3.2.2.
  • Idiomas: português do Brasil (pt_BR) e inglês.
  • Licença: OPL-1 (Odoo Proprietary License v1.0).
  • Suporte: support@pokutsoft.com — pokutsoft.com

Update date: 2026-09-20

User guides (PDF)

Related modules