Skip to main content
Dengan pemenuhan license key manual, setiap pembelian membuat grant Pending yang menunggu Anda menyediakan nilai key, alih-alih Dodo Payments membuat key saat pembayaran. Key dapat berasal dari sistem Anda sendiri, vendor pihak ketiga, atau kumpulan kode terbatas. Setelah menyelesaikan panduan ini, Anda memiliki:
  • Produk dengan hak Kunci Lisensi yang diatur ke pemenuhan manual.
  • Sebuah webhook listener yang mendeteksi ketika pelanggan menunggu kunci.
  • Panggilan pemenuhan yang mengirim kunci dan memberi tahu pelanggan secara otomatis.

License Keys Overview

Siklus hidup license key lengkap dan pengaturan fulfillment_mode.

Fulfill License Key Grant API

Referensi API untuk endpoint yang Anda panggil untuk mengirimkan key.

Cara Kerjanya

Urutan di bawah ini menunjukkan satu pembelian, mulai dari checkout hingga pengiriman key: Pemenuhan manual hanya mengubah langkah penerbitan. Setelah dikirimkan, key berperilaku seperti key yang dibuat otomatis untuk aktivasi, validasi, penonaktifan, kedaluwarsa, dan pencabutan. Pembelian beberapa unit membuat satu grant Pending per unit, dan setiap grant memerlukan key sendiri.

Prasyarat

Untuk mengikuti panduan ini, Anda memerlukan:
  • Akun merchant Dodo Payments.
  • API key, yang dibuat di Developer → API Keys dan disimpan di DODO_PAYMENTS_API_KEY, serta webhook signing secret dari Developer → Webhooks, yang disimpan di DODO_PAYMENTS_WEBHOOK_KEY. Lihat panduan pembuatan API key.
  • Endpoint backend yang dapat menerima webhook.
Gunakan https://test.dodopayments.com dan kredensial test mode selama proses pengembangan. Saat beralih ke production, gunakan https://live.dodopayments.com dan key live mode.

Langkah 1 — Buat Entitlement License Key dalam Mode Manual

Entitlement adalah definisi yang dapat digunakan kembali tentang apa yang Anda kirimkan. Buat entitlement License Key dan atur fulfillment_mode ke manual.
1

Open Entitlements

Buka Entitlements di dashboard, lalu klik + untuk membuat entitlement.
2

Choose License Key

Pilih License Keys dan masukkan Name. Formulir ini memiliki kolom berikut:
  • Fulfillment Mode: secara default Automatic. Pengaturan ini mengaktifkan pemenuhan manual, dan Anda akan mengubahnya pada langkah berikutnya.
  • License Length: berapa lama setiap key yang diterbitkan tetap valid, atau No expiration.
  • Activations Limit: jumlah maksimum aktivasi per key, atau Unlimited.
  • Activation Message: pesan opsional untuk pelanggan yang ditampilkan saat pelanggan mengaktifkan key dan disertakan dalam email license key.
New License Key entitlement form with name, fulfillment mode, license length, activations limit, and activation message
3

Set Fulfillment Mode to Manual

Buka dropdown Fulfillment Mode dan ubah dari Automatic menjadi Manual. Pengaturan ini diperlukan untuk seluruh panduan: tanpa pengaturan ini, Dodo Payments membuat dan mengirimkan key secara otomatis serta tidak membuat grant yang tertunda. Dengan Manual dipilih, setiap pembelian membuat grant Pending untuk Anda penuhi. Klik Create Entitlement untuk menyimpan.
fulfillment_mode secara default adalah auto. Jika Anda menghilangkannya atau membiarkan entitlement yang sudah ada tanpa perubahan, entitlement tersebut tetap menggunakan pemenuhan otomatis. Hanya entitlement yang secara eksplisit diatur ke manual yang membuat grant tertunda.

Langkah 2 — Lampirkan Entitlement ke Produk

Buka produk yang ingin Anda jual, buka bagian Entitlements, lalu pilih License Key entitlement yang Anda atur ke Manual pada Langkah 1. Satu produk dapat mengirimkan license key ini bersama entitlement lain dalam pembelian yang sama. Jika Anda belum memiliki produk, buat produk sekali bayar atau subscription terlebih dahulu. Untuk menjualnya melalui checkout, lihat Integration Guide.
Product entitlements panel with License Key selected

Selecting the License Key entitlement in the product entitlements panel.

Mode pemenuhan adalah properti entitlement, bukan produk. Karena Anda mengaturnya ke Manual pada Langkah 1, setiap produk yang memiliki entitlement ini membuat grant license key Pending saat pembelian. Anda tidak perlu mengonfigurasi hal lain pada produk.

Langkah 3 — Deteksi Grant yang Tertunda

Saat pelanggan membeli produk, Dodo Payments membuat grant dengan status Pending tanpa key terlampir dan mengirimkan webhook entitlement_grant.created. Event ini menandakan bahwa pelanggan sedang menunggu key.

Dengarkan Webhook

Tambahkan endpoint webhook di Developer → Webhooks pada dashboard, lalu tangani grant license key yang tertunda. Webhook mengikuti spesifikasi Standard Webhooks, sehingga Anda dapat memverifikasinya dengan library standardwebhooks:
Payload grant berisi integration_type: "license_key", sehingga Anda dapat mengenali grant license key tanpa pencarian tambahan. Pengiriman webhook dapat berulang, jadi lewati event yang header webhook-id-nya sudah Anda proses. Lihat referensi webhook Entitlement Grant untuk payload lengkap.

Atau Lakukan Polling pada API List Grants

Jika Anda tidak ingin bergantung pada webhook, tampilkan daftar grant untuk entitlement License Key Anda dan filter berdasarkan status. Setiap grant pada entitlement License Key adalah grant license key, jadi Anda tidak memerlukan filter integration_type:

Langkah 4 — Kirimkan Key

Dapatkan nilai key dari sistem Anda sendiri, lalu kirimkan ke endpoint Fulfill License Key Grant. Panggilan ini memerlukan secret API key Anda dengan izin Editor. Endpoint ini bukan salah satu public license endpoint. SDK juga menyediakannya, misalnya sebagai client.entitlements.grants.fulfillLicenseKey() di TypeScript dan client.entitlements.grants.fulfill_license_key() di Python.

Kolom Request

string
wajib
String license key yang dikirimkan kepada pelanggan, maksimal 255 karakter. Spasi di sekelilingnya akan dihapus, dan nilai kosong atau yang hanya berisi spasi akan ditolak.
integer
Batas aktivasi per key, minimal 1. Jika tidak disertakan, Activations Limit dari entitlement akan digunakan.
string
Kedaluwarsa per key (ISO 8601). Jika tidak disertakan, key dari grant sekali bayar akan kedaluwarsa sesuai License Length entitlement, sedangkan key dari grant subscription tidak memiliki kedaluwarsa sehingga validitasnya mengikuti subscription.
Jika berhasil, grant berpindah ke Delivered, Dodo Payments mengirimkan key melalui email kepada pelanggan (email yang sama seperti pada pemenuhan otomatis), dan event webhook license_key.created serta entitlement_grant.delivered dipicu. Email tersebut berisi license key, produk, batas aktivasi, masa kedaluwarsa, dan instruksi aktivasi Anda:
Customer license key email showing the key, product, activation limit, expiry, and activation instructions

The license key email the customer receives once you fulfill the grant.

Anda tidak perlu mengirimkan key melalui email sendiri. Pengiriman terjadi secara otomatis saat grant dipenuhi.

Langkah 5 — Tangani Error dan Percobaan Ulang

Endpoint memvalidasi grant sebelum mengirimkan apa pun. Tangani respons berikut:
Pemenuhan aman untuk dicoba ulang pada error sementara seperti timeout dan respons 5xx. Setiap grant hanya dapat dipenuhi sekali, sehingga percobaan ulang setelah panggilan berhasil tetapi tidak menerima konfirmasi akan mengembalikan 409, bukan menerbitkan key kedua atau mengirimkan email duplikat. Gunakan id grant sebagai idempotency key.

Verifikasi Alur

Untuk menguji alur secara menyeluruh:
  1. Beli produk dalam test mode. Lihat panduan checkout.
  2. Pastikan webhook Anda menerima entitlement_grant.created dengan status: "Pending" dan integration_type: "license_key", atau pastikan grant muncul dalam respons List Grants yang difilter berdasarkan status=Pending.
  3. Panggil endpoint fulfill dengan test key.
  4. Pastikan respons menampilkan status: "Delivered" dengan license_key yang terisi, pelanggan menerima email key, dan entitlement_grant.delivered dipicu.
Setelah key dikirimkan, pelanggan dapat mengaktifkan dan memvalidasi key tersebut melalui public license endpoint, seperti key yang dibuat otomatis.

Referensi API Terkait

Create Entitlement

Buat entitlement License Key dengan fulfillment_mode: manual.

List Grants

Filter berdasarkan status dan customer_id untuk menemukan grant yang tertunda.

Fulfill License Key Grant

Kirimkan nilai key dan pindahkan grant ke Delivered.

Entitlement Grant Webhooks

Event entitlement_grant.* yang menandakan grant tertunda dan terkirim.
Terakhir diubah pada 26 September 2026