Kick-start your billing integration.

Start from working FastAPI, Stripe, Supabase, and Next.js source code you own and adapt.

Skip three months of Stripe integration headaches.

No more navigating scattered docs to glue checkout, webhooks, upgrades, and access together.

Occasional product updates. No spam.
Explore what ships
Reference architectureSource included
01

Storefront

Next.js

  • Catalog
  • Checkout
  • Account
02

API

FastAPI

  • Pricing
  • Upgrades
  • Access
03

Providers

Stripe + Supabase

  • Payments
  • Identity
  • Queue
signed webhooksPGMQ queueretryable workersubscription projection

For technical founders and small SaaS teams

Stripe runs the billing. EasyRebill makes it work inside your product.

Stripe gives you excellent billing infrastructure. EasyRebill is the application layer around it: the source code and decisions that connect billing to customers, product access, workers, and tests.

If a Payment Link is enough, use Stripe directly. If billing must behave like part of your product, start here.

The billing platform

Stripe provides the primitives.

  • Checkout and the Payment Element
  • Subscriptions, invoices, and payments
  • Billing lifecycle events and customer portal

The reference implementation

EasyRebill connects the product.

  • Pricing, checkout, upgrades, and product access
  • Verified webhooks, queue worker, and local projection
  • FastAPI modules, dependency injection, and TestKit

Why Payment Element

Control the checkout journey, not just the payment form.

EasyRebill ships an embedded Stripe Payment Element flow. You own every step around Stripe's secure fields while the primary checkout stays inside your product.

Control the complete journey

Choose the step order, guest or signed-in path, fields, validation, and post-payment handoff.

Add upsells and offers

Place add-ons, annual-plan switches, upgrade paths, trials, and targeted promotions before payment.

Join payment to the account

Combine sign-up, terms acceptance, customer data, and product access in one cohesive workflow.

Measure and improve

Own analytics, attribution, A/B tests, abandonment signals, and conversion experiments around checkout.

A complete reference, end to end.

The essential subscription path is already connected, documented, and covered by focused tests.

Checkout

Embedded Stripe subscription checkout for guests and signed-in customers.

Pricing

YAML-defined products, recurring listings, introductory pricing, and renewal pricing.

Upgrades

Upgrade previews, unused-time credits, immediate prorated upgrades, and idempotency.

Access

Product grants, inherited access across upgrade paths, and per-customer resolution.

Reliability

Signed webhooks, durable queue processing, retries, and a local subscription projection.

Frontend

Generated TypeScript client and a working Next.js + Stripe Elements storefront.

Bounded Software Architecture

Built to keep complexity and coding agents at bay.

EasyRebill is application code, not another billing abstraction. Its domains, dependencies, and provider boundaries stay visible. Explicit ownership keeps coding agents inside the relevant neighborhood instead of roaming across unrelated modules.

A smaller search space for developers and coding agents.

Bounded Software Architecture is a heuristic: keep code that changes together physically close, and make dependencies predictable. From one model or module, people and agents can find the relevant dependencies, importers, and implementations without reconstructing the whole application graph.

Not a framework. Not a universal layering system.

Recursive ownership treeImports stay explicit
application
top-level boundary
anchor
sub-boundary
coordinator
public surfaceprivate partsconnections
01

Start at one module

Name the behavior and its owner.

02

Follow owners and imports

Expand through explicit public surfaces.

03

Stop at the boundary

Avoid unrelated branches and hidden coupling.

Your go-to FastAPI reference as the application grows.

Start with a focused API without painting yourself into a corner. FastAPI routes are one entry point into the same typed application behavior used by background workers and CLI commands. As the product grows, the composition root, explicit boundaries, and TestKit keep new workflows testable and easy to reason about.

FastAPI routesBackground workerCLI commandsTestKit
application modulesmodule builders + typed *Needs
injected collaboratorsStripe + Supabase, or typed fakes in TestKit
AGENTS.md included

The repository tells coding agents how to work in it.

A versioned operating guide maps domain ownership, allowed import directions, dependency-injection seams, testing conventions, and the exact checks to run before handing work back.

01

Architecture map

02

Boundary rules

03

TestKit seams

04

Verification commands