Sertainly Marketplace
Brazilian consumption tax reform transition regime
Global·Brazilian consumption tax reform transition regime· Brazil Consumption Tax Reform — Transition Regime Determination (SB1) suite · 2 APIs

Brazil Consumption Tax Reform · Transition Regime Determination

Sertainly Official Publishercontract v1

Decides which tax regime, rates, and charge status apply to a Brazilian transaction across the 2026-2033 consumption tax transition.

Overview

For any taxable event date from 2026 through 2033 and beyond, the package places the transaction in the correct transition stage and works out which of IBS, CBS, ICMS, ISS, PIS, Cofins, IPI, and the Selective Tax are chargeable, at what rate, and on what proportion — feeding directly into invoicing and tax calculation.

The determination is grounded in Brazil's constitutional transitional provisions (ADCT arts. 125-133) and Complementary Law 214/2025, covering the full statutory timetable from the 2026 test year through the 2029-2032 ICMS/ISS phase-down to the new model taking full effect in 2033; rates that Brazilian law leaves to a future Senate resolution or to state and municipal legislation are explicitly out of scope and are requested rather than guessed.

In practice it handles cases such as: a transaction on the last day of 2026 computing cleanly against fully legislated rates; the very next day, 1 January 2027, flipping to blocked because the CBS rate becomes a Senate reference rate no source fixes; a reduced-rate fuel sale where the fuel carve-out zeroes the CBS reduction while the IBS rate still scales proportionally; a 2032 sale correctly measuring the ICMS phase-down against the rate in force on 31 December 2028 rather than the rate at sale; and a Zona Franca de Manaus product still carrying preserved IPI rates in 2033, long after ICMS and ISS have been extinguished.

Where a needed rate — a Senate reference rate, a state or municipal legislated ICMS/ISS rate, or a reduced-rate proportion — has not been supplied, the package marks the case as blocked and names exactly which figure is missing, rather than estimating it.

Every case returns a structured verdict — transition stage, per-tax charge status, applied rates, and reason codes for anything still outstanding — ready to drop into a billing or tax-determination workflow.

What it decides

Inputs
taxable_event_daterequired
date (string)
transition_year
number
is_simples_nacional_optantrequired
boolean
is_fuel_under_specific_regimerequired
boolean
is_reduced_rate_operationrequired
boolean
is_zona_franca_de_manaus_incentivisedrequired
boolean
reduced_rate_remaining_proportion
number
cbs_reference_rate
number
ibs_state_reference_rate
number
ibs_municipal_reference_rate
number
icms_legislated_rate_31_december_2028
number
iss_legislated_rate_31_december_2028
number
Every call returns
10 classifications · 6 reason codes · 6 evidence checks · 14 derived facts
Classifications
dispositionexactly one
calculation_readycalculation_blocked
transition_stageexactly one
pre_transition_periodtransition_test_year_2026cbs_operational_ibs_nominal_2027_2028icms_iss_phase_down_2029_2032new_model_only_from_2033
ibs_statusexactly one
ibs_not_yet_chargeableibs_chargeable_at_statutory_transition_rateibs_chargeable_at_reference_rate
cbs_statusexactly one
cbs_not_yet_chargeablecbs_chargeable_at_statutory_transition_ratecbs_chargeable_at_reference_rate
icms_statusexactly one
icms_chargeable_in_fullicms_chargeable_at_reduced_proportionicms_extinguished
iss_statusexactly one
iss_chargeable_in_fulliss_chargeable_at_reduced_proportioniss_extinguished
pis_cofins_statusexactly one
pis_cofins_chargeablepis_cofins_extinguished
ipi_statusexactly one
ipi_chargeable_in_fullipi_rates_reduced_to_zeroipi_preserved_for_zona_franca_de_manaus
selective_tax_statusexactly one
selective_tax_not_yet_chargeableselective_tax_chargeable
treatment_flagsmany
simples_nacional_outside_2026_transition_ratesfuels_outside_specific_regime_base_rule_2026fuels_cbs_reduction_not_applicablefuels_ibs_rate_applied_at_cbs_incidencereduced_rate_applied_proportionallylegacy_taxes_excluded_from_ibs_cbs_baseipi_not_cumulative_with_selective_tax
Reason codes· 6
required_rates_not_supplied
At least one rate the law does not itself fix has not been supplied
cbs_reference_rate_required_from_senate_resolution
The CBS rate for this year is a reference rate fixed by Senate resolution
ibs_reference_rate_required_from_senate_resolution
The IBS rates for this year are reference rates fixed by Senate resolution
icms_rate_required_from_state_legislation
The ICMS rate the phase-down proportion is measured against is set by State or Federal District legislation.
iss_rate_required_from_municipal_legislation
The ISS rate the phase-down proportion is measured against is set by Municipal or Federal District legislation.
reduced_rate_proportion_required
The operation was stated to be subject to a reduced rate
Evidence it can request
cbs_reference_rateibs_state_reference_rateibs_municipal_reference_rateicms_legislated_rate_31_december_2028iss_legislated_rate_31_december_2028reduced_rate_remaining_proportion
Derived facts· 14
calc.applied_rate_proportionnumber
The remaining proportion at which the transition rates and the CBS reduction are applied to this operation.
calc.ibs_statutory_state_ratenumber
The IBS state rate the law fixes directly for the year, before any proportional reduction.
calc.ibs_statutory_municipal_ratenumber
The IBS municipal rate the law fixes directly for the year, before any proportional reduction.
calc.cbs_statutory_ratenumber
The CBS rate the law fixes directly for the year, before any proportional reduction.
calc.cbs_reference_rate_reductionnumber
The reduction the law applies to the CBS reference rate for the year, as a decimal fraction.

Try it — live sandbox

Build a case and run it against the publisher's live production release — the exact rules a subscriber calls. Run the same case twice and the answer is identical: no LLM in the loop.

Sandbox · live evaluation
Case
Decision

Run a case to see the deterministic decision — tags, routes, reasons, evidence, and facts. Same case in, same answer out, every time.

Integrate — two ways

Call it directly over HTTP, or connect your coding agent over MCP. Same decision, same metering, either way.

One authenticated POST — the same deterministic, metered evaluation the sandbox runs, no LLM in the loop.

Integrate — one POST
# Request shape only. Replace sert_mk_YOUR_KEY and send every field from the Inputs contract above.
curl -X POST https://api.sertainly.ai/api/marketplace/v1/packages/transition_regime_determination/evaluate \
  -H "Authorization: Bearer sert_mk_YOUR_KEY" \
  -H "content-type: application/json" \
  -d '{ "case": { "taxable_event_date": "example", "transition_year": 1, "is_simples_nacional_optant": true } }'

More from the Brazil Consumption Tax Reform — Transition Regime Determination (SB1) suite