Define the ZBA structure: a master concentration account (the physical account that accumulates funds) and one or more subsidiary ZBA accounts (which return to zero each day); create corresponding Internal Accounts in Modern Treasury for each physical bank account in the structure
Create Ledger Accounts within a Ledger to model the economic positions: a master account ledger account and individual ZBA ledger accounts; optionally create a parent-child hierarchy in the ledger to roll up subsidiary balances to the master in reporting
At end-of-day, poll each ZBA account's balance via the bank reporting API or BAI2 intraday file; calculate the net amount to concentrate (positive balance) or fund (negative balance if overdraft protection is enabled)
Originate a Modern Treasury Payment Order (book transfer if accounts are at the same bank, ACH if at different banks) to sweep the ZBA balance to the master account; for same-bank book transfers, execution is typically same-day and does not consume a payment rail
Create a corresponding double-entry Ledger Transaction for each sweep: debit the ZBA ledger account and credit the master ledger account for the swept amount, with effective date set to the business date of the sweep
Reconcile the next-day bank statement: the ZBA account should show an opening balance near zero (the sweep may not execute to the exact penny if fees or interest posted after the sweep calculation), and the master account should show the aggregate of all ZBA sweeps as credit entries
Known gotchas
Book transfers between accounts at the same bank settle immediately and do not produce ACH transaction IDs, but they do appear as distinct debit and credit entries in the bank statement — reconciliation logic that looks for ACH references will miss book transfers entirely, leaving them as unmatched statement entries
ZBA sweeps calculated before end-of-day fees post to the subsidiary account will leave a small residual balance (the fee amount) that does not zero the account — design the sweep to include a clearing buffer or schedule the sweep calculation after confirmed end-of-day fee posting
When using Modern Treasury Payment Orders for ZBA sweeps, the returned payment order status transitions asynchronously; triggering the next business day's cash-position model before the sweep Payment Order reaches a settled status may produce an incorrect opening position that double-counts funds in transit
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp