quotastack Docs

The 60-second tour

QuotaStack in 17 mental models

No API, no code — just the core ideas, one at a time. Each model links to the full concept when you're ready to go deeper.

01 1 / 17

Credits

Think of credits like layered deposits in a bank account. Each deposit (credit block) has its own terms — when it expires, whether it burns first, where it came from. The balance is just the sum of what's left in each deposit.

SOURCE Plan / Topup / Promo CREATES Credit Block UPDATES Account Balance CONSUMED BY Usage Events EVERY STEP RECORDS TO Append-Only Ledger
Read the full concept
02 2 / 17

Entitlement Management

An entitlement check is the bouncer at the door. Before your app starts an expensive operation, it asks QuotaStack "can this customer afford this?" — answer comes back in milliseconds, cached and ready.

Check Request Has feature? Yes No Balance > 0? Yes No allowed: true allowed: false allowed: false
Read the full concept
03 3 / 17

Metering

Metering is the bridge between "something happened" and "credits got spent". You define the price list (metering rules), report what happened (usage events), and QuotaStack does the math.

INGESTED Usage Event MATCHED TO Metric Rule APPLIES Cost Calculation flat per-unit tiered graduated RESULTS IN Credit Debit
Read the full concept
04 4 / 17

Reservations

Think of reservations like putting items in a hotel safe. The credits are held, not spent. When you're done: commit (you really used them), release (you didn't), or let the TTL auto-release so nothing leaks.

Reserve credits held Held success cancel timeout CREDITS CONSUMED Commit CREDITS RETURNED Release AUTO-RELEASED TTL Expiry
Read the full concept
05 5 / 17

Topups and Wallets

Wallets and credit packs are stacked fuel tanks with different rules. The system drains the tank that expires soonest first, saving the customer's paid wallet for last. You can confirm payment and call the manual grant API, or let a payment connector apply a mapped package after verified provider success.

BURNS TOP → BOTTOM Trial credits P0 · expires Jan 15 Promo pack P0 · expires Mar 1 Plan grant P0 · expires Apr 1 Wallet balance P0 · never expires
Read the full concept
06 6 / 17

Subscriptions

Subscriptions are state machines for recurring billing. QuotaStack tracks the cycle and credits. With manual prepaid billing you collect payment and call renew; with a connector the provider collects and QuotaStack advances only after its verified event. Postpaid stays tenant-invoiced.

STEP 1 Create STEP 2 Grant credits STEP 3 Renew STEP 4 Grant + rollover STEP 5 Cancel / expire
Read the full concept
07 7 / 17

Payment Connectors

A payment connector is a verified bridge between a cashier and your billing ledger. The selected provider owns money movement and recurring collection; QuotaStack owns product mapping, subscription state, credits, metering, and entitlements.

Read the full concept
08 8 / 17

Idempotency

Every POST/PATCH request includes a receipt number (the Idempotency-Key). Retry with the same key and QuotaStack returns the cached response, not a double-charge. This is how your system survives network failures and webhook re-deliveries.

WITHOUT POST /grant → 5,000 mc (timeout, retry...) POST /grant → 5,000 mc = 10,000 mc ✗ WITH IDEMPOTENCY-KEY POST /grant → 5,000 mc (timeout, retry...) POST /grant → cached = 5,000 mc ✓
Read the full concept
09 9 / 17

Webhooks

Webhooks are QuotaStack's postal service — they tell your app "something happened." Every delivery is signed (you know it's real), retried 7 times if you're offline, and ordered per-customer.

QuotaStack Your Server POST event verify HMAC timeout ✗ down retry (backoff) 200 OK ✓
Read the full concept
10 10 / 17

Customer Identification

Customers have two names: the one you already use (external_customer_id) and the one QuotaStack generates (customer_id UUID). Use either. Most apps only ever need the one they already have.

Read the full concept
11 11 / 17

API Conventions

Cross-cutting rules every endpoint inherits. API key prefix picks the environment. Pagination, errors, and rate limits all follow a single standard shape — learn it once, apply it everywhere.

Read the full concept
12 12 / 17

Overage

Overage is a tab at the bar. When the customer's prepaid card runs dry, your policy decides what happens: refuse the round (block), or pour it and write the difference on the tab (allow). The tab is a separate record — the card never goes negative.

Read the full concept
13 13 / 17

Plans & Variants

A plan is the name on the box; a variant is one way to buy what is inside. Customers never subscribe to a plan — they subscribe to a variant, and every commercial term they get (cycle, trial, credits, entitlements) hangs off that variant.

Read the full concept
14 14 / 17

Plan-Variant Entitlements

Think of plan-variant entitlements as the feature matrix row for a pricing tier. Each cell says what that tier gets for a specific metric — on/off, a cap, a config blob, or credit-metered access.

Read the full concept
15 15 / 17

Subscription Overrides

An override is a sticky note on one customer's contract. The plan still says 10 seats; the note says 50 for this account only. Everything else on the contract is unchanged, and when the note comes off, the plan's number applies again.

Read the full concept
16 16 / 17

Environments & the Shared Catalog

Think of it as two warehouses that share one product catalogue. Sandbox and live each hold their own stock, customers, and paperwork — but there is a single price list on the wall, and both warehouses read it. Reprice an item while playing in sandbox and the live warehouse charges the new price.

Read the full concept
17 17 / 17

Audit Log

The audit log is the ship's logbook. Every change is written down as it happens, with who made it and what the entry looked like before and after. Pages are never torn out — the log is append-only.

Read the full concept

That's the whole model. Ready to build?

Start the quickstart →