<!-- last-reviewed: 2026-06-01 · owner: Finance (Finance Director) -->
SOP-026 — Spend approval
SOP · owner: Finance (Finance Director). Layer: SOP/Runbook (
docs/canon.md). Field meanings live indocs/financial-system.md— not restated here. Track-first note (2026-06-01):finance/budgets.csv,finance/approvals.csv, and the money ledger now exist with frozen headers (finance/). No hard budget caps are set yet (track-first, by Principal decision); the spend-materiality threshold is the active control — see Materiality threshold below. This procedure is executable today.
Interface Contract
- Inputs: spend request ← from <requesting agent/unit> · trigger:
spend requested - Inputs: material-spend decision ← from Principal · trigger:
spend approved - Outputs: approval decision → to <requesting agent/unit> · trigger:
spend approved - Outputs: material-spend escalation → to Principal · trigger:
spend requested - Outputs: approval log + money ledger → to Archivist · trigger:
artifact approved - Handoff trigger (in): a requesting agent/unit submits a spend request, or the Principal returns a decision on an escalated material spend
- Handoff trigger (out): the spend is approved (or escalated) and recorded in
finance/approvals.csv - Definition of Done before handoff:
- [ ] Budget scope checked in
finance/budgets.csv(or missing-budget flagged) - [ ] Decision + rationale recorded in
finance/approvals.csv(append-only) - [ ] Money ledger updated once the spend is confirmed (not merely approved)
- [ ] Material spend (above the Principal-set threshold) escalated, not self-approved
- [ ] Learnings captured to
docs/knowledge/if the request surfaced one - [ ] Files handed to the Archivist (0 drift)
- [ ] Budget scope checked in
Proposed new triggers (
spend requested) — reported to Operations, not added inline;spend approvedalready exists indocs/handoff-triggers.md. Untilspend requestedis registered this edge is a stub.
Materiality threshold (Principal-approved 2026-06-01)
Finance auto-approves below the threshold and escalates to the Principal at
or above it. Canonical statement: docs/financial-system.md; recorded as the
materiality-threshold policy row in finance/budgets.csv.
| Spend kind | Auto-approve (Finance Director) | Escalate to Principal |
|---|---|---|
| One-time | under $50 (USD) | at or above $50 |
| Recurring | under $20/month (USD) | at or above $20/month |
Non-USD / credit spend (Vercel deploy credits, token spend) converts to USD via
the cross-rate (finance/rates.csv) before the threshold is applied. A spend
that is below the threshold but still looks wrong is escalated anyway (GR-3 — never
silently approve a spend that looks wrong).
Purpose
Approve or escalate a request to spend money so the Principal’s money is only committed within budget tolerance and with a stated view on whether the spend is worth it — never silently and never self-approved at or above the materiality threshold.
When to use
Whenever any agent/unit wants to spend money — a subscription, a tool fee, a sponsorship, a payout — and asks Finance to approve it. Also when the Principal returns a decision on a previously escalated material spend.
Flow
flowchart LR
A["Receive request"] --> B{"Budget line<br/>exists?"}
B -->|no| F["Flag missing budget<br/>→ SOP-027"]
B -->|yes| C{"Headroom &<br/>justified?"}
C -->|yes, < threshold| D["Approve +<br/>record"]
C -->|over budget /<br/>≥ threshold / looks wrong| E["Escalate to Principal<br/>with a recommendation"]
D --> L["Update money ledger<br/>when confirmed"]
E -->|decision returns| D
classDef s fill:#1d4ed8,color:#fff,stroke:#1e3a8a
classDef d fill:#0f766e,color:#fff,stroke:#134e4a
class A,F,D,E,L s
class B,C d
Text fallback: receive the request → does a budget cap exist for the scope? (track-first phase: usually no cap on file — note it and proceed on the materiality threshold rather than blocking) → is it justified, and is it below the materiality threshold? (yes and below → approve and record; at-or-above threshold, over an existing cap, or looks wrong → escalate to the Principal with a recommendation) → when the spend is confirmed, update the money ledger.
Steps
- Receive the request — identify what is bought, estimated cost, requestor, the venture/phase it serves, and whether a budget line covers it.
- Check the budget — look up the scope in
finance/budgets.csv. In the track-first phase no hard caps are set (deliberate, by Principal decision), so most scopes have no cap line — note “no cap on file — track-first” and rely on the materiality threshold; do not block a sub-threshold spend for want of a cap. If a cap does exist for the scope, check headroom against it. - Assess the spend — does the cost make sense for what is bought? Is there a cheaper alternative for the same need? State your view, not just the numbers.
- Approve or escalate — justified and below the materiality threshold (one-time <$50, recurring <$20/mo; non-USD converted via the cross-rate) → approve. At/above the threshold, over any existing cap, or wrong-looking → escalate to the Principal with a recommendation.
- Record the decision — append to
finance/approvals.csv(date, amount, scope, status, rationale). Once approved, the row is immutable. - Update the money ledger — when the spend is confirmed (not merely
approved), append to
finance/ledger-money.csvtagged unit/venture/phase/type. - Hand off the updated files to the Archivist; capture any learning.
Roles / approvers
Run by the Finance Director. Below the materiality threshold (one-time <$50, recurring <$20/mo), the Finance Director approves. At/above the threshold, over an existing cap, or where judgment is uncertain, the Principal approves. The Financial Analyst may prepare the budget-check data but does not approve spend.
Guardrails
- Never self-approve material spend — record every approval; escalate at/above the Principal-set threshold (one-time ≥$50, recurring ≥$20/mo; non-USD converted via the cross-rate first).
- Track-first, not phantom-budget paralysis — in the track-first phase the absence of a cap is expected and does not block a sub-threshold spend; note “no cap on file” and proceed on the threshold. (A cap that does exist must not be exceeded without escalation.)
- Approvals are immutable once recorded; corrections are new rows.
- Never touch the Principal’s personal financial information — PA-only.
- Do not restate
docs/financial-system.mdfield meanings — link to it.
Job aid: JA-026-spend-approval.md.
See also: SOP-027 (budget & cross-rate) · docs/units/finance/charter.md ·
docs/handoff-triggers.md.