A time bank is a pool of hours that belongs to one client. Work under a Bank billing policy is drawn from the pool before anything is charged, which is how retainers and prepaid hour packages are modelled. The bank keeps an append-only ledger, and its balance is always the sum of the ledger, posted by billing runs and by manual adjustments.
Before you start
- You need the Owner or Admin role; banks are managed in the browser under Clients → client → Time banks. Members see "Only owners and admins configure pricing."
- A bank does nothing until a billing policy names it. "Which kinds draw from a bank is decided by policy, so one bank can serve several kinds."
- Banks are credited and consumed by billing runs, so the balance moves when a period is run, not when time is logged.
Create a bank
Under New time bank, fill in the fields and select Create bank.
| Field | Meaning |
|---|---|
| Name | Shown in policies, on the run page, and on the client timesheet. |
| Type | Recurring: credited every period. Prepaid: credited once, at creation. |
| Hours per period (recurring) | Hours credited to the bank in every period a run covers. |
| Opening pool (hours) (prepaid) | The one-time credit posted when the bank is created. |
| Carry forward | No carry: an unused balance is dropped at the period rollover. Carry up to a cap: up to Carry cap (minutes) is carried into the next period. Recurring only. |
| Borrowing | No borrowing: consumption stops at zero. Borrow to a cap: the balance may go negative down to Borrow cap (minutes); the debt is carried in full into the next period and repaid from the next credit. Recurring only. |
| Overage | What happens to minutes the bank cannot cover: Charge at the rate or Free. |
A bank also has a start date, an end date, and an optional project scope. Outside its dates, or when archived, a bank is skipped by policy resolution; a project-scoped bank may only be named by policies on those projects. The New time bank form does not expose these three settings today.
How a run moves a bank
For each recurring bank active in the run's period, the run first posts the rollover for that period, then consumes:
- Carry out: the previous closing balance is taken out.
- Carry in: what the settings allow is put back: up to the carry cap for a positive balance, or the whole debt for a negative one.
- Credit: Hours per period is added.
- Consumed: entries under this bank's policy draw from the balance, then from borrowing down to the borrow cap. Anything beyond that is overage on the entry.
A prepaid bank has no rollover: it is consumed until it reaches zero. In a bank's first period the run posts the credit only. "A run with nothing to bill still posts bank rollover", so credits keep arriving in periods without work. If earlier closed periods were never run for the client, the run posts their rollover too.
Voiding a run posts a Reversal for every row the run wrote; a replacement run posts them again.
The ledger
Select Ledger on a bank to see the last 200 rows with their period and reason.
| Row | Meaning |
|---|---|
| Credit | Hours per period on a recurring bank; the opening pool on a prepaid bank. |
| Carry out | The previous closing balance removed at rollover. |
| Carry in | The part carried into the new period. |
| Consumed | Minutes drawn by priced entries (negative), or refunded by a correction (positive). |
| Reversal | Undo of a row when its run was voided. |
| Adjustment | A manual change with a reason. |
Balance on the bank card is the sum of all rows.
Adjustments
Select Post adjustment, enter Adjustment (hours) ("Signed. Negative removes minutes. Audited with the reason.") and a Reason, then confirm. Use it for goodwill hours, a renegotiated package, or to start a bank at an agreed balance. The row is attributed to the earliest open period.
Who sees balances
| Reader | Where |
|---|---|
| Owner, Admin | Clients → client → Time banks, the bank block on run pages, and the get_bank_balances MCP tool. |
| Workspace user with a client-wide document grant | get_bank_balances and the context pack for that client's banks, and the bank ledger on the client's timesheets. |
| Billing contact with a full login | The bank ledger section on the client's timesheets and get_bank_balances for their own client. |
| Other workspace users | Bank names in the ticket Policy picker only. No balances. |
| Client users who are not billing contacts | Nothing. |
The MCP tool also reports a projected overage per bank: how many currently unbilled minutes under the bank's policies exceed what the bank can cover before the next rollover.
Archive and reactivate
Archive takes the bank out of policy resolution and pickers; rules that name it fall through to the next level. Its ledger stays. Reactivate brings it back.
Example
Acme AS has a 10-hour monthly support retainer with carry of at most 5 hours and no borrowing. Create a Recurring bank "Retainer", Hours per period 10, Carry up to a cap, Carry cap (minutes) 300, Overage Charge at the rate, and set Acme's Support policy to Bank: Retainer. In August Acme uses 7 hours: the run credits 10, consumes 7, closing 3. In September the run carries 3 in, credits 10 (balance 13), and Acme uses 14: 13 from the bank and 1 hour charged as overage.
Common problems
"Set the carry cap." or "Set the borrow cap." You chose a cap option with a cap of zero.
"The policy names a bank that does not belong to this client or project" at a run. The rule points to another client's bank or a bank scoped to other projects.
The bank was not drawn although the policy names it. The bank is archived, its dates do not cover the work date, or the entry is on a When the ticket closes ticket that is still open. The pre-close checklist lists the last case under Open deliverables using time banks.
The balance did not change after logging time. Balances move at billing runs, not when time is logged.