Introductie

Abacus software voor verkiezingsuitslagen en zetelverdeling

Welkom bij Abacus, software voor verkiezingsuitslagen en zetelverdeling. Dankjewel dat je onze software gebruikt!

Abacus vervangt de module Uitslagvaststelling van het programma Ondersteunende Software Verkiezingen (OSV2020) en wordt bij 10-20 gemeenten ingezet bij de gemeenteraadsverkiezingen op 18 maart 2026. Uiteindelijk zal Abacus ingezet worden bij alle verkiezingen in Nederland.

Je gebruikt Abacus om de papieren processen-verbaal te digitaliseren en de tellingen te controleren, zodat tel- en schrijffouten kunnen worden gedetecteerd en voorkomen.

Abacus in het verkiezingsproces

Het proces van uitslagvaststelling begint op de dag van stemming. Wanneer de stembussen gesloten zijn worden de stemmen geteld en maakt de voorzitter van het stembureau een proces-verbaal op. Dan wordt alles naar een centrale plek in de gemeente gebracht, waar het gemeentelijk stembureau de werkzaamheden overneemt. Zij controleren de processen-verbaal en voeren alle resultaten digitaal in.

Abacus is de nieuwe software die hiervoor zal worden gebruikt. Elk proces-verbaal wordt door twee invoerders van het gemeentelijk stembureau ingevoerd. Wanneer alle stembureaus zijn ingevoerd kan de zitting worden afgerond en genereert Abacus een proces-verbaal van het gemeentelijk stembureau (Na 31-2) en een EML-bestand. Het centraal stembureau kan dit dan controleren en de uitslag definitief vaststellen, om vervolgens de zetelverdeling te berekenen.

Let op: Voor de gemeenteraadsverkiezingen op 18 maart 2026 wordt Abacus alleen door het gemeentelijk stembureau gebruikt. Voor de werkzaamheden van het centraal stembureau wordt OSV2020 gebruikt.

Voor meer informatie lees je het document Het verkiezingsproces en Abacus, waarin precies wordt uitgelegd hoe het verkiezingsproces werkt.

Rollen in Abacus

Abacus kent drie rollen: de beheerder, de coördinator en de invoerder. Hieronder staat een kort overzicht van de taken die in deze rollen worden uitgevoerd.

Beheerder

  • Abacus installeren en zorgen dat de applicatie goed draait
  • Verkiezingen toevoegen en beheren
  • Stembureaus toevoegen en wijzigen (zolang de invoer nog niet is gestart)
  • Gebruikers toevoegen en beheren (alle rollen)

Instructies voor jouw rol vind je hier: Instructies beheerder

Coördinator

  • Verkiezingen en zittingen beheren
  • Invoerders helpen bij het invoeren
  • Helpen bij het oplossen van fouten en waarschuwingen
  • Gebruikers toevoegen en beheren (alleen invoerders)
  • Stembureaus toevoegen en wijzigen
  • Proces-verbaal van de zitting van het gemeentelijk stembureau voorbereiden

Instructies voor jouw rol vind je hier: Instructies coördinator

Invoerder

  • Processen-verbaal van stembureaus invoeren: alle vinkjes en getallen overnemen in Abacus zoals ze op het papieren proces-verbaal staan
  • Corrigendum invoeren: alleen de gewijzigde aantallen invoeren
  • Fouten en waarschuwingen: de instructies volgen in Abacus en eventueel de coördinator om hulp vragen

Instructies voor jouw rol vind je hier: Instructies invoerder

Vragen en bijdragen

Met vragen over het gebruik van Abacus of over het verkiezingsproces kun je terecht bij het Informatiepunt Verkiezingen op de website van de Kiesraad.

Heb je een bug of beveiligingsprobleem gevonden, of wil je een feature request doen? Op de GitHub-repository van Abacus lees je hoe je kunt bijdragen.

Uitproberen, installeren en starten

Het uitproberen, installeren en starten van Abacus kan op verschillende manieren.

Is Abacus nieuw voor je, dan kun je het uitproberen in een online testomgeving. Wil je Abacus installeren, gebruik dan een van de installatiemethoden in dit hoofdstuk.

Ook vind je hier andere handige informatie, zoals de help, testdocumenten en de systeem- en browservereisten.

Kom je er met de onderstaande instructies niet uit, neem dan contact op met het team via abacus@kiesraad.nl.

Uitproberen

Als je Abacus wilt uitproberen of testen zonder het te installeren, kun je dit doen op https://abacus-test.nl/. Hier heb je de volgende opties:

  • Maak een nieuwe omgeving aan door bovenaan op Create new te klikken. Je kunt kiezen uit de twee meest recente main builds en release builds.
  • Als je wilt testen hoe de omgeving werkt na de implementatie van een specifieke pull request, klik dan op Create new bij de relevante regel onder Pull requests.
  • Zoek je naar een bepaalde pull request maar staat die er niet bij, klik dan op Sync pull requests. De lijst wordt dan vernieuwd.
  • Bestaande omgevingen staan onder Running services. Omgevingen die je eerder hebt aangemaakt vind je hier terug en kun je ook stoppen.

Op https://abacus-test.nl/ is het alleen mogelijk om een testomgeving aan te maken waarin al testgegevens staan. Als je met een lege database wilt beginnen moet je Abacus downloaden en installeren.

Installeren en starten

Bij de onderstaande installatiemethodes is aangegeven op welke besturingssystemen ze werken. De methoden voor Linux werken op alle gangbare (recente) Linux-distributies en zijn getest op Ubuntu (22.04 en 24.04) en Debian (12/bookworm en 13/trixie). De Windows-methoden zijn getest op Windows 11.

Kijk voordat je begint ook naar de systeem- en browservereisten voor Abacus.

Windows

Met deze methode installeer je Abacus op een Windows-machine. Deze versie is geschikt om mee te testen. Het is nog niet de definitieve versie van Abacus. Die ontvangen de gemeenten rechtstreeks van de Kiesraad.

Downloaden

  • Op de hoofdpagina van de Abacus-repository klik je aan de rechterkant op Releases.
  • Klik bij de bovenste release op Assets en klik vervolgens op het installatiebestand abacus-windows-setup-[versienummer].exe om het te downloaden.

Installeren

  • Dubbelklik op het gedownloade bestand om het installatieprogramma te openen. Klik op Installeren.

Installeren op Windows

  • Tijdens het installatieprogramma wordt Microsoft Visual C++ Redistributable geïnstalleerd en wordt een firewallregel ingesteld via Windows Command Prompt. Daarom zie je tijdens de installatie twee keer een pop-up waarin wordt gevraagd Wilt u toestaan dat deze app wijzigingen aan uw apparaat aanbrengt?. Klik in beide gevallen op Ja.

Installeren op Windows

  • Klik bij de melding Het toevoegen van de firewallregel is succesvol uitgevoerd op OK.
  • Abacus is nu geïnstalleerd. Als je Abacus niet direct wilt starten en de interface niet wilt openen in de browser, zet dan de vinkjes uit. Klik op Voltooien om het installatieprogramma te sluiten.

Installatie voltooid

Starten

Bij deze installatiemethode worden drie snelkoppelingen op het bureaublad geplaatst:

  • Met 1. Start Abacus GR26 server start je de Abacus-server. Gebruik deze snelkoppeling voordat je Abacus opent in de browser.
  • Met 2. Open Abacus GR26 in browser waarmee je de browserinterface opent.
  • Met Abacus GR26 database map open je de map met de databasebestanden.

Snelkoppelingen op het bureaublad

Let op: Wanneer je de Abacus-server start, start Windows een command prompt. Zorg ervoor dat dit venster open blijft. Als je dit venster sluit wordt de Abacus-server gestopt.

Linux

Met deze methode installeer je Abacus op een Linux-machine.

Downloaden

  • Op de hoofdpagina van de Abacus-repository klik je aan de rechterkant op Releases.
  • Klik bij de bovenste release op Assets en klik vervolgens op het installatiebestand abacus-linux-[versienummer].tar.gz om het te downloaden.
  • Pak de tarball uit:
tar -xvf abacus-linux-[versienummer].tar.gz ~/mapnaarkeuze/

Installeren

Kopieer Abacus en het servicebestand naar de juiste mappen:

sudo cp abacus /usr/local/bin/abacus
sudo cp abacus.service /etc/systemd/system/abacus.service

Maak Abacus uitvoerbaar:

sudo chmod +x /usr/local/bin/abacus

Laad systemd opnieuw en schakel de service in, zodat Abacus direct start en bij het opstarten van het systeem wordt gestart:

sudo systemctl daemon-reload
sudo systemctl enable --now abacus.service

Beheren

Zo bekijk je het service-logboek:

sudo journalctl -u abacus.service

Stop de Abacus-service:

sudo systemctl stop abacus.service

Start de Abacus-service:

sudo systemctl start abacus.service

De database vind je in /var/lib/abacus/.

Starten met lege database

In de map met het installatiebestand maakt Abacus het databasebestand db.sqlite aan waarin alle verkiezings- en gebruikersgegevens worden opgeslagen. Gooi dit bestand weg als je deze gegevens wilt verwijderen en Abacus wilt starten met een lege database.

Je kunt ook de database resetten door Abacus te starten met het argument -r of --reset-database.

Help

Voor meer informatie over de argumenten bekijk je de helpfunctie via de commandline. Op macOS en Linux gebruik je de volgende opdracht:

./path/to/binary/abacus-[OS-version] --help

En op Windows (zonder .\ in Command Prompt):

.\path\to\binary\abacus-windows-[version].exe --help

Testdocumenten

In de map test-pvs-juinen op GitHub staan de processen-verbaal voor de testgemeente Juinen, waarmee je de testverkiezing kunt invoeren.

Daarnaast staan in de map test-emls-juinen de EML-bestanden waarmee je deze testverkiezing zelf kunt toevoegen.

Systeemvereisten

Bij de gemeenteraadsverkiezingen van 2026 worden zowel OSV2020 als Abacus ingezet. Omdat beide programma's op het systeem moeten kunnen draaien volgt Abacus de systeemvereisten van OSV2020.

Deze systeemvereisten en de aansluit- en gebruiksvoorschriften vind je ook in de GR26 Toolkit Verkiezingen op de website van de Kiesraad:

Processortype

Windows/Linux:

  • Intel Core i5-9400 / 2,9 GHz
  • AMD Ryzen 5 3400G / 3,7 GHz
  • Minimaal 4 rekenkernen

Besturingssysteem

Gebruik een recente en ondersteunde versie van:

  • Windows 11, Windows server 2022
  • Linux: Ubuntu 22.04 LTS

MacOS wordt niet ondersteund.

Systeemgeheugen

  • Tot 10 stembureaus / 2 tot 4 invoerstations: 4 GB of beter
  • Tussen 10 en 25 stembureaus / 4 tot 8 invoerstations: 6 GB of beter
  • Tussen 26 en 100 stembureaus / 8 tot 15 invoerstations: 8 GB of beter
  • Tussen 100 en 200 stembureaus / 15 tot 24 invoerstations: 12 GB of beter
  • Meer dan 200 stembureaus / meer dan 25 invoerstations: 24 GB of beter

Vrije schijfruimte

10 GB vrije schijfruimte

Geen internet

Gebruik Abacus niet op een computer die verbonden is met het internet. Abacus geeft een foutmelding als een verbinding met internet wordt gedetecteerd.

Browserondersteuning

Hieronder staan de ondersteunde desktopbrowsers en versies. Mobiele browsers worden niet ondersteund.

BrowserOSVersie
ChromeWindows/Mac/LinuxLaatste 2
FirefoxWindows/Mac/LinuxLaatste 2
EdgeWindowsLaatste 2
SafariMacLaatste 2

Gebruik geen adblocker

Sommige adblockers in browsers kunnen een foutmelding in Abacus veroorzaken. Zet adblockers daarom uit of voeg Abacus toe aan de lijst met uitzonderingen in de adblocker.

Gebruik geen wachtwoordmanager

De computers waarop Abacus wordt geïnstalleerd zijn geen persoonlijke computers. Het is belangrijk dat wachtwoorden van Abacus niet worden opgeslagen op een plek die voor andere gebruikers ook bereikbaar is. Zorg er daarom voor dat je geen wachtwoordmanager gebruikt. Gebruik je een externe wachtwoordmanager, schakel die dan uit. In de browser zet je dit als volgt uit:

  • Chrome: klik op de drie puntjes rechtsboven, selecteer Wachtwoorden en Automatisch invullen, klik op Google Wachtwoordmanager en zet de optie Aanbieden om wachtwoorden op te slaan uit.
  • Firefox: klik op de drie streepjes rechtsboven, selecteer Instellingen, dan Privacy & Beveiliging en zet de optie Vragen om wachtwoorden op te slaan uit.
  • Edge: klik op de drie puntjes rechtsboven, selecteer Wachtwoorden en zet de optie Vragen om wachtwoorden en wachtwoordsleutels op te slaan uit.

Meewerken als ontwikkelaar

Ben je ontwikkelaar en wil je Abacus handmatig installeren en gebruiken? Lees dan deze README-bestanden in de Abacus repository:

Ook vind je daar meer informatie over de functionaliteit, architectuur en security van Abacus.

Abacus installeren met Docker Compose (Linux, macOS, Windows)

Als ontwikkelaar kun je ook Docker gebruiken om Abacus te starten. Hiermee start je de backend in watch mode. Assets worden geserveerd door de build tool vite en maken dus gebruik van Hot Module Reloading:

docker compose up

Cheatsheet: zo gebruik je Abacus

Deze cheatsheet is een handig overzicht van de sneltoetsen voor navigatie. Ook lees je hier wat je moet doen bij fouten en waarschuwingen, en hoe je de invoer kunt pauzeren.

Invoeren en sneltoetsen

Met het toetsenbord kun je snel door de pagina's heen nagiveren. Hiervoor gebruik je de volgende sneltoetsen:

  • Met tab ↹, pijl omlaag ↓ of enter ⏎ ga je naar het volgende veld.
  • Vinkjes of keuzerondjes kun je met de spatiebalk aanzetten. Je zet een vinkje weer uit door nog een keer op de spatiebalk te drukken. Bij keuzerondjes druk je op pijl omlaag ↓ of pijl omhoog ↑ om je keuze te wijzigen.
  • Met shift ⇧+tab ↹ of pijl omhoog ↑ ga je naar het vorige veld.
  • Met shift ⇧+pijl omlaag ↓ ga je naar het laatste veld op de pagina. Dit is handig als je geen aantallen meer hoeft in te vullen bij kandidaten en direct het totaal wilt invullen.
  • Met de knop Volgende of met shift ⇧+enter ⏎ ga je naar de volgende pagina/lijst.

Tips:

  • Je hoeft geen nullen in te voeren. Als je een veld leeg laat, wordt dat gezien als een nul. Je kunt direct met tab ↹ naar het volgende veld gaan.
  • Op het proces-verbaal staan ook velden voor het subtotaal van elke kolom. Deze kun je negeren.

Waarschuwingen en fouten

Bij waarschuwingen en fouten doe je het volgende:

  • Controleer of je het papieren proces-verbaal goed hebt overgenomen en herstel eventueel je invoer. Abacus laat duidelijk zien welke velden je extra moet controleren. Let op: je mag het papieren proces-verbaal niet aanpassen, ook niet als je fouten ziet. In dat geval neem je de foute invoer over zoals het op het papier staat.
  • Als alles klopt, vink je de optie Ik heb mijn invoer gecontroleerd met het papier en correct overgenomen aan en kun je doorgaan naar de volgende pagina.
  • In het algemeen geldt: als je niet zeker weet wat je moet doen, overleg dan met je coördinator.

Fouten en waarschuwingen

Tweede invoer

Bij een tweede invoer zie je mogelijk extra waarschuwingen als jouw invoer verschilt met de eerste invoer. Deze los je ook op volgens de instructies bij Waarschuwingen en fouten.

Tweede invoer extra controle

Aan het einde van de invoer zie je de waarschuwingen en fouten nog een keer. Bespreek eerst de fouten met de coördinator. Als alles klopt zet je een vinkje bij Ik heb de fouten besproken met de coördinator en klik je op Afronden.

Tweede invoer controleren en opslaan

Pauzeren of afbreken

Als je pauze neemt, klik dan rechtsboven op Invoer afbreken en vervolgens op Invoer bewaren. Na je pauze klik je onder Je hebt nog een openstaande invoer op het stembureau en kun je doorgaan waar je gebleven was.

Invoer niet bewaren

Als je de invoer wilt afbreken en wilt weggooien, bijvoorbeeld omdat je opnieuw wilt beginnen, klik je rechtsboven op Invoer afbreken en vervolgens op Niet bewaren.

Invoer afbreken

Instructies voor de beheerder

Welkom bij Abacus! Deze tool is ontwikkeld om de verkiezingsuitslagen per stembureau in te voeren en te controleren op fouten en afwijkende uitslagen. Na de installatie van Abacus voeg je een verkiezing toe en importeer je stembureaus. Ook maak je gebruikers aan en kun je ze wijzigen als dit nodig is. In dit document leggen we uit hoe je Abacus instelt en gebruikt als beheerder.

Let op:

Account voor beheerder aanmaken

Wanneer je Abacus voor de eerste keer start is de applicatie leeg. Je begint met het aanmaken van een beheerdersaccount:

  • Klik eerst op Account voor beheerder aanmaken en vul je naam en een gebruikersnaam in.
  • Kies een wachtwoord en klik op Opslaan. Nu kun je direct inloggen met de aangemaakte gegevens.

Verkiezingen beheren - Account voor beheerder aanmaken

Voordat je verdergaat met het toevoegen van een verkiezing kan het handig zijn om eerst een tweede beheerder aan te maken. Kijk hiervoor bij Gebruiker toevoegen.

Verkiezing toevoegen en beheren

Verzamel de gegevens die je nodig hebt om een verkiezing toe te voegen. Zorg dat je de EML-bestanden met de verkiezingsdefinitie (EML 110a) en kandidatenlijsten (EML 230b) en (optioneel) het EML-bestand met de stembureaus (EML 110b) hebt. Als het aantal kiesgerechtigden in de gemeente niet in de EML 110b staat, zorg dan ook dat je dit aantal weet en invult.

  • Als je het account voor de beheerder zojuist hebt aangemaakt, stuurt Abacus je direct naar de juiste pagina om de verkiezing toe te voegen. Als je nog niet op de juiste pagina bent, klik je in het hoofdmenu op Verkiezingen beheren.
  • Klik onderaan de pagina op Verkiezing toevoegen.

Verkiezingen beheren - Verkiezing toevoegen

Verkiezingsdefinitie

Voeg eerst de verkiezingsdefinitie toe:

  • Klik op Bestand kiezen en kies het EML-bestand met de verkiezingsdefinitie (EML 110a).
  • Je ziet nu de digitale vingerafdruk (de hashcode) die bij het bestand hoort, waarvan twee delen zijn afgeschermd. Het aparte TXT-bestand met de volledige digitale vingerafdruk staat in hetzelfde ZIP-bestand als de verkiezingsdefinitie. Voer de ontbrekende delen van de digitale vingerafdruk in en klik op Volgende.

Hashcode invullen

Rol van het stembureau

Nu zie je opties voor de rol van het stembureau. De rol van Centraal stembureau (CSB) wordt in een volgende versie toegevoegd, dus Gemeentelijk stembureau (GSB) is op dit moment de enige optie. Klik daarom meteen op Volgende.

Rol van het stembureau

Kandidatenlijsten

Voeg de kandidatenlijsten toe:

  • Klik weer op Bestand kiezen en voeg nu het EML-bestand met de kandidatenlijsten (EML 230b) toe.
  • Net zoals bij de verkiezingsdefinitie voer je de ontbrekende delen van de digitale vingerafdruk in en klik je op Volgende. De digitale vingerafdruk van het EML-bestand met de kandidatenlijsten (EML 230b) vind je in de PDF van Model I 4: Proces-verbaal over geldigheid en nummering kandidatenlijsten, onderaan elke pagina.

Kandidatenlijsten

Optioneel: stembureaus

Als je een EML-bestand met de stembureaus (EML 110b) hebt, voeg je die toe:

  • Klik op Bestand kiezen en voeg het EML-bestand toe.
  • Controleer de toegevoegde stembureaus aan de hand van de door de gemeente gepubliceerde lijst en klik op volgende.

Controleer stembureaus

Als je deze stap wilt overslaan, klik je op Stap overslaan en stembureaus later toevoegen. Na het toevoegen van de verkiezing kun je de stembureaus dan handmatig toevoegen, wijzigen of verwijderen. Kijk hiervoor bij Stembureaus beheren.

Type stemopneming

Nu zie je opties voor het type stemopneming. Centrale stemopneming (CSO) is op dit moment de enige optie, decentrale stemopneming (DSO) wordt in een volgende versie toegevoegd. Klik daarom meteen op Volgende.

Type stemopneming

Aantal kiesgerechtigden

  • Voer het aantal kiesgerechtigden in. Mogelijk is dit aantal al ingelezen uit het EML-bestand met de stembureaus (EML 110b). Let op: zorg ervoor dat dit getal juist is ingevuld voordat de coördinator de zitting begint. Na het openen van de zitting kan dit getal niet meer worden gewijzigd.
  • Klik weer op Volgende.

Kiesgerechtigden invullen

Controleren en opslaan

  • Controleer de gegevens over de verkiezing die je wilt toevoegen en klik op Opslaan.
  • Als er iets niet klopt klik je rechtsboven op Afbreken. Daarna kun je opnieuw beginnen.

Controleren en opslaan

De verkiezing is nu toegevoegd. Als je de lijst met stembureaus ook hebt toegevoegd, is de verkiezing klaar voor steminvoer. Als dit nog niet gebeurd is, heeft de verkiezing de status Zitting voorbereiden. De steminvoer kan pas beginnen nadat de stembureaus zijn toegevoegd.

Verkiezingen beheren

Stembureaus beheren

Je kunt stembureaus ook handmatig toevoegen, wijzigen en verwijderen om ervoor te zorgen dat de stembureaus in Abacus overeenkomen met de stembureaulijst die voorafgaand aan de verkiezingen is gepubliceerd. Dit is ook handig als de gemeente een klein aantal stembureaus heeft en er geen EML-bestand met stembureaus (EML 110b) aanwezig is.

  • Klik onder de betreffende verkiezing op Stembureaus om naar het overzicht met stembureaus te gaan. Als je al in het voortgangsscherm van de verkiezing bent, kun je daar ook direct op Stembureaus klikken.
  • Stembureaus die al zijn toegevoegd zie je hier staan.

Stembureaus beheren

Stembureau toevoegen

  • Klik op de knop + Stembureau toevoegen.
  • Voer de gegevens van het stembureau in en geef aan welke soort stembureau het is. Als het aantal kiesgerechtigden van het stembureau bekend is kun je dit invullen, maar dat hoeft niet.
  • Klik op Opslaan en toevoegen.

Stembureau toevoegen

Stembureau wijzigen of verwijderen

  • Klik op het stembureau dat je wilt wijzigen of verwijderen.
  • Wijzig het stembureau door de relevante gegevens te veranderen en vervolgens op Wijzigingen opslaan te klikken. Klik op Annuleren als je de wijzigingen toch niet wilt opslaan.
  • Verwijder het stembureau door onderaan het scherm op Stembureau verwijderen te klikken.

Stembureau wijzigen

Gebruikers beheren

Naast het toevoegen van de verkiezing en stembureaus voeg je ook (andere) beheerders, coördinators en invoerders toe. Hiervoor klik je in het hoofdmenu op Gebruikers.

Gebruikers beheren

Gebruiker toevoegen

  • Klik onder Gebruikers beheren op + Gebruiker toevoegen.
  • Eerst kies je de rol van de nieuwe gebruiker: Beheerder, Coördinator of Invoerder. Dit kun je later niet meer aanpassen.

Rol gebruiker

  • Als de gebruiker een invoerder is, kies je eerst of het account op naam staat of anoniem is. Voor een anoniem account moet de gebruiker bij de eerste keer inloggen de naam invoeren. Beheerders en coördinators zien dit scherm niet omdat deze accounts altijd op naam staan.

Invoerder: type account

  • Voer de gebruikersnaam, de volledige naam (behalve bij een anonieme invoerder) en een tijdelijk wachtwoord in. Bij de eerste keer inloggen moet de gebruiker het wachtwoord wijzigen.

Gebruiker toevoegen

Gebruiker wijzigen of verwijderen

  • Ga naar Gebruikers beheren en klik op de betreffende gebruiker in de lijst.
  • Wijzig de volledige naam of reset het wachtwoord. De gebruikersnaam en de rol kunnen niet gewijzigd worden.
  • Verwijder de gebruiker door onderaan het scherm op Gebruiker verwijderen te klikken.

Gebruiker wijzigen of verwijderen

Back-ups

Het kan handig zijn om een back-up te maken van de database in Abacus.

Back-up maken

Back-up de bestanden als volgt:

  • Zorg ervoor dat er geen invoerders bezig zijn met invoeren.
  • Stop Abacus als de applicatie nog draait. Als je bezig bent met een zitting, wordt deze hervat zodra je Abacus weer start.
  • Ga naar de map waarin Abacus is geïnstalleerd. In deze map staan ook de databasebestanden.
  • Maak op een andere locatie een map aan met een handige naam en kopieer alle bestanden met db.sqlite in de naam naar deze map. Let op: verplaats de bestanden niet! Controleer na het kopiëren van de bestanden of de oorspronkelijke bestanden nog in de installatiemap staan.

Back-up terugzetten

Als je de bestanden weer nodig hebt, kun je ze vanuit de back-uplocatie weer kopiëren naar de installatiemap.

  • Zorg dat Abacus is gestopt en let erop dat er geen gebruikers ingelogd zijn.
  • Verwijder alle bestanden met db.sqlite in de naam uit de installatiemap.
  • Kopieer de back-upbestanden naar de installatiemap.

Activiteitenlog

In het activiteitenlog kun je zien welke gebruikers zijn ingelogd en uitgelogd en welke activiteiten ze hebben uitgevoerd. Dit kan handig zijn als je wilt nagaan wat er met een bepaalde invoer gebeurd is.

Activiteitenlog

Instructies voor de coördinator

Welkom bij Abacus! Deze tool is ontwikkeld om de verkiezingsuitslagen per stembureau in te voeren en te controleren op fouten en afwijkende uitslagen. In dit document leggen we uit hoe je Abacus gebruikt als coördinator.

Na het tellen van de stemmen wordt voor elk stembureau een proces-verbaal ingevuld. De invoerders nemen de cijfers van de processen-verbaal over in Abacus. Als coördinator begeleid je de invoerders en help je waar mogelijk bij het oplossen van waarschuwingen, fouten en andere problemen bij de invoer. Ook kun je stembureaus aanmaken en wijzigen.

Wanneer alle invoerders klaar zijn, rond je de invoerfase af en kun je het proces-verbaal samen met het EML-telbestand downloaden.

Inloggen en account instellen

Je krijgt inloginstructies van de beheerder. Vul de gegevens in op de inlogpagina. Als je al eerder ingelogd hebt, gebruik je het door jou ingestelde wachtwoord. Weet je je wachtwoord niet meer? Dan kan de beheerder je wachtwoord resetten.

Wanneer je voor de eerste keer inlogt, stel je je account eerst in voor gebruik. Voer je naam in als er nog geen naam staat, of wijzig je naam als die onjuist is. Kies vervolgens een nieuw wachtwoord en vul dit twee keer in.

Account instellen

Verkiezing beheren

In het menu klik je onder Verkiezingen op de naam van de verkiezing. Je ziet dan een overzicht van de zitting en de status van de invoer.

Geselecteerde verkiezing

Onder de zitting staat een overzicht met alle gegevens over deze verkiezing. Je kunt hier het volgende doen:

  • Klik op de rij Aantal kiesgerechtigden om het aantal kiesgerechtigden te wijzigen. Let op: zorg ervoor dat dit getal juist is ingevuld voordat je de zitting begint. Na het openen van de zitting kan dit getal niet meer worden gewijzigd.
  • Klik op de rij Stembureaus om ze te beheren, zie Stembureaus beheren.
  • Onderaan de pagina kun je de lege processen-verbaal voor deze verkiezing downloaden.

Over deze verkiezing en lege processen-verbaal

Details van de zitting

Op dit scherm voer je de plaatsnaam, datum en starttijd van de zitting in. Dit kun je op elk moment tijdens de zitting doen.

  • Klik in het overzicht op Details van de zitting.
  • Vul de plaats, datum en starttijd van de zitting in en klik op Wijzigingen opslaan.

Details van de zitting

Abacus stuurt je automatisch naar dit scherm als deze gegevens nog niet zijn ingevuld wanneer je de zitting afrondt.

Statusoverzicht steminvoer

Op deze pagina zie je in één oogopslag wat de status van de stembureaus is en en welke stembureaus nog ingevoerd moeten worden (de werkvoorraad). Hier zie je ook welke invoer speciale aandacht van jou als coördinator nodig heeft vanwege fouten en/of waarschuwingen.

  • Klik vanuit het hoofdmenu onder de naam van de verkiezing op Statusoverzicht steminvoer.
  • Je kunt ook eerst de verkiezing selecteren en daarna op Bekijk voortgang klikken.

Statusoverzicht steminvoer

Stembureaus beheren

Als er nog geen stembureaus zijn toegevoegd, doe je dit eerst. Je kunt een bestand met stembureaus importeren of de stembureaus handmatig toevoegen. Een bestand importeren is niet meer mogelijk als er al stembureaus aanwezig zijn. Klik in de melding op Stembureaus beheren. Zorg dat de stembureaus in de applicatie overeenkomen met de voor de verkiezingen gepubliceerde lijst.

Geen stembureaus

Lijst met stembureaus importeren

Als je een EML-bestand met stembureaus (EML 110b) hebt, kun je dit direct toevoegen.

  • Klik op de knop Importeren uit een bestand.
  • Klik daarna op Bestand kiezen en kies het bestand.

Stembureaus importeren

  • Je ziet nu alle stembureaus die uit het bestand zijn ingelezen.
  • Controleer de toegevoegde stembureaus aan de hand van de door de gemeente gepubliceerde lijst en klik op Stembureaus importeren.

Stembureaus importeren - bevestigen

Stembureau handmatig toevoegen

Je kunt stembureaus ook handmatig toevoegen om ervoor te zorgen dat de stembureaus in Abacus overeenkomen met de stembureaulijst die voorafgaand aan de verkiezingen is gepubliceerd.

  • Als er nog geen stembureaus zijn toegevoegd, klik je in de melding op Stembureaus beheren.
  • Klik daarna op + Handmatig invullen.

Stembureaus importeren

  • Als er wel stembureaus zijn, klik je in het hoofdmenu onder de juiste verkiezing op Stembureaus om naar het overzicht te gaan.
  • Als je al in het voortgangsscherm van de verkiezing bent, kun je daar ook direct op Stembureaus klikken.
  • Klik op de knop + Stembureau toevoegen.

Stembureaus beheren

  • Voer de gegevens van het stembureau in en geef aan welke soort stembureau het is.
  • Als het aantal kiesgerechtigden van het stembureau bekend is kun je dit invullen, maar dat hoeft niet.
  • Klik op Opslaan en toevoegen.

Stembureau toevoegen

Stembureau wijzigen of verwijderen

  • Klik op het stembureau dat je wilt wijzigen of verwijderen.
  • Wijzig het stembureau door de relevante gegevens te veranderen en vervolgens op Wijzigingen opslaan te klikken. Klik op Annuleren als je de wijzigingen toch niet wilt opslaan.
  • Verwijder het stembureau door onderaan het scherm op Stembureau verwijderen te klikken.

Stembureau wijzigen

Gebruikers beheren

Als coördinator kun je alleen invoerders beheren. Alleen een beheerder kan ook accounts met de rol van beheerder of coördinator beheren.

  • Klik in het hoofdmenu op Gebruikers beheren.

Gebruikers beheren als coördinator

Gebruiker toevoegen

Klik op + Gebruiker toevoegen.

  • Kies eerst of het account op naam staat of anoniem is. Voor een anoniem account moet de gebruiker bij de eerste keer inloggen de naam invoeren.

Invoerder: type account

  • Voer de gebruikersnaam, de volledige naam (behalve bij een anonieme invoerder) en een tijdelijk wachtwoord in. Bij de eerste keer inloggen moet de gebruiker het wachtwoord wijzigen.

Gebruiker toevoegen als coördinator

Gebruiker wijzigen of verwijderen

  • Klik onder Gebruikers beheren op de gebruiker die je wilt wijzigen.
  • Wijzig de volledige naam of reset het wachtwoord. De gebruikersnaam en de rol kunnen niet gewijzigd worden.
  • Verwijder de gebruiker door onderaan het scherm op Gebruiker verwijderen te klikken.

Gebruiker wijzigen als coördinator

Fouten en waarschuwingen

Zowel tijdens als na de invoer kunnen er fouten en/of waarschuwingen ontstaan. Als coördinator los je ze samen met de invoerder op.

Tijdens de invoer kunnen de invoerders te maken hebben met verschillende fouten en/of waarschuwingen. Zij moeten dit met jou overleggen om tot een oplossing te komen.

Voorbeeld van fout bij invoerder

Na de invoer zie je bovenaan in het statusoverzicht van de steminvoer of er fouten en/of waarschuwingen zijn. Klik op het stembureau om de fouten en/of waarschuwingen te bekijken.

Fouten en waarschuwingen na steminvoer

Corrigeren en oplossen

In het algemeen gelden de volgende regels voor fouten en waarschuwingen:

  • Heeft de invoerder een fout gemaakt tijdens het invoeren maar klopt het papieren proces-verbaal wel? Laat de invoerder dan de invoer corrigeren.
  • Zit de fout in het papieren proces-verbaal? Los de fout dan daar op.

Bij sommige fouten en waarschuwingen moet je specifieke handelingen uitvoeren. Abacus geeft dan duidelijk aan wat je moet doen. Meer informatie over oplossingen en handelingen voor de fouten en waarschuwingen vind je in het bijbehorende document in de Toolkit Verkiezingen gemeenteraadsverkiezingen 2026.

Verschil tussen eerste en tweede invoer

Wanneer een stembureau twee keer is ingevoerd, kan het voorkomen dat er een verschil is tussen de eerste en tweede invoer. Op het statusoverzicht zie je dit bovenaan staan.

Verschil tussen eerste en tweede invoer

Controleer beide invoeren om na te gaan welke invoer overeenkomt met het proces-verbaal. Klik op de correcte invoer en vervolgens op Opslaan om deze te bewaren. De andere invoer wordt weggegooid en moet opnieuw gedaan worden. Bewaar geen van beide invoeren als ze allebei niet overeenkomen met het proces-verbaal.

Afronden en proces-verbaal opmaken

Wanneer de resultaten van alle stembureaus in jouw gemeente twee keer correct zijn ingevoerd, kun je de uitslag definitief maken en het proces-verbaal opmaken.

Alle stembureaus zijn twee keer ingevoerd

  • Klik op Invoerfase afronden en doe dit nogmaals ter bevestiging.
  • Als de details van de zitting nog niet zijn ingevoerd, doe je dit nu. Daarna klik je op Naar proces-verbaal.
  • Je invoer is afgerond. Op deze pagina download je een ZIP-bestand met het proces-verbaal en het EML-telbestand.

Afronden en documenten downloaden

  • Klik op Terug naar overzicht om de invoer af te ronden.
  • Als je toch nog iets wilt wijzigen klik je op Steminvoer hervatten.

Nieuwe zitting

Na het afronden van de invoerfase controleert het Centraal Stembureau de tellingen en de processen-verbaal. Het kan zijn dat het Centraal Stembureau zelf een fout ontdekt of een melding van een burger krijgt, bijvoorbeeld als die een stem niet kan terugvinden op het proces-verbaal. In dat geval kan het Centraal Stembureau opdracht geven om de resultaten van het stembureau te onderzoeken. Als je één of meer onderzoeksverzoeken hebt ontvangen, open je een nieuwe zitting.

Voeg alleen een nieuwe zitting toe als het Centraal Stembureau hier opdracht voor heeft gegeven. Wil het Gemeentelijk Stembureau zelf een fout herstellen en is de zitting nog niet afgesloten door de voorzitter? Ga dan verder in de eerste zitting.

Zitting voorbereiden

  • Klik onder de bestaande zitting op Nieuwe zitting voorbereiden en in de pop-up op Ja, zitting toevoegen.

Nieuwe zitting voorbereiden

  • Je ziet nu een tweede zitting met de status Zitting voorbereiden.

Nieuwe zitting naast vorige zitting

  • Onder Details van de zitting voer je de plaatsnaam, datum en starttijd van de zitting in. Dit werkt net zoals bij de eerste zitting, kijk hiervoor bij Details van de zitting.
  • Klik op Aangevraagde onderzoeken en vervolgens op + Onderzoek toevoegen.

Onderzoek toevoegen

  • Kies het stembureau waarvoor je een onderzoek wilt toevoegen.
  • Ontbreekt het stembureau in de lijst, klik dan op Ontbrekend stembureau toevoegen. Dit werkt hetzelfde als in de eerste zitting, kijk hiervoor bij Stembureau handmatig toevoegen. Daarna ga je terug naar de nieuwe zitting en herhaal je de bovenstaande stappen.

Onderzoek toevoegen: stembureau kiezen

  • Schrijf op welke aanleiding en opdracht het centraal stembureau heeft gegeven voor het onderzoek en klik op Volgende.

Aanleiding en opdracht van het centraal stembureau

  • Nu kun je het corrigendum afdrukken en het onderzoek uitvoeren volgens de instructies op het scherm.

Print het corrigendum

  • Als er meer onderzoeken nodig zijn, klik je op Terug naar alle onderzoeken om terug te gaan naar het overzicht met onderzoeken. Klik dan weer op + Onderzoek toevoegen.

Overzicht van onderzoeken

Bevindingen en invoerfase

  • Na het afronden van een onderzoek klik je op Verder naar bevindingen. Als je al in het overzicht met onderzoeken bent, klik je daar op Nu invullen.
  • Klik op Invoerfase starten om de invoer van de bevindingen en eventuele telresultaten te starten. Wil je dit nog niet doen, klik dan op Annuleren.

Nieuwe zitting: invoerfase starten

  • Neem de bevindingen over zoals ze in het corrigendum zijn opgeschreven en klik op Opslaan.

Bevindingen van onderzoeken

In het overzicht van de onderzoeken zie je wat je moet doen en wat de status van elk onderzoek is.

  • Is de uitslag niet gecorrigeerd, dan hoef je niets meer te doen.
  • Is de uitslag wel gecorrigeerd, dan laat je twee invoerders het corrigendum overnemen in Abacus.

Onderzoeken: invoerfase bezig

Nieuwe zitting afronden

Nadat de stembureaus met een gecorrigeerde uitkomst opnieuw twee keer zijn ingevoerd, kun je de nieuwe zitting afronden. Dit doe je op dezelfde manier als bij de eerste zitting. Kijk hiervoor bij Afronden en proces-verbaal opmaken.

Activiteitenlog

In het activiteitenlog kun je zien welke gebruikers zijn ingelogd en uitgelogd en welke activiteiten ze hebben uitgevoerd. Dit kan handig zijn als je wilt nagaan wat er met een bepaalde invoer gebeurd is.

Activiteitenlog

Instructies voor de invoerder

Welkom bij Abacus! Deze tool is ontwikkeld om de verkiezingsuitslagen per stembureau in te voeren en te controleren op fouten en afwijkende uitslagen. In dit document leggen we uit hoe je Abacus gebruikt als invoerder.

Na het tellen van de stemmen wordt voor elk stembureau een proces-verbaal ingevuld. De cijfers op dit proces-verbaal neem je over in Abacus. Vervolgens controleert de applicatie of de cijfers intern kloppen, bijvoorbeeld of de optellingen goed zijn. Ook wordt gecheckt of er bijzondere afwijkingen zijn, bijvoorbeeld als het aantal ongeldige stemmen hoog is. Als er fouten of waarschuwingen zijn, volg je de instructies op of overleg je het met je coördinator.

Elk stembureau wordt twee keer ingevoerd (door twee verschillende invoerders). De tweede invoerder krijgt een waarschuwing als diens invoer afwijkt van de eerste invoerder. Ook hier geldt dat je de instructies volgt of overlegt met je coördinator. Na de tweede invoer controleert Abacus of de eerste en tweede invoer overeenkomen. Als alles klopt is de invoer van het betreffende stembureau compleet.

Inloggen en account instellen

Je krijgt inloginstructies van je coördinator. Vul de gegevens in en klik op Inloggen. Als je al eerder ingelogd hebt, gebruik je het door jou ingestelde wachtwoord. Weet je je wachtwoord niet meer? Dan kan de coördinator of beheerder je wachtwoord resetten.

Wanneer je voor de eerste keer inlogt, stel je je account eerst in voor gebruik. Voer je naam in als er nog geen naam staat, of wijzig je naam als die onjuist is. Kies vervolgens een nieuw wachtwoord en vul dit twee keer in.

Account instellen

Stembureau invoeren

In de volgende stappen lees je hoe je een stembureau invoert. Gebruik hierbij de cheatsheet met daarin de volgende informatie:

Let op: je mag het papieren proces-verbaal niet aanpassen, ook niet als je fouten ziet. In dat geval neem je de foute invoer over zoals het op het papier staat.

Verkiezing en stembureau selecteren

Selecteer eerst de verkiezing waarvoor je stemmen wilt invoeren. Hier zie je ook wat de status van de verkiezing is.

Verkiezing selecteren

Selecteer nu het stembureau:

  • Voer het nummer in van het stembureau dat je wilt invoeren. Het nummer vind je op het proces-verbaal.
  • Weet je het nummer niet, klik dan onderaan de pagina op Toon de lijst met nog in te vullen stembureaus en kies vervolgens het juiste stembureau.

Stembureau kiezen

Extra onderzoek

Op pagina 1 van het papieren formulier is aangegeven of er extra onderzoek is uitgevoerd.

Neem de vinkjes over zoals ze in het proces-verbaal staan en klik op Volgende.

Extra onderzoek

Als de vragen op het papier niet zijn ingevuld, dan is er geen extra onderzoek uitgevoerd en kun je direct doorgaan naar de volgende pagina.

Verschillen met stembureau

Op pagina 2 van het papieren formulier is aangegeven of er verschillen zijn met de telresultaten van het stembureau.

Neem de vinkjes over zoals ze in het proces-verbaal staan en klik op Volgende.

Verschillen met stembureau

Aantal kiezers en stemmen

Nu voer je de toegelaten kiezers en uitgebrachte stemmen in. Dit zijn de velden A tot en met H in rubriek B1 - 3.1 en 3.2 op pagina 4 en 5 van het papieren formulier.

Neem de cijfers over zoals ze in het proces-verbaal staan en klik op Volgende.

Toegelaten kiezers en uitgebrachte stemmen

Verschillen D & H

Op pagina 6 van het papieren formulier is aangegeven of er verschillen zijn tussen het aantal kiezers en het aantal uitgebrachte stemmen.

Neem de vinkjes en cijfers over zoals ze in het proces-verbaal staan en klik op Volgende.

Verschillen tussen toegelaten kiezers en uitgebrachte stemmen

Lijsten

Nu ga je invoeren hoeveel stemmen zijn geteld voor elke kandidaat op elke lijst. Neem de cijfers over zoals ze in het proces-verbaal staan. Hierbij gebruik je de sneltoetsen en instructies in de cheatsheet.

Lijst invoeren

Controleren en opslaan

Wanneer je de laatste lijst hebt ingevoerd, klik je op Volgende. De invoer wordt nu gecontroleerd en je ziet of er waarschuwingen zijn. Klik nu op Opslaan.

Controleren en opslaan

Als je nog een stembureau wilt invoeren, kun je direct een ander stembureaunummer invullen of een stembureau uit de lijst kiezen.

Extra zitting: corrigendum invoeren

Na het afronden van de invoerfase controleert het Centraal Stembureau de tellingen en de processen-verbaal. Het kan zijn dat het Centraal Stembureau zelf een fout ontdekt of een melding van een burger krijgt, bijvoorbeeld als die een stem niet kan terugvinden op het proces-verbaal. In dat geval kan het Centraal Stembureau opdracht geven om de resultaten van het stembureau te onderzoeken en dit leidt tot een corrigendum.

  • Ook een corrigendum wordt twee keer ingevoerd. Het invoeren van een corrigendum werkt hetzelfde als het invoeren van een stembureau in de eerste zitting.
  • Er is maar één verschil: Neem alleen de getallen die veranderd zijn over uit het corrigendum.
    • Als het vakje leeg is in het corrigendum, laat het dan ook leeg in Abacus.
    • Zodra je een veranderd getal hebt ingevuld, zet Abacus automatisch een kruis door het oude getal.

Corrigendum invoeren: veranderde getallen

Wanneer je klaar bent, sla je de invoer op dezelfde manier op als in de eerste zitting.

Verkiezingsproces en Abacus

In dit hoofdstuk lees je alles over het verkiezingsproces en hoe Abacus binnen dit proces wordt gebruikt.

Wat is Abacus?

De Kiesraad ontwikkelt nieuwe software voor de berekening van de uitslag van de verkiezingen: Abacus, software voor verkiezingsuitslagen en zetelverdeling. Abacus wordt gebruikt om de papieren processen-verbaal te digitaliseren en de tellingen te controleren.

Bij de gemeenteraadsverkiezingen op 18 maart 2026 wordt Abacus als proef gebruikt bij een aantal gemeenten. Abacus vervangt op termijn de module Uitslagvaststelling van het programma Ondersteunende Software Verkiezingen (OSV2020) en zal ingezet worden bij alle verkiezingen in Nederland. De functie voor het berekenen van de zetelverdeling is nog in ontwikkeling en kan nog niet worden ingezet bij de gemeenteraadsverkiezingen.

Abacus: de uitgebreide uitleg

Om te begrijpen wat Abacus is en hoe het wordt gebruikt, heb je eerst wat context nodig. Hieronder lees je alles over wat de Kiesraad is en doet, hoe het verkiezingsproces verloopt en op welk moment en op welke wijze Abacus in dit proces zal worden gebruikt.

Vind je het handiger om een video te bekijken, kijk dan naar de presentatie Abacus: Software for Secure and Transparent Voting Results die we in november 2024 hebben gegeven op WICCON (in het Engels).

De Kiesraad

De Kiesraad is een onafhankelijk adviesorgaan met 7 leden en staat voor een eerlijk, transparant en controleerbaar verkiezingsproces. De Raad is gevestigd in Den Haag. Het bureau van de Kiesraad bestaat inmiddels uit meer dan 40 medewerkers.

De taken van de Kiesraad zijn:

  • Fungeren als centraal stembureau tijdens landelijke verkiezingen. Dit betekent dat de resultaten uit het hele land worden verzameld en bij elkaar worden opgeteld, waarna de zetelverdeling wordt berekend.
  • De overheid en het parlement adviseren over het verkiezingsproces en de Kieswet. Dit doet de Kiesraad gevraagd en ongevraagd.
  • Ondersteuning bieden aan gemeentes, politieke partijen en iedereen die actief is in het verkiezingsproces.
  • De benodigde hulpmiddelen leveren voor het uitvoeren van verkiezingen, zoals modellen en processen, maar ook technologie en software. Hieronder valt de software voor het optellen van stemmen en de zetelverdeling.

Het wettelijke kader voor de verkiezingen is de Kieswet met het bijbehorende Kiesbesluit en de Kiesregeling. Dit kader verandert als gevolg van wetgeving die is ingezet om de ontwikkeling van nieuwe verkiezingssoftware te ondersteunen. Klik op de onderstaande links voor meer informatie:

Het verkiezingsproces

In Nederland stemmen we op papier. In het stembureau gelden strikte regels om het stemgeheim te bewaren.

Stemmen in stemhokjes Beeld: ©Kiesraad, Martijn Beekman

Na het sluiten van de stembussen worden alle stemmen met de hand geteld, waarbij een vier-ogenprincipe wordt gehanteerd. De stemmen worden op lijst gesorteerd waarna de stemmen per kandidaat worden geteld.

Het papieren telproces Beeld: ©Kiesraad, Martijn Beekman

Wanneer alle stemmen geteld zijn, vult de voorzitter van het stembureau alle uitkomsten in op een proces-verbaal. Het totale aantal toegelaten kiezers (met stempas, volmacht en kiezerspas), het aantal uitgebrachte stemmen en het eventuele verschil daartussen worden eerst ingevuld. Vervolgens worden alle stemmen per kandidaat ingevuld1. Dat ziet er zo uit:

Een proces-verbaal

Dan wordt alles naar een centrale plek in de gemeente gebracht (meestal het gemeentehuis), waar het gemeentelijk stembureau de werkzaamheden overneemt.


  1. Het proces waarbij alle stemmen per kandidaat direct in het stembureau worden geteld heet decentrale stemopneming. In sommige gemeentes tellen de stembureaus alleen de stemmen per lijst, waarna de stemmen per kandidaat op bij het gemeentelijk stembureau worden geteld. Dit heet centrale stemopneming.

Gemeentelijk stembureau, hoofdstembureau, centraal stembureau

Wanneer alle documenten bij het gemeentelijk stembureau zijn kan het optellen beginnen.

Hieronder zie je hoe het gehele proces van het optellen van stemmen verloopt voor landelijke verkiezingen. Andere verkiezingen zijn over het algemeen eenvoudiger.

Stembureau, GSB, HSB, CSB

  • Blok 1: Stembureau - Zoals hierboven is uitgelegd, worden de stemmen geteld in het stembureau en de tellingen worden ingevuld op het proces-verbaal.
  • Blok 2: GSB - Alle processen-verbaal van de stembureaus worden op het gemeentelijk stembureau ingevoerd, waarbij de software de resultaten controleert en eventuele fouten en waarschuwingen weergeeft. Wanneer deze opgelost zijn, kan de invoer worden afgerond en genereert de software het proces-verbaal en het EML_NL-bestand1 van het gemeentelijk stembureau.
  • Blok 3: HSB - Het proces van blok 2 herhaalt zich bij de hoofdstembureaus van de kieskringen. Hier worden de processen-verbaal van de gemeentelijke stembureaus ingevoerd, gecontroleerd en afgerond. De software maakt het proces-verbaal en het EML_NL-bestand van het hoofdstembureau.
  • Blok 4: CSB - Op het centraal stembureau worden de processen-verbaal van de hoofdstembureaus ingevoerd, gecontroleerd en afgerond. De software maakt het proces-verbaal en het EML_NL-bestand van het centraal stembureau. Aan de hand van deze gegevens wordt de zetelverdeling berekend.

In blok 2, 3 en 4 biedt software ondersteuning, en hier komt Abacus dan ook aan bod.


  1. EML staat voor Election Markup Language. Het bestandsformaat EML_NL is hierop gebaseerd en aangepast voor Nederlandse verkiezingen.

Papieren proces en controleprotocollen

Het papieren proces is leidend

In het verkiezingsproces is papier leidend. Dat zorgt voor controleerbaarheid en transparantie, en dit zijn belangrijke waarborgen voor de integriteit van het verkiezingsproces. De software wordt gebruikt ter ondersteuning van het papieren proces.

Controleprotocol optellingen

Het controleprotocol optellingen is de afsluiting van het papieren proces. Buiten de software om wordt de optelling gecontroleerd, door middels een steekproef drie willekeurig gekozen lijsten met de hand na te rekenen. Hiermee wordt gecontroleerd op invoerfouten en andere wijzigingen die de uitslag kunnen beïnvloeden. Dit protocol is dus een waarborg om te controleren of het papieren spoor en het digitale spoor met elkaar kloppen.

Controleprotocol opmerkelijke uitslagen

De controle op bijzonderheden in de uitslagen, zoals een hoog aantal blanco stemmen of mogelijke verwisseling van kandidaten, wordt gedaan aan de hand van data-analyse. Hiervoor heeft de Kiesraad analysetools gebouwd die op GitHub beschikbaar zijn. Om de gemeentes te ondersteunen worden deze controles zoveel als mogelijk ook in Abacus opgenomen. Dat voorkomt verrassingen en helpt om fouten in een vroeg stadium op te sporen.

De Rol van Abacus

Het doel van Abacus is om de papieren processen-verbaal te digitaliseren en te helpen met de controle op de optellingen, zodat tel- en schrijffouten kunnen worden gedetecteerd en voorkomen. De software wordt ontwikkeld ter vervanging van het onderdeel Uitslagvaststelling (U) van OSV2020. Hierbij hebben we een aantal doelen gesteld:

  • De integriteit, transparantie en controleerbaarheid van het gehele proces ondersteunen.
  • Gebruiksvriendelijke interface en technologie implementeren.
  • Volledig open source ontwikkelen.
  • De oplossing zelf ontwikkelen en beheren.

Abacus wordt in de eerste instantie ontwikkeld voor de gemeenteraadsverkiezingen in maart 2026. Meer informatie over de functionaliteit die wordt gebouwd vind je in Functionaliteit voor Abacus 1.0.

Gebruiksvriendelijkheid

Omdat er niet al te vaak verkiezingen zijn, maken de gebruikers slechts korte tijd gebruik van verkiezingssoftware. Daarom is het van groot belang dat Abacus zo gebruiksvriendelijk mogelijk is en proberen we de invoer zo intuitief mogelijk te maken:

  • Er worden regelmatige gebruikerstests gedaan met echte gebruikers.
  • De invoer wordt in kleinere secties gedaan met een validatiecheck na elke invoer.
  • De software wordt geoptimaliseerd voor gebruik met een toetsenbord en is eenvoudig aan te leren.
  • De software geeft duidelijk aan hoe onjuiste of inconsistente invoer kan worden opgelost.
  • De software wordt aangeleverd met duidelijke documentatie en instructiemateriaal.

Dit is een voorbeeld van de gebruikersinterface:

Interface

Functionaliteit

In de afbeelding hieronder zie je hoe Abacus werkt op het gemeentelijk stembureau. Voor landelijke verkiezingen wordt dit proces herhaald op het hoofdstembureau en centraal stembureau, zoals hierboven beschreven.

LET OP: dit is een concept en is nog in ontwikkeling.

Uitslagvaststelling

  • Bovenaan staat IMPORT: gebruikers kunnen kandidaten en verkiezingsdefinities in EML-formaat importeren in Abacus.
  • Links staat INVOER: gebruikers kunnen verkiezingsresultaten invoeren, inclusief verklaringen over ontbrekende stembiljetten/stempassen en klachten van kiezers. Abacus telt de resultaten op en controleert ze.
  • Rechts staat ONDERTEKENING: de data wordt ondertekend met een handtekening van de voorzitter van het gemeentelijk stembureau.
  • Onderaan staat EXPORT: de verkiezingsresultaten worden geëxporteerd als EML_NL-bestand en als PDF-bestand. De bestanden kunnen van de server gehaald worden voor verdere verspreiding.

Technische keuzes en architectuur

Abacus zal worden gedraaid op een gesloten netwerk zonder internettoegang. De backend draait op één machine en kan via de webbrowser (frontend) worden benaderd vanaf andere computers op het netwerk.

Voor de frontend wordt TypeScript gebruikt, een meer uitgebreide versie van JavaScript met typing. Voor de gebruikersinterface wordt de populaire library React gebruikt.

De backend wordt gemaakt met Rust, een high-level programmeertaal waarmee je efficiënt kunt programmeren. Het unieke systeem van 'ownership' in Rust voorkomt geheugenfouten, en de taal heeft een 'strict type system' waardoor minder bugs ontstaan. Ook is dit een populaire, open-source programmeertaal met een grote community.

Voor de database wordt SQLite gebruikt. Deze library is populair, lichtgewicht en gebruiksvriendelijk voor developers, en bovendien is SQLite een 'zero-configuration database'. Dit betekent dat installeren niet nodig is, zodat de developer meteen aan de slag kan.

Voor meer informatie over onze keuzes en de onderbouwingen hiervan lees je het document Overwegingen talen en frameworks.

Voor de architectuur kun je beginnen bij het Overzicht van de softwarearchitectuur.

De UI/UX designs vind je in onze Figma.

Security

Veiligheid is een van de belangrijkste pijlers voor Abacus, om een zo hoog mogelijke betrouwbaarheid van de verkiezingsuitslagen te kunnen garanderen. Dit doen we op de volgende manieren:

  • Invoer volgens het vier-ogenprincipe: elk proces-verbaal wordt twee keer ingevoerd door verschillende gebruikers.
  • Afzenderverificatie: hiermee wordt gegarandeerd dat bestanden met verkiezingsuitslagen die met Abacus zijn gemaakt, afkomstig zijn van het juiste stembureau en dat ze niet bedoeld of onbedoeld gewijzigd zijn.
  • Air-gapped: Abacus wordt air-gapped en lokaal gedraaid.
  • Er worden interne code-reviews gedaan en we laten ook externe code-reviews uitvoeren.
  • Ook zal er externe pentesting worden uitgevoerd.
  • Er wordt telkens gecontroleerd of de functionaliteit (nog steeds) aan de wettelijke vereisten voldoet.

Werkwijze

Ons team werkt volgens deze principes:

  • De software is beschikbaar onder de EU PL 1.2-licentie en het team werkt op deze openbare GitHub-repository. Ook de pull requests zijn openbaar.
  • We hebben een continuous integration pipeline met tests en linting voor de frontend en backend.
  • Als een teamlid code wijzigt, moeten minimaal 2 andere teamleden die wijzigingen reviewen en goedkeuren voordat de wijziging wordt overgenomen.
  • Als we nieuwe code toevoegen, maken we meteen tests die de werking van die code controleren. De nieuwe tests moeten in dezelfde PR zitten als de nieuwe functionaliteit.
  • De UI/UX designs op basis waarvan nieuwe functionaliteit wordt gebouwd zijn ook openbaar op Figma.
  • Op ons board zie je waar het team mee bezig is. Hier kun je ook de epics bekijken.

Voor meer informatie over onze werkwijzen kun je de volgende links bekijken:

Feedback

Feedback is meer dan welkom! Heb je iets gezien of gewoon een vraag, stuur dan een mail naar abacus@kiesraad.nl. Zie de readme op de hoofdpagina van de Abacus repository voor meer informatie over hoe je kunt bijdragen.