Need Help: Card Payments Skipping OTP (3DS) in DodoPayments
Hi! I’m integrating DodoPayments in my Next.js app and facing an issue with card payments + OTP (3D Secure).
❗ Problem
When I create a payment:
It gets initiated successfully
User is redirected to the Dodo checkout page
But for real cards, it immediately redirects to the success page
No card input form
No OTP (3D Secure)
Payment status shows “initiated”, not authorized/captured
✔ What I want
A proper card flow:
-
User enters card details
-
User receives OTP / 3DS authentication
-
On success → redirect to success URL
-
On failure → redirect to failure URL
📌 My current server code
const payment = await dodopayments.payments.create({
billing: { city: "city", country: countryCode, state: "state", street: "street", zipcode: "zipcode" },
customer: { email, name },
metadata: { supabaseid: id },
payment_link: true,
return_url: process.env.DODO_PAYMENTS_RETURN_URL,
product_cart: [{ product_id: productId, quantity: 1, amount: amt }],
});
❓ Need Clarification On
-
Is payment_link: true the correct mode for OTP/3DS?
Or should I use something like:
mode: "payment" + payment_method_types: ["card"]? -
Does my merchant account need specific features enabled for OTP?
(e.g., 3D Secure / SCA, card authorization mode) -
Can anyone share a working example config for DodoPayments that:
shows card input
triggers OTP
authorizes before redirect?
Any guidance or step-by-step setup would really help. Thanks!