Treasury model
Treasury objects are built around accounts, roles, approvals, payment instructions, reconciliation state, and reporting exports.
Hazina is designed for finance teams that need operator controls without losing API visibility.
Accounts
Accounts represent operational balances owned by a business, entity, project, or reserve. Account availability depends on partner rails and jurisdiction.
{
"entityId": "ent_kenya_001",
"label": "Operating KES account",
"currency": "KES",
"purpose": "vendor_payments"
}Approvals
Approvals keep maker-checker controls close to the payment or treasury movement. Approval rules can depend on amount, currency, rail, vendor, and operator role.
| State | Meaning | Next action |
|---|---|---|
| draft | Instruction is being assembled | Submit for review |
| pending_approval | Policy requires one or more approvals | Approve or reject |
| approved | Instruction can be executed | Send to rail |
| held | Risk, rail, or operator review is needed | Resolve exception |
Payment batches
Payment batches group vendor, payroll-like, or treasury movements under one approval and reconciliation workflow.
{
"sourceAccount": "acct_kes_operating",
"description": "June vendor run",
"payments": [
{
"vendorId": "ven_001",
"amount": "120000.00",
"currency": "KES",
"rail": "bank_transfer"
}
]
}Reconciliation
Treasury events expose ledger state, partner rail state, and export state so finance teams do not need to reconcile from screenshots.
Related docs