Commission Statement Generator
a small business paying a sales team on one commission plan who’s been doing it in spreadsheets and keeps getting bitten by refunded deals.
Point it at one sales CSV and it computes every rep’s commission under a flat or tiered plan, reverses the commission on any returned deal (correctly, from the top bracket down on a tiered plan), and writes a statement per rep plus a payout summary.
$39 a month for the team. No per-rep charge and no contract. Cancel any day and the statements you already ran stay on your disk.
The refunded deal you forgot to claw back
You pay your reps a cut of what they close. Every month you build a spreadsheet per rep, tally their won deals, and figure the commission. Then a deal from two months ago gets refunded, and you’re supposed to reverse the commission you already paid on it. On a tiered plan, that reversal has to unwind from the top bracket, not the bottom.
Nobody does that by hand correctly every time. So reps get overpaid on deals that fell through, and catching it later is an awkward conversation and a corrected check.
One sales export in, statements out
- Keep one CSV: rep, deal, amount, status. Status is won or returned.
- It groups the rows by rep and applies your plan. Flat pays a straight percentage of won sales. Tiered runs marginal brackets, where each rate hits only the slice of sales inside its band.
- A returned deal reverses the commission it created, recomputed on won-minus-returned sales, and on a tiered plan the reversal unwinds from the top of the stack.
What it writes out
COMMISSION_STATEMENTS.md: one section per rep with won and returned counts, gross, clawback, net, and the underlying deal list, so a rep can see exactly how the number was built.PAYOUT_SUMMARY.md: the all-reps overview with grand totals, the sheet you hand to whoever cuts the checks.commissions.csvandcommissions.jsonfor import or audit.- A
validatecommand that checks your plan config without touching any files, so a broken tier definition surfaces before a run rather than during one.
Who it’s for, and who it isn’t
Built for a small business paying a sales team on a single commission plan, flat or tiered, that’s been living in spreadsheets and getting caught out by clawbacks. A few reps to a couple dozen on the same structure.
Not for you if every rep is on a different bespoke plan with approval workflows and a portal each one logs into. This applies one plan across the team. Per-rep plan overrides are on the roadmap, not in this version.
What it replaces, and what those do better
A spreadsheet per rep, or a full commission platform like Spiff or CaptivateIQ. Those platforms are better at the complicated end: custom plans per rep, approval chains, dispute handling, and dashboards each rep signs into.
What they charge is per-rep enterprise pricing for machinery a small team doesn’t need. This does the core correctly, the commission math and the clawback, for a flat monthly price on your machine. When your plan is one plan, the platform is mostly overhead.
Your data, and where it stays
Your reps, their deals, and what each one earns read from disk and write back to disk at 0600 permissions, with no network call. Commission figures are among the most sensitive numbers a business keeps, tied to real people’s pay. They compute on your machine and stay there.
$39 a month, and your first payout
Set the sales CSV, the output folder, the plan type, and either the flat rate or the tiers in a .env, then run. First set of statements in a couple of minutes. Run validate first if you’ve just edited the tiers, so a typo never reaches a live payout.
Flat monthly, cancel any day, and the statements stay on your disk.
Security and privacy
Handles client sales/commission data (rep names, deal names, dollar amounts). Security is designed in.
Principles
– Local-first. SALES_CSV is read from disk and never transmitted anywhere; nothing in this tool touches the network. Nothing is uploaded, no telemetry, no cloud dependency.
– Non-destructive. The source CSV is only read, never modified or deleted.
– Least privilege. Reads SALES_CSV, writes only under OUTPUT_FOLDER.
Protections implemented (v0.1.0)
– Path-traversal defense — every output filename is sanitized (safeSegment) and every write is checked with assertWithinRoot(), so statements can’t be written outside OUTPUT_FOLDER.
– Fail-fast config validation — clear errors for missing/invalid SALES_CSV/OUTPUT_FOLDER/PLAN_TYPE/FLAT_RATE_PCT/TIERS before any file is touched.
– Restrictive permissions — the generated statements (COMMISSION_STATEMENTS.md, PAYOUT_SUMMARY.md, commissions.csv, commissions.json) are written 0600.
– Defensive parsing — the CSV parser and currency parser never throw on malformed input (missing fields default to empty string, unparseable amounts default to 0); rows with a missing rep or an unrecognized status are skipped and counted rather than crashing the run.
– Secrets discipline — .env and generated Commissions/ output are git-ignored; no secrets or client data in the repo.
Distribution / AV trust
Known limitations / roadmap
– Every rep in SALES_CSV is assumed to be on the same plan (PLAN_TYPE/FLAT_RATE_PCT/TIERS) — per-rep plan overrides are not yet supported.
– status must be exactly won or returned (case-insensitive); any other value causes the row to be skipped rather than guessed at. Check the run’s “skipped rows” count if payouts look short.
– Tiered clawback assumes returns unwind from the top of the cumulative bracket stack (net commission is recomputed on won-minus-returned sales) — this is the standard convention but may differ from a plan that claws back a flat percentage of the returned deal instead.
– No multi-currency support; amount is treated as a single currency’s decimal value.
Reporting
Report suspected vulnerabilities privately to the maintainer before public disclosure.
Frequently asked questions about Commission Statement Generator
What is the Commission Statement Generator and how does it work?
The commission statement generator is a tool that turns a sales export into finished commission statements without a spreadsheet. You import your sales data, define the commission plan your business actually uses, and the tool computes each rep’s pay, then produces a clean per-rep statement plus a payout summary for the whole team. What used to be an afternoon of formulas and cross-checking becomes a short, repeatable job you run each period.
It handles the plans small sales teams really run. You can set flat rates, tiered rates that step up as a rep hits higher sales, or per-product rates that pay differently across your catalog. It also handles splits, where two people share credit for a deal, and clawbacks, where a commission is reversed if a sale is refunded or canceled. Those two cases are where hand calculations most often go wrong, and they are built in rather than bolted on.
The workflow is three steps. Import your sales and define the plan, run the calculation, and collect the statements and the payout total. Because the commission statement generator reads from an export you already produce, you are not re-keying numbers, which removes a whole category of typos. Each rep gets a statement that shows how their number was built, which cuts down on the back-and-forth that starts every time a rep disagrees with a total.
Commissions are wages, and wages come with recordkeeping duties. The Department of Labor explains in its fact sheet on recordkeeping under the FLSA that employers must preserve payroll records for at least three years and keep the records used to compute wages for two years. A commission statement is precisely the kind of wage-computation record that rule has in mind. By generating and saving a clear statement every period, you build that trail as a normal part of running payroll rather than scrambling to reconstruct it later.
The statements are also just good business hygiene. When a rep can see the sales, the rate applied, any split, and any clawback laid out plainly, trust goes up and disputes go down. A vague number invites an argument. A statement that shows its work usually ends one before it starts. That clarity is worth as much as the time the tool saves.
The commission statement generator is a subscription built for small teams that recalculate commissions every period, so it fits a recurring job rather than a one-off. It replaces the fragile spreadsheet that breaks whenever someone changes a formula, and it sits below heavy payroll add-ons that assume a larger operation. You can see the full list of supported plan types and outputs on the product page. For any owner who dreads commission day, the point is simple. Feed it the sales, define the plan once, and get accurate statements and a payout total you can hand to whoever cuts the checks, with a record of how every figure was reached. Once the plan is set, each period becomes a short repeatable run rather than a fresh round of formula wrangling, which is exactly what a busy sales team needs when commission day comes around again.
How does the commission statement generator help with wage recordkeeping requirements?
Commissions paid to employees are wages, and wages carry recordkeeping obligations that many small teams handle loosely. The commission statement generator helps by producing, every period, a clear document that shows exactly how each rep’s pay was calculated, from the underlying sales through the rate, any split, and any clawback, to the final number. That document is the kind of record the rules expect you to keep, and the tool creates it as a byproduct of doing the calculation.
The specific obligation is worth understanding. The Department of Labor’s fact sheet on recordkeeping under the FLSA states that employers must preserve payroll records for at least three years, and must keep the records used to compute wages, such as the basis for pay, for two years. Commissions are part of an employee’s earnings, so the worksheet behind a commission payout falls squarely inside wage-computation records. If you cannot show how a commission was figured, you cannot show your payroll math is sound.
The commission statement generator turns that requirement into a habit rather than a chore. Each period you run the calculation, and each period you have a statement per rep plus a payout summary you can save and date. There is no separate step to document the math because the math and the record are the same output. Over a year, that produces an orderly set of wage records that lines up with what the rules ask you to retain.
Keeping those records under your control matters too. The statements the tool produces are yours to store where you choose, in your own files, for as long as the retention rules require. You are not depending on a third-party payroll portal to hold your history or hoping a spreadsheet survives the next round of edits. If the Department of Labor, an employee, or your own accountant ever asks how a commission was calculated in a given period, you can produce the exact statement.
The clawback and split handling deserve a note here. Wage records are only useful if they are accurate, and those two cases are where manual commission math tends to break. Because the commission statement generator applies your split and clawback rules consistently, the record it leaves reflects what actually happened, including reversals, rather than a tidy number that hides an adjustment. Accurate records are the only records worth keeping.
None of this requires payroll expertise. You define the plan, run the period, and keep the statements, and the recordkeeping largely takes care of itself. Owners who want to understand how wage-record duties fit a small operation can read more on the small-business operators page. The takeaway is direct. The tool computes commissions correctly and, in the same motion, leaves you the wage-computation records the FLSA expects, so meeting the requirement stops being a separate task you might forget and becomes part of how you run each pay period. Save each period’s statements in a consistent place, and you end the year with an orderly set of wage records rather than a pile of edited spreadsheets nobody can quite reconstruct.
Is my sales and rep data secure with a commission statement generator?
Sales figures and rep pay are sensitive, and they deserve careful handling. A commission run pulls together customer sales, individual earnings, and sometimes the identifying details of the people on your team. That is real personal and business information, so the sensible question to ask of any commission tool is where the data goes and who can reach it. The commission statement generator is built to keep that information tightly scoped to the people who need it.
A useful way to think about protecting this data comes from the Federal Trade Commission. Its guide on protecting personal information lays out a plain sequence, take stock of what you hold, scale down what you keep, lock down what remains, and plan ahead for problems. Applied to commissions, that means importing only the sales fields you actually need, not carrying extra personal details you will never use, and controlling who can open the statements once they exist.
Scaling down is easy to overlook. A raw sales export can contain far more than the tool needs to compute a commission. Bringing in only the columns that drive the calculation keeps the sensitive footprint small, which is exactly what the take-stock-and-scale-down idea encourages. The commission statement generator focuses on the figures that matter to pay, so you are not spreading unnecessary personal data through another system.
Locking it down is about access. The statements and payout summaries the tool produces are documents you control, so you decide who can see each rep’s numbers. Commission figures are personal, and a rep’s pay is not something the whole office should be able to browse. Keeping the files in a controlled location, shared only with the person who runs payroll and the individual rep, follows the lock-it principle directly.
Planning ahead means thinking about retention and disposal. You keep commission records for as long as wage rules require, then dispose of them properly when they are no longer needed, rather than letting old pay data pile up indefinitely. Holding sensitive information longer than necessary only widens your exposure, which is why scaling down applies to time as well as fields. A clear retention habit keeps your commission history useful without becoming a liability.
It is worth being straightforward about scope. Good software helps you handle data carefully, but security is also about your own habits, who can sit at the machine, how access to the files is granted, and how carefully exports are handled. The commission statement generator does its part by keeping the calculation focused and the outputs under your control, and the FTC’s steps give you a simple checklist for the rest. You can review how the tool handles your inputs and outputs on the product page and decide how it fits your own data practices. For a small team, treating commission data with this care is not overkill, it is exactly the diligence rep pay deserves. A rep’s earnings are among the most personal numbers a business handles, and keeping them scoped, controlled, and retained only as long as needed is a habit that protects both your people and your company.
How is this better than calculating commissions in a spreadsheet?
Most small teams start commissions in a spreadsheet, and most eventually regret it. The commission statement generator is built to replace that spreadsheet with something that does the same job accurately, repeatably, and with a record you can stand behind. The difference is not cosmetic. It is the gap between a formula you hope still works and a tool that applies your plan the same way every single period.
The first problem with spreadsheets is silent error. One dragged formula, one row inserted in the wrong place, one rate typed over, and an entire payout is off with nothing to flag it. Nobody notices until a rep does, and by then trust is dented. The commission statement generator applies your plan rules consistently, so tiered rates, per-product rates, splits, and clawbacks are computed the same correct way each time, without depending on whether last quarter’s formulas survived intact.
The second problem is the awkward cases. Splits and clawbacks are where hand math falls apart, because they break the neat one-sale-one-rep pattern a spreadsheet assumes. Reversing a commission on a refunded deal, or dividing credit between two reps, usually means a manual patch that is easy to forget. The tool handles both as normal parts of the calculation, so your payout reflects reality including the adjustments, not just the clean sales.
The third problem is the record. A spreadsheet is a working file that changes constantly, which makes it a poor place to preserve how a past payout was figured. Yet commissions are wages, and wages must be documented. The Department of Labor’s fact sheet on recordkeeping under the FLSA says employers must preserve payroll records for at least three years and wage-computation records for two. A commission statement generator produces a fixed, dated statement each period, which is a far cleaner record than a spreadsheet that has been edited a hundred times since.
There is also the matter of time and trust. Building statements by hand is slow, and the numbers still invite argument because a rep cannot see how you got them. The tool produces a per-rep statement that shows the sales, the rate, and any adjustment, so a rep can check their own math. Disputes shrink because the work is visible, and you get the period’s payout total in minutes rather than an afternoon.
Compared with heavier payroll add-ons, the commission statement generator stays focused on the one job small teams struggle with, turning a sales export into correct statements and a payout summary. It does not ask you to adopt a whole new payroll platform. It sits at a flat, predictable subscription aimed at teams too small for enterprise commission software but too busy to keep babysitting a spreadsheet. You can compare its plan types and outputs against your current process on the product page. For a team that dreads commission day, moving off the spreadsheet is usually the upgrade that pays for itself in the first period. The hours saved are real, but the bigger gain is confidence, knowing that every payout was figured the same correct way and backed by a statement you can produce on demand.
Can the commission statement generator handle tiered plans, splits, and clawbacks?
Yes, and those three cases are exactly where it earns its place. Simple flat-rate commissions are easy to compute anywhere. It is tiered plans, shared credit, and reversals that turn commission math into a headache, and the commission statement generator is built to handle all three consistently so your payouts hold up.
Tiered plans reward reps more as they sell more, with the rate stepping up once a rep crosses a threshold. Done by hand, this is error-prone, because you have to track where each rep lands and apply the right rate to the right slice of sales. The tool applies your tiers automatically, so a rep who crosses into a higher band is paid correctly for the portion that qualifies, without you recalculating brackets every period. Per-product rates work the same way, paying different rates across your catalog so a high-margin item and a loss leader are not treated the same.
Splits handle the common case where two people share credit for a deal. Maybe one rep opened the account and another closed it, or a manager shares in a team sale. Rather than patching a spreadsheet to divide a single sale two ways, you set the split and the commission statement generator allocates the commission accordingly on each rep’s statement. Both people see the same underlying deal and their share of it, which keeps the numbers consistent and the peace intact.
Clawbacks cover the uncomfortable but necessary case of a reversal. When a sale is refunded, canceled, or charged back, the commission paid on it usually has to come back. The tool applies your clawback rules so the reversal shows up in the record rather than being quietly dropped or forgotten. That accuracy matters beyond fairness. Because commissions are wages, their records must reflect what truly happened.
That recordkeeping angle is worth keeping in view. The Department of Labor’s fact sheet on recordkeeping under the FLSA requires employers to keep payroll records for at least three years and wage-computation records for two. A statement that shows a tier applied, a split allocated, and a clawback deducted is a complete wage-computation record for that rep and period. Handling these cases correctly is not only about paying people right, it is about leaving records that stand up if anyone reviews them.
Setting all of this up is a one-time job. You define your tiers, split rules, and clawback rules once as your plan, and every period after that the calculation just runs. If your plan changes, you update it and the next period reflects the new rules. That is a real shift from rebuilding formulas each time your comp structure moves. Owners who want to see the full range of supported plan types can review them on the product page. For a team whose commissions are anything more complex than a single flat rate, the ability to handle tiers, splits, and clawbacks in one pass is the whole reason to use the tool. These are the exact cases where a spreadsheet quietly fails and a rep loudly notices, so getting them right every period is what keeps both your payroll and your team on solid ground.
| Attributes | Value |
|---|---|
| Deployment |
Cloud |
| Platform |
Web |
| License Type |
Subscription |
| Billing Period |
Monthly |
| Target Customer |
Small Business & Retail |
| Free Trial |
Yes |



