One API. Every major payment provider.
Stripe
Global cards & bank transfers
Paddle
VAT-included global pricing
LemonSqueezy
Indie-friendly SaaS billing
Moyasar
MENA payment processing
The Billing Plumbing Problem
Every SaaS team rebuilds the same payment infrastructure. Here's what they suffer through — and what Payments Service eliminates.
✗ Without Payments Service
- ✗Writing separate webhook handlers for every payment provider
- ✗Syncing subscription state manually to feature flags and entitlements
- ✗Debugging double-charges from non-idempotent webhook retries
- ✗Re-implementing proration and trial logic per project
- ✗Building dunning flows from scratch every time
✓ With Payments Service
- One unified CloudEvent format regardless of payment provider
- Automatic NATS event → Entitlements sync on every plan change
- Idempotency keys on every event — retries are always safe
- Invoice lifecycle APIs shared across all providers
- Pre-built dunning hooks that feed into your Notifications service
What's Included
Production-grade billing infrastructure — ready to deploy the day it ships.
Normalized Webhook Events
Stop writing separate webhook handlers for Stripe, Paddle, and LemonSqueezy. The Payments service normalizes all provider events into a single, unified CloudEvent format. One handler. Every provider.
Idempotent Charge Events
Every charge, refund, and subscription event is recorded with a unique idempotency key. Retry webhooks as many times as you want — your database stays consistent. No double-charges, ever.
Invoice Lifecycle Management
Create, finalize, void, and credit invoices across providers through a single gRPC API. Handle proration, trials, and dunning logic without writing a line of provider-specific code.
Automatic Entitlements Sync
When a subscription upgrades, downgrades, or cancels, the Payments service automatically publishes a NATS event consumed by the Entitlements service — instantly gating or unlocking features. No manual wiring.
Multi-Provider Architecture
Support Stripe for global cards, Paddle for VAT-included pricing, LemonSqueezy for indie-friendly sales, and Moyasar for MENA markets — all behind a single API. Swap providers without touching your application code.
Payment Event Notifications
Failed payments, trial endings, and subscription renewals automatically trigger your Notifications service. Users get the right alert at the right time — dunning emails, invoice receipts, and renewal reminders included.
Designed to Work With the Ecosystem
Payments isn't standalone — it publishes events that the rest of your Launch Rail services consume automatically.