vantezzen/pay
Getting started

Go live checklist

The practical checks before real users buy credits.

Use this checklist before switching from test payments to real payments.

First complete your test payment and confirm checkout, fulfillment, and webhook processing work together.

Dashboard

  • Your project has the correct identity mode.
  • Products use clear credit units users understand.
  • Prices grant the amount of credits you intend.
  • Free grants are not larger than you are comfortable giving away.
  • Anonymous projects have a wallet creation limit and optional code expiry.

Provider

  • Stripe is connected with production credentials.
  • The webhook endpoint shown in vantezzen/pay is registered at the provider.
  • The webhook signing secret is saved in vantezzen/pay.
  • A test checkout creates an order and credits the wallet.
  • Refunds and subscription renewal events show up in the webhook log.

Using Polar instead? The same checklist applies, but use the Polar events from Connect a provider.

App

  • NEXT_PUBLIC_PAY_URL points to the production vantezzen/pay URL.
  • NEXT_PUBLIC_PAY_KEY is a publishable key for the right project.
  • Secret keys are used only on your server.
  • Each paid action calls deduct() when work starts.
  • Retried paid actions use stable idempotency keys.
  • The purchase button is visible when users run out of credits.
  • A recovery-code input is available somewhere users can find it.

Self-hosted vantezzen/pay

  • PAY_ALLOW_SIGNUPS=false after your admin account exists.
  • NEXT_PUBLIC_APP_URL and BETTER_AUTH_URL match the public domain.
  • RESEND_API_KEY and RESEND_FROM are configured and can deliver email.
  • If enabled, GitHub OAuth callback is set to /api/auth/callback/github on your production domain.
  • Database migrations have run against production Postgres.
  • The registry URL in install commands uses your production domain.

After this, your users can buy credits and spend them in your app.