Skip to main content
Discount codes overview cover
Mã giảm giá cho phép bạn triển khai các chương trình khuyến mãi và ưu đãi có mục tiêu. Tạo các mức giảm theo phần trăm, đặt giới hạn và thời hạn, giới hạn theo sản phẩm, rồi áp dụng chúng khi thanh toán.

Checkout Sessions

Áp dụng một hoặc nhiều mã chồng trong quá trình thanh toán lưu trữ với discount_codes và các điều khiển UI.

Get Discount

Truy xuất một mã giảm giá theo ID để kiểm tra trạng thái và các hạn chế của mã.

Get Discount by Code

Tra cứu và xác thực mã giảm giá bằng tên mã (ví dụ: “SAVE20”).

Create Discount (API)

Tạo mã giảm giá mới theo chương trình.

List & Update Discounts

Duyệt và quản lý các mã giảm giá hiện có; cập nhật hoặc xóa theo nhu cầu.

Plan Change Discounts

Áp dụng mã giảm giá khi nâng cấp hoặc hạ cấp gói đăng ký.

Mã giảm giá là gì?

Mã giảm giá là các token khuyến mãi giúp giảm tổng giá trị đơn hàng khi thanh toán. Sử dụng chúng cho các chiến dịch theo mùa, ưu đãi cho lần mua đầu tiên, ưu đãi thu hút lại khách hàng hoặc mức giá B2B được thương lượng. Mã có thể giảm theo phần trăm (ví dụ: giảm 15%) hoặc theo số tiền cố định (ví dụ: giảm $5). Bạn có thể kết hợp tối đa 20 mã cho mỗi lần checkout, payment hoặc subscription, vì vậy khách hàng có thể cùng đổi cả ưu đãi chào mừng và mã chiến dịch trong một giao dịch. Giới hạn mã cho các sản phẩm cụ thể, giới hạn số lần mỗi khách hàng có thể sử dụng, đặt ngày hết hạn và kiểm soát những ai đủ điều kiện đổi mã.

Lợi ích chính

  • Giảm giá linh hoạt: Giảm theo phần trăm hoặc theo số tiền cố định
  • Mã có thể kết hợp: Áp dụng tối đa 20 mã cho mỗi lần checkout, payment hoặc subscription
  • Kiểm soát có mục tiêu: Giới hạn theo sản phẩm, chu kỳ subscription và điều kiện đủ tư cách của khách hàng
  • Quản trị chiến dịch: Ngày bắt đầu theo lịch, ngày hết hạn, giới hạn sử dụng tổng thể và theo từng khách hàng
  • Định giá theo từng currency: Đặt số tiền giảm cố định, giới hạn số tiền và subtotal tối thiểu cho từng currency

Tạo mã giảm giá

Tạo mã giảm giá trong bảng điều khiển Dodo Payments, sau đó áp dụng chúng trong thanh toán được lưu trữ hoặc qua API.
Danh sách Discounts trong dashboard Dodo Payments hiển thị các discount code hiện có

Thiết lập trên Dashboard

  • Discount Name (bắt buộc): Nhãn nội bộ cho dashboard.
  • Code (bắt buộc): Chuỗi khách hàng nhập khi checkout. Tạo mã ngẫu nhiên hoặc nhập mã của riêng bạn (tối thiểu 3 ký tự, tự động chuyển thành chữ hoa).
  • Type (bắt buộc): Percentage (giảm theo phần trăm) hoặc Amount (giảm một số tiền cố định).
  • Amount (bắt buộc): Với percentage, phần trăm giảm trong dashboard (ví dụ: 15 cho 15%). Qua API, cùng giá trị này được biểu diễn theo basis points (1500). Với amount, đây là số tiền giảm cố định theo currency mặc định của mã.
  • Start Date (tùy chọn): Lên lịch để mã được kích hoạt vào một ngày trong tương lai. Để trống để kích hoạt ngay lập tức.
  • Expiration Date (tùy chọn): Ngày sau đó mã không còn có thể được đổi.
  • Usage Limit (tùy chọn, trong Advanced): Tổng số lần đổi tối đa trên tất cả khách hàng.
  • Per-Customer Usage Limit (tùy chọn, trong Advanced): Số lần đổi tối đa của một khách hàng bất kỳ. Khi cả hai được thiết lập, giá trị này phải nhỏ hơn hoặc bằng giới hạn sử dụng tổng thể.
  • Customer Eligibility (tùy chọn): Giới hạn những người có thể đổi mã — tất cả khách hàng, khách hàng mua lần đầu, khách hàng hiện tại hoặc danh sách được chọn thủ công.
  • Currency Options (tùy chọn): Số tiền giảm cho từng currency bạn bán. Xem Per-Currency Options.
  • Product Restriction (tùy chọn): Giới hạn mã cho các sản phẩm cụ thể.
  • Subscription Cycle Limit (tùy chọn, trong Advanced): Số chu kỳ billing mà giảm giá được áp dụng. Để trống nếu muốn áp dụng vô thời hạn.
  • Preserve on Plan Change (tùy chọn): Giữ giảm giá khi subscription thay đổi plan (preserve_on_plan_change).
  • Metadata (tùy chọn): Đính kèm các cặp key–value tùy chỉnh để theo dõi nội bộ.
  • Require a minimum order value (tùy chọn, trong Advanced): Subtotal tối thiểu của giỏ hàng (theo từng currency) để mã được áp dụng.
Biểu mẫu hiển thị Summary cập nhật liên tục về mã bạn đang tạo trong một panel bên cạnh. Chuyển sang Preview để xem giảm giá sẽ hiển thị như thế nào khi checkout:
Biểu mẫu New Discount Code với bảng điều khiển bên Summary và Preview bên cạnh thông tin chi tiết về mã giảm giá
Các phần bên dưới biểu mẫu — đối tượng đủ điều kiện, hạn chế và tùy chọn nâng cao:
Đối tượng đủ điều kiện, hạn chế và tùy chọn nâng cao cho mã giảm giá
Sử dụng giới hạn chu kỳ cho mức giá ưu đãi mở đầu của subscription (ví dụ: “giảm 50% trong 3 tháng”).
Một amount phần trăm được biểu diễn bằng basis points trong API — 1500 tương đương 15%. Một amount cố định là một giá trị tiền tệ và được tính theo các tùy chọn tiền tệ của mã.

Loại mã giảm giá

Cả hai loại có thể được kết hợp trong cùng mảng discount_codes và được áp dụng theo thứ tự trong mảng.
Trình chỉnh sửa mã giảm giá với loại Amount được chọn, hiển thị khoản khấu trừ cố định 500 INR

Đối tượng khách hàng đủ điều kiện

Thiết lập customer_eligibility để kiểm soát những người có thể đổi mã:
Menu thả xuống về đối tượng khách hàng đủ điều kiện, hiển thị các tùy chọn Any, First-time, Existing và Specific customer
Một mã specific bắt đầu với zero khách hàng đủ điều kiện và từ chối mọi lần đổi mã cho đến khi bạn thêm khách hàng vào mã. Thêm khách hàng trong dashboard hoặc bằng discount customers API.
Kết hợp điều kiện khách hàng với Giới hạn sử dụng mỗi khách hàng để giới hạn số lần từng khách hàng có thể đổi mã, độc lập với giới hạn sử dụng tổng thể.

Tùy chọn theo tiền tệ

Khi bán hàng bằng nhiều currency, hãy thiết lập hành vi theo từng currency cho mỗi mã. Trong Currency options, mỗi mục chỉ định:
  • Amount — với giảm giá Amount, đây là khoản giảm cố định theo currency đó; với giảm giá Percentage, đây là giới hạn giảm tối đa. Ánh xạ tới max_amount_possible trong API.
  • Default — đánh dấu một currency là mặc định. Các currency chưa được cấu hình sẽ được quy đổi từ currency mặc định này.
Đặt mức tối thiểu theo từng currency riêng trong Require a minimum order value thuộc Advanced:
  • Minimum subtotal — mã chỉ được áp dụng khi giỏ hàng đạt subtotal này theo currency đó. 0 có nghĩa là không có mức tối thiểu.
Bảng currency options với amount và minimum subtotal theo từng currency cho INR và USD
Giảm giá Amount yêu cầu ít nhất một tùy chọn currency có giá trị mặc định có thể xác định, vì khoản giảm cố định không có ý nghĩa nếu không gắn với một currency. Giảm giá Percentage không yêu cầu tùy chọn currency.
Subtotal tối thiểu luôn được tính dựa trên giá gốc của giỏ hàng, không phải tổng đang có sau các giảm giá trước đó trong chuỗi kết hợp. Thứ tự kết hợp không bao giờ thay đổi việc có đạt mức tối thiểu hay không.

Trải nghiệm Checkout

Khách hàng nhập mã giảm giá vào trường checkout. Các mã đủ điều kiện được áp dụng ngay lập tức và tổng tiền được cập nhật.
Trang checkout hiển thị discount đã được áp dụng vào tổng tiền đơn hàng
Trong Checkout Sessions, truyền discount_codes (một mảng) để áp dụng trước một hoặc nhiều mã. Trường nhập mã giảm giá được hiển thị theo mặc định. Đặt feature_flags.allow_discount_code thành false để ẩn trường này. Các mã được áp dụng theo thứ tự trong mảng, tối đa 20 mã.

Kết hợp Discount Code

Checkout sessions, payments và subscriptions chấp nhận tối đa 20 mã kết hợp thông qua mảng discount_codes. Các mã được áp dụng theo thứ tự trong mảng: mã đủ điều kiện đầu tiên sẽ giảm giá khởi điểm, mã tiếp theo sẽ giảm trên mức giá đã được giảm, và tiếp tục như vậy. Khi Purchasing Power Parity được bật, giá khởi điểm là số tiền đã điều chỉnh theo PPP. Phản hồi bao gồm discount_ids (trên payments/subscriptions) và discounts (thông tin chi tiết hơn cho từng khoản giảm giá, bao gồm vị trí và số chu kỳ subscription còn lại).
Trường discount_code dạng số ít đã bị deprecated nhưng vẫn được hỗ trợ đầy đủ để đảm bảo backward compatibility. Không thể kết hợp trường này với discount_codes trong cùng một request. Hãy chuyển sang discount_codes (dạng mảng) để tận dụng khả năng kết hợp và phản hồi chi tiết hơn.
Với một subscription price đã bật Card-Optional at Zero Price, một chuỗi mã làm giảm toàn bộ số tiền phải trả hôm nay xuống 0 cũng sẽ bỏ qua yêu cầu về thẻ — khách hàng checkout mà không cần lưu payment method, tương tự như một mức giá 0 gốc.

Quản lý API

Tạo mã giảm giá theo lập trình với loại và số tiền.

API Reference

Xem API tạo mã giảm giá.
Liệt kê tất cả mã giảm giá hoặc truy xuất thông tin chi tiết để quản lý và kiểm tra.

API Reference

Duyệt các API liệt kê và truy xuất.
Tra cứu mã giảm giá bằng mã dễ đọc (ví dụ: “SAVE20”) thay vì ID nội bộ.

API Reference

Truy xuất mã giảm giá theo tên mã.
Sửa đổi cấu hình mã giảm giá, chẳng hạn như số tiền, thời hạn hoặc các hạn chế.

API Reference

Tìm hiểu cách cập nhật thông tin chi tiết về mã giảm giá.
Tải mã giảm giá theo ID để kiểm tra trạng thái, số lần sử dụng và các hạn chế trước khi áp dụng.

API Reference

Lấy mã giảm giá theo ID.
Hủy kích hoạt hoặc xóa các mã giảm giá không còn cần thiết.

API Reference

Xóa mã giảm giá.
Đối với mã giảm giá có customer_eligibility được đặt thành specific, hãy quản lý những khách hàng có thể đổi mã:
  • GET /discounts/{discount_id}/customers — liệt kê các khách hàng đã thêm (có phân trang, tối đa 100 khách hàng mỗi trang).
  • POST /discounts/{discount_id}/customers — thêm khách hàng theo ID. Lệnh gọi này có tính idempotent và chấp nhận tối đa 1000 ID; tất cả ID phải tồn tại trong business của bạn. Phản hồi chỉ trả về các ID được gửi trong yêu cầu đó, vì vậy hãy liệt kê endpoint để đọc toàn bộ allow list.
  • DELETE /discounts/{discount_id}/customers/{customer_id} — xóa một khách hàng cụ thể.

Các trường hợp sử dụng phổ biến

  • Ưu đãi mở đầu: Khuyến mãi ra mắt có thời hạn cho sản phẩm mới
  • Bán số lượng lớn hoặc B2B: Giảm giá theo hợp đồng cho các nhóm sản phẩm được chọn
  • Chiến lược giữ chân: Mã khuyến mãi thu hút lại khách hàng trong quy trình ngăn ngừa churn
  • Chiến dịch theo mùa: Khuyến mãi theo ngày lễ hoặc sự kiện

Ví dụ tích hợp

Tạo Discount với Metadata

Đính kèm các cặp key–value tùy chỉnh để theo dõi nội bộ.
Sử dụng metadata để gắn thẻ mã giảm giá theo chiến dịch, nguồn hoặc ID tham chiếu nội bộ, giúp bạn đối soát việc sử dụng và đo lường ROI sau này.

Áp dụng Discount trong Checkout Sessions

Áp dụng trước một hoặc nhiều discount kết hợp và hiển thị giao diện nhập mã.

Áp dụng Discount trong quá trình thay đổi Plan

Cung cấp mức giá khuyến mãi khi khách hàng nâng cấp hoặc hạ cấp subscription.
Tham số discount_codes kiểm soát cách xử lý discount:
Đọc tất cả discount đã áp dụng từ mảng discounts của subscription trong phản hồi. Mỗi mục bao gồm discount_id, position, cycles_remaining và mã gốc.

Ẩn trường mã giảm giá

Trường nhập mã giảm giá được hiển thị theo mặc định. Đặt allow_discount_code thành false để ẩn trường này.

Các phương pháp hay nhất

  • Đặt tên rõ ràng: Sử dụng các mã dễ nhận biết và phù hợp với tên chiến dịch.
  • Giới hạn thời gian: Thêm ngày hết hạn để tạo cảm giác cấp bách và ngăn việc sử dụng sai mục đích.
  • Giới hạn phạm vi hợp lý: Giới hạn theo các sản phẩm cụ thể để tránh làm thất thoát biên lợi nhuận.
  • Xác thực sớm: Kiểm tra khả năng áp dụng của mã trước khi xác nhận checkout.
  • Theo dõi tác động: Theo dõi mức sử dụng và tỷ lệ chuyển đổi theo từng chiến dịch.
Lần sửa đổi cuối 26 tháng 9, 2026