Wie het goedkeurde, tegen welke koers, op welke dag: vastgelegd, of iemand erom vraagt of niet.
Goedkeuringen, betaalstatus, wisselkoersen en rolwijzigingen worden door de server vastgelegd op het moment dat ze gebeuren, niet zes weken later gereconstrueerd uit een groepsapp.
- Uitgave goedgekeurd · €980,00A. Silva · 2 min geleden · boven drempel
- Rol van lid gewijzigd · M. Lopes → BoekhoudingA. Silva · 14 min geleden
- Uitgave ingediend · $500 → €462,18 @ 0,9244J. Costa · 1 uur geleden
- Budgetregel bewerkt · Productie +€2.000A. Silva · gisteren
Standaard een audittrail
Elke financiële wijziging draagt de persoon die hem maakte en het moment waarop. Het evenement aanmaken, een uitgave goedkeuren, een budgetregel verschuiven: alles komt in de eigen geschiedenis van dat evenement.
- Wie en wanneer bij elke wijziging
- Geschreven door de API, niet door de client
Toegang op basis van rol
Een stagemanager die bonnen indient en een boekhouder die facturen als betaald markeert, hebben niet dezelfde rechten nodig. Vier rollen, en elk endpoint controleert die van de aanvrager voordat het iets doet.
- Vier rollen, aan de serverkant gecontroleerd
- Organisatieclaim in het token
Historische wisselkoersen bewaard
Een leverancier die in dollars factureert, houdt het dollarbedrag en de koers van de dag waarop je het invoerde. Een rapport maanden later toont wat de show kostte, niet wat hij kost volgens de koers van vandaag.
- Wisselkoers opgeslagen bij invoer
- Btw-behandeling per regel vastgelegd
Operationele helderheid
Budget, uitgaven, inkomsten en goedkeuringen staan op dezelfde gegevens, dus de marge die je in een rapport leest komt uit regels waarop je kunt klikken.
- Budget, uitgaven en inkomsten samen
- Exports uit dezelfde gegevens
Vier grenzen die elke schrijfactie passeert.
Dit zijn de lagen waar een verzoek doorheen gaat voordat het een getal kan wijzigen. Ze zijn in elke omgeving hetzelfde.
Geauthenticeerde sessie
Firebase Auth stelt vast wie het vraagt. Inloggen kan met e-mail en Google-SSO.
- E-mail en Google-SSO
- Sessie vastgesteld voor al het andere
Organisatieclaim in het token
Een orgId-claim die de server uitgeeft, beperkt elke leesactie tot de gegevens van die organisatie. Alle records staan onder /orgs/{orgId}.
- orgId-claim in het token
- Alle records onder /orgs/{orgId}
Rechtencontrole aan de serverkant
Elk endpoint controleert de rol van de aanvrager voordat het iets doet. Een knop verbergen is geen controle; de controle op de server wel.
- requireRole() voordat er iets gebeurt
- Een verborgen knop is geen controle
Schrijfacties gaan via de API
De beveiligingsregels weigeren schrijfacties van de client, dus btw- en koersmomentopnames kunnen niet vanuit de browser worden vervalst.
- Schrijfacties van de client geweigerd
- Momentopnames niet te vervalsen
Vier regels uit het record van één evenement.
Elke regel hier wordt door de server geschreven. De client kan geen auditregel of koersmomentopname maken.
- Uitgave goedgekeurd · €980,00A. Silva · boven drempel · vastgelegd met wie en wanneer
- Btw-tarief vastgelegd · Btw 23% opgeslagen op de regelHet tarief later hernoemen in de lijst verandert deze regel niet
- Wisselkoers vastgelegd bij invoer · $500 → €462,18 @ 0,9244Opgeslagen op het record, nooit opnieuw berekend bij een rapport
- Rol gewijzigd · M. Lopes → BoekhoudingClaim aan de serverkant opnieuw uitgegeven; geldt vanaf de volgende tokenvernieuwing
Wat we op papier kunnen zetten.
De eerlijke versie van een beveiligingspagina: wat er vandaag is ingebouwd en waar je het zelf kunt controleren. Als iets er niet is, zeggen we dat gewoon.
| Onderwerp | Stand van zaken | Zo controleer je het |
|---|---|---|
| Gegevenslocatie | Firebase (Google Cloud), europe-west1, België. Standaard alleen in de EU. | Vermeld in ons privacybeleid, met de lijst van subverwerkers. |
| AVG | Verzoeken om inzage, correctie, verwijdering en overdraagbaarheid worden ondersteund. | Privacybeleid; mail ons om een recht uit te oefenen. |
| Kaartgegevens | Cashbox slaat nooit kaartgegevens op. Stripe verwerkt betaalgegevens in zijn eigen PCI-conforme omgeving. | Stripe staat op de lijst van subverwerkers. |
| Scheiding tussen organisaties | Afscherming per organisatie, afgedwongen door Firestore-beveiligingsregels op een claim die de server uitgeeft. | De regels worden gedekt door een geautomatiseerde testsuite in de repository. |
| Audittrail | Financiële wijzigingen worden vastgelegd met wie en wanneer, aan de serverkant geschreven. | Zichtbaar in het product, in de geschiedenis van elk evenement. |
| Verwerkersovereenkomst | Op aanvraag beschikbaar; op maat bij het Enterprise-abonnement. | Neem contact op en we sturen de actuele overeenkomst. |
| Formele certificering | Cashbox is momenteel niet SOC 2- of ISO 27001-gecertificeerd. We zullen niet anders beweren. | Vraag ons rechtstreeks naar de huidige plannen en planning. |
Hoe evenemententeams dit inrichten.
Alleen eigenaren komen bij de facturering. Eigenaren en directie kunnen uitnodigen. Geef de rest van het productieteam de rol eventmanager en je boekhouder de rol boekhouding.
Zet de drempel op het bedrag dat je wilt zien voordat het wordt uitgegeven. Alles tot en met dat bedrag wordt bij indienen goedgekeurd; alles daarboven wacht op een beoordelaar.
Voeg de factuur bij de uitgave als je die vastlegt. Hij blijft bij het record, achter dezelfde organisatiecontrole als al het andere, zodat afsluiten geen zoektocht door mailboxen wordt.
Exporteer uit dezelfde gegevens waar de goedkeuringen doorheen gingen. Je boekhouder krijgt de cijfers van het evenement met de geschiedenis erachter, geen spreadsheet die iemand heeft overgetypt.
De verwerkersovereenkomst nodig, of wil je beter kijken?
Vraag het en we sturen de actuele verwerkersovereenkomst, de lijst met subverwerkers of een uitleg van hoe rollen en goedkeuringen zijn ingericht.