Lux Financial
Guides

Compliance & Screening

Sanctions screening, KYC/KYB verification, transaction monitoring, and ongoing compliance workflows.

Compliance & Screening

Regulatory compliance tools including sanctions screening against 25+ global lists, KYC/KYB workflows, and automated transaction monitoring.

Sanctions Screening

Data Sources

RegionSources
United StatesOFAC SDN, OFAC Consolidated, BIS Denied Persons, FinCEN
European UnionEU FSF, Belgian Financial Sanctions, Dutch DNSL
United KingdomOFSI Consolidated, FCDO Sanctions
InternationalUN Security Council, INTERPOL Red Notices
Asia-PacificAustralian DFAT, Singapore MAS
AmericasCanadian SEMA, Argentine REPET, Mexican SAT 69.B

Customer Onboarding

Screen every customer before account creation:

import { Lux } from '@luxfi/bank-sdk';

const lux = new Lux({ apiKey: process.env.LUX_API_KEY });

const screening = await lux.sanctions.screen({
  name: customer.fullName,
  type: 'person',
  dateOfBirth: customer.dateOfBirth,
  country: customer.country,
  sources: ['SDN', 'UN', 'FSF', 'OFSI'],
  minScore: 85
});

if (screening.matchCount > 0) {
  // Flag for compliance review
} else {
  // Create customer
  await lux.customers.create({ ...customer, sanctionsScreeningId: screening.id });
}

Batch Screening

const results = await lux.sanctions.screenBatch({
  cases: customers.map(c => ({
    id: c.id,
    name: c.fullName,
    type: c.entityType,
    dateOfBirth: c.dateOfBirth,
    country: c.country
  })),
  sources: ['SDN', 'UN', 'FSF', 'OFSI', 'SECO', 'DFAT'],
  minScore: 80
});

Transaction Screening

const screening = await lux.sanctions.screen({
  name: payment.beneficiary.name,
  type: payment.beneficiary.type,
  country: payment.beneficiary.country
});

if (screening.matchCount > 0) {
  throw new PaymentBlockedError({ reason: 'sanctions_match', screeningId: screening.id });
}

Ongoing Monitoring

Subscribe to sanctions list updates via webhooks and re-screen active customers when lists change.

KYC/KYB Verification

Individual (KYC)

// Document verification
const doc = await lux.kyc.verifyDocument({
  customerId: customer.id,
  documentType: 'passport',
  documentFront: customer.passportImage,
});

// Liveness check
const liveness = await lux.kyc.verifyLiveness({
  customerId: customer.id,
  selfieImage: customer.selfieImage
});

// Address verification
const address = await lux.kyc.verifyAddress({
  customerId: customer.id,
  documentType: 'utility_bill',
  documentImage: customer.utilityBillImage
});

Business (KYB)

// Registry check
const registry = await lux.kyb.verifyRegistry({
  businessName: business.legalName,
  registrationNumber: business.registrationNumber,
  country: business.country
});

// Beneficial owner identification + screening
const owners = await lux.kyb.identifyBeneficialOwners({
  businessId: business.id,
  ownershipThreshold: 25
});

Transaction Monitoring

Rule-Based Alerts

const rules = [
  { name: 'high_value', condition: (tx) => tx.amount > 10000, severity: 'medium' },
  { name: 'high_risk_country', condition: (tx) => HIGH_RISK.includes(tx.country), severity: 'high' },
  { name: 'velocity', condition: async (tx, id) => (await getCount(id, '24h')) > 10, severity: 'medium' },
];

Reporting

Suspicious Activity Reports

Generate SARs with complete transaction history, subject details, and suspicious activity descriptions for regulatory filing.

Best Practices

  1. Screen early — before account creation, not after
  2. Use multiple sources — don't rely on a single sanctions list
  3. Set appropriate thresholds — balance false positives vs missed matches
  4. Document decisions — keep records of all compliance decisions
  5. Monitor continuously — re-screen when lists update
  6. Test regularly — validate with known sanctioned entities

On this page