Double-entry, deeply.
QuickBooks and Xero treat the ledger as a place to summarise transactions after the fact. Bean treats it as the source of truth — every other Garden service writes balanced entries to it, and every period close produces a cryptographic seal an auditor can verify in seconds.
Journal Entries
J-2026-04-29-04417
| Acct | Account | Debit | Credit |
|---|---|---|---|
| 1100 | Accounts Receivable | $14,820.00 | |
| 2200 | Sales Tax Payable | $1,209.00 | |
| 4000 | Software · subscription | $13,611.00 | |
| Total | $14,820.00 | $14,820.00 | |
An auditor can replay your last seven years in 2 seconds.
Every state change — journal post, period close, account change, even a chart-of-accounts edit — is recorded with the actor (human DID or agent token), the time, the device, and the hash of the previous record. Replay is deterministic. Falsifying history requires breaking SHA-3.
Audit · last 6 events · all-time chain sealed
- 29 Apr 13:42:08.182journal.postedJ-2026-04-29-04417agent:tomato/0x4f1blake3:9f3a2c…be17
- 29 Apr 13:42:08.094journal.approvedJ-2026-04-29-04417human:cfo@acmeblake3:be1722…3a8f
- 29 Apr 13:41:55.022journal.draftedJ-2026-04-29-04417agent:tomato/0x4f1blake3:3a8f9c…02e1
- 29 Apr 13:41:54.881invoice.postedINV-2941agent:basil/0x281blake3:02e144…ab02
- 29 Apr 13:41:54.612period.opened2026-04human:controllerblake3:ab02f3…7741
- 29 Apr 13:41:42.418invoice.draftedINV-2941agent:basil/0x281blake3:774150…9214
The skeleton every other service writes against.
Cabbage AR, Chard rails, Greenhouse vault, Branches banks — every sub-ledger binds to a specific account code. Templates for SaaS, holding-company, marketplace, autonomous-org, and crypto-native treasuries land balanced on day one.
Chart of accounts · ACME Holdings · US-Parent · period 2026-04
| Code | Account | Type | Balance | Period activity |
|---|---|---|---|---|
| 1000 | Assets | asset | $2,531,040.40 | +184,200.00 |
| 1100 | Current assets | asset | $2,254,640.40 | +162,000.00 |
| 1110 | Operating cash · JPMorgan ····0049 | asset | $1,247,398.00 | +72,400.00 |
| 1112 | Reserve · Mercury ····6612 | asset | $812,000.00 | +50,000.00 |
| 1115 | Card float · Brex ····4408 | asset | $18,924.00 | -2,400.00 |
| 1130 | FX float · Wise EUR ····8801 | asset | $284,118.40 | +18,200.00 |
| 1140 | FX float · Revolut GBP ····2237 | asset | $92,400.00 | +24,200.00 |
| 1200 | Accounts receivable | asset | $143,420.00 | +8,800.00 |
| 1300 | Self-custody · Greenhouse | asset | $133,000.00 | +13,400.00 |
| 2000 | Liabilities | liability | $284,400.00 | +22,400.00 |
| 2100 | Accounts payable | liability | $92,200.00 | +4,800.00 |
| 2200 | Sales tax payable | liability | $14,820.00 | +820.00 |
| 2210 | Deferred revenue · Cabbage | liability | $146,508.00 | +12,420.00 |
| 2300 | Tax withholding · 1042-S | liability | $30,872.00 | +4,360.00 |
| 3000 | Equity | equity | $2,246,640.40 | +161,800.00 |
| 3100 | Owners' capital | equity | $1,800,000.00 | 0.00 |
| 3200 | Retained earnings | equity | $446,640.40 | +161,800.00 |
Built like infrastructure, not like a spreadsheet you log into.
Bean is the first ledger that takes the agent operator seriously. Every other system you've used treats automation as a bolt-on import.
| Capability | QuickBooks | Xero | NetSuite | Bean |
|---|---|---|---|---|
| Real-time double-entry | — | partial | ✓ | ✓ |
| Multi-entity consolidation | Advanced only | add-on | ✓ | ✓ default |
| Multi-currency revaluation | limited | ✓ | ✓ | ✓ FAS 52 / IAS 21 |
| Cryptographic period seal | — | — | — | ✓ blake3 |
| Hash-chained audit trail | — | — | — | ✓ ed25519 |
| Agent-bound capabilities | — | — | — | ✓ Arsenal tokens |
| MCP server | — | — | — | ✓ |
| ASC 606 / IFRS 15 native | manual | manual | module | ✓ |
| Replay-safe writes | — | — | — | ✓ idempotency-keyed |
Agents post journal entries under signed capabilities.
Bean exposes a typed MCP server. Your agent fetches the schema once and writes journal entries the same way a human controller would — except every write carries a lineage proof back to the human root that authorised the agent.
tool bean.journal.draft Draft a balanced journal entry tool bean.journal.post Post a drafted entry (idempotent) tool bean.period.close Close period with seal (signed) tool bean.trial.balance Trial balance for entity + period tool bean.reverse Reverse a posted entry resource coa://acme/us-parent Chart of accounts (live)
POST /bean/v1/journals Draft + post (idempotency-key required) POST /bean/v1/journals/:id/reverseGenerate a reversing entry POST /bean/v1/periods/close Close period and seal GET /bean/v1/trial-balance Trial balance per entity & period GET /bean/v1/audit/stream Hash-chained event stream
Authorization: Bearer arsenal:act_7d… X-Garden-Principal: did:oas:org:acme:cfo X-Garden-Agent: did:agent:tomato/0x4f1 X-Garden-Capability: bean.journal.post · scope=us-parent X-Garden-Idempotency: J-2026-04-28-04417
Eight things Bean does that QuickBooks can't.
- 01Posted, balanced, signed journal entries with binding to source
- 02Multi-entity consolidation with intercompany eliminations
- 03Multi-currency revaluation and translation (FAS 52 / IAS 21)
- 04Period close with hard locks and blake3 cryptographic seal
- 05Trial balance, P&L, balance sheet, cash flow on demand
- 06Reversal and adjusting entries with full audit chain
- 07Sub-ledger reconciliation with Cabbage / Chard / Greenhouse
- 08ASC 606 revenue recognition primitives, contract-derived























