// Onder de motorkap

    Hoe Joulo gebouwd is

    We krijgen vaak vragen over waar jouw data staat, hoe we ERE-credits aantonen en wie ons controleert. Dit is het korte antwoord.

    Per-rij toegangscontrole
    Versleutelde IBAN
    Onbewerkbare audit-log
    Op NEa-lijst

    Hoe Joulo gebouwd is

    Een korte, eerlijke uitleg van de techniek achter Joulo. Voor wie wil weten waar zijn data staat, hoe we ermee omgaan, en hoe we kunnen aantonen dat de ERE-credits kloppen.


    In één alinea

    Joulo draait op twee gescheiden lagen: een wereldwijd netwerk dat de website, het dashboard en het laadpaal-verkeer afhandelt, en een database in Europese datacenters voor jouw gegevens, sessies en uitbetalingen. Elke laadpaal die meet, elke knop die je in de app indrukt, elke euro die we voor je inboeken: alles wordt vastgelegd zodat we het later kunnen aantonen aan jou, aan de NEa en aan een externe auditor.


    Waar staat jouw data

    WatWaarWie kan erbij
    Account, e-mail, instellingenDatabase in een Europees datacenterJij, met je inlog. Wij alleen voor support na jouw verzoek.
    Laadsessies (datum, kWh, paal)IdemIdem.
    IBAN voor uitbetalingVersleutelde kluis, losgekoppeld van de databaseNiemand kan dit lezen zonder de juiste sleutel. Ook wij niet, behalve de uitbetalingsfunctie zelf.
    Tokens van je laadpaal-accountIdemIdem.
    Foto's van je MID-meterPrivé-opslagAlleen jij, via tijdelijke links (1 uur geldig).
    Ruwe technische berichten van je paalOnbewerkbaar archief, append-onlyAudit-bewijs, niet bewerkbaar.

    We bewaren niets dat we niet nodig hebben. Gevoelige gegevens zoals je IBAN staan versleuteld op een andere plek dan de rest van je data, zodat ze ook bij ons niet zomaar in te zien zijn.


    Hoe we ERE-credits kunnen aantonen

    ERE-credits zijn geld. Geld moet kloppen. Daarom registreren we elke laadsessie op twee plekken tegelijk:

    1. Bewerkbare laag de database, met audit-trail. Hier rekenen we mee, hier kun jij je sessies zien.
    2. Onbewerkbare laag een append-only archief. Niet wijzigbaar door ons, niet wijzigbaar door derden.

    Bij de NEa of bij een externe audit kunnen we beide naast elkaar leggen. Dat is wat een inboekdienstverlener doet: we maken jouw stroomlevering aantoonbaar. Zonder bewijs geen credits, en zonder credits geen uitbetaling. Daarom dit dubbele systeem.

    We onderscheiden in de app duidelijk:

    • 🟢 Server-geverifieerde sessies door onze backend zelf gemeten via het OCPP-protocol.
    • 🟡 Geïmporteerde sessies door jouw laadpaal-account (Tesla, Easee, …) aangeleverd via een gekoppelde API.
    • ⚪️ Handmatig ingevoerde sessies door jou zelf opgegeven, met een lager vertrouwensniveau.

    Onze MID-meter detectie (en de verplichting daartoe voor de hoogste credit-categorie) is hard ingebouwd: geen MID-meter, geen ERE.


    OCPP en volledige traceerbaarheid

    Voor laadpalen die direct met ons praten via het OCPP-protocol (de open standaard voor laadinfrastructuur) hebben we onze eigen Central System gebouwd. Dat draait op ons wereldwijde edge-netwerk en heeft drie eigenschappen die ertoe doen:

    1. Per laadpaal een eigen langlevend proces. Elke paal krijgt zijn eigen vaste plek aan de edge, dichtbij waar hij staat. Geen enkele paal "deelt" verbinding of state met een andere. Tussen berichten door slaapt het proces (en kost het ons niets); zodra er een bericht binnenkomt, wordt het wakker. Dat is hoe je tegelijk goedkoop én altijd-aan kunt zijn.
    2. Niets gaat verloren als de database even niet bereikbaar is. De edge schrijft binnenkomende OCPP-berichten eerst naar een lokale wachtrij (de "outbox") en stuurt ze daarna door naar de database. Een database-onderhoud of -storing? De wachtrij vult zich, en als de database terug is wordt alles alsnog netjes ingeboekt. Met een idempotency-sleutel per bericht: dubbele berichten leiden niet tot dubbele inboekingen.
    3. Elk OCPP-bericht wordt onbewerkbaar gearchiveerd. Naast de bewerkbare database-tabellen wordt elk in- en uitgaand OCPP-frame als losstaand bestand weggeschreven naar een append-only archief. Niet wijzigbaar, niet verwijderbaar, voor minimaal 13 maanden hot en daarna in cold storage onbeperkt bewaard.

    Het effect daarvan is volledige traceerbaarheid: van het moment dat je auto begint te laden en je paal een StartTransaction stuurt, via elke MeterValues-tussenstand, tot de uiteindelijke StopTransaction met de afsluitende meterstand elke stap is in twee onafhankelijke administraties terug te vinden. Bij een vraag van de NEa, een externe auditor, of jou als klant kunnen we per laadsessie het hele bericht-verloop reconstrueren. Geen "we vertrouwen het wel", maar bewijs.


    Wie ziet wat

    Onze database past per-rij toegangscontrole toe op elke tabel. Dat betekent: de database zelf staat alleen toe dat jouw sessies, jouw IBAN, jouw foto's bij jou terechtkomen. Een verkeerd geprogrammeerde frontend kan die regel niet omzeilen, want de databaseregels zelf weigeren het.

    Voor onze admins is er een aparte laag, met logging van élke admin-actie. Wie wat wanneer bekeek, staat in een aparte audit-tabel.


    Beveiliging aan de buitenkant

    • Een firewall aan de buitenrand van het netwerk filtert kwaadaardig verkeer voordat het ons bereikt.
    • AI-bot policy weert scrapers en geautomatiseerde misbruikpogingen, met een uitzondering voor zoek-crawlers die we expliciet toelaten.
    • Voor partners en API-gebruikers: OAuth 2 met scoped tokens en per-token rate-limiting.
    • Inloggen gebeurt via wachtwoord-hashing volgens industry standard, met optionele magic-link login.
    • Geen wachtwoorden in onze logs. Geen tokens in onze logs. Geen IBAN's in onze logs.

    Wie controleert ons

    • NEa de regulator. Joulo B.V. staat sinds 2 februari 2026 op de officiële lijst van inboekdienstverleners. De REV-rekening (waarmee registraties technisch worden ingediend) is een aparte vervolgstap voor inboekdienstverleners.
    • Capptions onze officiële compliance-software-partner. Audit-evidence onder elke ERE-claim die we maken.
    • Externe auditor bij de eerste batch-registratie en daarna jaarlijks.
    • Jij via je eigen dashboard kun je elke sessie en elke uitbetaling tot op kWh-niveau terugzien.

    Wat doe je als je weg wilt

    • Opzeggen: in één klik in je dashboard. Geen vaste looptijd, jaarlijks opzegbaar (Wet van Dam). Geen kosten.
    • Data exporteren: alle sessies en uitbetalingen downloadbaar als CSV/JSON.
    • Account verwijderen: kan zelf vanuit je dashboard zolang we nog géén ERE-credits voor je hebben ingeboekt bij de NEa. Heb je al wel ingeboekt? Dan moeten we de bijbehorende administratie wettelijk bewaren als auditable record. Je account wordt in dat geval geblokkeerd en je gegevens worden geminimaliseerd tot wat de audit-trail vereist; je hoort niets meer van ons, maar de records blijven beschikbaar voor de NEa.

    Korte samenvatting

    OnderdeelWat
    Marketing- en dashboard-frontendServer-side gerenderd, met een snelle SPA voor het ingelogde dashboard
    Voorkant (edge)Wereldwijd netwerk dat verkeer dichtbij de gebruiker afhandelt; per laadpaal een eigen langlevend proces voor de OCPP-verbinding
    Achterkant (data)Relationele database in Europese datacenters met per-rij toegangscontrole, daarnaast een onbewerkbaar archief voor audit-bewijs
    Mobiele appNative iOS- en Android-app met dezelfde backend
    Laadpaal-protocolOCPP 1.6J eigen Central System (CSMS) onder eigen beheer
    Cloud-integratiesTesla, Easee, Wallbox, Zaptec, V2C, 50five, Plugchoice (live), Smappee (in ontwikkeling)
    ReleasesVolledig geautomatiseerd via Git geen handmatige deploys
    ObservabilityExterne uptime-monitoring, gestructureerde logs en een interne /status-pagina

    Vragen over hoe we iets gebouwd hebben, waar jouw data staat of waarom we voor een bepaalde aanpak gekozen hebben? Mail info@joulo.nl of bel ons.

    Joulo B.V. Brummen, NL KvK 42023359

    Wil je dieper de stack in?

    Voor partners en developers hebben we een uitgebreidere documentatie van het platform, de OAuth-stack, de OCPP CSMS en de white-label opties.