Langsung ke konten utama

Documentation Index

Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt

Use this file to discover all available pages before exploring further.

Fitur Baru

1. Hak Akses

Dodo Payments sekarang dilengkapi dengan Hak Akses terpadu — satu lapisan yang mendukung pengiriman otomatis untuk setiap integrasi pemenuhan. Satu produk dapat mengirimkan beberapa hak akses pada setiap pembelian yang berhasil atau langganan aktif.
Dasbor hak akses dengan daftar hak akses di kiri dan aktivitas pemberian di kanan
Lima integrasi platform baru Sampai sekarang, Dodo Payments mengirimkan kunci lisensi dan file digital secara otomatis saat pembelian. Hak akses memperluas cakupan tersebut ke lima platform tambahan — sehingga pelanggan yang membayar dapat diberikan akses ke komunitas Anda, kode Anda, atau konten Anda begitu pembayaran berhasil, tanpa pemenuhan manual di pihak Anda:
IntegrasiApa yang dikirimPerilaku pembatalan
DiscordMemberikan peran yang dipilih di server Discord Anda setelah pelanggan menyelesaikan OAuthPeran dihapus pada pembatalan/pengembalian dana
GitHubMenambahkan pelanggan sebagai kolaborator ke repository pribadi dengan tingkat izin yang Anda pilihKolaborator dihapus pada pembatalan/pengembalian dana
TelegramMengeluarkan tautan undangan permintaan bergabung satu kali untuk obrolan pribadi atau saluran via bot Telegram AndaPelanggan dikeluarkan dari obrolan pada pembatalan/pengembalian dana
FramerMembuka tautan remix template Framer yang dibatasi oleh kode aksesKode akses dinonaktifkan pada pembatalan/pengembalian dana
NotionMenduplicate halaman template Notion ke dalam workspace pelanggan setelah mereka mengotorisasi melalui OAuthHalaman yang dikirim diarsipkan pada pembatalan/pengembalian dana
Ini bergabung dengan integrasi Kunci Lisensi yang sudah ada (kunci unik dengan batas aktivasi dan kedaluwarsa) dan File Digital (URL unduhan yang ditandatangani sebelumnya untuk e-book, template, media), semuanya sekarang dikelola melalui siklus hidup pemberian yang sama. Apa yang Anda dapatkan dari dalam kotak
KemampuanDeskripsi
Template yang dapat digunakan kembaliDefinisikan sekali hak akses (batas aktivasi, bundel file, peran Discord, izin repo, dll.) dan lampirkan ke produk apa pun
Pemberian otomatisDikeluarkan pada payment.succeeded dan subscription.active, idempotent atas pembaruan dan reaktivasi
Pencabutan yang sadar siklus hidupDicabut pada subscription.cancelled, subscription.on_hold, subscription.expired, refund.succeeded, subscription.plan_changed, atau pencabutan manual API/dashboard — dengan revocation_reason terisi
OAuth + arus langsung platformOAuth untuk izin pelanggan Discord, GitHub, dan Notion; panggilan langsung platform untuk Telegram, Framer, dan File Digital
Deteksi DriftMendeteksi ketika peran Discord, kolaborator GitHub, atau halaman Notion tidak sinkron di tingkat platform dan dicabut dengan revocation_reason: platform_external
Enkripsi saat tidak aktifSemua token platform (OAuth, bot, instalasi aplikasi) disimpan dengan AES-256-GCM
Webhooks Empat acara siklus hidup baru dipicu untuk setiap pemberian:
AcaraDipicu ketika
entitlement_grant.createdPemberian baru dibuat untuk pelanggan
entitlement_grant.deliveredPemberian akses pelanggan
entitlement_grant.failedPengiriman tidak dapat diselesaikan; periksa error_code dan error_message
entitlement_grant.revokedAkses dicabut; periksa revocation_reason
Untuk integrasi baru, dengarkan entitlement_grant.delivered daripada payment.succeeded. Keberhasilan pembayaran tidak berarti pengiriman selesai, terutama untuk integrasi berbasis OAuth.
Pelajari lebih lanjut: Entitlements | Entitlement Grant Webhooks

2. Alasan Pembatalan Langganan di Portal Pelanggan

Saat pelanggan membatalkan langganan dari Portal Pelanggan, mereka sekarang diminta untuk berbagi mengapa mereka membatalkan sebelum mengonfirmasi. Alasan yang ditangkap disimpan di langganan sebagai cancellation_feedback, muncul di payload API dan webhook, dan tersedia di dasbor sehingga Anda dapat melihat pola churn secara sekilas.
Modal pembatalan Portal Pelanggan dengan dropdown 'Mengapa Anda membatalkan?' yang menunjukkan alasan seperti Terlalu mahal, Fitur yang hilang, dan Lainnya
Opsi alasan
NilaiLabel yang dihadapi pelanggan
too_expensiveTerlalu mahal
missing_featuresFitur yang hilang
switched_serviceBeralih ke layanan lain
unusedTidak menggunakannya cukup sering
customer_serviceLayanan pelanggan yang buruk
low_qualityKualitas rendah
too_complexTerlalu kompleks
otherLainnya
Di mana itu muncul
  • Objek Langganan: Field baru cancellation_feedback (salah satu nilai di atas) dan cancellation_comment (teks bebas opsional), diisi ketika pelanggan membatalkan
  • subscription.cancelled webhook: Kedua field disertakan dalam payload
  • API: Lulus cancellation_feedback dan cancellation_comment ke PATCH /subscriptions/{id} saat menjadwalkan atau menjalankan pembatalan secara programatik
// Reading the captured feedback
const subscription = await client.subscriptions.retrieve('sub_123');
console.log(subscription.cancellation_feedback); // e.g., "too_expensive"
console.log(subscription.cancellation_comment);  // e.g., "Switching to a competitor"
Gabungkan cancellation_feedback dengan Subscription Dunning untuk menyesuaikan email win-back Anda — misalnya, kirim kode diskon ke too_expensive pembatal dan survei “apa yang hilang?” ke missing_features pembatal.
Pelajari lebih lanjut: Portal Pelanggan | Subscription Webhooks

3. Jumlah Minimum Mandate yang Dapat Dikonfigurasi untuk E-Mandates INR

Anda sekarang dapat mengonfigurasi mandate floor untuk e-mandate INR pada langganan berulang kartu India. Sebelumnya, setiap langganan kartu India di bawah ₹15,000 menggunakan mandate on-demand tetap ₹15,000. Sekarang Anda dapat mengesampingkan lantai ini di tingkat pedagang — dan per sesi checkout atau langganan jika diperlukan. Jumlah mandate yang terdaftar dengan bank pelanggan adalah max(mandate_min_amount_inr_paise, billing_amount), jadi nilai ini bertindak sebagai plafon otorisasi yang dihadapi pelanggan setiap kali penagihan lebih rendah dari floor.
// Per-subscription override
const subscription = await client.subscriptions.create({
  product_id: 'prod_inr_monthly',
  customer: { email: 'customer@example.in' },
  billing: { country: 'IN' /* ... */ },
  mandate_min_amount_inr_paise: 2_000_000 // ₹20,000 ceiling for this subscription
});

// Or via a checkout session
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_inr_monthly', quantity: 1 }],
  mandate_min_amount_inr_paise: 2_000_000,
  return_url: 'https://yoursite.com/return'
});
Prioritas resolusi
  1. Override per permintaan (mandate_min_amount_inr_paise pada sesi checkout, pembayaran, atau langganan)
  2. Pengaturan tingkat pedagang dalam pengaturan bisnis
  3. Sistem default sebesar ₹15,000 (1,500,000 paise)
FieldJenisRentangBerlaku untuk
mandate_min_amount_inr_paiseinteger (INR paise)>= 1Langganan INR kartu India pada konektor non-Airwallex
Pengaturan ini hanya memengaruhi e-mandate yang terdaftar untuk kartu yang diterbitkan di India (Visa, Mastercard, RuPay) pada langganan INR. Langganan UPI mengikuti aliran AutoPay mereka sendiri dan tidak terpengaruh.
Pelajari lebih lanjut: Metode Pembayaran India | Langganan dengan Mandate RBI

4. Pengaturan Bisnis Inklusif Biaya Mata Uang Adaptif

Mata Uang Adaptif adalah fitur yang memungkinkan Anda mengenakan biaya kepada pelanggan dalam mata uang lokal mereka. Secara default, 2–4% biaya mata uang adaptif ditanggung oleh pelanggan dan ditambahkan di atas harga yang ditampilkan. Dengan pengaturan baru Biaya Inklusif, Anda dapat membalik ini: menjaga harga yang ditampilkan tidak berubah untuk pelanggan dan menanggung biaya sendiri. Di mana mengonfigurasinya Pergi ke Pengaturan → Bisnis, pastikan Penetapan Harga Adaptif diaktifkan, dan toggle Biaya Inklusif di bagian Mata Uang Adaptif. Override per permintaan Anda juga dapat menimpa default pedagang untuk checkout, pembayaran, dan langganan on-demand menggunakan boolean adaptive_currency_fees_inclusive :
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_abc', quantity: 1 }],
  adaptive_currency_fees_inclusive: true, // override business default
  return_url: 'https://yoursite.com/return'
});
| Mode | Yang dilihat pelanggan | Pedagang menyelesaikan | |------|-------------- ---|------------------| | Eksklusif (default) | Harga lokal + biaya 2–4% di atasnya | Harga dasar penuh | | Inklusif | Harga lokal (tidak berubah) | Harga dasar dikurangi biaya 2–4% |
Transaksi INR → INR selalu diperlakukan sebagai inklusif terlepas dari pengaturan bisnis atau override per permintaan.
Pelajari lebih lanjut: Mata Uang Adaptif

5. Aplikasi Dodo Payments Desktop

Aplikasi resmi Dodo Payments Desktop sekarang tersedia secara umum untuk macOS, Windows, dan Linux. Jalankan dasbor pembayaran Anda sebagai aplikasi asli yang cepat — tidak diperlukan tab peramban.
PlatformDownload
macOS (Apple Silicon)Dodo.Payments_<version>_aarch64.dmg
macOS (Intel)Dodo.Payments_<version>_x64.dmg
WindowsDodo.Payments_<version>_x64-setup.exe (atau .msi)
Linux (Debian/Ubuntu)Dodo.Payments_<version>_amd64.deb
Linux (Fedora/RHEL)Dodo.Payments-<version>-1.x86_64.rpm
Linux (AppImage, pembaruan otomatis)Dodo.Payments_<version>_amd64.AppImage
Apa yang ada di dalamnya
  • Binary asli kecil — dibangun dengan Tauri pada tampilan web asli sistem, total ~5 MB (tidak ada Chromium yang disertakan)
  • Ditandatangani dan dinotariskan — build macOS ditandatangani dengan Apple Developer ID dan dinotariskan, jadi tidak ada peringatan Gatekeeper
  • Pembaruan otomatis — memeriksa setiap 4 jam dan menerapkan pembaruan yang ditandatangani secara otomatis dari GitHub Releases (berfungsi di macOS, Windows, dan Linux AppImage)
  • System tray + menu bar — hide-to-tray di macOS, menu penuh File/Edit/View/Help dengan pintasan keyboard (⌘⇧H pergi ke dasbor, ⌘L salin URL saat ini, ⌘⌥I alat dev)
  • Dukungan deep-link — tautan otentikasi magic-link terbuka langsung di aplikasi
  • Multi-window — buka beberapa dasbor berdampingan
Ambil installer terbaru untuk platform Anda dari halaman Desktop App Releases. Reponya sepenuhnya open source.

6. Pembayaran Stablecoin (USDC, USDP, USDG)

Terima pembayaran stablecoin secara global dengan penyelesaian USD. Pelanggan membayar dari dompet stablecoin pilihan mereka di jaringan pilihan mereka; Anda menerima fiat USD tanpa eksposur ke volatilitas kripto, tidak ada chargeback, dan tidak ada infrastruktur perbankan yang diperlukan di pihak pelanggan. Mata uang dan jaringan yang didukung
StablecoinJaringan
USDCEthereum, Solana, Polygon, Base
USDPEthereum, Solana
USDGEthereum
Cakupan
DetailNilai
Mata uang penagihanUSD
Negara yang didukungGlobal (tidak termasuk India)
LanggananTidak didukung (hanya pembayaran satu kali)
Jumlah minimum$0.50
PenyelesaianUSD
Konfigurasi Lulus crypto di allowed_payment_method_types saat membuat sesi checkout:
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_123', quantity: 1 }],
  allowed_payment_method_types: ['crypto', 'credit', 'debit'],
  return_url: 'https://example.com/success'
});
Pelanggan ditunjukkan alamat dompet dan kode QR dengan jumlah stablecoin yang dihitung pada kurs real-time; setelah transaksi dikonfirmasi oleh blockchain, webhook payment.succeeded Anda dipicu dan pelanggan diarahkan ke halaman sukses Anda.
Pembayaran stablecoin tidak dapat dibatalkan secara desain — tidak ada chargeback. Kami merekomendasikan selalu menawarkan credit dan debit sebagai metode cadangan untuk pelanggan tanpa dompet stablecoin.
Pelajari lebih lanjut: Pembayaran Stablecoin

7. Impor Kunci Lisensi yang Ada

Anda sekarang dapat mengimpor kunci lisensi dari sistem lain ke Dodo Payments menggunakan Create License Key API. Ini membuka migrasi tanpa gangguan dari penyedia kunci lisensi eksternal mana pun, sehingga pelanggan Anda yang ada dapat terus mengaktifkan, memvalidasi, dan menonaktifkan kunci mereka di Dodo Payments tanpa penerbitan ulang.
const licenseKey = await client.licenseKeys.create({
  customer_id: 'cus_abc123',
  product_id: 'prod_456',
  key: 'YOUR-EXISTING-LICENSE-KEY',
  activations_limit: 5,
  expires_at: '2026-12-31T23:59:59Z',
});
Kunci yang diimpor diberi tag dengan source: "import" (dibandingkan dengan source: "auto" untuk kunci yang dihasilkan secara otomatis saat pembayaran), sehingga Anda dapat membedakan inventaris yang dimigrasi dari kunci yang dikeluarkan secara organik saat mengquery GET /license_keys. payment_id pada kunci yang diimpor adalah null karena mereka tidak terikat pada transaksi Dodo Payments.
Kunci lisensi yang dibuat atau diperbarui melalui API tidak memicu notifikasi email kepada pelanggan. Jika Anda perlu memberi tahu pelanggan tentang kunci yang diimpor, tangani itu secara terpisah dalam aplikasi Anda.
Bermigrasi dari Polar.sh atau Lemon Squeezy? dodo-migrate CLI mengotomatiskan impor produk, pelanggan, diskon, dan kunci lisensi secara massal dalam satu perintah.
Pelajari lebih lanjut: Kunci Lisensi | Create License Key API

8. require_phone_number untuk Sesi Checkout

Memaksa pelanggan untuk memberikan nomor telepon saat checkout dengan mengatur feature_flags.require_phone_number: true saat membuat sesi checkout. Nomor telepon menjadi field wajib di formulir checkout, dengan validasi formulir yang menampilkan “Nomor telepon diperlukan” jika pelanggan membiarkannya kosong.
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_abc', quantity: 1 }],
  feature_flags: {
    allow_phone_number_collection: true,
    require_phone_number: true
  },
  return_url: 'https://yoursite.com/return'
});
FlagDefaultPerilaku
allow_phone_number_collectiontrueMenampilkan field nomor telepon saat checkout
require_phone_numberfalseMembuat field nomor telepon wajib
require_phone_number: true memerlukan allow_phone_number_collection: true. API menolak sesi di mana require_phone_number true saat pengumpulan nomor telepon dinonaktifkan.
Berguna untuk SaaS B2B, industri yang diatur, atau aliran apa pun di mana Anda memerlukan saluran kontak yang terverifikasi untuk dukungan, tinjauan penipuan, atau kepatuhan.
Pelajari lebih lanjut: Fitur Checkout | Create Checkout Session API

Perbaikan Bug & Peningkatan

  • Perbaikan bug minor dan peningkatan stabilitas di seluruh platform
Last modified on May 22, 2026