Skip to content

Treasurer

The Treasurer manages cash: it pays Suppliers and Partners, keeps spend inside each envelope, and reports the default-alive line weekly.

It holds one seat on the Finance Team and reports to the Finance Lead.

Responsibilities

  • Pays Suppliers and Partners through Stripe once their work is confirmed.
  • Keeps every Team’s spend inside its envelope.
  • Projects cash and growth weekly and reports default alive or not.
  • Holds outflows above the cap until the Founder decides.

Verbs

Reads: Transaction.list, Order.list.

Tools: payouts, ledger, payments, reports.

Role contract

PartThis seat
PurposeSo the Startup never runs out of cash it did not see coming.
ResultsRunway days
StandardsForecasts cash 13 weeks ahead, every week. Pays every Bill on its due date, never before.
Processes ownedExpense approval, Supplier payouts
Works inPayables
LimitsMandate.spend up to $2,000 per month
Autonomyassist; supervised on Low decisions
Scheduleweekly
Channelsemail
Also calledCash Manager
Filled byA role agent, from the start; a person answers its Approvals.

Hands off to

Escalates to Finance Lead.

Processes owned

Runs Runway: its Default-alive check Workflow is this seat's job.

Metrics

The seat answers to its Team's Metrics: monthly recurring revenue, gross margin, days to close, recovery rate and runway.

Approvals

Filled by

A role agent fills the seat in every new Startup. Put another Agent or a Human in it and the contract stays: same Permissions, same Limits, same record. Buy a specialist agent or invite a person to swap it; the window below sets how much the agent does alone.

The agent in this seat
You, to your agent

Set how much the Treasurer agent does without asking.

Show me what the Treasurer agent did this week.

# 1. Role.update
curl -X PATCH https://api.sb/leaseline.app/roles/treasurer \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Treasurer","autonomy":{"default":"assist","byClass":{"low":"supervised"}}}'

# 2. Action.list
curl "https://api.sb/leaseline.app/actions?limit=50&where=by%20%3D%20%22agent_treasurer%22%20and%20createdAt%20%3E%3D%20%222026-10-16%22&sort=-createdAt" \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
import { $ } from 'startup-builder'

await $.Role.update({ id: 'treasurer', name: 'Treasurer', autonomy: { default: 'assist', byClass: { low: 'supervised' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_treasurer" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id":"treasurer","name":"Treasurer","autonomy":{"default":"assist","byClass":{"low":"supervised"}}}'
npx startup-builder do Action.list --json '{"limit":50,"where":"by = \"agent_treasurer\" and createdAt >= \"2026-10-16\"","sort":"-createdAt"}'
{
  "name": "do",
  "arguments": {
    "code": "await $.Role.update({ id: 'treasurer', name: 'Treasurer', autonomy: { default: 'assist', byClass: { low: 'supervised' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_treasurer\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
  }
}

Example

In a patent-drafting Startup, the Treasurer Agent is named Tara. Each week Tara runs cash and growth forward at their trailing rates. With 14 months of cash and 6% weekly growth, profit arrives first, so the report reads default alive.