Security
What is actually built — and what is not
This page lists protections that exist in the code and are held in place by tests. The last section says what is missing. Both belong together; a security page without the second half is advertising.
-
Your data is yours
Every query runs against your organisation and against the rights of the person making it. Not as a filter in the interface but inside the services — and an architecture test refuses any service that merely accepts an identifier without asking whether the caller is allowed.
-
We never see your bank credentials
If you later connect a bank account, the sign-in happens at your bank and at a licensed provider, never here. We receive a reference back, which is stored encrypted. Your bank username and password never touch KRONENWERK.
-
Secrets are stored encrypted
Access keys for connected systems are stored encrypted with AES-GCM and never handed back after creation — not to the website, not to the app, not to the API, not even to the person who entered it. What stays visible is the last few characters and when it was last used.
-
Posted entries stay put
Ledger entries have no setters, their columns are immutable, and the database itself refuses a change with a trigger. Three times over, because two guards in code are one guard somebody can go around. A correction is always a new, opposing entry that names the one it reverses.
-
Issued invoices are copies, not references
Issuing writes a complete snapshot: seller, buyer, lines, amounts — as a copy, not as a reference to master data that may change tomorrow. Alongside it, the files with their checksums and the record of which validator, at which rule version, cleared them. Eight years later the document is still the same document.
-
It is written down who did what
Master data edits, marking something paid, rejecting a document, closing a period: each writes a line naming the person, the moment and the subject. The log is visible in the product, not only in the database.
-
Sign-in and session
Passwords are hashed with Argon2id, the currently recommended choice. The session identifier changes on sign-in, every mutating form carries cross-site request protection, and a password reset request gets the same answer whether or not the account exists. A reset link is good for one hour and one use; the moment it is spent, every open session on the account ends.
What we do not claim
The part other people leave out
- We hold no ISO 27001 certification, no SOC 2 report and no external security audit. Where you see one elsewhere, ask to read it.
- We show no customer logos and no testimonials, because KRONENWERK does not yet have customers to quote.
- Signing in is by password. There is no second factor. A forgotten password is reset by the account holder, over a single-use link sent to their address.
- KRONENWERK is given no bank credentials. Payments are recorded by hand or confirmed through the payment provider.