Skip to main content

Ikhtisar

Saat upaya pembayaran gagal, Dodo Payments mengembalikan kode kegagalan standar yang menjelaskan alasannya. Kode ini sama di semua metode pembayaran dan payment processor, sehingga satu set aturan penanganan dapat mencakup setiap pembayaran yang gagal. Webhook payment.failed dan payment object menampilkan field berikut untuk pembayaran yang gagal:
  • error_code: kode kegagalan standar dari tabel di bawah.
  • error_message: penjelasan yang ditulis untuk Anda, merchant. Saat error_code merupakan salah satu kode standar di bawah, field ini berisi judul utama dan tindakan yang direkomendasikan, bukan teks mentah dari payment processor.
  • retry_attempt: 0 untuk charge asli, dan 1 atau lebih tinggi untuk setiap percobaan ulang renewal subscription yang dijadwalkan. Pembayaran yang bukan renewal subscription mempertahankan nilai 0.
Gunakan kode ini untuk memberikan feedback yang jelas kepada customer, menentukan apakah retry dapat berhasil, dan memulihkan lebih banyak pendapatan.

Teks untuk Merchant vs. Teks untuk Customer

Setiap kode kegagalan standar dipetakan ke dua pesan, satu untuk Anda dan satu untuk customer Anda:
Customer Portal mengembalikan teks untuk customer dalam error_message, sedangkan merchant API mengembalikan teks untuk merchant untuk payment yang sama. error_code sama 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 melakukan retry.

Soft Decline vs. Hard Decline

Setiap kode kegagalan merupakan soft decline atau hard decline. Jenisnya menunjukkan apakah percobaan berikutnya dengan detail payment yang sama dapat berhasil, atau apakah customer harus melakukan tindakan terlebih dahulu. Untuk renewal subscription, Dodo Payments menerapkan klasifikasi ini secara otomatis. Subscription Payment Retries melakukan retry untuk soft decline. Hard decline langsung mengakhiri rangkaian retry; pulihkan dengan Subscription Dunning.
Jangan pernah mengungkapkan alasan sebenarnya untuk STOLEN_CARD, LOST_CARD, PICKUP_CARD, atau FRAUDULENT kepada customer. Mengungkapkan alasan ini dapat memperingatkan pelaku penipuan. 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 menerapkan aturan ini pada surface yang dikontrolnya. Untuk keempat kode ini, checkout, Customer Portal, dan email dunning menampilkan pesan decline umum, sementara teks merchant Anda tetap menyertakan 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 beserta jenis decline, apakah customer dapat mengatasinya, deskripsi, dan tindakan yang direkomendasikan.
User Error menunjukkan apakah customer dapat mengatasi decline. Yes berarti customer dapat memperbaiki masalah tersebut, misalnya dengan memasukkan detail kartu yang benar. No berarti decline disebabkan oleh masalah tingkat sistem atau pembatasan bank, dan customer tidak dapat mengatasinya secara langsung.
Bank penerbit juga dapat menolak kartu karena mesin risikonya sendiri menandai pemegang kartu sebagai berisiko tinggi, terlepas dari merchant atau detail transaksi. Penolakan ini biasanya muncul sebagai kode umum seperti DO_NOT_HONOR, GENERIC_DECLINE, CARD_DECLINED, TRANSACTION_NOT_APPROVED, atau FRAUDULENT. Bank tidak membagikan alasan spesifiknya, dan Dodo Payments maupun merchant tidak dapat membatalkan keputusan tersebut. Minta pelanggan menghubungi bank mereka untuk menyelesaikan penandaan tersebut, atau menggunakan kartu atau metode pembayaran lain.

Menangani Kegagalan Secara Terprogram

Baca error_code dari webhook payment.failed atau payment object, petakan ke tindakan yang direkomendasikan dalam tabel, lalu tentukan apakah perlu melakukan retry. Untuk renewal subscription, Dodo Payments melakukan retry soft decline untuk Anda. Lihat Subscription Payment Retries. Untuk error API dan business logic yang bukan card decline, seperti PAYMENT_NOT_SUCCEEDED atau REFUND_WINDOW_EXPIRED, 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 lebih lanjut terkait kegagalan transaksi atau masalah integrasi, hubungi tim support di support@dodopayments.com.
Terakhir diubah pada 26 September 2026