Skip to main content

Ikhtisar

Dodo Payments mengembalikan alasan kegagalan yang mendetail setiap kali percobaan pembayaran tidak berhasil. Alasan-alasan ini distandarisasi di seluruh metode dan penyedia pembayaran, sehingga Anda dapat menerapkan penanganan yang konsisten dalam aplikasi Anda. Ketika pembayaran gagal, webhook payment.failed dan objek pembayaran menampilkan:
  • error_code — alasan kegagalan terstandarisasi dari tabel di bawah.
  • error_message — penjelasan yang mudah dipahami manusia dan ditulis untuk Anda, merchant. Jika error_code merupakan salah satu kode terstandarisasi di bawah, ini berupa judul utama serta tindakan yang direkomendasikan, bukan teks mentah dari pemroses pembayaran.
  • retry_attempt0 untuk tagihan asli, 1 atau lebih tinggi untuk setiap percobaan ulang perpanjangan langganan terjadwal.
Memahami alasan kegagalan ini memungkinkan Anda memberikan umpan balik yang jelas kepada pelanggan, memutuskan apakah percobaan ulang layak dilakukan, dan memulihkan lebih banyak pendapatan.

Teks untuk Merchant vs. Teks untuk Customer

Setiap kode kegagalan terstandarisasi dipetakan ke dua pesan yang berbeda, sehingga audiens yang tepat melihat tingkat detail yang sesuai:
Customer Portal mengembalikan teks yang ditujukan kepada customer dalam error_message, sedangkan merchant API mengembalikan teks untuk merchant pada pembayaran yang sama. error_code identik pada keduanya.

Handle Payment Failures

Panduan developer langkah demi langkah untuk membaca kode ini dari webhook dan API, menampilkannya kepada customer, serta menentukan kapan harus mencoba kembali.

Soft Decline vs. Hard Decline

Setiap kode kegagalan termasuk dalam salah satu dari dua kategori. Pembedaan ini menentukan apakah Anda harus mencoba kembali dengan metode pembayaran yang sama atau meminta customer menggunakan metode baru. Untuk perpanjangan langganan, Dodo Payments menerapkan pembedaan ini secara otomatis: soft decline dicoba kembali oleh Subscription Payment Retries, sedangkan hard decline langsung mengakhiri rangkaian percobaan ulang dan sebaiknya ditangani dengan Subscription Dunning.
Jangan pernah mengungkapkan alasan sebenarnya untuk STOLEN_CARD, LOST_CARD, PICKUP_CARD, atau FRAUDULENT kepada customer. Menampilkan informasi ini dapat memberi petunjuk kepada pelaku penipuan. Selalu tampilkan pesan decline umum kepada customer (misalnya, “Kartu Anda ditolak. Silakan hubungi bank Anda atau gunakan kartu lain.”) dan catat kode spesifik hanya secara internal.Dodo Payments sudah menerapkan aturan ini pada permukaan yang dikontrolnya: untuk keempat kode ini, checkout, Customer Portal, dan email dunning selalu menggunakan pesan decline umum sebagai fallback, sedangkan teks Anda tetap menyimpan alasan sebenarnya. Terapkan aturan yang sama di mana pun Anda menampilkan error_message dari merchant API kepada customer.

Alasan Kegagalan Transaksi

Tabel berikut mencantumkan setiap kode kegagalan, jenis decline, apakah customer dapat menyelesaikannya, deskripsi, dan tindakan yang direkomendasikan.
Kesalahan User menunjukkan apakah decline pembayaran dapat diselesaikan oleh customer. Jika Yes, customer dapat mengambil tindakan untuk memperbaiki masalah (misalnya, memasukkan detail kartu yang benar). Jika No, decline disebabkan oleh masalah tingkat sistem atau pembatasan bank yang tidak dapat diselesaikan langsung oleh customer.
Kartu juga dapat ditolak ketika risk engine milik bank penerbit menandai pemegang kartu sebagai customer berisiko tinggi — terlepas dari merchant atau detail transaksi. Decline ini biasanya muncul sebagai kode umum seperti DO_NOT_HONOR, GENERIC_DECLINE, CARD_DECLINED, TRANSACTION_NOT_APPROVED, atau FRAUDULENT. Dalam kasus ini, bank tidak membagikan alasan spesifiknya, dan Dodo Payments maupun merchant tidak dapat membatalkan keputusan tersebut. Minta customer menghubungi bank mereka untuk menyelesaikan penandaan ini, atau menggunakan kartu maupun metode pembayaran lain.

Menangani Kegagalan Secara Terprogram

Baca error_code dari webhook payment.failed atau objek pembayaran, petakan ke tindakan yang direkomendasikan di atas, lalu tentukan apakah perlu mencoba kembali. Untuk perpanjangan langganan, soft decline otomatis dicoba kembali untuk Anda — lihat Subscription Payment Retries. Untuk error tingkat API dan logika bisnis (seperti PAYMENT_NOT_SUCCEEDED atau REFUND_WINDOW_EXPIRED) yang bukan merupakan card decline, lihat referensi Error Codes.

Terkait

Handle Payment Failures

Panduan menyeluruh untuk mendeteksi, menampilkan, dan mencoba kembali pembayaran yang gagal.

Error Codes

Kode error API dan logika bisnis untuk kegagalan selain decline.

Subscription Payment Retries

Percobaan ulang otomatis yang memulihkan soft decline pada perpanjangan langganan.

Subscription Dunning

Rangkaian email yang memulihkan hard decline dengan meminta pembaruan metode pembayaran.

Dukungan

Untuk bantuan tambahan terkait kegagalan transaksi atau masalah integrasi, silakan hubungi tim support kami di support@dodopayments.com.
Terakhir diubah pada 8 Agustus 2026