Commission owed (expected vs actual)
“At risk” (see Reports) tells you what changed month over month. Owed tells you what you should have been paid but weren’t: your contracted rate × premium (or a flat amount per member) minus what the carrier actually paid. The positive shortfall, summed across policies, is the recoverable figure on your dashboard.
1. Set your contracted rates
Owed is only as good as the rates you give us. Set one per carrier (optionally per plan):
curl -X POST https://api.commissionsight.com/v1/expected-rates \ -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \ -d '{ "carrierId": "car_123", "rateType": "percent_of_premium", "rateValue": 0.20 }'| Field | Notes |
|---|---|
carrierId | The carrier this rate applies to. |
rateType | percent_of_premium (per policy) or flat_per_member (per covered life). |
rateValue | A fraction for percent_of_premium (0.20 = 20%); dollars for flat_per_member. |
flat_per_memberis charged once per distinct member — the covered life, not the policy. A member with several policies is one flat expectation (compared to their combined commission), while one policy covering several members counts as one flat expectation each.percent_of_premiumis evaluated per policy (each policy’s premium drives its own expected amount). |planCode| Optional. A per-plan override; omit (ornull) for the carrier-wide default. |
Re-posting the same carrier+plan updates that rate (200); a new scope creates one (201).
List with GET /v1/expected-rates (optionally ?carrierId=), remove with DELETE /v1/expected-rates/{id}.
Saving or deleting a rate automatically re-scores every already-processed period for that carrier,
so the owed figures on the dashboard and in /reports/rollup catch up without a manual re-run. The
response includes rescoredPeriods (how many periods were queued). Re-scoring is asynchronous, so the
stored rollup updates a moment later; the per-member results grid computes owed at read time and
reflects the new rate immediately.
2. Read what you’re owed
After the next ingest or re-score, owed appears in the rollup and on the dashboard:
curl "https://api.commissionsight.com/v1/reports/rollup?period=2026-04" -H "Authorization: Bearer $TOKEN"{ "totals": { "commissionOwed": 4210.50, // Σ max(0, expected − actual), recoverable "owedEvaluated": 312, // policies we could evaluate (had a rate + inputs) "owedTotal": 410 // policies considered — coverage denominator }}Drill into who’s owed
The period total breaks down to the member. Every results row carries a
per-member commissionOwed (expected − actual for that member’s policies), which sums back to the
rollup’s commissionOwed:
curl "https://api.commissionsight.com/v1/jobs/$JOB_ID/results?limit=200" -H "Authorization: Bearer $TOKEN"# each row: { memberRefId, commissionAmount, commissionOwed, … }Add owedOnly=true to list only the underpaid members:
curl "https://api.commissionsight.com/v1/jobs/$JOB_ID/results?owedOnly=true" -H "Authorization: Bearer $TOKEN"In the app, the dashboard’s “Commission owed” card → Review members opens this grid filtered to
underpaid members (there’s an “Underpaid only” toggle too), so you see exactly who was underpaid and by
how much. (commissionOwed is 0 for members with no applicable rate — consistent with the coverage
figure below.)
Coverage — read this
owedTotal vs owedEvaluated is not decoration. A policy is evaluated only when it has an
applicable rate and the inputs exist — a percent_of_premium rate needs a premium on the
statement (not every carrier reports one). Policies without a configured rate, or a percentage basis
with no premium, are counted in owedTotal but never silently treated as $0 owed. Always read the
owed dollars alongside the coverage so you know what share of the book the figure reflects.
Medicare: above-the-cap compliance flag
CMS caps Medicare broker compensation at a maximum (Fair Market Value) per plan year and region. Beyond surfacing underpayments (owed), CommissionSight flags any Medicare commission paid above that maximum — a compliance/recoupment exposure, or (more often) a mis-mapped amount on the statement. These surface as a job warning so you can verify them before relying on the figure. It turns the review from “find my shortfall” into “audit my book for shortfalls and compliance risk.”
Graded schedules (tiered %, PMPM bands, first-year vs renewal, bonuses)
A single carrier rate covers the simple case. For health books with graded compensation, a major-medical rate schedule lets one carrier carry ordered tiers:
- Premium bands (PEPM tiers) — a different rate by premium size, e.g. 5% up to $500 PEPM, 3% above; or a PMPM (flat per member per month) that steps with the band.
- First-year vs renewal — split the rate by policy year (first-year vs renewal business).
- Production-bonus override — a bonus layered on top (a % of premium/commission, or a flat / per-member-per-month amount), so a bonus you were owed but not paid shows up as owed.
The most specific matching tier wins (plan > first-year/renewal > premium band), and owed is floored at the member grain. This is what makes the major-medical line fit real health-agency comp, not just a flat percentage.
What’s deferred to a later release
- Effective-dating. A rate change re-scores all of a carrier’s past periods at the new rate (there’s no per-period rate history yet), so the rate you set is treated as always having applied. Time-bounded rates (a rate that changed mid-year) land in a later release.
At risk vs owed — when to use which
- At risk needs no setup — it’s month-over-month variance (dropped + reduced), flagged for review.
- Owed needs your contracted rates — it’s expected vs actual, the defensible recoverable number you take to a carrier. Start with at-risk on day one; add rates to unlock owed.
For the cumulative recoverable figure across many months — owed summed over a date range with
per-month and per-carrier breakdowns, the artifact for a carrier audit — see
/reports/cumulative (the app’s Audit
page is built on it).