Home/Blog/Structuring

Structuring Below the Threshold: What the Pattern Actually Looks Like

Fourteen transfers of 9,990. Nothing crosses the line, everything rhymes. A walkthrough of the structuring typology with a real case file behind it.

Structuring — smurfing, in the older literature — is the practice of breaking a movement of money into pieces small enough to stay under a reporting threshold. It is one of the oldest typologies in AML, and one of the most frequently missed by systems that screen names but never read transaction streams.

The case file

Customer Salem Al Farsi, a UAE national, ran a modest trading account. Over six days, the account made fourteen outgoing transfers. Every single one was for USD 9,990 or less. The reporting threshold was 10,000. Nothing crossed the line. Nothing tripped a rule.

Read as a stream, though, the pattern is unmistakable — and it is made of five inspectable signals:

SignalObservationWeight in composite
Threshold proximity14 transfers, max 9,990, threshold 10,000+10
Round-value bias9,950 / 9,980 / 9,990 — all near-round+6
Temporal compression6 days, bursts at 09:41–09:58+8
Counterparty concentration12 of 14 to a single beneficiary+8
Profile inconsistencyMedian transfer before: 1,200. Now: 9,900+12

Individually, each signal is explainable. Collectively, they are the typology. That is the design principle: no single signal files an alert; the combination does — and the combination is spelled out, factor by factor, in the trace.

Why exact thresholds miss it

Rule engines built on the threshold itself are structurally blind here: 9,990 is below 10,000, so the rule fires never. The fix is not to lower the threshold (that drowns everyone in noise); it is to model proximity and rhythm:

  • proximity: repeated values within a band of the threshold (0–5% below is the default band);
  • rhythm: temporal clustering — bursts of activity compressed into days, with consistent values;
  • concentration: one counterparty absorbing an outsized share;
  • deviation: volume inconsistent with the account's declared and historical profile.
The uncomfortable part: structuring below threshold is exactly how sanctions evasion and cash-out schemes present in real files. The alert that "never fired" is the alert that matters.

What the trace says

When the investigation agent read this file, the reasoning trace wrote itself in the usual plain language:

reasoning trace · case MZ-2026-0417
mizan.agent SIGNAL threshold_proximity · 14 of 14 transfers ≤ 9,990 (band 0–5% of 10,000)
mizan.agent SIGNAL temporal_compression · 6-day window, 09:41–09:58 bursts
mizan.agent SIGNAL counterparty_concentration · 12/14 to single beneficiary
mizan.agent SIGNAL profile_deviation · median 1,200 → 9,900
mizan.agent RISK_SCORED · composite 87 → CRITICAL
mizan.agent DISPOSITION_RECOMMENDED · freeze funds and file STR

The agent recommends. The analyst reviews. The MLRO approves. The STR is filed with the narrative drafted from these exact lines — so the filing and the file can never disagree. (If you want to see the console the MLRO reviews these in, we shipped one: the MLRO Console.)

The takeaway

Name screening tells you who; behavioural detection tells you what they did. The Salem Al Farsi file shows why you need both: the name matched a watchlist alias at 0.94 — but even without the list hit, the transaction stream alone carried enough evidence to warrant a filing. In four years, no single rule would have caught it. Five signals, read together, caught it in a morning.

RS
Rohan Sharma
Co-founder · CEO

Ex-payments infrastructure lead who spent three years inside the false-positive problem before deciding to fix it. Still reads every alert queue with the same suspicion.

free 14-day trial

See the pattern before it becomes a headline.

The detection stack runs on your data in the free trial. Structuring, pass-through, concentration — each signal inspectable in the trace.