Tiered subscription billing per client site
Monthly plans priced per client site in blocks of 25, in the visitor's currency, with verified payments and a ledger that reconciles every day.

Industry: SaaS and subscription services · Client: our own product · Proof: live in production
The situation
Pricing a service by the number of sites it covers sounds simple until it meets real billing: volume discounts, two currencies, GST for Australian buyers, upgrades mid-month and payment events that can arrive twice or out of order. A mistake here costs money or trust, usually both.
We needed pricing that rewards studios for bringing more client sites, reads as a fair local price in Australia and overseas and never charges anyone twice or unlocks a plan nobody paid for.
What we built
We built subscription billing that prices a plan per client site, bought in blocks of 25 on graduated tiers. Visitors in Australia see and pay AUD with GST added; everyone else sees and pays USD. Every payment event is verified and recorded exactly once.
The price table lives in code and is the single source: the payment provider's prices are created from it and checked against it, and every price on the website is drawn from it, so the figure a visitor reads is the figure they pay. Payment events are accepted only with a valid signature and recorded in an append-only ledger, which the owner reconciles each day. Plans grant features rather than being checked by name, so a higher plan always includes everything below it and upgrading never loses anything.
The pieces we built:
- Graduated tiered prices in blocks of 25 sites, checked against the code's own price table
- Two-currency pricing by visitor location, with GST worked out, never typed
- Prices in page copy written as tokens, so a figure can never drift between pages
- Checkout behind a provider seam, with guest checkout that never reveals who is already a customer
- Signed webhooks, deduplicated events and an append-only ledger reconciled daily
- Upgrades in place, promotion codes and price-change notices that only go out after approval
How it works
Choose a plan
The buyer picks a plan and the number of site blocks.
See the right price
Location sets the currency and GST.
Pay securely
Checkout runs on the payment provider with 3D Secure.
Verify and unlock
The payment is verified and recorded once, then the plan switches on.
The result
Each buyer sees one clear price in their own currency, the price per site falls as a studio adds client sites and every payment event lands in a ledger built for daily reconciliation. Live checkout opened on 10 October 2026.
Because pricing, checkout and fulfilment are separate pieces joined by clear rules, the same setup can price any service by seats, sites or units and move to another payment provider without rewriting the rest.
Built with
Python, Django, Next.js and PostgreSQL, with hosted checkout and subscription billing behind a CDN.
Want this for your clients?
Start with a free check of one client site.