Google Play 주문은 직접 환불할 수 있으며, 지불 거절이 되기 전에 처리하면 은행 수수료를 아낄 수 있습니다
3년 이내의 Google Play 주문이라면 어느 것이든 API 호출 한 번으로 환불할 수 있으며, 그때 접근 권한을 취소할지 여부도 선택할 수 있습니다. 분쟁이 지불 거절로 번지기 전에 직접 환불하면 2026년 8월 3일부터 개발자에게 부과되는 은행 수수료를 아낄 수 있습니다. 아래에서 orders.refund 사용법을 설명합니다.

핵심 요약
- Google Play Developer API의 `orders.refund` 엔드포인트를 사용하면 개발자가 일회성 구매나 구독 주문을 심사 없이, 사유 없이, 고객 요청 없이 직접 환불할 수 있습니다.
- 환불과 취소는 별개의 동작입니다. `orders.refund`는 선택적 `revoke` 플래그를 받습니다. 켜지 않으면 구매자가 접근 권한을 유지하고, true로 설정하면 Google이 해당 항목에 대한 접근을 즉시 종료합니다.
- 3년보다 오래된 주문은 Google Play Developer API로 환불할 수 없습니다. 그 기간이 지나면 해당 주문에는 영원히 손댈 수 없게 됩니다.
- `orders.refund`는 전액 환불만 발행합니다. 구독에 대한 일할 계산의 부분 환불에는 더 새로운 `purchases.subscriptionsv2.revoke` 엔드포인트를 `proratedRefund` 컨텍스트와 함께 사용해야 합니다.
- 구독 주문을 `revoke`를 true로 설정해 환불하면 `SUBSCRIPTION_REVOKED` Real-time Developer Notification이 트리거되므로, 백엔드는 다른 구독 이벤트를 알게 되는 것과 같은 방식으로 그 취소를 알게 됩니다.
- 2026년 8월 3일부터 지불 거절이 발생하면 Google은 구매 대금에 은행 수수료를 더해 개발자에게 청구합니다. 직접 발행하는 환불은 구매 대금만 돌려주므로, 전망이 좋지 않은 주문은 일찍 환불하는 편이 지불 거절이 되도록 두는 것보다 더 저렴할 수 있습니다.
- 개발자가 시작하는 환불은 여러분이 완전히 제어할 수 있는 유일한 Google Play 환불 흐름입니다. 48시간 셀프서비스 환불, 지원팀 환불, 무효화된 구매는 모두 여러분 없이 결정됩니다.
고객이 분쟁을 제기할 때까지 기다릴 필요는 없습니다. 돈을 돌려주고 싶다면 Google Play 주문을 직접 환불할 수 있습니다. API 호출 한 번, 또는 Play Console에서 두 번의 클릭이면 됩니다. Google은 이유를 묻지 않고, 여러분의 판단을 의심하지도 않습니다. 이것은 여러분이 버튼을 쥐는 유일한 환불 흐름이며, 분쟁이 은행 지불 거절로 굳어지기 전에 일찍 사용하는 것이 대개 가장 저렴한 출구입니다.
여러분이 실제로 제어하는 유일한 환불 흐름
Google Play의 대부분 환불은 여러분을 통해서가 아니라 여러분에게 일어납니다. 48시간 이내에 Google에 요청한 구매자는 개발자의 개입 없이 자동 셀프서비스 환불을 받습니다. 지원 담당자는 발행되는 순간 확정되는 환불을 승인할 수 있습니다. 은행 지불 거절은 카드 소유자와 그 은행 사이에서 결정됩니다. 이 모든 경우에서 여러분은 나중에 알게 되는 구경꾼입니다.
개발자 환불은 예외입니다. 여기서는 돈을 돌려주기로 결정하는 사람이 바로 여러분 자신이며, 여러분 자신의 일정에 따라, 여러분 자신의 이유로 진행합니다. 그것은 선의의 도구이자 고객 서비스 도구이며, 조용히 비용 관리 도구이기도 합니다. 그 동작을 정확히 아는 것이 이것을 비상 버튼에서 신중한 선택으로 바꿔 줍니다.
orders.refund가 한 번의 호출로 하는 일
Google Play Developer API의 orders.refund 메서드는 해당 주문이 일회성 인앱 구매든 구독 결제든 단일 주문을 환불합니다. 해당 주문의 환불 경로로 빈 POST를 보내고 서비스 계정으로 인증하면, 성공한 호출은 빈 본문을 반환합니다. 그것이 전체 메커니즘입니다.
revoke 플래그가 그들이 접근 권한을 유지할지를 결정한다
이 호출이 여러분에게 주는 유일한 선택은 revoke 쿼리 플래그입니다. Google의 참조 문서는 그 역할을 분명히 밝힙니다. true로 설정하면 해당 구독이나 인앱 항목에 대한 접근이 즉시 종료됩니다. 생략하면 돈은 돌아가고 고객은 구매한 것을 그대로 유지합니다. 이 하나의 불리언 값이 우호적인 환불과 깔끔한 취소의 차이입니다.
| 호출의 구성 요소 | 값 |
|---|---|
| 메서드와 경로 | POST /androidpublisher/v3/applications/{packageName}/orders/{orderId}:refund |
packageName | 여러분의 앱 id, 예를 들어 com.acme.app |
orderId | 구매 시 구매자에게 표시되는 주문 id |
revoke | 선택적 쿼리 플래그. true는 접근을 즉시 종료하고, 생략하면 환불하되 접근은 그대로 유지 |
| 요청 본문 | 비어 있음 |
| OAuth 범위 | https://www.googleapis.com/auth/androidpublisher |
기본은 전액 환불, 일할 계산은 구독만
orders.refund는 주문 전체 금액을 반환합니다. 부분 금액을 위한 필드는 없습니다. 구독의 일부를 돌려줘야 한다면 더 새로운 purchases.subscriptionsv2.revoke 엔드포인트를 사용하세요. 이는 취소 컨텍스트를 받아 기간 중 남은 시간을 기준으로 전액 환불이나 일할 환불 중 하나를 발행할 수 있습니다. 더 오래된 purchases.subscriptions.revoke는 전액 환불만 했으며, 그것이 v2 메서드가 존재하는 주된 이유입니다. 일회성 주문의 경우 2018년 3월 이후에 이루어진 구매는 Play Console 웹사이트를 통해 부분 환불이 가능하며, 유료 앱은 절대 불가능합니다.

3년의 벽과 그 밖의 제한
움직일 수 없는 경계는 경과 시간입니다. Google은 3년보다 오래된 주문은 환불할 수 없다고 분명히 밝힙니다. 주문이 그 선을 넘으면 이의 제기도 우회도 없으므로, 환불은 만료일이 붙은 결정입니다. 이 호출이 할 수 있는 것과 할 수 없는 것을 규정하는 몇 가지 다른 제한이 더 있습니다.
| 제한 | 의미 |
|---|---|
| 3년 기간 상한 | 3년보다 오래된 주문은 API로 환불할 수 없음 |
| 전액만 | orders.refund는 주문 전체 금액을 반환하며, 부분 금액은 결코 반환하지 않음 |
| 부분 환불 | 구독은 purchases.subscriptionsv2.revoke를 통해, 일회성 주문은 2018년 3월 이후 구매에 대해 Play Console을 통해 가능하며, 유료 앱은 불가능 |
| 되돌릴 수 없음 | 환불을 발행하면 취소할 수 없음 |
이것이 돈 면에서 무엇을 아껴 주는가
버튼을 누르기 전부터 모든 환불은 이미 손실입니다. 그 구매를 처리하기 위해 쓴 돈은 환불과 함께 돌아오지 않기 때문입니다. 구매자가 이미지를 생성했거나, 여러분의 모델에 대해 API 호출을 실행했거나, 스토리지를 소비했거나, 제3자에게 지급을 발생시켰다면 그 비용은 이미 지출되었고 지출된 채로 남습니다. 환불은 그 위에 얹히는 판매가를 누가 부담할지만 결정합니다.
직접 환불에 손을 뻗는 이유는 그렇게 하지 않을 경우 무슨 일이 벌어지는가에 있습니다. Google의 문서는 명확합니다. 2026년 8월 3일부터 고객이 자신의 은행에 청구에 대해 이의를 제기하면, Google은 구매 대금과 은행의 지불 거절 수수료를 개발자에게 전가합니다. 여러분이 orders.refund를 통해 발행하는 환불은 구매 대금만 돌려줍니다. 따라서 이미 손실을 예상하는 주문이라면, 직접 발행하는 환불은 지불 거절보다 정확히 은행 수수료만큼 저렴하며, 사태가 커지기 전에 사건을 종결합니다.
셀프 환불이 다른 환불 흐름들 사이에서 어디에 위치하는가
개발자 환불을 여러분의 계정에서 돈을 빼낼 수 있는 다른 모든 방식과 나란히 놓고 보면 도움이 됩니다. 이 흐름들 중 여러분의 입력을 요구하는 것은 두 가지뿐이며, 여러분 스스로 환불을 시작할 수 있는 것은 그중 하나뿐입니다.
| 환불 흐름 | 누가 결정하는가 | 여러분의 제어 |
|---|---|---|
개발자 환불(orders.refund) | 여러분 | 완전. 환불할지 여부와 시점을 선택 |
| 48시간 셀프서비스 환불 | 없음. Google이 자동으로 환불 | |
| 지원 담당자 환불 | Google 또는 Apple 지원팀 | 없음. 승인되면 확정 |
지불 거절 심사(orders.reviewrefund) | Google, 여러분의 증거를 사용 | 24시간의 입력 창구만 |
| Voided Purchases API | 아무도, 읽기 전용 | 없음. 이미 일어난 일을 읽기만 함 |
Google Play 주문을 처음부터 끝까지 환불하는 방법
Play Console에서
- Play Console을 열고 왼쪽 메뉴에서 주문 관리를 선택합니다.
- 주문 id 또는 구매자의 전체 이메일 주소로 주문을 찾습니다.
- 가격 아래에서 환불을 선택하고 환불 사유를 고릅니다. 부분 환불이 필요하다면 모바일 앱이 아니라 웹사이트를 사용하세요.
API에서
androidpublisher범위와 Play Console의 재무 권한을 가진 서비스 계정을 인증합니다.- 해당 주문의 환불 경로로 빈 POST를 보내고, 접근도 끊고 싶을 때에만
revoke=true를 추가합니다. - 빈 성공 응답을 처리하고, 구독을 취소했다면
SUBSCRIPTION_REVOKED알림이 백엔드에 도착할 것을 예상하세요.
개발자 환불은 작고 예리한 도구입니다. 그것은 고객을 온전하게 만드는 깔끔한 방법을 주고, 어차피 잃을 주문에 대해서는 지불 거절보다 저렴한 출구를 줍니다. 유일한 규칙은 의도를 가지고 사용하는 것, 그리고 revoke 플래그를 실제로 의도한 대로 설정하는 것입니다.
자주 묻는 질문
- 고객의 접근 권한을 취소하지 않고 Google Play 주문을 환불할 수 있나요?
- 네. `orders.refund`를 호출하고 `revoke` 플래그를 끄면 됩니다. 구매자는 돈을 돌려받고 해당 항목에 대한 접근을 유지합니다. 그 구매에 대한 접근도 즉시 종료하고 싶을 때에만 `revoke`를 true로 설정하세요.
- Google Play에서 얼마나 오래된 주문까지 환불할 수 있나요?
- 구매일로부터 최대 3년입니다. Google Play Developer API는 3년보다 오래된 주문은 환불할 수 없다고 명시하며, 그 기간이 지나면 우회할 방법이 없습니다.
- orders.refund는 부분 환불을 지원하나요?
- 아니요. `orders.refund`는 주문 전액만 발행합니다. 구독의 부분 환불이나 일할 환불에는 `proratedRefund` 컨텍스트와 함께 `purchases.subscriptionsv2.revoke`를 사용하거나, 대상이 되는 일회성 주문에 대해 Play Console을 통해 부분 환불을 발행하세요.
- 환불로 구독을 취소하면 백엔드가 알게 되나요?
- 네. 구독 주문을 `revoke`를 true로 설정해 환불하면 `SUBSCRIPTION_REVOKED` Real-time Developer Notification이 트리거되므로, 서버는 다른 구독 이벤트를 처리하는 것과 같은 방식으로 이용 권한을 업데이트할 수 있습니다.
- 주문을 직접 환불하는 것이 지불 거절이 되도록 두는 것보다 나은가요?
- 순수한 비용 면에서는 대개 그렇습니다. 2026년 8월 3일부터 지불 거절은 개발자에게 구매 대금과 은행 수수료를 부담시키는 반면, 여러분이 발행하는 환불은 구매 대금만 돌려줍니다. 어떤 주문이 분명히 분쟁으로 향하고 있다면, 일찍 환불하면 추가 은행 수수료를 피할 수 있습니다.
출처 및 추가 자료
- Google Play Developer API: Method orders.refund
- Android Developers: Manage subscriptions and one-time purchases
- Play Console Help: Manage your app's orders and issue refunds
- Google Play Developer API: Method purchases.subscriptionsv2.revoke
- Google Play Console Help: refund protection and chargeback cost responsibility
- Google Play Help: Learn about Google Play refund policies
RefundHalt
App Store와 Google Play 환불 자동 처리
계속 읽기
Apple의 Send Consumption Information이 이제 열두 개가 아니라 다섯 개의 필드를 요구합니다. 아래에서 하나씩 살펴봅니다
고객이 Apple에 환불을 요청할 때 Send Consumption Information 페이로드가 여러분의 답변입니다. Apple은 이를 열두 개 필드에서 다섯 개로, 필수 세 개와 선택 두 개로 줄였습니다. 아래에서 각 필드, 각각이 받아들이는 값, 그리고 이를 보내야 하는 12시간의 창을 설명합니다.
고객의 App Store 환불 내역 전체를 반환하는 엔드포인트가 하나 있는데, 그것이 무엇을 돌려주는지 설명한다
Apple의 Get Refund History 엔드포인트는 고객의 전체 App Store 환불 내역을 서명된 트랜잭션으로 반환합니다. 모든 필드, revision 토큰이 어떻게 페이지를 나누는지, 왜 앱 단위가 아니라 고객 단위인지, 그리고 놓친 환불이 얼마의 손실인지 설명합니다.