Skip to main content
If you’re familiar with Stripe, you’ll find moneydevkit’s approach refreshingly simple. The biggest difference: no webhook handlers to write. You set up the /api/mdk route once during initial setup, and that’s it—no webhook event handling code required.

Key Differences

No Webhook Handlers to Write

With Stripe, your backend typically relies on webhooks to know when a payment succeeds:
With moneydevkit, payment status is available directly on your success page:

What About the /api/mdk Route?

The initial setup includes an /api/mdk route:
This is a one-time setup—you export the handler and you’re done. Unlike Stripe webhooks, you don’t write any event handling code. The route is internal infrastructure that allows your serverless Lightning node to receive payments. You never need to parse events, verify signatures, or handle retries.
The /api/mdk route may handle additional functionality in the future, but payment confirmation will always be available directly via useCheckoutSuccess.

Linking Checkouts to Your Users

moneydevkit has first-class support for linking checkouts to your authenticated users via customer.externalId.

Using externalId for Authenticated Users

When a user is logged into your app, pass their ID via customer.externalId:
When externalId is provided:
  • The checkout is linked to a customer record in moneydevkit
  • If the customer already exists (matched by externalId), their stored data is used
  • Returning customers won’t be asked for information you already have
  • All checkouts and orders are linked to the same customer record

Using metadata for Custom Data

For other custom data (like a registration ID, order reference, or plan type), use the metadata field:
Retrieve it on your success page:
See the Customers documentation for more details.

Quick Comparison: Checkout Flow

1

Stripe: Create PaymentIntent

2

moneydevkit: Create Checkout

1

Stripe: Write Webhook Handler

2

moneydevkit: Check on Success Page

Summary

  • No webhook handlers to write - One-time /api/mdk route setup, then you’re done
  • Payment status available directly - Use useCheckoutSuccess instead of waiting for webhook events
  • externalId is first-class - Link checkouts to your authenticated users, with automatic data backfill for returning customers
  • Use metadata for custom checkout data (registration IDs, order references, etc.)