Semua artikel
PanduanWaktu baca 8 menit

Alasan pembatalan langganan biasanya sampai ke Anda sebelum permintaan refund, dan Google Play memberikan jauh lebih banyak daripada Apple

Google Play mencatat alasan pembatalan langganan dari survei pembatalannya, sedangkan Apple hanya mengirim kode kedaluwarsa. Berikut apa yang disampaikan setiap toko, sinyal mana yang menandakan refund atau chargeback akan datang, dan berapa biaya masing-masing bagi Anda.

Seorang developer di meja kerja pada pagi hari memeriksa layar langganan di ponsel di samping buku catatan berisi tanda turus, sambil memilah alasan pembatalan langganan

Poin utama

  • Google Play menanyakan alasan pelanggan berhenti saat mereka membatalkan, dan jawabannya sampai ke developer melalui canceledStateContext.userInitiatedCancellation.cancelSurveyResult di purchases.subscriptionsv2.
  • Survei pembatalan Google Play punya lima jawaban yang bisa dibaca developer: jarang dipakai, masalah teknis, terkait biaya, menemukan aplikasi yang lebih baik, dan lainnya. Teks bebas di reasonUserInput hanya terisi jika pengguna memilih lainnya.
  • Notifikasi SUBSCRIPTION_CANCELED dari Google Play hanya membawa purchase token. Alasan pembatalan harus diambil dengan purchases.subscriptionsv2.get, dan Google menghapus semua kolom pembatalan jika pengguna memulihkan langganannya.
  • App Store Server API milik Apple tidak punya survei pembatalan. Kolom expirationIntent memberi salah satu dari lima kode: pelanggan membatalkan, kesalahan penagihan, tidak menyetujui kenaikan harga atau konversi penawaran, produk tidak tersedia, atau lainnya.
  • Notifikasi DID_CHANGE_RENEWAL_STATUS dari Apple dengan subtipe AUTO_RENEW_DISABLED bisa berarti App Store mematikan perpanjangan otomatis setelah pelanggan meminta refund, bukan hanya pelanggan yang mematikannya.
  • Alasan pembatalan tidak pernah memberi developer suara dalam keputusan refund. Hanya dua alur yang meminta bukti: CONSUMPTION_REQUEST dari Apple, yang dijawab dalam 12 jam, dan peninjauan chargeback Google Play melalui orders.reviewrefund, yang dijawab dalam 24 jam.
  • Pelanggan Google Play yang membatalkan karena masalah teknis adalah yang paling mungkin meminta uangnya kembali. Untuk pesanan setelah August 3, 2026, chargeback yang mereka menangkan membuat developer kehilangan harga pembelian dikurangi biaya layanan Play, ditambah biaya bank.

Sebagian besar pelanggan yang akhirnya mendapat refund membatalkan langganan lebih dulu. Pembatalan itu membawa alasan, dan kedua toko memberikan informasi yang sangat berbeda jumlahnya. Google Play menjalankan survei singkat dan meneruskan jawabannya ke server Anda, termasuk teks bebas. Apple mengirim kode angka yang menjelaskan bagaimana langganan berakhir, bukan mengapa pelanggan ingin berhenti. Baca keduanya dengan benar, dan Anda akan melihat permintaan refund datang selagi masih ada yang bisa Anda lakukan.

Apa yang disampaikan Google Play tentang alasan pembatalan langganan

Saat pengguna membatalkan di pusat langganan Play, Google menanyakan alasannya. Jawabannya masuk ke resource langganan yang Anda dapat dari purchases.subscriptionsv2.get, di bawah canceledStateContext. Objek ini hanya ada saat langganan berstatus dibatalkan atau kedaluwarsa, dan menjelaskan siapa yang mengakhiri langganan: pengguna, sistem Google, Anda, atau penggantian seperti perubahan paket.

Jika pengguna yang membatalkan, objek userInitiatedCancellation berisi dua kolom. cancelTime menunjukkan kapan mereka membatalkan. cancelSurveyResult menyimpan jawaban survei.

Alasan surveiDeskripsi GoogleApa yang sering ditandakannya
CANCEL_SURVEY_REASON_NOT_ENOUGH_USAGELangganan kurang dipakaiPemakaian rendah, jadi biaya yang terpakai untuk akun ini kecil
CANCEL_SURVEY_REASON_TECHNICAL_ISSUESMasalah teknis saat memakai aplikasiSinyal refund dan chargeback paling kuat
CANCEL_SURVEY_REASON_COST_RELATEDMasalah terkait biayaSensitif terhadap harga, kadang perpanjangan yang tidak mereka duga
CANCEL_SURVEY_REASON_FOUND_BETTER_APPPengguna menemukan aplikasi yang lebih baikPesaing menang, jarang berujung sengketa
CANCEL_SURVEY_REASON_OTHERSAlasan lainBaca reasonUserInput, kata-kata pengguna sendiri
CANCEL_SURVEY_REASON_UNSPECIFIEDAlasan survei pembatalan tidak ditentukanTidak ada jawaban untuk diolah

Kolom paling kanan adalah tafsiran kami, bukan Google. Dua kolom pertama diambil langsung dari referensi API.

Notifikasinya tidak membawa alasan

Langganan yang dibatalkan memicu notifikasi developer real-time SUBSCRIPTION_CANCELED, type 3. Google menegaskan bahwa notifikasi ini hanya memberi tahu bahwa status pembelian berubah. Payload-nya hanya memberi purchase token dan tidak ada hal berguna lainnya, jadi handler Anda harus memanggil purchases.subscriptionsv2.get untuk membaca jawaban survei.

Tampilan di Play Console

Anda tidak perlu menulis kode untuk melihat totalnya. Laporan langganan di Play Console punya kartu Cancellations yang membagi churn menjadi sukarela, tidak sukarela, dan lainnya, serta kartu Cancellation survey responses untuk pengguna yang memilih menjawab. Jawaban teks bebas dari pengguna yang memilih lainnya bisa diunduh sebagai CSV dari kartu Other responses. Unduhan itu memerlukan izin View financial data, izin yang sama dengan yang Anda berikan ke alat yang membaca pesanan Anda.

Apa yang disampaikan Apple, dan apa yang tidak

Apple tidak menjalankan survei pembatalan yang dilaporkan ke developer. Kolom yang paling mendekati adalah expirationIntent di info perpanjangan yang ditandatangani, dan kolom ini menjelaskan bagaimana langganan berakhir, bukan apa yang dipikirkan pelanggan.

expirationIntentArti menurut AppleSubtipe EXPIRED yang sesuai
1Pelanggan membatalkan langganannyaVOLUNTARY
2Kesalahan penagihan, misalnya informasi pembayaran tidak validBILLING_RETRY
3Tidak menyetujui kenaikan harga atau konversi penawaran yang memerlukannyaPRICE_INCREASE
4Produk tidak tersedia untuk dibeli saat perpanjanganPRODUCT_NOT_FOR_SALE
5Alasan lainTanpa subtipe

Kode 1 satu-satunya yang menggambarkan pilihan pelanggan, dan kode itu pun tidak menjelaskan motifnya. Pelanggan yang pergi karena aplikasi terus crash dan pelanggan yang sekadar sudah menyelesaikan proyeknya terlihat sama persis.

Sinyal yang tersembunyi di AUTO_RENEW_DISABLED

Ada satu notifikasi Apple yang layak diperhatikan lebih dekat. DID_CHANGE_RENEWAL_STATUS dengan subtipe AUTO_RENEW_DISABLED biasanya berarti pelanggan mematikan perpanjangan otomatis. Dokumentasi Apple menambahkan kasus kedua: App Store juga mematikan perpanjangan otomatis setelah pelanggan meminta refund.

Jadi di iOS, peristiwa perpanjangan dimatikan bisa menjadi jejak pertama permintaan refund. Jika pembeliannya berupa consumable atau langganan perpanjangan otomatis, CONSUMPTION_REQUEST mungkin menyusul, dan sejak saat itu Anda punya 12 jam untuk mengirim data konsumsi. Peristiwa perpanjangan dimatikan yang datang tanpa tindakan apa pun yang terlihat di aplikasi Anda layak dianggap sebagai peringatan dini untuk menyiapkan data pemakaian akun tersebut.

Apple dan Google berdampingan

Google PlayApple App Store
Menanyakan alasan ke penggunaYa, lewat survei pembatalanTidak ada survei yang terlihat oleh developer
Lokasi alasancanceledStateContext di purchases.subscriptionsv2expirationIntent di info perpanjangan
Teks bebasreasonUserInput, hanya untuk lainnyaTidak ada
Siapa yang membatalkanPengguna, sistem, developer, atau penggantianDisimpulkan dari kode dan subtipe
NotifikasiSUBSCRIPTION_CANCELED, lalu panggil getDID_CHANGE_RENEWAL_STATUS, EXPIRED
Hilang jika pengguna berlangganan lagiYa, dihapus saat dipulihkanInfo perpanjangan mencerminkan status saat ini
DashboardKartu Cancellation survey responsesTidak ada untuk alasan
Kartu survei cetak yang dipilah menjadi tumpukan kecil di atas meja kayu di samping ponsel dan cangkir kopi, seperti cara developer mengelompokkan alasan pembatalan langganan

Kapan pembatalan berubah menjadi refund

Pembatalan menghentikan tagihan berikutnya. Pembatalan tidak mengembalikan tagihan terakhir. Apakah uang kembali tergantung pada alur refund mana yang ditempuh pelanggan selanjutnya, dan sebagian besar alur itu berjalan tanpa Anda.

  • Di Google Play, pembeli bisa mendapatkan refund sendiri dalam 48 jam setelah pembelian, dan Google yang memutuskan.
  • Refund melalui dukungan Google atau Apple diputuskan oleh toko.
  • CONSUMPTION_REQUEST dari Apple meminta data konsumsi Anda, dengan batas waktu 12 jam.
  • Peninjauan chargeback Google Play meminta bukti melalui orders.reviewrefund, dengan batas waktu 24 jam. Keputusan bank atas chargeback bersifat final.

Alasan pembatalan tidak mengubah satu pun aturan itu. Yang berubah adalah seberapa cepat Anda tahu pelanggan mana yang tidak puas, dan apakah bukti Anda sudah siap saat salah satu dari dua alur yang memintanya tiba.

Berapa biaya setiap alasan bagi Anda

Jawaban survei juga menjadi gambaran kasar tentang biaya yang sudah keluar untuk melayani sebuah akun, yaitu uang yang tetap Anda tanggung setelah refund.

Masalah teknis

Ini alasan yang paling mahal. Pelanggan sudah cukup sering memakai produk sampai menemui masalah, jadi Anda sudah membayar compute di balik sesi mereka, panggilan model API dari permintaan mereka, penyimpanan untuk apa pun yang mereka buat, dan pembayaran untuk kreator yang kontennya mereka pakai. Jika mereka lalu mendapat refund, harganya kembali ke pelanggan dan biaya itu tetap Anda tanggung. Jika mereka mengajukan ke bank di Google Play, pesanan setelah August 3, 2026 membuat Anda kehilangan harga pembelian dikurangi biaya layanan Play, ditambah biaya bank.

Terkait biaya

Keluhan soal harga lebih murah daripada kelihatannya, kecuali jika di baliknya ada perpanjangan yang tidak diduga. Itu cerita chargeback yang klasik, jadi periksa apakah pembatalan terjadi tepat setelah tagihan perpanjangan dan apakah pengingat perpanjangan Anda sudah terkirim.

Jarang dipakai

Pemakaian rendah berarti biaya layanan rendah, jadi refund di sini sebagian besar mengembalikan uang yang tidak banyak menghabiskan biaya untuk didapat. Ini juga alasan di mana data konsumsi yang jujur, jika Apple memintanya, menunjukkan dengan tepat apa yang dipakai dan tidak dipakai pelanggan.

Menemukan aplikasi yang lebih baik

Pelanggan seperti ini jarang mempersoalkan apa pun. Mereka pindah ke pesaing. Alasan ini berguna untuk keputusan produk dan hampir tidak pernah untuk pembelaan refund.

Rutinitas membaca alasan pembatalan

  • Pada setiap SUBSCRIPTION_CANCELED dari Google Play, panggil purchases.subscriptionsv2.get dan simpan canceledStateContext bersama purchase token dan cancelTime.
  • Simpan reasonUserInput apa adanya jika alasannya lainnya. Itu satu-satunya teks bebas yang diberikan kedua toko.
  • Pada setiap DID_CHANGE_RENEWAL_STATUS dari Apple dengan AUTO_RENEW_DISABLED, catat peristiwanya dan tarik data pemakaian akun tersebut, berjaga-jaga jika CONSUMPTION_REQUEST menyusul.
  • Pada setiap notifikasi EXPIRED dari Apple, catat subtipe dan expirationIntent agar churn sukarela dan kegagalan penagihan tidak tercampur.
  • Untuk pembatalan Google Play dengan alasan masalah teknis, periksa log error akun tersebut dan hubungi pelanggan sebelum mereka menghubungi bank.
  • Simpan log pemakaian per akun, agar CONSUMPTION_REQUEST bisa dijawab dalam 12 jam dan peninjauan chargeback dalam 24 jam.

Pertanyaan yang sering diajukan

Bagaimana cara melihat alasan pelanggan Google Play membatalkan?
Panggil purchases.subscriptionsv2.get dan baca canceledStateContext.userInitiatedCancellation.cancelSurveyResult. Kolom reason berisi jawaban survei, dan reasonUserInput berisi teks bebas jika pengguna memilih lainnya. Play Console juga menampilkan totalnya di kartu Cancellation survey responses.
Apakah Apple memberi tahu developer mengapa pelanggan membatalkan langganan?
Tidak. Apple tidak punya survei pembatalan yang terlihat oleh developer. Kolom expirationIntent menjelaskan bagaimana langganan berakhir, dengan kode untuk pelanggan membatalkan, kesalahan penagihan, tidak menyetujui kenaikan harga, produk tidak tersedia, atau lainnya, tetapi tidak menjelaskan motif pelanggan.
Apakah notifikasi SUBSCRIPTION_CANCELED berisi alasan pembatalan?
Tidak. Notifikasi developer real-time dari Google Play hanya memberi tahu bahwa status pembelian berubah. Ambil langganan dengan purchases.subscriptionsv2.get untuk membaca alasannya, lalu segera simpan, karena Google menghapus kolom pembatalan jika pengguna memulihkan langganan.
Apakah notifikasi AUTO_RENEW_DISABLED dari Apple bisa berarti permintaan refund?
Ya. Dokumentasi Apple menyebutkan bahwa subtipe AUTO_RENEW_DISABLED mencakup dua hal: pelanggan mematikan perpanjangan otomatis, dan App Store mematikannya setelah pelanggan meminta refund.
Bisakah saya mencabut akses saat pelanggan membatalkan?
Tidak di Google Play selama mereka masih berhak. Google menyatakan pelanggan yang membatalkan tetap punya akses hingga akhir siklus penagihan, dan mencabut akses lebih awal melanggar kebijakan langganan Google Play. Gunakan expiryTime untuk menentukan kapan akses berakhir.

Sumber dan bacaan lanjutan

RefundHalt

Autopilot refund untuk App Store dan Google Play

Baca selanjutnya

Permintaan refund berikutnya sudah menuju kepada Anda.

Siapkan RefundHalt dalam waktu yang dibutuhkan untuk membaca satu lagi email dukungan tentang refund yang tidak sempat Anda sengketakan.