Skip to content
DocumentationTry Hanzo
Treasury Operations

Hanzo Treasury

A double-entry ledger for money moving inside your product

Every movement is postings between accounts, so the books balance by construction rather than by a nightly job that hopes. Marketplace splits, held funds, refunds and fees are written as transactions you can replay — which is what you need the day someone asks where a particular dollar went.

Auto
Sweep
Real-time
Recon

What it is made of

A ledger, a language for writing transactions, and the machinery around them.

Double-entry ledger

A transaction is a set of postings with a source and a destination, and it is rejected unless it balances. Entries are immutable — a correction is another transaction, so history stays true.

Reconciliation

Match what the ledger believes against what a payment provider reports, and surface the rows that disagree. The breaks are the output; agreeing totals need no attention.

Accounts and balances

Hold balances per account and per currency, and move between them as ledger transactions. What an account settles against is configured per deployment.

Wallets with holds

Multi-currency virtual wallets that can hold an amount and release it later. That is how you take money at checkout and pay a seller on delivery without the balance lying in between.

Flows and webhooks

Longer sequences — capture, split, pay out, retry — run as orchestrated flows, and every change of financial state is delivered as an event you can subscribe to.

Write the transaction, not the bookkeeping

split.num
// A $100 order, split three ways, written once.
// Numscript refuses to run this if the amounts do not add up.

send [USD/2 10000] (
  source = @users:001
  destination = {
    90% to @merchants:042
    5%  to @fees:processing
    remaining to @platform:revenue
  }
)

Post your first transaction

Open source

License: Apache-2.0hanzoai

Get Treasury

Treasury management