Module 9 of 13
Counterfeit and recall
An alert is raised by the verification platform itself, at the moment a client or a provider checks a pack. From there it becomes a case with an investigation trail, a NAFDAC reference and an outcome, and a recall becomes a notice pushed against a serial range rather than a bulletin about a lot number. Every case on this screen resolves back to the individual pack that triggered it.
SN 58, number of counterfeit commodity alerts detected and resolved
100.0%
6 of 6 alerts closed with a NAFDAC reference and an outcome. None left open at the window end
SN 59, percentage of affected batches recalled within approved timeline
100.0%
11 days against an approved 14 day timeline, 3 days inside it
Alerts investigated, layer A
6
No target setEach with a 6 step trail. Detected between 2026-05-21 and 2026-07-09, median 13.5 days to resolution, range 9 to 17
Alerts raised, layer B
20
No target setAlert volume at programme scale across 400 outlets and 24 LGAs. The 6 cases below are the sampled ledger, where the investigation trail can be read case by case
Three outcomes, not one
Reported with equal weight. An alert stream that returned counterfeit every time it fired would not be a credible detection system.
Of 6 cases, 3 were confirmed counterfeit. 2 were genuine product that had leaked out of the subsidised channel, which is a different problem needing a different response, and 1 was a false alarm cleared by laboratory screening. All three are shown below because all three are what a working alert stream looks like.
3of 6
Laboratory screening confirmed the pack was not genuine product. The serial was cloned or fabricated.
Response. Enforcement. The batch is quarantined, NAFDAC enforcement is notified and the supplying party is delisted.
Median 11 days to resolution.
2of 6
The product was genuine, but the serials had left the subsidised channel and re-entered outside it. This is leakage, not falsification.
Response. Commercial and contractual. Serials are traced to the non-programme channel and the wholesaler contract is reviewed.
Median 15 days to resolution.
1of 6
No fault in the product. The alert came from a mis-keyed code at verification, which the platform correctly treated as suspicious until cleared.
Response. Guidance. Verification instructions are re-sent to the outlet and the case is closed without enforcement.
Median 16 days to resolution.
Where the alerts came from
An alert is a by-product of verification, so the trigger, the channel and the location are already on the event. Nothing separate has to be reported by hand.
Trigger at verification
- Verification returned a code already used3
- Verification returned an unrecognised code3
Verification channel
- Sproxil app scan3
- SMS to shortcode1
- USSD1
- Web check1
Severity at triage
- High3
- Medium3
State and LGA
- Abia, Isiala Ngwa North1
- Borno, Jere1
- Borno, Konduga1
- Lagos, Alimosho1
- Lagos, Ikorodu1
- Lagos, Mushin1
A code already used and an unrecognised code are different failures. The first says a genuine serial has been cloned or re-labelled after a legitimate check; the second says the code was never issued against a released batch. Both arrive through the same four channels module 2 reports coverage on, which is why alert detection costs the programme no separate reporting burden.
Serialisation and authentication, module 2Every alert, layer A
6 cases, 6 closed, 0 open
Open the trail on any row to see the six investigation steps, or the serial to open the pack in the trace timeline.
Layer A granular ledger, 6 COUNTERFEIT_ALERT events. Every case carries a serial, so a NAFDAC reference resolves to an individual pack.
- 2026-05-21
- Outlet and location
- Yerima Medicine StoreOUT-0254, Jere, Borno
- Serial that triggered it
- RDT08-031671Malaria rapid diagnostic test, batch BAT-08
- Trigger and channel
- Verification returned a code already usedSproxil app scan
- Severity
- Fail: High
- Outcome
- Fail: Confirmed counterfeit
- NAFDAC reference
- NAFDAC-INV-2026-0700
- Closed
- 2026-05-30
- Days to resolution
- 9
- Investigation
- 2026-05-29
- Outlet and location
- Al-Amin Patent and Proprietary Medicine StoreOUT-0261, Konduga, Borno
- Serial that triggered it
- AL212-013953Artemether-lumefantrine 20/120, batch BAT-12
- Trigger and channel
- Verification returned an unrecognised codeSproxil app scan
- Severity
- Attention: Medium
- Outcome
- Attention: Diverted genuine stock
- NAFDAC reference
- NAFDAC-INV-2026-0704
- Closed
- 2026-06-11
- Days to resolution
- 13
- Investigation
- 2026-06-05
- Outlet and location
- Hope Drug StoreOUT-0078, Ikorodu, Lagos
- Serial that triggered it
- RDT08-001618Malaria rapid diagnostic test, batch BAT-08
- Trigger and channel
- Verification returned an unrecognised codeWeb check
- Severity
- Fail: High
- Outcome
- Fail: Confirmed counterfeit
- NAFDAC reference
- NAFDAC-INV-2026-0701
- Closed
- 2026-06-16
- Days to resolution
- 11
- Investigation
- 2026-06-25
- Outlet and location
- Nkemdi Patent Medicine StoreOUT-0004, Alimosho, Lagos
- Serial that triggered it
- RDT05-033001Malaria rapid diagnostic test, batch BAT-05
- Trigger and channel
- Verification returned a code already usedSMS to shortcode
- Severity
- Attention: Medium
- Outcome
- Attention: Diverted genuine stock
- NAFDAC reference
- NAFDAC-INV-2026-0703
- Closed
- 2026-07-12
- Days to resolution
- 17
- Investigation
- 2026-06-26
- Outlet and location
- Grace Patent Medicine StoreOUT-0201, Isiala Ngwa North, Abia
- Serial that triggered it
- RDT02-041511Malaria rapid diagnostic test, batch BAT-02
- Trigger and channel
- Verification returned a code already usedSproxil app scan
- Severity
- Fail: High
- Outcome
- Fail: Confirmed counterfeit
- NAFDAC reference
- NAFDAC-INV-2026-0702
- Closed
- 2026-07-10
- Days to resolution
- 14
- Investigation
- 2026-07-09
- Outlet and location
- Emeka ChemistOUT-0052, Mushin, Lagos
- Serial that triggered it
- AL110-023119Artemether-lumefantrine 20/120, batch BAT-10
- Trigger and channel
- Verification returned an unrecognised codeUSSD
- Severity
- Attention: Medium
- Outcome
- Pass: No product defect found
- NAFDAC reference
- NAFDAC-INV-2026-0705
- Closed
- 2026-07-25
- Days to resolution
- 16
- Investigation
| Investigation | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| 2026-05-21 | Yerima Medicine StoreOUT-0254, Jere, Borno | RDT08-031671Malaria rapid diagnostic test, batch BAT-08 | Verification returned a code already usedSproxil app scan | Fail: High | Fail: Confirmed counterfeit | NAFDAC-INV-2026-0700 | 2026-05-30 | 9 | |
| 2026-05-29 | Al-Amin Patent and Proprietary Medicine StoreOUT-0261, Konduga, Borno | AL212-013953Artemether-lumefantrine 20/120, batch BAT-12 | Verification returned an unrecognised codeSproxil app scan | Attention: Medium | Attention: Diverted genuine stock | NAFDAC-INV-2026-0704 | 2026-06-11 | 13 | |
| 2026-06-05 | Hope Drug StoreOUT-0078, Ikorodu, Lagos | RDT08-001618Malaria rapid diagnostic test, batch BAT-08 | Verification returned an unrecognised codeWeb check | Fail: High | Fail: Confirmed counterfeit | NAFDAC-INV-2026-0701 | 2026-06-16 | 11 | |
| 2026-06-25 | Nkemdi Patent Medicine StoreOUT-0004, Alimosho, Lagos | RDT05-033001Malaria rapid diagnostic test, batch BAT-05 | Verification returned a code already usedSMS to shortcode | Attention: Medium | Attention: Diverted genuine stock | NAFDAC-INV-2026-0703 | 2026-07-12 | 17 | |
| 2026-06-26 | Grace Patent Medicine StoreOUT-0201, Isiala Ngwa North, Abia | RDT02-041511Malaria rapid diagnostic test, batch BAT-02 | Verification returned a code already usedSproxil app scan | Fail: High | Fail: Confirmed counterfeit | NAFDAC-INV-2026-0702 | 2026-07-10 | 14 | |
| 2026-07-09 | Emeka ChemistOUT-0052, Mushin, Lagos | AL110-023119Artemether-lumefantrine 20/120, batch BAT-10 | Verification returned an unrecognised codeUSSD | Attention: Medium | Pass: No product defect found | NAFDAC-INV-2026-0705 | 2026-07-25 | 16 |
NAFDAC-INV-2026-0700, confirmed counterfeit
Raised at Yerima Medicine Store, Jere, Borno, and closed 9 days later.
- Serial that triggered it
- RDT08-031671
- Commodity and batch
- Malaria rapid diagnostic test, BAT-08
- Trigger
- Verification returned a code already used
- Channel
- Sproxil app scan
- Detected
- 2026-05-21
- Closed
- 2026-05-30
- Alert event
- E012447
- Action taken
- Batch quarantined, NAFDAC enforcement notified, supplier delisted
Step 1 of 6
Alert raised automatically by the verification platform
Sproxil platform
2026-05-21Step 2 of 6
Outlet contacted and pack photographs collected
Sproxil field team
2026-05-22Step 3 of 6
Case referred to NAFDAC investigation and enforcement
Sproxil compliance
2026-05-23Step 4 of 6
Physical sample collected from the outlet
NAFDAC state office
2026-05-25Step 5 of 6
Laboratory screening completed
NAFDAC Central Drug Control Laboratory
2026-05-30Step 6 of 6
Case closed, confirmed counterfeit
NAFDAC and NMEP
2026-05-30
LOT-CDX2604-01, Class II, precautionary
Post market quality surveillance flagged reduced test line intensity in a sampled pack
- NAFDAC reference
- NAFDAC-RECALL-2026-0113
- Batch
- BAT-01, LOT-CDX2604-01
- Commodity
- Malaria rapid diagnostic test, Codix Bio
- Notice raised
- 2026-07-09
- Batch released
- 2026-04-13
- Expiry
- 2028-04-05
The affected serial range
RDT01-000001throughRDT01-046000
Serial level recall notice pushed to every outlet holding stock from the affected serial range
That is the capability, stated precisely. The notice was not a circular naming a lot code and asking outlets to check their shelves. It named 46,000 individual serials, and the platform already knew which outlets held which slice of them, because every custody hop was recorded against a serial range on the way down.
Custody hops behind the range, module 3Completed in
11days
No target setAgainst an approved timeline of 14 days, 3 days inside it. This is the reading behind SN 59
Units recovered
96.8%
No target set44,528 of 46,000 units returned or accounted for. 1,472 units remain unaccounted for and the case closed with that stated
Outlets acknowledged
97.8%
No target set391 of 400 notified outlets confirmed receipt of the notice
9 of 400 notified outlets never acknowledged the notice
Shown rather than netted off. This is the operationally interesting number on the whole recall, and the only figure on it that asks for an action.
A recall closes on recovery, not on notification. The 391 outlets that acknowledged the notice can be shown to have received it, read it and confirmed it. The remaining 9 cannot, and they sit alongside 1,472 units of the affected range that were never returned. Those two numbers are almost certainly related, and a supervision visit to those 9 outlets is the obvious next action.
A dashboard that reported only 97.8% acknowledgement and 96.8% recovery would look better and be less useful. The point of holding notification and acknowledgement as two separate events is precisely that the difference between them is actionable.
Recorded on the recall event: outlets notified, outlets acknowledged, units affected, units recovered. The demonstration ledger carries these as programme totals across all 400 outlets and does not name the 9 individually, since only the 20 sampled outlets carry granular events. In deployment acknowledgement is a per outlet event like every other, so that list is a filter on this table rather than a new report.
Notified, not acknowledged
9
No target set2.2% of notified outlets. Escalates to a supervision visit, module 12
Units unaccounted for
1,472
No target setOf 46,000 units in the affected range. The residual after 96.8% recovery
20 sampled outlets recorded as holding the affected range
The notice went to all 400 enrolled outlets. These are the ones in the granular ledger whose custody records name serials inside RDT01-000001 to RDT01-046000, with the consignments and the exact slices each of them received.
Layer A granular ledger, SHIPMENT_RECEIVED events against batch BAT-01 at a sampled outlet. Any serial opens the full custody chain.
- Chinelo Patent and Proprietary Medicine StoreOUT-0173, Umuahia North, Abia
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 175
- Serials held
- RDT01-019550through RDT01-019724
- First received
- 2026-04-24
- Chinelo Drug StoreOUT-0187, Aba South, Abia
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 175
- Serials held
- RDT01-023175through RDT01-023349
- First received
- 2026-04-25
- Chidera ChemistOUT-0188, Aba South, Abia
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 175
- Serials held
- RDT01-023350through RDT01-023524
- First received
- 2026-04-25
- Bolanle Drug StoreOUT-0001, Alimosho, Lagos
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 175
- Serials held
- RDT01-005751through RDT01-005925
- First received
- 2026-04-26
- Nkemdi Patent Medicine StoreOUT-0004, Alimosho, Lagos
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 175
- Serials held
- RDT01-005926through RDT01-006100
- First received
- 2026-04-26
- Chidera Patent and Proprietary Medicine StoreOUT-0055, Mushin, Lagos
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 175
- Serials held
- RDT01-006276through RDT01-006450
- First received
- 2026-04-26
- Uchenna Drug StoreOUT-0026, Ikeja, Lagos
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 175
- Serials held
- RDT01-000001through RDT01-000175
- First received
- 2026-04-26
- Emeka ChemistOUT-0052, Mushin, Lagos
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 175
- Serials held
- RDT01-006101through RDT01-006275
- First received
- 2026-04-26
- Adaeze Patent Medicine StoreOUT-0028, Ikeja, Lagos
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 175
- Serials held
- RDT01-000176through RDT01-000350
- First received
- 2026-04-26
- Grace Drug StoreOUT-0231, Maiduguri, Borno
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 175
- Serials held
- RDT01-026450through RDT01-026624
- First received
- 2026-04-28
- Yerima Medicine StoreOUT-0254, Jere, Borno
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 175
- Serials held
- RDT01-026975through RDT01-027149
- First received
- 2026-04-28
- Bukar Drug StoreOUT-0232, Maiduguri, Borno
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 175
- Serials held
- RDT01-026625through RDT01-026799
- First received
- 2026-04-28
- Grace ChemistOUT-0247, Jere, Borno
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 175
- Serials held
- RDT01-026800through RDT01-026974
- First received
- 2026-04-29
- Folasade Medicine StoreOUT-0177, Umuahia North, Abia
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 175
- Serials held
- RDT01-023000through RDT01-023174
- First received
- 2026-05-04
- Hope Drug StoreOUT-0078, Ikorodu, Lagos
- Outlet type
- PPMV
- Consignments
- 5
- Units received
- 125
- Serials held
- RDT01-000351through RDT01-000475
- First received
- 2026-04-27
- Folasade PharmacyOUT-0077, Ikorodu, Lagos
- Outlet type
- Community pharmacy
- Consignments
- 5
- Units received
- 125
- Serials held
- RDT01-006451through RDT01-006575
- First received
- 2026-04-27
- Al-Amin Patent and Proprietary Medicine StoreOUT-0261, Konduga, Borno
- Outlet type
- PPMV
- Consignments
- 5
- Units received
- 125
- Serials held
- RDT01-027150through RDT01-027274
- First received
- 2026-04-28
- Excellence Patent and Proprietary Medicine StoreOUT-0223, Ohafia, Abia
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 100
- Serials held
- RDT01-019725through RDT01-019824
- First received
- 2026-04-25
- Grace Patent Medicine StoreOUT-0201, Isiala Ngwa North, Abia
- Outlet type
- PPMV
- Consignments
- 4
- Units received
- 100
- Serials held
- RDT01-023525through RDT01-023624
- First received
- 2026-04-29
- Goni Community PharmacyOUT-0278, Biu, Borno
- Outlet type
- Community pharmacy
- Consignments
- 4
- Units received
- 100
- Serials held
- RDT01-029900through RDT01-029999
- First received
- 2026-04-30
| Chinelo Patent and Proprietary Medicine StoreOUT-0173, Umuahia North, Abia | PPMV | 4 | 175 | RDT01-019550through RDT01-019724 | 2026-04-24 |
| Chinelo Drug StoreOUT-0187, Aba South, Abia | PPMV | 4 | 175 | RDT01-023175through RDT01-023349 | 2026-04-25 |
| Chidera ChemistOUT-0188, Aba South, Abia | PPMV | 4 | 175 | RDT01-023350through RDT01-023524 | 2026-04-25 |
| Bolanle Drug StoreOUT-0001, Alimosho, Lagos | PPMV | 4 | 175 | RDT01-005751through RDT01-005925 | 2026-04-26 |
| Nkemdi Patent Medicine StoreOUT-0004, Alimosho, Lagos | PPMV | 4 | 175 | RDT01-005926through RDT01-006100 | 2026-04-26 |
| Chidera Patent and Proprietary Medicine StoreOUT-0055, Mushin, Lagos | PPMV | 4 | 175 | RDT01-006276through RDT01-006450 | 2026-04-26 |
| Uchenna Drug StoreOUT-0026, Ikeja, Lagos | PPMV | 4 | 175 | RDT01-000001through RDT01-000175 | 2026-04-26 |
| Emeka ChemistOUT-0052, Mushin, Lagos | PPMV | 4 | 175 | RDT01-006101through RDT01-006275 | 2026-04-26 |
| Adaeze Patent Medicine StoreOUT-0028, Ikeja, Lagos | PPMV | 4 | 175 | RDT01-000176through RDT01-000350 | 2026-04-26 |
| Grace Drug StoreOUT-0231, Maiduguri, Borno | PPMV | 4 | 175 | RDT01-026450through RDT01-026624 | 2026-04-28 |
| Yerima Medicine StoreOUT-0254, Jere, Borno | PPMV | 4 | 175 | RDT01-026975through RDT01-027149 | 2026-04-28 |
| Bukar Drug StoreOUT-0232, Maiduguri, Borno | PPMV | 4 | 175 | RDT01-026625through RDT01-026799 | 2026-04-28 |
| Grace ChemistOUT-0247, Jere, Borno | PPMV | 4 | 175 | RDT01-026800through RDT01-026974 | 2026-04-29 |
| Folasade Medicine StoreOUT-0177, Umuahia North, Abia | PPMV | 4 | 175 | RDT01-023000through RDT01-023174 | 2026-05-04 |
| Hope Drug StoreOUT-0078, Ikorodu, Lagos | PPMV | 5 | 125 | RDT01-000351through RDT01-000475 | 2026-04-27 |
| Folasade PharmacyOUT-0077, Ikorodu, Lagos | Community pharmacy | 5 | 125 | RDT01-006451through RDT01-006575 | 2026-04-27 |
| Al-Amin Patent and Proprietary Medicine StoreOUT-0261, Konduga, Borno | PPMV | 5 | 125 | RDT01-027150through RDT01-027274 | 2026-04-28 |
| Excellence Patent and Proprietary Medicine StoreOUT-0223, Ohafia, Abia | PPMV | 4 | 100 | RDT01-019725through RDT01-019824 | 2026-04-25 |
| Grace Patent Medicine StoreOUT-0201, Isiala Ngwa North, Abia | PPMV | 4 | 100 | RDT01-023525through RDT01-023624 | 2026-04-29 |
| Goni Community PharmacyOUT-0278, Biu, Borno | Community pharmacy | 4 | 100 | RDT01-029900through RDT01-029999 | 2026-04-30 |
From a NAFDAC reference to an individual pack, and back
An alert is not a separate register. It is one more event against a serial that already has a history.
Take any NAFDAC reference on this screen, open the serial beside it, and the trace timeline shows the same pack from the commodity side: the batch it was released in, every custody hop it took, the outlet that held it, and the alert as the point where the chain broke. The recall works the same way in the other direction, from a batch to the serial range to the outlets holding it. That is what makes a recall executable rather than announced.
