2026-08-10

구독 취소, 즉시 해지 vs 기간 만료 후 해지 — 무엇을 기본값으로 할까

"구독 취소" 버튼 하나에도 설계 선택지가 갈립니다. 지금 당장 서비스 접근을 끊을지, 아니면 이미 결제한 기간이 끝날 때까지는 이용하게 해줄지 — 이 결정에 따라 환불 정책, 웹훅 이벤트 시점, 배치 로직이 전부 달라집니다.

기본값은 "기간 만료 후 해지"여야 하는 이유

이미 결제한 한 달치 요금을 환불 없이 즉시 끊어버리면, 고객 입장에서는 "돈은 냈는데 서비스는 못 쓰는" 상황이 됩니다. 이는 대부분의 구독 서비스(Netflix, Spotify 포함)가 채택하는 방식과도 어긋나고, 환불 요청·컴플레인으로 이어지기 쉽습니다. 그래서 기본값은 "취소는 예약이고, 실제 해지는 현재 결제 주기가 끝나는 시점에 일어난다"입니다.

  • 취소 요청 시점: cancel_at_period_end = true 플래그만 세팅, 즉시 상태 변화 없음
  • 다음 결제일 도래 시: 결제를 시도하지 않고 구독 상태를 canceled로 전환

이 방식의 장점은 취소 "예약"과 실제 "해지 실행"이 분리되어 있어, 고객이 마음을 바꿔 취소를 철회하는 것도 플래그 하나만 되돌리면 되는 단순한 작업이 된다는 점입니다.

즉시 해지가 필요한 예외 상황

다만 모든 취소가 예약형이어야 하는 건 아닙니다.

  • 결제 실패가 반복된 강제 해지: 던닝 재시도가 모두 실패한 경우는 유예 기간을 더 줄 이유가 없으므로 즉시 해지합니다.
  • 환불 요청을 동반한 취소: 법적으로 청약철회 기간(예: 결제 후 7일 이내) 내라면 즉시 해지 + 환불이 원칙에 맞습니다.
  • 부정 사용 탐지: 도난 카드 등으로 결제된 것이 확인되면 예약 없이 즉시 끊어야 합니다.

즉, "구독 취소"라는 하나의 액션이 아니라 최소 두 가지 내부 상태 전이(예약 취소, 강제 즉시 해지)를 구분해 설계하는 것이 맞습니다.

웹훅 이벤트는 언제 쏴야 할까

subscription.canceled 웹훅은 취소를 "요청한" 시점이 아니라 실제로 서비스 접근이 끊기는 시점에 발송해야 고객사 쪽에서 오작동이 없습니다. 취소 예약 시점에는 별도로 상태 조회 API나 대시보드에서 "예약된 취소일"을 보여주는 정도로 충분합니다. 웹훅 이벤트 전반의 설계 원칙은 정기결제 웹훅, 어떤 이벤트를 설계해야 할까에서 더 자세히 다룹니다.

전체 구독결제 연동 흐름이 궁금하다면 구독결제 연동 완전 가이드를 확인하세요.

3분만에 구독결제 연동해보기

요금제 설계부터 웹훅 등록까지, 슈퍼빌링으로 바로 시작할 수 있습니다.

무료로 시작하기

이메일만 입력하면 바로 가입·로그인이 끝나요