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-zero harus memenuhi minimum subscription untuk mata uang yang digunakan pelanggan: $1.00 untuk USD. Mata uang selain USD, EUR, dan GBP juga harus bernilai setidaknya $1.00. Subscription sebesar $0 juga didukung.
  • API key. Buat API key di Developer → API Keys dan simpan di environment variable DODO_PAYMENTS_API_KEY. Buat key dalam test mode selama proses pengembangan: contoh di halaman ini menggunakan test mode, dan key test mode hanya berfungsi dengan test mode. Lihat Authentication.
  • SDK untuk bahasa Anda. Node.js SDK memerlukan Node.js 20 atau yang lebih baru, Python SDK memerlukan Python 3.9 atau yang lebih baru, dan Go SDK memerlukan Go 1.22 atau yang lebih baru. Contoh cURL tidak memerlukan SDK.
Contoh webhook juga menggunakan package standardwebhooks. Instal dengan npm install standardwebhooks.

Pilih Jalur Integrasi

Overlay checkout 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 membangun integrasi ini untuk Anda, instal Agent Plugin.

Checkout Sessions

Buat pengalaman checkout yang aman dan di-host. Anda membuat session di server, lalu mengarahkan pelanggan 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 menyediakan setiap field yang wajib diisi. Buat session baru untuk setiap pelanggan dan setiap percobaan pembayaran.

Buat Checkout Session

Arahkan ke Checkout

Setelah membuat session, arahkan pelanggan ke checkout_url:
Untuk kustomisasi tingkat lanjut, lihat panduan lengkap Checkout Sessions dan API Reference.

Tangani Error

Saat request gagal, API mengembalikan HTTP status code dan body JSON dengan code dan message. Buat percabangan penanganan error berdasarkan code, bukan message. Untuk setiap code, penyebabnya, dan cara mengatasinya, lihat Error Codes. Pembayaran yang gagal dilaporkan secara terpisah: status pembayaran adalah failed, error_code memberikan alasannya, dan Anda menerima webhook payment.failed. Untuk menentukan apakah perlu mencoba lagi, lihat Handle Payment Failures. Payment link adalah URL yang membuka checkout untuk suatu produk, sehingga Anda dapat menerima pembayaran tanpa menulis kode. Query parameters mengisi detail pelanggan terlebih dahulu dan mengontrol formulir checkout. Saat pelanggan membuka link, checkout menyimpan parameter dalam session dan memperpendek URL menjadi parameter session, sehingga parameter tetap ada saat halaman dimuat ulang. 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 pelanggan 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 pelanggan memasukkan kode kupon.
number
Menetapkan jumlah yang ditagihkan, 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 khusus, misalnya metadata_orderId=123.

Isi Otomatis Informasi Pelanggan

Tambahkan field pelanggan sebagai query parameters untuk mempercepat checkout:
string
Nama lengkap pelanggan (diabaikan jika firstName atau lastName disediakan).
string
Nama depan pelanggan.
string
Nama belakang pelanggan.
string
Alamat email pelanggan.
string
Negara pelanggan (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 pelanggan 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

Setidaknya, dengarkan event berikut dalam alur one-time payment:
Selalu penuhi pesanan berdasarkan payment.succeeded dari webhook, bukan berdasarkan browser redirect. Redirect dapat terlewat jika pelanggan menutup tab, sedangkan webhook akan dicoba kembali sampai 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 menagih dalam mata uang tertentu, teruskan billing_currency dan billing_address.country saat membuat checkout session. Jika tidak disertakan, Adaptive Currency memilih mata uang dan negara berdasarkan alamat IP pelanggan, 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 menagih jumlah tetap dalam mata uang lain, gunakan Adaptive Currency, yang mengonversi harga dasar berdasarkan nilai tukar terkini, atau Localized Pricing, yang menetapkan harga tetap untuk setiap mata uang. Localized Pricing tidak berfungsi dengan Pay What You Want.

Pembelian Ulang Sekali Klik

Untuk menagih pelanggan 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 pelanggan yang sudah ada. Karena confirm adalah true, Anda juga harus meneruskan billing_address lengkap, atau hanya country dan zipcode saat minimal_address adalah true. Session langsung menagih metode pembayaran tersimpan, sehingga tidak mengembalikan checkout_url. Gunakan webhooks untuk mengetahui apakah pembayaran berhasil.

Halaman Terkait

Checkout Sessions

Panduan lengkap dengan opsi kustomisasi tingkat lanjut.

Overlay Checkout

Sematkan checkout sebagai overlay modal di halaman Anda.

Inline Checkout

Sematkan checkout langsung dalam tata letak halaman Anda.

Subscription Integration

Siapkan penagihan berulang.

Webhook Event Guide

Daftar lengkap semua event webhook.

API Reference

Dokumentasi Checkout Sessions API.
Terakhir diubah pada 26 September 2026