origin_statestring | nullOpcionalUF de origem; null (ou omitido) = qualquer origem.
minLength2maxLength2Descrições técnicas preservadas do contrato versionado. Exemplos de dados foram omitidos da cópia pública.
cfop e icms_variante são sempre obrigatórios. aliquota é obrigatória em ICMS00,
ICMS20, ICMS90 e ICMSOutraUF e proibida nas demais; p_red_bc é obrigatória em
ICMS20, ICMS90 e ICMSOutraUF e proibida nas demais (enviar fora da variante
responde 422). Os outros campos são opcionais e anuláveis. A vigência é filtro:
regra fora da janela valid_from/valid_until não é considerada na emissão.
Os campos de IBS/CBS formam um bloco: informar qualquer uma das três alíquotas
(ibs_uf_aliquota, ibs_mun_aliquota, cbs_aliquota) faz a regra responder pelas
três, e as deixadas em branco valem zero — zero também é decisão tributária. As
alíquotas aceitam 4 casas decimais porque as reduções da LC 214/2025 produzem
percentuais como 0.8825.
origin_statestring | nullOpcionalUF de origem; null (ou omitido) = qualquer origem.
minLength2maxLength2destination_statestring | nullOpcionalUF de destino; null (ou omitido) = qualquer destino.
minLength2maxLength2tp_servinteger | nullOpcionalTipo de serviço (ide/tpServ) a que a regra se aplica; null (ou omitido) =
qualquer tipo. 0 normal, 1 subcontratação, 2 redespacho, 3 redespacho
intermediário; o 4 (multimodal) não é aceito. Regra com tipo casado vence
qualquer regra só de rota.
0 · 1 · 2 · 3 · nullcfopstring | nullObrigatórioObrigatório. CFOP que o motor grava na prestação. Nos contra-CT-e com regra sem
tp_serv só empresta o dígito de operação (5xxx/6xxx) e o código final vem da rota
(5360/6360 ou 5932/6932); com regra do tipo, o CFOP dela é mantido quando a
prestação começa na UF do emitente (o 5932/6932 de prestação iniciada em outra UF
continua imposto).
pattern"^\\d{4}$"icms_varianteobjectObrigatóriocststring | nullOpcionalSó para ICMS45, e nela é obrigatório (40, 41 ou 51). Nas demais variantes o
campo é ignorado — o CST é derivado da variante no servidor (ICMS00→00,
ICMS20→20, ICMS60→60, ICMS90/ICMSOutraUF/ICMSSN→90).
"40" · "41" · "51" · nullaliquotanumber | null · doubleOpcionalPercentual do ICMS. Obrigatório em ICMS00, ICMS20, ICMS90 e ICMSOutraUF;
proibido em ICMS45, ICMS60 e ICMSSN.
minimum0maximum100p_red_bcnumber | null · doubleOpcionalRedução da base de cálculo do ICMS, em percentual. Obrigatória em ICMS20,
ICMS90 e ICMSOutraUF; proibida nas demais variantes.
minimum0maximum100ibs_cbs_cststring | nullOpcionalCST de IBS/CBS, com 3 dígitos — ex.: 000, tributação integral. Não confundir com o
cst do ICMS, de 2 dígitos: são vocabulários diferentes.
pattern"^\\d{3}$"ibs_cbs_class_tribstring | nullOpcionalClassificação tributária de IBS/CBS, com 6 dígitos — ex.: 000001.
pattern"^\\d{6}$"ibs_uf_aliquotanumber | null · doubleOpcionalAlíquota do IBS estadual, em percentual, com até 4 casas decimais.
minimum0maximum100ibs_mun_aliquotanumber | null · doubleOpcionalAlíquota do IBS municipal, em percentual, com até 4 casas decimais.
minimum0maximum100cbs_aliquotanumber | null · doubleOpcionalAlíquota da CBS, em percentual, com até 4 casas decimais.
minimum0maximum100ibs_cbs_p_red_bcnumber | null · doubleOpcionalRedução da base de cálculo de IBS/CBS, em percentual, com até 4 casas decimais. Aplicada antes das alíquotas.
minimum0maximum100valid_fromstring | null · dateOpcionalvalid_untilstring | null · dateOpcionalNão pode ser anterior a valid_from.
notesstring | nullOpcionalmaxLength255{
"type": "object",
"required": [
"cfop",
"icms_variante"
],
"description": "`cfop` e `icms_variante` são sempre obrigatórios. `aliquota` é obrigatória em `ICMS00`,\n`ICMS20`, `ICMS90` e `ICMSOutraUF` e proibida nas demais; `p_red_bc` é obrigatória em\n`ICMS20`, `ICMS90` e `ICMSOutraUF` e proibida nas demais (enviar fora da variante\nresponde `422`). Os outros campos são opcionais e anuláveis. A vigência é filtro:\nregra fora da janela `valid_from`/`valid_until` não é considerada na emissão.\n\nOs campos de IBS/CBS formam um bloco: informar qualquer uma das três alíquotas\n(`ibs_uf_aliquota`, `ibs_mun_aliquota`, `cbs_aliquota`) faz a regra responder pelas\ntrês, e as deixadas em branco valem zero — zero também é decisão tributária. As\nalíquotas aceitam 4 casas decimais porque as reduções da LC 214/2025 produzem\npercentuais como `0.8825`.\n",
"properties": {
"origin_state": {
"type": [
"string",
"null"
],
"minLength": 2,
"maxLength": 2,
"description": "UF de origem; `null` (ou omitido) = qualquer origem."
},
"destination_state": {
"type": [
"string",
"null"
],
"minLength": 2,
"maxLength": 2,
"description": "UF de destino; `null` (ou omitido) = qualquer destino."
},
"tp_serv": {
"type": [
"integer",
"null"
],
"enum": [
0,
1,
2,
3,
null
],
"description": "Tipo de serviço (`ide/tpServ`) a que a regra se aplica; `null` (ou omitido) =\nqualquer tipo. `0` normal, `1` subcontratação, `2` redespacho, `3` redespacho\nintermediário; o `4` (multimodal) não é aceito. Regra com tipo casado vence\nqualquer regra só de rota.\n"
},
"cfop": {
"type": [
"string",
"null"
],
"pattern": "^\\d{4}$",
"description": "Obrigatório. CFOP que o motor grava na prestação. Nos contra-CT-e com regra sem\n`tp_serv` só empresta o dígito de operação (5xxx/6xxx) e o código final vem da rota\n(`5360`/`6360` ou `5932`/`6932`); com regra do tipo, o CFOP dela é mantido quando a\nprestação começa na UF do emitente (o `5932`/`6932` de prestação iniciada em outra UF\ncontinua imposto).\n"
},
"icms_variante": {
"$ref": "#/components/schemas/FiscalTaxRuleIcmsVariant"
},
"cst": {
"type": [
"string",
"null"
],
"enum": [
"40",
"41",
"51",
null
],
"description": "Só para `ICMS45`, e nela é obrigatório (`40`, `41` ou `51`). Nas demais variantes o\ncampo é ignorado — o CST é derivado da variante no servidor (`ICMS00`→`00`,\n`ICMS20`→`20`, `ICMS60`→`60`, `ICMS90`/`ICMSOutraUF`/`ICMSSN`→`90`).\n"
},
"aliquota": {
"type": [
"number",
"null"
],
"format": "double",
"minimum": 0,
"maximum": 100,
"description": "Percentual do ICMS. Obrigatório em `ICMS00`, `ICMS20`, `ICMS90` e `ICMSOutraUF`;\nproibido em `ICMS45`, `ICMS60` e `ICMSSN`.\n"
},
"p_red_bc": {
"type": [
"number",
"null"
],
"format": "double",
"minimum": 0,
"maximum": 100,
"description": "Redução da base de cálculo do ICMS, em percentual. Obrigatória em `ICMS20`,\n`ICMS90` e `ICMSOutraUF`; proibida nas demais variantes.\n"
},
"ibs_cbs_cst": {
"type": [
"string",
"null"
],
"pattern": "^\\d{3}$",
"description": "CST de IBS/CBS, com 3 dígitos — ex.: `000`, tributação integral. Não confundir com o\n`cst` do ICMS, de 2 dígitos: são vocabulários diferentes.\n"
},
"ibs_cbs_class_trib": {
"type": [
"string",
"null"
],
"pattern": "^\\d{6}$",
"description": "Classificação tributária de IBS/CBS, com 6 dígitos — ex.: `000001`.\n"
},
"ibs_uf_aliquota": {
"type": [
"number",
"null"
],
"format": "double",
"minimum": 0,
"maximum": 100,
"description": "Alíquota do IBS estadual, em percentual, com até 4 casas decimais."
},
"ibs_mun_aliquota": {
"type": [
"number",
"null"
],
"format": "double",
"minimum": 0,
"maximum": 100,
"description": "Alíquota do IBS municipal, em percentual, com até 4 casas decimais."
},
"cbs_aliquota": {
"type": [
"number",
"null"
],
"format": "double",
"minimum": 0,
"maximum": 100,
"description": "Alíquota da CBS, em percentual, com até 4 casas decimais."
},
"ibs_cbs_p_red_bc": {
"type": [
"number",
"null"
],
"format": "double",
"minimum": 0,
"maximum": 100,
"description": "Redução da base de cálculo de IBS/CBS, em percentual, com até 4 casas decimais.\nAplicada antes das alíquotas.\n"
},
"valid_from": {
"type": [
"string",
"null"
],
"format": "date"
},
"valid_until": {
"type": [
"string",
"null"
],
"format": "date",
"description": "Não pode ser anterior a `valid_from`."
},
"notes": {
"type": [
"string",
"null"
],
"maxLength": 255
}
}
}