Van “gadverdamme” naar groen vinkje

Vibe coding · 3 min leestijd
Van “gadverdamme” naar groen vinkje

Ik wilde alleen facturen koppelen (en toen bouwde ik een systeem)

Waarom ik een eigen creditcard-facturensysteem bouwde (en waarom ik daar heel blij van werd)

Dinsdag.
Na lange tijd weer samen met Bir facturen invoeren in SnelStart.
Ons admin-systeem via het account gebruiken (geen fan). Gezellig vooruitzicht, toch?

In theorie nee. In de praktijk echt niet:
– creditcardbetalingen – CSV’tjes – PDF-facturen overal en nergens – geen fatsoenlijke import – alles handmatig matchen, echt bah.... Hoe vragen ze hier 35 euro per maand voor......

Gadver.

Vrijwel al mijn huidige zakelijke uitgaven lopen tegenwoordig via onze creditcard. Veel software veel AI, veel abonnementen, vaak in USD. Maar SnelStart (en eerlijk: de meeste boekhoudsystemen) gaan daar niet echt lekker mee om. Geen automatische koppeling, geen duidelijke matching, geen overzicht. Dus zit je alsnog bedragen te vergelijken, facturen te zoeken, en fouten te corrigeren.

En toen dacht ik:
dan bouw ik dit deel gewoon zelf.

Het probleem dat ik wilde oplossen

Je hebt twee werelden:

  1. De creditcard CSV
    Een export van ING met:

    • datum
      bedrag (in EUR)
      omschrijving
      valuta

  2. De facturen
    PDF’s van leveranciers. In allerlei formats. EUR, USD, soms met BTW, soms zonder. Soms duidelijk, soms verstopt in kleine letters.

Wat je wilt:
➡️ automatisch weten welke factuur bij welke transactie hoort
➡️ en meteen zien wat nog ontbreekt

Niet half, niet ongeveer — maar boekhoudkundig kloppend.

De oplossing (en ja, ik ging iets te ver)

Ik had al een abonnementen-dashboard lopen, dus heb ik daar een creditcard-module aan vast gebouwd. Twee middagen. Uurtje of zeven. Beetje heen en weer.

Startte met Claude Opus 3 om de logica scherp te krijgen, en Aura voor PB design.
Daarna Claude Cowork, die letterlijk alle facturen is gaan opsporen (dat was magisch).
En uiteindelijk weer Replit, omdat dat al mijn bestaande basis had.

En toen werd het leuk.

Wat het systeem doet

1. Slim PDF lezen (zonder AI-poëzie)

Facturen zijn chaos. Dus heb ik een parser gebouwd die herkent wat er écht toe doet:

  • Bedragen
    Herkent varianten als:

    • Amount due $12.99
      Invoice Total: €34,50
      Total USD $99.00

  • BTW / VAT
    Nodig voor teruggave. Wordt automatisch uit de PDF gehaald.

  • Factuurnummers
    In alle vreemde formats die leveranciers verzinnen.

Geen gokken. Gewoon pattern matching.

2. Exact matchen (bewust geen fuzzy gedoe)

Het systeem matcht alleen op exact bedrag.

Waarom?

  • Geen foutieve koppelingen
    Geen “bijna hetzelfde” geneuzel
    Volledige zekerheid voor de boekhouding

USD-factuur?
→ wordt omgerekend → gematcht op het EUR-bedrag dat op de creditcard staat

Geen match = zichtbaar. Klaar.

3. Meerdere valuta, netjes opgeslagen

Voor USD-facturen bewaart het systeem:

  • origineel bedrag + valuta
    omgerekend EUR-bedrag
    gebruikte koers (impliciet via afschrift)

Dus alles blijft controleerbaar.

4. In één oogopslag zien waar je staat

In het dashboard zie je meteen:

  • 🟢 alles gekoppeld
    🟠 facturen ontbreken nog

Per leverancier zie je:

  • wat klopt
    wat openstaat
    wat aandacht nodig heeft

Geen zoekwerk. Geen twijfel.

De workflow (simpel, zoals het hoort)

  1. Upload de ING creditcard CSV
    Sleep PDF-facturen erbij
    Het systeem matcht automatisch
    Jij checkt alleen wat niet klopt
    Export voor de accountant, inclusief BTW-overzicht

Wat het me oplevert

Wat eerst uren kostte, is nu minuten werk.
Maar belangrijker: rust.

Je weet:

  • wat klopt
    wat mist
    hoeveel BTW je kunt terugvragen

Geen vage aannames meer. Geen handmatig vergelijkwerk.

Het draait op een moderne stack (React, TypeScript, PostgreSQL), maar dat is bijzaak.
Dit is geen tech-project. Dit is een leven-terugkrijgen-project.

De Stack

  • Frontend: React 18 + TypeScript + Tailwind CSS
    Backend: Node.js + Express
    Database: PostgreSQL met Drizzle ORM
    PDF Parsing: pdf-parse library met custom regex extractors

En omdat ik wel echt visueel ben ingesteld, laad hij automatisch de logo's van de bedrijfen komen van Google's Favicon Service.

Ik bouw dit soort systemen omdat ik ze zelf nodig heb.
En als ze voor mij werken, werken ze meestal ook voor anderen.

V2.0 dan ga ik....
Aanvullend ga ik denk ik nog een Gmail koppeling maken zodat de facturen zelf gevonden worden door systeem en ingeladen klaar staan als de csv van ING komt, en er is een Abonnementen onderdeel wat ik al had wat hier nu bij zit (dus alle abonnementjes van AI en software, die toekomstig met Claude automatisch kunnen gaan opzeggen of verlengen.

Endoor.
Peter.