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
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 |
|---|---|
| 0 | Abertura (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. |
| B | Abertura do bloco do ISS. Os estabelecimentos não domiciliados no Distrito Federal informam apenas B001 e B990, como determina o guia. |
| C | Documentos fiscais de saída e entrada — C100 por nota, C170 itens conforme a regra oficial, C190 ICMS analítico. |
| D | Abertura do bloco de serviços de transporte e comunicação. |
| E | Apuração do ICMS (E100/E110 débitos e créditos, E116 obrigação a recolher) e do IPI (E500/E510/E520). |
| G | Abertura do bloco do CIAP (crédito de ICMS do ativo permanente). |
| H | Inventário — H005/H010 a partir do estoque, na data do próprio inventário. |
| K | Abertura do bloco de produção e estoque, com a costura de extensão para quem informa o seu conteúdo. |
| 1 | Bloco de informações obrigatórias, com o registro 1010 e seus treze indicadores. |
| 9 | Encerramento — contagens 9900 por registro e totais 9990/9999. |
Como funciona
- 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).
- 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.
- 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.
- Abra a declaração SPED do mês e clique em Calcular — o módulo monta os dez blocos e totaliza o registro 9999.
- Confira a aba de pendências: cada linha diz o registro, o campo e onde o valor é informado.
- 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_brtax-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 |
|---|---|
| 0 | Opening (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. |
| B | Opener of the ISS block. Establishments not domiciled in the Distrito Federal report only B001 and B990, as the guide requires. |
| C | Outgoing and incoming fiscal documents — C100 per document, C170 item lines by the official rule, C190 analytical ICMS. |
| D | Opener of the transport and communication services block. |
| E | ICMS apuração (E100/E110 debits and credits, E116 payment obligation) and IPI (E500/E510/E520). |
| G | Opener of the CIAP block (ICMS credit on fixed assets). |
| H | Inventory — H005/H010 from stock, dated by the inventory itself. |
| K | Opener of the production and stock block, with the extension seam for whoever reports its contents. |
| 1 | Mandatory information block, with register 1010 and its thirteen indicators. |
| 9 | Closing — 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
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
France Factur-X Status
Factur-X invoice lifecycle status model with French e-reporting transaction and payment status transitions (BYOK)
Italy FatturaPA Status
Import and reconcile Italian SdI receipt notifications (RC/MC/NS/NE/DT/AT) into FatturaPA invoice lifecycle states
Australia PAYG Summaries
Generate non-STP PAYG withholding payment summaries and the PAYG Payment Summary Annual Report (EMPDUPE) for Australia