Een praktische gids voor het maken van een mobiele app die bonnetjes vastlegt, data met OCR extraheert, uitgaven categoriseert en exporteert naar boekhoudtools.

Voordat je functies of schermontwerpen kiest, wees specifiek over het probleem dat je oplost. “Uitgaven bijhouden” is te vaag; de echte pijn is meestal verloren bonnetjes, tijdrovende handmatige invoer en trage vergoedingscycli.
Schrijf één zin als probleemstatement waarop je elke beslissing kunt toetsen:
“Help mensen een bon binnen enkele seconden vast te leggen, zet het automatisch om in een volledige uitgave en dien het in zonder achter missende details aan te moeten zitten.”
Dit houdt de scope beheersbaar en voorkomt dat je app verandert in een generieke finance-tool.
De meeste digitale bonnetjes-apps bedienen meer dan één doelgroep:
Kies eerst een primaire gebruiker (vaak werknemers of freelancers), en ontwerp de finance-ervaring als een “reviewlaag” in plaats van de kernworkflow.
Houd de eerste versie gericht op een klein aantal uitkomsten:
Kom overeen welke metrics echte waarde reflecteren:
Als doel, gebruikers, taken en metrics duidelijk zijn, wordt de rest van de bouw een reeks afgewogen keuzes in plaats van giswerk.
Voordat je functies of schermen kiest, schrijf de end-to-end reis op die je app moet ondersteunen. Een duidelijke workflow voorkomt dat “bon scannen” verandert in een stapel onsamenhangende tools.
Breng minimaal het volledige pad in kaart:
Noteer voor elke stap wat de gebruiker ziet, welke data wordt aangemaakt en wat automatisch moet gebeuren (bijv. totalen berekenen, valuta normaliseren, belastingen detecteren).
Bepaal de belangrijkste toegangspunten, want die vormen de UI en je backend-aanname:
Kies één “default start” voor je MVP en ondersteun de rest later als secundaire paden.
Maak duidelijk wie wat kan doen:
Ontwerp de overdrachtsregels vroeg (bijv. wanneer een uitgave read-only wordt, wie kan overrulen en hoe wijzigingen worden gelogd).
Documenteer rommelige realiteiten: retouren/teruggaven, gesplitste rekeningen, multi-currency, fooi, missende bonnetjes en dagvergoedingen. Zelfs als je ze niet in v1 volledig automatiseert, moet je workflow een duidelijk pad hebben dat gebruikers niet blokkeert.
Een goed datamodel maakt alles eenvoudiger: sneller zoeken, minder handmatige correcties en schonere exports naar accounting. Het belangrijkste is om te scheiden wat de gebruiker opnam (het originele bonbestand) van wat je app begrijpt (genormaliseerde velden waar je op kunt filteren en rapporteren).
Behandel een Bon (Receipt) als bewijs (een bestand plus extractieresultaten) en een Uitgave (Expense) als het zakelijke record dat gebruikt wordt voor vergoeding, policy-checks en rapportage.
Een enkele uitgave kan één bon hebben, meerdere bonnetjes (gesplitste betalingen) of geen bon (handmatige invoer), modelleer dit als een flexibele relatie.
Plan een capture_method veld zodat je kunt groeien voorbij camerascans:
Dit veld helpt ook bij het oplossen van kwaliteitsproblemen en het later tunen van OCR/parsing.
Sla minimaal deze velden op de Uitgave op (zelfs als ze uit OCR komen): merchant, datum, totaal, belasting, valuta, betaalmethode. Bewaar zowel de ruwe tekst als genormaliseerde waarden (bv. ISO-valutacodes, geparseerde datums) zodat bewerkingen omkeerbaar en verklaarbaar blijven.
Sla ook metadata op zoals:
merchant_normalized (voor consistente zoekacties)transaction_last4 of getokeniseerde kaartreferentie (om duplicaten te voorkomen)timezone en locale (om datums/belastingen correct te parsen)Sla ruwe afbeelding/PDF apart op van de geëxtraheerde/genormaliseerde data. Dit maakt reprocessing mogelijk (betere OCR later) zonder het origineel te verliezen.
Ontwerp zoeken voor de vragen die gebruikers echt stellen:
Indexeer deze velden vroeg; dat is het verschil tussen “voor altijd scrollen” en directe antwoorden.
Neem retentiecontroles op in je schema, niet als bijzaak:
Met deze onderdelen kan je app opschalen van persoonlijke uitgaven naar bedrijfsmatige compliance zonder de basis te herschrijven.
Boncapture is het moment waarop gebruikers beslissen of je app moeiteloos of irritant aanvoelt. Behandel de camera als een “scanner”, niet als een fototoestel: maak het standaardpad snel, begeleid en vergevingsgezind.
Gebruik live randdetectie en auto-crop zodat gebruikers niet perfect hoeven te kaderen. Voeg subtiele, bruikbare hints toe (“Kom dichterbij”, “Vermijd schaduwen”, “Houd stil”) en een waarschuwing voor schittering wanneer highlights het papier wegblazen.
Multi-page capture is belangrijk voor hotelrekeningen en lange gespecificeerde bonnetjes. Laat gebruikers pagina’s blijven schieten in één flow en bevestig daarna één keer.
Een beetje preprocessing verbetert vaak de nauwkeurigheid meer dan een ander OCR-engine:
Draai deze pipeline consistent zodat de OCR voorspelbare inputs ziet.
On-device OCR is geweldig voor snelheid, offline gebruik en privacy. Cloud OCR kan beter zijn voor laagwaardige afbeeldingen en complexe layouts. Een praktische aanpak is hybride:
Wees transparant over wat uploads triggert en geef gebruikers controle.
Begin met hoogwaarde velden: merchant, datum, valuta, totaal, belasting en fooi. Regellijnen zijn nuttig maar veel moeilijker—zie die als een verbetering.
Sla een confidencescore per veld op, niet alleen per bon. Zo kun je alleen markeren wat aandacht nodig heeft (bijv. “Totaal onduidelijk”).
Na het scannen, toon een snelle review-screen met één-klik correcties (totaal bewerken, datum instellen, merchant wijzigen). Leg correcties vast als trainingssignalen: als gebruikers herhaaldelijk “TotaI” corrigeren naar “Total”, kan je extractie patronen leren en verbeteren.
Goede capture is maar de helft van het werk. Om uitgaven schoon te houden (en terug-en-weer te verminderen) heeft je app snelle categorisatie, flexibele metadata en sterke maatregelen tegen duplicaten nodig.
Begin met deterministische regels die gebruikers begrijpen en admins kunnen beheren. Voorbeelden: “Uber → Vervoer”, “Starbucks → Maaltijden”, of “USD + luchthaven-merchantcodes → Reis”. Regels zijn voorspelbaar, makkelijk te auditen en kunnen offline werken.
Daarbovenop kun je ML-gebasseerde suggesties toevoegen (optioneel) om invoer te versnellen zonder controle weg te nemen. Houd de UI helder: toon de voorgestelde categorie, waarom het is voorgesteld (bijv. “gebaseerd op merchant”) en laat gebruikers met één tik overschrijven.
Een derde versneller is gebruikersfavorieten: recent gebruikte categorieën per merchant, vastgepinde categorieën en “laatst gebruikt voor dit project”. Deze werken in de praktijk vaak beter dan “AI” voor snelheid.
De meeste organisaties hebben meer nodig dan één categorie. Bouw custom velden zoals project, cost center, client en policy tags (bv. “billable”, “personal”, “recurring”). Maak ze configureerbaar per workspace, met required/optionele regels afhankelijk van beleid.
Splitsingen komen vaak voor: een hotelrekening verdeeld over projecten, of een groepsmaaltijd per deelnemer gesplitst.
Ondersteun het splitsen van één uitgave in meerdere lijnen met verschillende categorieën, projecten of deelnemers. Voor gedeelde betalingen, laat gebruikers “betaald door” markeren en aandelen toewijzen—terwijl je één onderliggende bon houdt.
Draai policy-checks bij opslaan en bij indienen:
Voor duplicaten combineer meerdere signalen:
Wanneer je een waarschijnlijk duplicaat detecteert, blokkeer niet meteen—bied “Review” met side-by-side details en een veilige “Beide behouden” optie.
Een receipts-and-expenses-app faalt of slaagt op betrouwbaarheid: kunnen mensen een bon vastleggen in een keldercafé, erop vertrouwen dat het niet verdwijnt en het later terugvinden als finance erom vraagt? De architectuurkeuzes die je vroeg maakt bepalen dat dagelijks gevoel.
Voor een MVP bepaal je of je optimaliseert voor snelheid van levering of voor een eersteklas native ervaring.
Boncapture gebeurt wanneer connectiviteit onbetrouwbaar is. Behandel de telefoon als de eerste plek waar data wordt opgeslagen.
Gebruik een lokale wachtrij: wanneer een gebruiker een bon indient, sla de afbeelding + concept-uitgave lokaal op, markeer deze als “pending” en sync later. Plan voor retries (met exponential backoff) en definieer hoe je syncconflicten afhandelt (bijv. “server wint”, “laatste wint” of “vraag de gebruiker” voor zeldzame gevallen zoals gewijzigde bedragen).
De meeste teams hebben een backend nodig voor:
Houd deze services modulair zodat je OCR-providers kunt wisselen of parsing kunt verbeteren zonder de app te herbouwen.
Indexen zijn belangrijk wanneer mensen zoeken op “Uber” of filteren op “Maaltijden in maart”. Sla genormaliseerde merchant-namen, datums, totalen, valuta, categorieën en tags op. Voeg indexen toe voor veelvoorkomende queries (datumrange, merchant, categorie, status) en overweeg een lichte zoeklaag als “bon opslag en zoeken” een kernbelofte is.
Gebruik background sync waar mogelijk, maar vertrouw er niet volledig op. Toon duidelijke in-app syncstatus en overweeg push-notificaties voor events zoals “OCR klaar”, “bon afgewezen” of “uitgave goedgekeurd”, zodat gebruikers de app niet constant hoeven te openen om te controleren.
Als je snel de workflow (capture → OCR → review → submit) wilt valideren voordat je in een volledige custom build investeert, kan een vibe-coding platform zoals Koder.ai helpen om sneller te prototypen en te leveren met een chat-gestuurde interface. Het is bijzonder nuttig voor het bouwen van het ondersteunende webdashboard en backendservices (bijv. een React-adminpanel plus een Go + PostgreSQL API), itereren in "planning mode" en terugrollen met snapshots terwijl je met echte gebruikers test.
Bonnen en uitgaven bevatten gevoelige persoonlijke en bedrijfsgegevens: namen, kaartfragmenten, adressen, reispatronen en soms btw-nummers. Behandel beveiliging en privacy als productfeatures, niet alleen als compliance-vinkjes.
Kies een inlogmethode die past bij de inzet:
Gebruik TLS voor alle netwerkverkeer en versleutel gevoelige data op de server. Bonnen worden vaak opgeslagen als afbeeldingen of PDFs, dus beveilig media-opslag apart van database records (private buckets, kortdurende signed URLs en strikte toegangspolicies).
Op apparaat, cache zo min mogelijk. Als offline-opslag nodig is, versleutel lokale bestanden en bescherm toegang achter OS-niveau beveiliging (biometrie/pincode).
Definieer rollen vroeg en houd permissies expliciet:
Voeg guardrails toe zoals “view-only” toegang voor auditors en beperkte zichtbaarheid voor gevoelige categorieën (bv. medische).
Verzamel alleen wat je nodig hebt. Bewaar geen volledige kaartnummers of exacte locaties als dat niet nodig is. Wees duidelijk over wat uit bonnetjes wordt geëxtraheerd, hoe lang je het bewaart en hoe gebruikers het kunnen verwijderen.
Houd een auditlog bij voor sleutelacties: wie wijzigde wat, wanneer en waarom (inclusief edits aan bedragen, categorieën en goedkeuringen). Dit ondersteunt geschiloplossing, compliance reviews en integratie-troubleshooting.
Een geweldige receipts-and-expenses app voelt als een snelkoppeling: gebruikers besteden seconden aan vastleggen, niet minuten aan corrigeren. Het doel is van “Ik heb betaald” naar “klaar om in te dienen” met zo min mogelijk tikken.
De meeste teams dekken 90% van het echte gebruik met zes schermen:
Ontwerp deze schermen als één flow: capture → review → autosave naar lijst → submit wanneer klaar.
Prioriteer one-handed capture: grote sluiterknop, bereikbare bedieningselementen en een duidelijke “Klaar” actie. Gebruik slimme defaults om repetitieve invoer te voorkomen—prefill valuta, betaalmethode, project/client en veelgebruikte categorieën.
Op het Review scherm, gebruik “chips” en snelle acties (bijv. Categorie wijzigen, Split, Voeg deelnemers toe) in plaats van lange formulieren. Inline editing is sneller dan gebruikers naar aparte bewerkpagina’s te sturen.
Mensen accepteren automatisering niet tenzij ze begrijpen wat er gebeurt. Markeer geëxtraheerde velden (merchant, datum, totaal) en voeg een korte “waarom” toe voor suggesties:
Markeer visueel de confidence (bv. Heeft aandacht nodig voor velden met lage confidence) zodat gebruikers weten waar ze moeten kijken.
Als capturekwaliteit slecht is, faal dan niet stilzwijgend. Geef gerichte aanwijzingen: “Bon is wazig—kom dichterbij” of “Te donker—zet flitser aan.” Als OCR faalt, bied retry-staten en een snelle handmatige fallback voor alleen de missende velden.
Gebruik leesbare typografie, hoog contrast en grote tikdoelen. Ondersteun spraakinput voor notities en deelnemers, en zorg dat foutmeldingen door screenreaders worden uitgesproken. Toegankelijkheid is geen extra—het vermindert frictie voor alle gebruikers.
Een boncapture-app wordt echt nuttig wanneer hij uitgaven door review, vergoeding en boekhouding kan krijgen met minimale terug-en-weer. Dat betekent heldere goedkeuringsstappen, exportformaten die bruikbaar zijn en integraties met tools die finance-teams al gebruiken.
Houd de workflow simpel, voorspelbaar en zichtbaar. Een typische lus is:
Ontwerp details goed: toon “wat is er veranderd sinds laatste indiening”, sta inline opmerkingen toe op specifieke regels en sla elke statustransitie op (Ingediend → Goedgekeurd → Geëxporteerd, enz.). Bepaal vroeg of goedkeuring per uitgave, per rapport of beide plaatsvindt—finance-teams geven vaak de voorkeur aan rapportgoedgekeuring, terwijl managers regelitems willen spot-checken.
Ondersteun gangbare exports zodat gebruikers geen rapporten handmatig hoeven samen te stellen:
Als je een PDF-pakket aanbiedt, laat de samenvattingspagina overeenkomen met wat finance verwacht: totalen per categorie, valuta, belasting en policy-flags (bv. “missende bon”, “boven limiet”).
Voor populaire platformen (QuickBooks, Xero, NetSuite) komt integratie meestal neer op: uitgaven/facturen aanmaken, bonbestanden bijvoegen en velden correct mappen (leverancier/merchant, datum, bedrag, categorie/account, belasting). Zelfs als je niet meteen native integraties levert, bied een generieke webhook/API zodat teams je app aan hun workflowtools kunnen koppelen.
Om support-problemen te verminderen, maak mappings configureerbaar: laat een admin je categorieën koppelen aan hun accounts en standaarden instellen per team, project of merchant.
Gebruikers willen vooral weten “wanneer krijg ik betaald?” Zelfs als uitbetalingen via payroll verlopen, kan je app de vergoedingsstatus bijhouden:
Als je “Uitbetaald” niet automatisch kunt bevestigen, bied een handmatige overdracht of een payroll-import om statussen te reconciliëren.
Voor planning en integratieoverwegingen helpt het om vast te leggen wat bij elk plan is inbegrepen—linkend naar /pricing houdt verwachtingen duidelijk zonder lezers te overstelpen.
Een kosten-app slaagt als hij klusjes weggeeft, niet als hij de langste featurelijst heeft. Begin met de kleinst mogelijke nuttige lus en bewijs dat die werkt voor echte mensen die echte onkostrapporten maken.
Bouw alleen wat nodig is om te voltooien: capture → extract → categorize → export.
Dat betekent dat een gebruiker een bon kan fotograferen, sleutelvelden (merchant, datum, totaal) ingevuld ziet, een categorie kan kiezen of bevestigen en een uitgavensrapport kan exporteren/delen (CSV, PDF of een eenvoudige e-mailsamenvatting). Als gebruikers deze lus niet snel kunnen voltooien, redden extra functies het niet.
Schrijf op wat je bewust niet bouwt:
Een duidelijke roadmap voorkomt scope creep en maakt gebruikersfeedback makkelijker te prioriteren.
Volg de funnel van capture naar indiening:
Koppel dit aan lichte in-app prompts zoals “Wat was frustrerend aan dit bonnetje?” op het moment van falen.
Bouw een kleine, diverse set echte bonnetjes (verschillende merchants, lettertypen, talen, gekreukte foto’s). Gebruik deze voor evaluatie en regressietesten zodat OCR-kwaliteit niet stilletjes achteruitgaat.
Pilot met een klein team voor 1–2 indieningscycli. Vraag gebruikers geëxtraheerde velden te corrigeren en bonnetjes te categoriseren; behandel die correcties als gelabelde trainings-/kwaliteitsdata. Het doel is niet perfectie maar bewijzen dat de workflow consequent tijd bespaart.
Als je snel een werkende bèta wilt, overweeg Koder.ai om ondersteunende onderdelen te bouwen (adminconsole, exports, OCR-job dashboard en kern-API) vanuit een chat-gestuurde specificatie. Omdat het source-code export ondersteunt, deployments/hosting en snapshots met rollback, kun je snel itereren met pilotgebruikers en toch eigendom van de code behouden terwijl het product rijpt.
Zelfs goed ontworpen onkostenapps struikelen op voorspelbare plekken. Vooruit plannen voor deze issues bespaart weken aan rework en veel supporttickets.
Echte bonnetjes zijn geen studiophoto’s. Gekreukt papier, vervaande inkt en vooral thermisch papier kunnen gedeeltelijke of vervormde tekst opleveren.
Om mislukkingen te verminderen, leid gebruikers bij het vastleggen (auto-crop, schitteringsdetectie, “kom dichterbij” prompts) en bewaar de originele afbeelding zodat ze opnieuw kunnen scannen zonder alles opnieuw in te voeren. Zie OCR als “beste poging”: toon geëxtraheerde velden met confidence-indicatoren en maak bewerkingen snel. Overweeg een fallback voor lage-confidence scans (handmatige invoer of menselijke review voor hoge waarde bonnetjes).
Datums, valuta’s en belastingen verschillen sterk. Een bon met “03/04/25” kan verschillende betekenissen hebben, en btw/GST regels beïnvloeden welke totalen je moet opslaan.
Vermijd hardcoded formats. Sla bedragen op als nummers plus valutacode, datums als ISO-timestamps en bewaar de ruwe bontekst voor auditing. Bouw belastingvelden die inclusieve/exclusieve belastingen en meerdere belastingregels aankunnen. Als je naar meerdere talen uitbreidt, bewaar merchant-namen zoals ze zijn maar lokaliseer UI-labels en categorienamen.
Hoge-res afbeeldingen zijn zwaar en uploads over mobiel datanet kunnen traag zijn—dat vreet batterij en frustreert gebruikers.
Compress en resize on-device, upload op de achtergrond met retry en gebruik een queue zodat bonnetjes niet “verdwijnen” als het netwerk wegvalt. Cache recente bonnetjes en thumbnails voor snel bladeren. Stel strikte geheugenlimieten om crashes op oudere telefoons te vermijden.
Gewijzigde totalen, dubbele indieningen en nepbonnetjes duiken snel op in echte inzet.
Voeg duplicaatdetectie toe (zelfde merchant/bedrag/datum, vergelijkbare OCR-tekst, beeldfingerprints) en vlag verdachte edits (bv. totaal aangepast na OCR). Houd onveranderlijke auditlogs bij van wat is vastgelegd versus wat is aangepast, en vereis onderbouwing voor handmatige overrides op policy-gevoelige velden.
Gebruikers vragen om exports, verwijderingen en hulp bij het terugvinden van ontbrekende bonnetjes.
Bereid basale supporttools voor: zoek op gebruiker/bon-ID, bekijk verwerkingsstatus, run OCR opnieuw en exporteer data op aanvraag. Definieer incidentrespons: wat gebeurt er als OCR uitvalt of uploads falen? Duidelijke runbooks en een eenvoudige statuspagina (/status) veranderen chaos in hanteerbare workflows.
Een succesvolle lancering is niet alleen “in de app store zetten”. Het is verwachtingen stellen, echt gebruik monitoren en de lus tussen gebruikerservaring en wat je team fixeert, aanscherpen.
Definieer duidelijke SLA’s voor de twee momenten die gebruikers het meest boeien: bonverwerking (OCR) en synchronisatie tussen apparaten.
Bijv. als OCR meestal binnen 10–30 seconden klaar is maar langer kan duren bij slechte netwerken, communiceer dat: “Bon verwerken… meestal onder 30 seconden.” Als synchronisatie vertraging kan hebben, toon een lichte status zoals “Lokaal opgeslagen • Synchroniseren” en een retry-optie. Deze kleine cues voorkomen supporttickets en herhaalde uploads.
Houd een klein aantal indicatoren bij die betrouwbaarheidsproblemen vroegtijdig onthullen:
Alert bij pieken en bekijk trends wekelijks. Een daling in OCR-confidence duidt vaak op een vendorwisseling, camera-update of nieuwe bonformaten in het wild.
Zet een in-app feedbackknop bij het bon-detailscherm, waar frustratie plaatsvindt. Maak correcties makkelijk en bekijk geaggregeerde “correctielogs” om veelvoorkomende parse-fouten (datums, totalen, belastingen, fooien) te identificeren. Gebruik die lijst om model-/regelupdates te prioriteren.
Als capture en zoeken stabiel zijn, overweeg:
Bied een 60-seconden walkthrough, een voorbeeldbon die gebruikers kunnen bewerken en een korte “beste resultaten” tips-pagina (goed licht, vlak oppervlak). Verwijs naar /help/receipts voor snelle referentie.
Begin met een smal, toetsbaar probleemstatement (bijv. “maak binnen enkele seconden een bonfoto, maak automatisch een uitgave aan en dien in zonder missende details”). Kies daarna een primaire gebruiker (werknemers of freelancers) en definieer 2–4 meetbare succesmetrics zoals:
Deze randvoorwaarden voorkomen scope creep richting een generieke finance-app.
Een praktisch MVP-loop is: capture → extract → categorize → export/submit.
In v1, geef prioriteit aan:
Schuif line items, card feeds, geavanceerde policies en diepe integraties naar latere versies totdat de kernloop consequent tijd bespaart.
Breng het volledige pad in kaart van “bewijs” naar “betaalbaar”:
Voor elke stap, specificeer wat automatisch gebeurt, wat de gebruiker ziet en welke data wordt aangemaakt. Dit voorkomt dat je losse tools bouwt die de vergoedingsreis niet afsluiten.
Kies één standaard startpunt voor je MVP (meestal camera capture) en voeg andere als secundaire paden toe:
Je keuze beïnvloedt UI en backend-aanname (bv. beeldpreprocessing versus het parsen van PDF/email-HTML). Houd dit bij met een capture_method veld zodat je kwaliteit en conversie per bron kunt debuggen.
Modelleer Receipt en Expense als aparte maar gekoppelde records:
Houd relaties flexibel: één expense kan meerdere receipts hebben (gesplitste betalingen) of geen (handmatige invoer). Bewaar zowel ruwe OCR-tekst als genormaliseerde velden zodat wijzigingen verklaarbaar en omkeerbaar zijn.
Gebruik een camera-ervaring die zich gedraagt als een scanner:
Voor OCR: voer consistente preprocessing uit (deskew, perspectiefcorrectie, ruisreductie, contrast/lichtnormalisatie). Dit verbetert vaak de nauwkeurigheid meer dan het wisselen van OCR-leverancier.
Een hybride aanpak is vaak het meest praktisch:
Ongeacht je keuze, sla confidence per veld op (niet alleen per receipt) en bouw een snelle review-screen die alleen laat zien wat aandacht nodig heeft (bijv. “Totaal onduidelijk”). Wees transparant over wat uploads triggert en geef gebruikers controle.
Begin met regels die gebruikers begrijpen, en leg daar suggesties overheen:
Ondersteun ook custom velden zoals project, cost center en client zodat categorisatie aansluit op echte workflows.
Combineer meerdere signalen en voorkom directe blokkades:
Wanneer je een waarschijnlijke duplicaat detecteert, toon dan een side-by-side review en bied “Beide behouden” aan. Log verdachte wijzigingen (bv. totaal aangepast na OCR) in een audittrail voor finance review.
Bouw offline-first betrouwbaarheid in de kernflow:
Toon duidelijke statussen zoals “Lokaal opgeslagen • Synchroniseren” en gebruik notificaties voor kerngebeurtenissen (OCR klaar, afgewezen, goedgekeurd). Dat maakt de app betrouwbaar bij slechte connectiviteit.