Skip to main content

Prerequisites

To integrate the Dodo Payments API, you’ll need:
  • A Dodo Payments merchant account
  • API Credentials (API key and webhook secret key) from dashboard

Dashboard Setup

  1. Navigate to the Dodo Payments Dashboard
  2. Buat produk (pembayaran satu kali atau subscription). Produk subscription harus diberi harga minimal $1 (atau nilai setara dalam mata uang yang Anda pilih); jumlah di bawah minimum ini tidak didukung.
  3. Generate your API key:
    • Go to Developer > API
    • Detailed Guide
    • Copy the API key the in env named DODO_PAYMENTS_API_KEY
  4. Configure webhooks:
    • Go to Developer > Webhooks
    • Create a webhook URL for payment notifications
    • Copy the webhook secret key in env

Integration

Pilih jalur integrasi yang sesuai dengan kasus penggunaan Anda:
  • Checkout Sessions (direkomendasikan): Terbaik untuk sebagian besar integrasi. Buat session di server Anda lalu arahkan pelanggan ke checkout yang aman dan di-host.
  • Overlay Checkout: Gunakan jika Anda memerlukan pengalaman dalam halaman yang membuka checkout sebagai overlay modal di situs Anda.
  • Inline Checkout: Sematkan checkout langsung ke tata letak halaman Anda untuk pengalaman checkout yang sepenuhnya terintegrasi dan bermerek.
  • Static Payment Links: URL yang dapat langsung dibagikan tanpa kode untuk mengumpulkan pembayaran dengan cepat.
  • Dynamic Payment Links: Link yang dibuat secara terprogram. Namun, Checkout Sessions direkomendasikan karena menyediakan fleksibilitas yang lebih besar.
  • Mobile Checkout SDKs: Untuk aplikasi Android, iOS, React Native, dan Flutter native. Buat session di server Anda seperti di atas, lalu teruskan checkout_url ke SDK.
Overlay dan Inline Checkout hanya tersedia di browser — keduanya menyematkan checkout ke dalam halaman web. Jika Anda sedang membuat aplikasi mobile native, buat checkout session di server Anda dan buka dengan Mobile Checkout SDKs.

1. Checkout Sessions

Gunakan Checkout Sessions untuk membuat pengalaman checkout yang aman dan di-host untuk pembayaran satu kali atau subscription. Anda membuat session di server, lalu mengarahkan pelanggan ke checkout_url yang dikembalikan.
Checkout sessions berlaku selama 24 jam secara default. Jika Anda meneruskan confirm=true, sessions berlaku selama 15 menit dan semua field wajib harus disediakan.
1

Create a checkout session

Pilih SDK pilihan Anda atau panggil REST API.
2

Redirect customer to checkout

Setelah session dibuat, arahkan ke checkout_url untuk memulai alur yang di-host.
Gunakan Checkout Sessions untuk cara tercepat dan paling andal dalam mulai menerima pembayaran. Untuk kustomisasi lanjutan, lihat panduan Checkout Sessions lengkap dan API Reference.

2. Overlay Checkout

Untuk pengalaman checkout dalam halaman yang mulus, lihat integrasi Overlay Checkout kami yang memungkinkan pelanggan menyelesaikan pembayaran tanpa meninggalkan situs Anda.

3. Inline Checkout

Untuk pengalaman checkout yang sepenuhnya terintegrasi dan disematkan langsung di halaman Anda, gunakan integrasi Inline Checkout kami. Dengan ini, Anda dapat membuat ringkasan pesanan kustom dan mengendalikan sepenuhnya tata letak checkout, sementara Dodo Payments menangani pengumpulan pembayaran dengan aman. Static payment links memungkinkan Anda menerima pembayaran dengan cepat melalui URL sederhana. Anda dapat menyesuaikan pengalaman checkout dengan meneruskan query parameters untuk mengisi detail pelanggan terlebih dahulu, mengontrol field formulir, dan menambahkan metadata kustom.
1

Construct your payment link

Mulai dengan base URL dan tambahkan ID produk:
2

Add core parameters

Sertakan query parameters penting:
  • integer
    default:"1"
    Jumlah item yang dibeli.
  • string
    wajib
    URL untuk mengarahkan pengguna setelah pembayaran selesai.
URL pengalihan akan menyertakan detail pembayaran sebagai query parameters, misalnya:
https://example.com/?payment_id=pay_ts2ySpzg07phGeBZqePbH&status=succeeded&email=customer%40example.com

Jika produk mengaktifkan license keys, parameter license_key juga ditambahkan (dipisahkan koma untuk beberapa key):
https://example.com/?payment_id=pay_xxx&status=succeeded&license_key=LK-001&email=customer%40example.com
3

Pre-fill customer information (optional)

Tambahkan field pelanggan atau billing sebagai query parameters untuk menyederhanakan checkout.
  • string
    Nama lengkap pelanggan (diabaikan jika firstName atau lastName diberikan).
  • string
    Nama depan pelanggan.
  • string
    Nama belakang pelanggan.
  • string
    Alamat email pelanggan.
  • string
    Negara pelanggan.
  • string
    Alamat jalan.
  • string
    Kota.
  • string
    Provinsi atau negara bagian.
  • string
    Kode pos/ZIP.
  • boolean
    true atau false
4

Control form fields (optional)

Anda dapat menonaktifkan field tertentu agar menjadi hanya-baca bagi pelanggan. Ini berguna jika Anda sudah memiliki detail pelanggan, misalnya untuk pengguna yang sudah login.
Untuk menonaktifkan field, berikan nilainya dan atur flag disable… yang sesuai ke true:
Menonaktifkan field membantu mencegah perubahan yang tidak disengaja dan memastikan konsistensi data.
Mengatur showDiscounts=false akan menonaktifkan dan menyembunyikan bagian diskon dalam formulir checkout. Gunakan ini jika Anda ingin mencegah pelanggan memasukkan kode kupon atau promosi selama checkout.
5

Add advanced controls (optional)

  • string
    Menentukan mata uang pembayaran. Secara default menggunakan mata uang negara billing.
  • boolean
    default:"true"
    Menampilkan atau menyembunyikan pemilih mata uang.
  • integer
    Jumlah dalam sen (hanya untuk penetapan harga Pay What You Want).
  • string
    Field metadata kustom (misalnya, metadata_orderId=123).
6

Share the link

Kirim payment link yang telah selesai kepada pelanggan Anda. Saat mereka membukanya, semua query parameters dikumpulkan dan disimpan bersama session ID. URL kemudian disederhanakan agar hanya menyertakan parameter session, misalnya ?session=sess_1a2b3c4d. Informasi yang disimpan tetap ada setelah halaman dimuat ulang dan dapat diakses sepanjang proses checkout.
Pengalaman checkout pelanggan kini lebih sederhana dan dipersonalisasi berdasarkan parameter Anda.
Checkout Sessions lebih disarankan untuk sebagian besar kasus penggunaan karena menawarkan fleksibilitas dan kontrol yang lebih besar.
Dibuat melalui panggilan API atau SDK kami dengan detail pelanggan. Berikut contohnya: Ada dua API untuk membuat dynamic payment links: Panduan di bawah ini menjelaskan pembuatan one-time payment link. Untuk petunjuk terperinci tentang integrasi subscription, lihat Subscription Integration Guide ini.
Pastikan Anda meneruskan payment_link = true untuk mendapatkan payment link
Setelah membuat payment link, arahkan pelanggan Anda untuk menyelesaikan pembayaran mereka.

Menerapkan Webhooks

Siapkan endpoint API untuk menerima notifikasi pembayaran. Berikut contoh menggunakan Next.js:
Implementasi webhook kami mengikuti spesifikasi Standard Webhooks. Untuk definisi tipe webhook, lihat Webhook Event Guide kami.

Event yang Perlu Didengarkan

Aktifkan payload.type dan tangani event yang relevan dengan alur pembayaran satu kali. Minimal, dengarkan event berikut:
Selalu penuhi pesanan berdasarkan payment.succeeded dari webhook, bukan berdasarkan pengalihan browser — pengalihan dapat terlewat jika pelanggan menutup tab, sedangkan webhook akan dicoba ulang hingga diakui.
Jika Anda menjual produk digital dengan license keys, tangani juga license_key.created. Untuk daftar lengkap event — termasuk event subscription, entitlement, credit, recovery, dan dunning — lihat Webhook Event Guide. Anda dapat melihat project ini dengan implementasi demo di GitHub menggunakan Next.js dan TypeScript. Anda dapat melihat implementasi live di sini.

Hal Penting yang Perlu Diketahui tentang Checkout & Mata Uang

Jumlah Dynamic (Pay-What-You-Want) menggunakan mata uang dasar produk — bukan mata uang lokal sembarang — dan mata uang dasar dibatasi pada USD, INR, GBP, dan EUR. Untuk mengumpulkan jumlah tetap dalam mata uang lain, misalnya PHP, Anda tidak dapat meneruskannya secara langsung: gunakan Adaptive Pricing (mengonversi jumlah dasar berdasarkan FX live) atau Localized Pricing (harga tetap per mata uang, tetapi tidak kompatibel dengan Pay-What-You-Want).
Tetapkan mata uang secara eksplisit. Teruskan billing_currency dan billing_address.country pada checkout session. Jika tidak disertakan, mata uang dan negara akan dideteksi dari IP pelanggan (Adaptive Currency) dan mungkin tidak sesuai dengan yang ingin Anda kenakan.
Checkout sessions kedaluwarsa dalam 24 jam (15 menit jika confirm: true), dan setiap checkout_url hanya dapat digunakan satu kali — buat session baru untuk setiap pelanggan dan setiap upaya pembayaran, bukan menggunakan kembali link.
Pembelian ulang sekali klik. Untuk pelanggan yang kembali dengan metode pembayaran tersimpan, teruskan payment_method_id bersama confirm: true untuk menagih secara instan tanpa memilih metode.

API Reference Terkait

Create Checkout Session

API reference untuk membuat checkout sessions yang aman dan di-host untuk pembayaran satu kali dan subscription

Create Payment Link

API reference untuk membuat dynamic payment links secara terprogram
Terakhir diubah pada 31 Juli 2026