Tutorial passo a passo para configuração de IBS, CBS, Classificação Tributária, regras fiscais e validação via XML.
A Reforma Tributária do Consumo tem como principal objetivo simplificar o sistema tributário brasileiro, unificando tributos incidentes sobre bens e serviços em dois novos impostos: IBS e CBS.
A soma desses dois tributos forma o IVA — Imposto sobre Valor Agregado, modelo já utilizado em diversos países, que busca reduzir a burocracia, aumentar a transparência e tornar a tributação mais justa para empresas e consumidores.
A implementação será gradual, ocorrendo no período de 2026 a 2033, permitindo adaptação dos sistemas, processos e cadastros fiscais.
Com a entrada da Reforma Tributária, será necessário realizar novos cadastros e ajustes de parametrização no sistema TGA para garantir o correto cálculo, destaque e geração de XML.
As principais situações que exigem atenção e configuração são:
Este tutorial foi desenvolvido para orientar, de forma prática e segura, todas as etapas necessárias para adequação do sistema TGA às novas regras da Reforma Tributária do Consumo.
Referente à CCLASSTRIB (Classificação Tributária): é fundamental orientar o cliente a realizar um levantamento para identificar se existem produtos com classificação diferente de 000001.
Caso exista algum produto ou movimento de emissão de notas que deveria destacar os tributos e não esteja destacando, a solicitação de ajuste deve ser encaminhada ao suporte TGA para análise e correção da parametrização.
Atualize o sistema para a versão 25.11.01 ou superior. Essa etapa é essencial para o funcionamento correto da Reforma Tributária.
Cadastre a fórmula 200 no sistema conforme abaixo.
SETVAR(RATEIO,N,FORMULA(9)); SETVAR(TOTITEM,N,((ITQT * ITPU)-ITDC) - (MVVD * RATEIO)); SETVAR(FRETE,N,SE(MVTF="1",MVVF,0)); SETVAR(TOTITEM,N,TOTITEM + (FRETE * RATEIO)); SETVAR(VPIS,N,ITTV(PIS)); SETVAR(VCOFINS,N,ITTV(COFINS)); SETVAR(VICMS,N,ITTV(ICMS)); SETVAR(VICMSST,N,ITTV(ICMSST)); SETVAR(VFCP,N,ITTV(FCP)); SETVAR(VFCPST,N,ITTV(FCPST)); SETVAR(VISS,N,ITTV(ISS)); TOTITEM - VPIS - VCOFINS - VICMS - VICMSST - VFCP - VFCPST - VISS
Módulo Estoque → Fiscais → Classificação Tributária → Importar via API
Antes de executar, revise os movimentos fiscais que não devem receber os novos tributos (regra 3.3) .
/* ==========================================================
3. EXECUTE BLOCK — CRIAÇÃO E VÍNCULO DOS TRIBUTOS
========================================================== */
EXECUTE BLOCK
AS
DECLARE VARIABLE VCODTMV VARCHAR(20);
DECLARE VARIABLE VSEQ INTEGER;
DECLARE VARIABLE VFORM INTEGER;
DECLARE VARIABLE VGERASPED VARCHAR(1);
DECLARE VARIABLE VINATIVO VARCHAR(1);
BEGIN
/* ======================================================
CRIAÇÃO DOS TRIBUTOS
====================================================== */
INSERT INTO TTRIBUTO
(CODEMPRESA, CODTRB, DESCRICAO, INCIDENCIA,
TIPOTRIBFISC, ABRANGENCIA, FATOR, ALIQUOTA)
VALUES
(1, 'CBS', 'CBS', 'A', 41, 'F', 0.0, 0.0);
INSERT INTO TTRIBUTO
(CODEMPRESA, CODTRB, DESCRICAO, INCIDENCIA,
TIPOTRIBFISC, ABRANGENCIA, FATOR, ALIQUOTA)
VALUES
(1, 'IBSUF', 'IBSUF', 'A', 42, 'E', 0.0, 0.0);
INSERT INTO TTRIBUTO
(CODEMPRESA, CODTRB, DESCRICAO, INCIDENCIA,
TIPOTRIBFISC, ABRANGENCIA, FATOR, ALIQUOTA)
VALUES
(1, 'IBSMUN', 'IBSMUN', 'A', 43, 'M', 0.0, 0.0);
/* ======================================================
ATUALIZA REGRA DE TRIBUTAÇÃO
====================================================== */
UPDATE TREGRATRIBUTACAOOPERACOES R
SET R.USAIMPORTADORXML = 'T',
R.CODCCLASTRIB = '000001';
/* ======================================================
LOOP NOS TIPOS DE MOVIMENTO
====================================================== */
FOR
SELECT DISTINCT T.CODTMV
FROM TTRBTMV T
INTO :VCODTMV
DO
BEGIN
/* --------------------------------------------------
3.1 Verifica se gera escrituração fiscal
-------------------------------------------------- */
SELECT T2.GERAESCRITURACAOFISC
FROM TTIPOMOV2 T2
WHERE T2.CODTIPOMOV = :VCODTMV
INTO :VGERASPED;
/* --------------------------------------------------
3.2 Verifica se o movimento está inativo
-------------------------------------------------- */
SELECT T.INATIVO
FROM TTIPOMOV T
WHERE T.CODTIPOMOV = :VCODTMV
INTO :VINATIVO;
/* --------------------------------------------------
3.3 Regras para NÃO inserir os tributos
-------------------------------------------------- */
IF (
(VCODTMV IN (
'1.2.02','1.2.13','1.2.14','1.2.15','1.2.16',
'1.3.05','1.3.06',
'2.2.18','2.2.19','2.2.21','2.3.06',
'2.2.20','2.2.22',
'1.2.11','1.2.13'
))
OR (VGERASPED = 'F')
OR (VINATIVO = 'T')
)
THEN
BEGIN
/* NÃO INSERE TRIBUTOS */
END
ELSE
BEGIN
/* ----------------------------------------------
3.4 Próximo sequencial
---------------------------------------------- */
SELECT MAX(T.SEQUENCIAL)
FROM TTRBTMV T
WHERE T.CODTMV = :VCODTMV
INTO :VSEQ;
IF (VSEQ IS NULL) THEN
VSEQ = 0;
VSEQ = VSEQ + 1;
/* ----------------------------------------------
3.5 Fórmula base IBS/CBS
---------------------------------------------- */
VFORM = 200;
/* ----------------------------------------------
3.6 IBS Estadual (IBSUF)
---------------------------------------------- */
INSERT INTO TTRBTMV
(CODEMPRESA, CODTMV, ITEMOUMOVIMENTO, CODTRB,
ALIQUOTATRIBUTO, CODFRMBCTRIBUTO,
ACHARALIQUOTA, SEQUENCIAL, NAOIMPORTARXML)
VALUES
(1, :VCODTMV, 'I', 'IBSUF',
'0.00', :VFORM,
'T', :VSEQ, 'F');
VSEQ = VSEQ + 1;
/* ----------------------------------------------
3.7 IBS Municipal (IBSMUN)
---------------------------------------------- */
INSERT INTO TTRBTMV
(CODEMPRESA, CODTMV, ITEMOUMOVIMENTO, CODTRB,
ALIQUOTATRIBUTO, CODFRMBCTRIBUTO,
ACHARALIQUOTA, SEQUENCIAL, NAOIMPORTARXML)
VALUES
(1, :VCODTMV, 'I', 'IBSMUN',
'0.00', :VFORM,
'T', :VSEQ, 'F');
VSEQ = VSEQ + 1;
/* ----------------------------------------------
3.8 CBS Federal
---------------------------------------------- */
INSERT INTO TTRBTMV
(CODEMPRESA, CODTMV, ITEMOUMOVIMENTO, CODTRB,
ALIQUOTATRIBUTO, CODFRMBCTRIBUTO,
ACHARALIQUOTA, SEQUENCIAL, NAOIMPORTARXML)
VALUES
(1, :VCODTMV, 'I', 'CBS',
'0.00', :VFORM,
'T', :VSEQ, 'F');
END
END
END
A aplicação dos tributos da Reforma Tributária (IBS e CBS) ocorre somente em operações onerosas. Abaixo estão os principais cenários contemplados.
Importante:
Cadastros → Fiscais → Tributos
Verifica se aparece cadastrados os novos tributos
Edição do Movimento → Identificação → Dados Fiscais → Tipo de Operação / Regra de Tributação por Produto
UPDATE GFILIAL
SET DATAHOMOLOGACAOREFORMA = '01.09.2025',
DATAPRODUCAOREFORMA = 'dia/mes/ano';
UPDATE GFILIAL SET DESTACATAGVITEMREFORMA = 'T';
Gere uma nota teste e valide se o XML contém corretamente as tags de IBS e CBS como no exemplo abaixo.
<IBSCBSTot>
<vBCIBSCBS>2.20</vBCIBSCBS>
<gIBS>
<gIBSUF>
<vDif>0.00</vDif>
<vDevTrib>0.00</vDevTrib>
<vIBSUF>0.01</vIBSUF>
</gIBSUF>
<gIBSMun>
<vDif>0.00</vDif>
<vDevTrib>0.00</vDevTrib>
<vIBSMun>0.00</vIBSMun>
</gIBSMun>
<vIBS>0.01</vIBS>
<vCredPres>0.00</vCredPres>
<vCredPresCondSus>0.00</vCredPresCondSus>
</gIBS>
<gCBS>
<vDif>0.00</vDif>
<vDevTrib>0.00</vDevTrib>
<vCBS>0.02</vCBS>
<vCredPres>0.00</vCredPres>
<vCredPresCondSus>0.00</vCredPresCondSus>
</gCBS>
</IBSCBSTot>
<vNFTot>3.11</vNFTot>
</total>
Sobre a exibição de IBS e CBS na DANFE:
Caso algum cliente questione a ausência dos tributos
IBS e CBS na DANFE, oriente conforme abaixo.
Atualmente, o sistema já gera corretamente no XML da nota:
No entanto, a DANFE oficial nacional segue um leiaute definido por norma técnica que, até o momento, ainda não foi atualizado oficialmente para contemplar campos específicos de IBS e CBS (como CST/CSOSN e detalhamento próprio).
Ou seja, atualmente:
Assim que o novo layout oficial da DANFE for publicado, o sistema TGA será ajustado para atender a nova exigência.
Em casos de necessidade operacional ou insistência do cliente para exibir os valores de IBS e CBS em algum local da DANFE, foi disponibilizada uma fórmula opcional.
Essa fórmula pode ser configurada no Tipo de Movimento, permitindo incluir os valores de IBS e CBS em texto complementar da nota.
SETVAR(
TEXTOIR,
C,
"SELECT
'Valor total do CBS dos produtos: R$ ' ||
REPLACE(
CAST(
COALESCE(SUM(CASE WHEN CODTRB='CBS' THEN VALOR ELSE 0 END),0)
AS NUMERIC(9,2)
),'.',','
) ||
' Valor total do IBS dos produtos: R$ ' ||
REPLACE(
CAST(
COALESCE(SUM(CASE WHEN CODTRB='IBSUF' THEN VALOR ELSE 0 END),0)
AS NUMERIC(9,2)
),'.',','
)
FROM TTRBMOV
WHERE IDMOV=" + MVID
);
SETVAR(TEXTOIR2, C, FSQL(TEXTOIR));
TEXTOIR2
Atenção: essa exibição é apenas informativa e não substitui o leiaute oficial da DANFE.