Skip to main content
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.
Dodo Payments quản lý license key thông qua Entitlements. Các sự kiện payment và subscription giống nhau điều khiển những entitlement khác cũng điều khiển vòng đời của từng key: tạo, hết hạn, thu hồi và cấp lại.

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ụ 1 cho một user hoặc 5 cho 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 → License hoặc Run: mycli activate <key>.
New License Key entitlement form with name, fulfillment mode, license length, activations limit, and activation message
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.
Product entitlements panel with License Key selected

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ột fulfillment_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 khi fulfillment_mode bị bỏ qua.
  • manual (Manual trong dashboard): mỗi unit được mua sẽ tạo một grant Pending khô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 grant Pending 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, đặt fulfillment_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ái Pending 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 sang Delivered 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 ID lki_. 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, object license_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.
License key được tạo hoặc cập nhật qua API không kích hoạt thông báo email đến customer. Để thông báo cho customer về key đã import, hãy gửi thông báo từ ứng dụng của riêng bạn.
Request yêu cầu key, 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ường source 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.
Đang di chuyển từ Polar.sh hoặc Lemon Squeezy? dodo-migrate CLI import hàng loạt product, customer, discount và license key bằng một command duy nhất, đồng thời ánh xạ external ID sang ID của Dodo Payments.

License key trong Return URL

Khi customer mua product có entitlement License Key, Dodo Payments thêm key được tạo vào return_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:
Nếu giao dịch mua tạo nhiều hơn một key (quantity lớn hơn 1), parameter chứa danh sách được phân tách bằng dấu phẩy. Dấu phẩy được mã hóa URL thành %2C, vì vậy hãy đọc parameter bằng URL parser để giải mã trước khi tách:
Đối với subscription, URL chứa subscription_id và trạng thái subscription thay vì payment_id:
Đọc parameter license_key trên return page để hiển thị key ngay sau khi mua.

Quản lý API

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.
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.
GET /license_keys, GET /license_keys/{id} và PATCH /license_keys/{id} không còn được khuyến nghị sử dụng. Để đọc, hãy sử dụng entitlement grant endpoint (List Grants, List Customer Grants). POST /license_keys vẫn được hỗ trợ để import key hiện có.

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.
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ốn entitlement_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.
Đối với integration mới, hãy xử lý entitlement grant event thay vì license_key.created. Một key được auto-fulfill đến dưới dạng entitlement_grant.created với status: "Delivered" và không có event entitlement_grant.delivered riêng đi kèm. Một key được fulfill thủ công sẽ kích hoạt entitlement_grant.delivered khi bạn cung cấp key. Các event này áp dụng cho mọi entitlement trên product, không chỉ license key.

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/validate thay 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.
Lần sửa đổi cuối 26 tháng 9, 2026