Skip to main content
Ketika pembayaran gagal, Dodo Payments memberi tahu Anda mengapa melalui error_code yang terstandarisasi dan error_message yang dapat dibaca manusia. Panduan ini menjelaskan cara membaca kolom tersebut, menentukan apakah percobaan ulang layak dilakukan, dan memulihkan pembayaran tanpa mengekspos informasi sensitif kepada pelanggan.

Bagaimana Dodo Payments Melaporkan Kegagalan

Setiap pembayaran yang gagal — baik checkout satu kali maupun perpanjangan langganan — memiliki kolom kegagalan yang sama pada objek pembayaran:
error_code dan error_message adalah null sampai pembayaran benar-benar gagal. Selalu periksa status terlebih dahulu, lalu baca kolom error.
error_message dari merchant API adalah teks yang ditujukan untuk merchant. Teks ini dapat menyebutkan alasan sebenarnya dari penolakan, termasuk alasan terkait fraud, jadi jangan pernah menampilkannya langsung kepada customer. Petakan error_code ke teks Anda sendiri yang aman bagi customer, seperti yang ditunjukkan dalam Menampilkan Error kepada Customer dengan Aman.

Webhook payment.failed

Cara paling andal untuk mendeteksi kegagalan adalah webhook payment.failed. Event ini membungkus seluruh objek payment 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. Referensi Transaction Failures mencantumkan jenis decline dan tindakan yang direkomendasikan untuk setiap error_code.

Menangani Kegagalan Saat Checkout vs. Saat Renewal

Cara pemulihan yang Anda lakukan bergantung pada apakah customer sedang hadir.
Customer sedang aktif melakukan checkout. Tampilkan pesan yang jelas dan izinkan mereka melakukan retry segera atau menggunakan kartu lain.
  • requires_payment_method — customer tidak pernah memberikan metode pembayaran: mereka tidak memasukkan detail kartu, atau diminta memasukkannya tetapi tidak melakukan tindakan apa pun. Ini biasanya merupakan drop-off saat checkout, bukan decline — hubungi kembali customer agar menyelesaikan pembayaran (lihat Pemulihan Abandoned Cart).
  • requires_customer_action — autentikasi tambahan (seperti 3DS) diperlukan; minta customer menyelesaikannya. Lihat penanganan 3D Secure.

Melakukan Retry pada Pembayaran yang Gagal

  • Subscriptions: Aktifkan Subscription Payment Retries untuk memulihkan soft decline tanpa pekerjaan integrasi. Anda juga dapat memicu pemulihan dengan meminta customer memperbarui metode pembayaran mereka melalui Update Payment Method API, yang akan menagihkan tunggakan apa pun.
  • Pembayaran satu kali: Kirim ulang checkout atau payment_link agar customer dapat mencoba lagi dengan metode lain. Tidak ada retry otomatis untuk pembayaran satu kali.
Jangan melakukan retry untuk hard decline pada kartu yang sama. Jaringan kartu dapat menandai decline berulang sebagai tindakan penyalahgunaan, yang menurunkan tingkat otorisasi Anda.

Menampilkan Error kepada Customer dengan Aman

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

Terkait

Transaction Failures

Setiap kode decline, jenisnya, dan tindakan yang direkomendasikan.

Error Codes

Error API dan logika bisnis yang bukan merupakan card decline.

Subscription Payment Retries

Pemulihan otomatis soft decline pada renewal subscription.

Subscription Dunning

Rangkaian email untuk memulihkan hard decline.

Payment Webhooks

Skema payload lengkap untuk event pembayaran.

Testing Failures

Kartu pengujian yang menyimulasikan decline dan kegagalan renewal.
Terakhir diubah pada 8 Agustus 2026