License key là loại entitlement License Key. Tạo một entitlement License Key duy nhất với giới hạn kích hoạt, thời hạn và thông báo kích hoạt mong muốn, sau đó gắn entitlement này vào bất kỳ product nào. Theo mặc định, Dodo Payments tạo và gửi email một key cho mỗi unit được mua hoặc mỗi seat của subscription.
License Key là gì?
License key là một token duy nhất cấp quyền truy cập vào product của bạn. Sử dụng license key cho:- Cấp phép phần mềm: ứng dụng desktop, plugin và CLI.
- Kiểm soát theo seat: giới hạn số lần kích hoạt cho mỗi user hoặc device.
- Digital goods: kiểm soát quyền tải xuống, cập nhật hoặc tính năng premium.
Tạo một Quyền cấp phép License Key
1
Open Entitlements
Đi đến Entitlements trong dashboard và nhấp + để tạo entitlement.
2
Choose License Key
Chọn License Keys, nhập Name và cấu hình cách mỗi key được phát hành hoạt động:
- Fulfillment Mode: Automatic (mặc định) sẽ tạo và gửi email cho từng key. Manual cho phép bạn tự cung cấp từng key. Xem Manual Fulfillment.
- Activations Limit: số lượng activation đang hoạt động tối đa cho mỗi key, ví dụ
1cho một user hoặc5cho license dành cho team. Chọn Unlimited nếu không muốn giới hạn. - License Length: khoảng thời gian key còn hợp lệ sau khi được phát hành, ví dụ 30 ngày hoặc 1 năm, hoặc No expiration. Đối với product dạng subscription, hãy chọn No expiration: các key được phát hành cho subscription không hết hạn và tính hợp lệ của chúng sẽ tuân theo trạng thái subscription.
- Activation Message: hướng dẫn tùy chọn dành cho customer, tối đa 2.500 ký tự, được đưa vào email gửi key. Ví dụ:
Paste the key in Settings → LicensehoặcRun: mycli activate <key>.

3
Save the Entitlement
Nhấp Create Entitlement. Bây giờ bạn có thể gắn entitlement này vào bất kỳ product nào.
Gắn vào Sản Phẩm
Mở một product, đi đến phần Entitlements và chọn entitlement License Key của bạn. Một product có thể cung cấp license key cùng với các entitlement khác trong cùng một giao dịch mua, chẳng hạn như quyền truy cập Discord, file download hoặc repository GitHub.
Selecting the License Key entitlement in the product entitlements panel.
Cách Mã Được Phát Hành
Việc phát hành key tuân theo grant lifecycle tiêu chuẩn. Mỗi sự kiện ảnh hưởng đến license key như sau:Hành vi theo số lượng
Số lượng key phụ thuộc vào nguồn tạo grant. Mỗi key có grant riêng.- Product dạng subscription phát hành một key cho mỗi seat (
subscriptions.quantity). - Product one-time phát hành một key cho mỗi unit của line item trong cart (
product_cart.quantity). - Grant thủ công qua API phát hành chính xác một key.
Fulfillment Mode
Mỗi entitlement License Key có mộtfulfillment_mode kiểm soát bên cung cấp key:
auto(mặc định, Automatic trong dashboard): Dodo Payments tạo và gửi email key khi có payment hoặc subscription. Đây là hành vi trong bảng trên và được áp dụng khifulfillment_modebị bỏ qua.manual(Manual trong dashboard): mỗi unit được mua sẽ tạo một grantPendingkhông có key và bạn cung cấp giá trị của từng key. Xem Manual Fulfillment.
Manual Fulfillment
Với manual fulfillment, bạn cung cấp từng license key thay vì để Dodo Payments tạo key. Giao dịch mua tạo một grantPending không có key, thông báo cho bạn bằng webhook và chờ bạn gửi giá trị key. Sử dụng cách này khi key đến từ hệ thống riêng của bạn, nhà cung cấp bên thứ ba hoặc một kho mã được in sẵn có số lượng giới hạn.
Để xem hướng dẫn từng bước, từ lúc tạo product đến khi phân phối key, hãy xem Manual License Key Fulfillment Integration Guide.
Khi nào nên sử dụng
Automatic fulfillment phù hợp với hầu hết hoạt động cấp phép phần mềm. Chọn manual fulfillment khi Dodo Payments không thể tự tạo key:- Sử dụng key của riêng bạn: ứng dụng, product desktop hoặc license server của bạn tạo key.
- Nhà cung cấp bên thứ ba: bạn bán lại key do nhà cung cấp upstream phát hành, chẳng hạn như game key, API credential hoặc license cho platform đối tác.
- Kho có số lượng giới hạn: bạn phân phối code từ một kho được cấp phát trước và gán từng code một.
- Kiểm tra thủ công: bạn muốn kiểm tra giao dịch mua trước khi cấp quyền truy cập.
Bật Manual Fulfillment
Để bật manual fulfillment qua API, đặtfulfillment_mode: "manual" trong integration_config của entitlement License Key. Trong dashboard, đặt Fulfillment Mode thành Manual.
fulfillment_mode tương thích ngược. Các entitlement được tạo trước khi cài đặt này tồn tại không có fulfillment_mode và hoạt động như auto. Việc chuyển sang manual chỉ ảnh hưởng đến các grant được tạo sau khi thay đổi. Các key đã phân phối không thay đổi.Tìm các grant đang chờ fulfillment
Khi customer mua product có entitlement ở chế độ manual, Dodo Payments tạo grant ở trạng tháiPending không có key và gửi cho bạn webhook entitlement_grant.created với integration_type: "license_key" và status: "Pending". Xử lý webhook đó hoặc gọi endpoint List Customer Grants theo các filter integration_type và status:
Phân phối key
Để phân phối key, gửi key đến endpoint Fulfill License Key Grant. Grant chuyển sangDelivered và Dodo Payments gửi email key cho customer. Đây là cùng email mà customer nhận được khi dùng automatic fulfillment.
cURL
activations_limit và expires_at là tùy chọn. Khi bạn bỏ qua chúng, Dodo Payments sử dụng cấu hình của entitlement. Mỗi grant chỉ có thể được fulfill một lần: việc thử lại một grant đã được fulfill sẽ trả về 409 thay vì phát hành key thứ hai.
Bạn không cần tự gửi email key. Dodo Payments phân phối key khi grant được fulfill. Importing keys với
POST /license_keys hoạt động khác: thao tác này không thông báo cho customer.Kích hoạt, xác thực, hủy kích hoạt
Phần mềm của bạn quản lý key khi runtime thông qua ba endpoint. Activation ghi nhận một device hoặc installation đối với key, validation kiểm tra key có thể sử dụng hay không, còn deactivation giải phóng một activation.Public Endpoints: Các license endpoint activate, deactivate và validate là public và không yêu cầu API key. Gọi trực tiếp chúng từ phần mềm desktop, CLI hoặc client trên browser mà không để lộ API credential. Các SDK constructor vẫn yêu cầu giá trị bearer token, vì vậy các ví dụ SDK truyền một placeholder.
Kích hoạt license
Activation tạo một activation instance cho key và trả về instance cùng IDlki_. Lưu ID này vì bạn cần nó để deactivate instance. Request trả về 403 nếu key không active, 404 nếu key không tồn tại và 422 nếu key đã đạt giới hạn activation.
Xác thực license
Validation trả vềvalid: true khi trạng thái của key là active và key chưa hết hạn. Để kiểm tra thêm một activation instance cụ thể vẫn tồn tại, hãy truyền license_key_instance_id của instance đó.
Hủy kích hoạt activation instance
Deactivation xóa một activation instance và giải phóng một activation trên key. Truyền key và instance ID mà activation đã trả về. Request trả về403 nếu instance không thuộc về key và 404 nếu key không tồn tại.
Quản lý key
Để xem các key đã phát hành, mở entitlement License Key trong Entitlements. Danh sách grant hiển thị một dòng cho mỗi customer key, gồm customer, ngày truy cập, trạng thái và thao tác Revoke. Để xem thời hạn, số lượng activation và giới hạn activation của key, mở key đó trong Sales → License Keys. Để liệt kê grant bằng lập trình, gọi List Grants. Trên mỗi license-key grant, objectlicense_key chứa key, trạng thái, thời hạn, số activation đã dùng và giới hạn activation. Object này là null trên grant ở chế độ manual vẫn đang Pending.
Import license key hiện có qua API
Để chuyển license key từ hệ thống khác, import chúng bằng API Create License Key. Customer của bạn tiếp tục kích hoạt, xác thực và hủy kích hoạt cùng các chuỗi key đó, vì vậy bạn không cần phát hành lại key. Request yêu cầukey, customer_id và product_id. Bỏ qua activations_limit để có activation không giới hạn và bỏ qua expires_at nếu key không bao giờ hết hạn. Import một chuỗi key đã tồn tại sẽ trả về 409.
Key khác nhau theo nguồn như thế nào
Trườngsource ghi nhận cách mỗi license key được tạo:
Sử dụng
source để phân biệt key đã di chuyển và key được fulfill thủ công với key do Dodo Payments tạo, chẳng hạn khi bạn đối soát hoặc audit key. Trường này có trên các license key record, chẳng hạn response POST /license_keys. Object license_key trên grant từ List Grants không bao gồm trường này. Endpoint GET /license_keys cũ, trả về source và chấp nhận filter source, đã không còn được khuyến nghị sử dụng.
License key trong Return URL
Khi customer mua product có entitlement License Key, Dodo Payments thêm key được tạo vàoreturn_url của bạn dưới dạng query parameter license_key. Success page của bạn có thể hiển thị key mà không cần gọi API bổ sung:
%2C, vì vậy hãy đọc parameter bằng URL parser để giải mã trước khi tách:
subscription_id và trạng thái subscription thay vì payment_id:
Quản lý API
Lifecycle Operations (Public Endpoints)
Lifecycle Operations (Public Endpoints)
Activation, deactivation và validation là public và không yêu cầu API key.
Activate License
Tạo activation instance cho license key.
Deactivate License
Xóa activation instance để giải phóng capacity.
Validate License
Kiểm tra key đang active và chưa hết hạn trước khi cấp quyền truy cập.
License Key Management
License Key Management
Tạo, liệt kê, truy xuất và cập nhật từng license key record. Sử dụng các endpoint này để import key hiện có hoặc đọc thông tin usage.
Create License Key
Tạo license key hoặc import một key hiện có.
List License Keys
Duyệt tất cả key cùng trạng thái và thông tin usage.
Get License Key
Truy xuất một key cụ thể và metadata của key đó.
Update License Key
Thay đổi thời hạn hoặc giới hạn activation, hoặc bật hay tắt key.
Entitlement Management
Entitlement Management
Quản lý chính entitlement License Key: giới hạn activation, thời lượng license và thông báo activation.
Create Entitlement
Tạo entitlement License Key.
Update Entitlement
Cập nhật cấu hình của entitlement.
List Grants
Liệt kê các key đã phát hành cho một entitlement.
Revoke Grant
Thu hồi thủ công key của customer.
Webhooks
Việc phân phối và thu hồi license key gửi bốnentitlement_grant.* webhook events. Đối với license-key grant, payload bao gồm object license_key chứa key, trạng thái, thời hạn, số activation đã dùng và giới hạn activation.
Event license_key.created cũ vẫn được kích hoạt khi một license key record được tạo. Xem License Key webhook payload page.
License key cũ
Các product được tạo với flag
license_key_enabled cũ đã được tự động di chuyển sang entitlement License Key. Việc di chuyển là trong suốt: key của customer hiện tại vẫn hoạt động, các endpoint public /licenses/activate, /licenses/validate và /licenses/deactivate vẫn hoạt động, đồng thời các API endpoint /license_keys/* đọc và ghi vào cùng một key store.Phần Sales → License Keys độc lập trong dashboard vẫn khả dụng dưới dạng danh sách phẳng của mọi key đã phát hành để audit và tìm kiếm. Để thay đổi giới hạn activation, thời lượng license hoặc activation message, hãy chỉnh sửa entitlement License Key đã di chuyển trong Entitlements.Best Practices
- Chọn giới hạn activation rõ ràng: chọn các giá trị mặc định như 1 cho ứng dụng một user hoặc 3–5 cho license team, đồng thời ghi rõ các giá trị này cho customer.
- Viết activation message chính xác: customer sao chép nội dung này từ email license key, vì vậy path và command chính xác sẽ giúp tránh các ticket hỗ trợ.
- Xác thực key với API: đối với product có kết nối mạng, hãy gọi
/licenses/validatethay vì dựa vào activation được cache cục bộ. - Sử dụng webhook để thu hồi: xử lý
entitlement_grant.revokedđể tắt các tính năng trong ứng dụng khi customer hủy hoặc nhận refund. - Kiểm thử subscription và giao dịch one-time: hành vi của license key khác nhau giữa hai loại này; ví dụ key subscription không hết hạn, vì vậy hãy kiểm thử cả hai trước khi đưa vào vận hành.