New Features
1. Entitlements
Dodo Payments now ships with unified Entitlements — a single layer powering automatic delivery for every fulfilment integration. A single product can deliver multiple entitlements on every successful purchase or active subscription.
These join the existing License Keys (unique keys with activation limits and expiry) and Digital Files (presigned download URLs for e-books, templates, media) integrations, all now managed through the same grant lifecycle.
What you get out of the box
Webhooks
Four new lifecycle events fire for every grant:
Learn more: Entitlements | Entitlement Grant Webhooks
2. Subscription Cancellation Reasons in the Customer Portal
When customers cancel a subscription from the Customer Portal, they’re now prompted to share why they’re cancelling before confirming. The captured reason is stored on the subscription ascancellation_feedback, surfaced in the API and webhook payloads, and available in the dashboard so you can spot churn patterns at a glance.

Where it appears
- Subscription object: New
cancellation_feedbackfield (one of the values above) andcancellation_comment(optional free-text), populated when the customer cancels subscription.cancelledwebhook: Both fields are included in the payload- API: Pass
cancellation_feedbackandcancellation_commenttoPATCH /subscriptions/{subscription_id}when scheduling or executing a cancellation programmatically
3. Configurable Mandate Minimum Amount for INR E-Mandates
You can now configure the mandate floor for INR e-mandates on Indian-card recurring subscriptions. Previously, every Indian-card subscription below ₹15,000 used a fixed ₹15,000 on-demand mandate. Now you can override this floor at the merchant level — and per checkout session or subscription if needed. The mandate amount registered with the customer’s bank ismax(mandate_min_amount_inr_paise, billing_amount), so this value acts as the customer-facing authorization ceiling whenever billing is lower than the floor.
- Per-request override (
mandate_min_amount_inr_paiseon the checkout session, payment, or subscription) - Merchant-level setting in business settings
- System default of ₹15,000 (1,500,000 paise)
This setting only affects e-mandates registered for Indian-issued cards (Visa, Mastercard, RuPay) on INR subscriptions. UPI subscriptions follow their own AutoPay flow and are unaffected.
4. Adaptive Currency Fees Inclusive Business Setting
Adaptive Currency is the feature that lets you charge customers in their local currency. By default, the 2–4% adaptive currency fee is borne by the customer and added on top of your displayed price. With the new Fees Inclusive setting, you can flip this: keep the displayed price unchanged for the customer and absorb the fee yourself. Where to configure Go to Settings → Business, ensure Adaptive Pricing is enabled, and toggle Fees Inclusive in the Adaptive Currency section. Per-request override You can also override the merchant default for individual payments, on-demand subscription charges, and plan changes using theadaptive_currency_fees_inclusive boolean:
INR → INR transactions are always treated as inclusive regardless of the business setting or per-request override.
5. Dodo Payments Desktop App
The official Dodo Payments Desktop app is now generally available for macOS, Windows, and Linux. Run your payments dashboard as a fast, native app — no browser tab required.
What’s inside
- Tiny native binary — built with Tauri on the system’s native webview, ~5 MB total (no bundled Chromium)
- Signed and notarized — macOS builds are signed with Apple Developer ID and notarized, so no Gatekeeper warnings
- Auto-update — checks every 4 hours and applies signed updates automatically from GitHub Releases (works on macOS, Windows, and Linux AppImage)
- System tray + menu bar — hide-to-tray on macOS, full File/Edit/View/Help menus with keyboard shortcuts (
⌘⇧Hgo to dashboard,⌘Lcopy current URL,⌘⌥Idev tools) - Deep-link support — magic-link authentication links open straight in the app
- Multi-window — open multiple dashboards side by side
6. Stablecoin Payments (USDC, USDP, USDG)
Accept stablecoin payments globally with USD settlement. Customers pay from their preferred stablecoin wallet on the network of their choice; you receive fiat USD with no exposure to crypto volatility, no chargebacks, and no banking infrastructure required on the customer’s side. Supported currencies and networks
Coverage
Configuration
Pass
crypto_currency in allowed_payment_method_types when creating a checkout session:
payment.succeeded webhook fires and the customer is redirected to your success page.
Stablecoin payments are irreversible by design — there are no chargebacks. We recommend always offering
credit and debit as fallback methods for customers without a stablecoin wallet.7. Import Existing License Keys
You can now import license keys from another system into Dodo Payments using the Create License Key API. This unlocks zero-disruption migration from any external license-key provider, so your existing customers can continue activating, validating, and deactivating their keys against Dodo Payments without re-issuance.source: "import" (vs. source: "auto" for keys generated automatically on payment), so you can distinguish migrated inventory from organically issued keys when querying GET /license_keys. The payment_id on imported keys is null because they aren’t tied to a Dodo Payments transaction.
Learn more: License Keys | Create License Key API
8. require_phone_number for Checkout Sessions
Force customers to provide a phone number during checkout by setting feature_flags.require_phone_number: true when creating a checkout session. Phone number becomes a required field on the checkout form, with form validation surfacing “Phone number is required” if the customer leaves it blank.
Learn more: Checkout Features | Create Checkout Session API
Bug Fixes & Improvements
- Minor bug fixes and stability improvements across the platform