BonnetjesBon scannen

Zeven controlelagen per bon

Wat we doen tegen bonfraude

Cashback-acties zijn een magneet voor vervalste kassabonnen. Met AI-beeldgeneratoren maakt iemand in dertig seconden een bon die er perfect uitziet. Daarom beoordelen we elke upload niet alleen op wat er staat, maar ook op hoe het bestand is gemaakt, of de bedragen kloppen, of de barcode echte data bevat en of we de bon al eerder hebben gezien.

1. Bestandsforensiek

We lezen de verborgen metadata van het bestand: EXIF (camera, lens, opnamedatum, GPS), softwaretags van Photoshop, Canva of AI-generatoren, en C2PA Content Credentials — de digitale handtekening die AI-tools tegenwoordig meebakken. Ook JPEG-compressietabellen en typische schermafbeelding-formaten verraden dat een bon niet met een telefooncamera is gemaakt.

  • Geen camera-informatie in het bestand
  • Bewerkt met Photoshop / gegenereerd met AI
  • Content Credentials aanwezig
  • Screenshot in plaats van foto

2. AI-forensiek op de foto

Een tweede, aparte AI-analyse kijkt alleen naar de afbeelding zelf: klopt de papierstructuur, zitten er vouwen en schaduwen in, is de ruis over de hele foto consistent, staan de tekstregels perfect uitgelijnd (typisch voor gerenderde tekst) en klopt het thermische lettertype van de keten? Dit levert een kans op AI-generatie en een kans op bewerking.

  • Onnatuurlijk vlak papier zonder vouwen
  • Inconsistente ruis of belichting
  • Te perfecte uitlijning van tekst

3. Rekenkundige plausibiliteit

Een vervalste bon ziet er goed uit, maar rekent zelden goed. We tellen alle regels op, verrekenen kortingen en statiegeld en vergelijken dat met het gedrukte totaal. Ook per artikel: aantal × stukprijs − korting moet kloppen. Btw-regels worden nagerekend tegen de Nederlandse tarieven van 9% en 21%.

  • Regels tellen niet op tot het totaal
  • Btw-bedrag past niet bij het tarief
  • Artikelregel rekent niet kloppend

4. Inhoudelijke controle

We toetsen of de gegevens op de bon überhaupt kunnen bestaan: geldige Nederlandse postcode, telefoonnummer, btw- en KvK-nummer, een aankoopdatum die niet in de toekomst ligt, statiegeld in veelvouden van € 0,05 en realistische aantallen en bedragen. Verdachte transactienummers zoals 1234 of 0000 vallen direct op.

  • Postcode, btw- of KvK-nummer bestaat niet
  • Datum in de toekomst of buiten openingstijden
  • Te ronde of opeenvolgende transactienummers

5. Barcodeverificatie

Dit is een van de sterkste signalen. AI tekent een barcode die er echt uitziet, maar geen geldige data bevat. Wij decoderen de barcode daadwerkelijk (Code128, EAN, ITF), controleren het controlecijfer, vergelijken de inhoud met het bon-, transactie- of terminalnummer in de tekst, en toetsen lengte en prefix aan het formaat van de keten.

  • Barcode zichtbaar maar niet te decoderen
  • Controlecijfer klopt niet
  • Barcode decodeert naar iets anders dan de tekst
  • Formaat past niet bij de winkelketen

6. Dubbeldetectie over alle uploads

Elke scan wordt permanent vastgelegd met een bestandshash (SHA-256), een perceptuele beeldhash (pHash/dHash), de transactiesleutel en de barcode. Daardoor herkennen we niet alleen exact hetzelfde bestand, maar ook dezelfde bon opnieuw gefotografeerd, bijgesneden of gecomprimeerd — en sjabloonfraude, waarbij één echte bon steeds met een ander bedrag wordt hergebruikt.

  • Zelfde bestand of zelfde transactie al eerder ingediend
  • Visueel vrijwel identieke bon (pHash-afstand)
  • Zelfde sjabloon met een afwijkend bedrag

7. Gedrag per uploader

Bij elke scan leggen we het IP-adres en de browser van de uploader vast. Zo zien we clusters: tientallen bonnen vanaf één adres binnen een dag, of een adres dat eerder al afgekeurde bonnen indiende. In de uitvoer tonen we het IP-adres alleen gemaskeerd (bijvoorbeeld 81.204.xxx.xxx).

  • Ongewoon veel uploads vanaf één IP-adres
  • Eerder rood beoordeelde bonnen vanaf hetzelfde adres

Van signalen naar een oordeel

Elk signaal heeft een gewicht. Sterke aanwijzingen (Content Credentials, een barcode die niet decodeert, een al eerder ingediend bestand) wegen zwaar; bevestigende signalen zoals een kloppend controlecijfer of aanwezige camera-informatie halen juist punten van de score af. Bij elkaar opgeteld levert dat een risicoscore van 0 tot 100 op.

0 – 25 · groen

Betrouwbaar. Cashback kan automatisch goedgekeurd worden.

26 – 60 · geel

Twijfelachtig. Een medewerker bekijkt de bon handmatig.

61 – 100 · rood

Waarschijnlijk vervalst. Afwijzen of aanvullend bewijs vragen.

Privacy en bewaartermijn

Van elke scan bewaren we alleen wat nodig is om fraude te herkennen: hashes van de afbeelding, de transactiekenmerken, de barcode, het IP-adres en de browser. De foto zelf wordt niet in de scanlog opgeslagen. De log is afgeschermd en niet publiek opvraagbaar; in de JSON-uitvoer tonen we het IP-adres uitsluitend gemaskeerd. Geen enkel signaal leidt op zichzelf tot een afwijzing — de score is een hulpmiddel voor een menselijke beoordeling.