Resumo Impostos Calculados

Endpoints da WebApiAlcance para o resumo consolidado de impostos calculados por cliente e competência (mês/ano). Cada registro agrega os tributos apurados no período - pis, cofins, irpj, csll, iss - e o total_geral. Os endpoints cobrem criação manual, importação automática a partir de um PDF contábil, listagem geral, listagem por cliente, detalhamento por ID, atualização parcial e exclusão.

Todos os endpoints exigem autenticação. Veja Autenticação para o fluxo de API Key. O Swagger oficial está em api.contabilidadealcance.com.br/docs.

Base path

/api/v1/resumo-impostos-calculados

Escopos necessários

  • resumo_impostos_calculados:read - listagem geral, listagem por cliente e detalhamento por ID
  • resumo_impostos_calculados:write - criação, importação por PDF, atualização e exclusão

O escopo é derivado da rota: o prefixo /resumo-impostos-calculados vira o recurso resumo_impostos_calculados (hífen → underscore), e o método HTTP define a ação (read para GET, write para POST/PUT/DELETE).

Endpoints

POST /resumo-impostos-calculados/

Cria um novo resumo de impostos calculados. O usuário responsável (id_user_created) é derivado do usuário autenticado - não é aceito no payload (proteção contra mass-assignment).

Parâmetros

Este endpoint não recebe parâmetros de rota ou query - os dados vão no corpo da requisição (ResumoImpostosCalculadosCreate): id_cliente (obrigatório), competencia (obrigatório, formato MM/YYYY) e os tributos pis, cofins, irpj, csll, iss, total_geral (opcionais, default 0.00).

Request

{
  "id_cliente": 1,
  "competencia": "06/2026",
  "pis": 1500.00,
  "cofins": 3450.00,
  "irpj": 2000.00,
  "csll": 1800.00,
  "iss": 500.00,
  "total_geral": 9250.00
}

Response 201 Created

{
  "success": true,
  "message": "Resumo de impostos calculados criado com sucesso",
  "data": {
    "id": 340,
    "id_cliente": 1,
    "id_user_created": 12,
    "competencia": "06/2026",
    "pis": 1500.00,
    "cofins": 3450.00,
    "irpj": 2000.00,
    "csll": 1800.00,
    "iss": 500.00,
    "total_geral": 9250.00,
    "data_hora_criacao": "2026-07-03T09:12:44",
    "data_hora_edicao": null
  }
}

Escopo: resumo_impostos_calculados:write

POST /resumo-impostos-calculados/importar-impostos

Cria um resumo de impostos a partir de um PDF contábil. O arquivo é enviado como multipart/form-data no campo arquivo; o CNPJ, a competência e os valores dos tributos são extraídos automaticamente do documento e o cliente é resolvido pelo CNPJ.

Parâmetros

ParâmetroTipoLocalObrigatórioDescrição
arquivoUploadFileformsimPDF do resumo de impostos calculados a ser importado.

Request

POST /api/v1/resumo-impostos-calculados/importar-impostos
Content-Type: multipart/form-data
 
arquivo=@resumo_impostos_06-2026.pdf

Response 201 Created

{
  "success": true,
  "message": "Resumo de impostos calculados criado a partir do PDF com sucesso",
  "data": {
    "id": 341,
    "id_cliente": 1,
    "id_user_created": 12,
    "competencia": "06/2026",
    "pis": 1500.00,
    "cofins": 3450.00,
    "irpj": 2000.00,
    "csll": 1800.00,
    "iss": 500.00,
    "total_geral": 9250.00,
    "data_hora_criacao": "2026-07-03T09:20:10",
    "data_hora_edicao": null
  }
}

Erros de entrada retornam status HTTP dedicados: 400 Bad Request para PDF inválido ou CNPJ/competência não extraídos, e 404 Not Found quando o cliente não é encontrado pelo CNPJ (detail iniciando com "Cliente nao encontrado"). Escopo: resumo_impostos_calculados:write

GET /resumo-impostos-calculados/

Lista todos os resumos de impostos calculados cadastrados. Lista vazia é um estado válido - sempre retorna 200 OK, inclusive com data: [] e a mensagem "Nenhum resumo de impostos calculados encontrado.".

Parâmetros

Este endpoint não recebe parâmetros de rota ou query. A resposta traz data como array de ResumoImpostosCalculadosRead.

Request

Sem corpo de requisição.

Response 200 OK

{
  "success": true,
  "message": "Resumos de impostos calculados recuperados com sucesso",
  "data": [
    {
      "id": 340,
      "id_cliente": 1,
      "id_user_created": 12,
      "competencia": "06/2026",
      "pis": 1500.00,
      "cofins": 3450.00,
      "irpj": 2000.00,
      "csll": 1800.00,
      "iss": 500.00,
      "total_geral": 9250.00,
      "data_hora_criacao": "2026-07-03T09:12:44",
      "data_hora_edicao": null
    }
  ]
}

Escopo: resumo_impostos_calculados:read

GET /resumo-impostos-calculados/by-cliente/{id_cliente}

Lista os resumos de impostos de um cliente específico. Sem registros, retorna 200 OK com data: [] e a mensagem "Nenhum resumo encontrado para este cliente.".

Parâmetros

ParâmetroTipoLocalObrigatórioDescrição
id_clienteintpathsimID interno do cliente.

Request

Sem corpo de requisição.

Response 200 OK

{
  "success": true,
  "message": "Resumos do cliente recuperados com sucesso",
  "data": [
    {
      "id": 340,
      "id_cliente": 1,
      "id_user_created": 12,
      "competencia": "06/2026",
      "pis": 1500.00,
      "cofins": 3450.00,
      "irpj": 2000.00,
      "csll": 1800.00,
      "iss": 500.00,
      "total_geral": 9250.00,
      "data_hora_criacao": "2026-07-03T09:12:44",
      "data_hora_edicao": null
    }
  ]
}

Escopo: resumo_impostos_calculados:read

GET /resumo-impostos-calculados/{resumo_id}

Detalha um resumo pelo ID inteiro. Quando não encontrado, retorna o envelope de erro com message: "Resumo de impostos calculados nao encontrado.".

Parâmetros

ParâmetroTipoLocalObrigatórioDescrição
resumo_idintpathsimID interno do resumo.

Request

Sem corpo de requisição.

Response 200 OK

{
  "success": true,
  "message": "Resumo de impostos calculados encontrado com sucesso",
  "data": {
    "id": 340,
    "id_cliente": 1,
    "id_user_created": 12,
    "competencia": "06/2026",
    "pis": 1500.00,
    "cofins": 3450.00,
    "irpj": 2000.00,
    "csll": 1800.00,
    "iss": 500.00,
    "total_geral": 9250.00,
    "data_hora_criacao": "2026-07-03T09:12:44",
    "data_hora_edicao": null
  }
}

Escopo: resumo_impostos_calculados:read

PUT /resumo-impostos-calculados/{resumo_id}

Atualiza um resumo existente. O body é um ResumoImpostosCalculadosUpdate com campos parciais - somente o que vier preenchido é alterado. id_cliente e id_user_created são imutáveis após a criação.

Parâmetros

ParâmetroTipoLocalObrigatórioDescrição
resumo_idintpathsimID do resumo.

Request (ResumoImpostosCalculadosUpdate - todos os campos opcionais)

{
  "competencia": "06/2026",
  "iss": 620.00,
  "total_geral": 9370.00
}

Response 200 OK

{
  "success": true,
  "message": "Resumo de impostos calculados atualizado com sucesso",
  "data": {
    "id": 340,
    "id_cliente": 1,
    "id_user_created": 12,
    "competencia": "06/2026",
    "pis": 1500.00,
    "cofins": 3450.00,
    "irpj": 2000.00,
    "csll": 1800.00,
    "iss": 620.00,
    "total_geral": 9370.00,
    "data_hora_criacao": "2026-07-03T09:12:44",
    "data_hora_edicao": "2026-07-03T11:42:00"
  }
}

Escopo: resumo_impostos_calculados:write

DELETE /resumo-impostos-calculados/{resumo_id}

Remove um resumo de impostos calculados pelo ID. Quando não encontrado, retorna o envelope de erro com message: "Resumo de impostos calculados nao encontrado.".

Parâmetros

ParâmetroTipoLocalObrigatórioDescrição
resumo_idintpathsimID do resumo.

Request

Sem corpo de requisição.

Response 200 OK

{
  "success": true,
  "message": "Resumo de impostos calculados deletado com sucesso",
  "data": null
}

Escopo: resumo_impostos_calculados:write

Schemas

ResumoImpostosCalculadosCreate

CampoTipoObrigatórioObservações
id_clienteintsimID do cliente. Deve ser > 0.
competenciastrsimCompetência no formato MM/YYYY (ex.: 06/2026). Máx. 7 caracteres.
pisdecimalnãoValor do PIS. Default 0.00; deve ser >= 0.
cofinsdecimalnãoValor da COFINS. Default 0.00; deve ser >= 0.
irpjdecimalnãoValor do IRPJ. Default 0.00; deve ser >= 0.
cslldecimalnãoValor da CSLL. Default 0.00; deve ser >= 0.
issdecimalnãoValor do ISS. Default 0.00; deve ser >= 0.
total_geraldecimalnãoTotal geral dos tributos. Default 0.00; deve ser >= 0.

ResumoImpostosCalculadosUpdate

Atualização parcial; apenas os campos enviados são alterados. id_cliente e id_user_created são imutáveis pós-criação.

CampoTipoObservações
competenciastrNova competência no formato MM/YYYY.
pisdecimalNovo valor do PIS. Deve ser >= 0.
cofinsdecimalNovo valor da COFINS. Deve ser >= 0.
irpjdecimalNovo valor do IRPJ. Deve ser >= 0.
cslldecimalNovo valor da CSLL. Deve ser >= 0.
issdecimalNovo valor do ISS. Deve ser >= 0.
total_geraldecimalNovo total geral. Deve ser >= 0.

ResumoImpostosCalculadosRead

CampoTipoNotas
idintIdentificador do resumo.
id_clienteintCliente vinculado.
id_user_createdintUsuário Alcance que registrou o resumo.
competenciastrCompetência no formato MM/YYYY.
pisdecimalValor do PIS.
cofinsdecimalValor da COFINS.
irpjdecimalValor do IRPJ.
cslldecimalValor da CSLL.
issdecimalValor do ISS.
total_geraldecimalTotal geral dos tributos.
data_hora_criacaodatetime?Quando o registro foi criado.
data_hora_edicaodatetime?Quando o registro foi editado pela última vez.

Notas

  • Toda resposta segue o envelope { success, message, data } (ou { success: false, message, details } em erro).
  • competencia é validada pelo padrão MM/YYYY (mês de 01 a 12); valores fora do formato retornam erro de validação (422 Unprocessable Entity).
  • Os campos de tributos são valores monetários (decimal) e nunca podem ser negativos (>= 0).
  • GET /resumo-impostos-calculados/by-cliente/{id_cliente} é declarado antes da rota dinâmica GET /resumo-impostos-calculados/{resumo_id}, então by-cliente é resolvido como rota estática (e não interpretado como um resumo_id).
  • O endpoint POST /importar-impostos extrai automaticamente CNPJ, competência e valores do PDF contábil e resolve o cliente pelo CNPJ - dispensando a digitação manual dos tributos.