Skip to main content
Discount codes overview cover
Kode diskon memungkinkan Anda menjalankan promosi dan insentif yang ditargetkan. Buat diskon berbasis persentase, atur batas dan kadaluarsa, batasi pada produk, dan terapkan dengan mulus di checkout.

Checkout Sessions

Terapkan satu atau beberapa kode yang ditumpuk selama checkout yang di-host dengan discount_codes dan kontrol UI.

Validate Discount

Periksa apakah diskon valid berdasarkan ID-nya.

Get Discount by Code

Cari dan validasi diskon menggunakan nama kode yang dapat dibaca manusia (misalnya “SAVE20”).

Create Discount (API)

Buat kode diskon baru secara programatis.

List & Update Discounts

Telusuri dan kelola diskon yang ada; perbarui atau hapus sesuai kebutuhan.

Apa Itu Kode Diskon?

Kode diskon adalah token promosi yang mengurangi total pesanan saat checkout. Mereka ideal untuk:
  • Kampanye musiman: Black Friday, peluncuran produk, atau ulang tahun
  • Tawaran akuisisi: Insentif pembelian pertama atau hadiah rujukan
  • Retensi: Hadiah untuk memenangkan kembali atau loyalitas bagi pelanggan yang ada
  • Kesepakatan B2B: Harga yang dikontrak atau dinegosiasikan melalui kode pribadi

Manfaat Utama

  • Diskon fleksibel: Persentase atau jumlah tetap
  • Kontrol terarah: Batasi berdasarkan produk dan siklus langganan
  • Tata kelola kampanye: Tanggal kedaluwarsa dan batas penggunaan
  • Checkout yang mulus: Dukungan UI field dan API melalui sesi checkout
  • Diskon fleksibel: Diskon berbasis persentase atau jumlah tetap
  • Kode yang dapat ditumpuk: Terapkan hingga 20 kode per checkout, pembayaran, atau subscription — gabungkan kampanye (mis. WELCOME10 + BLACKFRIDAY20) tanpa membuat kode khusus
  • Kontrol tertarget: Batasi berdasarkan produk, siklus subscription, dan kelayakan pelanggan
  • Tata kelola kampanye: Tanggal mulai terjadwal, tanggal kedaluwarsa, serta batas penggunaan keseluruhan dan per pelanggan
  • Harga per mata uang: Tetapkan pengurangan tetap, batas jumlah, dan subtotal minimum per mata uang
  • Checkout tanpa hambatan: Dukungan kolom UI dan API melalui checkout sessions
Buat kode diskon di dasbor Dodo Payments Anda, lalu terapkan di checkout yang dihosting atau melalui API.

Pengaturan Dasbor

Daftar diskon di dashboard Dodo Payments yang menampilkan kode diskon yang ada

Penyiapan dashboard

  • Discount Name (wajib): Nama internal dan nama yang ditampilkan di dashboard
  • Code (wajib): String yang dimasukkan pelanggan saat checkout, atau buat kode acak menggunakan tombol yang tersedia
  • Type (wajib): Pilih Percentage (potongan persentase) atau Amount (pengurangan tetap)
  • Amount (wajib): Nilai persentase atau jumlah tetap untuk diskon Amount
  • Start Date (opsional): Jadwalkan agar kode menjadi aktif nanti; kosongkan untuk mengaktifkannya segera
  • Expiration Date (opsional): Tanggal setelah kode menjadi tidak valid
  • Usage Limit (opsional): Jumlah maksimum penukaran oleh seluruh pelanggan
  • Per-Customer Usage Limit (opsional): Jumlah maksimum penukaran oleh satu pelanggan. Nilainya harus kurang dari atau sama dengan batas penggunaan keseluruhan jika keduanya ditetapkan
  • Customer Eligibility (opsional): Batasi pihak yang dapat menukarkan kode — semua pelanggan, pelanggan baru, pelanggan lama, atau daftar yang dipilih secara manual
  • Currency Options (opsional): Nilai per mata uang — lihat Per-Currency Options
  • Product Restriction (opsional): Batasi penerapan pada produk yang dipilih
  • Subscription Cycle Limit (opsional): Jumlah siklus penagihan yang dikenai diskon
  • Preserve on Plan Change (opsional): Pertahankan diskon tetap aktif saat plan subscription berubah (preserve_on_plan_change)
  • Metadata (opsional): Tambahkan pasangan key–value khusus untuk pelacakan internal atau integrasi
Detail diskon — jenis, persentase atau jumlah, nama, kode, dan opsi mata uang:
Form New Discount Code yang menampilkan jenis, jumlah persentase, nama, kode, dan opsi mata uang
Batas penggunaan dan kedaluwarsa, dikonfigurasi sepenuhnya:
Panel batas penggunaan dan kedaluwarsa dengan tanggal mulai, tanggal kedaluwarsa, dan batas penggunaan yang dikonfigurasi
Bagian formulir berikutnya — kelayakan, pembatasan, dan opsi lanjutan:
Kelayakan, pembatasan, dan opsi lanjutan untuk kode diskon
Gunakan batas siklus untuk harga perkenalan pada subscription (misalnya, “potongan 50% selama 3 bulan”).
Persentase amount dinyatakan dalam basis points melalui API — 1500 berarti 15%. amount tetap merupakan nilai uang dan denominasi ditentukan oleh opsi mata uang kode.

Jenis Diskon

Kedua jenis dapat digabungkan dalam array discount_codes yang sama dan diterapkan sesuai urutan array.
Editor kode diskon dengan jenis Amount dipilih, menampilkan pengurangan tetap sebesar 500 INR

Kelayakan Pelanggan

Tetapkan customer_eligibility untuk mengontrol pihak yang dapat menukarkan kode:
Dropdown kelayakan pelanggan yang menampilkan opsi Any, First-time, Existing, dan Specific customer
Kode specific dimulai dengan nol pelanggan yang memenuhi syarat dan menolak setiap penukaran hingga Anda menambahkan pelanggan ke dalamnya. Tambahkan pelanggan melalui dashboard atau discount customers API.
Gabungkan kelayakan dengan Per-Customer Usage Limit untuk membatasi frekuensi setiap pelanggan dapat menukarkan kode, secara terpisah dari batas penggunaan keseluruhan.

Opsi Per Mata Uang

Opsi mata uang memungkinkan satu kode berfungsi dengan benar di seluruh mata uang yang Anda jual. Setiap entri menetapkan hal berikut untuk satu mata uang:
  • Amount — untuk diskon Amount, ini adalah pengurangannya; untuk diskon Percentage, ini membatasi jumlah maksimum yang dapat dipotong kode. Dipetakan ke max_amount_possible melalui API.
  • Minimum subtotal — kode hanya diterapkan saat cart mencapai subtotal ini. 0 berarti tidak ada minimum.
  • Default — satu entri dapat ditandai sebagai default yang menjadi sumber konversi bagi mata uang lain yang belum dikonfigurasi.
Panel opsi mata uang dengan jumlah per mata uang dan subtotal minimum untuk INR dan USD
Diskon Amount memerlukan setidaknya satu opsi mata uang dengan default yang dapat ditentukan, karena pengurangan tetap tidak memiliki arti tanpa mata uang. Opsi mata uang bersifat opsional untuk diskon Percentage.
Subtotal minimum selalu diukur berdasarkan harga asli cart, bukan total sementara di tengah proses stacking. Oleh karena itu, urutan stacking tidak pernah mengubah apakah minimum terpenuhi.

Pengalaman Checkout

  1. Pembeli memasukkan kode di kolom checkout.
  2. Diskon yang memenuhi syarat diterapkan dan total segera diperbarui.
Halaman checkout yang menampilkan diskon yang diterapkan pada total pesanan
Dalam Checkout Sessions, teruskan discount_codes (sebuah array) untuk menerapkan satu atau beberapa kode terlebih dahulu, dan tetapkan feature_flags.allow_discount_code untuk menampilkan kolom input. Kode diterapkan sesuai urutan array, hingga maksimum 20 kode.
Checkout sessions, pembayaran, dan subscription menerima hingga 20 kode yang ditumpuk melalui array discount_codes (maks. 20 entri). Kode diterapkan sesuai urutan array, sehingga kode pertama yang memenuhi syarat mengurangi harga dasar terlebih dahulu, kode berikutnya mengurangi harga yang sudah didiskon, dan seterusnya. Seluruh diskon yang diterapkan dikembalikan dalam respons di bawah discount_ids (pada pembayaran/subscription) dan discounts (detail per diskon yang lebih lengkap, termasuk posisi dan sisa siklus subscription).
Field tunggal discount_code deprecated, tetapi masih didukung sepenuhnya untuk backward compatibility — integrasi yang ada tetap berfungsi tanpa perubahan. Field ini tidak dapat digabungkan dengan discount_codes dalam request yang sama. Kami menyarankan migrasi ke discount_codes (format array) jika memungkinkan, bahkan untuk satu kode, agar dapat memanfaatkan stacking dan bentuk respons yang lebih lengkap.

Pengelolaan API

Buat kode diskon secara terprogram dengan jenis dan jumlah.

API Reference

Lihat API pembuatan diskon.
Tampilkan semua diskon atau ambil detail untuk pengelolaan dan audit.

API Reference

Telusuri API listing dan retrieval.
Cari diskon menggunakan kode yang dapat dibaca manusia (misalnya, “SAVE20”), bukan ID internal.

API Reference

Ambil diskon berdasarkan nama kode.
Ubah konfigurasi diskon seperti jumlah, kedaluwarsa, atau pembatasan.

API Reference

Pelajari cara memperbarui detail diskon.
Periksa apakah diskon valid dan dapat diterapkan sebelum menerapkannya.

API Reference

Validasi penggunaan diskon.
Nonaktifkan atau hapus diskon yang tidak lagi diperlukan.

API Reference

Hapus diskon.
Untuk diskon dengan customer_eligibility yang ditetapkan ke specific, kelola pelanggan yang dapat menukarkannya:
  • GET /discounts/{discount_id}/customers — tampilkan daftar pelanggan yang ditambahkan (berhalaman, hingga 100 per halaman).
  • POST /discounts/{discount_id}/customers — tambahkan pelanggan berdasarkan ID. Pemanggilan ini idempotent dan menerima hingga 1000 ID, yang semuanya harus sudah ada dalam bisnis Anda. Respons hanya mengembalikan ID yang dikirim dalam request tersebut, jadi gunakan endpoint list untuk membaca seluruh allow list.
  • DELETE /discounts/{discount_id}/customers/{customer_id} — lepaskan satu pelanggan.

Kasus Penggunaan Umum

  • Penawaran perkenalan: Promosi peluncuran berbatas waktu untuk produk baru
  • Volume besar atau B2B: Diskon berdasarkan kontrak untuk kumpulan produk tertentu
  • Retensi: Kode win-back dalam alur kerja pencegahan churn
  • Kampanye musiman: Promosi berdasarkan hari raya atau acara tertentu

Contoh Integrasi

Membuat diskon dengan metadata

Tambahkan pasangan key–value khusus untuk pelacakan internal.
Gunakan metadata untuk menandai diskon berdasarkan kampanye, sumber, atau ID referensi internal agar Anda dapat merekonsiliasi penggunaan dan mengukur ROI di kemudian hari.

Menerapkan diskon dalam Checkout Sessions

Terapkan satu atau beberapa diskon yang ditumpuk terlebih dahulu dan tampilkan UI input kode.

Menerapkan diskon saat perubahan plan

Tawarkan harga promosi saat pelanggan melakukan upgrade atau downgrade subscription.
Baca semua diskon yang diterapkan pada subscription melalui array discounts yang baru pada respons subscription. Setiap entri mencakup discount_id, position, cycles_remaining (untuk subscription), dan kode asli.

Mengaktifkan input diskon tanpa penerapan awal

Biarkan pelanggan memasukkan kode saat checkout tanpa mengirimkan kode terlebih dahulu.

Praktik Terbaik

  • Beri nama dengan jelas: Gunakan kode yang mudah dikenali dan sesuai dengan nama kampanye
  • Batasi waktu: Tambahkan tanggal kedaluwarsa untuk mendorong urgensi dan mencegah penyalahgunaan
  • Tentukan cakupan dengan bijak: Batasi pada produk tertentu untuk menghindari kebocoran margin
  • Validasi lebih awal: Periksa penerapan kode sebelum mengonfirmasi checkout
  • Pantau dampak: Lacak penggunaan dan konversi berdasarkan kampanye
Kode diskon adalah pengungkit yang kuat untuk akuisisi dan retensi. Mulailah dengan penawaran sederhana yang memiliki nama jelas, lakukan validasi secara menyeluruh, lalu iterasikan berdasarkan performa.
Terakhir diubah pada 6 Agustus 2026