Real-time AML and sanctions screening that cuts false positives — paired with granular fraud risk scores on every transaction, account, and event. One platform, tuned to your business.
Capabilities
nex8lens combines deep compliance intelligence with real-time decisioning — so your team catches what matters, faster.
Real-time screening against global watchlists, PEP databases, and adverse media — with match explanations your analysts can act on in seconds, not hours.
Granular risk scores on every payment, account, and event — tuned to your business, explained in plain language, and ready to act on in milliseconds.
How it works
Connect your transaction streams, onboarding flows, and event data via REST API or batch file. nex8lens normalizes and enriches in real time — no schema changes required on your end.
Every event is simultaneously screened against global sanctions and PEP lists, and scored by your custom fraud models. Both signals surface together in a single response payload.
Route to automated decisions, analyst queues, or case management. Every action is logged, timestamped, and linked to the risk signal that triggered it — keeping you exam-ready.
Platform
Write, test, and deploy rules without engineering tickets. Scenario-based logic with version control and rollback.
Every score comes with human-readable reason codes. Justify decisions to customers, auditors, and regulators alike.
Integrated investigation workspace with SLA tracking, analyst notes, and SAR/CTR filing support built in.
Deploy in your cloud, ours, or air-gapped. Data never leaves your perimeter unless you want it to.
Sub-50ms API for live decisioning. Scheduled batch runs for portfolio re-screening and periodic review.
Immutable audit logs, configurable retention policies, and one-click export in formats regulators recognize.
Developer API
A single REST API for both AML/sanctions screening and fraud scoring. One request, one response, full signal.
All API requests must include your API key in the Authorization header. Keys are scoped per environment — use cs_live_ prefixed keys in production and cs_test_ in sandbox. Never expose keys client-side.
# Pass your API key in every request curl https://api.nex8lens.com/v1/screen \ -H "Authorization: Bearer cs_live_YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ ... }'
import nex8lens client = nex8lens.Client("cs_live_YOUR_API_KEY") # All methods on client are pre-authenticated result = client.screen.create({ ... })
import nex8lens from '@nex8signal/node' const client = new nex8lens({ apiKey: process.env.nex8signal_API_KEY }) // All methods on client are pre-authenticated const result = await client.screen.create({ ... })
Screen an entity — individual, business, or account — against global watchlists, sanctions lists, and PEP databases in real time. Returns match results, risk indicators, and a recommended action.
Request body
| Field | Type | Description |
|---|---|---|
| entity_typerequired | string | Type of entity being screened. One of individual, business, account. |
| namerequired | string | Full legal name of the entity. For individuals, use format Last, First Middle where possible. |
| doboptional | string | Date of birth in ISO 8601 format YYYY-MM-DD. Improves match precision for individuals. |
| countryoptional | string | ISO 3166-1 alpha-2 country code. Used to weight regional watchlists. |
| identifiersoptional | object | Known identifiers: passport, national_id, tax_id, registration_number. |
| listsoptional | array | Restrict screening to specific list IDs. Defaults to all lists enabled for your account. |
| match_thresholdoptional | number | Fuzzy match sensitivity from 0.0 to 1.0. Defaults to your account setting (typically 0.85). |
curl -X POST https://api.nex8lens.com/v1/screen \ -H "Authorization: Bearer cs_live_YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "entity_type": "individual", "name": "John Edward Smith", "dob": "1975-04-22", "country": "GB", "identifiers": { "passport": "GB123456789" }, "match_threshold": 0.85 }'
result = client.screen.create( entity_type="individual", name="John Edward Smith", dob="1975-04-22", country="GB", identifiers={"passport": "GB123456789"}, match_threshold=0.85 )
const result = await client.screen.create({ entity_type: 'individual', name: 'John Edward Smith', dob: '1975-04-22', country: 'GB', identifiers: { passport: 'GB123456789' }, match_threshold: 0.85 })
Response
{
"screening_id": "scr_01HX4K9NZ3M8PQRST",
"status": "completed",
"recommendation": "review", // clear | review | block
"matches": [
{
"match_id": "mch_7Z2X",
"list": "OFAC_SDN",
"match_score": 0.91,
"matched_name": "John E. Smith",
"entity_type": "individual",
"sanctions_programs": ["IRAN"],
"listed_on": "2021-03-15"
}
],
"pep_result": { "is_pep": false },
"latency_ms": 38,
"screened_at": "2026-05-30T10:14:22Z"
}
Score a transaction or event for fraud risk. Returns a risk score from 0–1000, human-readable reason codes, and a recommended action. Designed for sub-50ms inline decisioning.
Request body
| Field | Type | Description |
|---|---|---|
| event_typerequired | string | Type of event. One of payment, login, onboarding, withdrawal, account_change. |
| amountoptional | number | Transaction amount in minor currency units (e.g. cents). Required for payment events. |
| currencyoptional | string | ISO 4217 currency code. Required for payment events. |
| account_idrequired | string | Your internal account or user identifier. Used for behavioral history and velocity checks. |
| deviceoptional | object | Device signals: ip, fingerprint, user_agent, timezone. |
| metadataoptional | object | Arbitrary key-value pairs passed through to the response. Max 20 keys, 512 chars per value. |
curl -X POST https://api.nex8lens.com/v1/score \ -H "Authorization: Bearer cs_live_YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "event_type": "payment", "amount": 149900, "currency": "USD", "account_id": "usr_4g8x2kqz", "device": { "ip": "203.0.113.42", "fingerprint": "fp_a3b9c1d2", "user_agent": "Mozilla/5.0..." } }'
result = client.score.create( event_type="payment", amount=149900, currency="USD", account_id="usr_4g8x2kqz", device={ "ip": "203.0.113.42", "fingerprint": "fp_a3b9c1d2", "user_agent": "Mozilla/5.0..." } )
const result = await client.score.create({ event_type: 'payment', amount: 149900, currency: 'USD', account_id: 'usr_4g8x2kqz', device: { ip: '203.0.113.42', fingerprint: 'fp_a3b9c1d2', user_agent: 'Mozilla/5.0...' } })
Response
{
"score_id": "scr_01HX5RNPQ7W2ABCDE",
"risk_score": 742, // 0 (low) – 1000 (high)
"risk_band": "high", // low | medium | high | critical
"recommendation": "review", // allow | review | block
"reason_codes": [
{
"code": "VELOCITY_BREACH_24H",
"description": "Account exceeded 5 transactions in 24h",
"weight": 0.38
},
{
"code": "NEW_DEVICE_HIGH_VALUE",
"description": "First seen device, transaction over $500",
"weight": 0.29
}
],
"model_version": "v3.4.1",
"latency_ms": 22,
"scored_at": "2026-05-30T10:14:44Z"
}
Run AML/sanctions screening and fraud scoring in a single atomic request. Both signals are evaluated simultaneously and returned together — ideal for onboarding flows and high-value payment authorization.
curl -X POST https://api.nex8lens.com/v1/evaluate \ -H "Authorization: Bearer cs_live_YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "entity": { "entity_type": "individual", "name": "Jane A. Doe", "country": "US" }, "event": { "event_type": "payment", "amount": 500000, "currency": "USD", "account_id": "usr_7h3m9prt" } }'
result = client.evaluate.create( entity={ "entity_type": "individual", "name": "Jane A. Doe", "country": "US" }, event={ "event_type": "payment", "amount": 500000, "currency": "USD", "account_id": "usr_7h3m9prt" } )
const result = await client.evaluate.create({ entity: { entity_type: 'individual', name: 'Jane A. Doe', country: 'US' }, event: { event_type: 'payment', amount: 500000, currency: 'USD', account_id: 'usr_7h3m9prt' } })
Response
{
"evaluation_id": "evl_01HX6ZZPQ9Y3FGHIJ",
"overall_recommendation": "block",
"screening": {
"screening_id": "scr_01HX6ABCD",
"recommendation": "block",
"matches": [ /* ... */ ]
},
"scoring": {
"score_id": "scr_01HX6EFGH",
"risk_score": 891,
"risk_band": "critical",
"recommendation": "block",
"reason_codes": [ /* ... */ ]
},
"latency_ms": 44,
"evaluated_at": "2026-05-30T10:15:01Z"
}
Retrieve a case by its ID — including all linked screening and scoring events, analyst notes, disposition, and audit log entries.
curl https://api.nex8lens.com/v1/cases/cas_01HX7MNOP \
-H "Authorization: Bearer cs_live_YOUR_API_KEY"
case = client.cases.retrieve("cas_01HX7MNOP")
const cas = await client.cases.retrieve('cas_01HX7MNOP')
Error codes
| HTTP status | Code | Description |
|---|---|---|
| 400 | invalid_request | Missing or malformed fields. Check the errors array in the response for field-level detail. |
| 401 | unauthorized | API key missing, invalid, or expired. Verify your Authorization header. |
| 403 | forbidden | Your key does not have permission for this endpoint or environment. |
| 429 | rate_limit_exceeded | Request volume exceeded your plan limit. See Retry-After header for backoff window. |
| 500 | internal_error | Unexpected server error. Retryable with exponential backoff. Contact support if persistent. |
Rate limits
| Plan | Type | Limit |
|---|---|---|
| Starter | string | 500 requests / minute, 50K / day |
| Growth | string | 2,000 requests / minute, 500K / day |
| Enterprise | string | Custom limits — contact sales |
All responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers. On-premise deployments are not subject to these limits.
Talk to a specialist. We'll walk through your current stack and show you exactly where nex8lens fits — no generic demos.