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

Tính năng mới

1. Phân tích cấp sản phẩm

Mỗi sản phẩm giờ có bảng điều khiển phân tích riêng. Điều hướng tới Products > [Select a Product] để truy cập các số liệu chi tiết theo sản phẩm đó, được tổ chức trên năm tab:
Product-Level Analytics
TabBạn nhận được
OverviewTổng doanh thu, số giao dịch thanh toán thành công, biểu đồ xu hướng doanh thu 30 ngày (hàng ngày hoặc tích lũy), và bảng giao dịch có thể lọc được
CustomersTop 3 khách hàng theo thứ tự chi tiêu với giao diện podium, cộng thêm bảng phân tích khách hàng đầy đủ
RetentionTỷ lệ churn khách hàng, tỷ lệ churn doanh thu, và biểu đồ xu hướng hai đường để nhận diện mẫu hình
SubscribersTất cả đăng ký cho sản phẩm kèm trạng thái, ngày bắt đầu, ngày thanh toán kế tiếp, và số tiền
MRRBiểu đồ cột chồng Doanh thu Định kỳ Hàng tháng với phần phân tích New MRR, Expansion MRR, Churned MRR, và Net New MRR
Tất cả các tab hỗ trợ một bộ lọc ngày (mặc định là toàn bộ thời gian) để bạn có thể đào sâu vào bất kỳ khoảng thời gian nào.
Sử dụng tab Retention để xác định sớm các sản phẩm có tỷ lệ churn cao, và tab MRR để theo dõi liệu doanh thu mở rộng có vượt qua doanh thu bị churn từng tháng hay không.
Tìm hiểu thêm: Phân tích cấp sản phẩm

2. Hỗ trợ Verifi RDR trên Dodo Payments

Dodo Payments hiện hỗ trợ Visa Rapid Dispute Resolution (RDR) do Verifi cung cấp — một công cụ tự động ngăn ngừa tranh chấp giải quyết các tranh chấp Visa đủ điều kiện trước khi chúng trở thành chargeback chính thức. Khi chủ thẻ khởi tạo tranh chấp, RDR sẽ chặn lại và tự động phát hành hoàn tiền nếu giao dịch nằm dưới ngưỡng USD bạn cấu hình. Tại sao điều này quan trọng
Lợi íchTác động
Giảm tỷ lệ tranh chấpCác tranh chấp được RDR giải quyết không tính vào ngưỡng 0.9% của Visa
Không có phí tranh chấpTránh được phí không hoàn lại 1515-25 cho mỗi tranh chấp
Không cần vận hànhKhông cần thu thập chứng cứ hay đáp ứng hạn chót
Trải nghiệm khách hàng tốt hơnChủ thẻ nhận được hoàn tiền tức thì
Bảo vệ tài khoảnGiữ cho bạn không bị đưa vào Chương trình Giám sát Tranh chấp của Visa (VDMP)
Vượt qua tỷ lệ tranh chấp 0.9% của Visa hoặc 100 tranh chấp/tháng sẽ kích hoạt VDMP, với các khoản phạt tăng dần lên đến hơn $50,000/tháng. RDR giúp bạn duy trì dưới những ngưỡng này.
Cách hoạt động
  1. Chủ thẻ khởi tạo tranh chấp với ngân hàng của họ
  2. RDR chặn tranh chấp trước khi nó trở thành chargeback chính thức
  3. Nếu số tiền giao dịch bằng hoặc thấp hơn ngưỡng của bạn, hoàn tiền được phát hành tự động
  4. Tranh chấp được giải quyết ngay và không bị tính vào tỷ lệ tranh chấp của bạn
Giao dịch được hoàn tự động qua RDR hiển thị như một tranh chấp thua trên bảng điều khiển Dodo Payments của bạn. Điều này là bình thường — khoản hoàn tiền được phát hành tự động để ngăn ngừa chargeback chính thức.
Để bật Verifi RDR cho tài khoản của bạn, liên hệ support@dodopayments.com để cấu hình ngưỡng. Tìm hiểu thêm: Tài liệu Visa RDR

3. DodoPayments CLI

Giới thiệu DodoPayments CLI (dodopayments-cli) — quản lý toàn bộ quy trình Dodo Payments trực tiếp từ terminal. Được xây dựng cho các nhà phát triển thích dòng lệnh, CLI cho phép bạn quản lý sản phẩm, thanh toán, khách hàng, giảm giá, giấy phép, addons, hoàn tiền, và thậm chí tạo phiên checkout mà không cần rời khỏi trình soạn thảo. Cài đặt
npm install -g dodopayments-cli
Các lệnh chính
CommandDescription
dodo loginXác thực với khóa API của bạn (mở trình duyệt)
dodo products listLiệt kê tất cả sản phẩm
dodo payments listLiệt kê tất cả thanh toán
dodo customers createTạo khách hàng mới
dodo checkout newTạo phiên checkout và lấy URL
dodo wh listenChuyển tiếp webhook kiểm tra trực tiếp đến máy chủ cục bộ qua WebSocket
dodo wh triggerGửi payload webhook giả lập đến bất kỳ endpoint nào
Kiểm tra webhook CLI bao gồm hai công cụ mạnh cho phát triển:
  • dodo wh listen — Mở kết nối WebSocket để chuyển tiếp webhook kiểm tra thời gian thực đến máy chủ cục bộ của bạn, giữ nguyên header gốc để kiểm thử xác thực chữ ký
  • dodo wh trigger — Gửi payload webhook giả lập tương tác, hỗ trợ tất cả 22 loại sự kiện qua đăng ký, thanh toán, hoàn tiền, tranh chấp và giấy phép
  • dodo wh listen — Opens a WebSocket connection to forward real-time test webhooks to your local server, preserving original headers for signature verification testing
  • dodo wh trigger — Sends mock webhook payloads interactively, supporting all 22 event types across subscriptions, payments, refunds, disputes, and licenses
Trình lắng nghe webhook chỉ hoạt động với khóa API chế độ thử nghiệm. Đảm bảo bạn đăng nhập bằng khóa chế độ thử nghiệm trước khi dùng dodo wh listen.
Tìm hiểu thêm: Tài liệu CLI

4. Thiết kế lại giao diện cổng khách hàng

Cổng khách hàng đã được thiết kế lại hoàn toàn với giao diện sạch, thống nhất. Cổng mới có thanh điều hướng bên trái và các phần được tổ chức, giúp khách hàng trải nghiệm tự phục vụ trực quan hơn.
Customer Portal UI Revamp
Điểm mới
PhầnTính năng
Active SubscriptionsXem tất cả đăng ký đang hoạt động với thông tin gói, chu kỳ thanh toán, và ngày thanh toán tiếp theo
Payment MethodsQuản lý phương thức thanh toán đã lưu, thêm thẻ mới và cập nhật chi tiết thanh toán
Billing HistoryXem hóa đơn trước đây với biên lai PDF có thể tải về
Billing InformationChỉnh sửa tên, email, số điện thoại và địa chỉ thanh toán
Subscription DetailsXem thông tin chi tiết về đăng ký với tùy chọn hủy hoặc thay đổi gói
Plan ChangesNâng cấp hoặc hạ cấp qua Bộ sưu tập sản phẩm trực tiếp trong cổng
Khách hàng cũng có thể cập nhật phương thức thanh toán cho đăng ký đang hoạt động hoặc kích hoạt lại đăng ký bị tạm hoãn do thanh toán thất bại — tất cả đều từ cổng mới.
Cổng mới có sẵn tại https://customer.dodopayments.com/login/{business_id} cho chế độ live và https://test.customer.dodopayments.com/login/{business_id} cho chế độ thử nghiệm.
Tìm hiểu thêm: Cổng khách hàng

5. Cập nhật phương thức thanh toán trong Inline Checkout

inline checkout hiện hỗ trợ cập nhật phương thức thanh toán cho các đăng ký. Khi khách hàng cần cập nhật phương thức thanh toán (cho đăng ký đang hoạt động hoặc để kích hoạt lại đăng ký đang tạm hoãn), luồng cập nhật phương thức thanh toán giờ có thể hiển thị trực tiếp trong bố cục trang của bạn bằng inline checkout — mang lại trải nghiệm nhúng mượt mà. Cách hoạt động
  1. Gọi API Cập nhật Phương thức Thanh toán để lấy payment_link:
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});
  1. Sử dụng payment_link trả về làm checkoutUrl trong inline checkout:
DodoPayments.Checkout.open({
  checkoutUrl: response.payment_link,
  elementId: "dodo-inline-checkout"
});
Khung nhúng chỉ hiển thị biểu mẫu thu thập phương thức thanh toán, cho phép khách hàng nhập thông tin thẻ mới hoặc chọn phương thức đã lưu mà không rời trang của bạn.
Với các đăng ký đang tạm hoãn, luồng cập nhật phương thức thanh toán tự động tạo phí cho số tiền còn lại. Theo dõi các webhook payment.succeededsubscription.active để xác nhận việc kích hoạt lại.
Tìm hiểu thêm: Inline Checkout | Subscription Payment Method Updates

6. Hỗ trợ tự động điền mã số thuế cho phiên thanh toán

Bạn có thể tự động điền mã số thuế (ví dụ: mã VAT, mã GST) khi tạo phiên thanh toán bằng tham số tax_id. Điều này lý tưởng cho giao dịch B2B khi bạn đã biết số định danh thuế của khách hàng. Khi mã số thuế được tự động điền, trường này được điền sẵn và khóa trên biểu mẫu thanh toán.
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_123', quantity: 1 }],
  customer: { customer_id: 'cus_123' },
  billing_address: { country: 'DE' },
  tax_id: 'DE999999999',
  return_url: 'https://yoursite.com/return'
});
Tham số tax_id yêu cầu một billing_address có ít nhất một trường country. Điều kiện đủ thuế được xác thực theo thời gian thực, và các quy tắc reverse-charge được áp dụng tự động cho giao dịch B2B đạt yêu cầu.
Sử dụng cờ tính năng allow_customer_editing_tax_id để kiểm soát xem khách hàng có thể chỉnh sửa mã số thuế đã điền sẵn không, và allow_tax_id để bật/tắt hiển thị mã số thuế trên trang thanh toán. Tìm hiểu thêm: Phiên thanh toán - Mã số thuế | Thanh toán B2B

7. Khóa giấy phép và email trong chuyển hướng URL trả về

Sau khi khách hàng hoàn tất thanh toán, Dodo Payments giờ thêm license_keyemail làm tham số truy vấn vào chuyển hướng return_url của bạn, bên cạnh các tham số payment_id/subscription_idstatus hiện có. Các tham số truy vấn được thêm
ParameterTypeCondition
payment_idstringLuôn xuất hiện cho thanh toán một lần
subscription_idstringLuôn xuất hiện cho thanh toán theo đăng ký
statusstringLuôn xuất hiện
license_keystringXuất hiện nếu sản phẩm có bật khóa giấy phép (phân cách bằng dấu phẩy nếu nhiều)
emailstringXuất hiện nếu khách hàng có email lưu trữ
URL chuyển hướng ví dụ:
# One-time payment with license key
https://yoursite.com/return?payment_id=pay_xxx&status=succeeded&license_key=LK-001&email=customer%40example.com

# Subscription with multiple license keys
https://yoursite.com/return?subscription_id=sub_xxx&status=active&license_key=LK-001,LK-002&email=customer%40example.com
Sử dụng các tham số truy vấn này để hiển thị khóa giấy phép hoặc gửi email xác nhận ngay trên trang trả về của bạn, mà không cần gọi API bổ sung.
Tìm hiểu thêm: Phiên thanh toán - Return URL | Khóa giấy phép trong Return URL

8. API cập nhật email khách hàng

Đầu cuối PATCH /customers/{customer_id} giờ hỗ trợ cập nhật địa chỉ email khách hàng bằng mã. Cập nhật email cùng tên, số điện thoại và metadata trong một lần gọi API.
await client.customers.update('cus_123', {
  email: 'newemail@example.com',
  name: 'Updated Name'
});
Các trường có thể cập nhật
TrườngLoạiMô tả
emailstring | nullĐịa chỉ email của khách hàng
namestring | nullTên hiển thị của khách hàng
phone_numberstring | nullSố điện thoại theo định dạng quốc tế
metadataobject | nullCác cặp khóa-giá trị tùy chỉnh
Cập nhật email khách hàng cũng có thể thực hiện qua Cổng khách hàng (tự phục vụ), bảng điều khiển và CLI qua dodo customers update.
Tìm hiểu thêm: Customer Update API | Quản lý khách hàng

9. Phát hành adapter Bun

Giới thiệu @dodopayments/bun — một adapter framework chuyên dụng cho máy chủ gốc của Bun (Bun.serve()). Tích hợp checkout, cổng khách hàng và webhook với Bun chỉ trong vài dòng mã. Cài đặt
bun add @dodopayments/bun
Thiết lập nhanh
import { Checkout, CustomerPortal, Webhooks } from "@dodopayments/bun";

Bun.serve({
  routes: {
    "/api/checkout": Checkout({
      bearerToken: process.env.DODO_PAYMENTS_API_KEY!,
      returnUrl: process.env.DODO_PAYMENTS_RETURN_URL!,
      environment: process.env.DODO_PAYMENTS_ENVIRONMENT!,
    }),
    "/api/customer-portal": CustomerPortal({
      bearerToken: process.env.DODO_PAYMENTS_API_KEY!,
      environment: process.env.DODO_PAYMENTS_ENVIRONMENT!,
    }),
    "/api/webhooks": Webhooks({
      webhookKey: process.env.DODO_PAYMENTS_WEBHOOK_KEY!,
      onPaymentSucceeded: async (payload) => {
        console.log("Payment succeeded:", payload.data.payment_id);
      },
      onSubscriptionActive: async (payload) => {
        console.log("Subscription active:", payload.data.subscription_id);
      },
    }),
  },
});
Adapter Bun hỗ trợ cả ba luồng thanh toán (static, dynamic và dựa trên session), tạo phiên cổng khách hàng và xử lý webhook an toàn với xác thực chữ ký cùng kiểm tra Zod cho 22 loại sự kiện.
Adapter Bun tham gia gia đình 11 adapter framework của chúng tôi bao gồm Next.js, Nuxt, Express, Fastify, Hono, Astro, SvelteKit, Remix, TanStack Start, Better Auth và Convex.
Tìm hiểu thêm: Tài liệu adapter Bun | Tổng quan về adapter framework