SPED

Detalhes sobre a geração e validação do arquivo SPED

Informacional e Comandos - SPED

O SPED é um Sistema Público de Escrituração Digital, ou seja, um sistema que tem como principal objetivo facilitar o arquivamento, o envio e a validação dos deveres tributários de uma companhia.

Este arquivo auxilia no controle e gerenciamento das questões fiscais e contábeis da empresa, ele também vai fazer um controle mais assertivo dos tributos a serem recolhidos.

O governo exige que as empresas que exercem sua função nos regimes de tributação em lucro presumido e em lucro real precisam fazer a entrega desse documento. Já as organizações inseridas do Simples Nacional são isentas da entrega.


No SIEM:

Será necessário, assim como no SINTEGRA, primeiro a correção de certas informações que estão na base de dados.
Assegure que o sistema se encontra em uma versão recente e válida para a geração.

Para que a geração seja feita sem prejudicar o cliente, retire uma cópia da base de dados atuais da máquina do cliente e, se necessário, uma cópia dos arquivos XML caso o mesmo também deseje o envio destes junto ao arquivo de SPED.

As SQL que serão utilizadas na base de dados onde será feita a geração do SPED seguem a ordem abaixo:

Alteração da CFOP para códigos de entrada:
É necessário que as notas de compra registradas na Estoque_Movimento estejam com códigos de CFOP de entrada.
A SQL abaixo faz essa mudança nos códigos mais comuns. Ela é dividida em duas partes

Primeiro sendo executado:

UPDATE Estoque_Movimento SET Estoque_Movimento.CFOP = IIf([Estoque_Movimento.CFOP]="5405","1403",IIf([Estoque_Movimento.CFOP]="5403","1403",IIf([Estoque_Movimento.CFOP]="5102","1102",IIf([Estoque_Movimento.CFOP]="5101","1101",IIf([Estoque_Movimento.CFOP]="6101","2101",IIf([Estoque_Movimento.CFOP]="6102","2102",IIf([Estoque_Movimento.CFOP]="5929","1949",IIf([Estoque_Movimento.CFOP]="6929","2949",IIf([Estoque_Movimento.CFOP]="5152","1152",IIf([Estoque_Movimento.CFOP]="5409","1409",IIf([Estoque_Movimento.CFOP]="6403","2403",IIf([Estoque_Movimento.CFOP]="5910","1910",IIf([Estoque_Movimento.CFOP]="5105","1102",IIf([Estoque_Movimento.CFOP]="6105","2101"))))))))))))))
WHERE (((Estoque_Movimento.CFOP)="5405" Or (Estoque_Movimento.CFOP)="5403" Or (Estoque_Movimento.CFOP)="5102" Or (Estoque_Movimento.CFOP)="5101" Or (Estoque_Movimento.CFOP)="6101" Or (Estoque_Movimento.CFOP)="6102" Or (Estoque_Movimento.CFOP)="5929" Or (Estoque_Movimento.CFOP)="6929" Or (Estoque_Movimento.CFOP)="5152" Or (Estoque_Movimento.CFOP)="5409" Or (Estoque_Movimento.CFOP)="6403" Or (Estoque_Movimento.CFOP)="5910" Or (Estoque_Movimento.CFOP)="5105" Or (Estoque_Movimento.CFOP)="6105"));

E em seguida:

UPDATE Estoque_Movimento SET Estoque_Movimento.CFOP = IIf([Estoque_Movimento.CFOP]="5401","1401",IIf([Estoque_Movimento.CFOP]="6401","2401",IIf([Estoque_Movimento.CFOP]="5908","1901",IIf([Estoque_Movimento.CFOP]="6106","2102",IIf([Estoque_Movimento.CFOP]="6404","2403",IIf([Estoque_Movimento.CFOP]="6910","2910"))))))
WHERE (((Estoque_Movimento.CFOP)="5401" Or (Estoque_Movimento.CFOP)="6401" Or (Estoque_Movimento.CFOP)="5908" Or (Estoque_Movimento.CFOP)="6106" Or (Estoque_Movimento.CFOP)="6404" Or (Estoque_Movimento.CFOP)="6910"));

Outros códigos que comumente são utilizados são

5.108 > 1.102
5.106 > 1.102
5.123 > 1.122
5.405 > 1.403
5.655 > 1.652
5.929 > 1.949
6.409 > 2.402
6.656 > 2.653

Caso ainda tenha dúvidas de qual código poderá ser substituído, confira a tabela de CFOP. Também poderá consultar com outros técnicos especializados na geração do arquivo.

Feito o comando de correção das CFOP, lembre-se de abrir a Estoque_Movimento e validar se não ficou nenhum código de saída nas operações de compra!

Alteração CST IPI

Assim como na CFOP, os códigos de CST do IPI, PIS e COFINS também devem representar operações de entrada.
Para a correção dos códigos de IPI, siga o comando:

UPDATE Estoque_Movimento SET Estoque_Movimento.CSTIPI = IIf([Estoque_Movimento.CSTIPI]="0","03",IIf([Estoque_Movimento.CSTIPI]="50","00",IIf([Estoque_Movimento.CSTIPI]="51","01",IIf([Estoque_Movimento.CSTIPI]="52","02",IIf([Estoque_Movimento.CSTIPI]="53","03",IIf([Estoque_Movimento.CSTIPI]="54","04",IIf([Estoque_Movimento.CSTIPI]="55","05",IIf([Estoque_Movimento.CSTIPI]="99","49"))))))))
WHERE (((Estoque_Movimento.CSTIPI)="0" Or (Estoque_Movimento.CSTIPI)="50" Or (Estoque_Movimento.CSTIPI)="51" Or (Estoque_Movimento.CSTIPI)="52" Or (Estoque_Movimento.CSTIPI)="53" Or (Estoque_Movimento.CSTIPI)="54" Or (Estoque_Movimento.CSTIPI)="55" Or (Estoque_Movimento.CSTIPI)="99"));

Comumente, os códigos alterados são os abaixo:

00 > 03
50 > 00
51 > 01
52 > 02
53 > 03
54 > 04
55 > 05
99 > 49

Sendo os valores à esquerda, saída, e na direita, entrada.

Alteração PIS e COFINS

UPDATE Estoque_Movimento SET Estoque_Movimento.CSTPIS = IIf([Estoque_Movimento.CSTPIS]="00","71",IIf([Estoque_Movimento.CSTPIS]="01","50",IIf([Estoque_Movimento.CSTPIS]="02","50",IIf([Estoque_Movimento.CSTPIS]="03","99",IIf([Estoque_Movimento.CSTPIS]="04","50",IIf([Estoque_Movimento.CSTPIS]="05","75",IIf([Estoque_Movimento.CSTPIS]="06","73",IIf([Estoque_Movimento.CSTPIS]="07","71",IIf([Estoque_Movimento.CSTPIS]="08","74",IIf([Estoque_Movimento.CSTPIS]="09","72",IIf([Estoque_Movimento.CSTPIS]="49","99"))))))))))), Estoque_Movimento.CSTCOFINS = IIf([Estoque_Movimento.CSTCOFINS]="00","71",IIf([Estoque_Movimento.CSTCOFINS]="01","50",IIf([Estoque_Movimento.CSTCOFINS]="02","50",IIf([Estoque_Movimento.CSTCOFINS]="03","99",IIf([Estoque_Movimento.CSTCOFINS]="04","50",IIf([Estoque_Movimento.CSTCOFINS]="05","75",IIf([Estoque_Movimento.CSTCOFINS]="06","73",IIf([Estoque_Movimento.CSTCOFINS]="07","71",IIf([Estoque_Movimento.CSTCOFINS]="08","74",IIf([Estoque_Movimento.CSTCOFINS]="09","72",IIf([Estoque_Movimento.CSTCOFINS]="49","99")))))))))))
WHERE (((Estoque_Movimento.CSTPIS)="00" Or (Estoque_Movimento.CSTPIS)="01" Or (Estoque_Movimento.CSTPIS)="02" Or (Estoque_Movimento.CSTPIS)="03" Or (Estoque_Movimento.CSTPIS)="04" Or (Estoque_Movimento.CSTPIS)="05" Or (Estoque_Movimento.CSTPIS)="06" Or (Estoque_Movimento.CSTPIS)="07" Or (Estoque_Movimento.CSTPIS)="08" Or (Estoque_Movimento.CSTPIS)="09" Or (Estoque_Movimento.CSTPIS)="49") AND ((Estoque_Movimento.CSTCOFINS)="00" Or (Estoque_Movimento.CSTCOFINS)="01" Or (Estoque_Movimento.CSTCOFINS)="02" Or (Estoque_Movimento.CSTCOFINS)="03" Or (Estoque_Movimento.CSTCOFINS)="04" Or (Estoque_Movimento.CSTCOFINS)="05" Or (Estoque_Movimento.CSTCOFINS)="06" Or (Estoque_Movimento.CSTCOFINS)="07" Or (Estoque_Movimento.CSTCOFINS)="08" Or (Estoque_Movimento.CSTCOFINS)="09" Or (Estoque_Movimento.CSTCOFINS)="49"));

Novamente, seguindo a mesma regra apresentada para o IPI, os códigos de PIS e COFINS geralmente utilizados nas operações de entrada são os abaixo:

00 > 71
01 > 50
02 > 50
03 > 99
04 > 50
05 > 75
06 > 73
07 > 71
08 > 74
09 > 72
49 > 99


Mudança Tipo de Estoque

Também é necessário o comando para preencher a informação de tipo de estoque valido para o SPED

UPDATE Estoque_Itens SET Estoque_Itens.TipoEstoqueSPED = "00"
WHERE (((Estoque_Itens.TipoEstoqueSPED)="" Or (Estoque_Itens.TipoEstoqueSPED) Is Null));

NCM com menos de 8 dígitos

E para a correção da quantidade de caracteres no NCM

UPDATE Estoque_Itens SET Estoque_Itens.NCM = "00000000"
WHERE (((Len([Estoque_Itens]![NCM]))<>8));

Ajustar IE com dígitos faltantes: MG

Para ajustar o cadastro de clientes PJ que sejam de Minas Gerais e os quais a IE está com dígitos faltantes.

UPDATE (Cad_Estado INNER JOIN Cad_Cidade ON Cad_Estado.Código = Cad_Cidade.Região) INNER JOIN Cad_Cliente ON Cad_Cidade.Código = Cad_Cliente.Cidade SET Cad_Cliente.RG = "00" & [Cad_Cliente]![RG]
WHERE (((Cad_Cliente.RG) Is Not Null And (Cad_Cliente.RG)<>"ISENTO") AND ((Cad_Estado.Estado)="MG") AND ((Cad_Cliente.TPessoa)=2) AND ((Len([Cad_Cliente]![RG]))=11));

Ajustar IE com dígitos faltantes: ES

Para ajustar o cadastro de clientes PJ que sejam do Espirito Santo e os quais a IE está com dígitos faltantes.

UPDATE Cad_Estado INNER JOIN (Cad_Cidade INNER JOIN Cad_Cliente ON Cad_Cidade.Código = Cad_Cliente.Cidade) ON Cad_Estado.Código = Cad_Cidade.Região SET Cad_Cliente.RG = "0" & [Cad_Cliente]![RG]
WHERE (((Cad_Cliente.RG) Is Not Null And (Cad_Cliente.RG)<>"ISENTO") AND ((Cad_Estado.Estado)="ES") AND ((Cad_Cliente.TPessoa)=2) AND ((Len([Cad_Cliente]![RG]))=8));

Ajustar IE com dígitos faltantes: RS

Para ajustar o cadastro de clientes PJ que sejam do Rio Grande do Sul e os quais a IE está com dígitos faltantes.

UPDATE Cad_Estado INNER JOIN (Cad_Cidade INNER JOIN Cad_Cliente ON Cad_Cidade.Código = Cad_Cliente.Cidade) ON Cad_Estado.Código = Cad_Cidade.Região SET Cad_Cliente.RG = "0" & [Cad_Cliente]![RG]
WHERE (((Cad_Cliente.RG) Is Not Null And (Cad_Cliente.RG)<>"ISENTO") AND ((Cad_Estado.Estado)="RS") AND ((Cad_Cliente.TPessoa)=2) AND ((Len([Cad_Cliente]![RG]))=9));

Bloco K

O bloco K é a versão digital em substituição ao Livro Registro de Controle de Produção e Estoque.
Ele tem o objetivo de prestar informações mensais da produção e respectivo consumo de insumos, bem como do estoque escriturado, com obrigatoriedade para os estabelecimentos industriais ou a eles equiparados pela legislação federal. Além disso, para os estabelecimentos atacadistas, podendo, a critério do Fisco, ser exigida de estabelecimento de contribuintes de outros setores

Caso o cliente precise do bloco K, realize os seguintes comandos:

Na Estoque_Itens é preciso marcar todas as linhas na coluna SPED_ProdFinal.
Os comandos abaixo fazem o preenchimento de acordo com a marcação do tipo de estoque do item:

UPDATE Estoque_Itens SET Estoque_Itens.SPED_ProdFInal = 1;
UPDATE Estoque_Itens SET Estoque_Itens.TipoEstoqueSPED = "00"
WHERE (((Estoque_Itens.Mercadoria)=True));
UPDATE Estoque_Itens SET Estoque_Itens.TipoEstoqueSPED = "01"
WHERE (((Estoque_Itens.Materia_Prima)=True));
UPDATE Estoque_Itens SET Estoque_Itens.TipoEstoqueSPED = "04"
WHERE (((Estoque_Itens.Produto)=True));

Também será necessário entrar no SIEM e habilitar as Config. II:

Com o valor 1 - Sim.


Bloco H

O Bloco H é um dos registros transmitido como um dos módulos da EFD, sendo o registro destinado a informar para a Receita Federal tudo sobre o inventário físico das empresas.

Se for realizada a geração do arquivo com o Bloco H, realize o comando abaixo

Inserir o mesmo código do produto na coluna SPEDContaContabil

UPDATE Estoque_Itens SET Estoque_Itens.SPEDContaContabil = [Estoque_Itens]![Código]
WHERE (((Estoque_Itens.SPEDContaContabil)="" Or (Estoque_Itens.SPEDContaContabil) Is Null));

 

 

 

 

 

 

 

 

 

Comandos Reg. Específicos - SPED

Para a correção de alguns registros e blocos específicos no SPED é necessário realizar certos comandos dentro da base de dados para observar dados.

Abaixo estarão linhas de comandos para ajudar na visualização dessas informações para preenchimento adequado no arquivo de remessa.


E520 - Apuração de IPI

A apuração dos valores de IPI precisa, assim como a maioria dos campos, dos dados fiscais das operações de entrada e saída.
Utilize a SQL abaixo na base de dados para obter os valores respectivos e data.

- IPI SAÍDA

SELECT Faturamento_NotaFiscal_movimento.CFOP_ITEM, Faturamento_NotaFiscal_movimento.TIPO_IPI, Sum(Faturamento_NotaFiscal_movimento.Valor_Total) AS SomaDeValor_Total, Sum(Faturamento_NotaFiscal_movimento.VL_BC_IPI) AS SomaDeVL_BC_IPI, Sum(Faturamento_NotaFiscal_movimento.VL_IPI) AS SomaDeVL_IPI
FROM Faturamento_NotaFiscal INNER JOIN Faturamento_NotaFiscal_movimento ON Faturamento_NotaFiscal.Código = Faturamento_NotaFiscal_movimento.NotaFiscal
GROUP BY Faturamento_NotaFiscal_movimento.CFOP_ITEM, Faturamento_NotaFiscal_movimento.TIPO_IPI, Month([Faturamento_NotaFiscal]![DataEmissao]) & "/" & Year([Faturamento_NotaFiscal]![DataEmissao]), Faturamento_NotaFiscal.Cancelado, Faturamento_NotaFiscal.NFe_stAutorizado
HAVING (((Sum(Faturamento_NotaFiscal_movimento.VL_IPI))>0) AND ((Month([Faturamento_NotaFiscal]![DataEmissao]) & "/" & Year([Faturamento_NotaFiscal]![DataEmissao]))="1/2024") AND ((Faturamento_NotaFiscal.Cancelado)=False) AND ((Faturamento_NotaFiscal.NFe_stAutorizado)=True));

- IPI ENTRADA

SELECT Estoque_Movimento.CFOP, Estoque_Movimento.CSTIPI, Sum(Estoque_Movimento.Valor_Total) AS SomaDeValor_Total, Sum(Estoque_Movimento.vBCIPI) AS SomaDevBCIPI, Sum(Estoque_Movimento.vlIPI) AS SomaDevlIPI
FROM Estoque_Movimento
GROUP BY Estoque_Movimento.CFOP, Estoque_Movimento.CSTIPI, Month([Estoque_Movimento]![Data]) & "/" & Year([Estoque_Movimento]![Data])
HAVING (((Sum(Estoque_Movimento.vlIPI))>0) AND ((Month([Estoque_Movimento]![Data]) & "/" & Year([Estoque_Movimento]![Data]))="1/2024"));

Não se esqueça de ajustar a data para a referente ao mês de apuração do arquivo dentro da SQL ou no Modo Design da consulta.

image-1711112209193.png

O preenchimento dos valores apresentados na SQL devem ser preenchidos no Registro E510 e a somatória dos valores no E520.


E200 - Apuração ICMS ST

ICMS ST Saída

SELECT IIf([Cad_Estado]![Código]=[Cad_Estado_1]![Código],"ESTADUAL","INTERESTADUAL") AS OPERAÇÃO, Sum(Faturamento_NotaFiscal_movimento.VL_ICMS_SUB) AS SomaDeVL_ICMS_SUB, Month([Faturamento_NotaFiscal]![DataEmissao]) & "/" & Year([Faturamento_NotaFiscal]![DataEmissao]) AS MÊS
FROM (((Cad_Cidade INNER JOIN (Cd_Empresa INNER JOIN (Cad_Cliente INNER JOIN (Faturamento_NotaFiscal INNER JOIN Faturamento_NotaFiscal_movimento ON Faturamento_NotaFiscal.Código = Faturamento_NotaFiscal_movimento.NotaFiscal) ON Cad_Cliente.Código = Faturamento_NotaFiscal.Cliente) ON Cd_Empresa.Código = Faturamento_NotaFiscal.Empresa) ON Cad_Cidade.Código = Cd_Empresa.Cidade) INNER JOIN Cad_Cidade AS Cad_Cidade_1 ON Cad_Cliente.Cidade = Cad_Cidade_1.Código) INNER JOIN Cad_Estado ON Cad_Cidade.Região = Cad_Estado.Código) INNER JOIN Cad_Estado AS Cad_Estado_1 ON Cad_Cidade_1.Região = Cad_Estado_1.Código
GROUP BY IIf([Cad_Estado]![Código]=[Cad_Estado_1]![Código],"ESTADUAL","INTERESTADUAL"), Faturamento_NotaFiscal.Cancelado, Faturamento_NotaFiscal.NFe_stAutorizado, Month([Faturamento_NotaFiscal]![DataEmissao]) & "/" & Year([Faturamento_NotaFiscal]![DataEmissao])
HAVING (((Faturamento_NotaFiscal.Cancelado)=False) AND ((Faturamento_NotaFiscal.NFe_stAutorizado)=True) AND ((Month([Faturamento_NotaFiscal]![DataEmissao]) & "/" & Year([Faturamento_NotaFiscal]![DataEmissao]))="6/2022"))
ORDER BY IIf([Cad_Estado]![Código]=[Cad_Estado_1]![Código],"ESTADUAL","INTERESTADUAL");

ICMS ST Entrada

SELECT Month([Estoque_Movimento]![Data]) & "/" & Year([Estoque_Movimento]![Data]) AS MÊS, Sum(Estoque_Movimento.vlST) AS SomaDevlST
FROM Estoque_Movimento
GROUP BY Month([Estoque_Movimento]![Data]) & "/" & Year([Estoque_Movimento]![Data])
HAVING (((Month([Estoque_Movimento]![Data]) & "/" & Year([Estoque_Movimento]![Data]))="6/2022"));

 

 

 

 

 

 

 

 

 

 

 

 

 

Geração do Arquivo

Para a geração do arquivo de SPED no SIEM, é preciso que o módulo esteja habilitado para o cliente.
Ele pode ser localizado na aba Fiscal

image-1699359113396.png

 

Antes da geração do arquivo, é preciso que as informações da empresa e do contador estejam preenchidas de acordo.
Por isso, selecione em Outros Lançamentos a opção Dados da Empresa e confira se os dados estão de acordo:

image-1699359166052.png

Todos os campos devem estar preenchidos, com exceção dos campos de endereço quando não existem.
Exemplo: Complemento

image-1699359208758.png


Feita a conferência de dados da empresa, confira o Período de Apuração.
O mesmo deve indicar o mês a qual será gerado o SPED, e após usar da função Exibir, os registros de entrada e saída serão exibidos.

Basta usar agora a opção Gerar arquivo EFD para o próximo passo

image-1699359375503.png

Aqui deve ser informado o tipo de SPED a ser gerado.
Caso não contenha Bloco H e nem Bloco K, a opção Inventário deve permanecer como "NÃO GERAR REGISTRO"

image-1699359498122.png

Se é preciso ter as informações desses blocos, utilize a opção "FINAL DE PERIODO" e em Dt.Estoque preencha com o ultimo dia do mês de apuração.

image-1699359515245.png

O arquivo gerado será encaminhado para uma pasta de nome SPED em seu Disco C

 

 

 

 

 

 

Validação dos Arquivos

Para fazer a validação do arquivo de SPED é necessário algumas ferramentas fornecidas pelo próprio governo.
Sendo os principais o EFD ICMS IPI (Escrituração Fiscal Digital) e o EFD Contribuições que farão a validação principal do arquivo.

Algumas outras ferramentas vão auxiliar na edição e correção do mesmo em diferentes situações, são eles:

Caso não tenha nenhum deles instalado em seu computador, poderá obter uma cópia no link AQUI

EFD ICMS/IPI

Para a validação do arquivo de ICMS, após a geração do mesmo pelo SIEM, abra o aplicativo da Escrituração Digital e use a função Importar Escrituração Fiscal

image-1699878334709.png

Uma nova tela será aberta para a importação do arquivo.
Por padrão, o sistema era fazer a geração deles no Disco C:\ do computador, na pasta SPED.

image-1699878382592.png

Basta selecionar o arquivo desejado para a geração da escrituração e abrir.
Aqui já será feita a primeira validação de conteúdo caso confirme o aviso.

image-1699878436069.png

Se alguma informação diferente for exibida nessa tela, dizendo que "não foi possível fazer a importação do arquivo", provavelmente há um erro na estrutura.
Isso pode ser causado por preenchimento incorreto nos Dados da Empresa (Contabilidade) ou por ter esquecido alguma operação de importação.

Uma tela de erro será exibida mostrando oque precisa ser corrigido antes da importação.

Após a validação do arquivo, se ainda houverem correções necessárias no arquivo, a mensagem de erro irá aparecer:

image-1702929282383.png

A tela de Pendências seguirá a mensagem com a contagem de erros e as informações da empresa emitente.
Marque a caixa de ERROS localizado no topo da tela e a opção EXIBIR ao lado para começar as correções.

image-1702929802913.png

Boa parte dos erros vindos no arquivo de SPED são ajustados com as SQL informadas nos passos anteriores.
Certifique-se de ter passado por todas elas!

A resolução dos erros mais comuns será abordado em outra documentação!


Feito a correção dos erros, use a função de validação para conferir os dados.

image-1702930026357.png


Em alguns casos uma mensagem de avisos pode constar após esse passo

image-1702930190963.png

Porém a mesma é usada para notificar de que há Advertências, apenas avisos, e não influenciam a validação do arquivo.
Se não houver mais erros, a caixa ERROS ficará apagada. Isso indica que o Arquivo de Entrega está pronto para ser gerado

image-1702930304041.png

Basta selecionar a opção de Gerar arquivo de Escrituração para Entrega ou então fazer o caminho abaixo

image-1702930379981.png

Ou

image-1702930462042.png

Pronto!
Basta selecionar onde irá fazer o salvamento do arquivo e encaminhar para o cliente.