Assinaturas

Cancelar uma assinatura

POST /v1/subscriptions/{subscriptionId}/cancel

POST /v1/subscriptions/{subscriptionId}/cancel

Cancela uma assinatura. Por padrão o cancelamento ocorre no fim do período vigente (o ciclo atual segue válido e nenhum novo ciclo é agendado). Para encerrar imediatamente, envie immediately: true. Retorna a assinatura atualizada. Ciclos já cobrados não são reembolsados automaticamente.

Requisição

curl -X POST "https://api.selectwin.io/v1/subscriptions/subs_01hqzvabc/cancel" \
  -H "SelectKey: sk_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "Cliente solicitou cancelamento", "immediately": false }'

Corpo da requisição

CampoTipoObrigatórioDescrição
reasonstringNãoMotivo do cancelamento (máx. 255)
immediatelybooleanNãotrue cancela na hora (status → canceled, ciclos abertos cancelados); ausente/false cancela no fim do período (mantém o status atual e desliga a renovação)

Resposta 200 OK

Retorna o objeto completo da assinatura (mesma estrutura de Consultar). Com immediately: true, status passa a canceled imediatamente.

{
  "id": "subs_01hqzvabc",
  "status": "canceled",
  "method": "credit",
  "type": "recurring",
  "currentCycle": { "id": "scy_01hqzvabc", "cycle": 1, "status": "canceled", "startDate": "2026-04-01T00:00:00.000Z", "endDate": "2026-05-01T00:00:00.000Z", "dueDate": "2026-04-01T00:00:00.000Z", "billedAt": null, "updatedAt": "2026-04-12T17:56:33.000Z", "createdAt": "2026-04-01T00:00:00.000Z" },
  "customer": { "id": "cus_01hqzvabc", "firstName": "João", "lastName": "Silva", "email": "[email protected]" },
  "billing": { "frequency": "monthly", "frequencyCount": 1, "endDate": null, "exactDay": null, "freeTrialDays": null, "address": { "city": "São Paulo", "state": "SP", "country": "BR" } },
  "items": [ { "id": "sit_01hqzvabc", "name": "Premium Plan", "enabled": true, "pricingSchema": "recurring", "unitPrice": 9900, "quantity": 1, "currency": "BRL" } ],
  "externalReference": "ORDER-123",
  "metadata": { "campaign": "launch" },
  "updatedAt": "2026-04-12T17:56:33.000Z",
  "createdAt": "2026-04-12T17:56:33.000Z",
  "merchant": { "name": "Seller Name", "merchantId": "bus_1234567890", "isSubAccount": false }
}

A confirmação de cancelamento dispara o webhook subscription.canceled.

Notas

  • Para pausar temporariamente em vez de cancelar, use POST /v1/subscriptions/{id}/pause (e POST /v1/subscriptions/{id}/resume para retomar). A assinatura entra em paused e pode voltar a active.
  • Reembolsos de transações de ciclos já cobrados são feitos pelo recurso de Transações, individualmente.

Erros

error.codeHTTPQuando
subscriptionNotFound404Assinatura inexistente
subscriptionAlreadyCanceled422A assinatura já está cancelada

How is this guide?

On this page