Core concepts
Deals
The thing you track. A deal has a state (amount, stage, close date, owner, plus any custom fields you send) and a stream of events as it moves forward.
Domain events
Every change to a deal becomes an append-only event. Deleting historical data or “patching” a deal is never how you fix things — you emit a new event and let the engine re-compute.
Plans
A plan is a set of chip rules (“base rate on closed-won”, “SPIF when stage = negotiation”, “attribution share to non-owners that engaged”) that the engine evaluates on every deal event.
Earnings
The output: one row per rule-fired commission, with the exact chip, rule version, triggering domain event, and computation trace. Reads return the full trace on request.
The API in a sentence
You generate a scoped API key in the admin UI, then use it as a Bearer token to:- Push deal events (
POST /v1/deals/events) — OpenQuota recomputes earnings automatically. - Read deals, earnings, and plans — everything is org-scoped to your key.
What you won’t find
- No PATCH/PUT on earnings or plans — plan edits create new plan versions, and earnings are immutable once the period locks.
- No hand-entered adjustments via the API — those are admin-only in the UI for auditability.
- No raw SQL surface — the API is an intentionally-narrow contract, not a database pipe.
Next
Quickstart
Make your first authenticated call in under five minutes.
API reference
Every endpoint, generated from the running API.