El ICMS es el tributo más pesado e intrincado de Brasil: cada uno de los 27 estados legisla su versión sobre mercancías, transporte interestatal/intermunicipal y comunicación. Es no acumulativo (crédito en las entradas), calculado por dentro (el impuesto integra su propia base) y con numerosas excepciones estatales: sustitución tributaria (ST), reducción de base, diferimiento, exenciones y el diferencial de alícuotas (DIFAL).
Cálculo y alícuotas
- Cálculo por dentro: base = precio (que ya contiene el ICMS) + flete + seguro + otros gastos − descuentos; el IPI integra la base en la venta a consumidor final. Una alícuota nominal del 18% equivale a cerca del 21,95% sobre el precio neto.
- Alícuotas internas: fijadas por cada estado, en general 17%–20% (SP 18%, RJ 20% más 2% de FCP, MG 18%…); superfluos como tabaco, bebidas y cosméticos llegan a 25%–35%.
- Alícuotas interestatales: 12% en general; 7% del Sur y Sudeste (excepto ES) hacia Norte, Nordeste, Centro-Oeste y ES; mercancía importada (origen 1, 2, 3, 8) siempre 4%.
- DIFAL: en la venta interestatal a no contribuyente (persona física, empresa sin inscripción estatal), la diferencia entre la alícuota interna del destino y la interestatal va al estado de destino, pagada por el vendedor; Simples (CRT 1 / 4) está dispensado (ADI 5469), CRT 2 / 3 debe calcularla.
- FCP (Fondo de Combate a la Pobreza): algunos estados agregan 1%–2% en ciertos productos; en la interestatal sigue al DIFAL hacia el destino.
- Sustitución tributaria (ST): para mercancías listadas (identificadas por el CEST), el ICMS de toda la cadena lo retiene una vez el fabricante o importador sobre la base con MVA; la reventa usa CST 60 / CSOSN 500 y no destaca impuesto.
- Reducción de base, exención, diferimiento, suspensión: concedidos por estado y producto, mapeados en CST 20 / 40 / 51 / 50 en el régimen normal; el Simples no tiene ese detalle y usa CSOSN 400 / 300 para no gravada e inmune.
El régimen define CSOSN o CST
| CRT | Régimen | Código ICMS | invoice_type de la empresa | DIFAL |
|---|
1 | Simples Nacional | CSOSN · 3 | simples_nacional / 1 | Dispensado |
2 | Simples Nacional, exceso de sublímite | CST · 2 | simples_nacional_excesso / 2 | Debido |
3 | Régimen normal (Lucro Real / Presumido) | CST · 2 | tributacao_normal / lucro_normal / 3 | Debido |
4 | MEI | CSOSN · 3 | simples / 4 | Dispensado |
La plataforma valida localmente que la longitud del código coincida con el régimen: CRT 1 / 4 enviando CST, o CRT 2 / 3 enviando CSOSN, se rechaza con el motivo y no se reenvía (sería rechazado con 590 / 591 y consumiría la cuota del CNPJ). Sin validación cuando invoice_type no está en la tabla.
Simples Nacional: tabla de CSOSN
CRT 1 y 4. Envíe 3 dígitos en icms.situacao_tributaria; los 10 están soportados.
| CSOSN | Significado | Cuándo usar |
|---|
101 | Gravada por el Simples con derecho a crédito | Venta a contribuyente del régimen normal transfiriendo crédito; informe aliquota_credito (1,25%–3,95% según la franja). |
102 | Gravada por el Simples sin derecho a crédito | Más común: venta a consumidor, no contribuyente, o cualquier venta sin transferir crédito. |
103 | Exención del ICMS por franja de ingresos | Cuando el estado exime las franjas iniciales de ingresos. |
201 | Con derecho a crédito y con cobro del ICMS por ST | Venta con ST como sustituto, transfiriendo crédito. |
202 | Sin derecho a crédito y con cobro del ICMS por ST | Venta con ST como sustituto; el caso más común. |
203 | Exención por franja y con cobro del ICMS por ST | 103 combinado con ST. |
300 | Inmune | Inmunidad constitucional: libros, periódicos, revistas y su papel; exportación. |
400 | No gravada por el Simples | Fuera del ICMS: remesas sin venta (obsequio, muestra, reparación). |
500 | ICMS cobrado anteriormente por ST o por anticipación | Reventa de mercancía con ST; con CFOP 5405 / 6404, opcionalmente los valores retenidos (v_bc_st_ret, v_icms_st_ret). |
900 | Otros | Cuando nada de lo anterior aplica: importación, operaciones que exigen base y valor. |
Régimen normal: tabla de CST
CRT 2 y 3. Envíe 2 dígitos en icms.situacao_tributaria; en el XML se antepone el origen. Los 15 están soportados.
| CST | Significado | Cuándo usar |
|---|
00 | Gravada íntegramente | Venta común, la más usada; informe aliquota. |
10 | Gravada y con cobro del ICMS por ST | Venta con ST como sustituto; informe aliquota_mva, aliquota_icms_st. |
20 | Con reducción de base de cálculo | Reducción de base concedida por el estado; informe aliquota_reducao (% de reducción). |
30 | Exenta o no gravada y con cobro del ICMS por ST | Operación propia exenta, con retención del ST para la etapa siguiente. |
40 | Exenta | Exenta por ley estatal; puede llevar motivo_desoneracao y valor_desoneracao. |
41 | No gravada | Fuera del campo del ICMS; usual en exportación. |
50 | Suspensión | Remesas temporales: reparación, demostración, industrialización por encargo. |
51 | Diferimiento | Impuesto diferido; informe aliquota_diferimento. |
60 | ICMS cobrado anteriormente por sustitución tributaria | Reventa de mercancía con ST; con CFOP 5405 / 6404. |
70 | Con reducción de base y cobro del ICMS por ST | 20 combinado con 10. |
90 | Otras | Cuando nada de lo anterior aplica. |
02 · 15 · 53 · 61 | Serie de tributación monofásica sobre combustibles | Solo combustibles (02 propia, 15 con retención, 53 diferido, 61 cobrado anteriormente); informe ad_rem_icms. |
Origen de la mercancía
Campo products[].origem, obligatorio en ambos regímenes. Define la alícuota interestatal (4% para importados) y es el primer dígito del CST/CSOSN en el XML.
| Valor | Significado |
|---|
0 | Nacional, excepto las de los códigos 3, 4, 5 y 8 |
1 | Extranjera, importación directa, excepto código 6 |
2 | Extranjera, adquirida en el mercado interno, excepto código 7 |
3 | Nacional, contenido de importación superior a 40% y hasta 70% |
4 | Nacional, producción conforme a procesos productivos básicos |
5 | Nacional, contenido de importación hasta 40% |
6 | Extranjera, importación directa, sin similar nacional (lista CAMEX) |
7 | Extranjera, adquirida en el mercado interno, sin similar nacional (lista CAMEX) |
8 | Nacional, contenido de importación superior a 70% |
Campos de la plataforma (fila icms[] de la categoría / impostos.icms inline)
| Campo | Finalidad |
|---|
cenario · tipo_pessoa | Claves de la fila: escenario y tipo de persona, vea abajo. |
codigo_cfop · situacao_tributaria | CFOP y CST/CSOSN; obligatorios. |
aliquota | Alícuota del ICMS (%). |
aliquota_reducao | % de reducción de base (CST 20 / 70). |
aliquota_fcp | Alícuota del FCP (%). |
aliquota_mva · aliquota_icms_st · aliquota_reducao_st · aliquota_fcp_st | Al retener ST como sustituto: MVA, alícuota del ST, reducción de base del ST, FCP-ST (CST 10 / 30 / 70, CSOSN 201 / 202 / 203). |
v_bc_st_ret · v_icms_st_ret · v_icms_substituto · p_fcp_st_ret · v_bc_fcp_st_ret · v_fcp_st_ret | En la reventa con ST (CST 60 / CSOSN 500): base y valores retenidos anteriormente. |
aliquota_credito | Alícuota de crédito transferida al comprador en el Simples (CSOSN 101 / 201). |
aliquota_diferimento | % de diferimiento (CST 51). |
motivo_desoneracao · valor_desoneracao | Motivo de la exoneración y valor exonerado (CST 40 / 41 / 50 / 90). |
beneficio_fiscal[] | Códigos de beneficio fiscal por estado: [{"estado":"SP","codigo":"SP800001"}], escritos en cBenef del XML. |
disable_difal · difal_desconta_icms_inter · difal_base_por_dentro · v_bc_uf_dest | Controles del DIFAL: desactivar; base doble “por dentro” descontando el ICMS interestatal (método de la mayoría de los estados); o informar la base del destino directamente. |
desconta_icms_pis_cofins | Si true, resta el ICMS del ítem de la base de PIS/COFINS (STF, Tema 69). |
Escenarios y tipo de persona en la categoría
| cenario | Significado |
|---|
saida_dentro_estado | Salida, destinatario en el mismo estado |
saida_fora_estado | Salida, destinatario en otro estado |
entrada_dentro_estado | Entrada, contraparte en el mismo estado |
entrada_fora_estado | Entrada, contraparte en otro estado |
padrao | Fila por defecto cuando ningún escenario coincide |
- Orden: escenario actual →
padrao → heredado saida_dentro_estado / saida_fora_estado; cada paso filtra antes por tipo_pessoa (fisica / juridica). - La venta interestatal a persona física exige la fila
saida_fora_estado + fisica con CFOP 6108 y códigos; si no, usa la fila de persona jurídica. - Importación (
transaction_type = 2) ignora el escenario, usa el primer registro y prefiere CFOP 3.xxx; exportación (= 3) ignora tipo_pessoa. - Sin fila compatible la emisión falla y el error indica el
cenario y el tipo_pessoa faltantes.
Combinaciones recomendadas
| Operación | Simples Nacional (CRT 1 / 4) | Régimen normal (CRT 3) |
|---|
| Venta común | CSOSN 102(101 + aliquota_credito) | CST 00 + aliquota |
| Reventa con ST retenida | CSOSN 500 · CFOP 5405 / 6404 | CST 60 · CFOP 5405 / 6404 |
| Retención de ST como sustituto | CSOSN 202 / 201 · MVA | CST 10 · MVA |
| Venta interestatal a persona física (B2C) | CSOSN 102 · CFOP 6108 · 免 DIFAL | CST 00 · CFOP 6108 · DIFAL + FCP |
| Remesa sin venta (obsequio, muestra, reparación…) | CSOSN 400 | CST 41(送修 50) |
| Exportación | CSOSN 300 · CFOP 7101 / 7102 | CST 41 · CFOP 7101 / 7102 |
| Entrada de importación | CSOSN 900 · CFOP 3102 | CST 00 · CFOP 3102 |
Alícuotas, beneficios y listas de ST los define cada estado y cambian con frecuencia; los valores aquí son los usuales, prevaleciendo el contador y la legislación del estado. Para el CFOP vea “CFOP por escenario”.