Ikhtisar
Dodo Payments API menggunakan kode status HTTP standar dan kode kesalahan kustom untuk menunjukkan keberhasilan atau kegagalan permintaan API. Ketika terjadi kesalahan, API mengembalikan kode status HTTP yang sesuai dan respons JSON yang berisi informasi rinci tentang kesalahan tersebut. Setiap respons kesalahan mencakup:- Kode status HTTP yang menunjukkan kategori umum dari kesalahan
- Kode kesalahan spesifik yang mengidentifikasi sifat tepat dari kesalahan
- Pesan kesalahan yang dapat dibaca manusia yang menjelaskan apa yang salah
- Rincian tambahan tentang kesalahan jika berlaku
- Memecahkan masalah integrasi
- Menerapkan penanganan kesalahan yang tepat dalam aplikasi Anda
- Memberikan umpan balik yang berarti kepada pengguna akhir
- Mempertahankan sistem pemrosesan pembayaran yang kuat
Ini adalah kesalahan API dan logika bisnis. Untuk alasan penolakan kartu yang dikembalikan pada pembayaran yang gagal (seperti
INSUFFICIENT_FUNDS atau CARD_DECLINED), lihat referensi Kegagalan Transaksi sebagai gantinya.Kode Kesalahan API Standar
Format Respons Kesalahan
Ketika terjadi kesalahan, API mengembalikan respons JSON dengan struktur berikut:Referensi Kode Kesalahan
Kode kesalahan di bawah ini dikelompokkan berdasarkan area API yang mereka kaitkan. Setiap entri mencantumkan kondisi yang memicu dan pesan yang dikembalikan API.Autentikasi & Akun
-
UNAUTHORIZED- Pemicu: Tidak ada kunci API atau token/scope tidak valid
- Pesan: Anda tidak diizinkan untuk melakukan tindakan ini
-
MERCHANT_NOT_LIVE- Pemicu: Bisnis masih dalam Test Mode
- Pesan: Merchant belum live
-
BUSINESS_ARCHIVED- Pemicu: Permintaan apa pun yang menghadap pelanggan (checkout, payment link, storefront, Customer Portal, atau license key) untuk bisnis yang telah diarsipkan
- Pesan: Bisnis ini telah diarsipkan dan tidak lagi menerima permintaan
Payments & Checkout
-
CHECKOUT_SESSION_CONSUMED- Pemicu: Sesi checkout telah menghasilkan pembayaran
- Pesan: Sesi checkout telah digunakan
-
NO_ELIGIBLE_PAYMENT_METHODS- Pemicu: Tidak ada yang tersisa setelah pemfilteran
- Pesan: Tidak ditemukan metode pembayaran yang memenuhi syarat
-
PAYMENT_NOT_SUCCEEDED- Pemicu: Upaya untuk mengembalikan dana/memproses pembayaran yang tidak berhasil
- Pesan: Pembayaran yang diberikan belum berhasil
-
PREVIOUS_PAYMENT_PENDING- Pemicu: Upaya membuat charge saat charge sebelumnya berada dalam status non-terminal
- Pesan: Tidak dapat membuat charge baru karena pembayaran sebelumnya belum berhasil
-
UNSUCCESSFUL_PAYMENT_ID- Pemicu: Payment ID merujuk ke pembayaran yang tidak berhasil
- Pesan: Payment ID memiliki status tidak berhasil.
Connectors & BYOP
Error ini berkaitan dengan payment connector milik merchant (Bring Your Own Processor).-
BYOP_CONNECTOR_DISABLED- Pemicu: Memperbarui metode pembayaran pada subscription yang diarahkan melalui connector BYOP yang dinonaktifkan
- Pesan: Subscription diarahkan melalui connector milik merchant (BYOP) yang saat ini dinonaktifkan
-
BYOP_CUSTOM_INVOICE_ADDRESS_MISSING- Pemicu: Pembayaran BYOP yang diarahkan melalui merchant tidak memiliki alamat invoice kustom yang diperlukan
- Pesan: Alamat invoice kustom BYOP diperlukan ketika pembayaran diarahkan melalui connector milik merchant
-
CONNECTOR_LABEL_ALREADY_EXISTS- Pemicu: Membuat connector dengan label yang sudah ada
- Pesan: Connector dengan label ini sudah ada. Silakan pilih label lain.
Refunds
-
EXISTING_REFUND_REQUEST_PROCESSING- Pemicu: Permintaan refund sebelumnya masih diproses
- Pesan: Permintaan refund dengan status “Pending” masih diproses
-
LINE_ITEM_FULLY_REFUNDED- Pemicu: Upaya melakukan refund pada line item yang sudah sepenuhnya di-refund
- Pesan: Line item telah sepenuhnya di-refund dan tidak dapat di-refund lagi.
-
LINE_ITEM_NOT_FOUND- Pemicu: Item ID bukan bagian dari payment yang dirujuk
- Pesan: Line item tidak ditemukan dalam payment
-
LINE_ITEM_PRORATED- Pemicu: Refund atau pembaruan dicoba pada line prorata
- Pesan: Line item tidak dapat di-refund karena bersifat prorata
-
LINE_ITEM_REFUND_AMOUNT_TOO_HIGH- Pemicu: Jumlah refund > jumlah yang dibayar (termasuk pajak)
- Pesan: Jumlah refund yang diminta untuk line item , termasuk pajak, adalah , melebihi jumlah yang dibayar
-
LINE_ITEM_REFUND_AMOUNT_TOO_LOW- Pemicu: Jumlah refund di bawah ambang minimum
- Pesan: Jumlah refund yang diminta untuk line item adalah , terlalu rendah
-
NOTHING_TO_REFUND- Pemicu: Tidak ada jumlah yang dapat di-refund; semua line item positif telah sepenuhnya di-refund
- Pesan: Tidak ada jumlah yang tersisa untuk di-refund. Semua line item positif telah sepenuhnya di-refund.
-
PARTIAL_REFUND_NOT_ALLOWED- Pemicu: Upaya melakukan refund sebagian pada metode pembayaran yang hanya mendukung refund penuh
- Pesan: Refund sebagian tidak diizinkan untuk metode pembayaran ini
-
PAYMENT_ALREADY_REFUNDED- Pemicu: Refund duplikat
- Pesan: Payment ini sudah di-refund
-
PAYMENT_HAS_BEEN_REFUNDED- Pemicu: Payment telah sepenuhnya di-refund
- Pesan: Payment ID telah sepenuhnya di-refund.
-
REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT- Pemicu: Jumlah refund agregat > jumlah yang dibayar
- Pesan: Jumlah refund yang dihitung lebih besar daripada jumlah yang dibayar
-
REFUND_WINDOW_EXPIRED- Pemicu: Di luar periode refund yang diizinkan
- Pesan: Refund tidak dapat dimulai hari setelah pembuatan payment. Hubungi support@dodopayments.com.
-
ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED- Pemicu: Upaya melakukan refund pada payment dengan jumlah mata uang nol
- Pesan: Tidak dapat melakukan refund pada payment dengan jumlah mata uang nol
Subscriptions & Add-ons
-
ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED- Pemicu: Upaya menambahkan addon ke subscription berbasis penggunaan
- Pesan: Addon dalam Subscription tidak didukung untuk Usage Based Billing
-
ADDONS_NOT_ALLOWED_FOR_ON_DEMAND- Pemicu: Upaya menambahkan addon ke subscription on-demand
- Pesan: Addon tidak diizinkan untuk subscription on-demand
-
CANCEL_SCHEDULED_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Pemicu: Customer Portal mencoba membatalkan perubahan paket terjadwal saat bisnis menonaktifkan tindakan tersebut
- Pesan: Pembatalan perubahan paket terjadwal dinonaktifkan untuk customer portal.
-
CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Pemicu: Upaya menagih subscription yang dijadwalkan untuk dibatalkan
- Pesan: Subscription dijadwalkan untuk dibatalkan
-
CUSTOMER_HAS_EXISTING_SUBSCRIPTION- Pemicu: Membuat subscription untuk customer yang sudah memilikinya, ketika beberapa subscription per customer tidak diizinkan
- Pesan: Customer sudah memiliki subscription. Untuk mengizinkan beberapa subscription per customer, ubah pengaturan bisnis
-
DO_NOT_BILL_NOT_ALLOWED_IN_CUSTOMER_PORTAL- Pemicu: Mode proration
do_not_billdigunakan dalam perubahan paket Customer Portal - Pesan: Mode proration do_not_bill tidak diizinkan di customer portal
- Pemicu: Mode proration
-
DUPLICATE_ADDON_IDS_IN_REQUEST- Pemicu:
addon_idyang sama muncul lebih dari sekali dalam request - Pesan: ID addon duplikat tidak diizinkan
- Pemicu:
-
INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED- Pemicu: Perubahan paket pada subscription yang tidak aktif
- Pesan: Perubahan paket tidak didukung untuk subscription yang tidak aktif
-
INVALID_PRORATION_MODE_WITH_NEXT_BILLING_DATE- Pemicu: Mode proration selain
full_immediatelydigunakan denganeffective_at: next_billing_date - Pesan: Hanya mode proration full_immediately yang diizinkan dengan effective_at: next_billing_date
- Pemicu: Mode proration selain
-
MISSING_ADDON_IDS- Pemicu: Daftar
addon_idkosong atau berisi ID yang tidak dikenal - Pesan: Satu atau beberapa product ID tidak ada:
- Pemicu: Daftar
-
ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED- Pemicu: Pergantian paket tidak diizinkan untuk on-demand
- Pesan: Perubahan paket tidak didukung untuk subscription on-demand
-
ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED- Pemicu: Upaya menggunakan on-demand dengan Usage Based Billing
- Pesan: On Demand Subscriptions tidak didukung untuk Usage Based Billing
-
ONE_TIME_PRODUCTS_NOT_ALLOWED_FOR_ON_DEMAND- Pemicu: Produk satu kali ditambahkan ke subscription on-demand
- Pesan: Produk satu kali tidak diizinkan untuk subscription on-demand
-
PENDING_PLAN_CHANGE_EXISTS- Pemicu: Perubahan paket baru diminta saat perubahan sebelumnya masih menunggu pembayaran
- Pesan: Perubahan paket yang tertunda sudah ada untuk subscription ini. Silakan tunggu hingga pembayaran saat ini selesai.
-
PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Pemicu: Perubahan paket melalui Customer Portal saat bisnis menonaktifkannya
- Pesan: Perubahan paket subscription untuk customer portal dinonaktifkan.
-
PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Pemicu: Perubahan paket dicoba pada subscription yang dijadwalkan untuk dibatalkan
- Pesan: Subscription dijadwalkan untuk dibatalkan
-
SCHEDULE_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED- Pemicu: Menjadwalkan perubahan paket melalui Customer Portal saat bisnis menonaktifkannya
- Pesan: Penjadwalan perubahan paket dinonaktifkan untuk bisnis ini.
-
SCHEDULED_PLAN_CHANGE_EXISTS- Pemicu: Membuat perubahan paket terjadwal saat perubahan sudah ada
- Pesan: Perubahan paket terjadwal sudah ada untuk subscription ini. Batalkan perubahan terjadwal yang ada sebelum membuat perubahan baru.
-
SCHEDULED_PLAN_CHANGE_NOT_FOUND- Pemicu: Merujuk atau membatalkan perubahan paket terjadwal yang tidak ada
- Pesan: Tidak ditemukan perubahan paket terjadwal untuk subscription ini.
-
SUBSCRIPTION_EXPIRED- Pemicu: Penagihan melewati
expires_at - Pesan: Subscription telah kedaluwarsa; tidak dapat membuat charge baru
- Pemicu: Penagihan melewati
-
SUBSCRIPTION_INACTIVE- Pemicu: Status ≠
active - Pesan: Subscription tidak aktif
- Pemicu: Status ≠
-
SUBSCRIPTION_NOT_ON_DEMAND- Pemicu: Mengharapkan on-demand, tetapi mendapatkan interval tetap
- Pesan: Subscription sudah bukan on-demand
-
SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED- Pemicu: Percobaan pembayaran subscription melebihi jumlah maksimum
- Pesan: Batas maksimum 10 kali percobaan telah terlampaui untuk subscription ini
Products, Cart & Brands
-
BRAND_ALREADY_ARCHIVED- Pemicu: Mengarsipkan brand yang sudah diarsipkan
- Pesan: Brand sudah diarsipkan
-
BRAND_ARCHIVED- Pemicu: Memperbarui brand yang diarsipkan, mengirimkannya untuk verifikasi, atau menandai produk, koleksi produk, atau subscription baru ke dalamnya
- Pesan: Brand telah diarsipkan dan tidak dapat diperbarui
-
BRAND_ARCHIVE_TARGET_REQUIRED- Pemicu: Mengarsipkan brand yang masih memiliki produk, subscription aktif, atau koleksi produk tanpa target
move_products_to - Pesan: Brand memiliki 12 produk. Atur move_products_to ke brand target untuk memberi tag ulang pada produk tersebut.
- Pemicu: Mengarsipkan brand yang masih memiliki produk, subscription aktif, atau koleksi produk tanpa target
-
BRAND_MISMATCH- Pemicu: Item cart berasal dari brand yang berbeda
- Pesan: Semua item dalam product cart harus berasal dari brand yang sama
-
BRAND_NOT_ENABLED- Pemicu: Brand dinonaktifkan atau tidak aktif
- Pesan: Brand yang diberikan tidak diaktifkan
-
BRAND_SUBMISSION_NOT_ENABLED- Pemicu: Fitur pengiriman ulang verifikasi brand tidak diaktifkan
- Pesan: Pengiriman ulang verifikasi brand tidak diaktifkan
-
CANNOT_ARCHIVE_PRIMARY_BRAND- Pemicu: Mengarsipkan brand utama, yang brand ID-nya merupakan business ID
- Pesan: Brand utama tidak dapat diarsipkan
-
FILE_IN_USE- Pemicu: Menghapus file produk digital yang masih dirujuk oleh grant entitlement aktif
- Pesan: File digital dirujuk oleh grant aktif
-
INVALID_BRAND_ARCHIVE_TARGET- Pemicu:
move_products_tomenyebutkan brand yang sedang diarsipkan, brand yang telah diarsipkan, atau brand dari bisnis lain - Pesan: move_products_to harus berupa brand dari bisnis ini yang belum diarsipkan
- Pemicu:
-
INVALID_SUGGESTED_PRICE- Pemicu: Harga PWYW < harga minimum yang diizinkan
- Pesan: Suggested Price tidak boleh lebih rendah daripada harga minimum. Dalam kasus pay what you want, harga dianggap sebagai jumlah minimum yang diterima
-
LOCALIZED_PRICE_ALREADY_EXISTS- Pemicu: Harga terlokalisasi sudah ada untuk produk dan negara/mata uang ini
- Pesan: Harga terlokalisasi untuk produk dan negara/mata uang ini sudah ada
-
LOCALIZED_PRICE_DUPLICATES_BASE- Pemicu: Harga terlokalisasi menduplikasi mata uang/negara dasar produk
- Pesan: Harga terlokalisasi menduplikasi mata uang/negara dasar produk
-
LOCALIZED_PRICE_SHAPE_MISMATCH- Pemicu: Bentuk harga terlokalisasi tidak sesuai dengan
pricing_modeproduk - Pesan: Bentuk harga terlokalisasi tidak sesuai dengan pricing_mode produk
- Pemicu: Bentuk harga terlokalisasi tidak sesuai dengan
-
MISSING_PRODUCT_INFORMATION- Pemicu: Produk ada, tetapi informasi wajib tidak lengkap
- Pesan: Produk ada, tetapi informasi wajib lainnya tidak lengkap atau tidak valid
-
PAY_AS_YOU_WANT_AMOUNT_REQUIRED- Pemicu: Harga tidak ada untuk produk PWYW
- Pesan: Amount wajib diisi untuk produk pay as you want
-
PRODUCT_CART_EMTPY- Pemicu: Product cart kosong dikirimkan
- Pesan: product_cart kosong (kode error sengaja dieja
EMTPYagar sesuai dengan nilai persis yang dikembalikan API)
-
PRODUCT_COLLECTION_IS_DELETED- Pemicu: Mengoperasikan koleksi produk yang telah dihapus
- Pesan: Tidak ada pesan
-
PRODUCT_COLLECTION_MUST_HAVE_PRODUCTS- Pemicu: Menghapus produk terakhir (atau grup terakhir yang berisi produk) dari koleksi
- Pesan: Tidak dapat menghapus produk terakhir dalam koleksi. Arsipkan koleksi sebagai gantinya.
-
PRODUCT_IS_DELETED- Pemicu: Produk dihapus secara lunak
- Pesan: Tidak ada pesan
-
PRODUCT_PRICING_MODE_REQUIRED- Pemicu: Menambahkan harga terlokalisasi sebelum
pricing_modeproduk ditetapkan - Pesan: pricing_mode produk harus ditetapkan sebelum menambahkan harga terlokalisasi
- Pemicu: Menambahkan harga terlokalisasi sebelum
-
SLUG_ALREADY_TAKEN- Pemicu: Slug produk / URL singkat yang diminta sudah digunakan
- Pesan: Slug sudah digunakan
-
UNABLE_TO_EDIT_PRIMARY_BRAND- Pemicu: Upaya memperbarui brand utama melalui API biasa
- Pesan: Brand utama tidak dapat diperbarui melalui API endpoint ini.
Discounts
-
DISCOUNT_ALREADY_USED_ON_SUBSCRIPTION- Pemicu: Menerapkan kembali diskon yang sudah digunakan pada subscription ini
- Pesan: Diskon ini sudah digunakan pada subscription ini
-
DISCOUNT_CODE_ALREADY_EXISTS- Pemicu: Membuat kode diskon duplikat
- Pesan: Discount Code sudah ada
-
DISCOUNT_CODE_EXPIRED- Pemicu: Kode diskon melewati tanggal
expires_at - Pesan: Kode diskon kedaluwarsa
- Pemicu: Kode diskon melewati tanggal
-
DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED- Pemicu: Diskon digunakan kembali setelah
usage_limittercapai - Pesan: Batas penggunaan tidak boleh kurang dari times_used / Kode diskon telah mencapai batas penggunaan
- Catatan: Terminal — kode telah habis. Jangan coba lagi.
- Pemicu: Diskon digunakan kembali setelah
-
DISCOUNT_CONCURRENT_REDEMPTION- Pemicu: Penukaran kode yang sama lainnya menahan row lock batas penggunaan terlalu lama
- Pesan: Diskon sedang ditukarkan secara bersamaan; silakan coba lagi
- Catatan: Sementara. Kode mungkin masih memiliki kapasitas, sehingga request aman untuk dicoba lagi. Jangan tampilkan ini kepada customer sebagai “kode habis”.
-
DISCOUNT_CURRENCY_OPTION_INVALID- Pemicu:
currency_optionstidak valid saat create atau update - Pesan: Diskon flat memerlukan setidaknya satu opsi mata uang dengan default yang dapat ditentukan / Opsi mata uang duplikat tidak diizinkan / Hanya satu opsi mata uang yang dapat ditandai sebagai default
- Pemicu:
-
DISCOUNT_CUSTOMER_NOT_ELIGIBLE- Pemicu: Customer tidak memenuhi
customer_eligibilitykode (first_time,existing, atau tidak tercantum dalam daftar izin kodespecific) - Pesan: Customer tidak memenuhi syarat untuk kode diskon ini
- Pemicu: Customer tidak memenuhi
-
DISCOUNT_MINIMUM_SUBTOTAL_NOT_MET- Pemicu: Subtotal cart berada di bawah
minimum_subtotalyang dikonfigurasi untuk mata uang checkout - Pesan: Subtotal cart berada di bawah subtotal minimum yang diperlukan diskon
- Pemicu: Subtotal cart berada di bawah
-
DISCOUNT_NOT_YET_ACTIVE- Pemicu: Kode digunakan sebelum tanggal
starts_at - Pesan: Kode diskon belum aktif (starts_at berada di masa mendatang)
- Pemicu: Kode digunakan sebelum tanggal
-
DISCOUNT_PER_CUSTOMER_USAGE_LIMIT_EXCEEDED- Pemicu: Customer telah menukarkan kode sebanyak
per_customer_usage_limitkali - Pesan: Batas penggunaan per customer terlampaui untuk kode diskon ini
- Pemicu: Customer telah menukarkan kode sebanyak
-
DISCOUNT_NOT_APPLICABLE_TO_NEW_PRODUCT- Pemicu: Perubahan paket ke produk yang tidak berlaku untuk diskon yang ada
- Pesan: Diskon tidak berlaku untuk produk paket baru
-
DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND- Pemicu: Kode diterapkan pada subscription on-demand
- Pesan: Discount coupon tidak tersedia untuk subscription on-demand
-
DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT- Pemicu: Kode diterapkan pada produk yang tidak terkait
- Pesan: Discount coupon tidak tersedia untuk produk ini
-
INVALID_DISCOUNT_CODE- Pemicu: Kode tidak ada / tidak berlaku
- Pesan: Discount Code tidak valid / Discount Code tidak dapat diterapkan ke produk mana pun dalam cart
-
INVALID_PERCENTAGE- Pemicu: Nilai persentase > 100% (atau 10.000 basis points)
- Pesan: Nilai persentase tidak boleh lebih dari 10000 / Jumlah kode diskon tidak boleh lebih dari 100%
-
UNSUPPORTED_DISCOUNT_TYPE- Pemicu: Jenis diskon yang tidak didukung.
percentagedanflatdidukung; diskon jumlah per unit tidak didukung. - Pesan: Hanya kode diskon persentase dan flat yang didukung
- Pemicu: Jenis diskon yang tidak didukung.
License Keys
-
ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT- Pemicu: Aktivasi license key: limit baru < jumlah instance saat ini
- Pesan: Limit aktivasi baru tidak boleh kurang dari jumlah instance saat ini
-
INACTIVE_LICENSE_KEY- Pemicu: Status key ≠
active - Pesan: License key tidak aktif
- Pemicu: Status key ≠
-
LICENSE_KEY_LIMIT_REACHED- Pemicu: Aktivasi = limit
- Pesan: Limit aktivasi license key telah tercapai
-
LICENSE_KEY_NOT_FOUND- Pemicu: Instance ID atau key ID tidak valid
- Pesan: Instance license key tidak ditemukan atau bukan milik license key ini
-
NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS- Pemicu: Upaya menetapkan masa berlaku pada key berbasis subscription
- Pesan: Tidak dapat menetapkan tanggal kedaluwarsa untuk license key berbasis subscription
Usage-Based Billing & Meters
-
DUPLICATE_METER_IDS_IN_REQUEST- Pemicu: Meter ID yang sama muncul beberapa kali dalam request
- Pesan: Meter ID duplikat tidak diizinkan
-
INVALID_QUANTITY- Pemicu: Kuantitas tidak valid ditentukan untuk pricing berbasis penggunaan
- Pesan: Hanya 1 kuantitas yang diizinkan dalam produk harga berbasis penggunaan
-
METER_IS_DELETED- Pemicu: Upaya menggunakan meter yang telah dihapus
- Pesan: Meter sudah dihapus
-
MISSING_METER_IDS- Pemicu: Daftar Meter ID kosong atau berisi ID tidak valid
- Pesan: Satu atau beberapa meter ID tidak ada:
Credit-Based Billing
-
CREDIT_ENTITLEMENT_IS_DELETED- Pemicu: Mengoperasikan credit entitlement yang telah dihapus
- Pesan: Credit entitlement telah dihapus
-
CREDIT_ENTITLEMENT_NAME_ALREADY_EXISTS- Pemicu: Membuat credit entitlement dengan nama yang sudah ada
- Pesan: Credit entitlement dengan nama ini sudah ada
-
OVERAGE_LIMIT_EXCEEDED- Pemicu: Penggunaan atau pengurangan kredit akan melebihi batas overage yang dikonfigurasi
- Pesan: Batas overage terlampaui
Wallet
-
INSUFFICIENT_WALLET_FUNDS- Pemicu: Saldo wallet < jumlah debit
- Pesan: Dana dalam wallet tidak mencukupi
-
NEGATIVE_BALANCE_ADJUSTMENT- Pemicu: Upaya membuat saldo wallet menjadi negatif
- Pesan: Saldo wallet tidak boleh dibuat negatif
Currency, Tax & Region
-
EXCHANGE_RATE_NOT_FOUND- Pemicu: Tidak ada nilai tukar FX untuk pasangan mata uang
from → to - Pesan: Nilai tukar tidak ditemukan untuk mengonversi dari Currency ke Currency
- Pemicu: Tidak ada nilai tukar FX untuk pasangan mata uang
-
INVALID_TAX_ID- Pemicu: Validasi VAT/GST/TIN gagal
- Pesan: Tax Id tidak valid
-
REQUEST_AMOUNT_BELOW_MINIMUM- Pemicu: Jumlah < minimum produk
- Pesan: Jumlah tidak boleh kurang dari jumlah minimum yang ditentukan untuk produk
-
TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT- Pemicu: Total cart gabungan < minimum gateway
- Pesan: Jumlah minimum diperlukan untuk memproses pembayaran
-
UNSUPPORTED_BILLING_CURRENCY- Pemicu: Mata uang billing yang diminta tidak didukung untuk subscription ini
- Pesan: Mata uang billing selain USD tidak didukung untuk subscription
-
UNSUPPORTED_COUNTRY- Pemicu: Geo belum didukung
- Pesan: Negara saat ini tidak didukung
-
UNSUPPORTED_CURRENCY- Pemicu: Mata uang produk atau addon bukan mata uang yang dapat digunakan Dodo Payments untuk melakukan charge. Harga dasar dapat ditetapkan dalam mata uang apa pun yang dapat digunakan untuk charge, sehingga biasanya ini berarti kode mata uang tidak valid atau belum didukung.
- Pesan: Mata uang saat ini tidak didukung / Saat ini hanya produk USD dan INR yang didukung / Hanya USD dan INR yang didukung untuk harga addon / Hanya dapat meminta USD atau INR untuk billing_currency / Mata Uang Tidak Didukung / Mata uang tidak terduga untuk subscription kartu India
-
UNSUPPORTED_TAX_CATEGORY- Pemicu: String kategori pajak tidak terdapat dalam enum
- Pesan: Kategori saat ini tidak didukung
Validation & Requests
-
DUPLICATE_LINE_ITEMS_IN_REQUEST- Pemicu:
item_idyang sama muncul dua kali dalamitems[] - Pesan: item_ids duplikat ditentukan dalam array items
- Pemicu:
-
INVALID_QUERY_PARAMS- Pemicu: Parameter query yang saling eksklusif / tidak valid
- Pesan: Query params hanya boleh berisi time_frame atau (start, end)
-
INVALID_REQUEST_BODY- Pemicu: JSON tidak valid atau pelanggaran schema
- Pesan: Body request Anda tidak valid. Periksa header request dan object Anda.
-
INVALID_REQUEST_PARAMETERS- Pemicu: Semantik salah (misalnya tanggal di masa lalu)
- Pesan: Tidak dapat mengubah next_billing_date ke waktu yang telah berlalu
-
MAXIMUM_KEYS_REACHED- Pemicu: Metadata / custom-fields melebihi 50 pasangan
- Pesan: Melebihi 50 pasangan key-value
General & System
-
INTEGER_CONVERSION_FAILURE- Pemicu: Konversi integer ↔ string/desimal apa pun yang gagal di sisi server
- Pesan: Kegagalan Konversi Integer
-
INTERNAL_SERVER_ERROR- Pemicu: Exception yang tidak tertangani; Anda harus mencatat detailnya di sisi server
- Pesan: Tidak ada pesan publik (generic 500)
-
NOT_FOUND- Pemicu: 404 umum untuk resource apa pun yang tidak ditemukan
- Pesan: Item tidak ditemukan (atau pesan yang lebih spesifik)
-
TOO_MANY_REQUESTS- Pemicu: Batas laju 429
- Pesan: Tidak ada pesan
-
UNSUPPORTED_ACTION- Pemicu: Tindakan tidak didukung untuk jenis resource
- Pesan: Perubahan paket untuk subscription berbasis penggunaan tidak didukung
Praktik Terbaik
- Selalu tangani error dengan baik dalam aplikasi Anda
- Terapkan logging error yang tepat
- Gunakan pesan error yang sesuai untuk pengguna akhir
- Terapkan logika retry untuk error sementara
- Hubungi support untuk masalah yang belum terselesaikan