Most AML/CFT guidance written for Pakistani fintechs is written by lawyers, for lawyers. It tells you what the State Bank of Pakistan (SBP) and the Financial Monitoring Unit (FMU) require. It rarely tells you what that means when you are the engineer who has to build it, and your product owner wants a delivery date.
This guide is the other half. It maps the regulatory obligations onto the components you will actually have to design, the failure modes we see most often in production, and the decisions that are expensive to reverse once you have gone live.
Who regulates what: SBP and FMU are not the same thing
Teams routinely conflate these two bodies, and the conflation produces genuinely bad architecture. They have different mandates and they will hold you to different things.
- The State Bank of Pakistan (SBP) is your prudential regulator. It licenses you, issues the AML/CFT/CPF Regulations that govern your customer due diligence, risk assessment and internal controls, and inspects you against them.
- The Financial Monitoring Unit (FMU) is Pakistan's financial intelligence unit, established under the Anti-Money Laundering Act 2010. It does not license you. It receives your reports — Suspicious Transaction Reports (STRs) and Currency Transaction Reports (CTRs) — through the goAML platform, and it sets the schema those reports must conform to.
The practical consequence: SBP compliance is largely a policy-and-controls problem with an audit trail requirement. FMU compliance is a data engineering problem with a hard schema contract. Teams that treat them as one workstream typically under-build the reporting pipeline, because the policy work is more visible and the schema work looks like plumbing until the first rejection batch comes back.
The three pillars, and what each one actually costs you
Every compliant transaction architecture we have built or remediated has the same three load-bearing components. What varies is how much pain each one causes.
1. Screening: sanctions, PEPs and proscribed persons
You must compare customer and counterparty identities against national and international lists — the NACTA Proscribed Persons list, UN Security Council Consolidated List, OFAC SDN, and any list your correspondent banks impose on you contractually.
The engineering difficulty is not the comparison. It is that names in Pakistan do not match cleanly. Transliteration from Urdu produces multiple valid Roman spellings for the same person; patronymics and honorifics appear inconsistently; and the same CNIC may be attached to differently-spelled name records across your own systems.
Exact-match screening on this data will miss real hits. Naive fuzzy matching will bury your compliance team in false positives — we have seen a 400-name-per-day alert queue at a mid-size EMI where roughly 3% were worth reviewing. Both outcomes are failures, and the second is the one that gets you in trouble, because an analyst who dismisses 388 alerts a day will eventually dismiss the one that mattered.
What works: phonetic and edit-distance matching tuned per list, with the threshold treated as a governed parameter — versioned, change-controlled, and with every tuning change logged. When SBP asks why your threshold is 0.82, "that is what the vendor shipped" is not an answer. "Here is the tuning decision, the false-negative testing behind it, and who approved it" is.
2. Transaction monitoring: rules first, models later
Transaction monitoring detects behaviour rather than identity: structuring (breaking large amounts into sub-threshold deposits to avoid CTR triggers), velocity spikes, dormant accounts that suddenly activate, geographic patterns inconsistent with a stated customer profile, and round-trip flows between related parties.
There is strong commercial pressure to lead with machine learning here. We would push back on that for most institutions, for one specific reason: explainability is a regulatory requirement, not a nice-to-have. When an examiner asks why a transaction was or was not flagged, "the model scored it 0.31" is not a defensible answer. A deterministic rule engine — thresholds, windows, peer-group comparisons — gives you an auditable reason for every decision.
The mature pattern is layered: deterministic rules produce the alerts of record, and a model runs alongside to prioritise the queue rather than to decide it. You get the analyst-efficiency benefit without putting an unexplainable artefact on the regulatory critical path.
3. STR/CTR reporting: the goAML schema is the hard contract
This is where projects slip. FMU accepts reports through goAML — the UNODC-developed platform used by financial intelligence units worldwide — and goAML validates submissions against a strict XML schema. Your report is either schema-valid or it is rejected, and a rejected report is a report you did not file.
The recurring rejection causes we see, in rough order of frequency:
- Party role and identification mismatches. Every party needs a correctly typed identifier. A CNIC placed in a passport-type field is schema-valid and semantically wrong, which is worse than a hard failure because it passes validation and fails review.
- Missing mandatory conditional fields. Many goAML fields are required only when another field takes a particular value. Teams model the unconditional required set, pass their own tests, and fail on real cases.
- Date and currency formatting. Locale-formatted dates and thousands separators are a persistent source of rejections.
- Narrative quality. Schema-valid but analytically useless. The reason-for-suspicion narrative is read by a human analyst; "unusual activity detected by system" wastes everyone's time and reflects badly on your programme.
Design implication: build the reporting pipeline against the schema from day one, with a validation stage that runs the same XSD validation FMU runs, before submission. Do not discover the schema during UAT.
Under FATF's recommendations, compliance is not an overlay on transaction routing — it is a structural property of it. Systems designed to have compliance added later almost always need re-architecting instead.
Three decisions that are expensive to reverse
Some choices are cheap to change after launch. These three are not, and they are the ones we most often get called in to unpick.
Where the customer record lives. If identity data is scattered across an onboarding service, a core ledger and a support CRM with no authoritative record, screening will be inconsistent by construction — you will screen one spelling and transact under another. Resolve this before you build screening, not after.
Whether transactions are immutable. Monitoring and reporting both depend on being able to reconstruct exactly what the system knew at the moment of a decision. If your transaction table is mutable and you keep no event log, you cannot reproduce an alert from six months ago — and reproducing alerts is precisely what an examination asks of you. Append-only event storage is dramatically cheaper to adopt at design time than to retrofit.
How much time budget screening gets. Real-time screening inside the authorisation path adds latency to every transaction. Decide early which checks are blocking and which are post-hoc, and make it an explicit, documented risk decision rather than an accident of implementation order.
A realistic sequencing
For a fintech starting from nothing, the order that has worked best in our engagements is: consolidate the customer record first; then build screening against it; then event-log the transaction stream; then rule-based monitoring on that log; then the goAML reporting pipeline with schema validation; and only then consider model-assisted alert prioritisation. Each stage produces something independently useful to the compliance team, which matters, because a programme that delivers nothing for nine months tends not to survive to month ten.
At NovuLabs we build these components into core banking, EMI and digital wallet platforms for SBP-regulated institutions. If you are early enough that the three expensive decisions above are still open, that is the best possible time to talk.
Primary sources
- State Bank of Pakistan — AML/CFT/CPF regulatory framework
- Financial Monitoring Unit (FMU) Pakistan
- FATF — The FATF Recommendations
- UNODC goAML platform
- NACTA — Proscribed Organisations and Persons
- US Treasury OFAC — Specially Designated Nationals list
How we help with this

Ali runs delivery operations and the compliance practice at NovuLabs, including AML/CFT engagements with SBP-regulated institutions. He writes here on goAML integration, transaction monitoring design, and what regulatory examination actually asks of a system.
