Compliance Engine
Multi-jurisdiction compliance with 30+ regulatory regimes, PEP/EDD screening, offering-type gating, and federated entity management.
Compliance Engine
The Lux compliance engine provides pre-trade gating across 30+ regulatory jurisdictions. Every order is validated against the submitting account's compliance status before reaching the matching engine.
Jurisdiction Support
Per-Jurisdiction KYC Minimums
Each jurisdiction enforces specific KYC levels depending on the asset class:
| Jurisdiction | Crypto | Equities | Derivatives | Regulator |
|---|---|---|---|---|
| US | Standard (2) | Standard (2) | Enhanced (3) | SEC/FINRA |
| UK | Standard (2) | Standard (2) | Standard (2) | FCA |
| EU | Standard (2) | Standard (2) | Standard (2) | MiFID II/MiCA |
| SG | Standard (2) | Standard (2) | Enhanced (3) | MAS |
| HK | Enhanced (3) | Standard (2) | Enhanced (3) | SFC |
| IM | Basic (1) | Standard (2) | Standard (2) | FSA |
| AE | Standard (2) | Standard (2) | Enhanced (3) | DFSA/VARA |
| JP | Enhanced (3) | Standard (2) | Enhanced (3) | JFSA |
| SA | Standard (2) | Enhanced (3) | Enhanced (3) | CMA |
| KY | Basic (1) | Standard (2) | Standard (2) | CIMA |
KYC Levels: 0 = None, 1 = Basic (email/phone), 2 = Standard (ID verified), 3 = Enhanced (accredited/professional)
PEP Screening
Politically Exposed Persons require Enhanced Due Diligence before trading:
| PEP Status | Requirements | Trading Allowed |
|---|---|---|
direct | EDD completed + Source of Funds verified | Yes (after clearance) |
related | EDD completed + Source of Funds verified | Yes (after clearance) |
former | Standard KYC sufficient (cooled off) | Yes |
| (none) | Standard flow | Yes |
Source of Funds Categories
employment— Salary/wagesinvestments— Returns from portfolioinheritance— Inherited wealthbusiness— Business incomepension— Retirement fundsproperty— Real estate proceedsother— Requires manual review
FATF High-Risk Countries
Accounts from FATF high-risk jurisdictions require Enhanced KYC (level 3) regardless of asset class. The high_risk_country flag is set during account registration and triggers automatic escalation.
Adverse Media
Accounts flagged for adverse media (adverse_media: true) must have edd_required: true before trading is permitted. This is typically set after screening against adverse media databases.
Offering Types
The compliance engine supports offering-type gating for securities offerings:
US (SEC)
| Offering | Requirements |
|---|---|
| Reg D 506(b) | Accredited investors only (up to 35 non-accredited) |
| Reg D 506(c) | Accredited investors only (verified) |
| Reg S | Non-US persons only |
| Reg A+ | All investors (Tier 1: 75M cap) |
| Reg CF | All investors ($5M cap, income-based limits) |
UK (FCA)
| Offering | Requirements |
|---|---|
| Private Placement | Professional/institutional only |
| Public Offering | Standard KYC |
EU (MiFID II / MiCA)
| Offering | Requirements |
|---|---|
| MTF/OTF | Standard KYC |
| MiCA | Crypto-specific compliance |
MENA
| Offering | Requirements |
|---|---|
| DFSA (UAE) | Professional client status |
| Saudi CMA | Qualified investor |
| Bahrain CBB | Standard KYC |
| Qatar QFC | Professional client |
| Kuwait CMA | Licensed investors |
| Oman CMA | Standard KYC |
IOM / Crown Dependencies
| Offering | Requirements |
|---|---|
| IOM FSA | Basic KYC (crypto), Standard (securities) |
Reg CF Annual Limits
For US Reg CF offerings, the compliance engine enforces SEC annual investment limits:
If (annualIncome < $124K AND netWorth < $124K):
limit = max($2,200, 5% of lesser(income, netWorth))
Else:
limit = 10% of lesser(income, netWorth)
Hard cap: $124,000 per yearAPI
Register Account Compliance
POST /api/v1/accounts/{accountId}/register
{
"jurisdiction": "IM",
"country": "IM",
"client_type": "individual",
"kyc_level": 2,
"aml_cleared": true,
"accredited": false,
"professional": false,
"sanctioned": false,
"max_order_size": 100000,
"daily_limit": 500000,
"pep_status": "",
"source_of_funds": "employment",
"sof_verified": true,
"adverse_media": false,
"high_risk_country": false,
"edd_required": false,
"tax_residency": "IM",
"entity_id": "lux-im-001"
}Bank Auto-Sync
The Bank API's ComplianceSyncService automatically pushes compliance status to the CEX on:
- Account registration
- Risk assessment updates
- KYC level changes
- PEP screening results
Scheduled full sync runs every hour.
Source
- CEX compliance:
luxfi/cex/pkg/compliance/(Go) - Bank sync:
luxfi/bank/app/api/src/trading/compliance-sync.service.ts(TypeScript) - Bank models:
luxfi/bank/pkg/models/src/users/entities/account.entity.ts - Tests: 48 passing tests across all jurisdictions, offering types, PEP/EDD, and federation
How is this guide?
Last updated on