Jangan mengonfirmasi pembelian Google Play dalam tiga hari dan Google akan mengembalikan dananya, inilah biayanya bagi Anda
Google Play secara otomatis mengembalikan dana dan mencabut pembelian apa pun yang tidak dikonfirmasi server Anda dalam tiga hari. Ini adalah kegagalan integrasi, bukan keputusan pelanggan, dan sepenuhnya dapat dicegah. Berikut aturan persisnya, mengapa aturan itu terpicu, dan berapa biaya sebenarnya dari setiap penjualan yang hilang.

Poin utama
- Google Play secara otomatis mengembalikan dana pembeli dan mencabut pembelian jika aplikasi Anda tidak mengonfirmasinya dalam tiga hari. Ini adalah kegagalan integrasi, bukan keputusan pelanggan, dan sepenuhnya dapat dicegah di sisi server.
- Hitungan tiga hari dimulai saat status pembelian menjadi PURCHASED, bukan saat checkout dimulai. Pembelian yang masih berstatus PENDING belum memulai hitungan itu dan belum boleh dikonfirmasi.
- Dua panggilan memenuhi persyaratan ini. Mengonsumsi barang consumable melalui purchases.products.consume dan mengonfirmasi barang non-consumable atau langganan melalui purchases.products.acknowledge atau purchases.subscriptions.acknowledge sama-sama dihitung sebagai konfirmasi.
- Hanya pembelian langganan awal yang perlu dikonfirmasi. Perpanjangan tidak perlu, dan Google menandainya ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED secara otomatis.
- Paket prabayar yang lebih pendek dari satu minggu harus dikonfirmasi dalam separuh durasi paket, tenggat yang lebih ketat daripada tiga hari standar.
- Pengembalian dana menarik kembali harga jual, tetapi komputasi, panggilan API model, penyimpanan, dan pembayaran ke kreator yang sudah Anda keluarkan untuk mengirimkan produk tidak dikembalikan. Uang yang Anda hilangkan lebih besar daripada item barisnya.
- Apple tidak punya padanannya. Transaksi StoreKit yang belum diselesaikan akan dikirim ulang sampai Anda menyelesaikannya, tetapi Apple tidak pernah mengembalikan dananya secara otomatis. Mode kegagalan ini hanya ada di Google Play.
Seorang pelanggan membeli produk Anda, tagihannya berhasil, dan tiga hari kemudian Google Play diam-diam mengembalikan dananya serta menarik kembali apa yang Anda kirimkan. Tidak ada yang meminta pengembalian dana itu. Pelanggan tidak memintanya, dan tidak ada agen dukungan yang menyetujuinya. Itu terpicu karena server Anda tidak pernah memberi tahu Google bahwa pembelian sudah ditangani. Jika Anda tidak mengonfirmasi pembelian Google Play dalam tiga hari, Google mengembalikan dana pembeli dan mencabut pembelian, setiap kali. Ini adalah salah satu dari sedikit pengembalian dana di kedua toko yang sepenuhnya menjadi tanggung jawab integrasi Anda untuk mencegahnya, dan salah satu cara paling senyap untuk membocorkan pendapatan.
Ini bukan masalah penipuan atau sengketa kebijakan. Ini adalah callback yang terlewat. Perbaikannya kecil dan biaya melewatkannya adalah uang nyata, jadi layak untuk mengetahui aturannya secara persis, mengapa pembelian lolos tanpa dikonfirmasi, dan apa yang sebenarnya ikut hilang di setiap penjualan yang lenyap.
Apa yang sebenarnya dikatakan aturan tiga hari
Dokumentasi Play Billing dari Google menyatakannya dengan tegas. Setelah aplikasi Anda memberikan hak akses dan memberi tahu pengguna bahwa pembelian berhasil, aplikasi harus memberi tahu Google bahwa pembelian telah diproses. Dalam kata-kata Google, ini "harus dilakukan dalam tiga hari agar pembelian tidak dikembalikan secara otomatis dan hak akses dicabut." Halaman produk sekali beli mengulanginya tanpa memperhalus: "Jika Anda tidak mengonfirmasi pembelian dalam tiga hari, pengguna secara otomatis menerima pengembalian dana, dan Google Play mencabut pembelian." Langganan membawa aturan yang identik untuk pembelian awal.
Konfirmasi adalah sinyal, bukan formalitas. Ia memberi tahu Google bahwa hak akses telah sampai ke pengguna. Google memperlakukan ketiadaan sinyal itu sebagai pengiriman yang tidak pernah terjadi, dan ia membatalkan transaksi atas nama pelanggan. Dari sisi pembeli, itu tampak seperti pengembalian dana gratis yang tidak pernah mereka minta. Dari sisi Anda, itu tampak seperti penjualan yang menguap.
Hitungan dimulai pada PURCHASED, bukan pada checkout
Jendela tiga hari tidak dimulai saat pengguna menekan tombol beli. Ia dimulai saat status pembelian beralih ke PURCHASED. Sebuah pembelian bisa berstatus PENDING dahulu, yang terjadi pada pembayaran tunai, transfer bank yang lambat, atau orang tua yang menyetujui permintaan anaknya. Google menyatakannya dengan jelas: "Jendela konfirmasi tiga hari baru dimulai saat status pembelian beralih dari PENDING ke PURCHASED."
Itu punya dua konsekuensi. Berikan hak akses hanya saat statusnya PURCHASED, jangan pernah saat PENDING, atau Anda memberikan produk untuk pembayaran yang mungkin tidak pernah selesai. Dan jangan mengonfirmasi pembelian PENDING juga. Anda memanggil enablePendingPurchases() saat Anda membangun BillingClient, menunggu peralihannya, dan baru setelah itu memulai hitungan konfirmasi di kepala Anda.
Konfirmasi atau konsumsi, dan mana yang menjadi kewajiban Anda
Ada dua cara untuk memenuhi persyaratan ini, dan mana yang Anda pakai bergantung pada produknya. Keduanya melewati tenggat tiga hari. Perbedaannya adalah apa lagi yang mereka lakukan.
Untuk barang consumable, Anda mengonsumsinya. Di backend yang aman itu adalah purchases.products.consume, atau consumeAsync() di sisi klien pada Play Billing Library. Mengonsumsi sekaligus mengonfirmasi pembelian dan membuat produk bisa dibeli lagi, yang persis Anda inginkan untuk koin, kredit, atau satu kali generasi. Untuk barang non-consumable atau langganan, Anda mengonfirmasinya: purchases.products.acknowledge atau purchases.subscriptions.acknowledge di backend, atau acknowledgePurchase() di sisi klien. Mengonfirmasi melewati tenggat tanpa membebaskan produk untuk dibeli ulang.
| Jenis pembelian | Panggilan yang memenuhi tenggat | Apa lagi yang dilakukannya | Tenggat |
|---|---|---|---|
| Consumable | purchases.products.consume atau consumeAsync() | Juga membuat produk bisa dibeli ulang | 3 hari sejak PURCHASED |
| Non-consumable | purchases.products.acknowledge atau acknowledgePurchase() | Menandai hak akses diberikan, tanpa pembelian ulang | 3 hari sejak PURCHASED |
| Langganan, pembelian awal | purchases.subscriptions.acknowledge atau acknowledgePurchase() | Mengonfirmasi langganan baru | 3 hari sejak PURCHASED |
| Perpanjangan langganan | Tidak ada yang diperlukan | Ditandai terkonfirmasi otomatis oleh Google | Tidak berlaku |
| Paket prabayar di bawah satu minggu | Konfirmasi seperti di atas | Mengonfirmasi hak akses | Separuh durasi paket |
Perpanjangan sudah ditangani, pembelian awal belum
Anda hanya berkewajiban mengonfirmasi pada pembelian pertama sebuah langganan. Google menyatakan dengan jelas bahwa "Anda tidak perlu mengonfirmasi perpanjangan langganan," dan ia menandai perpanjangan ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED dengan sendirinya. Pembelian baru datang sebagai ACKNOWLEDGEMENT_STATE_PENDING dan tetap menjadi tanggung jawab Anda sampai Anda menyelesaikannya. Sebelum Anda mengonfirmasi, periksa acknowledgementState di backend atau isAcknowledged() di sisi klien agar Anda tidak mengonfirmasi dua kali.
Paket prabayar mendapat sumbu yang lebih pendek
Paket langganan prabayar mempersempit jendela. Aturan Google: paket prabayar yang berlangsung satu minggu atau lebih harus dikonfirmasi dalam tiga hari, tetapi "paket prabayar dengan durasi lebih pendek dari satu minggu harus dikonfirmasi dalam separuh durasi paket." Paket prabayar tiga hari memberi Anda satu setengah hari, bukan tiga hari. Jika Anda menjual isi ulang prabayar jangka pendek, jalur konfirmasi Anda harus cepat dan digerakkan server, bukan bergantung pada pengguna yang membuka ulang aplikasi.
Mengapa pembelian bisa tidak dikonfirmasi sejak awal
Tidak ada yang berniat melewatkan konfirmasi. Ia terlewat karena kode yang mengonfirmasi berada di tempat yang salah. Anti-pola yang umum adalah klien yang mengonfirmasi hanya ketika alur pembelian kembali ke latar depan. Itu berhasil untuk pengguna yang menyelesaikan pembelian dan terus memakai aplikasi. Ia gagal untuk semua orang lain.
Pengembang terus-menerus menghadapi ini. Utas di komunitas pengembang Google sendiri terbaca dengan cara yang sama setiap kali, semacam variasi dari "seorang pengguna otomatis mendapat pengembalian dana setelah membeli dari aplikasi saya setelah tiga hari" dan "mengapa pembayaran otomatis dikembalikan setelah tiga hari." Jawabannya hampir selalu sama: panggilan konfirmasi tidak pernah terpicu karena aplikasi tidak pernah berada dalam keadaan untuk memicunya.
Uji coba gratis dan pengguna yang tidak pernah kembali
Versi terburuk adalah uji coba gratis atau pembelian tepat sebelum pengguna menutup aplikasi untuk selamanya. Jika konfirmasi Anda bergantung pada pembukaan aplikasi berikutnya, dan tidak ada pembukaan aplikasi berikutnya, pembelian itu kedaluwarsa. Pada hari ketiga Google mengembalikan dananya dan mencabutnya. Untuk uji coba yang seharusnya berubah menjadi langganan berbayar, Anda kehilangan penagihan pertama yang tidak sempat Anda pungut, ditambah hak akses pelanggan yang lenyap secara diam-diam. Tidak satu pun peristiwa itu muncul sebagai tiket dukungan. Ia muncul sebagai pembelian yang dibatalkan yang harus Anda cari sendiri.
Berapa biaya sebenarnya dari pengembalian dana yang tidak dikonfirmasi
Baris pengembalian dana meremehkan kerugiannya. Ketika Google membalikkan penjualan, Anda mengembalikan harganya, dan itu adalah angka yang terlihat. Itu bukan seluruh tagihannya.
Pikirkan barang consumable yang memicu pekerjaan nyata begitu dibeli. Sekumpulan generasi gambar, serangkaian panggilan ke API penyedia model, ekspor video, pembayaran ke kreator. Anda membayar komputasi itu, panggilan API itu, penyimpanan itu, dan pembayaran itu pada saat penggunaan. Pengembalian dana mengembalikan harga jual ke pelanggan. Ia tidak mengembalikan faktur penyedia ke Anda. Anda mengirimkan biaya nyata dan tidak mendapatkan apa-apa kembali untuk itu.
Untuk langganan dan uji coba, kerugiannya adalah penagihan pertama yang tidak pernah Anda pungut dan hubungan pelanggan yang berakhir sebelum dimulai. Dan mulai 3 Agustus 2026, Google Play mengalihkan harga pembelian chargeback dan biaya bank ke pengembang untuk pesanan yang ditempatkan setelah tanggal itu, yang membuat setiap kebocoran pendapatan yang dapat dihindari layak ditutup sekarang daripada nanti. Pengembalian dana yang tidak dikonfirmasi bukanlah chargeback, tetapi pelajarannya sama: uang yang sudah Anda keluarkan bukanlah uang yang otomatis Anda simpan.

Cara mengonfirmasi pembelian Google Play di sisi server
Pola yang andal mengeluarkan aplikasi dari jalur kritis. Lakukan di backend Anda, digerakkan oleh notifikasi, bukan oleh pengguna yang membuka ulang layar.
- Dengarkan Real-time developer notifications. Sebuah event pembelian ONE_TIME_PRODUCT atau SUBSCRIPTION_PURCHASED memberi tahu server Anda bahwa sebuah pembelian ada pada saat Google mengetahuinya, terlepas dari apakah aplikasi terbuka atau tidak.
- Verifikasi token pembelian terhadap Play Developer API dan pastikan statusnya PURCHASED, bukan PENDING.
- Berikan hak akses di catatan Anda sendiri, dikaitkan dengan pengguna.
- Konfirmasi atau konsumsi segera. Konsumsi barang consumable, konfirmasi barang non-consumable dan langganan awal. Periksa acknowledgementState dahulu agar Anda tidak pernah mengonfirmasi dua kali.
- Isi ulang di sisi klien juga. Panggil queryPurchasesAsync() di onResume() agar pembelian apa pun yang selesai saat aplikasi tertutup tetap diproses. Ini adalah jaring pengaman, bukan jalur utama.
Intinya adalah konfirmasi terpicu dari event yang Google kirimkan kepada Anda, bukan dari tindakan pengguna yang tidak bisa Anda andalkan. Pengguna yang membeli dan tidak pernah kembali sepenuhnya tercakup karena server Anda bertindak begitu pembelian mendarat.
Jaring rekonsiliasi untuk yang lolos
Bahkan pipeline yang bersih pun diuntungkan oleh pemeriksaan. Voided Purchases API mencantumkan pembelian yang dikembalikan dananya, dicabut, atau di-chargeback, dan ia menyebutkan kasus di mana alasannya adalah bahwa pembelian "tidak pernah dikonfirmasi oleh pengembang, dan karena itu mungkin tidak ada dalam catatan pengembang." Poll API ini dan Anda bisa mencabut hak akses yang Anda berikan untuk apa pun yang sudah dibatalkan Google. Perhatikan batasnya: API hanya mengembalikan pembelian yang dibatalkan dari 30 hari terakhir, jadi rekonsiliasi harus berjalan sesuai jadwal, bukan sekali per kuartal.
Apple tidak punya padanannya, dan itu penting
Ini secara khusus adalah masalah Google Play. StoreKit dari Apple juga punya langkah penyelesaian, menyelesaikan transaksi, tetapi ia melakukan hal yang berlawanan saat gagal. Jika Anda tidak pernah menyelesaikan transaksi StoreKit, Apple menyimpannya dalam antrean dan mengirimkannya ulang setiap kali aplikasi Anda diluncurkan atau observer terpasang, sehingga Anda mendapat kesempatan lain untuk memberikan hak akses. Apple tidak mengembalikan dana transaksi yang belum diselesaikan. Tidak ada pengembalian dana otomatis tiga hari di App Store.
Jadi model mentalnya harus tetap spesifik per platform. Di Google Play, pembelian yang tidak ditangani adalah pengembalian dana yang menunggu terjadi dan tenggat yang sedang Anda kejar. Di App Store, pembelian yang tidak ditangani adalah pengiriman ulang yang menunggu terjadi dan sama sekali tidak ada hitungan waktu. Membawa asumsi Apple ke Android adalah cara tim berakhir dengan tumpukan pengembalian dana yang tidak dikonfirmasi yang tidak bisa mereka jelaskan.
Inilah sebabnya RefundHalt mengonfirmasi pembelian Google Play secara otomatis begitu notifikasi toko tiba, dan merekonsiliasi terhadap Voided Purchases API sehingga hak akses yang diberikan untuk pembelian yang kemudian dibatalkan Google tidak tetap aktif. Aturan tiga hari berhenti menjadi perlombaan yang bisa Anda kalahkan dan menjadi langkah yang sudah terjadi.
Pertanyaan yang sering diajukan
- Mengapa pembelian Google Play saya otomatis dikembalikan dananya setelah tiga hari?
- Karena aplikasi Anda tidak mengonfirmasinya tepat waktu. Google Play secara otomatis mengembalikan dana pembeli dan mencabut pembelian apa pun yang tidak dikonfirmasi dalam tiga hari sejak mencapai status PURCHASED. Ini bukan permintaan pelanggan atau penalti Google, ini adalah panggilan konfirmasi yang hilang, dan mengonfirmasi di sisi server dari notifikasi toko menghilangkannya.
- Apa perbedaan antara mengonfirmasi dan mengonsumsi pembelian?
- Keduanya memenuhi persyaratan tiga hari. Anda mengonsumsi barang consumable, melalui purchases.products.consume atau consumeAsync(), yang juga membuat produk tersedia untuk dibeli lagi. Anda mengonfirmasi barang non-consumable atau langganan, melalui purchases.products.acknowledge, purchases.subscriptions.acknowledge, atau acknowledgePurchase(), yang mengonfirmasi hak akses tanpa membebaskan produk untuk dibeli ulang.
- Apakah saya perlu mengonfirmasi perpanjangan langganan Google Play?
- Tidak. Hanya pembelian langganan awal yang perlu dikonfirmasi. Google tidak mengharuskan perpanjangan untuk dikonfirmasi dan menandainya ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED secara otomatis. Pembelian baru datang sebagai ACKNOWLEDGEMENT_STATE_PENDING dan tetap menjadi tanggung jawab Anda sampai Anda menyelesaikannya.
- Bisakah saya mengonfirmasi pembelian saat masih PENDING?
- Tidak. Anda sebaiknya mengonfirmasi hanya ketika status pembelian adalah PURCHASED. Pembelian PENDING, seperti pembayaran tunai atau permintaan persetujuan orang tua, belum memulai hitungan tiga hari. Berikan hak akses dan konfirmasi hanya setelah status beralih dari PENDING ke PURCHASED.
- Apakah Apple mengembalikan dana pembelian yang tidak saya selesaikan?
- Tidak. StoreKit dari Apple mengirimkan ulang transaksi yang belum diselesaikan setiap kali aplikasi Anda diluncurkan sampai Anda menyelesaikannya, tetapi tidak pernah mengembalikan dananya secara otomatis. Pengembalian dana otomatis tiga hari untuk pembelian yang tidak dikonfirmasi hanya ada di Google Play, jadi kedua platform memerlukan penanganan yang berbeda.
- Bagaimana cara memulihkan jika sebuah pembelian sudah dikembalikan dananya karena tidak dikonfirmasi?
- Anda tidak bisa membalikkan pengembalian dana, tetapi Anda bisa merekonsiliasi. Poll Voided Purchases API, yang mencantumkan pembelian yang dikembalikan dananya dan dicabut dari 30 hari terakhir dan menandai yang dibatalkan karena tidak pernah dikonfirmasi, lalu cabut hak akses yang Anda berikan. Ke depan, konfirmasi dari notifikasi toko agar yang berikutnya tidak lolos.
Sumber dan bacaan lanjutan
- Google Play Billing: Process purchases (three-day acknowledgement, acknowledge and consume)
- Google Play Billing: One-time product purchase lifecycle
- Google Play Billing: Subscription purchase lifecycle (initial vs renewal, prepaid plans)
- Google Play Billing: Real-time developer notifications reference
- Google Play Developer API: Voided Purchases
- Apple Developer: Finishing a transaction (StoreKit)
- Google Play Help: Learn about Google Play refund policies
RefundHalt
Autopilot refund untuk App Store dan Google Play
Baca selanjutnya
Penyalahgunaan refund berulang membebani Anda dua kali, begini cara toko membiarkan Anda melawan balik
Pelanggan yang meminta refund lagi dan lagi bukanlah kebetulan. Penyalahgunaan refund membebani Anda uang yang dikembalikan ditambah komputasi yang sudah Anda keluarkan, dan kedua toko memberi Anda sinyal identitas, appAccountToken milik Apple dan ID akun tersamar milik Google, untuk merangkai pola itu menjadi satu.
Mencabut Akses Setelah Refund: Langkah yang Tidak Diambil Apple dan Google untuk Anda
Apple dan Google bisa saja memproses refund sementara pelanggan tetap memiliki pembelian tersebut. Berikut kapan tepatnya akses dicabut secara otomatis, kapan server Anda yang harus melakukannya, dan satu notifikasi yang hampir tidak pernah ditangani oleh kebanyakan integrasi.