Alíquotas de ICMS
Lista e grava a alíquota de ICMS de cada par de UFs e mostra a matriz completa.
A tabela tem uma linha por par (origem, destino): 27 x 27 UFs. A plataforma já traz valores iniciais; ao editar um par, ele passa a is_custom: true. Gravar um par que não existe o cria.
Listar alíquotas
/api/v1/admin/tax/icms-ratesAdminLista alíquotas de ICMS
Parâmetros de consulta
originstringFiltra pela UF de origem.
Exemplo de requisição
bash
curl "$BASE_URL/api/v1/admin/tax/icms-rates?origin=SP" \
-H "Authorization: Bearer $TOKEN"Resposta
200Alíquotas
json
{
"rates": [
{
"id": 42,
"origin_state": "SP",
"destination_state": "RJ",
"rate_bps": 1200,
"is_internal": false,
"is_custom": true,
"created_at": "2026-06-01T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}
],
"total": 1
}Campos da resposta
totalintegerQuantidade.
ratesarrayAlíquotas, ordenadas por origem e destino.
idintegerId da alíquota.
origin_statestringUF de origem.
destination_statestringUF de destino.
rate_bpsintegerAlíquota em pontos-base.
is_internalbooleantrue quando origem e destino são a mesma UF.is_custombooleantrue depois que alguém editou o par; false é o valor inicial da plataforma.created_atstringCriação.
updated_atstringÚltima alteração.
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"} |
Gravar uma alíquota
/api/v1/admin/tax/icms-ratesAdminGrava uma alíquota de ICMS
Corpo da requisição
origin_statestringobrigatórioUF de origem.
destination_statestringobrigatórioUF de destino.
rate_bpsintegerobrigatórioAlíquota de 0 a 10000.
Exemplo de requisição
bash
curl -X PUT "$BASE_URL/api/v1/admin/tax/icms-rates" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"origin_state": "SP",
"destination_state": "RJ",
"rate_bps": 1200
}'Resposta
200Alíquota gravada
json
{
"id": 42,
"origin_state": "SP",
"destination_state": "RJ",
"rate_bps": 1200,
"is_internal": false,
"is_custom": true,
"created_at": "2026-06-01T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}Campos da resposta
idintegerId da alíquota.
origin_statestringUF de origem.
destination_statestringUF de destino.
rate_bpsintegerAlíquota em pontos-base.
is_internalbooleantrue quando origem e destino são a mesma UF.is_custombooleantrue depois que alguém editou o par; false é o valor inicial da plataforma.created_atstringCriação.
updated_atstringÚltima alteração.
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | UF ausente ou inválida, ou rate_bps fora de 0 a 10000. | {"error":"rate_bps must be between 0 and 10000"} |
| 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"} |
Gravar várias alíquotas
Em uma transação, grava cada item da lista. Itens inválidos (UF vazia ou alíquota fora da faixa) são pulados e listados em skipped; os válidos são gravados.
/api/v1/admin/tax/icms-rates/bulkAdminGrava várias alíquotas de ICMS
Corpo da requisição
ratesarrayobrigatórioLista de
{origin_state, destination_state, rate_bps}.Exemplo de requisição
bash
curl -X PUT "$BASE_URL/api/v1/admin/tax/icms-rates/bulk" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"rates": [
{
"origin_state": "SP",
"destination_state": "RJ",
"rate_bps": 1200
},
{
"origin_state": "SP",
"destination_state": "MG",
"rate_bps": 1200
}
]
}'Resposta
200Resultado
json
{
"rates": [
{
"id": 42,
"origin_state": "SP",
"destination_state": "RJ",
"rate_bps": 1200,
"is_internal": false,
"is_custom": true,
"created_at": "2026-06-01T12:00:00Z",
"updated_at": "2026-10-11T12:00:00Z"
}
],
"updated": 1,
"skipped": [
{
"index": 1,
"reason": "rate_bps 20000 out of range [0, 10000]",
"origin_state": "SP",
"destination_state": "MG"
}
]
}Campos da resposta
ratesarrayAlíquotas gravadas.
updatedintegerQuantas foram gravadas.
skippedarrayItens pulados:
index (posição na lista), reason, origin_state, destination_state.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo inválido ou rates vazio. | {"error":"rates array 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"} |
Ver a matriz
Mesmos dados da lista, em formato enxuto para desenhar uma grade UF x UF.
/api/v1/admin/tax/icms-matrixAdminMatriz de ICMS
Exemplo de requisição
bash
curl "$BASE_URL/api/v1/admin/tax/icms-matrix" \
-H "Authorization: Bearer $TOKEN"Resposta
200Matriz
json
{
"matrix": [
{
"origin_state": "SP",
"destination_state": "RJ",
"rate_bps": 1200,
"rule_id": 42,
"is_custom": true
}
]
}Campos da resposta
matrixarrayUma entrada por par.
matrix[].rule_idintegerId da alíquota (campo
id da lista).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"} |