Skip to main content

Checkout Sessions

Buat checkout yang aman dan di-host untuk pembayaran satu kali dan subscription.

Payment Links

Bagikan URL untuk mengumpulkan pembayaran tanpa kode.

Webhooks

Dengarkan payment events dan penuhi pesanan.

API Reference

Dokumentasi endpoint lengkap dan pengujian langsung.

Prasyarat

Sebelum memulai, Anda memerlukan:
  • Akun Dodo Payments.
  • Setidaknya satu produk. Buat produk di Products pada dashboard. Produk subscription dengan harga non-nol harus memiliki harga minimal $1, atau nilai setara dalam mata uangnya. Subscription $0 juga didukung.
  • API key. Buat di Developer → API Keys dan simpan di environment variable DODO_PAYMENTS_API_KEY. Buat key dalam test mode saat mengembangkan: contoh di halaman ini menggunakan test mode, dan key test mode hanya berfungsi dengan test mode. Lihat Authentication.

Pilih Jalur Integrasi

Overlay dan inline checkout hanya berjalan di halaman web. Dalam aplikasi mobile native, buat checkout session di server Anda dan buka checkout_url dengan mobile checkout SDK. Untuk meminta coding agent membuat integrasi ini, instal Agent Plugin.

Checkout Sessions

Buat pengalaman checkout yang aman dan di-host. Anda membuat session di server, lalu mengarahkan customer ke checkout_url yang dikembalikan.
Setiap checkout_url hanya dapat digunakan sekali dan kedaluwarsa setelah 24 jam, atau setelah 15 menit jika Anda meneruskan confirm: true. Dengan confirm: true, Anda juga harus memberikan setiap field yang diperlukan. Buat session baru untuk setiap customer dan setiap percobaan pembayaran.

Buat Checkout Session

Arahkan ke Checkout

Setelah membuat session, arahkan customer ke checkout_url:
Untuk kustomisasi lanjutan, lihat panduan lengkap Checkout Sessions dan API Reference.
Payment link adalah URL yang membuka checkout untuk suatu produk, sehingga Anda dapat mengumpulkan pembayaran tanpa menulis kode. Query parameters mengisi detail customer terlebih dahulu dan mengontrol formulir checkout. Saat customer membuka link, checkout menyimpan parameters dalam session dan mempersingkat URL menjadi parameter session, sehingga refresh halaman tetap mempertahankannya. Static payment link adalah URL yang Anda buat sekali dan bagikan berkali-kali. Base URL-nya adalah:
Tambahkan query parameters untuk menyesuaikan checkout:
integer
default:"1"
Jumlah item yang akan dibeli.
string
wajib
Payment links menggunakan redirect_url. Checkout Sessions API menggunakan return_url untuk tujuan yang sama.URL untuk mengarahkan setelah pembayaran. Dodo Payments menambahkan detail pembayaran sebagai query parameters, misalnya https://example.com/?payment_id=pay_ts2ySpzg07phGeBZqePbH&status=succeeded&email=customer%40example.com. Jika produk menerbitkan license keys, parameter license_key juga ditambahkan, dengan beberapa key dipisahkan oleh koma.
string
Menentukan mata uang pembayaran. Default-nya adalah mata uang negara penagihan.
boolean
default:"true"
Menampilkan atau menyembunyikan pemilih mata uang.
boolean
default:"true"
Menampilkan atau menyembunyikan bagian diskon. Atur ke false untuk mencegah customer memasukkan kode kupon.
number
Menetapkan jumlah yang dikenakan, dalam unit utama mata uang, misalnya 12.5 untuk $12.50. Hanya berfungsi dengan produk Pay What You Want, dan diabaikan jika nilainya di bawah harga minimum produk.
paymentAmount menggunakan unit utama mata uang (12.5 adalah $12.50). Field Checkout Sessions API product_cart[].amount menggunakan unit terkecil mata uang (1250 adalah $12.50). Lihat Dynamic Pricing.
string
Field metadata kustom, misalnya metadata_orderId=123.

Isi Terlebih Dahulu Informasi Customer

Tambahkan field customer sebagai query parameters untuk memperlancar checkout:
string
Nama lengkap customer (diabaikan jika firstName atau lastName diberikan).
string
Nama depan customer.
string
Nama belakang customer.
string
Alamat email customer.
string
Negara customer (kode ISO 3166-1 alpha-2).
string
Alamat jalan.
string
Kota.
string
Negara bagian atau provinsi.
string
Kode pos atau ZIP.

Nonaktifkan Field Formulir

Untuk mencegah customer mengubah informasi yang telah diisi, nonaktifkan field dengan memberikan nilainya dan mengatur flag disable... yang sesuai ke true:
Menonaktifkan field mencegah perubahan yang tidak disengaja dan memastikan konsistensi data.
Endpoint POST /payments dan POST /subscriptions sudah deprecated. Gunakan Checkout Sessions untuk integrasi baru.
Untuk integrasi yang sudah ada dan menggunakan dynamic payment links, teruskan payment_link: true ke Create One-Time Payment atau Create Subscription untuk membuat link. Contoh di bawah membuat one-time payment link. Untuk subscription, lihat Subscription Integration Guide.

Webhooks

Webhooks memberi tahu server Anda saat pembayaran berhasil atau gagal, sehingga Anda dapat memenuhi pesanan.

Buat Webhook Endpoint

Buka Developer → Webhooks di dashboard dan tambahkan URL endpoint Anda. Salin signing secret endpoint ke environment variable DODO_PAYMENTS_WEBHOOK_KEY. Berikut contoh menggunakan Next.js:
app/api/webhooks/dodo/route.ts
Implementasi webhook kami mengikuti spesifikasi Standard Webhooks.

Event yang Perlu Didengarkan

Minimal, dengarkan event berikut dalam alur pembayaran satu kali:
Selalu penuhi pesanan berdasarkan payment.succeeded dari webhook, bukan berdasarkan redirect browser. Redirect dapat terlewat jika customer menutup tab, sedangkan webhook akan dicoba ulang hingga diakui.
Jika Anda menjual produk dengan license keys, tangani juga license_key.created. Untuk daftar lengkap event, termasuk event subscription, entitlement, credit, recovery, dan dunning, lihat Webhook Event Guide. Untuk contoh Next.js dan TypeScript lengkap, lihat demo repository dan live deployment-nya.

Mata Uang dan Alamat Penagihan

Untuk mengenakan biaya dalam mata uang tertentu, teruskan billing_currency dan billing_address.country saat membuat checkout session. Jika tidak menyertakannya, Adaptive Currency memilih mata uang dan negara dari alamat IP customer, yang mungkin bukan mata uang yang ingin Anda gunakan untuk penagihan. Jumlah Pay What You Want menggunakan mata uang dasar produk, yang harus berupa USD, GBP, atau EUR. Untuk mengumpulkan jumlah tetap dalam mata uang lain, gunakan Adaptive Currency, yang mengonversi harga dasar Anda berdasarkan nilai tukar langsung, atau Localized Pricing, yang menetapkan harga tetap per mata uang. Localized Pricing tidak berfungsi dengan Pay What You Want.

Pembelian Ulang Sekali Klik

Untuk menagih customer yang kembali menggunakan metode pembayaran tersimpan, teruskan payment_method_id bersama confirm: true. payment_method_id hanya diterima jika confirm adalah true, dan Anda juga harus meneruskan customer_id milik customer yang sudah ada. Karena confirm adalah true, Anda juga harus meneruskan billing_address yang lengkap. Session menagih metode pembayaran tersimpan secara langsung, sehingga tidak mengembalikan checkout_url. Gunakan webhooks untuk mengetahui apakah pembayaran berhasil.

Halaman Terkait

Checkout Sessions

Panduan lengkap dengan opsi kustomisasi lanjutan.

Overlay Checkout

Sematkan checkout sebagai overlay modal di halaman Anda.

Inline Checkout

Sematkan checkout langsung dalam tata letak halaman Anda.

Subscription Integration

Siapkan recurring billing.

Webhook Event Guide

Daftar lengkap semua webhook events.

API Reference

Dokumentasi Checkout Sessions API.
Terakhir diubah pada 26 September 2026