Calculadoras de imposto
Simula os impostos de um pedido inteiro ou de um imposto isolado, sem criar nada.
As calculadoras usam as mesmas tabelas e regras do checkout, então servem para conferir a configuração antes de vender, ou para um sistema externo mostrar o imposto ao operador. Nada é gravado.
Calcular um pedido
Cálculo completo, incluindo frete, DIFAL e ICMS-ST. Valores em centavos.
/api/v1/admin/tax/calculateAdminCalcula os impostos de um pedido
Corpo da requisição
origin_statestringobrigatórioUF de origem.
dest_statestringobrigatórioUF de destino.
city_codestringCódigo IBGE do município, para ISS.
tax_regimestringsimples_nacionalmeilucro_presumidolucro_realRegime do vendedor.
shipping_costintegerFrete em centavos.
is_contribuintebooleanComprador contribuinte de ICMS (B2B com inscrição estadual): suprime o DIFAL.
itemsarrayobrigatórioItens do pedido.
product_idstringId do produto.
ncmstringNCM, para o IPI.
unit_priceintegerPreço unitário em centavos.
quantitynumberQuantidade (aceita fração).
discountintegerDesconto da linha em centavos.
is_servicebooleanServiço: incide ISS.
is_importedbooleanImportado.
is_digitalbooleanDigital: ISS, sem ICMS nem IPI.
category_iduuidCategoria, para casar a regra.
Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/admin/tax/calculate" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"origin_state": "SP",
"dest_state": "RJ",
"tax_regime": "lucro_presumido",
"shipping_cost": 1000,
"items": [
{
"product_id": "3f73310d-bfdd-4713-a664-305c08eda58b",
"ncm": "61091000",
"unit_price": 4990,
"quantity": 2
}
]
}'Resposta
200Detalhamento
json
{
"subtotal": 9980,
"shipping_cost": 1000,
"shipping_tax": 0,
"icms": 1198,
"iss": 0,
"ipi": 0,
"pis": 65,
"cofins": 299,
"difal": 0,
"icms_st": 0,
"total_tax": 1562,
"grand_total": 12542,
"tax_regime": "lucro_presumido",
"items": [
{
"product_id": "3f73310d-bfdd-4713-a664-305c08eda58b",
"amount": 9980,
"icms": 1198,
"iss": 0,
"ipi": 0,
"pis": 65,
"cofins": 299,
"difal": 0,
"icms_st": 0,
"total_tax": 1562,
"icms_rate_bps": 1200,
"ipi_rate_bps": 0,
"iss_rate_bps": 0,
"pis_rate_bps": 65,
"cofins_rate_bps": 300
}
]
}Campos da resposta
subtotalintegerSoma dos itens em centavos.
shipping_costintegerFrete.
shipping_taxintegerImposto sobre o frete.
icmsintegerICMS total.
issintegerISS total.
ipiintegerIPI total.
pisintegerPIS total.
cofinsintegerCOFINS total.
difalintegerDIFAL total.
icms_stintegerICMS-ST total.
total_taxintegerSoma dos impostos.
grand_totalintegerSubtotal + frete + impostos que se somam ao preço.
itemsarrayDetalhe por item, com as alíquotas aplicadas em pontos-base (
icms_rate_bps...).Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | UF ausente ou inválida. | {"error":"invalid dest_state: must be a valid 2-letter Brazilian UF code"} |
| 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 no cálculo. | {"error":"tax calculation failed","detail":"..."} |
Prévia com resumo
Outra forma de simular. Aqui os itens trazem o total da linha em amount (não preço unitário e quantidade) e a resposta inclui um summary pronto para exibir, com a alíquota efetiva.
/api/v1/admin/tax/calculate-previewAdminPrévia de impostos com resumo
Corpo da requisição
origin_statestringobrigatórioUF de origem.
dest_statestringobrigatórioUF de destino.
city_codestringMunicípio, para ISS.
tax_regimestringRegime.
is_contribuintebooleanComprador contribuinte (suprime DIFAL).
itemsarrayobrigatórioItens.
product_idstringProduto.
ncmstringNCM.
amountintegerTotal da linha em centavos.
is_servicebooleanServiço.
is_importedbooleanImportado.
is_digitalbooleanDigital.
category_iduuidCategoria.
Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/admin/tax/calculate-preview" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"origin_state": "SP",
"dest_state": "RJ",
"tax_regime": "lucro_presumido",
"items": [
{
"product_id": "p1",
"ncm": "61091000",
"amount": 9980
}
]
}'Resposta
200Prévia
json
{
"calculation": {
"icms": 1198,
"iss": 0,
"ipi": 0,
"pis": 65,
"cofins": 299,
"difal": 0,
"icms_st": 0,
"total": 1562,
"icms_rate": 1200,
"tax_regime": "lucro_presumido",
"rule_applied": "Mercadorias Lucro Presumido",
"details": []
},
"summary": {
"subtotal": 9980,
"icms": 1198,
"iss": 0,
"ipi": 0,
"pis": 65,
"cofins": 299,
"difal": 0,
"icms_st": 0,
"total_tax": 1562,
"total": 11542,
"effective_rate_bps": 1565,
"icms_rate_bps": 1200,
"tax_regime": "lucro_presumido",
"rule_applied": "Mercadorias Lucro Presumido"
}
}Campos da resposta
calculationobjectResultado detalhado: impostos,
details por item e rule_applied.summary.total_taxintegerSoma dos impostos em centavos.
summary.totalintegersubtotal + total_tax.summary.effective_rate_bpsintegerCarga efetiva: imposto sobre subtotal, em pontos-base.
summary.rule_appliedstringNome da regra fiscal escolhida.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | UF ausente ou inválida. | {"error":"origin_state and dest_state are 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"} |
Calcular só o ICMS
/api/v1/admin/tax/calculate-icmsAdminCalcula só o ICMS
Corpo da requisição
origin_statestringobrigatórioUF de origem.
dest_statestringobrigatórioUF de destino.
product_valueintegerobrigatórioValor em centavos.
Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/admin/tax/calculate-icms" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"origin_state": "SP",
"dest_state": "RJ",
"product_value": 10000
}'Resposta
200ICMS
json
{
"rate_bps": 1200,
"base_value": 10000,
"tax_amount": 1200,
"is_interstate": true,
"difal_amount": 800,
"difal_origin": 0,
"difal_dest": 800,
"st_amount": 0,
"st_base_value": 0,
"st_rate_bps": 0,
"st_mva_bps": 0,
"origin_state": "SP",
"dest_state": "RJ"
}Campos da resposta
rate_bpsintegerAlíquota aplicada.
tax_amountintegerICMS em centavos.
is_interstatebooleanOrigem diferente do destino.
difal_amountintegerDIFAL em centavos (alíquota interna do destino menos a aplicada, quando maior).
difal_destintegerParcela do DIFAL para o estado de destino (100%).
difal_originintegerParcela do estado de origem (sempre 0).
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | UF ausente ou inválida. | {"error":"invalid origin_state: must be a valid 2-letter Brazilian UF code"} |
| 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"} |
Calcular só o ISS
/api/v1/admin/tax/calculate-issAdminCalcula só o ISS
Corpo da requisição
city_codestringobrigatórioCódigo IBGE do município.
service_valueintegerobrigatórioValor do serviço em centavos.
Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/admin/tax/calculate-iss" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"city_code": "3550308",
"service_value": 10000
}'Resposta
200ISS
json
{
"rate_bps": 500,
"base_value": 10000,
"tax_amount": 500,
"city_code": "3550308",
"service_code": ""
}Campos da resposta
rate_bpsintegerAlíquota;
0 se a cidade não está cadastrada.tax_amountintegerISS em centavos.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | city_code ausente. | {"error":"city_code 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"} |
Calcular só o IPI
/api/v1/admin/tax/calculate-ipiAdminCalcula só o IPI
Corpo da requisição
ncm_codestringobrigatórioNCM do produto.
product_valueintegerobrigatórioValor em centavos.
Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/admin/tax/calculate-ipi" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ncm_code": "61091000",
"product_value": 10000
}'Resposta
200IPI
json
{
"rate_bps": 0,
"base_value": 10000,
"tax_amount": 0,
"ncm_code": "61091000"
}Campos da resposta
rate_bpsintegerAlíquota;
0 sem cadastro.tax_amountintegerIPI em centavos.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | ncm_code ausente. | {"error":"ncm_code 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"} |