Operator guideENtransactionscasinogridanalytics

Transactions / Casino

Game transaction dashboard with real-time list mode, monthly analytics mode, filterable table, and a dedicated transaction detail route.

Reader view

Clean portal guidance

This page keeps the operator explanation, field and action descriptions, and screenshots visible without exposing repo paths, raw sidecars, or editorial-only implementation details.

Narrative content

Page body

What this surface shows

Transactions / Casino is the Backoffice work surface for game transaction rows such as bets, wins, rollbacks, and free spins.

It combines:

  • a real-time table view
  • a frontend-derived monthly analytics view
  • filter controls
  • summary cards derived from the loaded rows

Use it when you need to inspect how gaming transactions are distributed by game, provider, player, action type, or time.

How to read it

The page has two modes:

  • Real-Time View
  • Monthly Analytics

In Real-Time View, the main operator surface is the table. In that mode the cards above the table summarize the currently loaded list, not a separate report route.

In Monthly Analytics, the FE widens the date window and derives monthly charts, provider shares, status distribution, and headline cards from the same casino-transactions list endpoint. The mounted page does not call a separate analytics backend route.

The table helps answer:

  • which player performed the transaction?
  • which game and provider are involved?
  • was this a bet, win, rollback, or free spin?
  • what was the real amount versus bonus amount?

Filters that change the list

The visible filters are:

  • Search email
  • Currency
  • Type
  • Status
  • Provider
  • Date start
  • Date end

Common questions

Does this page show banking transactions?

No. This route is specifically for casino-side game transaction rows.

Why do the top cards change when I change the table filters?

Because the summary cards are calculated in the frontend from the loaded transaction list.

Why can email search pull older rows than the selected date range?

Because the list hook resets startDate to 2022-01-01 whenever email is non-empty. In practice, email search intentionally widens the time window beyond the currently selected dates.

Why do the status filter values differ from the row badges?

Because the filter sends string values like pending, completed, failed, and rollback, while the loaded row data stores numeric status codes that the FE maps to Pending, Complete, Failed, and Rollback.

What is the difference between Monthly Analytics and the table?

The table is row-level inspection. The analytics mode is a chart/report view that summarizes the selected period.

Known caveats

  • The row summaries convert amounts to EUR using the frontend currency list and exchange rates.
  • Monthly Analytics is FE-derived from the list endpoint, not a separate backend report route.
  • The dedicated detail route is /transactions/casino/[transactionId].
  • The row component also has an expandable inline details panel, so operators currently have both inline and routed detail patterns on this surface.

Verification status

  • status: verified_fe_only
  • last verified: 2026-04-18
  • note: the list route and CSV export are traced to gs-admin-backend, but Monthly Analytics remains FE-derived from the list endpoint rather than a dedicated backend analytics service
Operator actions

Screen actions

action

Show/Hide Filters

Expands or collapses the filter panel in real-time mode.

action

Apply Filters

Re-runs the casino transaction query with the current filters.

action

Download CSV

Exports the current casino transaction result set.

action

Refresh

Re-runs the current query without changing filters.

action

Change View Mode

Switches between the real-time row table and monthly analytics view.

action

Refresh

Re-runs the current real-time query from the header icon without changing filters.

Operator actions

Row actions

action

Open Player

Opens the linked player profile from the email button.

action

Open Transaction Detail

Navigates to `/transactions/casino/[transactionId]`.

action

Expand Row

Shows the inline `Transaction Details` and `Financial Details` sections inside the table.

Operational notes

Notes

item

The routed detail view and the inline expandable row currently coexist on this page.

Calculation notes

Frontend calculations

calculation

total_bet_amount_eur

Formula
sum(amount for rows where actionType = bet, converted to EUR through currency.exchangeRate when available)
calculation

total_win_amount_eur

Formula
sum(amount for rows where actionType = win, converted to EUR through currency.exchangeRate when available)
calculation

profit_loss_eur

Formula
total_bet_amount_eur - total_win_amount_eur
calculation

average_transaction_amount_eur

Formula
sum(all converted amounts) / transaction_count
calculation

sparkline_grouping

Rows are grouped by local date string and then reduced into bet, win, count, and profit series.

calculation

analytics-monthly-data

Formula
FE widens the date window to the last 6 months and derives `monthlyData`, `topProviders`, `statusDistribution`, and `totalMetrics` from the same casino-transactions list endpoint.
calculation

analytics-status-health

Formula
percentage of analytics rows whose mapped status label is `Complete`
calculation

analytics-average-monthly-profit

Formula
totalMetrics.profitLoss / 6
calculation

email-search-date-reset

Formula
when `email` is non-empty, the hook forces `startDate = 2022-01-01`
Grid columns

Columns

field

ID

field

User email

field

Game identifier

field

Game name

field

Provider

Row cell can also append `aggregatorName` in parentheses.

Note
Row cell can also append `aggregatorName` in parentheses.
field

Type

field

Amount

Data Type
amount
field

Bonus amount

Data Type
amount
field

Real amount

Data Type
amount
field

Currency

field

Status

Backend row status is numeric (`0..3`) and FE maps it to `Pending`, `Complete`, `Failed`, or `Rollback`.

Note
Backend row status is numeric (`0..3`) and FE maps it to `Pending`, `Complete`, `Failed`, or `Rollback`.
field

Date

rendered with UTC hint in the table header

Note
rendered with UTC hint in the table header
field

Inline details

Filter dictionary

Filters

field

Search email

Type
text
field

Currency

Type
select
field

Type

Type
select
field

Status

Type
select
field

Provider

Type
select
field

Date start

Type
date
field

Date end

Type
date
Summary cards

Summary cards

field

Total Transactions

field

Total Bets

field

Total Wins

field

Profit/Loss

View modes

View modes

field

Real-Time View

field

Monthly Analytics

Metric dictionary

Metrics

metric

Total Transactions

Count of transaction rows in the current real-time result set.

Aliases
casino transaction count, total game transactions
Filter Dependencies
email, currency_code, transaction_type, status, provider, start_date, end_date
Verification Status
verified_fe_only
Last Verified At
2026-04-14
metric

Total Bets

Sum of bet rows after frontend EUR conversion.

Aliases
total bet amount, casino bets eur
Frontend Transforms
EUR conversion through the currencies hook
Verification Status
verified_fe_only
Last Verified At
2026-04-14
metric

Total Wins

Sum of win rows after frontend EUR conversion.

Aliases
total win amount, casino wins eur
Frontend Transforms
EUR conversion through the currencies hook
Verification Status
verified_fe_only
Last Verified At
2026-04-14
metric

Profit/Loss

Difference between total bet amount and total win amount in the current row set.

Aliases
casino pnl, betting profit loss
Frontend Transforms
derived from total bets and total wins after EUR conversion
Verification Status
verified_fe_only
Last Verified At
2026-04-18
metric

Total Transactions (6 Months)

FE-derived count of rows in the widened 6-month analytics dataset.

Aliases
casino monthly analytics total transactions
Verification Status
verified_fe_only
Last Verified At
2026-04-18
metric

Average Monthly Profit

FE-derived `profitLoss / 6` card shown in monthly analytics mode.

Aliases
casino average monthly profit
Verification Status
verified_fe_only
Last Verified At
2026-04-18
metric

Top Provider

Provider with the highest transaction share in the FE-derived monthly analytics dataset.

Aliases
casino top provider
Verification Status
verified_fe_only
Last Verified At
2026-04-18
metric

Status Health

FE-derived completion-rate card based on the percentage of analytics rows mapped to `Complete`.

Aliases
casino completion rate, casino status health
Verification Status
verified_fe_only
Last Verified At
2026-04-18
Operational notes

Notes

item

The mounted page does not call `/api/admin/get-casino-transactions-analytics`; `Monthly Analytics` is FE-derived from the list hook with a widened 6-month window.

item

The list hook resets `startDate` to `2022-01-01` whenever `email` is non-empty.

item

Filters send string values like `pending` and `completed`, while loaded rows return numeric status codes mapped by the FE row component.

Related references

Related pages

pageTransactions / Banking

Filterable banking transaction dashboard with weekly summary cards, backend stats charts, CSV export, and a detailed ledger-style table.

pageTransactions / Casino Transaction Detail

Read-only detail page for a single casino transaction identified by `casinoTransactionId`.

pageTransactions / Failed Deposit

Triage grid for failed deposit rows, their provider reasons, and the error-group classification used for later analysis.

pageTransactions / Failed Deposit Error Groups

Configuration surface for creating, editing, importing, exporting, and assigning failed-deposit error groups and their reasons.

pageTransactions / KYC

Action-heavy KYC document queue exposed under the transactions area for document review, verification, re-request, download, and third-party checks.

pageTransactions / Shared Detail Modals

Reusable read-only transaction payload modals for banking-style rows on banking, withdrawals, and failed-deposit surfaces.