Your Games Licence Says You'll Report Plays Monthly. Nothing in Your Stack Counts a Play.
Before you license HTML5 games on a revenue share, settle what a play is. The reporting clause obliges you to send a number every month, and no single part of a normal web stack produces it. Your ad server, your analytics tag and the licensor's dashboard each count something slightly different on identical traffic, and the space between those numbers is where invoice arguments live for the rest of the term.
๐ The Reporting Clause Is One Sentence and It Runs Your Whole Term
Most of a games licence is settled once. Territory, exclusivity, platforms, the title list โ you argue about them in week three and then never again. The reporting clause is different. It usually reads something like "Licensee shall deliver to Licensor within fifteen (15) days of the end of each calendar month a report of plays, impressions and Net Revenue, together with payment of amounts due."
One sentence. Three nouns that nobody has defined. A deadline that lands twelve times a year for as long as the deal runs. It is the only clause in the document that creates recurring operational work, and it is almost always the clause that gets the least attention during negotiation because it looks administrative.
It is not administrative. It decides how much you pay.
๐ข Four Different Things Get Called "a Play"
On a portal running licensed HTML5 games, at least four systems will happily hand you a play count, and they will not agree:
- A page view of the game page. Cheap to measure, wildly inflated by reloads, bookmarks and back-button behaviour. Counts a player who bounced in two seconds.
- An iframe load. Closer to a real play, but it fires whether or not the build finished downloading. On a slow connection, plenty of loads never become games.
- An in-game start event. The most honest of the four โ and the one you may not have. A cross-origin iframe does not hand its internals to the parent page. If the build does not deliberately post a message out, your shell cannot see the player press start.
- An analytics session. GA4 ends a session after 30 minutes of inactivity by default (Google Analytics Help). A player who leaves a puzzle open through lunch is one session or two depending on the clock, not on anything they did.
Take one real player who opens a match-3 title, reloads twice because the first load stalled, plays for eight minutes and comes back after an hour. Depending on the definition, that is three page views, three iframe loads, one or two game starts, two sessions, and โ if the ad slot never filled โ zero impressions. Every one of those numbers is correct. Only one of them is the number in your contract.
Name it in the agreement, in a sentence, and name the system that produces it: "Play means a game_start event recorded by Licensee's analytics platform." A definition that points at a named system is auditable. A definition that says "a play" is a future argument.
๐ Your Month Is Not Their Month
Time zone mismatch is a standing item on every list of causes of reporting discrepancy, and on a monthly boundary it is worth real money. Google Ad Manager reports in the network's configured time zone. Your analytics property has its own. Your licensor's dashboard has a third, usually wherever their servers are. If you close the month at midnight in one zone and they close it in another, up to a day of volume moves between periods โ every month, in the same direction, compounding across a year.
Fix it with eleven words in the definitions section: reporting periods are calendar months in UTC, and every report uses that boundary. Then set your ad server's reporting time zone to match and never touch it again. Changing a network time zone mid-term breaks year-on-year comparisons permanently.
๐ The Ad Industry Already Agreed to Argue at Ten Percent
If revenue share sits on top of ad performance, you inherit a measurement problem the display industry solved by convention rather than by engineering. Discrepancy below 10% between two counting systems is treated as normal, per IAB guidance summarised in Setupad's 2024 breakdown of ad discrepancy. Nobody expects two systems to match.
The reason is that they count at different moments. That same breakdown gives a concrete example: Campaign Manager 360 counts an impression when the creative begins to download, while Xandr counts when it is delivered to the page and begins to render. Both are honest. They are measuring different events milliseconds apart, and on a games portal โ heavy creatives, slow mobile connections, players who close the tab mid-load โ those milliseconds cash out as a percentage.
Add the two problems this blog has covered separately, ad blocking and invalid-traffic filtering, and the spread between "what my ad server saw" and "what the network will pay for" widens further. So do the contractual thing:
- Name a controlling measurement. One system is the source of truth for billing. Everything else is diagnostic.
- State the tolerance. Below an agreed threshold, the controlling number stands and nobody opens a ticket.
- Say what happens above it. A reconciliation process with a named deadline beats an email thread that runs until someone gives up.
Pick the network's payment statement as the controlling measurement wherever the money actually arrives that way. You cannot pay a share of revenue you were never credited.
๐งพ "Net" Is a Verb, and Everything Depends on Who Gets to Conjugate It
Revenue share deals are settled on net revenue, and "net" is where the deductions argument happens. A licence that says "Net Revenue means gross revenue less reasonable costs" has given you nothing. Reasonable to whom?
Get a closed list. Items that routinely belong on it:
- Ad network, SSP and mediation fees actually withheld before you were paid
- Sales tax, VAT and equivalent transaction taxes
- Withholding tax deducted at source on cross-border payments
- Refunds, chargebacks and payment-processor fees on any paid product
- Make-goods and invalid-traffic clawbacks issued by the network after the fact
Items that are usually not deductible, and that buyers try anyway: hosting and CDN costs, your own staff time, marketing spend, and platform revenue share on a store you chose to distribute through. If you want any of those in the net calculation, ask during negotiation rather than assuming โ a deduction that appears for the first time in month seven's report reads as bad faith even when it was an honest reading of a vague clause.
One more line worth adding: net revenue is received, not invoiced. If a network pays you on net-60, you should not owe a share in the month the impression served.
๐ The Audit Clause You Will Sign Without Reading
Every self-reporting agreement carries an audit right, and the reason is well documented across licensing generally. MetaComet's royalty auditing guide cites a compliance report from auditing firm Invotex finding that 87% of licensees audited underreport and underpay royalties, with 75% underreporting sales. Other write-ups of the same body of work quote slightly different figures in the mid-80s, so treat the number as directional. It also spans all licensing categories rather than games, and the underlying research is not recent.
The direction is the useful part, and so is the cause. That volume of error is not fraud. It is spreadsheets, ambiguous definitions, currency conversion, and reports assembled by hand by someone who inherited the job. Which is exactly what will happen at your company if you do not build the report properly in month one.
The same guide notes the standard cost-shifting pattern: if underreporting exceeds a stated threshold โ often 2โ5% โ the licensee pays the audit costs, auditor hours and travel included, on top of the shortfall. That is the clause worth reading closely. Terms to settle before signing:
- Frequency. No more than once in any twelve months, absent a discovered material discrepancy.
- Notice. Thirty days in writing. An audit you learn about on Monday for Wednesday is a fire drill.
- Scope. Records relating to this agreement, not your general ledger.
- Auditor. Independent, not a competitor, under NDA, and not paid on a contingency of what they find.
- Method. Electronic delivery of records rather than a right of entry to your premises.
- Threshold and cap. A cost-shift trigger you can live with, and a ceiling on recoverable audit costs.
- Cure and interest. A window to pay a genuine shortfall before penalty interest starts, and an interest rate that is a rate, not a punishment.
- Symmetry. If the audit finds you overpaid, you get a credit. Ask for it. It is usually granted and rarely offered.
๐๏ธ Your Retention Window Is Shorter Than Your Audit Window
Here is the trap that catches operators who did everything else right. Audit clauses commonly reach back two or three years. Your data does not go back that far.
Standard GA4 properties cap user and event data retention at 14 months, and Google's documentation notes that large and XL properties are limited to 2 months. A busy games portal is precisely the kind of property that lands in that bucket. Aggregate standard reports survive; the row-level detail an auditor asks for does not. CDN and origin access logs are usually purged faster still unless someone deliberately archived them.
So do three things now, not during the audit:
- Export the monthly report you send, plus the raw counts behind it, to cold storage on the day you send it. A dated CSV and a PDF of the ad server report cost nothing to keep.
- Keep the network payment statements. They are the strongest evidence you have because a third party produced them.
- Write a one-page reconciliation memo each month explaining any gap over your agreed tolerance. Two years later, that memo is the difference between a finding and a conversation.
Match your retention commitment in the contract to what you can actually deliver. Promising seven years of records when your analytics keeps two months is a breach waiting to be discovered.
๐ซ Five Ways Monthly Reporting Goes Wrong
- The report is built by hand. One person, one spreadsheet, no version control. They leave in month nine and the numbers change shape in month ten for no documented reason.
- The definition drifts silently. Someone fixes a tracking bug, the play count jumps 18%, and nobody tells the licensor. That looks like concealed underreporting in hindsight even when it was a genuine fix.
- Gross and net get mixed within one report. Impressions gross of blocked traffic, revenue net of network fees, on the same line. The effective rate that falls out is meaningless.
- Refunds and clawbacks are never trued up. The network claws back invalid traffic in June against April's volume. If your report has no restatement mechanism, that money is simply lost by whoever notices last.
- Nobody reads the report at the other end for a year. Then somebody does, and eleven months of the same error arrive as one invoice.
๐ The Reporting Schedule to Ask For Before You Sign
Ask for the reporting obligation as its own schedule, not a sentence buried in payment terms. It should specify:
- The definition of a play, an impression and net revenue, each pointing at a named system
- The reporting period, its time zone, and the delivery deadline
- The report format and the exact fields, ideally with a sample row
- The controlling measurement and the discrepancy tolerance
- The restatement process for clawbacks and late adjustments
- Record retention on both sides, and the audit terms above
- Who at each company owns the process, by role rather than by name
A licensor who already has this schedule written has run the process before. A licensor who waves it off as something to sort out after launch is telling you that you will be sorting it out after launch, in month four, in an email thread.
๐ฏ What You Actually Get When You License HTML5 Games From a Direct Licensor
A licence from a direct licensor is a delivery relationship, not a file transfer, and reporting is part of what that relationship covers. Forestry Games has licensed games since 2017 and holds a catalogue of 1,049 titles spanning HTML5 builds and Android APK builds, with source available where the deal supports it, plus branding, hosting options and white-label portal delivery. That matters here for a practical reason: when the builds, the shell and the portal come from one conversation, the question of who emits a start event and who receives it has an answer before you launch rather than after the first invoice dispute. Catalogue breadth also lets you scope a licence to the titles a given surface actually needs โ a carrier portal, a marketing site, an events package โ instead of paying to report on inventory nobody plays. If you are sizing that scope now, browse the catalogue and ask for a licence scope in writing that includes the reporting schedule.
๐งธ Licensing Branded Games for Campaigns, Portals and Events
Branded titles add a reporting layer, because numbers you report to your licensor may also flow up to the IP owner under the underlying brand agreement. Forestry Games works with branded IP and has brand partnerships including Disney, Nickelodeon, Cartoon Network and Warner Bros, and businesses can license branded game content through it for campaigns, portals, events and apps. Treat the reporting fields on a branded engagement as part of the brief rather than an afterthought: agree the metric definitions, the period and the format at kickoff, when the approvals conversation is already happening. Then ask for a licence scope covering the branded titles you want, or request a white-label portal demo to see what the reporting surface looks like before you commit.
โ Run the Reconciliation Before the First Invoice, Not After the Tenth
Pick a week in your first month live. Pull the play count from every system that produces one, the impression count from your ad server and from the network's own dashboard, and the revenue from the payment statement. Put them in one table and explain every gap. You will find at least one you cannot explain, and it will be cheaper to explain it now โ with the licensor's engineer still answering emails quickly โ than in an audit two years from now with everyone who built it gone.
Then do it monthly, keep the file, and send the number you can defend. If you are still choosing a supplier, make the reporting schedule part of the evaluation: ask each one to show you a sample monthly report before you license HTML5 games from them. The one that can produce it in an hour has done this before.


