
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
Pengaturan Dasbor

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



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.

Kelayakan Pelanggan
Tetapkancustomer_eligibility untuk mengontrol pihak yang dapat menukarkan kode:

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_possiblemelalui API. - Minimum subtotal — kode hanya diterapkan saat cart mencapai subtotal ini.
0berarti tidak ada minimum. - Default — satu entri dapat ditandai sebagai default yang menjadi sumber konversi bagi mata uang lain yang belum dikonfigurasi.

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
- Pembeli memasukkan kode di kolom checkout.
- Diskon yang memenuhi syarat diterapkan dan total segera diperbarui.

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.Menumpuk Kode Diskon
Checkout sessions, pembayaran, dan subscription menerima hingga 20 kode yang ditumpuk melalui arraydiscount_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
Create discounts
Create discounts
Buat kode diskon secara terprogram dengan jenis dan jumlah.
API Reference
Lihat API pembuatan diskon.
List and retrieve
List and retrieve
Tampilkan semua diskon atau ambil detail untuk pengelolaan dan audit.
API Reference
Telusuri API listing dan retrieval.
Get discount by code
Get discount by code
Cari diskon menggunakan kode yang dapat dibaca manusia (misalnya, “SAVE20”), bukan ID internal.
API Reference
Ambil diskon berdasarkan nama kode.
Update discounts
Update discounts
Ubah konfigurasi diskon seperti jumlah, kedaluwarsa, atau pembatasan.
API Reference
Pelajari cara memperbarui detail diskon.
Validate discounts
Validate discounts
Periksa apakah diskon valid dan dapat diterapkan sebelum menerapkannya.
API Reference
Validasi penggunaan diskon.
Delete discounts
Delete discounts
Nonaktifkan atau hapus diskon yang tidak lagi diperlukan.
API Reference
Hapus diskon.
Manage the customer allow list
Manage the customer allow list
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.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.