#Invalid checkout domain

1 messages · Page 1 of 1 (latest)

crimson inlet
ripe lightBOT
# crimson inlet Hi team — I’m seeing an issue in production with subscriptions. Everything works...

This happens because live.checkout.dodopayments.com is not a valid checkout domain.

What to do:

  • ✅ Test mode: https://test.checkout.dodopayments.com (correct)
  • ✅ Live mode: use your own production domain (e.g. https://yourapp.com)
  • ❌ Do not use live.checkout.dodopayments.com anywhere

Fix steps:

  1. Update your production integration to open checkout from your site domain.
  2. Ensure your checkout/session is created with live API keys.
  3. If using Inline or Overlay checkout, initialize SDK with:
    mode: "live"
    
  4. Retry the subscription flow.

If this still fails, your production domain may not be whitelisted—email support with your live domain.

Helpful Links

Dodo Payments Documentation

A modern TypeScript library for embedding Dodo Payments overlay checkout and listening to checkout events in real-time.

Dodo Payments Documentation

Embed Dodo Payments checkout directly into your website for a seamless, branded payment experience.

crimson inlet
#

i am not using sdk

twin walrus
#

@sick cipher @warm oracle @primal dagger

grizzled path
crimson inlet
#

ok, let me try, then get back to you

crimson inlet
crimson inlet
#

When I am using this
Test - https://test.checkout.dodopayments.com/
const checkoutUrl = new URL(
/buy/${process.env.DODO_API_SUBSCRIPTION_PRODUCT_ID},
process.env.DODO_CHECKOUT_LINK,
);
It's working fine

crimson inlet
#

@grizzled path ?

grizzled path
#

Yes

grizzled path
crimson inlet
#

ok

#

do you have any doc link for that