본문으로 건너뛰기
App Store Refund Management

App Store 환불과 매출 누수: 개발자가 알아야 할 것

App Store 환불이 어떻게 매출 누수로 이어지는지, 그리고 환불로 인한 손실을 모니터링하고 관리하고 줄이기 위해 개발자가 무엇을 할 수 있는지 알아보세요.

5 min read
App Store 환불과 매출 누수: 개발자가 알아야 할 것

제 고객 한 분은 우연히 누수를 발견했습니다. 자체 데이터베이스에는 2월 매출이 $11,400로 찍혀 있었습니다. App Store Connect의 재무 보고서에는 $10,650이었습니다. 장애가 난 것도 아니고, 알림이 울린 것도 아니었습니다. 약 $750가 환불 한 건씩 조용히 문밖으로 빠져나갔고, 그는 그 사실을 대략 5주가 지나서야 알게 되었습니다.

App Store 환불 결정은 전부 Apple이 내립니다. 그 결정 과정에 개발자의 자리는 없습니다. 대신 주어지는 것은 Apple 앞에 증거를 제시할 수 있는 좁은 창구 하나뿐이고, 그마저도 서버가 실제로 듣고 있어야만 열립니다. 개발자를 위한 Apple App Store 환불에 관한 글 대부분이 이 부분을 대충 넘기는데, 아쉬운 일입니다. 개발자가 통제할 수 있는 유일한 부분이기 때문입니다. 이 창구 자체에 대한 자세한 설명은 여기서 다룹니다: Apple의 CONSUMPTION_REQUEST가 환불을 결정하는 방식.

핵심 요약

  • 결정은 Apple이 합니다. 개발자는 환불을 해줄 수도, 막을 수도, 심지어 고객 이름을 볼 수도 없습니다.

  • 개발자가 낼 수 있는 유일한 의견은 CONSUMPTION_REQUEST에 대한 회신이며, 약 12시간 안에 도착해야 합니다.

  • App Store 환불로 인한 매출 손실은 여러 겹으로 쌓입니다. 환불 자체는 첫 번째 층일 뿐입니다.

  • RevenueCat에 따르면 구독 환불률 중앙값은 3%에서 5% 사이입니다. 이상치는 9%에서 18%에 이릅니다.

  • 재미없는 해결책이 가장 저렴한 해결책이기도 합니다. 알림을 수신하고, 자동으로 답하고, 돈이 돌아가면 이용 권한을 끊으면 됩니다.

개발자 입장에서 본 App Store 환불의 모습

누군가 reportaproblem.apple.com에 접속해 로그인하고, 최근 90일 이내의 구매 건을 고른 뒤 사유를 선택하고 제출 버튼을 누릅니다. Apple이 이를 읽습니다. Apple이 판정합니다.

미리 알림을 요청해 두지 않았다면 아무 소식도 듣지 못합니다. App Store Connect에는 환불 버튼도, 대기 중인 요청 목록도, 회신할 고객 이메일 주소도 없습니다. App Store Server Notifications V2를 켜 두었다면, 요청이 접수되는 순간 CONSUMPTION_REQUEST가 엔드포인트에 도착하며, 여기에는 거래 정보, 제품, 고객이 선택한 사유가 담겨 있습니다. 그 시점부터 약 12시간 안에 Send Consumption Information 엔드포인트로 다섯 가지 항목을 보내야 합니다. 사용자가 동의했는지, 구매 항목이 전달되었는지, 샘플이 있었는지, 얼마나 사용했는지, 그리고 어떤 결과를 원하는지입니다.

실제 사용량 수치로 답하면 근거 없는 주장은 꽤 자주 거절됩니다. 아무 답도 하지 않으면 Apple은 고객 측 설명과 그 계정의 이력을 근거로 판단합니다. 여기서는 침묵도 하나의 답변으로 취급되며, 대부분의 팀이 내놓는 답이 바로 그 침묵입니다.

환불이 실제로 처리되면 취소 날짜가 첨부된 REFUND 알림을 받게 됩니다. 이것이 사용자의 이용 권한을 꺼야 한다는 신호입니다. 그리고 여기서부터 비용이 큰 부분이 시작됩니다.

App Store 환불이 매출 손실을 일으키는 방식

숫자는 하나가 아닙니다. 네 개이고, 그중 세 개는 환불 보고서에 절대 나타나지 않습니다.

환불 자체. 결제 금액이 다음 정산에서 차감됩니다. Apple의 Paid Applications Agreement에는 환불된 판매 건에 대해서도 Apple이 수수료를 가져갈 수 있다고 명시되어 있고, 이 조항은 오랫동안 많은 사람을 불안하게 했습니다. 실제로 지급 보고서를 꼼꼼히 살펴본 개발자들에 따르면 Apple이 차감하는 것은 정가 전체가 아니라 수수료를 제한 몫입니다. 개발자의 몫은 잃습니다. Apple의 몫은 대개 그렇지 않습니다.

아무도 끊지 않는 이용 권한. Apple 쪽에서 돈이 나가는 것과 이용 권한이 종료되는 것은 별개의 이벤트이며, 둘 중 저절로 일어나는 것은 하나뿐입니다. REFUND 알림을 놓치면 사용자는 Pro 기능을 계속 씁니다. 무료로요. $59.99 연간 플랜에서 누군가 알아차리기까지 4개월이 흐른 경우도 봤습니다. 이 문제 전체는 환불 후 이용 권한 회수하기에서 다뤘습니다.

리포팅. 환불은 구매 후 몇 주가 지나서, 때로는 결제 주기를 넘겨서 나타납니다. 매출을 발생한 주에 집계하고 나중에 환불된 금액을 빼지 않으면 LTV가 조용히 부풀려집니다. 그러면 감당할 수 없는 CAC로 트래픽을 사들이고는 왜 코호트가 회수되지 않는지 의아해하게 됩니다.

광고비. 그 사용자를 데려오는 데 돈을 썼습니다. 그런데도 환불했습니다. 그 돈은 사라졌고, dashboard의 어떤 수치도 그 사실을 알려주지 않습니다.

정상적인 환불률은 어느 정도인가

벤치마크가 유용한 이유는 하나입니다. 진짜 문제가 있는지, 아니면 흔한 수준인지 알 수 있다는 점입니다. RevenueCat의 State of Subscription Apps는 75,000개 이상의 앱을 다루며, 첫 결제 주기의 유료 구독 환불률 중앙값을 약 3%에서 5%로 제시합니다. 이상치는 9%에서 18%에 이릅니다.

흥미로운 구분은 가격대입니다. 저가 플랜의 중앙값은 2.7% 부근이고, 고가 플랜은 4.5% 정도입니다. 가격 단계가 하나 올라갈 때마다 대략 1%포인트씩 더해지는 셈입니다. 연간 플랜은 주간 플랜보다 환불이 많은데, 이는 당연한 일입니다. $79 결제는 $4.99 결제와는 다른 기대치를 만들어냅니다.

새 고객사의 수치를 계산할 때 제가 쓰는 방법은 이렇습니다.

  1. 환불 내역에서 최근 90일간의 환불 거래를 가져옵니다.

  2. 각 건을 환불된 달이 아니라 원래 구매가 일어난 달로 되돌려 넣습니다.

  3. 같은 달의 유료 거래 수로 나눕니다.

  4. 제품별로 나눕니다. 문제 있는 페이월 하나는 늘 건강해 보이는 평균 뒤에 숨어 있습니다.

2% 미만이면 좋은 편입니다. 2%에서 5%는 정상입니다. 5%를 넘으면 원인을 파기 시작하세요. 10%를 넘으면 마케팅 탓은 그만두고 페이월 문구를 소리 내어 읽어 보세요.

App Store 환불 예방: App Store 환불을 줄이는 방법

스위치 하나로 해결되지 않습니다. 작은 판단이 쌓여야 하고, 그중 몇 가지는 나머지보다 훨씬 중요합니다.

모든 CONSUMPTION_REQUEST에 답하세요. 가장 큰 지렛대이자 거의 모두가 건너뛰는 부분입니다. 평생 이용권을 90% 써 놓고 작동한 적이 없다고 주장하는 사람이 있다면? 거절하고 사용량을 보여 주세요. 아이가 실수로 $29.99짜리 팩을 산 부모라면? 그 건은 그냥 보내 주세요. 두 경우 모두 회신 기록이 남아 있어야 합니다.

첫 세션에서 뭔가를 전달하세요. 환불은 초반에 몰립니다. 신규 사용자가 페이월에 닿기 전에 실질적인 결과를 하나도 얻지 못한다면, 여러분이 판 것은 약속에 불과합니다.

갱신 조건을 분명히 밝히세요. 가격, 기간, 갱신일을 구매 버튼과 같은 화면에 두세요. 환불 사유 대부분은 결국 '예상 못 했다'는 것이고, 그 예상 밖의 경험은 디자인의 선택입니다.

체험판이나 샘플을 제공하세요. Apple의 소비 정보 양식은 말 그대로 체험판이 있었는지 묻습니다. '있었다'고 답할 수 있으면 주장에 힘이 실리고, 망설이는 사용자에게는 더 부담 없는 진입로가 생깁니다.

지원 창구를 열어 두세요. 눈에 띄는 문의 링크와 앱 내 환불 요청 시트를 함께 두면 불만이 있는 사용자가 Apple로 가기 전에 여러분에게 먼저 옵니다. 이 시트는 iOS 15부터 제공되었습니다. 환불을 승인할 수는 없고, 요청을 시작할 수만 있습니다.

돈이 돌아가면 이용 권한을 끊으세요. REFUND와 REFUND_REVERSED를 처리하고, 환불이 취소되면 권한을 다시 돌려주어 Apple의 결정 번복 때문에 선의의 고객이 불이익을 받지 않게 하세요.

상습 환불 사용자를 주시하세요. Apple의 Get Refund History 엔드포인트는 사용자와 연결된 모든 환불 거래를 보여 줍니다. 같은 계정에 두 번째 체험판이나 할인을 제공하기 전에 확인하세요.

12시간의 문제

알림은 토요일 새벽 3시에 도착합니다. 제대로 답하려면 Apple의 JWS 서명 체인을 루트 인증서로 검증하고, 거래를 자체 데이터베이스의 실제 사용자와 대조하고, 소비 비율을 밀리유닛 단위로 계산하고, In-App Purchase 키로 단기 JWT를 발급해서 제출해야 합니다. 시간이 끝나기 전에. 매번 빠짐없이.

Sandbox에서는 12시간 대신 5분이 주어지는데, 이는 Apple이 개발자에게 무엇을 기대하는지에 대한 꽤 노골적인 힌트로 읽힙니다. 서버입니다. 노트북을 든 사람이 아니라.

그런 파이프라인을 직접 구축하고 싶지 않은 팀은 Refund Sensor를 사용합니다. 이미 갖고 있는 스토어 키로 동작하며, 각 요청에 거래 증거를 담아 제한 시간 안에 넉넉히 답하고, 지켜낸 금액을 누적 집계합니다. 설정에는 5분 정도 걸리고, SDK도, 코드 변경도, 앱 재심사 제출도 필요 없습니다.

다른 도구를 비교 중이신가요? 개발자를 위한 Apple 환불 관리 소프트웨어 선택 방법에서 비교 기준을 다룹니다.

출처

자주 묻는 질문

아니요. 결제 관계는 Apple이 갖고 있으므로 돈을 돌려줄 수 있는 것은 Apple뿐입니다. 개발자가 할 수 있는 일은 두 가지입니다. 환불 요청에 증거를 첨부해 회신하거나, StoreKit의 환불 요청 시트를 통해 고객에게 Apple의 환불 양식을 직접 안내하는 것입니다.

고객에게는 48시간 이내에 답변을 받게 된다고 안내됩니다. 개발자에게 주어지는 시간은 훨씬 짧아서, CONSUMPTION_REQUEST 이후 약 12시간입니다.

계약서상으로는 그럴 권리가 있다고 되어 있습니다. 실제로는 App Store Connect 지급 보고서를 확인해 본 개발자들에 따르면 수수료를 제한 몫이 차감되므로, 전체 가격이 아니라 개발자가 번 만큼만 잃게 됩니다.

직접 처리하지 않는 한 아무 일도 일어나지 않습니다. Apple은 취소 날짜가 포함된 REFUND 알림을 보내고, 서버에서 해당 권한을 종료해야 합니다. 이를 놓치면 그 사용자는 Pro 기능을 무료로 계속 쓰게 됩니다.

RevenueCat이 75,000개 이상의 앱을 분석한 데이터에 따르면 구독 앱의 경우 유료 거래의 2%에서 5% 사이입니다. 건강, 피트니스, 교육 앱은 더 높은 편입니다. 10%를 넘는다면 다른 무엇보다 가격 정책과 페이월 문구부터 살펴보세요.

네, Apple이 환불을 되돌리는 경우에는 가능합니다. REFUND_REVERSED 알림을 받게 되며, 그때는 회수했던 권한을 다시 돌려주어야 합니다.

대개는 그렇습니다. $2.99짜리 소모성 아이템에 사람이 10분을 쓸 가치는 없습니다. 하지만 서버 시간 2초를 쓸 가치는 있고, 거래량이 많은 앱에서는 그런 소액 건이 금방 쌓입니다.

#Apple CONSUMPTION_REQUEST#App Store refund requests#Apple App Store refunds#Refund request response#App Store developer guide#Apple refund process
Refund SensorRefund Sensor TeamRefund defense for App Store and Google Play developers