How to automate affiliate reporting in iGaming
Published 21 July 2026
Every month the same job comes back around: log into each partner's cabinet, pull the numbers, drop them into a spreadsheet, reconcile the figures that don't match, format it the way your boss expects, and send it up. It's the same work every cycle, it lands mid-month when it's already stale, and it gets heavier with every program you add.
The advice you'll find for fixing this is "get a dashboard." But a dashboard only prettifies the last two steps. Your monthly report is really a five-stage pipeline — collect the numbers, normalise them so they mean the same thing, calculate each deal's real payout, format the output, then deliver it on a cadence — and automating it means taking the manual labour out of all five, not just the ones you see.
Most teams we talk to are doing one of two things about it, and both stall in the same place. Some grind through it by hand every month. Others try to build an in-house tracker and find they've signed up to own 100+ fragile cabinet integrations — the least differentiated plumbing in the stack.
What trips up both is specific to iGaming: the standard "wire your programs into a spreadsheet on a schedule" recipe assumes every program hands you a clean API, and most casino and sportsbook cabinets don't. So you automate the two or three that do and keep logging into the other 40 by hand — and partial automation is worse than none, because you start trusting a total that's quietly half-stale.
This guide is the way through: a step-by-step workflow for automating the whole pipeline that survives past 50 programs, and how to handle the credentials automated collection needs.
How to build an automated reporting workflow
Whichever route you take, the build comes down to the same seven moves. Order matters — the first three get the data right, and the rest turn it into something people act on; skip the early ones and you've automated a report nobody can trust.
Step 1 — Spec the report before you automate anything
Decide what the report is for before you build it. Pin down four things:
Who reads it — you, a founder, or whoever you report to.
The decision it drives — the report should serve exactly one.
The level of detail that decision needs — by brand, geo, site, or deal type.
The cadence — a monthly close, or a weekly pulse.
A report exists to answer one question — where did the money come from, and where should the next batch of traffic go — not to dump every figure a cabinet will give you. Automate the wrong report and you just get the wrong answer faster.
Step 2 — Automate collection across every program, not just the easy ones
Start by sorting your programs into two buckets:
API-friendly — a usable public API you can pull on a schedule.
Credentials-only — no API, so collecting means a login.
Automating each looks different. For the API bucket, a connector or a short script pulls every program on a schedule — the standard spreadsheet recipe handles this well. The credentials-only bucket is the harder half: with no API to call, the only way to collect without logging in yourself is automated browser collection — a routine that signs in with your credentials and reads the figures straight off the cabinet page. You can write those yourself, but they need constant upkeep as cabinets change, which is the point where a purpose-built tool usually earns its keep.
The target either way is zero manual cabinet logins at month-end. A pipeline that still makes you open the credentials-only programs by hand hasn't removed the labour, only relocated it.
How AffStata does this: AffStata — our stats-and-reporting tool for iGaming affiliates — auto-collects from every connected cabinet, API where a program offers one and automated browser collection where it doesn't, across 990+ partner programs (new ones added most weeks, and faster on request), refreshed several times a day.
Step 3 — Normalise and calculate once, inside the pipeline
This is the stage a spreadsheet connector can't touch, and the one the month gets lost in. Set each of these once, inside the pipeline, and it holds every cycle instead of being rebuilt by hand:
Give every cabinet's brand variants a single canonical name.
Align FTD and deposit definitions across programs.
Encode each deal's NGR and carryover rules.
Carry both the accrued figure and the payable one.
Done by hand, this is the step that eats whole days each month-end. Getting the underlying figures right in the first place — defining each metric, reconciling what a program reports against what it actually pays — is a subject of its own.
Relevant reading: How to track affiliate commissions across multiple programs
Here we're assuming that's sorted, and the job is to encode those rules once so the pipeline applies them for you every cycle.
How AffStata does this: it resolves brand-name variants into one record automatically and computes each deal type on its own formula, so every program reports into a single comparable figure.
Step 4 — Templatise the output so each cycle is a refresh
Once the data underneath is clean, the report itself should stop being something you assemble and become something that just re-populates. That only works if its shape is fixed in advance, so every cycle is a refresh rather than a rebuild:
Fixed sections, in the same order every cycle.
The same comparisons month over month.
A top line the reader takes in at a glance, with the detail underneath for when they ask.
Holding the shape steady does more than save time — it's what makes trends legible. A metric only tells a story when it sits in the same place month after month.
Step 5 — Schedule the refresh, then decide how it reaches people
Set the data to refresh on a cadence, then decide how the report actually reaches the people who read it. There are four common ways:
A live dashboard — current whenever someone opens it.
A manual export — you pull it each cycle.
A read-only API — you wire the data into your own systems.
A scheduled push — into Slack, Telegram or email.
Pick the one that matches how the report gets used: a dashboard if people check it themselves, a push if it needs to land in front of them, an export or API if it feeds a board pack or another system. Whichever you choose, the goal is the same — at month-end the finished report is already waiting, not something you're still assembling.
How AffStata does this: it gives you an always-current dashboard (refreshed up to four times a day), a manual CSV export, and a read-only API to feed the normalised data into your own BI. Scheduled pushes to chat tools and automated alerts come up often among the affiliates we talk to — worth asking any vendor about, but not something to assume is shipped anywhere.
Step 6 — Add an analysis layer so the report drives traffic decisions
A report that only totals last month is a rear-view mirror. The version worth automating carries the comparative cuts that actually move money:
Geo against brand — which brand turns a given market into depositors.
Performance by traffic source — which of your channels actually earns.
Cohort retention — how the players you sent a brand months ago are depositing now. The one most tools skip.
Split revenue by the month each player first arrived and the picture often shifts. We did exactly this on our own portfolio once and it reset our assumptions: most of the revenue was "old money" from cohorts that had signed up years earlier, not the fresh traffic we were pouring budget into — so we moved that budget accordingly.
How AffStata does this: the geo, brand and cohort view is what it's built around — not just what each program paid last month, but whether the players you sent it are still depositing, the cut that decides where next month's traffic goes.
Step 7 — Settle the credentials question before you hand over logins
Automated collection means a tool holds your cabinet logins, and that's where most affiliates hesitate. Before you hand any vendor a login, get concrete answers from them:
Is access read-only?
Are credentials encrypted and kept apart from your stats?
Who inside the vendor can see your data?
Can you self-host?
Can you revoke or rotate access the moment you want to?
How AffStata does this: access is read-only, each customer runs on an isolated domain with their data separated at the database level, and your cabinet credentials are encrypted in a database separate from your stats — so the collection layer never reaches further than it needs to.
When to consider a dedicated tool
At some point the workflow above stops being worth running yourself. The signals are consistent:
The report is chronically late — it lands on the 15th when the decisions needed it on the 3rd.
The pipeline fails quietly — one program stops pulling, nothing flags it, and you don't find out until the numbers are already wrong.
It lives with one person — the build sits in the head of whoever wrote it, and drifts out of correctness the moment they're out or gone.
A stakeholder wants it self-serve — something they open, not something they wait for you to assemble.
For most teams that point arrives past a few dozen programs. Building your own way out rarely helps: teams routinely pour months and budget into an in-house tracker and never ship one that holds up.
Relevant reading: Best stats trackers for iGaming affiliates
Cross that line and the month changes shape: the report stops being something you assemble and becomes something that's simply there — current and complete — whenever a decision needs it, rich enough to answer where the next batch of traffic should go rather than just what last month earned.
AffStata is one tool built to do this end to end: it collects across 990+ partner programs (API and automated browser collection), normalises the naming, calculates each deal type, and pulls each partner's financial report so accrued sits next to payable — all in a dashboard that's current whenever you open it, plus a read-only API if you'd rather feed the normalised data into your own BI.
To see it against your own programs, book a demo.