Skip to main content
Entitlement mengubah pembayaran yang berhasil atau subscription aktif menjadi akses: license key di inbox pelanggan, feature flag yang diperiksa oleh aplikasi Anda, role Discord, repository GitHub, template Notion, link remix Framer, undangan chat Telegram, atau kumpulan file yang dapat diunduh. Dodo Payments menerbitkan, melacak, dan mencabut akses tersebut secara otomatis saat lifecycle pembayaran berubah.
Entitlements dashboard with a list of entitlements on the left and grant activity on the right

The Entitlements dashboard. Each entitlement is a reusable template; the right pane shows individual customer grants.

Apa Itu Entitlement?

Entitlement adalah definisi yang dapat digunakan kembali untuk sesuatu yang Anda berikan kepada pelanggan, seperti license key Pro, role Discord “Patrons”, akses ke repository GitHub privat, atau kumpulan e-book yang dapat diunduh. Anda mengaitkan entitlement ke produk, lalu Dodo Payments mengirimkannya saat pelanggan membayar. Saat pelanggan membeli produk, Dodo Payments membuat grant: penerbitan entitlement tersebut untuk satu pelanggan. Grant memiliki salah satu dari empat status: Pending saat delivery sedang berlangsung, Delivered setelah pelanggan mendapatkan akses, Failed jika delivery tidak dapat diselesaikan, dan Revoked saat akses dicabut.
Entitlement mengatur fulfillment (apakah pelanggan memiliki akses?). Credits mengatur consumption (berapa banyak yang dapat mereka gunakan?). Anda dapat mengaitkan keduanya ke produk yang sama. Lihat Credit-Based Billing untuk credits.

Available Integrations

Setiap entitlement dikirim melalui satu integration. Pilih integration yang sesuai dengan apa yang Anda jual.

License Keys

Generate unique license keys with activation limits and expiry. Best for software, plugins, and CLIs.

Digital Files

Kirim file yang dapat diunduh, seperti e-book, template, dan media, dengan URL download yang telah ditandatangani serta instruksi opsional.

Feature Flags

Batasi feature di aplikasi Anda sendiri berdasarkan pembelian. Dikirim saat pembuatan, diperiksa melalui API, dan dicabut saat pembatalan.

Discord

Berikan role kepada pelanggan di server Discord Anda saat mereka membeli. Role tersebut dihapus secara otomatis saat pembatalan.

GitHub

Add customers as collaborators to a private repository at the permission level you choose.

Telegram

Add customers to a private Telegram chat or channel after purchase.

Framer

Unlock a Framer template remix link for paying customers.

Notion

Duplicate a Notion template into the customer’s workspace on purchase.

How Grants Work

Grant mengikuti event pembayaran dan subscription yang sama dengan yang Anda terima sebagai webhook. Dodo Payments membuat dan mencabut grant untuk pembelian secara otomatis berdasarkan lifecycle pembayaran, sehingga Anda tidak perlu memanggil grant API sendiri.

Grant Lifecycle

Grant berpindah melalui status berikut:
1

Created

Dodo Payments membuat grant saat pembayaran selesai atau subscription menjadi aktif. Grant feature flag dimulai sebagai Delivered. Grant license key juga dimulai sebagai Delivered saat entitlement menggunakan fulfillment_mode: auto (default). Dalam fulfillment_mode: manual, grant dimulai sebagai Pending tanpa key sampai Anda memberikannya melalui Fulfill License Key Grant. Setiap integration lainnya dimulai sebagai Pending.Integration berbasis OAuth (Discord, GitHub, Notion) menyediakan oauth_url yang dikunjungi pelanggan untuk memberikan persetujuan. Dodo Payments mencoba membuat URL ini saat membuat grant. Jika gagal, field tetap null sampai pelanggan memulai accept flow dari email delivery atau Customer Portal. Integration platform-direct (Telegram, Framer, Digital Files) tetap Pending hanya selama delivery disiapkan, lalu berpindah ke Delivered.
2

Delivered

Saat delivery selesai, grant berpindah ke Delivered dan delivered_at ditetapkan. Delivery selesai saat license key dibuat, role ditetapkan, akses repository diberikan, link file ditemukan, atau OAuth flow selesai.
3

Failed

Jika pemanggilan integration menghasilkan error yang tidak dapat dicoba ulang, seperti token OAuth yang dicabut, izin yang ditolak, atau file yang sudah tidak ada, grant berpindah ke Failed. Field error_code dan error_message mencatat alasannya.
4

Revoked

Saat akses dicabut, misalnya karena subscription dibatalkan, refund diterbitkan, atau Anda mencabut grant, grant berpindah ke Revoked. Field revocation_reason mencatat pemicunya.

Perilaku Grant Berdasarkan Event

Setiap event pembayaran dan subscription mengubah grant sebagai berikut:
Grant yang digerakkan oleh subscription bersifat idempotent berdasarkan (entitlement, customer, subscription), sehingga renewal dan reaktivasi tidak membuat grant duplikat. Grant satu kali bersifat idempotent berdasarkan (entitlement, customer, payment).

Buat Entitlement Pertama Anda

1

Open Entitlements

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

Pick an Integration

Pilih jenis integration: License Key, Digital Files, Feature Flag, Discord, GitHub, Telegram, Figma, Framer, atau Notion. Untuk integration platform, hubungkan akun Anda terlebih dahulu jika belum melakukannya.
3

Configure Delivery

Isi field untuk integration tersebut. Misalnya, GitHub meminta repository dan tingkat izin, Discord meminta server dan role opsional, sedangkan License Key meminta batas aktivasi dan durasi license.
Formulir Entitlement Baru dengan selector integration dan field konfigurasi

Creating a GitHub entitlement. Each integration shows the fields it needs.

4

Save

Klik Create Entitlement. Sekarang Anda dapat mengaitkan entitlement ke produk apa pun.

Kaitkan Entitlement ke Produk

Buka produk, masuk ke bagian Entitlements, lalu pilih entitlement yang akan dikirim saat produk dibeli. Satu produk dapat mengirim beberapa entitlement sekaligus. Misalnya, plan Pro dapat mencakup license key, akses GitHub, dan role Discord.
Panel pemilihan entitlement produk yang menampilkan checkbox untuk setiap entitlement yang tersedia

Attaching entitlements to a product. Selected entitlements are delivered on every successful purchase or active subscription.


Pengalaman Pelanggan

Email dan Customer Portal

Setelah pembelian, pelanggan menerima email delivery berisi license key, link download, link undangan OAuth, atau undangan platform yang berlaku untuk entitlement pada produk. Detail yang sama tetap tersedia di Customer Portal, di bagian riwayat pesanan mereka, selama grant masih aktif.

Delivery Berbasis OAuth

Akses subscriber Discord, GitHub, dan Notion mengharuskan pelanggan mengotorisasi Dodo Payments untuk memberikan akses tersebut. Grant ini tetap Pending sampai pelanggan menyelesaikan OAuth flow dari link di email atau Customer Portal. Setelah pelanggan memberikan otorisasi, grant berpindah ke Delivered dan Dodo Payments menyediakan akses platform.

Pencabutan

Saat grant dicabut, Dodo Payments menghapus akses di platform: menghapus role Discord, menghapus collaborator GitHub, atau menonaktifkan license key. Pelanggan melihat perubahan tersebut di Customer Portal.
Untuk Digital Files, pencabutan menghentikan URL download baru yang telah ditandatangani, tetapi tidak membatalkan salinan yang sudah diunduh pelanggan. Rencanakan pembatasan konten Anda dengan mempertimbangkan hal ini.

Kelola Grant

Buka entitlement apa pun dari dashboard untuk melihat grant-nya. Panel detail menampilkan jumlah total yang diberikan, filter status, dan satu baris untuk setiap grant berisi pelanggan, tanggal akses, status, serta tindakan Revoke. Untuk mengelola grant secara programatis, buat daftar grant dengan filter status dan cabut satu grant berdasarkan ID:

Pengelolaan API

Create Entitlement

Buat entitlement dengan jenis integration apa pun.

List Entitlements

Buat daftar entitlement yang difilter berdasarkan jenis integration.

Get Entitlement

Ambil entitlement beserta konfigurasi yang telah diselesaikan.

Update Entitlement

Perbarui nama, deskripsi, atau konfigurasi integration.

Delete Entitlement

Hapus entitlement secara soft-delete. Grant yang ada tidak dicabut, tetapi Dodo Payments tidak lagi mengelolanya.

Upload File

Unggah file berukuran hingga 500 MiB ke entitlement Digital Files.

List Grants

Buat daftar grant entitlement yang difilter berdasarkan status dan pelanggan.

Revoke Grant

Cabut satu grant secara manual.

Webhook

Dodo Payments mengirim empat event webhook untuk lifecycle grant. Subscribe ke event tersebut agar aplikasi Anda tetap sinkron dengan hal yang dapat diakses setiap pelanggan.

Entitlement Grant Webhook Payloads

Lihat schema payload lengkap, contoh event, dan referensi revocation_reason.

Praktik Terbaik

  • Gunakan satu entitlement untuk setiap channel delivery. Jangan gunakan satu entitlement Discord bersama beberapa produk dengan tujuan role yang berbeda. Buat satu entitlement untuk setiap role agar pencabutan tetap rapi.
  • Uji terlebih dahulu dalam test mode. Buat entitlement, kaitkan ke produk pengujian, lakukan checkout, lalu amati grant berpindah dari Pending ke Delivered. Kemudian batalkan subscription pengujian dan pastikan grant dicabut.
  • Dengarkan entitlement_grant.delivered, bukan payment.succeeded. Pembayaran dapat berhasil sebelum fulfillment selesai, terutama untuk OAuth flow. Tunggu hingga grant mencapai Delivered sebelum membuka feature yang bergantung padanya di sistem Anda sendiri. Grant yang dikirim saat pembuatan, seperti license key yang dipenuhi otomatis atau feature flag, tiba sebagai entitlement_grant.created dengan status: "Delivered".
  • Anggap entitlement_grant.failed sebagai tindakan yang perlu ditangani. Grant yang gagal berarti pelanggan sudah membayar tetapi belum mendapatkan akses. Tampilkan grant ini kepada tim support Anda atau picu penerbitan ulang grant.
  • Petakan revocation_reason ke flow retensi Anda. Pencabutan subscription_on_hold dapat dipulihkan karena pelanggan mungkin memperbarui kartunya. Pencabutan manual disengaja. Perlakukan keduanya secara berbeda dalam pesan kepada pelanggan.
  • Jangan cabut akses pada subscription.past_due. Event tersebut membuka grace period, dan pelanggan tetap memiliki akses sampai periode tersebut berakhir. Tunggu subscription.on_hold atau subscription.cancelled.
Terakhir diubah pada 26 September 2026