Perfis fiscais
Cria e mantém os perfis que definem CST, CSOSN, origem e substituição tributária dos produtos nas notas.
Um perfil fiscal é um conjunto de códigos de imposto que a nota usa para um tipo de produto. Em vez de repetir CST e CSOSN em cada produto, você cria alguns perfis ("revenda com ST", "Simples Nacional sem ST") e os atribui a produtos, categorias ou prefixos de NCM. Um perfil marcado como padrão vale para tudo que não tiver atribuição.
Exigem o módulo focusnfe e o privilégio manage_taxes ou manage_settings.
| Código | Para que serve |
|---|---|
csosn | Código de situação da operação no Simples Nacional (por exemplo 102, 400). Usado por emissores do Simples. |
icms_cst | Código de situação tributária do ICMS no regime normal (por exemplo 00, 60). |
pis_cst, cofins_cst | Código de situação tributária do PIS e da COFINS. |
icms_origem | Origem da mercadoria, de 0 (nacional) a 8, conforme a tabela da SEFAZ. |
st_enabled, st_retido, st_mva_bps | Substituição tributária (ICMS ST): se aplica, se o imposto já veio retido e a margem de valor agregado em pontos-base (4000 = 40%). |
Quando st_enabled está ligado, o produto precisa ter CEST, ou a validação prévia acusa MISSING_CEST como erro.
Listar perfis
Devolve os perfis não excluídos, do menor priority para o maior e, em empate, por nome.
/api/v1/admin/fiscal/profilesAdminLista os perfis fiscais
Exemplo de requisição
curl "$BASE_URL/api/v1/admin/fiscal/profiles" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"items": [
{
"id": "be441f7e-9c43-4602-a43c-4724a5d8ce04",
"name": "Revenda com ST",
"is_default": false,
"csosn": "500",
"icms_cst": "60",
"pis_cst": "01",
"cofins_cst": "01",
"icms_origem": 0,
"st_enabled": true,
"st_retido": true,
"st_mva_bps": 4000,
"priority": 100,
"status": "active",
"created_at": "2026-07-19T08:47:37Z",
"updated_at": "2026-07-19T08:47:37Z"
}
]
}Campos da resposta
iduuidnamestringis_defaultbooleancsosnstringicms_cststringpis_cststringcofins_cststringicms_origemintegerst_enabledbooleanst_retidobooleanst_mva_bpsintegerpriorityintegerstatusstringactiveinactiveactive são usados na emissão.created_atstringupdated_atstringErros
| Status | Quando | Corpo |
|---|---|---|
| 500 | Falha de consulta | {"error":"failed to list profiles","detail":"..."} |
| 401 / 403 | Sem token, sem privilégio, módulo desligado | {"error":"insufficient privileges","privilege_required_any":["manage_taxes","manage_settings"]} |
Criar um perfil
Cria o perfil. A API não valida o conteúdo dos códigos: confirme CST e CSOSN com o seu contador antes de usar.
/api/v1/admin/fiscal/profilesAdminCria um perfil fiscal
Corpo da requisição
namestringobrigatóriois_defaultbooleanpadrão: false422 enquanto o primeiro existir. Não há rota para trocar o padrão; exclua o atual e crie o novo.csosnstringpadrão: 102icms_cststringpadrão: 00pis_cststringcofins_cststringicms_origemintegerpadrão: 0st_enabledbooleanpadrão: falsest_retidobooleanpadrão: falsest_mva_bpsintegerpadrão: 0priorityintegerpadrão: 100statusstringpadrão: activeactiveinactiveExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/fiscal/profiles" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Revenda com ST",
"csosn": "500",
"icms_cst": "60",
"pis_cst": "01",
"cofins_cst": "01",
"icms_origem": 0,
"st_enabled": true,
"st_retido": true,
"st_mva_bps": 4000
}'Resposta
{
"id": "be441f7e-9c43-4602-a43c-4724a5d8ce04",
"name": "Revenda com ST",
"is_default": false,
"csosn": "500",
"icms_cst": "60",
"pis_cst": "01",
"cofins_cst": "01",
"icms_origem": 0,
"st_enabled": true,
"st_retido": true,
"st_mva_bps": 4000,
"priority": 100,
"status": "",
"created_at": "0001-01-01T00:00:00Z",
"updated_at": "0001-01-01T00:00:00Z"
}Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | JSON inválido | {"error":"invalid body","detail":"..."} |
| 422 | Falha ao gravar (por exemplo status fora da lista, ou já existe um perfil padrão) | {"error":"failed to create profile","detail":"..."} |
Alterar um perfil
/api/v1/admin/fiscal/profiles/{id}AdminAltera um perfil fiscal
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
namestringcsosnstringicms_cststringpis_cststringcofins_cststringicms_origemintegerst_enabledbooleanst_retidobooleanst_mva_bpsintegerpriorityintegerExemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/fiscal/profiles/be441f7e-9c43-4602-a43c-4724a5d8ce04" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Revenda com ST",
"csosn": "500",
"icms_cst": "60",
"pis_cst": "01",
"cofins_cst": "01",
"icms_origem": 0,
"st_enabled": true,
"st_retido": true,
"st_mva_bps": 3500,
"priority": 100
}'Resposta
{
"id": "be441f7e-9c43-4602-a43c-4724a5d8ce04",
"name": "Revenda com ST",
"is_default": false,
"csosn": "500",
"icms_cst": "60",
"pis_cst": "01",
"cofins_cst": "01",
"icms_origem": 0,
"st_enabled": true,
"st_retido": true,
"st_mva_bps": 3500,
"priority": 100,
"status": "active",
"created_at": "2026-07-19T08:47:37Z",
"updated_at": "2026-10-11T22:40:00Z"
}Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | JSON inválido | {"error":"invalid body","detail":"..."} |
| 422 | Perfil inexistente, id que não é UUID | {"error":"failed to update profile","detail":"..."} |
Um perfil excluído não é alterado, mas a chamada ainda responde 200 com o registro guardado (inativo); confira o status na resposta.
Excluir um perfil
Exclusão lógica: o perfil fica inactive e deixa de ser usado. Atribuições a ele continuam gravadas mas não têm efeito.
/api/v1/admin/fiscal/profiles/{id}AdminExclui um perfil fiscal
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/admin/fiscal/profiles/be441f7e-9c43-4602-a43c-4724a5d8ce04" \
-H "Authorization: Bearer $TOKEN"Resposta
(sem corpo)Erros
| Status | Quando | Corpo |
|---|---|---|
| 500 | Falha ao gravar, ou id que não é UUID | {"error":"failed to delete profile","detail":"..."} |