Skip to main content
Manual Retry mencoba kembali pembayaran perpanjangan langganan yang gagal saat Anda memintanya, dari halaman detail pembayaran atau melalui API. Fitur ini membebankan metode pembayaran yang tersimpan pada langganan, dan berjalan secara independen dari jadwal Payment Retries otomatis.

Apa Itu Coba Lagi Manual?

Saat pembayaran perpanjangan gagal, langganan berpindah ke on_hold. Jika Anda mengaktifkan Payment Retries, fitur tersebut akan mencoba kembali membebankan pembayaran sesuai jadwal back-off. Terkadang Anda mengetahui bahwa pembayaran akan berhasil saat ini: pelanggan telah mengonfirmasi bahwa mereka telah mengisi saldo akun, atau tim dukungan Anda sedang menghubungi mereka. Manual Retry langsung mengirimkan satu percobaan, tanpa menunggu berjam-jam atau berhari-hari hingga percobaan terjadwal berikutnya.
  • Hanya pembayaran perpanjangan: Manual Retry berlaku untuk invoice perpanjangan langganan saat langganan berada dalam status on_hold. Pembayaran pertama, pembayaran satu kali, biaya perubahan paket, dan biaya on-demand tidak memenuhi syarat.
  • Tanpa tindakan pelanggan: Pembebanan dilakukan ke metode pembayaran yang sudah tersimpan pada langganan.
  • Independen dari percobaan otomatis: Percobaan manual tidak menggunakan jatah percobaan dari jadwal otomatis, tidak mengubah waktu percobaan terjadwal berikutnya, dan tetap berfungsi meskipun Payment Retries dinonaktifkan.
  • Mencoba kembali invoice, bukan pembayaran: Pembayaran yang gagal hanyalah titik awal. Dodo Payments menemukan invoice perpanjangan terbuka di baliknya dan membebankan utang tersebut, sehingga tidak masalah pembayaran yang gagal pada invoice mana yang Anda gunakan untuk mencoba kembali.

Mencoba Lagi dari Dashboard

Hanya pengguna dengan peran Owner atau Editor yang dapat mengirimkan percobaan manual.
1

Open the failed payment

Buka Transactions → Payments, lalu klik pembayaran perpanjangan yang gagal untuk membuka halaman Transaction details.
2

Click Retry Payment Manually

Klik Retry Payment Manually di sudut kanan atas. Tombol ini hanya tersedia saat pembayaran memenuhi syarat.
3

Check the result

Dodo Payments membuat pembayaran baru untuk percobaan tersebut, dan pembayaran itu muncul di Activity Log. Jika pembebanan berhasil, langganan kembali ke active, dan tanggal penagihan berikutnya bergeser ke satu periode penagihan setelah percobaan ulang yang berhasil. Jika pemroses pembayaran belum menyelesaikan pembebanan, pembayaran akan ditampilkan sebagai sedang berlangsung hingga webhook payment.succeeded atau payment.failed melaporkan hasilnya.
Transaction details page for a failed payment showing the error code and message, an Activity Log, and a Retry Payment Manually button

Retry Payment Manually on the transaction details page of a failed renewal

Kelayakan

Dodo Payments hanya mengirimkan percobaan manual jika semua pemeriksaan dalam tabel ini terpenuhi. Kolom Reason code adalah nilai yang dikembalikan API: di reason pada GET /payments/{payment_id}/retry, dan sebagai error code pada POST /payments/{payment_id}/retry.
Manual Retry lebih terbatas daripada percobaan otomatis dalam satu hal: fitur ini mengharuskan langganan berada dalam status on_hold. Langganan past_due dalam masa tenggang tidak memenuhi pemeriksaan ini. Percobaan otomatis tetap berjalan untuk status nonaktif lainnya. Lihat Subscription Status Transitions.
Mencoba kembali hard decline pada kartu yang sama tidak akan berhasil, dan penolakan berulang dapat menurunkan tingkat otorisasi Anda. Jika alasannya adalah MANUAL_RETRY_HARD_DECLINE, minta pelanggan memperbarui metode pembayaran mereka. Subscription Dunning melakukan hal ini secara otomatis.

Batas Percobaan

Setiap invoice perpanjangan mengizinkan 3 percobaan manual, dengan masa cooldown di antaranya: Batas ini berlaku dalam test mode dan live mode. Saat batas menolak percobaan, API mengembalikan MANUAL_RETRY_LIMIT_REACHED (HTTP 429), dan isi error hanya memuat code serta message. Untuk mengetahui kapan percobaan berikutnya tersedia, periksa status percobaan dan baca retry_available_at. Nilainya adalah null setelah ketiga percobaan digunakan. Percobaan otomatis tidak dihitung dalam batas ini, dan percobaan manual tidak dihitung dalam 8 percobaan pada jadwal otomatis.

Percobaan Manual vs. Otomatis

Kedua jalur percobaan ini berbeda dalam hal-hal berikut:

Mencoba Kembali melalui API

Periksa kelayakan terlebih dahulu, lalu kirimkan percobaan ulang. Kedua endpoint menerima ID pembayaran yang gagal.

Memeriksa Apakah Pembayaran Dapat Dicoba Kembali

GET /payments/{payment_id}/retry tidak mengembalikan error untuk pembayaran yang tidak memenuhi syarat. Endpoint ini mengembalikan can_retry: false dengan kode reason, sehingga dashboard atau alat dukungan Anda dapat menampilkan status yang sama seperti dashboard Dodo Payments. Endpoint ini memerlukan peran Viewer.
Response

Mengirimkan Percobaan Manual

POST /payments/{payment_id}/retry membuat pembayaran baru dan membebankan metode pembayaran yang tersimpan. Endpoint ini memerlukan peran Editor. Contoh SDK menggunakan kembali client dari contoh sebelumnya.
Response

Respons Error

Saat percobaan tidak diizinkan, POST mengembalikan salah satu status HTTP berikut: Referensi Error Codes menjelaskan setiap kode.

Webhook

Manual Retry membuat pembayaran biasa, sehingga webhook yang sama akan aktif seperti pada percobaan perpanjangan lainnya: Pada objek pembayaran dalam event ini, retry_attempt bernilai 1 atau lebih tinggi dan subscription_id ditetapkan, sama seperti pada percobaan otomatis. Objek pembayaran tidak memiliki field yang menandai percobaan manual, jadi simpan payment_id dari respons percobaan jika Anda perlu membedakan percobaan manual dari percobaan terjadwal.

Payment Webhook Payloads

Skema payload lengkap untuk event pembayaran.

Terkait

Subscription Payment Retries

Jadwal back-off otomatis yang berjalan bersamaan dengan percobaan manual.

Subscription Dunning

Kirim email kepada pelanggan untuk memperbarui metode pembayaran mereka setelah hard decline.

Handle Payment Failures

Baca kode penolakan dan tentukan kapan percobaan ulang layak dilakukan.

Error Codes

Setiap kode MANUAL_RETRY_*, pemicunya, dan pesannya.
Terakhir diubah pada 26 September 2026