Semua artikel
Deep diveWaktu baca 9 menit

Baca kode alasan refund yang sudah diterima server Anda, dan itu memberi tahu apakah harus memperbaiki aplikasi atau melawan pelanggan

Setiap refund yang dikirim Apple dan Google ke server Anda membawa kode alasan. Google Play mencantumkan salah satu dari sembilan alasan dan satu sumber pada setiap void, Apple menandai apakah refund itu menyalahkan aplikasi Anda. Berikut arti setiap kode, cara memilahnya menjadi perbaiki, lawan, atau terima, dan berapa nilainya dalam uang.

Tanda kode cap karet pada label kertas di samping kaca pembesar, mewakili kode alasan refund yang diterima server Anda pada setiap refund

Poin utama

  • Setiap refund yang dikirim Apple atau Google ke server Anda membawa kode alasan refund, dan itulah satu bagian dari refund yang bisa Anda baca setelah uang sudah berpindah. Kode itu memberi tahu mengapa refund terjadi, yang menunjukkan apa yang harus Anda lakukan berikutnya.
  • Voided Purchases API milik Google Play mencantumkan dua angka pada setiap void: voidedReason dari 0 sampai 8 (other, remorse, not received, defective, accidental purchase, fraud, friendly fraud, chargeback, unacknowledged purchase) dan voidedSource 0 pengguna, 1 developer, atau 2 Google.
  • Apple memberi Anda sinyal yang lebih sempit tapi tajam. Pada transaksi yang di-refund, revocationReason bernilai 1 ketika App Store me-refund karena masalah nyata atau yang dianggap ada di dalam aplikasi Anda, dan 0 ketika refund terjadi karena alasan lain seperti pembelian tidak sengaja.
  • Kode-kode itu terbagi menjadi tiga tumpukan. Defective, not received, unacknowledged, dan kode issue-in-app dari Apple menunjuk ke produk Anda, jadi Anda perbaiki. Fraud, friendly fraud, dan chargeback adalah sengketa yang Anda lawan atau cegah. Remorse dan accidental purchase memang tidak pernah bisa Anda hentikan.
  • voidedReason 8, unacknowledged purchase, adalah refund yang Anda tagih sendiri. Google otomatis me-refund dan mencabut pembelian apa pun yang gagal diakui aplikasi Anda dalam tiga hari, dan kode ini adalah cara Anda menemukan bug itu dalam integrasi Anda sendiri.
  • voidedReason 7, chargeback, adalah yang mahal. Untuk pesanan Google Play yang dibuat pada atau setelah 3 Agustus 2026, chargeback yang kalah membuat developer menanggung harga pembelian dikurangi biaya layanan Play ditambah biaya chargeback bank, jadi menghitung void berkode chargeback Anda berarti menghitung biaya tambahan yang nyata.
  • Voided Purchases API hanya menengok 30 hari ke belakang, dan memfilter berdasarkan kapan Google melihat void itu, bukan kapan pembelian terjadi, jadi kode alasan yang tidak Anda tangkap dalam jendela itu adalah kode alasan yang hilang selamanya.

Ketika Apple atau Google me-refund salah satu pelanggan Anda, uang biasanya sudah hilang sebelum Anda sempat ikut memutuskan. Yang mendarat di server Anda sesudahnya tampak seperti tanda terima, dan kebanyakan tim memperlakukannya begitu. Padahal lebih dari itu. Setiap refund membawa kode alasan refund, dan itulah satu-satunya bagian dari refund yang masih bisa Anda baca setelah keputusan dibuat. Google Play memberi tahu Anda bahwa refund itu adalah chargeback, atau permintaan remorse, atau pembelian yang tidak pernah diakui aplikasi Anda sendiri. Apple memberi tahu apakah refund itu menyalahkan sesuatu di dalam aplikasi Anda. Baca kode itu dan sebuah refund berhenti menjadi baris dalam laporan lalu menjadi instruksi: perbaiki ini, lawan ini, atau lepaskan yang satu ini. Berikut arti setiap kode, cara memilahnya, dan berapa biaya masing-masing.

Apa sebenarnya kode alasan refund itu

Kode alasan refund adalah label toko sendiri untuk alasan sebuah pembelian dibatalkan. Anda tidak menetapkannya dan tidak bisa membantahnya. Kode itu datang menempel pada refund setelah kejadian, dan kedua toko menampilkannya dalam bentuk berbeda dan dengan resolusi yang sangat berbeda.

Google Play mencantumkan alasan dan sumber pada setiap void

Voided Purchases API milik Google Play mengembalikan satu catatan per pembelian yang dibatalkan, dan setiap catatan membawa dua bilangan bulat yang penting. voidedReason menyatakan mengapa pembelian dibatalkan. voidedSource menyatakan siapa yang memulainya. Bersama-sama keduanya mengubah refund telanjang menjadi sebuah kalimat: pesanan ini dibatalkan karena chargeback, dimulai oleh Google, atau dibatalkan sebagai remorse, dimulai oleh pengguna. Anda membacanya dengan melakukan polling ke API atau dengan berlangganan notifikasi developer real-time yang memicu saat sebuah void mendarat. Bagaimanapun caranya, dua angka itulah payload yang layak disimpan.

Apple memberi sinyal yang lebih sempit, tapi tajam

Apple tidak memberi Anda alasan sembilan arah. Pada transaksi yang di-refund, Apple menetapkan revocationReason ke salah satu dari dua nilai. Nilai 1 berarti App Store me-refund transaksi karena masalah nyata atau yang dianggap ada di dalam aplikasi Anda. Nilai 0 berarti refund terjadi karena alasan lain, misalnya pembelian tidak sengaja. Field ini hanya muncul pada transaksi yang di-refund atau dicabut, bersama revocationDate, di dalam signed transaction info dari REFUND App Store Server Notification. Dua nilai memang tidak banyak, tapi yang penting, yaitu 1, adalah Apple memberi tahu Anda bahwa refund itu tentang produk Anda, bukan keraguan pelanggan.

Sembilan alasan yang diberikan Google Play

voidedReason milik Google adalah yang lebih kaya dari keduanya, dan setiap nilai layak dikenali begitu terlihat karena masing-masing menunjuk ke tempat berbeda. Berikut set lengkapnya, langsung dari resource VoidedPurchase, dengan apa yang sebenarnya diperintahkan setiap kode kepada Anda.

voidedReasonLabel GoogleApa yang diperintahkan kode ini
0LainnyaTidak ada alasan spesifik yang tercatat. Kelompokkan dan pantau volumenya, bukan kasus tunggalnya.
1Remorse (berubah pikiran)Pelanggan berubah pikiran. Tidak ada yang salah dengan aplikasi Anda.
2Tidak diterimaPelanggan mengatakan tidak pernah menerima yang mereka bayar. Masalah pengiriman yang perlu diperiksa.
3DefektifPembelian tidak berfungsi. Bug produk, dan kode paling bisa ditindaklanjuti dalam daftar ini.
4Pembelian tidak sengajaSalah klik atau pembelian tak diinginkan. Pertimbangkan langkah konfirmasi yang lebih jelas.
5PenipuanGoogle menandai transaksi sebagai penipuan. Bukan pelanggan Anda, dan bukan pendapatan yang berhak Anda simpan.
6Friendly fraudPembeli menyengketakan tagihan yang mereka buat dan terima. Bukti masih bisa menyentuh yang satu ini.
7ChargebackBank membalikkan tagihan. Jalur paling mahal, kini dengan biaya tambahan.
8Pembelian tidak diakuiAplikasi Anda tidak pernah mengakui pembelian, jadi Google otomatis me-refund. Bug dalam kode Anda.

voidedSource memberi tahu siapa yang menarik pelatuk

Di samping alasan ada voidedSource, dan itu menjawab pertanyaan berbeda: siapa yang membalikkan ini. Nilai 0 berarti pengguna yang melakukannya, lewat swalayan atau bank. Nilai 1 berarti developer yang melakukannya, yaitu Anda atau perkakas Anda sendiri yang menerbitkan refund. Nilai 2 berarti Google yang melakukannya, atas penilaiannya sendiri, termasuk auto-refund untuk pembelian tidak diakui. Ketika Anda melihat lonjakan void, sumber adalah pemilahan pertama. Dinding penuh source 2 adalah Google bertindak atas akun Anda, dan itu biasanya sinyal yang menunjuk kembali ke integrasi Anda, bukan ke pelanggan Anda.

Pilah setiap refund menjadi perbaiki, lawan, atau terima

Alasan sebuah kode berguna adalah karena ia memberi tahu Anda mana dari tiga respons yang pantas untuk sebuah refund. Kebanyakan tim memperlakukan semua refund sama dan membuang tenaga pada yang tidak pernah bisa mereka menangkan. Kode-kode itu terbagi dengan rapi.

Perbaiki: refund yang disebabkan produk Anda

Beberapa kode adalah laporan bug berbaju refund. Defektif (3) dan tidak diterima (2) di Google, dan revocationReason bernilai 1 di Apple, semuanya mengatakan hal yang sama: pelanggan membayar dan aplikasi Anda tidak mengantarkan. Pembelian tidak diakui (8) adalah yang paling tajam di antaranya karena kesalahan sepenuhnya ada di kode penagihan Anda. Ini adalah refund paling murah untuk dihilangkan, karena Anda menghilangkannya dengan memperbaiki sesuatu yang Anda miliki, bukan dengan meyakinkan siapa pun. Jumlah yang naik di tumpukan ini adalah cacat produk dengan angka dolar yang menempel.

Lawan: refund yang sedang digarap seseorang

Penipuan (5), friendly fraud (6), dan chargeback (7) adalah sengketanya. Penipuan murni (5) bukan pelanggan Anda dan bukan pendapatan yang pernah akan Anda simpan. Friendly fraud (6), di mana pembeli mendapat persis apa yang mereka bayar lalu menyengketakannya, adalah satu-satunya sengketa yang masih bisa digerakkan oleh bukti Anda, dan chargeback (7) adalah tempat bukti itu diajukan. Ketika salah satunya mendarat, Anda cabut akses jika belum, dan bila ada jendela peninjauan yang terbuka Anda jawab dengan apa yang Anda ketahui tentang akun itu.

Terima: refund yang memang tidak pernah bisa Anda hentikan

Remorse (1) dan pembelian tidak sengaja (4) adalah perubahan pikiran pelanggan sendiri. revocationReason bernilai 0 dari Apple juga ada di sini. Tidak ada fitur yang gagal dan tidak ada penipuan yang terjadi. Anda bisa melunakkan tumpukan tidak sengaja dengan konfirmasi pembelian yang lebih jelas, tapi Anda tidak bisa membantah refund remorse, dan waktu yang dihabiskan untuk mencoba adalah waktu yang diambil dari tumpukan perbaiki tempat uang sebenarnya berada.

KelompokKode GoogleSinyal AppleLangkah Anda
Perbaiki2 tidak diterima, 3 defektif, 8 tidak diakuirevocationReason 1Cari akar penyebab bug produk atau penagihan di baliknya
Lawan5 penipuan, 6 friendly fraud, 7 chargeback(muncul lewat REFUND, bukan lewat alasan)Cabut akses, jawab jendela peninjauan dengan bukti
Terima1 remorse, 4 pembelian tidak sengajarevocationReason 0Catat, sesuaikan alur pembelian, lanjutkan
Tiga baki penyortir berlabel di atas meja kerja menangkap token logam yang tersortir, satu baki menyala lebih terang, mewakili pemilahan refund berdasarkan kode alasan menjadi perbaiki, lawan, dan terima

Jebakan 30 hari yang membuat kode alasan mudah hilang

Ada batas keras di sisi Google yang mengubah ini dari fitur pelaporan menjadi tenggat. Jika Anda tidak menangkap kode secara terus-menerus, Anda kehilangannya.

Voided Purchases API hanya menengok 30 hari ke belakang

Google jelas menyatakan bahwa API hanya bisa menampilkan pembelian yang dibatalkan dari 30 hari terakhir. Void yang lebih lama tidak dikembalikan apa pun startTime yang Anda kirim, dan nilai startTime itu sendiri tidak bisa disetel lebih awal dari 30 hari lalu. Lebih buruk lagi bagi integrasi yang naif, jendela 30 hari diukur dari kapan sistem Google melihat sebuah pembelian sebagai dibatalkan, bukan dari kapan pembelian dilakukan atau bahkan dari voidedTimeMillis dalam catatan. Jadi kode alasan refund yang tidak Anda tarik dalam jendela itu hilang, dan pekerjaan ekspor bulanan dengan celah apa pun akan diam-diam membuang void yang terlambat ditangkap.

Berapa nilai kode alasan dalam uang

Dua kode membawa harga spesifik, dan membacanya adalah cara Anda menaruh angka pada masalah yang jika tidak akan tersembunyi di dalam tingkat refund agregat.

Satu kode adalah tagihan yang Anda tulis sendiri

voidedReason 8, unacknowledged purchase, adalah contoh paling bersih dari refund yang Anda sebabkan. Google Play mewajibkan aplikasi Anda mengakui pembelian dalam tiga hari sejak memberikan entitlement, dan jika tidak, Google otomatis me-refund pesanan dan mencabut item. Setiap void bercap 8 adalah penjualan nyata, dari pelanggan yang menginginkan produk, dikembalikan karena panggilan untuk mengakui pembelian tidak pernah dipicu. Jumlah yang hilang adalah harga jual penuh ditambah komputasi, panggilan API, dan penyimpanan yang sudah Anda keluarkan untuk mengantarkannya. Ini bukan refund yang Anda negosiasikan. Ini bug yang Anda tutup, dan kode adalah cara Anda menemukannya.

Kode chargeback kini membawa biaya

voidedReason 7, chargeback, berubah biayanya pada 3 Agustus 2026. Untuk pesanan Google Play yang dibuat pada atau setelah tanggal itu, chargeback yang kalah membuat developer menanggung harga pembelian dikurangi biaya layanan Play, ditambah biaya chargeback bank, sementara Google hanya menutup biaya layanannya sendiri. Karena biaya chargeback bersifat tetap sementara harga produk tidak, pada pembelian dalam aplikasi yang murah biaya itu saja bisa melebihi apa yang dibayar pelanggan. Menghitung void kode 7 Anda kini berarti menghitung item biaya, bukan sekadar penjualan yang hilang, yang persis mengapa tumpukan chargeback layak mendapat barisnya sendiri di laporan refund mana pun yang Anda bangun.

Kode alasanApa yang menimbulkan biaya bagi AndaMengapa kode itu penting
8 Pembelian tidak diakuiHarga jual penuh ditambah biaya pengiriman, atas penjualan yang diinginkan pelangganBersifat merugikan diri sendiri, jadi kode ini adalah pelacak bug
7 Chargeback (pesanan pada atau setelah 3 Agustus 2026)Harga jual dikurangi biaya layanan Play, ditambah biaya chargeback bankSatu-satunya kode yang menambah biaya di atas penjualan yang hilang
3 DefektifHarga jual ditambah biaya pengiriman, berulang untuk setiap pelanggan yang terkena bugVolume pada kode ini mengukur cacat produk dalam dolar
1 RemorseHarga jual, dan biaya pengiriman yang sudah Anda keluarkanBiaya nyata, tapi bukan yang bisa dipulihkan oleh perubahan kode

Bagaimana Apple dan Google berbaris

Kedua toko menjawab pertanyaan yang sama pada resolusi berbeda, jadi laporan refund lintas-toko harus menormalkannya, bukan mengharapkan keduanya cocok.

PertanyaanApp StoreGoogle Play
Di mana kode beradarevocationReason di dalam signed transaction dari notifikasi REFUNDvoidedReason di Voided Purchases API dan notifikasinya
Berapa banyak alasanDua: 1 masalah di aplikasi Anda, 0 lainnyaSembilan, dari 0 lainnya sampai 8 pembelian tidak diakui
Siapa yang melakukannyaTidak dirincivoidedSource: 0 pengguna, 1 developer, 2 Google
Seberapa jauh ke belakang bisa dibacaTersedia pada transaksi kapan pun Anda mengueriHanya 30 hari void terakhir
Sinyal paling tajamNilai 1 berarti refund tentang produk AndaKode 3, 8, dan 7 masing-masing menunjuk biaya berbeda yang bisa diperbaiki

Kedua toko tidak akan pernah memberi Anda kode yang sama untuk refund yang sama, dan itu tidak masalah. Yang penting adalah keduanya memberi Anda alasan yang bisa dibaca mesin, dan keduanya menghargai tim yang membacanya. Satu bit dari Apple memberi tahu Anda kapan sebuah refund adalah kesalahan produk Anda. Sembilan alasan Google dan flag sumbernya memberi tahu Anda bug produk yang mana, sengketa yang mana, dan celah penagihan yang merugikan diri sendiri yang mana yang sedang Anda hadapi. Tidak ada kode yang menghentikan refund. Keduanya memberi tahu apa yang harus dilakukan agar yang berikutnya tidak terjadi.

RefundHalt menangkap kode alasan pada setiap refund begitu tiba, di kedua toko, dan menyimpannya dengan aman di dalam jendela 30 hari Google sehingga tidak ada yang lolos. Ia memilah setiap void menjadi perbaiki, lawan, atau terima, sehingga lonjakan kode 3 defektif sampai kepada Anda sebagai peringatan produk dan lonjakan kode 8 tidak diakui sampai kepada Anda sebagai bug integrasi, bukan sebagai penurunan pendapatan yang samar. Ia menjawab CONSUMPTION_REQUEST dari Apple dalam 12 jam dan peninjauan chargeback Google Play dalam 24, dan mencabut akses begitu refund atau chargeback mendarat. Anda tidak bisa mengubah kode yang dicap toko pada sebuah refund. Anda bisa memastikan Anda membaca setiap kode, dan menindaklanjuti yang benar-benar milik Anda untuk diperbaiki.

Pertanyaan yang sering diajukan

Apa itu kode alasan refund di App Store dan Google Play?
Itu adalah label toko sendiri untuk alasan sebuah pembelian dibalik, dikirim ke server Anda bersama refund. Voided Purchases API milik Google Play mengembalikan voidedReason dari 0 sampai 8 dan voidedSource 0 pengguna, 1 developer, atau 2 Google. Apple menetapkan revocationReason ke 1 ketika refund terjadi karena masalah di dalam aplikasi Anda atau 0 untuk alasan lain seperti pembelian tidak sengaja. Anda tidak menetapkan kode dan tidak bisa mengubahnya, tapi membacanya memberi tahu apakah refund menunjuk ke produk Anda, sebuah sengketa, atau perubahan pikiran pelanggan.
Apa saja nilai voidedReason Google Play?
Ada sembilan: 0 lainnya, 1 remorse, 2 tidak diterima, 3 defektif, 4 pembelian tidak sengaja, 5 penipuan, 6 friendly fraud, 7 chargeback, dan 8 pembelian tidak diakui. Masing-masing dikembalikan per pembelian yang dibatalkan oleh Voided Purchases API bersama voidedSource yang menyatakan siapa yang memulai void. Kode 2, 3, dan 8 menunjuk masalah di aplikasi Anda sendiri, kode 5, 6, dan 7 adalah sengketa, dan kode 1 dan 4 adalah keputusan pelanggan sendiri.
Apa arti revocationReason 1 dari Apple?
Artinya App Store me-refund transaksi karena masalah nyata atau yang dianggap ada di dalam aplikasi Anda, berlawanan dengan nilai 0 yang berarti refund terjadi karena alasan lain seperti pembelian tidak sengaja. Field ini hanya muncul pada transaksi yang di-refund atau dicabut, bersama revocationDate, di dalam signed transaction info dari REFUND App Store Server Notification. Nilai 1 adalah Apple memberi tahu Anda bahwa refund itu tentang produk Anda.
Mengapa Google me-refund pembelian dengan kode alasan tidak diakui?
Karena aplikasi Anda tidak mengakui pembelian tepat waktu. Google Play mewajibkan Anda mengakui pembelian dalam tiga hari sejak memberikan entitlement, dan jika tidak, Google otomatis me-refund pesanan dan mencabut item, mencap void dengan voidedReason 8. Ini refund yang Anda sebabkan dengan bug penagihan, bukan permintaan pelanggan, jadi perbaikannya ada di kode pemrosesan pembelian Anda, bukan di negosiasi apa pun.
Seberapa jauh ke belakang saya bisa membaca kode alasan refund?
Di Google Play, hanya 30 hari. Voided Purchases API mengembalikan void dari 30 hari terakhir dan mengabaikan startTime yang lebih lama dari itu, dan ia mengukur jendela berdasarkan kapan Google melihat void, bukan kapan pembelian dilakukan. Kode yang tidak Anda tangkap dalam 30 hari akan hilang, jadi Anda sebaiknya berlangganan notifikasi void-purchase real-time atau melakukan polling terjadwal dengan aman di dalam jendela. revocationReason Apple tetap ada pada transaksi kapan pun Anda mengueri.

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.