What this page shows
Player KPI Report is a bulk, player-by-player export. It returns one row per player, with
each player's deposit, withdrawal, gameplay, bonus, and activity figures for the period you
choose. It is built for pulling a wide spreadsheet across many players at once, then exporting
it to CSV.
This is not the same as two similar-sounding screens:
- The dashboard KPI summary shows brand-wide totals as a few headline cards. It does not break results down per player.
- The player KPI summary on a single player's profile shows the same kinds of metrics for one player only.
- This page is the bulk version: many players, one row each, with full filtering and a CSV export.
When to use it
- pull a period KPI extract across all depositors or all active players
- build a marketing, VIP, or finance list with deposit, turnover, GGR, NGR, and activity columns
- export a filtered player segment to CSV for offline analysis
- look up KPI figures for a specific set of players by entering their player IDs
How to read it
Each row is one player. The table is paginated and the header text shows how many players matched the current filters. The default period is the previous calendar month.
The cards above the table summarize the same filtered result set:
Matching Playersis the number of players that pass the active filters.Total Depositsis the sum of period deposit counts across those players.Deposit Amount,Total GGR, andTotal NGRare reporting-currency totals across the same matched rows.
Money columns use a common EUR reporting basis. Each qualifying amount is converted with the
exchange value saved for that activity before it is added to the player's total. The Currency
column still shows the player's account currency; it is not the unit of the money columns.
Available evidence confirms use of the saved exchange value, but not that every value was captured
at the exact moment of the activity. Historical values can use the daily EUR rate for the activity
date, so do not describe these totals as a period-average conversion or as a guaranteed
event-instant conversion. Banking metrics start from the original banking amount, while gaming
metrics start from the original casino cash amount. The report does not show or group results by
the original activity currency.
Rows with a missing or zero conversion rate still contribute to event counts, but their amount is ignored by the converted sum. If every qualifying amount has an unusable rate, the displayed amount becomes zero. This can leave a non-zero deposit or bet count beside a zero or understated money total.
Two columns are averages:
Avg Depositis total deposit amount divided by deposit count. A player with no deposits shows0.00.Avg Betis total turnover divided by bet count. A player with no bets shows0.00.
The average divides the unrounded converted total by the count and rounds the result to two decimals. It does not divide the already rounded amount displayed in the row. These averages use all qualifying events in the denominator even when an event's amount was excluded because its conversion rate was missing or zero.
GGR is turnover minus wins. NGR is GGR minus bonus winnings. Bonus bet and bonus win columns
are always computed over bonus-funded play, even when the Include bonus bets toggle is off.
Casino activity can also carry adjustment, marketing, freespin-payout, correction, or bonus-payout
markers. A marker does not automatically separate that activity from bets and wins: marked
activity can contribute whenever it is also a qualifying bet or win. Casino activity that is
neither a bet nor a win is excluded from the displayed casino metrics.
Filters that change the result
Start DateandEnd Dateset the period. They default to the previous calendar month.Player Selectiondecides which players appear:Depositors in period(default) keeps only players with at least one successful deposit in the period.Players with period activitykeeps players with any deposit, withdrawal, bet, or recorded activity in the period.
Include bonus betsdecides whether bonus-funded bets count toward turnover, GGR, and the gameplay columns. It does not change the dedicated bonus columns.Product,Provider, andGame Identifiernarrow gameplay to that product, provider, or game. When any of these is set, only players with matching bets in the period are returned.Country,Currency,VIP Level,Registration Source,Device Type, andPlayer Statusfilter on player attributes.Player IDslimits the report to a specific comma-separated list of player IDs.
How the export works
Export CSV runs the same report without the visible table-page limit and downloads a CSV file.
Dates and times are reformatted for readability before the file is saved. The export is capped at 100,000 rows; if
the filtered result is larger, the export is rejected and you are asked to narrow the filters.
The on-screen table and export use the same applied filters and sort, but export is a separate
report run. Concurrent activity can therefore make the CSV differ from an already loaded table
or summary; it is not a guaranteed snapshot of the on-screen result.
Why this page can differ from other reports
- Money totals use each contributing record's stored conversion rate, so a player's figures here will not match raw wallet-currency amounts shown elsewhere.
- Refunds, reversals, and chargebacks have no separate netting rule. Only the documented deposit, withdrawal, bet, and win records enter these formulas; included signed amounts keep their stored sign.
- Summary money cards sum the already rounded player values and then round the total again; they are not one raw total with a single final rounding step.
Depositors in periodis the default, so players with activity but no deposit are hidden unless you switch toPlayers with period activity.- Turnover and GGR change with the
Include bonus betstoggle, but the bonus columns and NGR's bonus-win subtraction do not. - Setting a product, provider, or game filter silently drops players who have no matching bets, even if they deposited.
Refreshreruns the currently applied report. If you changed filters but did not pressApply,Refreshwill not include those unsaved changes.
Data dependencies and access
The report combines player profiles, banking transactions, casino activity, game metadata, activity logs, affiliate attribution, and stored conversion rates. A missing or delayed source can make one group of columns incomplete while the rest of the row still appears.
The current route uses Users: R. Because the report exposes player-level financial, gaming, KYC, country, and affiliate data, limit access to management, finance, CRM/VIP, risk, analytics, or senior affiliate users who need bulk player analysis.
If the report is empty
Check:
- the selected period
Player Selection, especially the default Depositors mode- Product, Provider, Game, Country, Currency, status, and Player ID filters
- whether the intended players had qualifying activity in the period
- whether stored conversion rates and analytics/read-model data are available
- whether the user has the required access
Apply the changed filters before using Refresh or Export.
Known caveats
- The CSV export is hard-capped at 100,000 rows. Table data and the separate count/summary calculation each have their own 60-second processing limit; this is not one shared limit for the whole report run.
- Per-player averages use a zero-safe denominator: zero deposits or zero bets resolve to
0.00, never an error. Active Daysgroups activity into calendar dates using the environment's day-grouping timezone. The report period starts and ends in UTC, but the day buckets are not guaranteed to use UTC.Player Statusfilter values and the displayedPlayer Statuscolumn are derived from account flags, not a single stored field. In particular, the VIP filter checks only VIP level, while the displayed label gives self-excluded and inactive states priority; a row selected by the VIP filter can therefore display another status.FTD Flagreflects whether the player's first-ever deposit landed inside the selected period, not whether they have ever deposited.- While new results are loading or after loading fails, the last successful rows and cards can remain visible with a progress or error state. Treat them as the previous result until refresh completes.
- Non-money table cells use
-for falsy values, so a zero count can appear as-; money cells and summary values use their own numeric formatting.