Most finance apps store your expenses right next to your profile. Same table, same row. One data breach, and everything is connected: name, email, every single transaction.
WonderFunds works fundamentally differently.
Financial Data Without an Owner
In the WonderFunds database, there is no column linking your transactions to your user account. No user_id in the financial tables. Instead, we use a pseudonymous data token: 32 random bytes stored as a hexadecimal string.
This token has zero relation to your email, your name, or your user ID. It's simply a random string with 256 bits of entropy, statistically impossible to guess.
All financial tables (transactions, categories, tags, sources, rules) reference only this token. Your user account knows nothing about your financial data. Your financial data knows nothing about your user account.
The only bridge between the two? Encrypted.
AES-256-GCM: What's Behind It?
The connection between your account and your data token is encrypted with AES-256-GCM, the same method used by banks, government agencies, and messaging services.
In short:
- AES-256 stands for the Advanced Encryption Standard with a 256-bit key length. Symmetric encryption, the same key encrypts and decrypts.
- GCM (Galois/Counter Mode) is the mode of operation. It provides not just confidentiality (nobody can read the data) but also authenticity: an auth tag ensures the encrypted data hasn't been tampered with.
So even if someone gets hold of the encrypted data, they can neither read it nor modify it undetected.
WonderFunds stores the mapping between your account and your financial data exclusively in encrypted form. Without the correct key, this mapping cannot be recovered, not even by us.
The Key Encryption Key
Not every user shares the same key. WonderFunds derives a separate Key Encryption Key (KEK) for each person.
Here's how it works:
- A master key exists as an environment variable on the server. It never leaves memory and is not stored in the database.
- From the master key and your user ID, an individual KEK is computed via SHA-256.
- This KEK encrypts your data token. The result (the encrypted token) is stored in your user profile.
The benefit: even if a single KEK is compromised, only one user is affected. Everyone else stays protected.
Authenticated Encryption
A detail that often gets overlooked: GCM includes an authentication tag. Think of it as a cryptographic checksum.



