Google Play 선불 요금제 환불은 구독과 다른 규칙을 따르며, 충전 확인을 한 번만 놓쳐도 요금제 전체가 취소될 수 있습니다
선불 요금제는 자동 갱신되지 않으므로 고객이 해지할 수 없고, 대신 충전을 합니다. Google Play 선불 요금제 환불이 어떻게 결정되는지, 확인하지 않은 충전이 어떤 손실을 낳는지, 어떤 API 호출이 무엇을 환불하는지 알아봅니다.

핵심 요약
- Google Play 선불 요금제는 정해진 결제 기간 동안 이용 권한을 제공하며 스스로 갱신되지 않습니다. 고객은 충전을 구매해 기간을 연장하며, Google은 선불 요금제가 만료일까지 그대로 유지될 뿐이므로 해지할 수 없다고 설명합니다.
- Google Play 선불 충전은 매번 새 구매 토큰이 발급되는 새로운 구매이며, 이전 토큰은 linkedPurchaseToken 필드에 담겨 옵니다. Google은 충전할 때마다 SUBSCRIPTION_PURCHASED 알림을 보냅니다.
- Google Play는 개발자가 모든 선불 구매와 충전을 확인하도록 요구합니다. 1주 이상인 요금제는 3일, 1주 미만인 요금제는 요금제 기간의 절반이 주어지므로 3일짜리 요금제는 1.5일입니다.
- 개발자가 Google Play 선불 충전의 확인 기한을 놓치면 Google은 해당 충전을 취소하고, 남은 구독을 취소 및 해지한 뒤 사용자에게 환불합니다.
- Google Play 고객센터는 사용하지 않은 선불 요금제는 환불받을 수 있으며, 구매 후 48 시간이 지나서 들어온 환불 요청은 개발자에게 넘어간다고 고객에게 안내합니다.
- Google은 purchases.subscriptionsv2.revoke의 fullRefund 옵션을 각 항목의 가장 최근 청구 금액을 환불하는 것으로 설명합니다. 따라서 충전을 거친 선불 요금제에서는 고객이 지금까지 구매한 모든 충전이 아니라 가장 최근 청구가 대상이 됩니다.
- 2026년 8월 3일 이후에 접수된 Google Play 주문의 경우, 지불 거절에서 패소하면 개발자는 Play 서비스 수수료를 뺀 구매 금액과 은행의 지불 거절 수수료를 부담합니다. 이는 다른 주문과 마찬가지로 선불 충전에도 적용됩니다.
Google Play 충전 한 건의 확인을 놓치면 Google은 그 충전만 환불하고 끝내지 않습니다. 충전을 취소하고, 고객의 선불 요금제 나머지까지 취소 및 해지한 뒤 환불을 진행합니다. 이것이 Google Play 선불 요금제 환불에서 가장 위험한 지점이며, 전적으로 개발자가 통제할 수 있는 부분이기도 합니다. 그 밖의 선불 요금제 환불 양상은 일반 구독과 비슷하지만, 구현 방식과 손실 규모를 바꾸는 몇 가지 차이가 있습니다.
Google Play 선불 요금제는 자동 갱신 구독과 어떻게 다른가
선불 요금제는 정해진 결제 기간 동안의 이용 권한을 판매하고 그 뒤에는 멈추는 기본 요금제입니다. Google의 Play Console 고객센터에 따르면 사용자는 해당 기간의 이용 권한을 얻기 위해 요금제를 구매하고, 계속 이용하려면 충전으로 종료일을 연장합니다. 충전은 같은 구독에 속한 어떤 선불 기본 요금제든 될 수 있으며, 기간이 달라도 됩니다. Google이 직접 든 예시에서는 $59.99 충전으로 요금제를 1년 연장합니다.
갱신되는 것이 없으니 해지할 것도 없습니다. Google의 결제 문서에 따르면 선불 요금제는 해지할 수 없고, 그만두려는 사용자는 요금제가 만료일에 도달하도록 두기만 하면 됩니다. 선불 요금제의 구독 상태는 ACTIVE, PENDING, CANCELED 중 하나뿐이며 expiryTime은 항상 존재합니다.
선불 요금제는 정기 결제가 제한된 지역에서 가장 중요합니다. RevenueCat의 가이드는 인도를 예로 듭니다. 인도에서는 Reserve Bank of India(인도 중앙은행) 규정 때문에 Google이 신규 고객의 자동 갱신 요금제 구독을 중단했으며, 가이드는 이런 시장에는 선불 요금제가 당연한 선택이라고 말합니다.
| 자동 갱신 기본 요금제 | 선불 기본 요금제 | |
|---|---|---|
| 자동 갱신 | 예 | 아니요, 사용자가 충전을 구매 |
| 사용자 해지 가능 여부 | 예 | 아니요, expiryTime까지 유지 |
| 무료 체험 및 혜택 | 예 | 아니요, 혜택은 자동 갱신 기본 요금제 전용 |
| 새 구매 토큰 | 업그레이드, 다운그레이드, 재구독 시 | 충전할 때마다 |
| 확인 | 새 구매마다 3일 이내 | 1주 이상 요금제는 3일, 더 짧은 요금제는 기간의 절반 |
| 일시중지 가능 여부 | 예 | 아니요 |
충전은 한 건 한 건이 별도의 구매
Google은 충전할 때마다 새 구매 토큰을 발급하고, 새 구매의 linkedPurchaseToken에 이전 토큰을 넣습니다. 또한 충전마다 SUBSCRIPTION_PURCHASED 실시간 개발자 알림을 보냅니다. 충전은 누적됩니다. 사용자가 일찍 충전하면 추가된 기간은 오늘이 아니라 기존 만료일 뒤에 더해집니다. 사용자는 소진되지 않은 충전을 한 번에 하나만 보유할 수 있으며, 다음 충전이 언제 가능한지는 prepaidPlan.allowExtendAfterTime으로 알 수 있습니다.
선불 환불은 확인 기한에서 시작된다
사용자가 매번 구매 흐름을 거치기 때문에, 모든 충전을 포함한 모든 선불 구매를 확인해야 합니다. Google은 1주 이상인 요금제에 3일을 줍니다. 1주 미만인 요금제는 기간의 절반이 주어지므로, 3일짜리 요금제는 1.5일 이내에, 1일짜리 요금제는 12 시간 이내에 확인해야 합니다.
그래서 짧은 선불 요금제는 보기보다 위험합니다. 주간 또는 월간 자동 갱신 요금제는 매번 똑같이 3일을 줍니다. 1일짜리 선불 이용권은 12 시간만 주며, 그보다 긴 백엔드 장애가 생기면 결제한 고객이 자동 환불로 바뀝니다. RevenueCat의 가이드도 같은 점을 지적하며, 기본 요금제가 1일이나 3일뿐일 때는 두 번째 주문을 신속하게 확인해야 한다고 경고합니다.
선불 요금제 환불은 누가 결정하는가
Google Play 선불 요금제 환불 대부분은 개발자 없이 결정됩니다. Google의 환불 정책에 따르면, 사용자는 구독을 포함한 인앱 구매 후 48 시간 이내라면 세부 사항에 따라 환불을 받을 수 있습니다. 48 시간이 지나면 사용자는 개발자에게 문의하라는 안내를 받고, 개발자는 자체 정책과 관련 법률에 따라 환불을 처리할 수 있습니다. Google의 구독 고객센터 페이지에는 선불 요금제에 관한 문장이 하나 더 있습니다. 요금제를 사용하지 않았다면 사용자가 환불을 요청할 수 있다는 것입니다.
| 환불 경로 | 결정 주체 | 대응 가능 여부 | 기한 |
|---|---|---|---|
| 구매 또는 충전 후 48 시간 이내 요청 | 아니요 | 없음 | |
| 48 시간 이후 요청 | 개발자, 자체 정책과 현지 법률에 따라 | 해당 없음 | Google이 정한 기한 없음 |
| 확인되지 않은 구매 또는 충전 | 자동 | 아니요 | 3일, 1주 미만 요금제는 기간의 절반 |
| 개발자 검토 대상으로 지정된 지불 거절 | Google, 이후 은행 | 예, orders.reviewrefund로 | 24 시간 |
| 개발자 검토 없는 지불 거절 | 은행 | 아니요 | 없음 |
선불 요금제라고 지불 거절 규칙이 바뀌지는 않습니다. Google이 분쟁에 대한 개발자 측 입장을 요청하면 orders.reviewrefund로 24 시간 안에 답변할 수 있으며, 은행이 판정을 내리면 그 결정은 최종입니다.
선불 요금제에서 어떤 API 호출이 무엇을 환불하는가
요청이 개발자에게 넘어오면 서버 측 도구가 두 가지 있는데, 두 도구가 환불하는 대상은 같지 않습니다.
orders.refund는 주문을 한 건씩 처리
orders.refund는 구독 또는 인앱 주문을 주문 ID로 환불합니다. revoke를 true로 설정하면 이용 권한이 즉시 종료됩니다. Google은 3년이 지난 주문은 환불하지 않습니다. 충전은 각각 별도의 구매이므로, 특정 충전에 해당하는 주문을 환불하는 것이 그 충전만 정확히 환불하는 방법입니다.
purchases.subscriptionsv2.revoke는 구독 전체에 작용
purchases.subscriptionsv2.revoke는 구독을 종료하며 revocationContext를 받습니다. Google은 fullRefund를 각 항목의 가장 최근 청구 금액 전액을 환불하는 것으로, proratedRefund를 남은 기간에 따라 비례 금액을 환불하는 것으로 설명합니다. 두 번 충전한 요금제라면 가장 최근 청구는 마지막 충전입니다. 고객에게 잔액 전체를 돌려주겠다고 약속하기 전에 이 점을 고려하세요.
고객이 아직 받아야 할 이용 권한을 빼앗지 마세요
Google의 결제 문서는 사용자에게 아직 이용 권한이 있는 동안 구독 접근을 제거하는 것은 Google Play 구독 정책 위반이라고 경고합니다. 선불 요금제에서는 결제한 기간 자체가 이용 권한입니다. 가장 최근 충전만 환불한다면, 이전에 결제한 기간도 취소하고 환불하는 경우가 아닌 이상 그 기간은 계속 유지하세요.

선불 요금제 환불로 잃는 것
선불 고객은 정해진 기간에 대한 요금을 미리 냈고, 개발자는 고객이 이용 권한을 얻은 순간부터 그 고객을 위해 비용을 쓰기 시작했습니다. 환불은 고객의 돈을 돌려주지만, 그 지출은 그대로 남습니다.
- 컴퓨팅: 결제 기간 동안 고객이 실행한 모든 세션, 동기화, 서버 측 작업은 이미 비용을 지불한 용량입니다.
- API 호출: 음성, 번역, 지도, 모델 추론 등 요청 단위로 과금되는 서드파티 서비스 비용은 그대로 청구됩니다.
- 스토리지: 고객이 만든 파일과 기록은 삭제할 때까지 스토리지 요금에 계속 남습니다.
- 지급금: 구매와 연결된 수익 배분, 크리에이터 지급금, 추천 수수료는 이미 계좌에서 빠져나갔습니다.
확인을 놓친 경우가 가장 비쌉니다. $59.99짜리 1년 충전의 확인이 늦어지면 $59.99만 되돌려지는 것이 아닙니다. Google이 남은 요금제까지 취소하므로, 고객은 이미 결제한 이용 권한을 잃고 환불을 받으며, 개발자가 고객에게 서비스하느라 들인 모든 비용은 이미 쓴 채로 남습니다.
선불 요금제 구현 체크리스트
- 첫 구매만이 아니라 모든 충전을 서버에서 확인하고, 몇 시간이 지나도 확인되지 않은 구매가 있으면 알림을 보내세요.
- 짧은 요금제에는 별도의 알람을 설정하세요. 1일 요금제는 12 시간, 3일 요금제는 1.5일밖에 없습니다.
- 모든 주문 ID와 구매 토큰을 저장하고 linkedPurchaseToken을 따라가, 한 고객 뒤에 있는 충전 이력 전체를 볼 수 있게 하세요.
- 구매 토큰은 일찍 처리하세요. Google에 따르면 토큰은 만료 후 60일까지만 유효하며, 그 뒤에는 Developer API가 받아들이지 않습니다.
- 충전 한 건을 환불할 때는 해당 충전의 주문에 orders.refund를 사용하고, fullRefund가 이전 충전까지 포함한다고 가정하지 마세요.
- 구매별로 사용량을 기록해 두면 지불 거절 검토에서 24 시간 기한 안에 실질적인 답변을 할 수 있습니다.
- SUBSCRIPTION_REVOKED를 받으면 요금제 상태가 만료로 바뀌므로 즉시 이용 권한을 회수하세요.
자주 묻는 질문
- 고객이 Google Play 선불 요금제를 해지할 수 있나요?
- 아니요. Google에 따르면 선불 요금제는 자동 갱신되지 않으므로 해지할 수 없습니다. 요금제는 만료일까지 유지되며, 고객은 그때까지 이용 권한을 가집니다. 결제를 멈추려면 다음 충전을 구매하지 않으면 됩니다.
- 고객이 Google Play 선불 요금제를 환불받을 수 있나요?
- 예. Google 고객센터에 따르면 사용하지 않은 선불 요금제는 환불받을 수 있으며, 요청이 48 시간 이내에 들어오면 Google은 구독을 포함한 모든 인앱 구매를 환불할 수 있습니다. 48 시간이 지나면 Google은 고객을 개발자에게 안내하고, 개발자는 자체 정책과 현지 법률에 따라 환불합니다.
- 선불 충전을 확인하지 않으면 어떻게 되나요?
- Google은 해당 충전을 취소하고, 남은 구독을 취소 및 해지한 뒤 사용자에게 환불합니다. 1주 이상인 요금제는 3일 이내에, 더 짧은 요금제는 기간의 절반 이내에 확인해야 하므로 3일짜리 요금제는 1.5일입니다.
- 선불 요금제에 fullRefund를 실행하면 모든 충전이 환불되나요?
- Google의 설명에 따르면 그렇지 않습니다. purchases.subscriptionsv2.revoke의 fullRefund 옵션은 각 항목의 가장 최근 청구 금액 전액을 환불합니다. 충전은 각각 자체 주문이 있는 별도의 구매이므로, 특정 충전을 환불하려면 해당 주문에 orders.refund를 사용하세요.
- 선불 요금제도 무료 체험을 지원하나요?
- 아니요. Google의 Play Console 고객센터에 따르면 무료 체험과 첫 구매 할인가를 포함한 혜택은 자동 갱신 기본 요금제에만 만들 수 있습니다. 선불 요금제는 구매할 때와 충전할 때마다 전액을 결제합니다.
출처 및 추가 자료
- Google Play Billing: Subscription lifecycle (prepaid plans, top-ups, acknowledgement)
- Play Console Help: Understanding subscriptions
- Google Play Help: Cancel, pause, or change a subscription on Google Play
- Google Play Help: Apps, games, and in-app purchases refund policies
- Google Play Developer API: orders.refund
- Google Play Developer API: purchases.subscriptionsv2.revoke
- Google Play Developer API: orders.reviewrefund
- Play Console Help: Updates to refund protection and chargeback cost responsibility
- RevenueCat: Google prepaid plans
RefundHalt
App Store와 Google Play 환불 자동 처리
계속 읽기
과도한 환불 요청은 환불액보다 더 큰 손실을 부릅니다. 두 앱 스토어 모두 이를 품질 신호로 보기 때문입니다
Apple 가이드라인 5.6.4는 과도한 환불 요청을 앱이 품질 기준에 미달한다는 징후로 꼽고, Google의 개발자 배포 계약은 환불률을 근거로 신규 개발자의 앱을 삭제할 수 있게 합니다. 각 스토어가 무엇이라고 규정하는지, 삭제되면 무엇을 잃는지, 위험을 어떻게 피하는지 정리했습니다.
환불을 처리하기 전에 App Store 서버 알림을 검증하세요. 누구나 웹훅 URL로 요청을 보낼 수 있습니다
환불 알림은 서명을 확인하기 전까지는 하나의 HTTPS 요청에 불과합니다. App Store 서버 알림과 Google Play RTDN 메시지를 검증하는 방법, 각 스토어가 무엇에 서명하는지, 그리고 위조된 환불이나 잘못 거부된 환불이 어떤 비용을 초래하는지 설명합니다.