Key findings
Five results, different turnout patterns and questions in the paperwork
APC won four of the five by-elections, while APM won Sakwa. MundX’s count shows the same leading parties, although some vote totals differ from the announced results. The result sheets also reveal conflicting figures and changes between document versions. S03 · S04 · S05 · S07 · S09
The leading parties agree, but the totals differ. Across all parties, MundX counted 143 fewer votes than the reported Gombe declaration and 258 fewer in Dawakin Kudu. In Udu, its APC count is 156 above the announced figure.
Participation varied widely. Among results with complete and consistent figures, votes cast ranged from 6.9% of registered voters in Udu to 41.1% in Disina. These rates describe the included polling units, not final constituency-wide turnout.
Some sheets contain directly conflicting figures. One Udu sheet records 17 accredited voters, party scores adding up to 420 and a bottom valid-vote total of 430. A Kano sheet records two different valid-vote totals.
Replacement sheets need a visible explanation. Nine pairs of earlier and later sheets showed unchanged party scores but changes to some accounting figures. Other document cases show why each change must be examined on its own.
Ward results would make the count easier to follow. Publishing Form EC8B alongside polling-unit sheets would allow citizens to see which figures were accepted at ward collation. This is the report’s lead recommendation for the general election.
01 · Results and declarations
How the MundX count compares with the announced results
The tables compare the votes MundX counted from available polling-unit sheets with INEC declarations reported by the media. A plus sign means MundX’s count is higher; a minus sign means it is lower. A difference can reflect missing results, unclear entries, corrections or changes during collation; the total alone does not tell us which.
| Contest / winner | MundX count for winner | Declared votes¹ | Difference | Difference (%) |
|---|---|---|---|---|
| Gombe/Kwami/FunakayeAPC · Usman Maijama’a Kallamu | 40,983 | 41,121 | −138 | −0.34% |
| Dawakin KuduAPC · Hussain Yusuf-Datti | 22,641 | 22,890 | −249 | −1.09% |
| UduAPC · Okolosi Ator | 8,880 | 8,724 | +156 | +1.79% |
| DisinaAPC · Yakubu Ali | 5,534 | 5,846 | −312 | −5.34% |
| SakwaAPM · Adamu Yakubu | 8,227 | 8,515 | −288 | −3.38% |
¹ Declaration figures are taken from the media reports linked below. Some smaller-party totals are missing or disputed. A dash means no dependable figure was available, not zero votes.
Gombe/Kwami/Funakaye
| Party | MundX count | Declared votes¹ | Difference |
|---|---|---|---|
| APC | 40,983 | 41,121 | −138 |
| APM | 868 | 872 | −4 |
| APP | 297 | 298 | −1 |
| LP | 3,553 | 3,553 | 0 |
| NDP | 707 | 707 | 0 |
APC’s declared 41,121 votes put it 37,568 ahead of Labour Party. MundX counted 40,983 for APC, a difference of 138 votes. The LP and NDP totals match the reported declaration exactly. S03 · S06
Across all five parties, MundX counted 46,408 votes, compared with 46,551 valid votes in the reported declaration: a difference of 143, or 0.31%. The declared ballot total also included 750 rejected votes, bringing all votes cast to 47,301. S03
Dawakin Kudu
| Party | MundX count | Declared votes¹ | Difference |
|---|---|---|---|
| ADP | 84 | 89 | −5 |
| APC | 22,641 | 22,890 | −249 |
| APP | 53 | 53 | 0 |
| LP | 38 | 39 | −1 |
| PDP | 105 | 108 | −3 |
| PRP | 270 | 270 | 0 |
APC won by a wide margin, with a reported 22,890 votes against PRP’s 270. MundX counted 22,641 for APC, 249 fewer. Its PRP and APP totals match the reported declaration. S04
The six party totals add up to 23,449 in the NAN report, compared with MundX’s 23,191: a difference of 258 votes, or 1.10%.
The table uses PDP’s 108 votes from NAN’s report of the returning officer’s announcement. Another account gives 180. Using that figure would increase the total difference to 330 votes. S04 · S10
Udu
| Party | MundX count | Declared votes¹ | Difference |
|---|---|---|---|
| APC | 8,880 | 8,724 | +156 |
| APM | 53 | — | — |
| PDP | 242 | 214 | +28 |
MundX’s APC count of 8,880 is 156 above the consistently reported declaration of 8,724. The PDP count is also higher: 242 against 214 in TVC’s report, a difference of 28. S05 · S08
Reports disagree on the smaller-party figures. AIT gives PDP 212, which would make the difference 30. A secondary report gives APM 33 in its summary, while its ward figures add up to 25. The table leaves APM’s declared total blank because these accounts conflict. S06 · S11
Disina
| Party | MundX count | Declared votes¹ | Difference |
|---|---|---|---|
| APC | 5,534 | 5,846 | −312 |
| APM | 5,018 | 5,225 | −207 |
| APP | 40 | — | — |
| PRP | 3,541 | 3,701 | −160 |
| ZLP | 13 | — | — |
Disina had the closest contest among the five reported outcomes. APC’s 5,846 votes put it 621 ahead of APM’s 5,225. PRP followed with 3,701. S07 · S08
MundX’s figures are lower for all three: APC by 312, APM by 207 and PRP by 160. Together, the difference is 679 votes. The cited declaration reports do not give APP or ZLP totals.
Sakwa
| Party | MundX count | Declared votes¹ | Difference |
|---|---|---|---|
| APC | 3,610 | 3,771 | −161 |
| APM | 8,227 | 8,515 | −288 |
| APP | 23 | — | — |
| PDP | 2,082 | 2,076 | +6 |
| PRP | 722 | 727 | −5 |
| ZLP | 15 | — | — |
APM won Sakwa with a reported 8,515 votes, ahead of APC’s 3,771 by 4,744. MundX counted 8,227 for APM, 288 fewer, and 3,610 for APC, 161 fewer. S07 · S09
PDP’s MundX total is six votes above the reported declaration, while PRP’s is five below. Across the four parties with reported figures, MundX counted 448 fewer votes. APP and ZLP totals are not given in the cited declaration accounts.
02 · Turnout
Fewer than one in ten registered voters cast ballots in the Udu and Gombe results analysed
In the polling units with complete and consistent figures, the share of registered voters who cast ballots was 6.9% in Udu, 9.4% in Gombe and 14.7% in Dawakin Kudu. The rates were higher in the two Bauchi constituencies: 33.6% in Sakwa and 41.1% in Disina.
Turnout is votes cast divided by registered voters in the same polling units. Votes cast include valid and rejected votes, but exclude spoiled ballots. The main chart uses 1,310 results with complete figures that agree with one another. Missing or conflicting records are left out, so these are not final turnout rates for the whole constituencies.
Including all results with the required figures leaves the five constituencies in the same order. This supports the pattern in the available data, while the exact constituency-wide rates remain outside what these records establish.
03 · Voting patterns
A dominant showing in Dawakin Kudu and a closer contest in Disina
| Constituency | Leading party | Votes counted for all parties | Leader’s share |
|---|---|---|---|
| Gombe/Kwami/Funakaye | APC | 46,408 | 88.3% |
| Dawakin Kudu | APC | 23,191 | 97.6% |
| Udu | APC | 9,175 | 96.8% |
| Disina | APC | 14,146 | 39.1% |
| Sakwa | APM | 14,679 | 56.0% |
APC accounted for 97.6% of the votes counted in Dawakin Kudu and 96.8% in Udu. In Gombe, its share was 88.3%. Disina was much more competitive: APC’s 39.1% share left most votes divided among the other parties. APM led Sakwa with 56.0%.
Support for smaller parties was also concentrated in particular places. In Dawakin Kudu, Gurjiya ward supplied 177 of PRP’s 270 votes—65.6% of its total in the MundX count. This shows where the party’s recorded support was strongest; it does not explain voters’ reasons for choosing it.
Shares are calculated from the readable party votes in the available sheets. They describe the results counted by MundX, which include some figures still requiring closer checking.
04 · Conflicting result sheets
What the original documents show
These cases show conflicts within a sheet or between related images. They do not, on their own, establish fraud or show whether the disputed entries changed an announced result.
17 accredited voters, but party scores add up to 420
The sheet records 559 registered voters and 17 accredited voters. Its top valid-vote entry is also 17. Yet the party rows show APC 415, APM 3 and PDP 2—a total of 420. The bottom valid-vote total reads 430.
The figures conflict on the face of the document. The photograph does not show which of them was carried into the ward total.
Source: INEC result record · original image.
Two different valid-vote totals on one sheet
The top valid-vote box reads 0. The bottom total reads 136, matching APC’s 134 and PRP’s 2. The sheet also records 136 accredited voters.
Other entries add to the confusion: rejected ballots are written as 647, issued ballots as 783, unused ballots as 136 and used ballots as 136. These figures do not provide a consistent account of the ballots.
The party rows are clear enough to add together, but the rest of the sheet contains conflicting information about the same poll.
Source: INEC result record · original image.
Two polling-unit records carry images with the same printed identity
The image listed under Alh. Yakubu, Hassan Primary School, polling unit 002, is printed for a different location: Audu Bojude Open Space, polling unit 020. A second image listed under unit 020 carries the same printed code and form serial number, 0514, but has amended figures.
Between the images, the valid-vote total changes from 26 to 13. APC changes from 21 to 11 and LP from 3 to 2. APP and NDP entries are crossed out. The photographs show a conflict between the online listing and the printed form, as well as changes to the recorded votes.
The documents alone do not establish why the same printed identity appears under two polling-unit records. A mix-up in the allocation or use of the form is one possible explanation. The case illustrates why the polling-unit code on a sheet matters as much as the figures written on it.
Sources: image listed under unit 002 · image listed under unit 020.
Overwritten entries make the result difficult to follow
The APC and APM entries on this sheet have been overwritten. The document records 165 accredited voters and a valid-vote total of 176. The unclear party entries make it difficult for a reader to establish the complete party breakdown from the photograph.
This case shows why clear copies and an explanation of corrections matter. A published sheet should allow the public to read the accepted figures without having to guess what an alteration means.
Source: published result image.
05 · Replacement sheets
What changed between earlier and later copies?
MundX compared earlier and later images for nine polling units: eight in Gombe and one in Dawakin Kudu. No party scores changed in these nine pairs, although several figures relating to accreditation or ballot papers were amended.
| Polling unit | What changed | Party-score total before → after | Compare images |
|---|---|---|---|
| 19/09/01/013HAWAN DAWAKI A/B · Dawakin Kudu | Accredited voters changed from 581 to 76; APC 75 and PDP 1 stayed the same. | 76 → 76 | Earlier · Later |
| 15/05/05/005UNG. TAFIDA, KOFAR TAFIDA · Gombe/Kwami/Funakaye | Issued/unused ballot entries were rewritten; APC 78 and LP 2 stayed unchanged. | 80 → 80 | Earlier · Later |
| 15/06/02/003BABAYO BELLO, KOFAR SALE KAFINTA · Gombe/Kwami/Funakaye | Unused ballot papers changed from 945 to 935; party votes stayed the same. | 62 → 62 | Earlier · Later |
| 15/06/10/012MALAM KURI II, PANTAMI PRI. SCH. · Gombe/Kwami/Funakaye | Accounting fields were annotated; the seven party votes are unchanged. | 7 → 7 | Earlier · Later |
| 15/06/10/021NITDA · Gombe/Kwami/Funakaye | Issued ballot papers changed from 17 to 164; all party votes stayed the same. | 17 → 17 | Earlier · Later |
| 15/08/07/021GARIN TUGUJI, KOFAR JAURO TUGUJI · Gombe/Kwami/Funakaye | Accreditation and ballot-accounting figures changed; the four recorded party totals stayed at 46 votes. | 46 → 46 | Earlier · Later |
| 15/08/08/013SHANGAYARI, KOFAR SHANGAYARI · Gombe/Kwami/Funakaye | Issued ballot papers changed from 103 to 544; APC 94 and LP 5 stayed unchanged. | 99 → 99 | Earlier · Later |
| 15/08/09/006KOFAR AJIYA, ADULT EDUC. OFFICE · Gombe/Kwami/Funakaye | Total used ballot papers changed from 106 to 107; party votes remained identical. | 103 → 103 | Earlier · Later |
| 15/08/10/008JAURO TINDA, KOFAR JAURO TINDA · Gombe/Kwami/Funakaye | Issued ballot papers changed from 50 to 300; party votes remained identical. | 50 → 50 | Earlier · Later |
This finding applies to these nine pairs. It does not cover every replacement in the election. The separate Gombe identity case above includes changed party entries and is not part of this group.
A valid-vote entry changed from 159 to 154
In another pair, the top valid-vote entry changes from 159 to 154. The bottom total is 154 in both images, and the party scores remain APC 78, APM 53 and PRP 23. Blank APP and ZLP cells become explicit zeros.
The two versions were available through different routes on INEC’s results systems during the review. The election listing linked the earlier image, while the recent-upload page and IReV showed the later one. A reader could therefore encounter a different version depending on the page used.
These examples show that a replacement can change the ballot account without changing the party scores. Keeping both copies visible, with the reason for the change and the version used at collation, would make the process easier to understand.
Sources: earlier INEC record · later INEC record.
06 · Wider data flags
262 polling-unit records contain figures that need closer checking
Five arithmetic checks identified 262 polling-unit records with at least one discrepancy. The checks cover party totals, voter numbers and the use of ballot papers. Some records fail more than one check, so the rows below cannot be added together to count affected polling units.
| Issue flagged | Polling units flagged | Results with enough figures to check |
|---|---|---|
| Party scores do not add up to the stated valid votes | 52 | 1,481 |
| Valid and rejected votes exceed accredited voters | 78 | 1,416 |
| Accredited voters exceed registered voters | 2 | 1,610 |
| Used ballots do not equal spoiled, rejected and valid ballots | 86 | 1,350 |
| Issued ballots minus unused ballots do not equal used ballots | 172 | 1,532 |
These are flags in the figures read from the available sheets, not 262 confirmed instances of wrongdoing. Unclear handwriting, missing entries or a reading error may explain some flags. The photographed cases above show discrepancies checked directly against the documents.
See the arithmetic flags for each constituency
| Contest | Party sum | Votes / accredited | Accredited / registered | Used ballot total | Issued / unused |
|---|---|---|---|---|---|
| Gombe/Kwami/Funakaye | 27 / 816 | 37 / 774 | 2 / 883 | 48 / 733 | 103 / 842 |
| Dawakin Kudu | 9 / 286 | 12 / 281 | 0 / 297 | 20 / 274 | 22 / 288 |
| Udu | 5 / 217 | 12 / 203 | 0 / 250 | 3 / 194 | 11 / 237 |
| Disina | 6 / 80 | 11 / 80 | 0 / 89 | 8 / 76 | 17 / 85 |
| Sakwa | 5 / 82 | 6 / 78 | 0 / 91 | 7 / 73 | 19 / 80 |
Each cell shows flagged results / results with enough figures for that check. “Party sum” compares party scores with the stated valid total. The two ballot checks compare the figures for ballots issued, unused, used, spoiled, rejected and valid.
The largest category concerns ballot accounting. In 172 records, issued ballots minus unused ballots does not equal the stated used-ballot total. In 78, valid and rejected votes together exceed the recorded number of accredited voters. Both findings make the underlying sheets worth closer attention; neither establishes, by itself, how many votes were accepted at collation.
The searchable data below allow readers to find each flagged record and open its result image.
07 · Result availability
Clear polling-unit lists are essential to understanding coverage
| Constituency | Polling-unit results in the MundX count |
|---|---|
| Gombe/Kwami/Funakaye | 896 |
| Dawakin Kudu | 302 |
| Udu | 258 |
| Disina | 90 |
| Sakwa | 93 |
The two official results systems showed different expected polling-unit totals for the Bauchi contests. For Disina, one listed 95 and the other 249; for Sakwa, the figures were 100 and 147. S02
| Constituency | INEC results-sheet module | IReV-based list |
|---|---|---|
| Disina | 95 | 249 |
| Sakwa | 100 | 147 |
Without matching lists of polling-unit codes for each constituency, the larger gaps cannot simply be called missing results. Publishing one clear election-specific list would help citizens distinguish a result that is still outstanding from a polling unit that belongs outside the contest.
The figures describe the records reviewed on 20 September. The results included in the count and the expected totals above are separate measures.
08 · Ahead of the general election
Make the journey from polling unit to ward visible
Form EC8A records the polling-unit result. Form EC8B brings polling-unit results together at the ward. Publishing both would allow people to compare what was recorded at their polling unit with what was accepted at the next stage. S15
What INEC should do
Publish Form EC8B on the results portal. Publish the completed ward result sheet for each contest and link it to the polling-unit Forms EC8A. Include the figures accepted from each polling unit and explanations for any changes or exclusions. This would let the public see exactly what entered ward collation.
Keep every version of a replaced sheet. Keep the earlier and later images together, label the version used for collation and state when and why a change was made. A replacement should have a visible history.
Make each result easy to identify and read. Publish clear, complete images showing the polling-unit code, party scores, voter totals and certification. Check that the identity on the form matches the polling unit under which it appears.
Publish clear totals and polling-unit lists. Before voting, publish the polling units and registered-voter totals for each constituency. As results are released, distinguish results received, results counted and polling units where voting was cancelled or did not take place.
Provide a public way to report discrepancies. Allow citizens to submit a polling-unit code, result link and a description of the conflicting figures. Publish the response or correction alongside the affected result so that others can see how the issue was handled.
What citizens should do
Keep a copy of the result displayed at your polling unit. Record the election, date, ward and full polling-unit code. A clear photograph of the complete publicly displayed result sheet provides a reference for later checks.
Compare the displayed result with the portal copy. Check the polling-unit identity and party figures. Keep the original image and portal link if anything differs, including any replacement version.
Follow the figures into the ward result. When Form EC8B is available, compare the polling-unit entries with the corresponding EC8A sheets and check the ward totals. Look for an explanation wherever a figure changes or a result is excluded.
Report specific differences with the evidence. Name the exact polling unit and the figures that disagree, and attach the relevant documents. Share the full context and any subsequent correction; an unexplained difference alone does not establish fraud.
Supporting data
Explore the polling-unit results
Search by polling-unit code, location or constituency. The first view shows the 262 records with an arithmetic flag. Choose “All results counted” to explore the 1,639 records behind the MundX totals.
The searchable results and downloadable tables are available in the HTML edition.
Sources and data notes
About the figures in this report
The report covers the five Nigerian by-elections held on 19 September 2026. MundX counted readable party figures from 1,639 INEC polling-unit result sheets available by 20 September. The figures are a count of available records, not a survey. Some results are incomplete or contain entries that need further checking.
Announced constituency totals come from media accounts of INEC’s declarations. Where accounts disagree, the relevant table states the difference. Party totals that were not reported have not been treated as zero.
Turnout uses registered voters and votes cast from the same polling units. The main calculation includes only complete figures where party scores add up to the stated valid total, votes cast do not exceed accredited voters, accredited voters do not exceed registered voters, and the polling-unit and party identities agree. This leaves 1,310 polling units. Excluding incomplete or conflicting records means the rates should not be read as the turnout of the whole constituency.
The arithmetic flags come from checks of the recorded figures. Findings described in the document cases were checked against the images. Source links are provided so that readers can inspect the evidence.
- S01INEC — Election calendar2026-09-21
- S02INEC — Results Sheet Viewing Module2026-09-21
- S03Independent Newspaper — INEC declares APC winner of Gombe/Kwami/Funakaye2026-09-20
- S04Premium Times / NAN — APC wins Dawakin Kudu constituency by-election2026-09-20
- S05TVC News — APC wins bye-election in Delta State2026-09-19
- S06AIT — APC wins bye-elections in Gombe, Delta states2026-09-20
- S07The Guardian — Opposition falters in bye-election as APC wins four seats ahead 20272026-09-20
- S08Punch — By-elections: Tinubu, Yilwatda hail APC’s four-seat haul2026-09-21
- S09Business Times Nigeria — INEC declares APM’s Adamu Yakubu winner of Sakwa2026-09-20
- S10TheTimes Nigeria — APC’s Datti wins Kano by-election2026-09-20
- S11Flashpoint News — Ator Okolosi wins Udu constituency seat2026-09-20
- S15INEC — Manual for Election Officials — ward and local government collation2023
Results used in the analysis
- Gombe/Kwami/Funakaye — data used in this report896 polling-unit results · 20 September 2026
- Dawakin Kudu — data used in this report302 polling-unit results · 20 September 2026
- Udu — data used in this report258 polling-unit results · 20 September 2026
- Disina — data used in this report90 polling-unit results · 20 September 2026
- Sakwa — data used in this report93 polling-unit results · 20 September 2026