Skip to main content
POST
/
api
/
v1
/
subscriptions
/
cancel
Cancelar Assinatura
curl --request POST \
  --url https://zeus-sandbox.autorizou.dev/api/v1/subscriptions/cancel \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "subscription_id": "<string>",
  "cancelation_requested_at": "<string>",
  "canceled_reason": "<string>",
  "cancelable_type": "<string>",
  "cancelable_id": 123
}
'
{
  "message": "Os dados fornecidos são inválidos",
  "errors": {
    "subscription_id": ["A assinatura não existe"],
    "cancelation_requested_at": [
      "O campo cancelation_requested_at é obrigatório"
    ],
    "cancelable_type": ["O campo cancelable_type é obrigatório"],
    "cancelable_id": ["O campo cancelable_id é obrigatório"]
  }
}
Permite cancelar uma assinatura ativa. O cancelamento será agendado para a data da próxima cobrança, garantindo que o cliente tenha acesso até o fim do período pago.
Importante: O cancelamento não é imediato. A assinatura será cancelada na data da próxima cobrança (next_charge_at), permitindo que o cliente aproveite o período já pago.

Parâmetros da Requisição

subscription_id
string
required
UUID da assinatura a ser cancelada Formato: UUID válido Exemplo: "550e8400-e29b-41d4-a716-446655440000"
cancelation_requested_at
string
required
Data/hora em que o cancelamento foi solicitado Formato: ISO 8601 Exemplo: "2024-01-15T14:30:00Z"
canceled_reason
string
Motivo do cancelamento (opcional) Exemplos: "Cliente solicitou", "Mudança de plano", "Insatisfação com o serviço"
cancelable_type
string
required
Tipo de entidade que está cancelando Exemplos: "App\\Models\\User", "App\\Models\\Admin", "System"
cancelable_id
integer
required
ID da entidade que está cancelando Exemplo: 42 (ID do usuário ou admin)

Exemplos de Requisição

curl -X POST https://zeus-sandbox.autorizou.dev/api/v1/subscriptions/cancel \
  -H "Authorization: Bearer 4eC39HqLyjWDarjtT1zdp7dc" \
  -H "Content-Type: application/json" \
  -d '{
    "subscription_id": "550e8400-e29b-41d4-a716-446655440000",
    "cancelation_requested_at": "2024-01-15T14:30:00Z",
    "canceled_reason": "Cliente solicitou cancelamento",
    "cancelable_type": "App\\Models\\User",
    "cancelable_id": 42
  }'

Resposta

message
string
Mensagem de sucesso ou erro do cancelamento

Exemplos de Resposta

200 OK - Sucesso
{
  "message": "Assinatura cancelada com sucesso"
}
500 Internal Server Error - Erro
{
  "message": "Erro ao cancelar assinatura"
}

Códigos de Status

{
  "message": "Os dados fornecidos são inválidos",
  "errors": {
    "subscription_id": ["A assinatura não existe"],
    "cancelation_requested_at": [
      "O campo cancelation_requested_at é obrigatório"
    ],
    "cancelable_type": ["O campo cancelable_type é obrigatório"],
    "cancelable_id": ["O campo cancelable_id é obrigatório"]
  }
}

Fluxo de Cancelamento

O que acontece ao cancelar?

  1. Status atualizado para cancelation_requested
  2. Data de cancelamento definida para next_charge_at (próxima cobrança)
  3. Cliente mantém acesso até a data de cancelamento
  4. Cobranças futuras são automaticamente canceladas
  5. Webhook enviado informando o cancelamento

Timeline do Cancelamento

Hoje (15/01)          Próxima Cobrança (10/02)
    │                           │
    │  Solicitação              │  Cancelamento
    │  de Cancelamento          │  Efetivo
    ▼                           ▼
    ●───────────────────────────●
         Cliente tem acesso

Próximos Passos

Após cancelar uma assinatura:
  1. Envie email de confirmação ao cliente
  2. Configure webhook para evento subscription.canceled
  3. Revogue acessos na data de canceled_at
  4. Considere pesquisa de satisfação para entender motivo