Skip to main content
Saat pembayaran gagal, Dodo Payments menyediakan error_code standar dan error_message yang mudah dipahami. Panduan ini menunjukkan cara membaca kolom tersebut, menentukan apakah perlu mencoba lagi, dan memulihkan pembayaran dengan aman.

Bagaimana Dodo Payments Melaporkan Kegagalan

Setiap pembayaran yang gagal memiliki kolom berikut pada objek pembayaran:
error_code dan error_message adalah null hingga pembayaran gagal. Selalu periksa status terlebih dahulu.
error_message ditujukan untuk merchant dan dapat mengungkapkan alasan terkait fraud. Jangan pernah menampilkannya kepada pelanggan. Sebagai gantinya, petakan error_code ke teks yang aman bagi pelanggan (lihat Tampilkan Error kepada Pelanggan dengan Aman).

Webhook payment.failed

Webhook payment.failed adalah cara paling andal untuk mendeteksi kegagalan. Event tersebut membungkus objek pembayaran lengkap dalam data:
payment.failed payload
Handler minimal membaca error_code dan melakukan routing berdasarkan nilainya:
Selalu verifikasi signature webhook sebelum memprosesnya. Lihat panduan Webhooks untuk penyiapan lengkap, termasuk verifikasi signature dan idempotency.

Tentukan Apakah Perlu Retry: Soft vs. Hard Decline

error_code memberi tahu apakah retry dengan metode pembayaran yang sama layak dilakukan. Lihat Transaction Failures untuk daftar lengkap jenis decline dan tindakan yang direkomendasikan.

Menangani Kegagalan Saat Checkout vs. Saat Renewal

Cara pemulihan yang Anda lakukan bergantung pada apakah customer sedang hadir.
Pelanggan sedang aktif melakukan checkout. Tampilkan pesan yang jelas dan izinkan mereka mencoba lagi atau menggunakan kartu lain.
  • requires_payment_method — pelanggan tidak pernah memberikan metode pembayaran. Ini biasanya merupakan pelanggan yang meninggalkan checkout, bukan decline. Hubungi kembali pelanggan agar menyelesaikan pembayaran (lihat Pemulihan Keranjang yang Ditinggalkan).
  • requires_customer_action — autentikasi tambahan (seperti 3DS) diperlukan. Minta pelanggan menyelesaikannya. Lihat 3D Secure.

Melakukan Retry pada Pembayaran yang Gagal

Subscriptions: Aktifkan Subscription Payment Retries untuk memulihkan soft decline secara otomatis. Untuk mencoba lagi segera tanpa menunggu jadwal, gunakan Manual Payment Retry dari dashboard atau API. Anda juga dapat memicu pemulihan dengan meminta pelanggan memperbarui metode pembayaran mereka melalui Update Payment Method API, yang akan menagih tunggakan apa pun. Pembayaran satu kali: Kirim ulang checkout atau payment_link agar pelanggan dapat mencoba lagi dengan metode yang berbeda. Tidak ada percobaan ulang otomatis untuk pembayaran satu kali.
Jangan mencoba lagi hard decline dengan kartu yang sama. Jaringan kartu menandai decline berulang sebagai tindakan penyalahgunaan, yang menurunkan tingkat otorisasi Anda.

Tampilkan Error kepada Pelanggan dengan Aman

Tampilkan pesan yang ramah kepada pelanggan, jangan pernah menampilkan error_code mentah atau error_message yang ditujukan untuk merchant.
Pada antarmuka yang dikendalikan Dodo Payments (checkout, Customer Portal, email dunning), pemetaan ini sudah dilakukan untuk Anda, termasuk fallback ke pesan umum untuk decline terkait fraud. Anda hanya memerlukan pemetaan di bawah ini jika menampilkan kegagalan dalam produk Anda sendiri.
Customer-facing messaging
Jangan pernah mengungkapkan alasan sebenarnya untuk STOLEN_CARD, LOST_CARD, PICKUP_CARD, atau FRAUDULENT. Menampilkan alasan tersebut dapat memberi petunjuk kepada pelaku fraud. Tampilkan pesan decline umum dan catat error_code spesifik hanya secara internal.

Terkait

Transaction Failures

Setiap kode decline, jenisnya, dan tindakan yang direkomendasikan.

Error Codes

Error API dan logika bisnis yang bukan merupakan decline kartu.

Subscription Payment Retries

Pemulihan otomatis soft decline pada perpanjangan subscription.

Subscription Dunning

Urutan email yang memulihkan hard decline.

Payment Webhooks

Skema payload lengkap untuk event pembayaran.

Testing Failures

Kartu pengujian yang menyimulasikan decline dan kegagalan perpanjangan.
Terakhir diubah pada 26 September 2026