All providers

Dodo Payments

Buyers pay through Dodo’s hosted checkout and you receive the funds. Coin Moebius never holds the money. The buy button takes one-time payments; subscriptions run through your own Dodo subscription product, with the lifecycle tracked through your webhook.

What you need

FieldWhat it does
API keyLets us call Dodo to create the hosted checkout. Secret.
Webhook signing secret (whsec_…)Confirms a webhook truly came from Dodo. Secret.
Return URLWhere the buyer lands after checkout.

Why we ask for each field

API key

Authorizes creating the hosted checkout, so the charge runs through your account.

Webhook signing secret

Proves an incoming webhook is genuinely from Dodo, so nobody can forge a "paid" event. It is a separate value from the API key.

Return URL

Plain setting: where the buyer lands after checkout. Not secret.

Set up

  1. Open Developer → Webhooks in Dodo

    Sign in at app.dodopayments.com. In the left sidebar, open Developer — you’ll see API Keys and Webhooks. We set the webhook up first because, like Stripe, its signing secret only exists once the endpoint is created. Use the Test / Live toggle at the bottom-left to pick the mode you’re setting up; the steps are identical in each.

    Dodo → Developer → Webhooks / API Keys
  2. Add an endpoint

    Open Webhooks → Endpoints and click Add Endpoint.

    Dodo → Webhooks → Endpoints → Add Endpoint
  3. Copy your Coin Moebius webhook URL

    In a separate tab, open your project in the Coin Moebius dashboard and copy the Project ID from under the project name. Your Dodo webhook URL is that ID dropped into the address below.

    https://api.coinmoebius.com/webhook/dodopayments/<your project id>
    Coin Moebius → your project → Project ID
  4. Paste the URL and choose your events

    Back in Dodo, paste your webhook URL into Endpoint URL. Under Subscribe to events, pick the events Coin Moebius listens for (or leave it receiving all events), then click Create.

    • One-time payments: payment.succeeded, payment.failed, payment.cancelled, refund.succeeded, dispute.opened.
    • Only if you sell subscriptions: the subscription.* events — subscription.active, subscription.renewed, subscription.failed, subscription.on_hold, subscription.plan_changed, subscription.cancelled, subscription.expired.
    Dodo → New Endpoint → Subscribe to events

    If you don’t sell subscriptions, leave the subscription events unchecked — you don’t need them. Leaving it on "receiving all events" is fine too; we ignore anything we don’t use.

  5. Copy the endpoint’s signing secret

    The new endpoint appears in your list. Open it and copy its Signing Secret (it starts with whsec_…) — you’ll paste it into Coin Moebius next.

    Dodo → Webhooks → Endpoints (created)

    Like Stripe, the signing secret only exists once the endpoint is created — that’s why the webhook came first. Add a separate endpoint (and copy its secret) in Test and in Live.

  6. Open API Keys

    Now your API key. Back under Developer, open API Keys and click Add API key.

    Dodo → Developer → API Keys → Add API key
  7. Name the key (keep write access on)

    Give the key a name like “Coin Moebius”, leave Enable write access checked, and click Create.

    Dodo → Create New API
  8. Copy the API key

    Dodo shows the key once. Copy it now — you won’t be able to see it again after closing this window.

    Dodo → new API key (shown once)
  9. Connect in the Coin Moebius dashboard

    In Coin Moebius, open Providers → Add provider → Dodo Payments, and set your Return URL. On the Live tab, paste your Live API key and the Live webhook signing secret, then click Save. Verifying first? Use the Test tab with your Dodo test-mode key and a test-mode webhook secret — the Test group is paired (both, or neither). Live and test are checked separately.

    Coin Moebius → Add provider → Dodo Payments
  10. You are connected

    Dodo Payments now shows on your Providers tab with the date it connected and the webhook URL it expects. Use Edit to rotate keys or swap live and test; Disconnect removes it.

    Coin Moebius → Providers → Dodo Payments (connected)
  11. Selling subscriptions with Dodo

    The buy button creates one-time Dodo payments. For recurring billing, set up a subscription product in Dodo and use Dodo’s own checkout (a payment link or your Dodo integration) for it — Dodo prices recurring plans on a pre-built product rather than on the fly. As long as the webhook above is subscribed to the subscription.* events, Coin Moebius records the subscription and tracks its lifecycle (created, renewed, payment failed, canceled) on your dashboard, the same way it does for Square and Authorize.Net.

After you connect

Run one test payment before going live:

  1. Create a product and set its Environment to Testing. That runs the product on your test credentials, so you can place a full order without moving money. (If you skipped the test set, a Testing product falls back to live, so add it first.)
  2. Place the buy button on a page (a local HTML file works) pointed at your project.
  3. Complete checkout in Dodo’s test mode.
  4. Open the Transactions tab. A new row appears, tagged Testing. When its status reaches succeeded, your credentials and webhook are both working end to end.

Switch the product Environment to Live when you are ready for real payments.

Troubleshooting

Start with Verify. In the dashboard, click Verify (or Verify test credentials) to check your API key.

Verify test credentials says no test credentials saved.

Add a test API key in the Test tab, save the provider, then reopen the dialog and verify.

Payment completes but the order stays pending.

Confirm the webhook URL matches and that the signing secret matches the webhook in the same environment (test secret for test, live for live).

Saving the Test group is rejected.

The Test group is paired: add both a test API key and a test webhook secret, or leave both blank.

A Dodo subscription is not showing up or updating.

Subscription events arrive only if your Dodo endpoint is subscribed to the subscription.* events, in the same environment (test or live) as the subscription. Re-check the endpoint’s event list, then resend a recent event from Dodo to confirm.

Confirm it end to end.

Dodo Dashboard → Developer → Webhooks → Send Example (or the Dodo CLI) pointed at your webhook URL, then watch the order update.

Good to know

Subscriptions. The hosted buy button is one-time. For recurring billing, set up a subscription product in Dodo and subscribe your webhook to the subscription.* events; Coin Moebius normalizes the lifecycle the same way it does for Square and Authorize.Net.

Rotating secrets. Roll the API key or webhook secret anytime, then paste the new value. Secret fields stay blank on edit.

Questions? Join our Discord

Ready to connect a provider?

Pick the providers you already use. Buyers pay through your accounts, and you keep one buy button.