Skip to content

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):

Terminal window
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 }'
FieldNotes
carrierIdThe carrier this rate applies to.
rateTypepercent_of_premium (per policy) or flat_per_member (per covered life).
rateValueA fraction for percent_of_premium (0.20 = 20%); dollars for flat_per_member.

flat_per_member is 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_premium is evaluated per policy (each policy’s premium drives its own expected amount). | planCode | Optional. A per-plan override; omit (or null) 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:

Terminal window
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:

Terminal window
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:

Terminal window
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).