BUILT FOR THE EXAMINATION · CBN · NFIU

Nine deposits.Twenty hours.One alert that survives audit.

It runs single-tenant inside your own infrastructure. Each deposit sat just under the ₦5,000,000 reporting line; the structuring rule watches the band beneath it, so the pattern trips even though no single deposit does. Then a second officer signs the filing and the hash chain records both of them.

  • CBN Baseline Standards for Automated AML Solutions
  • NFIU goAML · STR & CTR
  • Runs inside your environment
  • Maker-checker enforced by policy
CHANNELCOUNTERPARTYAMOUNTSCOREVERDICT
POSLekki Freight Ltd3,040,000PASS
CARDHalima Abdullahi128,900PASS
USSDEmeka Nwachukwu5,500PASS
AGENTOluwaseun Adeleke41,350,000HIGHMulti-Channel Activity, transaction AGT-8842340
ATMAdebayo Okonkwo150,000PASS
BRANCHPort Harcourt Marine Ltd9,220,000PASS
AGENTNgozi Ibe78,000PASS
POSAba Textiles Co640,000PASS
AGENTChukwuemeka Eze15,750,000CRITICALSuspicious Pattern: PEP High Value, transaction AGT-8842251
USSDFatima Abdullahi12,000PASS
CARDOluwaseun Adeleke310,000PASS

ILLUSTRATIVE · SYNTHETIC DATA · NOT A LIVE FEED

AGT-8842077 · ARRIVAL TO FILING

Follow the 4,900,000.

  1. 01INGEST

    It arrives

    A 4,900,000 cash deposit at 02:14, the ninth in twenty hours, each one just under the 5,000,000 CTR reporting line. Re-sending it changes nothing: the reference is unique, so a repeat is recorded as a duplicate and never raises a second alert.

  2. 02SCORE

    It is scored

    Evaluated as it lands, not overnight in a batch. The structuring rule sits at 4,500,000, deliberately just below the 5,000,000 CTR line, and that gap is the detection logic. The aggregate over twenty hours is what this one trips.

  3. 03ALERT

    It alerts

    A CRITICAL alert opens and the customer snapshot freezes at this moment. A profile edit tomorrow cannot rewrite what the analyst saw today. The SLA clock starts here.

  4. 04MAKER · CHECKER

    A human owns it

    The analyst writes the suspicion narrative; an STR will not submit without at least 100 characters of it. Nothing activates until a second officer approves, and a maker can never approve their own submission.

  5. 05FILE

    It stays filed

    The STR goes to the NFIU in goAML with a reference. Every step you have just read appended to the audit log as it happened. Nothing deletes, nothing edits silently, and when an examiner asks, the audit workspace verifies the hash chain in front of them.

CASE FILE4 / 19 ENTRIES
REFERENCEAGT-8842077
CHANNELAGENT · Victoria Island
AMOUNT4,900,000
RECEIVED02:14:07 WAT
TYPOLOGYStructured Cash Deposits
AGGREGATE44,100,000 / 9 deposits
RISK SCORE87
ALERTALT-00900
SEVERITYCRITICAL
SNAPSHOTFROZEN AT CREATION
SLA04:00:00 REMAINING
NARRATIVEAnalyst authored
SUBMITTEDF. Adeleke (maker)
APPROVEDE. Nwachukwu (checker)
SELF APPROVALBLOCKED BY POLICY
REPORTRPT-2026-004 · STR
FILEDNFIU goAML · acknowledged
AUDIT14 entries · append only
CHAINVERIFIED

APPEND ONLY · NO ROW IS EVER REMOVED OR REWRITTEN

02PLATFORM

The whole compliance desk, and the examiner's view of it.

Monitoring, screening, cases, rules, reporting, watchlists, country risk and data quality are one system on one audit trail, not eight tools a compliance officer reconciles by hand. The last screen here is the one an examiner is shown.

Six tabs, each answering a different examination question. The first one verifies the hash chain: has this record been tampered with. Everything else in the product produces evidence; this is where it is inspected, and a separate examiner role unlocks restricted STR and SAR content without handing over the rest.

KORE78 TMI · AUDIT WORKSPACESYNTHETIC FIXTURE DATA
Kore78 TMI Audit workspace screenKore78 TMI Alerts screenKore78 TMI Cases screenKore78 TMI Rules screenKore78 TMI Screening screenKore78 TMI Dashboard screen

03GOVERNANCE

A maker can never approve their own work.

Separation of duties is enforced by policy, not by a role name someone can edit. Try it: you are signed in as the officer who submitted this change.

APPROVAL QUEUE1 PENDING
SIGNED IN AS

Config Change

CTR Threshold: NGN 5,000,000 to NGN 4,000,000

SUBMITTED BY
F. Adeleke
WHEN
6d ago
STATUS
PENDING

ENFORCED BY POLICY · NOT BY ROLE NAME

AUDIT LOGAPPEND ONLY
  1. 6d agoF. Adeleke submitted a governed change

A REFUSED APPROVAL IS ITSELF AN AUDIT EVENT

04SECURITY

Built so there is no path for your data to leave.

Data sovereignty here is structural, not contractual. The system installs inside your infrastructure and nothing carries customer data out of it, which satisfies CBN 5.11-b-i and the NDPA by construction rather than by promise. The product implements the CBN Baseline Standards for Automated AML Solutions, BSD/DIR/PUB/LAB/019/002. Inside that boundary, a BVN is still masked by default and revealing it is a permission that leaves a record.

CUSTOMER · ADEBAYO OKONKWOSYNTHETIC IDENTIFIERS
PERMISSION NOT HELD
BVN
221••••••18
NIN
701••••••96

NO ACCESS EVENTS YETMASKED IN UI, LOGS AND EXPORTS

  • 01It runs in your environment

    Single-tenant, installed inside the institution's own infrastructure. Compact on a single node for a pilot or an OFI, standard-HA on Kubernetes for a bank, from the same signed artefacts with no feature divergence between them.

  • 02No customer data leaves

    A hard product property, not a setting someone can get wrong. No replication out, no telemetry, no analytics beacon, and no standing vendor connection into your network. The only sanctioned outbound is signed sanctions and PEP list data coming in.

  • 03Enforced by the build

    An egress allowlist assertion runs in CI. If a change introduces any outbound destination other than the configured list providers, the build fails. The invariant is checked mechanically rather than trusted to review.

  • 04You decide what we ever see

    When we need diagnostics, you trigger a redacted, audited export. We never pull; you push, deliberately, and the export is recorded in the audit trail. Upgrades are signed artefacts applied on site, not delivered over a network path.

05DOCS

One contract, and it is boring on purpose.

Your core banking team will integrate this, so the interesting questions are what happens when something is sent twice at 3am, and which unit the amount is in. Both answered here, not diagrammed.

HTTP
POST /api/v1/ingest/transactions
X-Tenant-Id:         bank78
X-Kore78-Source-ID:  SRC-000016
X-Kore78-Signature:  sha256=<hmac of the raw body>
 
{
  "sourceSystemId": "SRC-000016",
  "events": [
    {
      "eventId": "8f1c9a2e-...",
      "eventType": "transaction.posted",
      "occurredAt": "2026-08-13T02:14:07+01:00",
      "transactionReference": "AGT-8842077",
      "activityType": "CASH_DEPOSIT",
      "channel": "AGENT",
      "direction": "CREDIT",
      "amount": { "amountMinor": 490000000, "currency": "NGN" },
      "sourceCustomerId": "CUST-40118",
      "isCash": true
    }
  ]
}
 
# amountMinor is KOBO. 490000000 is NGN 4,900,000.
# Sending 4900000 means NGN 49,000 and the rule never fires.
Idempotency
Per entity, scoped to the source system. Transactions are unique on reference and repeat as duplicates; customers and accounts upsert.
Amounts
Minor units, always. NGN 4,900,000 is 490000000 kobo. Sending major units is the single most common integration mistake, and nothing rejects it: the transaction is accepted and simply never matches a threshold.
Signing
HMAC-SHA256 over the raw request body, keyed on the API key issued at source registration. The body must not be re-serialised between signing and sending.
Timestamps
ISO 8601 with offset. WAT is +01:00 and there is no DST in Nigeria.
Bulk endpoints
POST /api/v1/ingest/{customers|accounts|transactions}/upload takes a file and feeds the same canonical pipeline as the JSON push, so idempotency, risk mapping and data-quality holds apply identically to a bulk row.
History and backfill
Bulk CSV or XLSX upload alongside the REST path, for one-off loads and for backfilling history at go-live. The same idempotency applies, so re-running a file cannot manufacture duplicate alerts.
Bulk limits
25 MB and 50,000 rows per upload, enforced server-side. Over either, split the file. There is no chunking.
If REST is not an option
Adapters run as separate processes and speak your side's protocol: a core banking socket feed, ISO 8583, or CDC. They are read-only observers. They never authorise, route or settle.
Already on Kore78 core banking
Then the system feeding this is built by the same company. Integration is a configuration conversation rather than a vendor-to-vendor project.
Pre-transaction
The fail-safe default is FAIL_OPEN. A monitoring outage does not stop the bank taking payments.
Request the full API reference

06CONFORMANCE

Twelve areas in the standard. Eleven live, one named.

Rather than a feature list in a taxonomy we invented, this is the CBN Baseline Standards for Automated AML Solutions, numbered as the circular numbers them, so you can read it beside the document itself.

BSD/DIR/PUB/LAB/019/002 · MARCH 202611/ 12 LIVE
  1. Not shipping today. The standard requires a roadmap document for this area at our stage, and that is what exists. We would rather you read this line here than discover it in an evaluation.

Runs single-tenant inside your environmentBVN and NIN masked by default

07GETTING LIVE

Six steps, and the order is the hard part.

This is the actual sequence from the setup guide, not a marketing timeline. Each step exists because the one after it depends on it, and the dependency is what makes an implementation stall when people start in the middle.

  1. 1

    A second administrator

    Every governed change needs an approver who is not the submitter. A single administrator can submit and will never be able to activate anything, which is the most common cause of a stalled setup.

  2. 2

    Risk mapping

    Empty on a new workspace. Until the rating map and score bands are proposed and approved, customer risk is unmapped rather than low.

  3. 3

    Rules

    Detection cannot run without them. Start with the four mandatory library rules, which correspond to obligations rather than preferences. Governed, like everything else.

  4. 4

    Settings

    Screening providers, source-system registration, SLAs, thresholds and fail mode in one place. Nothing can be ingested until a source system is registered here.

  5. 5

    Data ingestion

    Everything above has to be in place first. Push one transaction that should trip a rule you know is active, then confirm the alert appears. That single alert proves the whole chain.

  6. 6

    Watchlists and lists

    Independent of the chain above, so this can happen at any point.

08STRAIGHT ANSWERS

The questions that decide it.

These come up on every evaluation, so they may as well be answered here. Where the honest answer has an edge to it, the edge is left on.

  1. No, and that is a decision rather than a gap. This does AML, CFT and CPF monitoring. An examiner grades your AML programme against a specific standard, and a system that does several things adequately tends to fail the one it is measured on. Fraud monitoring is area 5.6 of the CBN standard and it is on the roadmap; you can see exactly where it sits in the conformance matrix above rather than finding out later.

09GET STARTED

See it against your own typologies.

A working session with your compliance team, not a slide deck. Roughly an hour, and you should bring whoever will have to sign off on it.

Email hello@kore78.com
hello@kore78.com

The email opens with a short template: institution, your role, and the typologies you want to see. We reply within one business day.

COVERAGE
Nigeria · CBN licensed institutions
STANDARDS
CBN AML / CFT / CPF · NFIU · FATF R.20
  • 01Controlled environment

    The demo runs on synthetic data in an isolated tenant. Nothing from your institution is loaded, and nothing you see belongs to another bank.

  • 02Your typologies

    Tell us the patterns you care about ahead of time and they will be configured as rules before the session, so you are watching your own scenarios.

  • 03The awkward questions

    Bring your auditor. Deployment inside your own environment, the no-egress guarantee, model governance and the audit chain are the parts we would rather discuss early than late.