Operator guideENcrmsettingswithdrawalsform

Automatic Withdrawal / Form

Create and edit form for one automatic-withdrawal rule, including thresholds, KYC, countries, methods, tags, and per-currency limits.

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 form does

This form creates or updates one shared automatic-withdrawal rule. It stores the qualification thresholds and restriction sets that decide whether a withdrawal can be processed automatically.

When to use it

  • add a new shared rule
  • adjust eligibility thresholds on an existing rule
  • change methods, countries, or tag restrictions
  • change whether the rule is active and where it sits in the priority order

Main sections

  • rule identity and description
  • rule identity, description, priority, and active state
  • Requirements tab with KYC and NGR threshold inputs
  • Limits tab with the total-withdrawal cap, time-period builder, and per-currency rows
  • Restrictions tab with allowed countries and payment methods
  • Tags tab with required and restricted tag sets

Validation and operator rules

  • Rule Name is the only required text field
  • Priority must stay >= 0
  • Maximum Total Amount per Period must stay >= 0; 0 means unlimited
  • required and restricted tags cannot overlap
  • empty threshold fields mean that side of the range is not restricted
  • the visible Days, Hours, and Minutes inputs all write into one stored withdrawalPeriodMinutes value
  • currency rows with no selected currency or no positive amount are dropped before the request is sent
  • the back arrow and Cancel both return to the list without saving

Known caveats

  • The form captures the shared rule payload only. Per-customer rules are managed through the dedicated customer-rule flows, not by creating a shared rule here.
  • Priority matters only when multiple active rules can match the same withdrawal.
  • Currency configuration is optional, but if used it should be complete enough to make the rule understandable for operators.
  • The backend model also stores paymentDelayMinutes, merchants, and isValid, but the current shared-rule form does not render controls for them.
  • Create always sends merchants: [] for backward compatibility.
  • The edit page rejects a missing or non-numeric route id before the form mounts and shows Invalid rule ID.
  • The backend detail route enriches the rule with tag, payment-method, and currency metadata, but the form edits only the shared persisted rule fields.

Verification status

  • status: verified_backend
  • FE create and edit behavior checked from AutomaticWithdrawalForm
  • backend create, update, and detail behavior checked from AutomaticWithdrawalController plus createRule, updateRule, and getRule
Calculation notes

Calculations

calculation

Create versus edit shell

Verification
verified_backend
Logic
Create mounts `AutomaticWithdrawalForm` with no `ruleId`., Edit mounts the same component with `ruleId` and `isEdit`., The submit button label changes from `Create Rule` to `Update Rule`., Both successful paths navigate back to `/settings/automatic-withdrawal` and show a success snackbar.
calculation

Invalid route-id guard

Verification
verified_fe_only
Logic
The edit page parses the dynamic route segment with `parseInt(id as string, 10)`., If `id` is missing or `NaN`, the page renders `Invalid rule ID` and does not mount the form or the detail hook.
calculation

Hidden backend fields and defaults

Verification
verified_backend
Logic
Create defaults are `kycRequired: true`, `maxAmountPerCustomer: 0`, `withdrawalPeriodMinutes: 1440`, `paymentDelayMinutes: 0`, `isActive: true`, and `priority: 0`., The backend model stores `paymentDelayMinutes`, `merchants`, and `isValid`, but the current shared-rule form does not render visible controls for them., Submit still carries `paymentDelayMinutes` from form state and forces `merchants: []` into the payload., Edit reset preserves backend values for hidden fields that already exist on the rule payload.
calculation

Withdrawal period triplet

Verification
verified_backend
Logic
The visible `Days`, `Hours`, and `Minutes` controls are helper inputs around one stored `withdrawalPeriodMinutes` integer., Each helper recalculates the full minute total locally and writes it back through `setValue('withdrawalPeriodMinutes', ...)`., The helper text echoes the live total as `Total period: X minutes`., Backend create and update services require the final stored period to be greater than or equal to `1`.
calculation

Tag overlap protection

Verification
verified_backend
Logic
The FE hides a tag from `Required Tags` once it has been selected in `Restricted Tags`, and vice versa., Submit still rechecks for overlap and shows an error snackbar if the operator somehow reaches an invalid combination., Backend create and update services also reject overlapping tags, invalid tags, and duplicate tag arrays.
calculation

Currency row filter and validation

Verification
verified_backend
Logic
`Add Currency Limit` appends a blank row with `id: 0` and `max_amount: 0`., Submit removes rows that do not have both a selected currency id and a positive `max_amount`., Backend create and update services separately reject duplicate currency ids and invalid currencies.
Field dictionary

Fields

field

Rule Name

Operator-facing name for the rule.

Group
identity
Data Type
string
field

Priority

Higher numeric values win when more than one active shared rule can match the same withdrawal.

Group
identity
Data Type
integer
field

Active

Controls whether the rule participates in automatic-withdrawal evaluation.

Group
identity
Data Type
boolean
field

Description

Free-text note that helps operators understand why the rule exists.

Group
identity
Data Type
string
field

KYC Verification Required

Requires the customer to satisfy KYC before the rule can pass.

Group
requirements
Data Type
boolean
field

Minimum Lifetime NGR

Lower lifetime Net Gaming Revenue threshold a customer must meet before the rule can match.

Group
requirements
Data Type
amount
field

Maximum Lifetime NGR

Upper lifetime Net Gaming Revenue threshold allowed for the rule.

Group
requirements
Data Type
amount
field

Minimum 30-Day NGR

Lower Net Gaming Revenue threshold for the last 30 days.

Group
requirements
Data Type
amount
field

Maximum 30-Day NGR

Upper Net Gaming Revenue threshold for the last 30 days.

Group
requirements
Data Type
amount
field

Maximum Total Amount per Period

Maximum total withdrawal amount, expressed in EUR, that one customer can process automatically inside the configured period.

Group
limits
Data Type
amount
Caveats
The validation logic sums withdrawals in EUR for the rule period., Setting the value to `0` means unlimited.
field

Days

Day fragment of the stored withdrawal period.

Group
limits
Data Type
integer
field

Hours

Hour fragment of the stored withdrawal period.

Group
limits
Data Type
integer
field

Minutes

Minute fragment of the stored withdrawal period.

Group
limits
Data Type
integer
field

Total period

Live helper text showing the combined total minutes that will be saved for the rule.

Group
helper
Data Type
duration
field

Currency

Currency selected for one per-currency withdrawal-cap row.

Group
currency-limits
Data Type
enum
field

Maximum Amount

Maximum amount allowed for the selected currency row.

Group
currency-limits
Data Type
amount
field

Allowed Countries

Country allow-list for the rule.

Group
restrictions
Data Type
string-list
Caveats
Leaving the field empty allows all countries.
field

Payment Methods

Allowed payout methods for the rule.

Group
restrictions
Data Type
integer-list
Caveats
Leaving the field empty allows all payment methods.
field

Required Tags

Tags the customer must have before the rule can match.

Group
tags
Data Type
integer-list
Caveats
The customer must have all selected tags.
field

Restricted Tags

Tags that block the customer from matching the rule.

Group
tags
Data Type
integer-list
Caveats
The customer must not have any selected restricted tag.
Operational notes

Notes

item

The same FE form component handles both create and edit mode. The page title and submit label change, but the field inventory is the same.

item

The edit route parses `id` with `parseInt(...)`. Missing or non-numeric ids stop on `Invalid rule ID` before the form mounts.

item

The FE stores one `withdrawalPeriodMinutes` value but renders it through three helper inputs: `Days`, `Hours`, and `Minutes`.

item

Shared-rule submit filters out incomplete currency rows before the request is sent.

item

Create always sends `merchants: []` for backward compatibility.

item

The backend model and detail service also expose `paymentDelayMinutes`, `merchants`, `isValid`, `merchantDetails`, `paymentMethodDetails`, `requiredTagDetails`, `restrictedTagDetails`, and `customerCount`, but the current shared-rule form does not render controls for those extra fields.

Related references

Related pages

pageAutomatic Withdrawal / Detail

Management workspace for automatic withdrawal, combining the rules register with processed history and the non-qualified withdrawal queue.

pageAutomatic Withdrawal / List

Rule register for automatic-withdrawal logic, with search, status filtering, row actions, and create navigation.

pageAutomatic Withdrawal Overview

Operator guide for automatic-withdrawal rules, the create and edit flow, and the management workspace that also exposes withdrawal history and non-qualified withdrawals.

pageAffiliate Deals / Dashboard

Deal-period performance report that combines traffic, deposit, GGR, NGR, payout, and ROI metrics for affiliate deals.

pageAffiliate Deals / Form

Create and edit form for affiliate deals, including PID, date window, commercial terms, and responsible person.

pageAffiliate Deals / List

Searchable table of affiliate deal rows with PID filter, create action, dashboard shortcut, and edit/delete row actions.