Documentation Index
Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
Use this file to discover all available pages before exploring further.
New Features
1. Abandoned Cart Recovery
Automatically detect incomplete or failed checkouts and send targeted email sequences to bring customers back. ACR monitors payments that haven’t succeeded after 60 minutes and classifies them as either payment failed or checkout incomplete, then sends up to 3 configurable recovery emails per sequence.
Key capabilities:
- Two email sequences — Payment Failed and Checkout Incomplete, each with up to 3 emails
- Recovery discounts — Optionally auto-generate single-use discount codes to incentivize recovery
- Customer recovery page — Unique recovery links take customers to a dedicated page to complete their purchase
- Recovery analytics — Track abandoned checkout counts, recovery rates, recovered revenue, and per-email/per-product breakdowns
Start with the default email timing (1 hour, 24 hours, 72 hours) and iterate based on your recovery analytics data.
Learn more: Abandoned Cart Recovery
2. Subscription Dunning
Automatically send email sequences to recover lapsed or cancelled subscriptions. Dunning is triggered when a subscription enters on hold (payment failure) or is cancelled by the customer from the customer portal.
Key capabilities:
- Two email sequences — On Hold and Cancelled, each with up to 4 emails
- Automatic charging — When a customer updates their payment method, outstanding dues are charged automatically
- Configurable timing — Default intervals at 1, 3, 5, and 7 days, fully customizable per email
Learn more: Subscription Dunning
You can now attach metadata (key-value pairs) to discounts when creating or updating them via the API. Use metadata to tag discounts by campaign, source, or internal reference for tracking and reconciliation.
const discount = await client.discounts.create({
type: 'percentage',
amount: 1500, // 15%
code: 'SUMMER2025',
metadata: {
campaign: 'summer_promo',
source: 'email_blast'
}
});
Learn more: Discount Codes | Metadata Guide
4. Recovery Webhooks
New webhook events to track the recovery lifecycle:
| Event | Description |
|---|
abandoned_checkout.detected | An abandoned checkout has been detected |
abandoned_checkout.recovered | Customer completed payment through a recovery link |
dunning.started | A dunning attempt has been started for a subscription |
dunning.recovered | Customer updated payment method and payment succeeded |
Learn more: Recovery Webhooks
5. Pix Payments for Brazil
Accept Pix — Brazil’s instant payment system created by the Central Bank of Brazil — in your Dodo Payments checkout. Pix is now the most-used payment method in Brazil, surpassing both credit cards and boleto, and confirms in seconds 24/7/365.
Coverage
| Detail | Value |
|---|
| Billing currency | BRL |
| Supported countries | Brazil |
| Subscriptions | Not supported (one-time payments only) |
| Minimum amount | $0.50 |
| Settlement | Instant |
Configuration
Pass pix in allowed_payment_method_types and set the billing currency to BRL:
const session = await client.checkoutSessions.create({
product_cart: [{ product_id: 'prod_123', quantity: 1 }],
allowed_payment_method_types: ['pix', 'credit', 'debit'],
billing_currency: 'BRL',
return_url: 'https://example.com/success'
});
The customer is shown a Pix QR code and a copy-paste key on checkout. They open their banking app, scan or paste, and the payment confirms instantly.
Pix QR codes expire after a set window — design your checkout flow to allow customers to regenerate the code if needed. Always include card fallbacks for customers who prefer to pay by card.
Learn more: Pix Payments
6. WeChat Pay for Chinese Customers
Accept WeChat Pay — used by over a billion people across China — directly in your Dodo Payments checkout. Customers scan a QR code with their WeChat app and confirm the payment in seconds, all without leaving the WeChat ecosystem.
Coverage
| Detail | Value |
|---|
| Billing currencies | USD, CNY |
| Subscriptions | Not supported (one-time payments only) |
| Minimum amount | $0.50 / ¥1.00 |
| Settlement | USD |
Configuration
Pass wechat_pay in allowed_payment_method_types when creating a checkout session:
const session = await client.checkoutSessions.create({
product_cart: [{ product_id: 'prod_123', quantity: 1 }],
allowed_payment_method_types: ['wechat_pay', 'credit', 'debit'],
return_url: 'https://example.com/success'
});
WeChat Pay supports both USD (for cross-border merchants targeting Chinese customers) and CNY (for domestic Chinese transactions). Settlement to merchants is in USD regardless of the billing currency.
Display the checkout on a desktop or tablet so customers can scan the QR code with their phone — this is the most familiar flow for WeChat Pay users.
Learn more: WeChat Pay