Cancela uma fatura
POST /api/{userId}/establishment/{establishmentId}/invoices/cancel/{clientId}/{invoiceDateTime}
Cancela uma fatura ainda não paga. Em geral, exige confirmação do usuário (senha) e um motivo.
Parâmetros de rota
| Nome | Tipo | Descrição |
|---|---|---|
userId | number | Identificador do usuário |
establishmentId | number | Identificador do estabelecimento |
clientId | string | Identificador do cliente |
invoiceDateTime | string | Chave da fatura |
Body (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
userPassword | string | sim | Senha do usuário (validação interna) |
reason | string | sim | Motivo do cancelamento (vai para histórico) |
Requisição
- Método:
POST - Path:
/api/\{userId\}/establishment/\{establishmentId\}/invoices/cancel/\{clientId\}/\{invoiceDateTime\} - Headers:
Authorization,Accept: application/json,Content-Type: application/json
Formato da resposta (JSON)
- Sucesso (HTTP 200):
{ "response": "success", "data": { "msg": "...", "code": "..." } } - Erro (HTTP 400):
{ "response": "error", "data": { "msg": "...", "code": "..." } } - Não autorizado / permissão: Autorização
Nuâncias (regras importantes)
- Não pode cancelar se a fatura tiver
transactionId(ou seja, já está paga/vinculada a pagamento). - Restrição para pós pago: quando a fatura possui lançamentos (
transactionsnão vazio), o cancelamento pode ser bloqueado. - Senha + motivo:
userPasswordé validado internamente (hash).reasoné registrado como observação no histórico.
- Efeito colateral: se após cancelar não existir outra fatura pendente, o sistema pode criar uma nova fatura recorrente (dependendo da configuração do cliente).
Códigos de erro comuns
| Código | Quando ocorre |
|---|---|
06018 | Fatura já paga / com transação (não pode cancelar) |
06026 | Restrição de cancelamento para pós pago com lançamentos |
80001 | Senha do usuário não informada |
80002 | Motivo não informado |
80003 | Senha inválida |
Exemplo de requisição
{
"userPassword": "minha-senha",
"reason": "Cancelamento solicitado pelo cliente"
}