Configure ICMS by state, base reduction, ST and DIFAL
Configure in the ICMS regulation the internal and interstate rates of each UF, the rules by NCM with base reduction, tax substitution with MVA and the DIFAL of sales to non-taxpayer final consumers in another UF.
Before you start
Use a user with the Fiscal Manager profile and have the rates, reductions and MVAs defined with your accountant for the UFs the company operates with. The ICMS regulation applies to companies in the normal regime, Lucro Presumido or Lucro Real.
Step by step
1. Link the company to the regulation
Open Fiscal > Partners > Company, choose the company and, in the Fiscal tab, Taxes subtab, fill in the ICMS Regulation. All the company fiscal documents then look up the ICMS, ST and FCP in this regulation, by the company UF and the customer UF.
2. Check the rates of your UF
Open Fiscal > Configuration > Taxes > ICMS > ICMS Regulation and the regulation. There is one tab for each origin UF. In the tab of the company UF, Internal subtab, the first list has the rules for customers in the same UF, and the second has the rules for customers in other UFs. Each rule has the tax and the destination states.
Check that each destination has a single approved general rule. If two appear for the same destination, such as ICMS 18% and an exempt ICMS for customers in São Paulo, leave approved only the one that applies to your company.
Example from São Paulo: ICMS at 18% for customers in São Paulo, 12% for the South and Southeast, and 7% for the North, Northeast, Center-West and Espírito Santo, under Resolution 22/1989 of the Federal Senate. The chosen ICMS goes to the CST, pICMS (ICMS rate) and vICMS (ICMS amount) tags of the item and to the Alíq. ICMS and V. ICMS columns of the DANFE.
3. Create a rule by NCM
For a product with its own rate or reduction, create in the same list a rule with the tax and the NCM in the NCM tab. The rule with NCM, CEST or product wins over the general rule of the same UF; a benefit rule wins over both.
Example: industrial machinery and equipment in Annex I of ICMS Agreement 52/1991 have an 8.80% tax burden in internal operations (clause one, item II), extended until 31/12/2026 by ICMS Agreement 10/2026. With the ICMS 18% Com Red. 51,11% tax, a sale of 1,000.00 comes out with CST 20, a base of 488.90 and ICMS of 88.00. In the XML, the pRedBC (base reduction percentage) tag carries 51.11, and in the DANFE the reduced base appears in the BC ICMS column.
4. Check the ICMS of imported products
In the regulation header, the Imported ICMS Tax is the 4% rate for interstate sales of imported products, from Resolution 13/2012 of the Federal Senate. Odoo uses it when the product ICMS Origin is 1, 2, 3 or 8 and the customer is in another UF. The origin goes to the orig (goods origin) tag and appears in the DANFE together with the CST.
5. Configure tax substitution
This step covers ST in sales within your own state. In the tab of your UF, ST subtab, create a rule with the ST tax, your own UF as destination and the CEST or NCM codes subject to ST. The ST tax carries the MVA Percentage and the rate. In the operation, the line with an ST CFOP, such as Revenda ST with 5403, is then used for these products in sales within the state.
Odoo calculates the ST base as the product amount plus IPI, freight, insurance and other expenses, multiplied by one plus the MVA, and the ICMS ST as the base times the rate minus the own ICMS, under clause eleven, item III, and clause thirteen of ICMS Agreement 142/2018. Example with an MVA of 47%: 1,000.00 of product and 150.00 of IPI give a base of 1,690.50; at 18%, the gross ST is 304.29, and the ICMS ST is 124.29 after deducting 180.00 of own ICMS. The fiscal document comes out with CST 10, the ST tags in the XML, vBCST (ST base), pMVAST (MVA), pICMSST (ST rate) and vICMSST (ICMS ST amount), and the DANFE shows the ICMS ST base and amount in the Cálculo do imposto box.
6. Prepare the DIFAL of sales to final consumers
In a sale to a non-taxpayer final consumer in another UF, the ICMS is split between the origin UF and the destination UF, under Constitutional Amendment 87/2015, Complementary Law 190/2022 and ICMS Agreement 236/2021. In the customer record, Fiscal tab, use ICMS Taxpayer equal to 9, non-taxpayer, and Final Consumer Operation equal to Yes.
Odoo uses the interstate rate of your UF and the internal rate of the customer UF, which is in the tab of the customer UF, and calculates the difference. For the UFs that adopt the double base, the base is the amount without the origin ICMS divided by one minus the internal rate of the destination. Example from São Paulo to Minas Gerais: 1,000.00 at 12% give an origin ICMS of 120.00; the double base is 880.00 divided by 0.82, equal to 1,073.17; at 18%, the destination ICMS is 193.17, and the DIFAL is 73.17.
7. Configure the destination FCP
The destination Poverty Combat Fund is in the tab of the customer UF, Others subtab. The DIFAL and the FCP go to the ICMSUFDest (ICMS for the destination state) group of the item, with the base, the rates and the amounts of the DIFAL and the destination FCP; check vICMSUFDest (DIFAL for the destination state) and vFCPUFDest (destination FCP).
8. Approve and check
In the regulation, the rules apply when they are Approved. After approving, create a draft invoice for each case, such as a customer in the same UF, a customer in another UF and a final consumer in another UF, and check the CFOP, the CST and the rates of the item. Confirm and check the tags in the XML and the amounts in the DANFE.
Expected result
The ICMS regulation has the rates of your UF for each destination, the rules by NCM and by CEST, ST with MVA and the DIFAL, and each fiscal document comes out with the ICMS of the origin and destination UFs.
If something goes wrong
-
The ICMS came out with the general rate on a product with its own rule: check that the rule is Approved and that the product NCM is in the NCM tab of the rule.
-
The DIFAL did not appear: check that the customer is in another UF and is set as non-taxpayer and final consumer, and that the company is linked to the regulation.
-
The product with ST came out without ST: check the CEST in the product record and the rule in the ST subtab of your UF, with your UF as destination.