Operator guideEN

Transactions / Failed Deposit Error Groups

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

How to use this guide

Start with the main guide

Follow the explanation and examples first. Extra definitions and formulas are available below when you need them.

What This Surface Shows

This page manages the grouping layer used by the failed-deposit queue.

Operators use it to:

  • create a new error group
  • edit group name and description
  • assign failed reasons to a group
  • remove already assigned reasons from a group
  • export or import the whole grouping configuration

How To Read It

Each group is shown as an editable card. The page is not a classic table; it behaves more like a configuration manager.

The main operator objects are:

  • group metadata
  • assigned reasons
  • unassigned reasons available for mapping

The page always loads:

  • groups with includeReasons=true
  • unassigned reasons with unassignedOnly=true

That means the assignment selector is not a generic reason browser. It is a working list of reasons that are currently free for mapping plus the reasons already attached to the current group.

Main Actions

  • Refresh
  • Export
  • Import
  • Create Group
  • Edit Error Group
  • Assign failed reasons
  • Remove assigned reason

Action Behavior

Refresh reloads both configured groups and currently unassigned reasons. Because the unassigned-reasons request can auto-seed recent failed deposit reasons, refresh can make newly discovered reasons appear in the selector.

Export downloads a JSON snapshot containing group metadata and assigned reason mappings.

Import reads a local JSON file and requires a top-level groups array before it posts anything. Backend import is merge/upsert behavior: it can create missing groups/reasons, update existing metadata, and reassign existing reasons by normalized reason.

Create Group and Edit use the same dialog. Group Name is required; empty Description is stored as null. Duplicate names are rejected case-insensitively.

Assign failed reasons saves the whole selected reason set for that group. Removing a chip is implemented the same way: the page submits the remaining reason ids.

Common Questions

Is this page changing transaction rows directly?

No. It changes the grouping dictionary used to classify failed reasons. The transaction queue then shows those group names on its own list surface.

Does assigning reasons append to a group?

No. The assignment save is a full replacement. The backend first clears the group's existing error_group_id links and then writes back the selected reason ids.

Why does import/export exist here?

Because the grouping model is treated as maintainable operational configuration rather than as a one-off lookup table.

Known caveats

  • This page mixes list, form, and relation-management behavior in one route.
  • Assigned reasons are managed through a grouped multi-select and removable chips, not inline in the failed-deposit list.
  • There is no delete-group action in the current manager.
  • The source read layer supports search, pagination, date range, provider, and currency filters, but the current manager does not expose those controls on this route.
  • Loading unassignedOnly=true reasons can trigger source auto-seeding from recent failed deposit rows before the reason selector is shown.
  • Import is file-based. The page accepts only JSON and requires the parsed payload to contain a top-level groups array.
  • Export downloads a JSON snapshot with an ISO timestamp in the filename.
  • Removing a reason chip is not a dedicated delete endpoint; it saves the remaining membership through the same assignment flow.

Page actions, source read/write behavior, and the grouping schema have been traced. Full replacement assignment, import merge/upsert behavior, export shape, and unassigned-reason auto-seeding are confirmed.

More details

Definitions and formulas

Open only the section you need. The relevant section opens automatically when you request help for a specific item on screen.

Calculations9 topicsOpen details

Reason selector options

Each group selector combines reasons already assigned to that group with currently unassigned reasons.

Formula
Frontend maps the group's current `reasons` plus the unassigned reasons response into one option map keyed by error reason id, then sorts by provider label and reason text.

Provider label and color

Reason options and chips are grouped/colored by payment provider.

Formula
Empty provider values display as `Unspecified`. Chip color is a deterministic frontend hash of the provider label.

Unassigned reasons auto-seed

New failed reasons can appear in the assignment selector even when nobody created them manually in this manager.

Formula
Loading failed-deposit reasons with `unassignedOnly=true` can trigger backend seeding from recent failed `transaction_bankings` rows before the selector options are returned. The default lookback is 730 days unless request filters override the window.

Create group uniqueness

New group names must be unique regardless of case.

Formula
Backend trims the submitted name, checks for an existing group with case-insensitive name equality, and creates a non-default group only when no duplicate exists.

Update group uniqueness

Editing a group can rename it, but not to another group's name.

Formula
Backend loads the group by id, trims the submitted name when present, and rejects case-insensitive duplicates where the matching group id is different from the edited group id.

Assignment replaces group membership

Treat selector changes and reason-chip removal as full replacement, not as additive patch or dedicated delete.

Formula
Assigning reasons first clears the current group's `error_group_id` links and then writes the submitted `reasonIds` back to that group inside one transaction.

Export JSON shape

Export is a portable snapshot of groups and their assigned reasons.

Formula
Backend exports UTC `exportDate`, `groupCount`, `reasonCount`, and groups ordered by name. Each group includes name, description, isDefault, and reasons ordered by normalized reason.

Import upsert behavior

Import is a merge/update workflow, not a destructive reset of all existing groups.

Formula
Import matches groups by case-insensitive name and reasons by normalized reason. Missing groups and reasons are created, existing group metadata can be updated, and existing reasons can be reassigned to imported groups.

Import normalization

Import cleans string payloads before matching or writing records.

Formula
The source strips control characters, trims whitespace, collapses internal whitespace, lowercases normalized reasons, truncates reason text to 500 characters, and defaults missing reason source to `imported`.
Notes2 topicsOpen details

This manager edits the grouping dictionary used by the failed-deposit list; it does not directly rewrite transaction rows.

The current manager does not expose source-supported search/date/provider/currency filters for reasons.

More help

Related pages

Transactions / Banking

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

Transactions / Casino

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

Transactions / Casino Transaction Detail

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

Transactions / Failed Deposit

Triage grid for failed deposit rows, provider failure reasons, normalized error groups, raw detail inspection, and CSV export.

Transactions / KYC

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

Transactions / Shared Detail Modals

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