Businesses, accounts and transactions
Everything lives inside a business. A business has accounts, and every change to an account's money is a transaction. That is the whole shape: there is no hidden balance anywhere else.
Money coming in is an investment, income, a loan received, a debt collected or a transfer in. Money going out is an expense, an owner withdrawal, a loan given, a debt payment or a transfer out. A transfer between two of your own accounts is written as two transactions, one on each side.
Balance, held and available
Each account shows three numbers. The balance is the money in the account. Held is money reserved by holds, for example an approved purchase that has not been paid yet. Available is the balance minus what is held, and it is the number every spending check uses.
| Number | Meaning | Example |
|---|---|---|
| Balance | Money in the account | 1,000 |
| Held | Reserved, not yet spent | 400 |
| Available | Balance minus held: what can still be spent | 600 |
Never below zero
An account can never be spent below zero. An expense, transfer, loan or hold larger than the available money is refused with INSUFFICIENT_FUNDS, and the answer says how much was short. Nothing is deducted, so there is nothing to undo.
Two requests arriving at the same moment cannot both squeeze through. Each change checks the account's version, and the one that loses the race is checked again against the new balance.
History is never edited
Transactions are never changed or deleted. A mistake is undone with a reversal: a new, opposite transaction that points at the original. Months that are reconciled can be closed, after which nothing can be dated inside them. Every important action is also written to the audit log.
This is what lets an accountant or investor trust the numbers: the history only ever grows.
How amounts are stored
Amounts are kept as whole numbers of the currency's smallest unit, using that currency's own decimals: two for dollars, none for yen, three for Kuwaiti dinar. You always type and see normal amounts like 1500.50; the conversion happens on the server, so rounding errors cannot creep in.
Who did what
Every transaction records where it came from: a person in the dashboard or an API key. Every key, invite and share link stores only a fingerprint of its secret, never the secret itself.
