Subscriptions let you sell ongoing access with automated renewals. Use flexible billing cycles, free trials, plan changes, and add‑ons to tailor pricing for each customer.
Upgrade & Downgrade
Control plan changes with proration and quantity updates.
On‑Demand Subscriptions
Authorize a mandate now and charge later with custom amounts.
Customer Portal
Let customers manage plans, billing, and cancellations.
Subscription Webhooks
React to lifecycle events like created, renewed, and canceled.
What Are Subscriptions?
Subscriptions are recurring products customers purchase on a schedule. They’re ideal for:- SaaS licenses: Apps, APIs, or platform access
- Memberships: Communities, programs, or clubs
- Digital content: Courses, media, or premium content
- Support plans: SLAs, success packages, or maintenance
Key Benefits
- Predictable revenue: Recurring billing with automated renewals
- Flexible cycles: Monthly, annual, custom intervals, and trials
- Plan agility: Proration for upgrades and downgrades
- Add‑ons and seats: Attach optional, quantifiable upgrades
- Seamless checkout: Hosted checkout and customer portal
- Developer-first: Clear APIs for creation, changes, and usage tracking
Creating Subscriptions
Create subscription products in your Dodo Payments dashboard, then sell them through checkout or your API. Separating products from active subscriptions lets you version pricing, attach add‑ons, and track performance independently.Subscription product creation
Configure the fields in the dashboard to define how your subscription sells, renews, and bills. The sections below map directly to what you see in the creation form.Product details
- Product Name (required): The display name shown in checkout, customer portal, and invoices.
- Product Description (required): A clear value statement that appears in checkout and invoices.
- Product Image (required): PNG/JPG/WebP up to 3 MB. Used on checkout and invoices.
- Brand: Associate the product with a specific brand for theming and emails.
- Tax Category (required): Choose the category (for example, SaaS) to determine tax rules.
Pricing
- Loại giá: Chọn Subscription (hướng dẫn này). Các lựa chọn thay thế là Single Payment và Usage Based Billing.
- Giá (bắt buộc): Giá định kỳ cơ bản kèm đơn vị tiền tệ. Giá phải ít nhất là $1 (hoặc giá trị tương đương theo đơn vị tiền tệ bạn chọn). Các khoản tiền dưới mức tối thiểu này không được hỗ trợ và subscription sẽ không hoạt động.
- Discount Applicable (%): Tỷ lệ giảm giá tùy chọn áp dụng cho giá cơ bản; được phản ánh trong checkout và hóa đơn.
- Lặp lại thanh toán mỗi (bắt buộc): Khoảng thời gian gia hạn, ví dụ mỗi 1 Month. Chọn chu kỳ (tháng hoặc năm) và số lượng.
- Thời hạn Subscription (bắt buộc): Tổng thời hạn subscription duy trì trạng thái hoạt động (ví dụ 10 Years). Sau khi thời hạn này kết thúc, việc gia hạn sẽ dừng trừ khi được kéo dài.
- Số ngày dùng thử (bắt buộc): Đặt thời lượng dùng thử theo ngày. Sử dụng 0 để tắt dùng thử. Khoản phí đầu tiên sẽ tự động được thu khi thời gian dùng thử kết thúc.
- Số tiền dùng thử: Khoản phí trả trước tùy chọn cho paid trial. Để trống nếu muốn dùng thử miễn phí. Xem Paid Trials.
- Chọn add-on: Đính kèm tối đa 10 add-on mà khách hàng có thể mua cùng gói cơ bản.
Add‑ons are ideal for quantifiable extras such as seats or storage. You can control allowed quantities and proration behavior when customers change them.
Advanced settings
- Tax Inclusive Pricing: Display prices inclusive of applicable taxes. Final tax calculation still varies by customer location.
- Generate license keys: Issue a unique key to each customer after purchase. See the License Keys guide.
- Digital Product Delivery: Deliver files or content automatically after purchase. Learn more in Digital Product Delivery.
- Metadata: Attach custom key–value pairs for internal tagging or client integrations. See Metadata.
Subscription Trials
Trial cho phép khách hàng đánh giá subscription trước khi thanh toán đầy đủ mức giá định kỳ. Trial có thể là free, trong đó không khoản phí nào được thu cho đến khi trial kết thúc, hoặc paid, trong đó một khoản tiền giảm được thu trước. Trong cả hai trường hợp, giá đầy đủ sẽ bắt đầu từ lần gia hạn đầu tiên sau khi trial kết thúc.Configuring Trials
Set Trial Period Days in the product pricing section (use0 to disable). You can override this when creating subscriptions:
Paid Trials
Trial không nhất thiết phải miễn phí. Đặt Trial Amount trên giá định kỳ của sản phẩm subscription để thu một khoản phí trả trước đã giảm trong thời gian trial. Sau đó, giá định kỳ đầy đủ sẽ được áp dụng từ lần gia hạn đầu tiên.
trial_amount và trial_period_days để bạn có thể hiển thị số tiền đến hạn hôm nay trước khi subscription được tạo.
Free trial không thay đổi. Để trống Trial Amount sẽ giữ nguyên hành vi hiện tại, trong đó khoản phí đầu tiên là
0 và giá đầy đủ được thu khi trial kết thúc.Ngăn lạm dụng Trial
Prevent Trial Misuse ngăn khách hàng liên tục yêu cầu trial cho cùng một doanh nghiệp. Khi được bật, khách hàng đã từng sử dụng trial sẽ tự động được chuyển thành paid, no-trial purchase thay vì nhận một trial mới.
- Khách hàng được đối chiếu theo email đã chuẩn hóa, trong đó các bí danh dấu cộng bị loại bỏ, vì vậy
user+trial@example.comvàuser@example.comđược tính là cùng một người. - Lượt sử dụng được ghi nhận tại thời điểm kích hoạt trial, vì vậy khách hàng hủy ngay trong ngày vẫn đã sử dụng trial.
- Khách hàng hiện tại được bổ sung dữ liệu từ các trial trước đây của họ dựa trên email, nên người dùng trial trong quá khứ được nhận diện ngay lập tức.
Tùy chọn này tắt theo mặc định. Xem Subscription Settings để biết danh sách đầy đủ các tùy chọn kiểm soát subscription ở cấp doanh nghiệp.
Phát hiện trạng thái Trial
Để xác định một subscription free trial có đang trong thời gian trial hay không, hãy lấy danh sách payment của subscription. Nếu có chính xác một payment với amount bằng 0, subscription đang trong thời gian trial:Cập nhật thời gian Trial
Kéo dài trial bằng cách cập nhậtnext_billing_date:
Thay đổi Subscription Plan
Thay đổi plan cho phép bạn nâng cấp hoặc hạ cấp subscription, điều chỉnh số lượng hoặc chuyển sang sản phẩm khác. Tùy theo proration mode được chọn, thay đổi có thể tạo khoản phí ngay lập tức, tạo credit hoặc không điều chỉnh billing.Product Collections
Nhóm các sản phẩm liên quan vào collections để bật quy trình nâng cấp/hạ cấp liền mạch trong Customer Portal.
Proration Modes
Chọn cách tính phí cho khách hàng khi thay đổi plan:So sánh nhanh bốn proration mode:
prorated_immediately
Tính phí theo tỷ lệ dựa trên thời gian còn lại trong chu kỳ billing hiện tại. Phù hợp nhất cho cách tính phí công bằng, có tính đến thời gian chưa sử dụng.
difference_immediately
Thu phần chênh lệch giá ngay lập tức (khi nâng cấp) hoặc cộng credit cho các lần gia hạn trong tương lai (khi hạ cấp). Phù hợp nhất cho các trường hợp nâng cấp/hạ cấp đơn giản.
Credit từ việc hạ cấp bằng
difference_immediately được giới hạn trong subscription và tự động áp dụng cho các lần gia hạn trong tương lai. Chúng khác với các quyền lợi của Credit-Based Billing.difference_immediately, giá trị chưa sử dụng trở thành credit giới hạn trong subscription và tự động bù trừ cho các lần gia hạn trong tương lai:
full_immediately
Thu toàn bộ số tiền của plan mới ngay lập tức, bỏ qua thời gian còn lại. Phù hợp nhất để đặt lại chu kỳ billing.
do_not_bill
Chuyển sang plan mới mà không điều chỉnh billing. Không có phí proration và không có credit — khách hàng chỉ cần chuyển sang plan mới. Phù hợp nhất cho việc chuyển đổi hỗ trợ đặc biệt, chuyển đổi plan miễn phí hoặc các trường hợp bạn muốn tự chịu phần chênh lệch chi phí.
Example: Prorated upgrade calculation
Example: Prorated upgrade calculation
Tình huống: Khách hàng đang dùng Basic (80/tháng) vào ngày thứ 16 của chu kỳ 30 ngày bằng Lần gia hạn tiếp theo vào 15 tháng 2 (16 tháng 1 + 30 ngày): $80.00/tháng.
prorated_immediately.Example: Downgrade credit calculation
Example: Downgrade credit calculation
Tình huống: Khách hàng đang dùng Pro (20/tháng) bằng Credit $60 tự động được áp dụng cho các lần gia hạn trong tương lai:
difference_immediately.- Lần gia hạn 1: 20 (credit) = **40 credit)
- Lần gia hạn 2: 20 (credit) = **20 credit)
- Lần gia hạn 3: 20 (credit) = $0.00 (credit đã hết)
- Lần gia hạn 4: $20.00 (giá đầy đủ)
Tìm hiểu thêm về cách quản lý credit trong Upgrade & Downgrade Guide.
Thay đổi Plan với Add-on
Điều chỉnh add-on khi thay đổi plan. Add-on được đưa vào các phép tính proration:Thay đổi plan sẽ tạo khoản phí ngay lập tức. Các khoản phí thất bại có thể chuyển subscription sang trạng thái
on_hold. Theo dõi thay đổi qua các webhook event subscription.plan_changed.Xem trước thay đổi Plan
Trước khi xác nhận thay đổi plan, hãy xem trước khoản phí chính xác và subscription sau thay đổi:Preview Change Plan API
Xem trước các thay đổi plan trước khi xác nhận.
Trạng thái Subscription
Một subscription sẽ trải qua một tập hợp trạng thái được xác định trong suốt vòng đời. Bảng này là tài liệu tham chiếu cho từng trạng thái, nguyên nhân tạo ra trạng thái đó và cách (hoặc liệu) bạn có thể khôi phục hay không.State Machine
Trạng thái On Hold
Subscription chuyển sang trạng tháion_hold khi:
- Payment gia hạn thất bại (không đủ tiền, thẻ hết hạn, v.v.)
- Khoản phí thay đổi plan thất bại
- Ủy quyền payment method thất bại
Kích hoạt lại từ On Hold
Để kích hoạt lại subscription từ trạng tháion_hold, hãy cập nhật payment method. Thao tác này tự động:
- Tạo khoản phí cho các khoản còn nợ
- Tạo hóa đơn
- Xử lý payment bằng payment method mới
- Chuyển subscription về trạng thái
activesau khi payment thành công
Sau khi cập nhật thành công payment method cho subscription
on_hold, bạn sẽ nhận được webhook event payment.succeeded, tiếp theo là subscription.active.Webhook Event theo Chuyển đổi Trạng thái
Mỗi lần chuyển đổi sẽ phát ra một webhook để bạn có thể điều khiển logic entitlement mà không cần polling:Subscription Webhook Payloads
Xem schema payload đầy đủ cho các event trong vòng đời subscription.
Quản lý API
Create subscriptions
Create subscriptions
Sử dụng
POST /subscriptions để lập trình tạo subscription từ các sản phẩm, với trial và add-on tùy chọn.API Reference
Xem API tạo subscription.
Update subscriptions
Update subscriptions
Sử dụng
PATCH /subscriptions/{id} để cập nhật số lượng, hủy vào ngày billing tiếp theo hoặc chỉnh sửa metadata.API Reference
Tìm hiểu cách cập nhật thông tin subscription.
Change plans (proration)
Change plans (proration)
Thay đổi sản phẩm đang hoạt động và số lượng bằng các tùy chọn kiểm soát proration.
API Reference
Xem lại các tùy chọn thay đổi plan.
On‑demand charges
On‑demand charges
Đối với subscription on-demand, thu các khoản tiền cụ thể theo nhu cầu.
API Reference
Thu phí subscription on-demand.
List and retrieve
List and retrieve
Sử dụng
GET /subscriptions để liệt kê tất cả subscription và GET /subscriptions/{id} để lấy một subscription.API Reference
Duyệt các API liệt kê và truy xuất.
Usage history
Usage history
Lấy usage đã ghi nhận cho các mô hình định giá theo usage hoặc hybrid.
API Reference
Xem API lịch sử usage.
Update payment method
Update payment method
Cập nhật payment method cho subscription. Đối với subscription đang hoạt động, thao tác này cập nhật payment method cho các lần gia hạn trong tương lai. Đối với subscription ở trạng thái
on_hold, thao tác này kích hoạt lại subscription bằng cách tạo khoản phí cho các khoản còn nợ.Khi tạo payment-method link mới (loại request New), bạn có thể truyền allowed_payment_method_types để giới hạn các payment method khách hàng nhìn thấy trên trang đó. Khách hàng sẽ không bao giờ thấy phương thức không có trong danh sách, dù việc đưa một phương thức vào danh sách không đảm bảo phương thức đó sẽ xuất hiện (tính khả dụng vẫn phụ thuộc vào các yếu tố như vị trí của khách hàng và cài đặt doanh nghiệp).API Reference
Tìm hiểu cách cập nhật payment method và kích hoạt lại subscription.
Trường hợp sử dụng phổ biến
- SaaS và API: Quyền truy cập theo tier với add-on cho seat hoặc usage
- Nội dung và media: Quyền truy cập hàng tháng với trial giới thiệu
- Gói hỗ trợ B2B: Hợp đồng hàng năm với add-on hỗ trợ cao cấp
- Công cụ và plugin: License key và bản phát hành theo version
Ví dụ tích hợp
Checkout Session (subscription)
Khi tạo checkout session, hãy thêm sản phẩm subscription và các add-on tùy chọn:Thay đổi plan với proration
Nâng cấp hoặc hạ cấp subscription và kiểm soát hành vi proration:Hủy vào ngày billing tiếp theo
Lên lịch hủy có hiệu lực vào cuối kỳ billing hiện tại:Kéo dài thời hạn subscription
Kéo dài thời gian subscription bằng cách truyềnsubscription_period_count và subscription_period_interval mới vào PATCH /subscriptions/{id}. Thời điểm hết hạn của subscription được tính lại từ số lượng và khoảng thời gian mới — ví dụ để cấp thêm thời gian cho khách hàng trong plan hiện tại:
Thời hạn của subscription chỉ có thể được tăng, không thể rút ngắn.
Subscription on-demand
Tạo subscription on-demand và thu phí sau khi cần:Cập nhật payment method cho subscription đang hoạt động
Cập nhật payment method cho subscription đang hoạt động:Kích hoạt lại subscription từ on_hold
Kích hoạt lại subscription bị on hold do payment thất bại:Subscription với Mandate tuân thủ RBI
Subscription UPI và thẻ Ấn Độ hoạt động theo quy định RBI (Reserve Bank of India) với các yêu cầu mandate cụ thể:Giới hạn Mandate
Loại và số tiền mandate phụ thuộc vào khoản phí định kỳ của subscription:- Khoản phí dưới mức sàn mandate (mặc định ₹15,000): Chúng tôi tạo mandate on-demand cho số tiền sàn. Số tiền subscription được thu định kỳ theo tần suất subscription, tối đa đến giới hạn mandate.
- Khoản phí bằng hoặc cao hơn mức sàn mandate: Chúng tôi tạo mandate subscription (hoặc mandate on-demand) cho đúng số tiền subscription.
mandate_min_amount_inr_paise (INR paise). Số tiền đăng ký với ngân hàng là max(mandate_floor, billing_amount) — vì vậy mức sàn thực tế trở thành giới hạn ủy quyền mà khách hàng nhìn thấy bất cứ khi nào số tiền billing thấp hơn.
Để biết thông tin chi tiết về mandate tuân thủ RBI và mức sàn mandate có thể cấu hình cho các payment method của Ấn Độ, hãy xem trang India Payment Methods.
Lưu ý khi Nâng cấp và Hạ cấp
Quan trọng: Khi nâng cấp hoặc hạ cấp subscription, hãy cân nhắc cẩn thận các giới hạn mandate:- Nếu việc nâng cấp/hạ cấp dẫn đến khoản phí vượt quá Rs 15,000 và vượt giới hạn payment on-demand hiện tại, khoản phí giao dịch có thể thất bại.
- Trong trường hợp này, khách hàng có thể cần cập nhật payment method hoặc thay đổi subscription lần nữa để thiết lập mandate mới với giới hạn phù hợp.
Ủy quyền cho Khoản phí Giá trị cao
Đối với khoản phí subscription từ Rs 15,000 trở lên:- Ngân hàng sẽ yêu cầu khách hàng ủy quyền giao dịch.
- Nếu khách hàng không ủy quyền giao dịch, giao dịch sẽ thất bại và subscription sẽ bị on hold.
Trì hoãn Xử lý 48 giờ
Lịch xử lý: Các khoản phí định kỳ trên thẻ Ấn Độ và subscription UPI tuân theo một quy trình xử lý đặc biệt:- Khoản phí được khởi tạo vào ngày đã lên lịch theo tần suất subscription.
- Khoản khấu trừ thực tế từ tài khoản khách hàng chỉ diễn ra sau 48 giờ kể từ khi khởi tạo payment.
- Khoảng thời gian 48 giờ này có thể kéo dài thêm 2-3 giờ tùy theo phản hồi của bank API.
Khoảng thời gian Hủy Mandate
Trong khoảng thời gian xử lý 48 giờ:- Khách hàng có thể hủy mandate thông qua ứng dụng ngân hàng.
- Nếu khách hàng hủy mandate trong khoảng thời gian này, subscription vẫn giữ trạng thái active (đây là trường hợp đặc biệt chỉ áp dụng cho subscription AutoPay bằng thẻ Ấn Độ và UPI).
- Tuy nhiên, khoản khấu trừ thực tế có thể thất bại và trong trường hợp đó, chúng tôi sẽ chuyển subscription sang on hold.
- Trì hoãn việc kích hoạt quyền lợi cho đến khi xác nhận payment
- Triển khai thời gian gia hạn hoặc quyền truy cập tạm thời
- Theo dõi trạng thái subscription để phát hiện việc hủy mandate
- Xử lý trạng thái on hold của subscription trong logic ứng dụng
Best Practices
- Bắt đầu với các tier rõ ràng: 2–3 plan có khác biệt dễ nhận thấy
- Truyền đạt thông tin giá: Hiển thị tổng tiền, proration và lần gia hạn tiếp theo
- Sử dụng trial hợp lý: Tăng chuyển đổi bằng onboarding, không chỉ bằng thời gian
- Tận dụng add-on: Giữ plan cơ bản đơn giản và bán thêm tính năng bổ sung
- Kiểm thử các thay đổi: Xác thực thay đổi plan và proration ở test mode
Subscription là nền tảng linh hoạt cho doanh thu định kỳ. Hãy bắt đầu đơn giản, kiểm thử kỹ lưỡng và cải tiến dựa trên các chỉ số adoption, churn và expansion.