Regras fiscais
Lista, cria, altera e remove as regras que dizem quais impostos incidem sobre cada tipo de produto.
As regras fiscais respondem a perguntas como "mercadoria no lucro presumido paga ICMS e IPI?" ou "produto digital paga ISS e não ICMS?". Só entram regras ativas e sem vendor_id (as do operador); regras criadas por sellers não aparecem nem podem ser alteradas por aqui.
Listar regras
/api/v1/admin/tax/rulesAdminLista regras fiscais
Exemplo de requisição
bash
curl "$BASE_URL/api/v1/admin/tax/rules" \
-H "Authorization: Bearer $TOKEN"Resposta
200Regras
json
{
"rules": [
{
"id": 5,
"name": "Mercadorias Lucro Presumido",
"product_type": "goods",
"tax_regime": "lucro_presumido",
"apply_icms": true,
"apply_iss": false,
"apply_ipi": true,
"apply_pis": true,
"apply_cofins": true,
"pis_rate_bps": 65,
"cofins_rate_bps": 300,
"icms_st_enabled": false,
"icms_st_mva_bps": 0,
"difal_enabled": true,
"is_default": false,
"priority": 10,
"ncm_pattern": "",
"is_active": true,
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}
],
"total": 1
}Campos da resposta
totalintegerQuantidade.
rulesarrayRegras, com os campos do corpo mais
id, created_at e updated_at.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem manage_taxes nem manage_settings. | {"error":"insufficient privileges","privilege_required_any":["manage_taxes","manage_settings"]} |
| 403 | O módulo icms-tax está desligado na loja. | {"error":"module_disabled","module":"icms-tax"} |
Criar uma regra
/api/v1/admin/tax/rulesAdminCria uma regra fiscal
Corpo da requisição
namestringobrigatórioNome da regra (obrigatório na criação).
product_typestringTipo de produto ao qual vale, por exemplo
goods, service, digital. Vazio = qualquer.tax_regimestringsimples_nacionalmeilucro_presumidolucro_realRegime ao qual vale. Vazio = qualquer.
apply_icmsbooleanCalcula ICMS.
apply_issbooleanCalcula ISS.
apply_ipibooleanCalcula IPI.
apply_pisbooleanCalcula PIS.
apply_cofinsbooleanCalcula COFINS.
icms_override_bpsintegerAlíquota fixa de ICMS; ausente = usa a tabela.
iss_override_bpsintegerAlíquota fixa de ISS.
ipi_override_bpsintegerAlíquota fixa de IPI.
pis_rate_bpsintegerPIS em pontos-base.
0 na criação vira 165 (1,65%).cofins_rate_bpsintegerCOFINS em pontos-base.
0 na criação vira 760 (7,60%).icms_st_enabledbooleanLiga a substituição tributária.
icms_st_mva_bpsintegerMargem de valor agregado (MVA) da ST, em pontos-base.
difal_enabledbooleanLiga o DIFAL.
is_defaultbooleanRegra padrão (perde o desempate para a específica).
priorityintegerMaior vence.
category_iduuidRestringe a uma categoria.
ncm_patternstringPrefixo de NCM ao qual vale. Vazio = qualquer.
is_activebooleanPadrão
true.Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/admin/tax/rules" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Mercadorias Lucro Presumido",
"product_type": "goods",
"tax_regime": "lucro_presumido",
"apply_icms": true,
"apply_ipi": true,
"apply_pis": true,
"apply_cofins": true,
"pis_rate_bps": 65,
"cofins_rate_bps": 300,
"difal_enabled": true,
"priority": 10
}'Resposta
201Regra criada
json
{
"id": 5,
"name": "Mercadorias Lucro Presumido",
"product_type": "goods",
"tax_regime": "lucro_presumido",
"apply_icms": true,
"apply_iss": false,
"apply_ipi": true,
"apply_pis": true,
"apply_cofins": true,
"pis_rate_bps": 65,
"cofins_rate_bps": 300,
"icms_st_enabled": false,
"icms_st_mva_bps": 0,
"difal_enabled": true,
"is_default": false,
"priority": 10,
"ncm_pattern": "",
"is_active": true,
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | name ausente ou corpo inválido. | {"error":"name is required"} |
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem manage_taxes nem manage_settings. | {"error":"insufficient privileges","privilege_required_any":["manage_taxes","manage_settings"]} |
| 403 | O módulo icms-tax está desligado na loja. | {"error":"module_disabled","module":"icms-tax"} |
| 500 | Falha ao gravar. | {"error":"failed to create tax rule","detail":"..."} |
Alterar uma regra
Substitui os campos da regra: envie o corpo completo, como na criação. Campos omitidos voltam ao valor zero (por exemplo apply_icms: false).
/api/v1/admin/tax/rules/{id}AdminAltera uma regra fiscal
Parâmetros de caminho
idintegerobrigatórioId numérico da regra.
Corpo da requisição
namestringobrigatórioNome da regra (obrigatório na criação).
product_typestringTipo de produto ao qual vale, por exemplo
goods, service, digital. Vazio = qualquer.tax_regimestringsimples_nacionalmeilucro_presumidolucro_realRegime ao qual vale. Vazio = qualquer.
apply_icmsbooleanCalcula ICMS.
apply_issbooleanCalcula ISS.
apply_ipibooleanCalcula IPI.
apply_pisbooleanCalcula PIS.
apply_cofinsbooleanCalcula COFINS.
icms_override_bpsintegerAlíquota fixa de ICMS; ausente = usa a tabela.
iss_override_bpsintegerAlíquota fixa de ISS.
ipi_override_bpsintegerAlíquota fixa de IPI.
pis_rate_bpsintegerPIS em pontos-base.
0 na criação vira 165 (1,65%).cofins_rate_bpsintegerCOFINS em pontos-base.
0 na criação vira 760 (7,60%).icms_st_enabledbooleanLiga a substituição tributária.
icms_st_mva_bpsintegerMargem de valor agregado (MVA) da ST, em pontos-base.
difal_enabledbooleanLiga o DIFAL.
is_defaultbooleanRegra padrão (perde o desempate para a específica).
priorityintegerMaior vence.
category_iduuidRestringe a uma categoria.
ncm_patternstringPrefixo de NCM ao qual vale. Vazio = qualquer.
is_activebooleanSe omitido, mantém o valor atual.
Exemplo de requisição
bash
curl -X PUT "$BASE_URL/api/v1/admin/tax/rules/5" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Mercadorias Lucro Presumido",
"product_type": "goods",
"tax_regime": "lucro_presumido",
"apply_icms": true,
"apply_ipi": true,
"apply_pis": true,
"apply_cofins": true,
"pis_rate_bps": 65,
"cofins_rate_bps": 300,
"difal_enabled": true,
"priority": 20
}'Resposta
200Regra alterada
json
{
"id": 5,
"name": "Mercadorias Lucro Presumido",
"product_type": "goods",
"tax_regime": "lucro_presumido",
"apply_icms": true,
"apply_iss": false,
"apply_ipi": true,
"apply_pis": true,
"apply_cofins": true,
"pis_rate_bps": 65,
"cofins_rate_bps": 300,
"icms_st_enabled": false,
"icms_st_mva_bps": 0,
"difal_enabled": true,
"is_default": false,
"priority": 20,
"ncm_pattern": "",
"is_active": true,
"created_at": "2026-10-11T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | id não numérico ou corpo inválido. | {"error":"invalid id"} |
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem manage_taxes nem manage_settings. | {"error":"insufficient privileges","privilege_required_any":["manage_taxes","manage_settings"]} |
| 403 | O módulo icms-tax está desligado na loja. | {"error":"module_disabled","module":"icms-tax"} |
| 500 | Regra inexistente (sim, 500) ou falha ao gravar. | {"error":"failed to update tax rule","detail":"tax rule 5 not found"} |
Remover uma regra
/api/v1/admin/tax/rules/{id}AdminRemove uma regra fiscal
Parâmetros de caminho
idintegerobrigatórioId numérico da regra.
Exemplo de requisição
bash
curl -X DELETE "$BASE_URL/api/v1/admin/tax/rules/5" \
-H "Authorization: Bearer $TOKEN"Resposta
200Removida
json
{
"status": "deleted"
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | id não numérico. | {"error":"invalid id"} |
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem manage_taxes nem manage_settings. | {"error":"insufficient privileges","privilege_required_any":["manage_taxes","manage_settings"]} |
| 403 | O módulo icms-tax está desligado na loja. | {"error":"module_disabled","module":"icms-tax"} |
| 500 | Regra inexistente (sim, 500) ou não é do operador. | {"error":"failed to delete tax rule","detail":"tax rule 5 not found"} |