You’re mixing two different flows. For No‑Code Checkout, you do not initialize the JS processor.
Correct No‑Code Checkout (start → finish)
-
Create a product
- Type: One‑time payment
- Set price, currency, tax category
- Status must be Active
-
Enable Payment Link
- Open the product → Payment Link
- Copy the generated link
-
Use the payment link directly
- Open the link in browser
- Or embed it as a normal
<a href="...">Buy</a> - ✅ No JS, no SDK, no processor initialization
-
Make sure you’re in the right mode
- Test product → use test.dodopayments.com link
- Live product → use live.dodopayments.com link
Why you saw “products can not be purchased”
- Product is Draft / Inactive
- Using JS processor with a payment link
- Test product opened in Live mode (or vice‑versa)
When to use JS instead
Only use JavaScript if you want:
- Dynamic carts
- Custom checkout sessions
- Programmatic pricing
If you want, tell me:
- Test or Live mode?
- One‑time or subscription?
And I’ll give the exact link format.
Helpful Links
Dodo Payments Documentation
Sell fixed‑price digital goods or services with a single upfront charge, no renewals.