Work, 01 of 06

Paylit

Enter the comp plan once. Paylit prices every month against it and shows the year it adds up to.

Product. Live at paylit.io, with reps using it. An independent commission ledger: every payout, projection, and audit is computed from the plan rather than read off a statement.

Earnings
Updated today, 9:12
Annual projection$121,800
Earnings to date$81,200
Commission$33,200
Average attainment109%
Monthly earningsBase, commission, and trend
Against OTE $115,000 Best month August, 175% Flagged for review 1

Sales compensation is hard to track when the rules live in a spreadsheet, or nowhere.

Rates step up at quota and again above it, some components are capped, SPIFFs sit outside the rate table, and a month is paid on the following statement. The arithmetic is reconstructable, but almost nobody reconstructs it.

88%of business spreadsheets contain at least one error.
66%of companies over- or underpaid sales commissions last year.
$200Bspent on US sales compensation every year.
$400 per unit0 to 100% 1.5×$600100 to 125% $800125 to 200% 1.5×$600200% and above The month above, 150% Every unit priced in its own band
01Tiered accelerators

The rate changes as attainment crosses each threshold.

02Capped attainment

A ceiling applies to some components of the plan, not all.

03SPIFFs

One-off amounts sitting outside the rate table entirely.

04Payment lag

A month is paid on the following statement.

The rep sees the paycheck. The company owns the calculation. There is no independent record in between.
The black box

What am I earning on the year?

?

One calculation, called by everything.

The projection, the earnings screen, and the audit all call the same function. There is one place the plan's rules live, so a month never disagrees with itself.

lib/comp-plan.ts
1attainment = units / quotaFor(month)
2bands = splitAcrossTiers(units, plan)
3commission = sum(b.units × b.rate)
4commission = applyCap(commission, plan)
5paidOn = statementAfter(month, plan.lag)
6total = commission + base
April, resolved
Attainment150%
Band split8 / 2 / 2
Commission$6,000
CapNot reached
Paid onMay 31
April total$12,000

Deals arrive from the CRM.

Paylit reads closed-won deals from HubSpot and Salesforce as they land. Each one is credited to its month, the month is re-priced from the plan, and the year-end projection moves with it. Nobody re-enters a month.

Closed-won, as it lands
Meridian Health$48,000HubSpotclosed won, June 24
Halcyon Freight$22,500Salesforceclosed won, June 26
Northwind Systems$31,000HubSpotclosed won, June 29
June, priced from the planquota 8
Units8
Attainment100%
Commission$3,200

Then check what actually reached the account.

Upload a paystub and Paylit compares it line by line to what the plan says the month was worth. A gap is flagged with the amount and the reason, saved to the audit log, and can be reopened later.

JunePayrollPaylitResult
Base salary$6,000$6,000Matches
8 units at 1×$3,200$3,200Matches
2 units at 1.5×$1,200$1,200Matches
3 units at 2×$2,000$2,400Gap
Month total$12,400$12,800−$400

Two of the three units above 125% were paid at the 1.5× rate. Flagged for review and saved to the audit log.

See where year-end projections are heading.

Recorded months are fact. Everything after August is the plan applied to the pipeline, drawn as a range rather than a single number, and it moves every time a deal closes.

On-target earnings $115,000 $81,200 Recorded through August $121,800 likely Range $114k to $132k JanAprJulOctDec

How it's built

The planEntered once: tiers, caps, SPIFFs, and payment lag. Everything else is computed from it.
EngineOne TypeScript module prices a month. The projection, the earnings screen, and the audit call it.
DealsHubSpot and Salesforce, closed-won, read as they land.
ProjectionRecorded months plus the current trend, with a best, likely, and worst path to December.
AuditA paystub compared line by line to the computed month, with each variance named.