Skip to content

Gaming Sessions in IZI

Published: · IZI Team

A session is the core unit of billing in an IZI computer club: a time interval tied to a player, PC, and tariff — the foundation of everything a club earns. All activity at a PC — payment, device switch, auto-renewal, refund — is tracked at the session level. Club analytics are built from session data: duration, revenue per session, ARPU. Understanding the session lifecycle helps operators handle non-standard situations quickly and configure tariffs correctly.

A session in IZI is an aggregate entity: it stores when the player sat down (plannedStartAt / actualStartAt), when they left (actualEndAt), which PC they used (SessionDevice), and which tariff applied at each moment (SessionPlayerTariff).

The session lifecycle has four statuses:

StatusMeaningWhen it occurs
PENDINGSession created, start planned in the futureOperator created an advance booking
ACTIVEPlanned start time has arrived, player has not pressed Start yetAuto-transition by time
STARTEDPlayer is active, PC unlocked, time is runningAfter pressing Start
ENDEDSession complete, receipt generatedAuto by tariff or manual end

A separate CANCELLED status means cancellation before actual start — no charges apply and the tariff is returned to balance per the refund policy.

Status transitions are strictly defined: from PENDING you can move to STARTED, ENDED, or CANCELLED; from STARTED — only to ENDED. There are no reverse transitions.

IZI has three channels for creating and starting sessions. The mechanics are identical; what differs is who initiates the operation.

Operator via CRM. The most common scenario. The operator opens the Hall section, selects a PC, links a player, selects a tariff from paid orders. CRM creates the session (createSession) and starts it (startSession). The PC receives an unlock command via the MQTT broker. The entire process takes a few clicks and seconds.

Self-start via mobile app. The player uses their smartphone to select a club, purchase a tariff, choose a free PC, and press Play. The session is created and started without operator involvement. Access rights are checked at the API level: a player can only manage their own session (assertSamePlayer).

Post-pay mode (open-ended). In post-pay clubs, sessions are created in OpenEnded mode: the player sits down, no upfront payment needed. OPEN_ENDED means billing is settled when the session ends — IZI invoices based on actual time spent. Auto-renewal is not needed in this mode; the system manages extensions automatically.

Each session is linked to one or more tariff segments (SessionPlayerTariff). Each segment has precise time boundaries (plannedStartAt / plannedEndAt) and a reference to the purchased tariff (playerTariffId).

Three core billing models:

  • Hourly tariff. The player buys N hours. The session closes when the tariff is exhausted, unless auto-renewal is enabled.
  • Multipass. A block of hours with an expiry condition (e.g., 10 hours within 30 days). One multipass can cover multiple sessions — each session draws from the shared pool.
  • Subscription / unlimited. A tariff with a usage schedule (e.g., daily unlimited 10am–10pm). The session is active within the schedule; going beyond moves the PC to waiting mode.

For detailed configuration of each type, see Tariffs and Pricing.

When the tariff changes during a session (auto-renewal or manual extension), a new SessionPlayerTariff segment is created with new time boundaries. Billing is calculated per segment independently — the final receipt sums all segments.

After start, the operator sees all active sessions in real time in the Hall section. Available actions:

Extension without interruption. The operator adds a tariff to an active session via CRM — a new segment is created, the PC does not reboot. The player continues playing without disruption.

Auto-renewal. If the player has auto-renewal enabled and a compatible tariff on their balance, the system automatically adds a segment when the current one expires. The operator sees in the hall that the session was extended without interrupting the player.

Transfer to another PC. The switchSessionDevice operation — the player changes seats, the session continues. IZI closes the link to the old PC (actualEndAt = now), opens it to the new one. Both PCs receive a reconcile command. The time counter is not interrupted.

Ending. Manual ending is available to the operator (SessionEdit permission) and the player via the app. On ending, IZI writes actualEndAt, generates the final receipt, and sends a session_ended event for analytics and other modules.

Cancellation. Only available for sessions that have not started (actualStartAt = null). Requires SessionDelete permission. On cancellation, the tariff is returned to balance per the tariff’s refund policy.

Sessions close in two ways: automatically or manually.

Auto-close occurs when the tariff is exhausted (coverageUntilAt < now) and auto-renewal is off or found no suitable tariff. The system writes actualEndAt, the PC enters waiting mode, and CRM notifies the operator via real-time subscription.

Manual close — the operator or player initiates endSession. IZI checks the status (session must not be in ENDED / CANCELLED), writes the end time and reason (endedReason: ManualByAdmin or ManualByPlayer), and generates the final billing receipt across all segments.

The receipt includes:

  • all tariff segments with actual time boundaries
  • amounts per segment accounting for zone pricing
  • bonus deductions if the player paid partially with bonuses
  • resulting cash amount

Refunds after closing are handled through the order — the refund policy is set at the tariff level separately for each product.

Each session generates a set of metrics for club analytics.

Session duration — the difference between effectiveEndAt and effectiveStartAt. IZI stores both as computed fields of the view (sessions_view), so duration is always consistent even if the session closed non-standardly.

Revenue per session — the sum of all billing transactions linked to the session. Enables calculating average session revenue as an analytic metric, separate from average visit revenue.

ARPU per session — revenue per session divided by the number of unique sessions in the period. A more precise metric than ARPU per visit for clubs where one player plays multiple times a day.

Hall utilization — ratio of session hours to available PC hours in the period. Calculated from actualStartAt / actualEndAt of all STARTED/ENDED sessions on each device.

Tariff coverage (coverageStatus) — an operational metric for the operator: shows for each active session how far the tariff covers the remaining time. Helps proactively offer an extension before the session closes on expiry.

Historical session analytics are available in the Session Report section of CRM, with filtering by PC, player, tariff, and date; export is available for external tools.


Related: Tariffs and Pricing · Hall Real-Time · Top-Up Bonus · What Is IZI · Player Mobile App

Session mechanics are described based on IZI X API production code (sessions package). Specific UI steps may differ slightly depending on the CRM version and club configuration.

Frequently asked questions

What is a gaming session in IZI?

A session is the unit of gaming time tracking: linked to a specific player, PC, and tariff. Club billing is calculated per session — while a session is open, time runs; when it closes, a receipt is generated. One player can have only one active session on a specific PC at a time.

How does a session differ from an order?

An order is a financial document: a list of purchased tariffs and the amount due. A session is the gameplay process: when the PC started, how much time actually elapsed, on which device. One order can generate multiple sessions (bought 3 hours, played in two parts), while one session is always tied to exactly one order.

How do you start a session from CRM?

In the Hall section, find the PC, select the player, choose a tariff from purchased orders, and click Start. CRM creates the session in PENDING status, then immediately moves it to STARTED — the PC unlocks. The whole process takes seconds; no manual action on the PC is needed.

Can a player start a session themselves via the app?

Yes. Through the IZI mobile app, the player selects a club, purchases a tariff, and starts a session independently — without an admin. The PC unlocks after confirmation. This mode is called self-start; in post-pay clubs the session starts immediately and payment is collected on exit.

What happens when paid time runs out?

The system checks tariff coverage (coverageStatus). If auto-renewal is enabled, the PC stays on and the system automatically extends the session using the player's next available tariff. If auto-renewal is off and the tariff expires, the PC enters a warning mode and the cashier sees this in the hall view.

Can a player extend a session without leaving their seat?

Yes, via auto-renewal. If the player has a compatible tariff on their balance and auto-renewal is enabled, the tariff switch happens automatically when the current one expires — no reboot. An operator can also manually add a tariff to an active session from CRM without interrupting gameplay.

What is a session pause and why does it exist?

In IZI, a pause is represented by the ACTIVE status — the session exists with a planned start time that has arrived, but the player hasn't pressed Start yet. After pressing Start, the session moves to STARTED and actual time counting begins.

Can a session be transferred to a different PC?

Yes, via the switchSessionDevice operation. An operator in CRM or the player via the app specifies a new PC — IZI closes the link to the old device and opens it to the new one within the same session. The time counter is uninterrupted and the tariff stays the same.

How is the cost calculated when the tariff changes during a session?

Each tariff segment within a session is stored separately (SessionPlayerTariff) with precise time boundaries. Billing is calculated per segment independently: first 2 hours at tariff A, next hour at tariff B. The final receipt is the sum of all segments.

What does the operator see if a PC freezes or stops responding?

In the Hall section, each PC shows the session's coverageStatus. If the PC stops communicating via MQTT, its device status changes to 'not responding'. The operator sees this immediately as a color indicator without refreshing the page.

Can a session be cancelled?

Yes, but only before the actual start (while the session is in PENDING or ACTIVE status, meaning actualStartAt is null). Once the player has pressed Start, cancellation is unavailable — only ending the session is possible. Cancellation requires the SessionDelete permission in CRM.

How is a refund processed for a session?

Refunds are handled through the order linked to the session. The refund policy is set at the tariff level: 'return remainder to bonus balance', 'burn remainder', or 'refund in cash'. Full refunds are available if the tariff has not been used or has been used partially according to the policy.

Is there a daily time limit per PC?

There is no technical time limit at the session level — a session runs as long as the tariff covers the time or auto-renewal is active. Restrictions are set through the tariff schedule (e.g., a night tariff available only 11pm–7am) or through the club's zone limits. There is no separate daily counter entity in IZI.