vantezzen/pay
Common workflows

Provider capability matrix

What vantezzen/pay handles directly and what Stripe or Polar handle.

vantezzen/pay is the app-facing payment wrapper. Stripe and Polar still own the payment-provider layer: checkout, payment methods, invoices, taxes, refunds, and customer portals. This matrix shows what the current integration supports.

CapabilityStripePolarNotes
Provider-hosted checkoutYesYesvantezzen/pay creates the provider checkout session and redirects the buyer.
Credit packsYesYesFulfilled by vantezzen/pay after the paid webhook.
SubscriptionsYesYesRenewals refresh/add included credits and keep feature access active.
One-time feature unlocksYesYesFeatures are stored in vantezzen/pay, not the provider catalog.
Billing portalYesYesOpens Stripe Billing Portal or Polar customer portal after a paid order creates a provider customer.
Customer-entered promo codesYesYesUse allowPromotionCodes: true.
App-selected discount codeYesPartialStripe applies an active promotion code. Polar pre-fills discount_code on the checkout URL.
Checkout email prefillYesYesUse customerEmail on checkout.
Provider email captureYesYesvantezzen/pay stores provider-returned customer email on the order when webhooks include it.
Email wallet recoveryYesYesPaid code wallets can be emailed back to the provider receipt email when RESEND_* is configured.
Full refundsYesYesRefund webhooks mark the order refunded and claw back purchase credits.
Partial refundsProvider onlyProvider onlyvantezzen/pay currently treats access as order-level, so partial access changes need manual support handling.
Taxes and tax invoicesProviderProviderConfigure tax/VAT rules in Stripe or Polar. vantezzen/pay does not become the merchant of record.
Payment methodsProviderProviderCards, wallets, and local payment methods are provider configuration.
Dashboard support lookupYesYesSearch wallets by code, email, order id, checkout id, provider customer id, or external user id.
Local testingStripe CLIPublic tunnelStripe can forward webhooks locally. Polar needs a public URL it can reach.

Discount behavior

allowPromotionCodes means the buyer can type a code during checkout.

discountCode is for app-owned offer buttons such as "Buy credits for 10% off":

  • Stripe: vantezzen/pay looks up an active Stripe promotion code by its human code and applies the promotion code id to the Checkout Session.
  • Polar: vantezzen/pay enables discount-code entry and appends discount_code=... to the checkout URL, which pre-fills the provider checkout code field.

Keep your actual promotion/discount definitions in Stripe or Polar. vantezzen/pay passes the code through but does not create discounts for you.

Where to configure provider-owned behavior

BehaviorConfigure in
Tax collection and invoicesStripe or Polar
Accepted payment methodsStripe or Polar
Refund rules and refund emailsStripe or Polar
Promotion/discount definitionsStripe or Polar
Customer portal brandingStripe or Polar
Products, prices, credits, features, wallet rulesvantezzen/pay