Chuyển đến nội dung chính

Quick Start Guide

Get your first checkout session running in under 5 minutes

API Reference & Live Testing

Explore the full API documentation and interactively test Checkout Session requests and responses.

Preview Checkout

Calculate pricing, taxes, and totals before creating a session.
Session Validity: Checkout sessions are valid for 24 hours by default. If you pass confirm=true in your request, the session will only be valid for 15 minutes.

Prerequisites

1

Dodo Payments Account

You’ll need an active Dodo Payments merchant account with API access.
2

API Credentials

Generate your API credentials from the Dodo Payments dashboard:
3

Products Setup

Create your products in the Dodo Payments dashboard before implementing checkout sessions.

Creating Your First Checkout Session

API Response

All methods above return the same response structure:
1

Get the checkout URL

Extract the checkout_url from the API response.
2

Redirect your customer

Direct your customer to the checkout URL to complete their purchase.
Alternative Integration Options: Instead of redirecting, you can embed the checkout directly in your page using Overlay Checkout (modal overlay) or Inline Checkout (fully embedded). Both options use the same checkout session URL.
3

Handle the return

After payment, customers are redirected to your return_url with query parameters including payment/subscription ID, status, customer email, and any license keys. See the return_url parameter docs for the full list.

Request Body

Required Fields

Essential fields needed for every checkout session

Optional Fields

Additional configuration to customize your checkout experience

Required Fields

product_cart
array
bắt buộc
Array of products to include in the checkout session. Each product must have a valid product_id from your Dodo Payments dashboard.
Mixed Checkout: You can combine one-time payment products and subscription products in the same checkout session. This enables powerful use cases like setup fees with subscriptions, hardware bundles with SaaS, and more.
Tìm ID sản phẩm của bạn: Bạn có thể tìm thấy ID sản phẩm trong bảng điều khiển Dodo Payments dưới mục Products → View Details, hoặc bằng cách sử dụng API List Products.

Trường Tùy Chọn

Cấu hình những trường này để tùy chỉnh trải nghiệm thanh toán và thêm logic kinh doanh vào dòng thanh toán của bạn.
customer
object
Thông tin khách hàng. Bạn có thể đính kèm một khách hàng hiện có bằng ID của họ hoặc tạo hồ sơ khách hàng mới trong quá trình thanh toán.
Đính kèm một khách hàng hiện có vào phiên thanh toán bằng ID của họ.
billing_address
object
Thông tin địa chỉ thanh toán cho tính toán thuế chính xác, phòng chống gian lận và tuân thủ quy định.
Khi confirm được đặt thành true, tất cả các trường địa chỉ thanh toán trở nên bắt buộc để tạo phiên thành công.
allowed_payment_method_types
array
Kiểm soát các phương thức thanh toán nào có sẵn cho khách hàng trong quá trình thanh toán. Điều này giúp tối ưu hóa cho các thị trường hoặc yêu cầu kinh doanh cụ thể.Các tùy chọn có sẵn: credit, debit, upi_collect, apple_pay, google_pay, amazon_pay, klarna, affirm, afterpay_clearpay, cashapp, multibanco, bancontact_card, eps, ideal, przelewy24, paypal, sunbit
Quan trọng: Luôn bao gồm creditdebit như các tùy chọn dự phòng để ngăn ngừa thất bại thanh toán khi các phương thức thanh toán ưa thích không khả dụng.
Ví dụ:
billing_currency
string
Ghi đè lựa chọn tiền tệ mặc định với một loại tiền tệ thanh toán cố định. Sử dụng mã tiền tệ ISO 4217.Các loại tiền tệ được hỗ trợ: USD, EUR, GBP, CAD, AUD, INR, và nhiều hơnVí dụ: "USD" cho USD, "EUR" cho Euro
Trường này chỉ có hiệu quả khi giá chỉ định là bật. Nếu giá chỉ định bị tắt, tiền tệ mặc định của sản phẩm sẽ được sử dụng.
show_saved_payment_methods
boolean
mặc định:"false"
Hiển thị các phương thức thanh toán đã lưu trước đó cho khách hàng trở lại, cải thiện tốc độ thanh toán và trải nghiệm người dùng.
return_url
string
URL để chuyển hướng khách hàng sau khi hoàn tất thanh toán. Dodo Payments thêm các tham số truy vấn sau vào URL của bạn khi chuyển hướng:Ví dụ URL chuyển hướng:
Sử dụng các tham số truy vấn license_keyemail để hiển thị các khóa giấy phép hoặc gửi xác nhận ngay lập tức trên trang trở về của bạn, mà không cần một cuộc gọi API bổ sung.
cancel_url
string
URL để chuyển hướng khách hàng khi họ nhấn nút quay lại hoặc hủy bỏ phiên thanh toán. Nếu không được cung cấp, nút quay lại sẽ không được hiển thị.
Đặt cancel_url để cung cấp cho khách hàng một cách rõ ràng để trở lại trang web của bạn mà không hoàn tất mua hàng. Điều này cải thiện trải nghiệm thanh toán và giảm ma sát.
confirm
boolean
mặc định:"false"
Nếu đúng, hoàn tất tất cả các chi tiết phiên ngay lập tức. API sẽ ném ra lỗi nếu dữ liệu cần thiết bị thiếu.
discount_codes
array
Áp dụng một hoặc nhiều mã giảm giá xếp chồng vào phiên thanh toán. Mã được áp dụng theo thứ tự mảng (mã đầu tiên giảm giá gốc, mã thứ hai giảm giá một mức đã giảm trước đó, và như vậy), lên đến mức tối đa 20 mã mỗi phiên.
Trường discount_code đơn số dưới đây là ngừng sử dụng nhưng vẫn đang được hỗ trợ đầy đủ — các tích hợp hiện có vẫn hoạt động mà không cần thay đổi. Không thể kết hợp với discount_codes trong cùng một yêu cầu. Chuyển sang discount_codes khi thuận tiện để tận dụng việc xếp chồng.
discount_code
string
không còn sử dụng
Ngừng sử dụng — ưu tiên discount_codes cho các tích hợp mới. Trường này vẫn hoạt động nhằm đảm bảo khả năng tương thích ngược, nhưng không thể kết hợp với discount_codes trong cùng một yêu cầu.
metadata
object
Cặp khóa-giá trị tùy chỉnh để lưu trữ thông tin bổ sung về phiên.
force_3ds
boolean
Ghi đè hành vi mặc định 3DS của thương gia cho phiên này.
minimal_address
boolean
mặc định:"false"
Kích hoạt chế độ thu thập địa chỉ tối thiểu. Khi bật, thanh toán chỉ thu thập:
  • Quốc gia: Luôn yêu cầu để xác định thuế
  • Mã bưu chính/Postal code: Chỉ ở các khu vực cần thiết để tính thuế bán hàng, VAT hoặc GST
Điều này đáng kể giảm ma sát khi thanh toán bằng cách loại bỏ các trường mẫu không cần thiết.
Kích hoạt địa chỉ tối thiểu để hoàn thành thanh toán nhanh hơn. Thu thập địa chỉ đầy đủ vẫn có sẵn cho các doanh nghiệp yêu cầu đầy đủ chi tiết thanh toán.
customization
object
Tùy chỉnh giao diện và hành vi của giao diện thanh toán.
feature_flags
object
Cấu hình các tính năng và hành vi cụ thể cho phiên thanh toán.
custom_fields
array
Thu thập thông tin bổ sung từ khách hàng trong quá trình thanh toán với các trường tùy chỉnh. Bạn có thể định nghĩa tối đa 5 trường tùy chỉnh cho mỗi phiên thanh toán. Phản hồi của khách hàng sẽ được bao gồm trong payload của webhook và có sẵn qua API.
Phản hồi của khách hàng với các trường tùy chỉnh được bao gồm trong:
  • Webhooks: payment.succeeded, subscription.active, và các payload sự kiện liên quan khác chứa mảng custom_field_responses
  • API responses: Các đối tượng thanh toán và đăng ký bao gồm custom_field_responses
subscription_data
object
Cấu hình bổ sung cho các phiên thanh toán chứa các sản phẩm đăng ký.

Ví dụ Sử dụng

Dưới đây là 10 ví dụ toàn diện trình bày các cấu hình phiên thanh toán khác nhau cho các kịch bản kinh doanh khác nhau:

1. Thanh toán Đơn giản với Sản phẩm Đơn lẻ

2. Giỏ hàng Nhiều Sản phẩm

3. Đăng ký với Thời gian Dùng thử

4. Thanh toán đã được Xác nhận Trước

Khi confirm được đặt thành true, khách hàng sẽ được chuyển trực tiếp đến trang thanh toán, bỏ qua các bước xác nhận.

5. Thanh toán với Ghi đè Đơn vị tiền tệ

Mục billing_currency chỉ có hiệu lực khi đơn vị tiền tệ thích ứng được bật trong cài đặt tài khoản của bạn. Nếu đơn vị tiền tệ thích ứng bị tắt, tham số này sẽ không có hiệu lực.

6. Các Phương thức Thanh toán Lưu cho Khách hàng Quay lại

7. Thanh toán B2B với Thu thập ID Thuế

8. Thanh toán Chủ đề Tối với Mã Giảm giá Xếp chồng

9. Phương thức Thanh toán Khu vực (UPI cho Ấn Độ)

Để biết thông tin chi tiết về cấu hình và kiểm tra UPI, hãy xem trang Phương thức Thanh toán Ấn Độ.

10. Thanh toán BNPL (Mua Trước Trả Sau)

Để biết thông tin chi tiết về cấu hình và kiểm tra BNPL, hãy xem trang Mua Trước Trả Sau (BNPL).

11. Sử dụng Phương thức Thanh toán Hiện có cho Thanh toán Ngay lập tức

Sử dụng phương thức thanh toán đã lưu của khách hàng để tạo phiên thanh toán xử lý ngay lập tức, bỏ qua thu thập phương thức thanh toán:
Khi sử dụng payment_method_id, confirm phải được đặt thành true và một customer_id hiện có phải được cung cấp. Phương thức thanh toán sẽ được xác thực về tính hợp lệ với đơn vị tiền tệ thanh toán.
Phương thức thanh toán phải thuộc về khách hàng và tương thích với đơn vị tiền tệ thanh toán. Điều này cho phép mua hàng chỉ với một cú nhấp chuột cho khách hàng quay lại.

12. Liên kết Ngắn gọn cho URL Thanh toán Sạch hơn

Tạo các liên kết thanh toán ngắn hơn, có thể chia sẻ với các slug tùy chỉnh:
Liên kết ngắn hoàn hảo cho việc chia sẻ qua SMS, email hoặc mạng xã hội. Chúng dễ nhớ hơn và tạo lòng tin cho khách hàng hơn so với các URL dài.

13. Bỏ Qua Trang Thành công Thanh Toán với Chuyển hướng Ngay lập tức

Chuyển hướng khách hàng ngay lập tức sau khi hoàn tất thanh toán, bỏ qua trang thành công mặc định:
Sử dụng redirect_immediately: true khi bạn có một trang thành công tùy chỉnh cung cấp trải nghiệm người dùng tốt hơn trang thành công thanh toán mặc định. Điều này đặc biệt hữu ích cho ứng dụng di động và luồng thanh toán tích hợp.
Khi redirect_immediately được bật, khách hàng sẽ được chuyển hướng đến return_url của bạn ngay sau khi hoàn tất thanh toán, bỏ qua toàn bộ trang thành công mặc định.

14. Buộc Sử dụng Ngôn ngữ

Buộc hiển thị thanh toán bằng ngôn ngữ cụ thể, ghi đè việc phát hiện ngôn ngữ của trình duyệt khách hàng:
Sử dụng force_language khi bạn biết ngôn ngữ ưu tiên của khách hàng (ví dụ, từ cài đặt tài khoản của họ) hoặc khi nhắm mục tiêu vào các thị trường khu vực cụ thể.
Supported languages: tiếng Ả Rập (ar), tiếng Catalan (ca), tiếng Trung (zh), tiếng Hà Lan (nl), tiếng Anh (en), tiếng Pháp (fr), tiếng Đức (de), tiếng Hebrew (he), tiếng Indonesia (id), tiếng Ý (it), tiếng Nhật (ja), tiếng Hàn (ko), tiếng Mã Lai (ms), tiếng Ba Lan (pl), tiếng Bồ Đào Nha (pt), tiếng Romania (ro), tiếng Nga (ru), tiếng Tây Ban Nha (es), tiếng Thụy Điển (sv), tiếng Thái (th), tiếng Thổ Nhĩ Kỳ (tr)

15. Thu thập Trường Tùy chỉnh

Thu thập thông tin bổ sung từ khách hàng trong quá trình thanh toán bằng cách sử dụng các trường tùy chỉnh:
Phản hồi trường tùy chỉnh được tự động bao gồm trong payload của webhook (payment.succeeded, subscription.active, v.v.) và có thể được truy xuất qua API. Sử dụng chúng để làm giàu CRM của bạn, kích hoạt luồng onboarding hoặc tùy chỉnh trải nghiệm khách hàng.
Available field types: text, number, email, url, date, dropdown, boolean

Xem trước Các Phiên Thanh toán

Trước khi tạo một phiên thanh toán, bạn có thể xem trước phân tích giá cả bao gồm thuế, giảm giá và tổng số. Điều này hữu ích cho việc hiển thị giá cả chính xác cho khách hàng trước khi họ tiến hành thanh toán.

Preview API Reference

Xem toàn bộ tài liệu về endpoint xem trước.

Di chuyển từ Liên kết Động đến Phiên Thanh toán

Khác biệt Chính

Trước đây, khi tạo một liên kết thanh toán với Liên kết Động, bạn phải cung cấp địa chỉ thanh toán đầy đủ của khách hàng. Với Phiên Thanh toán, điều này không còn cần thiết nữa. Bạn chỉ cần truyền thông tin bạn có, và chúng tôi sẽ xử lý phần còn lại. Ví dụ:
  • Nếu bạn chỉ biết quốc gia thanh toán của khách hàng, chỉ cần cung cấp điều đó.
  • Quy trình thanh toán sẽ tự động thu thập các chi tiết còn thiếu trước khi chuyển khách hàng đến trang thanh toán.
  • Mặt khác, nếu bạn đã có tất cả thông tin yêu cầu và muốn bỏ qua trực tiếp đến trang thanh toán, bạn có thể truyền toàn bộ dữ liệu và bao gồm confirm=true trong yêu cầu của bạn.

Quá trình Di chuyển

Di chuyển từ Liên kết Động sang Phiên Thanh toán rất đơn giản:
1

Update your integration

Cập nhật tích hợp của bạn để sử dụng phương pháp API hoặc SDK mới.
2

Adjust request payload

Điều chỉnh payload yêu cầu theo định dạng Phiên Thanh toán.
3

That's it!

Có. Không cần xử lý thêm hay các bước di chuyển đặc biệt nào từ phía bạn.

Tham khảo API liên quan

Create Checkout Session

Tham khảo API đầy đủ để tạo các phiên thanh toán với tất cả các tham số và tùy chọn có sẵn

Preview Checkout Session

Tham khảo API để xem trước giá cả, thuế và tổng số trước khi tạo một phiên
Lần sửa đổi cuối 9 tháng 7, 2026