Client Management & KYC

ForexFox stores a complete KYC record for every client. Identity documents, tax residency, source of funds, profession, PEP status, and an AI risk score field are all captured in a structured model. The same record powers compliance rule evaluation, transaction history retrieval, and client-level blocking — from one unified data source.

Technical highlights

  • Full identity model: name, birth date, birth country and city, nationality, gender — all structured and queryable.
  • Document management: type (passport, ID card, residence permit, driver's licence), number, and expiration date per client.
  • KYC data completeness: address, phone, email, tax residence country, and TIN/NIF fields captured per client.
  • PEP detection: is_pep flag with free-text pep_details for politically exposed person documentation.
  • AI risk scoring: risk_score_ai (DECIMAL 5,2) field ready for model output or manual risk classification.
  • Financial profile: source_of_funds, profession_category, and estimated_annual_income for AML context.
  • Client blocking: is_blocked flag with block_reason for operational or compliance-driven restrictions.
  • Lifetime total: client_lifetime_totals table tracks cumulative EUR volume for lifetime threshold rules.

A KYC data model built for exchange office compliance requirements

ForexFox captures every field that AML/CFT compliance requires for exchange office operations: full identity data, two forms of document with expiration date, physical address, tax residence country with TIN/NIF, source of funds, and profession category. These are not optional fields added as an afterthought — they are structured columns in the client model, indexed where relevant, and directly consumed by the compliance engine when evaluating required_fields rules. A client record in ForexFox is designed to pass supervisory inspection, not just complete a form.

PEP status and AI risk scoring integrated into the same record

Each client carries an is_pep boolean and a free-text pep_details field for documenting the nature of political exposure. A numeric risk_score_ai field (DECIMAL 5,2) is available for output from a risk classification model or for manual assignment by a compliance officer. Both fields feed directly into compliance rule logic — a high risk score or a PEP flag can trigger enhanced due diligence paths, additional required fields, or approval routing, without any custom development. The infrastructure for risk-based client management is already in place.

Lifetime transaction tracking for cumulative threshold compliance

ForexFox maintains a client_lifetime_totals table that accumulates the total EUR volume transacted by each client across their entire relationship. This feeds directly into compliance rules scoped to lifetime_client, enabling thresholds that are impossible to enforce without a persistent cumulative record. Daily totals are maintained separately in tx_daily_totals for rolling-period rules. Both tables are updated atomically with each transaction, so threshold evaluations always reflect current exposure — not yesterday's batch.

Client blocking with documented reasons

Any client can be blocked by an admin or root user, with a mandatory reason recorded in the block_reason field. Blocked clients cannot be used in new transactions — the status is checked at the counter before any operation is initiated. The block reason is visible to compliance officers and managers for review decisions, and the full audit trail shows when the block was applied and by whom. This gives operations teams a controlled, traceable mechanism for handling high-risk clients without deleting records or losing transaction history.

What's included

Full identity model: name, birth date, birth country, nationality, gender
Document capture: type, number, expiration date (passport, ID card, residence permit, driver's licence)
Address, phone, email fields
Tax residence country and TIN/NIF (NIF)
Source of funds and profession category
Estimated annual income bracket
PEP (politically exposed person) flag and details field
AI risk score field (risk_score_ai, DECIMAL 5,2)
Client types: regular, VIP, corporate
Client blocking with documented reason
Lifetime EUR volume tracking (client_lifetime_totals)
Paginated transaction history per client
UUID per client for external system integration
Search by name, ID, email with type filter

Use cases by role

Counter Operator

Identify and retrieve client records quickly during high-volume counter interactions.

  • Search clients by name, ID number, or email in a single query with optional type filter.
  • Create a new client record with full KYC data at the point of the first transaction.
  • Update address, phone, or document details without losing transaction history.
  • See the compliance status of a client — blocked status and reason — before starting a transaction.

Compliance Officer

Maintain KYC data quality and apply risk classification across the client base.

  • Flag politically exposed persons with is_pep and capture relationship details in pep_details.
  • Record source of funds and profession category for enhanced due diligence profiles.
  • Assign or update risk_score_ai based on model output or manual review.
  • Block high-risk clients with a documented reason, preventing future transactions until review.

Operations Manager

Use client-level data to drive compliance rules and monitor exposure per client.

  • Review lifetime transaction totals per client for cumulative AML threshold monitoring.
  • Access full transaction history per client with pagination for period-specific analysis.
  • Cross-reference tax residence country and TIN for fiscal reporting obligations.
  • Manage corporate, VIP, and regular client segments separately for differentiated service.

Talk to a ForexFox specialist

See how this solution maps to your operational constraints and compliance requirements.

See the CRM in a demo