Methodology

How every number is made.

Every figure in the product and on this site is produced by the six rules below. They are published in full because an analytic you cannot interrogate is an analytic you cannot act on — and because a number that arrives without its rules is a number somebody can argue you out of.

This page is the specification the product is held to. If the product and this page ever disagree, the product is wrong.

Bring a Statements pageSee it on the screens

Six rules, each one citable.

Every rule has a permanent address. Send a creator, an accountant or a sceptical operations lead the clause rather than the page, and they will land on the paragraph that answers them.

1Completed days onlyEvery window ends yesterday. Today is excluded everywhere, because today’s transactions lag the statements by hours and produce a number that quietly changes as it settles. A figure you have seen never moves afterwards. Day boundaries are UTC, the mode in which our totals reconcile exactly, and the timezone is stated under every date range on every screen.#rule-1
2Two sources, reconciled against each otherThe platform’s own earnings statements are the authority for totals; the transaction feed provides per-fan detail. Neither is trusted alone. Where the feed claims more than the statement paid, that gap becomes a flagged suspected reversal rather than silently wrong data.#rule-2
3Per-fan spend is never scaledEvery fan’s spending is summed from real transactions. It is never multiplied by a factor to force the total to match — a shortcut that makes the top line look right while making every individual fan wrong. The handful of transactions the platform reports with no fan identity are shown as their own unattributed line, so fan spend plus unattributed equals the total exactly.#rule-3
4Three buckets, defined onceEarnings are reported in the same three categories the platform itself uses: subscriptions, tips and messages. The definitions live in exactly one place in the system, so no two screens can disagree about which bucket a sale belongs to.#rule-4
5Every figure carries its gradeIf a number is a guess, it says so on the number rather than in a footnote. Price suggestions ship with their evidence and sample size attached, everywhere they appear, including inside a chatter’s composer at the moment somebody is about to act on one. The three grades are defined below.#rule-5
6Limitations printed, not buriedDerived gross can be out by cents, because the platform rounds its fee per transaction. Suspected reversals are inferences and are labelled with their confidence. Recent-send message statistics are capped by what the data source returns, and the screen says so. Every known limit is stated where you see the affected number, not at the bottom of a page nobody scrolls to.#rule-6

The three grades, and the rule for issuing each one.

A grade is not a confidence score. It is a statement about where a number physically came from, and which of the three it gets is decided by the source, never by how sure we feel.

StatementRead from the platform’s own record. The highest grade a figure can carry, and the only one we will put next to the word “paid”.Where our ledger disagrees with it, the statement wins and the difference is raised as a finding.
LedgerSummed from the transaction feed. Real records, carrying the per-fan detail a statement does not — but not the authority that pays you.Reconciled against the statement before anything is computed from it.
DerivedComputed by us. A forecast, a benchmark, a rate, a price suggestion: anything arithmetic produced rather than a source reported.Labelled wherever it appears. A derived figure that loses its label on the way out is a bug.

Attribution, and the three things it refuses to do.

Deciding who earned a sale is where most of the arithmetic in this product could quietly be made flattering. These are the rules that stop it.

Automation earns as AutomationWhen an automated message produces a sale, the revenue is credited to Automation as its own row, never to a person. Payroll stays honest, and it produces a figure nobody else separates out: how much of the month your team actually earned, and how much would have arrived anyway.own actor
Credit follows the published rule, not the inboxSales are credited to the shift that covered the creator when the money landed, under a rule written before the money arrived and applied to everybody identically. A rule invented after the money lands is not a rule, it is a decision about a person.shift owner
What the rule cannot place is publishedRevenue that cannot be attributed is reported as unattributed, as its own number, rather than distributed across the team to make the total look complete. It is the figure that makes the table look worst and it is the one that tells you the rota is not being kept.residual
An absence is not a zeroA figure whose source has stopped reporting is treated as unknown, not low. A period with no data is never drawn as a nought, and a period comparison is refused outright unless both windows were actually covered by a working sync.unknown

Pick any date range and check us against the platform.

Put FanOptik next to the creator’s own Statements page. Net per bucket, cents precise, line for line. If it does not match, that is a bug we want reported, because the entire system is built on this tying out.

That offer is the whole pitch, and it is the reason every rule above is published in full rather than described in general terms. A methodology page that could not survive being tested against the source would not be worth writing.

What we will not claim.

We have not found another tool in this category that publishes how it handles the platform fee, refunds or partial days. That is a statement about what we have been able to find, not a claim about what exists — we cannot see inside anybody else’s product, and we will not pretend to. If you know of one, send it to us and we will link it from the references page alongside everything else.

The same restraint applies to every competitor statement on this site: their own published material, linked and dated, and “not published” is never converted into “does not exist”. Where we have broken that rule, it comes off the page and the changelog says why.

Bring a Statements page. Test us live.

A 20 minute walkthrough, then 14 days on your real roster. Put our numbers next to the platform’s own and keep whichever told the truth.

Book a demoSee the platform

FanOptik

Analytics and chatting for OnlyFans agencies and independent creators. Measured across the whole roster, with every figure graded by where it came from.

© 2026 FanOptik. All rights reserved. · Built for agencies that would rather measure the roster than estimate it.