16 de agosto de 2026
A Reforma Tributária não vai mudar apenas impostos. Vai mudar sistemas.
O split payment parece uma mudança fiscal. Para quem constrói software, ele mexe em pagamentos, contratos, estados, conciliação, dados e resiliência.
Por Jeordane Batista — Co-Fundador
A pergunta de arquitetura não é “como calcular o novo imposto?”. É: o que acontece quando uma regra do domínio muda o próprio significado de “pagamento concluído”?
Nota de escopo: este artigo considera a documentação técnica disponível até agosto de 2026. O desenho operacional do split payment ainda está em evolução; no portal oficial do CGIBS, o Manual de Integração V1 e o OpenAPI estão publicados, enquanto outros materiais operacionais ainda aparecem como minutas.
Em agosto de 2026, o Comitê Gestor do IBS informou novos avanços na Plataforma Pública do Split Payment e reforçou que a documentação técnica já está disponível para que instituições financeiras, prestadores de serviços de pagamento e desenvolvedores preparem suas soluções.
À primeira vista, isso parece assunto para fiscal, contabilidade e financeiro.
Só que o desenho técnico oficial conta outra história.
O Manual de Integração descreve uma plataforma que recebe mensagens de transação, expõe endpoints HTTP, usa contratos baseados em OpenAPI, exige e propaga identificadores de correlação, devolve identificadores de controle como ResourceId, mantém trilhas de auditoria e define comportamento para erros transitórios, retries, backoff exponencial e circuit breakers.
Ou seja: a Reforma Tributária chegou ao território de sistemas distribuídos.
1. O que mudou de verdade
O split payment é um mecanismo em que valores de IBS e CBS podem ser segregados no fluxo da liquidação financeira da operação, em vez de toda a quantia seguir necessariamente para o fornecedor para que o tributo seja tratado apenas posteriormente.
A regulamentação da CBS, pelo Decreto nº 12.955/2026, e a do IBS, pela Resolução CGIBS nº 6/2026, preveem implementação gradual do split payment, em no mínimo duas etapas.
Em 2026, a implementação está em fase de testes, adaptação de sistemas e validação dos fluxos de informação.
Esse período ainda não representa a operação financeira plena e generalizada do split payment. Pelas regras de transição, há dispensa de recolhimento de IBS e CBS nas condições estabelecidas para o ano de testes.
O próprio contexto regulatório de agosto reforça essa característica de transição: em 6 de agosto de 2026, Receita Federal e CGIBS esclareceram o adiamento de determinadas regras de validação dos campos de IBS e CBS nos documentos fiscais eletrônicos.
Isso importa porque a mudança não adiciona apenas “mais dois campos tributários”.
Ela aproxima dois domínios que historicamente podiam ser tratados em momentos diferentes:
o fato fiscal e a liquidação do pagamento.
E essa aproximação muda o desenho dos sistemas.
2. Um pagamento de R$ 100 parece simples — até deixar de ser
Use um exemplo deliberadamente simplificado.
Os valores e a decomposição abaixo são apenas didáticos. Não representam alíquota, procedimento de cálculo nem todas as regras de determinação do valor efetivamente segregado.
A intenção é visualizar o impacto arquitetural, não reproduzir o algoritmo normativo do split payment.
ANTES — modelo mental simplificado
Cliente paga R$ 100
|
v
Pagamento aprovado
|
v
Liquidação
|
v
Empresa recebe
|
v
Fiscal / Financeiro / ContabilidadeAgora introduza, conceitualmente, uma segregação no momento da liquidação:
COM SPLIT PAYMENT — abstração arquitetural
Cliente paga R$ 100
|
v
Liquidação
+-------+
v v
Empresa IBS/CBS
R$ 82 R$ 18
R$ 100 = R$ 82 + R$ 18O detalhe importante não é o R$ 18.
Na operação real, o valor efetivamente segregado depende das regras aplicáveis ao procedimento, podendo considerar, entre outros fatores, valores já extintos e ajustes previstos na regulamentação.
Para a arquitetura, o ponto relevante é outro:
valor da venda
valor pago
valor segregado
e
valor recebido
deixam de ser sinônimos convenientes.
Esse é o tipo de mudança aparentemente pequena que começa no domínio e termina atravessando boa parte da arquitetura.
3. A premissa escondida
Existe uma premissa particularmente interessante:
“Primeiro recebemos o dinheiro. Depois resolvemos o imposto.”
Talvez ninguém tenha escrito isso em uma especificação.
Mesmo assim, ela pode estar embutida em código, tabelas, ETLs, relatórios e integrações construídas durante anos.
Um sistema legado pode usar um único campo:
amount
e interpretar:
SETTLED
como:
todo o valor da operação já está disponível para a empresa.
Um data warehouse pode somar todos os pagamentos liquidados e chamar isso de cash_received.
Uma conciliação pode procurar correspondência 1:1 entre venda e crédito financeiro.
Quando o domínio muda, todos esses modelos podem continuar tecnicamente válidos.
A aplicação compila.
A query executa.
O dashboard abre.
Só que o significado do dado mudou.
E bugs semânticos têm uma característica perigosa:
o sistema pode continuar funcionando perfeitamente enquanto responde à pergunta errada.
Conceitualmente, algo que antes poderia ser modelado como:
const netReceived = payment.amount;
passa a precisar de algo mais explícito:
const settlement = {
grossAmount: 100,
taxSegregatedAmount: 18,
netSettlementAmount: 82
};Esse código também é apenas um exemplo de modelagem.
A mudança importante não está no cálculo.
Está no modelo de domínio.
4. Onde o problema técnico começa: correlação
Para separar corretamente valores no fluxo financeiro, não basta saber que houve um pagamento.
É necessário saber: a qual operação esse pagamento pertence?
E quais informações fiscais estão associadas a ela?
Aqui aparece um problema clássico de sistemas distribuídos.
Pedido, documento fiscal, pagamento, PSP, liquidação e ERP normalmente não compartilham um único identificador universal.
O Manual de Integração deixa essa necessidade evidente ao exigir headers como messageId e correlationId, além de identificadores presentes nos payloads de negócio, como txId, e2eId, docFiscal, idRepasse e idLote, conforme o fluxo.
É importante separar dois conceitos.
O correlationId tem papel técnico: ajuda a correlacionar múltiplos eventos e chamadas e deve ser propagado entre serviços para favorecer rastreamento distribuído.
Já a correlação de negócio depende dos identificadores que permitem relacionar operação comercial, documento fiscal, pagamento e demais registros do fluxo.
Separadamente, a Plataforma Pública devolve um ResourceId, que funciona como número de controle do recurso recebido e apoia sua rastreabilidade. Na V1 do manual, o mecanismo de consulta desse recurso ainda seria detalhado em versões posteriores.
Conceitualmente:
Pedido
orderId=ORD-91827
|
v
Documento fiscal
docFiscal=...
|
v
Pagamento
txId=TX-77182
|
v
Plataforma Pública
|
+-- controle técnico:
| ResourceId=RES-...
|
v
Informe / fluxo de segregaçãoA capacidade de correlacionar operação comercial, documento fiscal e transação de pagamento deixa de ser apenas uma conveniência técnica e passa a ser requisito do próprio fluxo.
O correlationId contribui para o rastreamento distribuído, enquanto os identificadores presentes nos payloads e nos sistemas internos permitem estabelecer as relações de negócio necessárias entre esses registros.
5. O blast radius de uma regra tributária
Se você olhar apenas para o cálculo do imposto, o impacto parece localizado.
Se acompanhar a transação ponta a ponta, fica diferente:
Domínio | v Checkout / Pedido | v Documento fiscal | v Pagamento / PSP | v Plataforma Pública do Split Payment | v Liquidação e segregação | v Conciliação | v ERP / Financeiro / Contabilidade | v ETL / Data Lake / Analytics
Esse é o blast radius real.
Checkout e pedido
Talvez não sejam responsáveis pelo split em si.
Mas precisam preservar contexto suficiente para que a operação possa ser correlacionada posteriormente.
Perder contexto no começo da jornada pode transformar a conciliação em um problema impossível de resolver no final.
Documento fiscal
O documento fiscal ganha importância na vinculação entre a operação tributável e a transação de pagamento, ainda que a forma e a obrigatoriedade dessa identificação variem conforme o fluxo e o arranjo.
Pagamento e PSP
O fluxo financeiro precisa transportar ou relacionar contexto tributário.
Isso aumenta a importância de:
- contratos;
- versionamento;
- schemas;
- validação;
- compatibilidade;
- rastreabilidade.
Conciliação
Talvez seja onde a mudança se torna mais fácil de visualizar.
Antes poderíamos imaginar:
Venda: R$ 100 Recebimento: R$ 100 MATCH
Agora, em uma abstração conceitual:
Venda: R$ 100 Valor segregado: R$ 18 Recebimento: R$ 82 100 = 82 + 18 MATCH
Conciliação deixa de significar apenas procurar igualdade.
Passa a significar explicar a decomposição de uma transação financeira.
ERP e financeiro
Os modelos internos precisam distinguir conceitos que talvez estivessem comprimidos em um único campo:
faturamento pagamento liquidação segregação recebimento líquido
Se tudo continuar chamado de valor_recebido, a complexidade não desaparece.
Ela reaparece em exceções.
Dados e analytics
O mesmo vale para métricas.
O que significa:
receita? GMV? cash-in? valor pago? valor liquidado? valor segregado? valor disponível em caixa?
Um dashboard pode continuar 100% verde enquanto mede um conceito que já não significa a mesma coisa.
6. A Plataforma Pública como hub: menos integrações, mais centralidade
Existe outro detalhe arquitetural muito interessante no desenho oficial.
O manual define a Plataforma Pública do Split Payment como um HUB de comunicação entre instituições operadoras de sistemas de pagamento/PSPs e os entes governamentais.
E diz explicitamente que a plataforma não pretende concentrar as regras de negócio do split payment, seguindo princípios de baixo acoplamento e alta coesão.
Arquiteturalmente, faz sentido.
Comparação arquitetural conceitual
Imagine uma integração ponto a ponto:
PSP A ---> RFB PSP A ---> CGIBS PSP B ---> RFB PSP B ---> CGIBS PSP C ---> RFB PSP C ---> CGIBS
Agora compare com:
PSP A --+ PSP B --+---> Plataforma Pública ---> RFB / CGIBS PSP C --+
Dentro desse fluxo, o desenho com HUB tende a reduzir integrações ponto a ponto que cada participante precisaria manter diretamente com os entes governamentais.
Padroniza integração.
Centraliza parte da comunicação.
Mas não existe arquitetura sem trade-off.
Reduzir acoplamento entre participantes não elimina dependências. Concentra parte delas em um componente que passa a exigir alta previsibilidade operacional.
Essa é uma interpretação arquitetural do desenho, não uma característica normativa declarada pela plataforma.
O HUB simplifica contratos.
Ao mesmo tempo, disponibilidade, capacidade, rastreabilidade e tratamento de falhas desse HUB tornam-se mais relevantes para o ecossistema.
7. “Pago” deixa de ser um estado suficiente
O manual não descreve apenas um único momento de “pagamento concluído”.
Ele separa diferentes tipos de informes, como:
- Informe de Transação Iniciada;
- Informe de Transação Atualizada;
- Informe de Baixa;
- Informe Preliminar de Pagamento;
- Informe de Segregação.
Arquiteturalmente, esses momentos sugerem um domínio que tende a ser melhor modelado com estados intermediários do que com um simples booleano de sucesso ou falha.
Exemplo conceitual de estados internos
Os estados abaixo não correspondem a uma máquina de estados oficial da Plataforma Pública. São apenas um modelo possível para uma aplicação que precise representar o lifecycle da operação.
INITIATED | +--> UPDATED | | | v | PAID | | | v | SETTLEMENT_PROCESSING | | | v | SEGREGATED | | | v | RECONCILED | +--> CLOSED / CANCELLED
Quando o negócio adiciona estados intermediários e o software insiste em representar tudo como:
SUCCESS FAILED
a complexidade não desaparece.
Ela migra para:
- flags;
- cron jobs;
- jobs de correção;
- planilhas;
- scripts;
- reprocessamento manual.
Estados explícitos tornam problemas explícitos.
8. A parte mais interessante do manual não é o happy path
A documentação da plataforma dedica uma seção à política de tratamento de erros.
Ela distingue erros permanentes de falhas transitórias e estabelece situações em que retry é ou não permitido.
O documento fala explicitamente em:
- observabilidade ponta a ponta;
- correlação;
- backoff exponencial;
- circuit breakers.
Para alguns cenários, aparecem respostas como:
400 — requisição inválida 422 — regra não aceita 503 — indisponibilidade temporária 504 — dependência externa indisponível
com comportamentos diferentes para cada situação.
Isso revela um princípio muito maior do que split payment:
Em um sistema distribuído crítico, o contrato de erro é tão importante quanto o contrato de sucesso.
Não basta especificar:
200 OK
É necessário definir:
O que faço com timeout? Posso tentar novamente? Depois de quanto tempo? Esse erro é permanente? O sistema recebeu minha mensagem? E se recebeu, mas eu não recebi a resposta?
9. Retry, duplicidade e idempotência
Imagine:
PSP ---> Plataforma Pública timeout
Há pelo menos dois cenários possíveis.
Cenário A
A plataforma nunca recebeu a requisição.
Cenário B
A plataforma recebeu.
Processou.
Mas a resposta se perdeu.
Do ponto de vista do cliente, os dois cenários podem parecer iguais:
timeout
Se ele simplesmente repetir a operação, pode existir risco de processamento duplicado.
A documentação oficial já exige que o messageId seja único por requisição, justamente para evitar duplicidade, além de estabelecer mecanismos de correlação e rastreabilidade.
Isso, porém, não equivale por si só a uma garantia completa de idempotência de negócio.
Uma API pode reconhecer mensagens distintas e ainda assim uma aplicação precisar responder a perguntas como:
Esta operação financeira já produziu efeito? Posso executar novamente com segurança? O retry deve retornar o resultado anterior? Existe uma chave de negócio capaz de impedir efeitos duplicados?
Por isso, a estratégia de idempotência continua sendo uma preocupação arquitetural que merece tratamento explícito pela aplicação.
O princípio permanece:
Retry sem idempotência de negócio pode transformar uma estratégia de resiliência em uma estratégia de duplicação.
10. Até o processamento em lote carrega trade-offs
O manual prevê o envio de lotes de transações durante determinados fluxos de segregação.
Antes de aceitar um lote, a plataforma faz validações de formato e obrigatoriedade dos campos.
Se existir erro em um ou mais itens, o lote inteiro é rejeitado e deve ser corrigido e reenviado.
Exemplo:
LOTE #9182 tx 001 OK tx 002 OK tx 003 ERRO — campo obrigatório ausente tx 004 OK
Resultado:
LOTE REJEITADO
Agora existe uma decisão arquitetural interessante.
Por que não aceitar três registros e rejeitar apenas um?
Porque isso introduziria outra complexidade:
quais foram aceitos? quais não foram? posso reenviar apenas os rejeitados? como evitar duplicidade? como conciliar um lote parcialmente processado?
Rejeitar o lote inteiro simplifica consistência.
Mas aumenta o custo de reprocessamento.
Aceitar parcialmente reduziria reprocessamento.
Mas aumentaria o custo de reconciliação.
Não existe escolha gratuita.
Arquitetura é gestão de trade-offs.
11. Parcelamento mostra por que o problema não cabe em um único request
A regulamentação da CBS e a do IBS preveem que, em operações com pagamento parcelado pelo fornecedor, a segregação ocorra proporcionalmente durante a liquidação das parcelas.
Então uma operação deixa de ser:
Pedido | Pagamento | Split
e passa a viver no tempo:
Pedido R$ 1.000 Parcela 1 ---> liquidação ---> segregação Parcela 2 ---> liquidação ---> segregação Parcela 3 ---> liquidação ---> segregação Parcela 4 ---> liquidação ---> segregação
A partir daí surgem questões como:
- cancelamento parcial;
- estorno;
- diferenças de valores;
- meios de pagamento múltiplos;
- reconciliação de parcelas;
- reprocessamento.
Nem todas essas perguntas são regras oficiais da Plataforma Pública.
Elas são consequências arquiteturais que surgem quando uma operação comercial deixa de ser tratada como um único evento e passa a possuir um lifecycle financeiro mais longo.
A transação não é mais apenas um request.
Ela é um processo com lifecycle.
12. Como eu abordaria essa mudança dentro de uma empresa
A partir daqui, saímos do que a documentação oficial determina e entramos em uma possível abordagem de arquitetura interna.
Eu não começaria perguntando:
“Quais telas precisamos alterar?”
Começaria pelo fluxo de domínio.
1. Mapear o fluxo financeiro real
Algo como:
Order | Documento Fiscal | Payment | Settlement | Split | Reconciliation
Depois identificaria:
- onde cada conceito nasce;
- quem é seu owner;
- quem o transforma;
- quem depende dele.
2. Definir correlação ponta a ponta
Podem existir identificadores diferentes:
{
"orderId": "ORD-91827",
"fiscalDocumentId": "NFE-88271",
"paymentId": "PAY-71829",
"txId": "TX-99182",
"settlementId": "SET-38219"
}Eles não precisam todos estar em todos os serviços.
Mas o ecossistema precisa conseguir navegar entre eles de forma determinística.
3. Tornar os valores semanticamente explícitos
Eu evitaria um campo:
amount
tentando significar tudo.
Preferiria algo conceitualmente mais próximo de:
type Settlement = {
grossAmount: Money;
taxSegregatedAmount: Money;
netSettlementAmount: Money;
};Isso é uma recomendação de modelagem, não um contrato imposto pela Plataforma Pública.
Quanto mais financeiro o domínio, mais cara fica a ambiguidade semântica.
4. Modelar estados intermediários
Pagamento confirmado não significa necessariamente:
PROCESS_FINISHED
Uma implementação interna poderia trabalhar com algo como:
PAYMENT_CONFIRMED SETTLEMENT_PENDING SPLIT_PENDING SPLIT_CONFIRMED RECONCILIATION_PENDING RECONCILED
Novamente: esses nomes são exemplos de estados internos, não status oficiais do CGIBS/RFB.
O valor da modelagem está em tornar explícitos momentos do processo que, do contrário, poderiam ficar escondidos em flags e tratamentos ad hoc.
5. Tratar idempotência e reprocessamento como requisitos de negócio
Para cada operação deveria estar claro:
- o que acontece se ela chegar duas vezes;
- o que acontece se a resposta se perder;
- o que acontece se precisar ser reenviada;
- como descobrir se já foi processada;
- qual chave de negócio impede efeitos duplicados.
6. Projetar observabilidade de negócio
Não monitoraria apenas:
CPU memory HTTP 500 latência
Monitoraria também, conforme o desenho interno da empresa:
pagamentos liquidados sem segregação esperada segregações pendentes divergências de conciliação tempo entre pagamento e segregação retries lotes rejeitados operações presas em estados intermediários
Porque infraestrutura pode estar 100% saudável enquanto dinheiro está no estado errado.
7. Revisar contratos e consumidores antes de mudar schemas
Adicionar um campo é fácil.
Descobrir quem inferia comportamento do schema antigo é difícil.
O blast radius precisa incluir:
Frontend API Serviços Eventos Banco ETL Analytics Integrações externas
É aí que normalmente moram as premissas invisíveis.
13. O maior risco pode estar onde ninguém está olhando: nos sistemas legados
Os sistemas novos já nascerão sabendo que IBS, CBS e split payment existem.
Os antigos não.
Considere um ETL:
SELECT
SUM(payment_amount) AS cash_received
FROM payments
WHERE status = 'SETTLED';A query pode continuar funcionando.
Pode continuar passando nos testes.
Pode continuar alimentando o dashboard.
Mas se SETTLED não significar mais:
todo o valor da venda entrou no caixa da empresa
então cash_received mudou de significado.
Esse tipo de problema é especialmente perigoso porque não produz necessariamente exceção.
Não gera stack trace.
Não derruba pod.
Não dispara health check.
O dado apenas passa a representar outra coisa.
Mudanças de domínio são perigosas porque o software antigo pode continuar funcionando perfeitamente — só que respondendo à pergunta errada.
14. A lição maior: arquitetura também precisa sobreviver ao mundo mudando
Quando falamos em arquitetura, normalmente pensamos em:
- escala;
- performance;
- disponibilidade;
- cloud;
- segurança.
Mas existe outra fonte enorme de mudança.
O próprio domínio.
Governos mudam regras.
Empresas mudam modelos de negócio.
Meios de pagamento surgem.
Parceiros mudam contratos.
Identificadores crescem.
Processos que eram síncronos tornam-se assíncronos.
Aquilo que parecia constante vira variável.
Por isso, uma pergunta particularmente útil em arquitetura é:
“O que este sistema está assumindo que nunca vai mudar?”
No caso do split payment, uma possível resposta é:
“Primeiro recebemos o pagamento. Depois tratamos o imposto.”
Quando essa premissa muda, o blast radius pode atravessar:
Domínio | Checkout | Documento fiscal | Pagamento | PSPs | Liquidação | Conciliação | ERP | Contabilidade | Dados | Analytics
A notícia é tributária.
A consequência é arquitetural.
Conclusão
O split payment não deveria chegar aos times de tecnologia como uma história do tipo:
“Precisamos adicionar os novos campos de IBS e CBS.”
Isso seria enxergar apenas a superfície.
A mudança cria novas relações entre operação comercial, documento fiscal e liquidação financeira.
Essas relações passam a exigir mais atenção a:
- contratos;
- correlação;
- estados intermediários;
- rastreabilidade;
- tratamento de falhas;
- reprocessamento;
- conciliação.
O mais interessante é que a própria documentação oficial já reflete boa parte dessa realidade.
Ela fala de HUB de integração, endpoints HTTP, OpenAPI, identificadores de correlação e controle, observabilidade, retries, backoff exponencial e circuit breakers.
No fim, a Reforma Tributária oferece uma boa lembrança para qualquer sistema, mesmo fora do setor financeiro:
Arquitetura não é apenas preparar software para receber mais tráfego. É preparar software para quando as regras do mundo real mudarem.
Não é apenas o imposto que está mudando. Algumas das premissas sobre as quais nossos sistemas foram construídos também estão.
Fontes oficiais
- Lei Complementar nº 214/2025 — base legal do IBS, CBS e do mecanismo de split payment.
- CGIBS — avanços da implementação da Plataforma Pública do Split Payment, 3 ago. 2026.
- CGIBS/RFB — esclarecimento sobre adiamento das regras de validação dos DF-e, 6 ago. 2026.
- CGIBS — página oficial de documentação do Split Payment.
- CGIBS/RFB — Ato Conjunto nº 2/2026 — autorizou a publicação do Manual de Integração e da documentação Swagger/OpenAPI da Plataforma Pública.
- CGIBS/RFB — Manual de Integração da Plataforma Pública de Split Payment V1.
- Presidência da República — Decreto nº 12.955/2026 — Regulamento da CBS.
- CGIBS — Resolução nº 6/2026 — Regulamento do IBS.
- Receita Federal — Orientações da Reforma Tributária para 2026.
- CGIBS/RFB — orientações para a transição de 2026.
- Receita Federal — Entenda a Reforma Tributária do Consumo.