Abacus gebruikersdocumentatie

Dit is de gebruikersdocumentatie, een cheatsheet en meer achtergrondinformatie bij Abacus.

Wat is Abacus?

De Kiesraad ontwikkelt nieuwe software voor de berekening van de uitslag van de verkiezingen: Abacus, software voor verkiezingsuitslagen en zetelverdeling. Het programma telt uitslagen bij elkaar op en berekent de zetelverdeling. Abacus vervangt op termijn de module Uitslagvaststelling van het programma Ondersteunende Software Verkiezingen (OSV2020) en zal ingezet worden bij alle verkiezingen in Nederland.

Abacus is werk in uitvoering! Dit betekent dat de functionaliteit stapsgewijs wordt gebouwd. OSV2020 is de huidige software die bij verkiezingen wordt gebruikt.

Het ontwikkelteam werkt nu aan een versie van Abacus die geschikt is voor toepassing bij verkiezingen voor de Gemeenteraad. Abacus kan worden ingezet als het af is, aan alle eisen voldoet en de Kiesraad besloten heeft over de toepassing.

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 als volgt 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.

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-bestand2 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.

Papier 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. Daarom 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 deze repository voor meer informatie over hoe je kunt bijdragen.


  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.

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

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 onderbreken

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.

Abacus uitproberen, installeren en starten

Het uitproberen, installeren en starten van Abacus kan op verschillende manieren. Is Abacus nieuw voor je, begin dan bij de optie 'Uitproberen'. Kom je er met de onderstaande instructies niet uit, neem dan contact op met het team via abacus@kiesraad.nl. Hieronder vind je instructies voor de verschillende methodes.

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 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.

Methode 1: installatiebestand downloaden en starten (Linux, macOS, Windows)

Deze methode is de snelste manier om Abacus te gebruiken. Voer hiervoor de volgende stappen uit:

Op de hoofdpagina van de Abacus-repository klik je aan de rechterkant op Releases. Klik onder de bovenste release op Assets en klik vervolgens op het installatiebestand om het te downloaden.

Installatiebestand downloaden 2

Linux en macOS

Open een terminal en maak het bestand uitvoerbaar:

chmod +x /path/to/binary/abacus-[OS-version]

Voer Abacus uit:

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

Zie ook de help.

Windows

Voordat je Abacus kunt gebruiken op Windows heb je eerst het programma Microsoft Visual C++ Redistributable (MSVC Redist) nodig. Dit bestand kun je direct downloaden op de website van Microsoft. Een directe link vind je hier: Microsoft Visual C++ Redistributable (MSVC Redist).

Open een Command Prompt of Powershell en voer Abacus uit. Als je Command Prompt gebruikt, hoef je de .\ aan het begin niet te typen.

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

Zie ook de help.

Na het starten zie je een popup van Windows Security over de Windows Firewall. Het maakt niet uit wat je hier selecteert, de omgeving werkt altijd. Klik dus gerust op Cancel (Annuleren).

Wanneer Abacus draait, ga je in je browser naar http://127.0.0.1:8080 om de omgeving te gebruiken.

Methode 2: Docker Compose (Linux, macOS, Windows)

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

Ook deze optie is bedoeld voor development.

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.

Developers

Ben je developer en wil je Abacus handmatig installeren en gebruiken? Lees dan de README-bestanden in de Abacus repository.

Abacus - Instructies 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.

1. 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.

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

2. 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.

2.1. 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

2.2. 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.

2.3. 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

2.4. 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

2.5. 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

2.6. 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

2.7. 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.

Abacus - Instructies 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 invoer af en kun je het proces-verbaal samen met het EML-telbestand downloaden.

1. Inloggen en account instellen

Je krijgt inloginstructies van de beheerder of een andere coördinator. Vul de gegevens in op de inlogpagina. Als je al eerder ingelogd hebt, gebruik je het door jou ingestelde wachtwoord.

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

2. Verkiezing

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.
  • 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

2.1. 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.

2.2. 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

3. 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

3.1. 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 of alles klopt en klik op Stembureaus importeren.

Stembureaus importeren - bevestigen

3.2. 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

3.3. 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

4. Gebruikers beheren

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

  • Klik in het hoofdmenu op Gebruikers beheren.

Gebruikers beheren als coördinator

4.1. 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

4.2. 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

5. 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

5.1. 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.

6. 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.

7. 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.

8. 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

Abacus - Instructies 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: 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.

1. 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 onder het kopje Gebruiker toevoegen.

2. 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), de gepubliceerde lijst met stembureaus, het aantal kiesgerechtigden in de gemeente en (optioneel) het EML-bestand met de stembureaus (EML 110b) hebt.

  • 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

2.1. 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. 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

2.2. 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

2.3. 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

2.4. 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 of wijzigen. Kijk hiervoor bij Stembureaus beheren.

2.5. 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

2.6. 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

2.7. 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

3. 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

3.1. 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

3.2. 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

4. 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 beheren.

Gebruikersbeheer

4.1. Gebruiker toevoegen

  • Klik onder Gebruikersbeheer 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

4.2. Gebruiker wijzigen of verwijderen

  • Na 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

5. Back-ups

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

5.1. 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.

5.2. 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.

6. 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

Vereisten voor systeem en browser

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:

Processor type

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

Als de browser een adblocker bevat, zet die dan voor de zekerheid uit voor Abacus. Anders kan het zijn dat sommige pagina's niet goed werken.