LinkToLooks · Guides · Creator Desk
Creator Desk
Bookkeeping for affiliate income: what to track
The click, the sale, the reversal and the payout are four different numbers on four different dates — and collapsing them into one is where creator records break.
Part of: For creators
Affiliate income has four events and they never reconcile: the click, the sale, the reversal and the payout. Record all four separately, because each carries a different number, a different date and a different currency, and the gap between them is where creator bookkeeping falls apart.
Here is one reason the sale figure is slipperier than it looks. We pulled 1,098 US-marked affiliate listings on 4 September 2026. 904 of them carry both a list price and a sale price, and 491 of those — 54 per cent — have a sale price identical to the list price. A feed showing two prices is not showing you a discount, and a number you record from the wrong field is wrong from the first entry.
The four events, and what each one is worth
| Event | When it happens | What it is worth to you | Why it needs its own row |
|---|---|---|---|
| Click | immediately | nothing, ever | it is the only volume signal you have, and it dates the attribution window |
| Sale recorded | hours to days later | a provisional amount | it is the number your dashboard shows and the one you must not treat as income |
| Locked or cleared | weeks to months later | the amount after returns and cancellations | this is the first figure that is real, and it is usually lower |
| Payout | on the payer's schedule | the amount that reached your account | fees, conversion and thresholds all apply here and nowhere else |
The single most useful discipline in creator bookkeeping is refusing to let event two masquerade as event four. A dashboard total is a forecast wearing the clothes of a bank balance. Everything downstream — what you can spend, what you set aside, what you tell an accountant — depends on which of the four you wrote down.

The fields worth having in the record
A spreadsheet is entirely sufficient. One row per event, not one row per sale, with these columns:
- Date, and which of the four events it is. The event type is the column most people omit and the one that makes everything else reconcilable.
- Payer. The entity that will send the money, which is often not the brand you dealt with.
- Programme or campaign. Your unit of analysis when you decide what to keep doing.
- Gross amount and currency. Both, explicitly. A dollar sign is not a currency when three of them use one.
- Fee or deduction, if any. Separate column, so you can see the year’s total cost of being paid.
- Net received. Only populated at event four.
- Reference. Invoice number, order id, statement line. This is what lets you answer a question in January about a payment in March.
- Source link. Where the figure came from, so a disputed number has a provenance rather than a memory.
Two extra columns earn their place once you have any volume: the exchange rate actually applied, and the status of the amount — pending, locked, reversed, paid. The second turns your spreadsheet into something that can answer “what is genuinely owed to me right now”, which no dashboard we have seen answers well.
Keep reading on creator money
Gross, net, and the number a form will show
Three different numbers describe one payment and they are all legitimate:
- Gross: what the payer says it paid.
- Net: what arrived after platform fees, transfer charges and conversion.
- Reported: what appears on any information return the payer files, which may be the gross figure including a fee you never touched.
Creators discover this in January, comparing a form against a bank statement and finding the form larger. That is normal and it is not an error. It is also unarguable without records: if you cannot show which fee reduced which payment, you have no way to explain the gap to anyone, including yourself.
Keep the fee as its own column from the first entry. Reconstructing it a year later from statements is genuinely painful work, and it is the most common reason a creator’s first tax year is worse than their second.
Why the sale figure itself is unreliable
This is our own measurement and it belongs in a bookkeeping page because it changes what you record.
| Measured on 4 September 2026 | Count |
|---|---|
| US-marked listings pulled | 1,098 |
| Carrying both a list price and a sale price | 904 |
| Sale price genuinely below list price | 413 |
| Sale price identical to list price | 491 |
Last verified 4 September 2026 against a live affiliate catalogue pull of 1,098 US-marked listings taken
Two operational consequences.
- Record what a shopper pays, not the list price. The two fields have different names and different meanings, and using the wrong one inflates every order value you calculate from it.
- Do not build income expectations on a discount that is not there. Just over half the rows with two prices show no real reduction at all. If your planning assumes sale traffic converts better, check the sale is real first.
The wider point: the numbers you copy into a record are produced by somebody else’s system for somebody else’s purpose. Knowing which field you took, and writing that down, is what makes the record trustworthy later.
A monthly routine that takes twenty minutes
- Export every dashboard you have. CSV where offered, screenshot where not. Platforms shorten their history without warning and an export is the only version that stays yours.
- Add last month’s events to the sheet, typed as sales, reversals or payouts. Do not net anything off; record each event.
- Reconcile payouts to the bank. Every payout row gets a real received amount and a real date. Any that does not is an open item, and open items are where money quietly disappears.
- Update the status column. Pending that has been pending for two cycles is worth a support ticket now rather than in January.
- File the statements in one folder named by year. This is the step that costs nothing and saves a week.
- Note anything unusual in a sentence. A reversal you queried, a rate that looked wrong, a brand that went quiet. Future you will not remember and the note is thirty seconds.
Five mistakes that cost real money
- Treating pending as earned. The most expensive one, because it drives spending decisions.
- Recording only payouts. Clean and useless: you lose the ability to tell whether a programme is worth the work.
- Netting fees silently. The fee becomes invisible and you never learn what being paid costs you.
- Leaving currency implicit. Fine until the year one programme pays in something else, and then retrospectively unfixable.
- Relying on the platform to remember. Dashboards shorten history, accounts get closed, programmes end. Your export is the only copy you control.
Our editorial judgment: the fifth is the one creators regret most, and it is the cheapest to prevent. A monthly CSV in a folder is a complete solution to a problem that is otherwise unrecoverable.
Frequently asked
Do I need accounting software?
Not at the start. A spreadsheet with an event-type column beats software used without one. Software earns its place when you have more payers than you can reconcile by eye.
When does a commission become income?
That is a question about your jurisdiction and your accounting basis, and we are not qualified to answer it. What we can tell you is to record all four events so that whoever is qualified can apply whichever rule governs you.
What about gifted products?
Record them with a description and a stated value. Whether they are taxable is jurisdictional. A record you kept is useful either way; one you did not keep cannot be reconstructed.
How long should I keep records?
Longer than you expect, and the answer is set by your tax authority rather than by us. Storage is effectively free, so there is no operational reason to delete anything.
Method and scope
The price figures come from one affiliate catalogue pull on 4 September 2026 through the root that returns shopping products, filtered by keyword only with our own company identifier, nine seed terms, five pages of one hundred rows each, deduplicated on advertiser, title and destination URL, then filtered to rows whose own targetCountry value reads US. That gives 1,098 rows, of which 904 carry both a list and a sale price. A row counts as genuinely discounted when the sale price is below the list price by any amount. This is a keyword-driven sample of one network on one morning, not a census. The bookkeeping structure is a description of practice, not advice, and we hold no earnings or payout data of our own — we have no affiliate approvals and have been paid nothing.
How this page was made. Drafted with AI (Claude); not yet independently re-checked. How we work