Billing Specialist
The Billing Specialist bills, charges, and collects: it bills on done, retries failed payments, and refunds within its Limit.
It holds one seat on the Finance Team and reports to the Finance Lead.
Responsibilities
- Bills each Invoice through Stripe when an Order is confirmed or a Subscription renews.
- Retries failed payments on the dunning schedule.
- Refunds within its Limit and leaves an Approval for anything above it.
- Sends every receipt and Invoice notice.
Verbs
Reads: Subscription.list.
Tools: billing, subscriptions, payments, messaging.
Role contract
| Part | This seat |
|---|---|
| Purpose | So every finished piece of work is billed and every bill is collected. |
| Results | Days sales outstanding |
| Standards | Sends every Invoice within one business day of the work being done. Answers every billing question within one business day. |
| Processes owned | Billing, Trials and plan changes |
| Limits | Order.refund up to $100 per call |
| Mandates | Retries unpaid Invoices on the dunning schedule without asking each time (Invoice.collect) |
| Autonomy | assist; supervised on Low decisions |
| Schedule | daily |
| Channels | email |
| Also called | Billing Manager, Collections Specialist |
| Filled by | A role agent, from the start; a person answers its Approvals. |
Hands off to
Escalates to Finance Lead.
Processes owned
Accountable for Billing.
Metrics
| Metric | Definition |
|---|---|
| Month-3 retention | Month-3 retention is the share of outside Customers who first paid in one month and still pay three months later. |
Approvals
- Asks first. An Action above the seat's Limit opens an Approval for the Finance Lead and waits.
- Waits a delay window.
Invoice.bill,Invoice.collectandOrder.refundare one-way, so each call waits before it runs.
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.
Set how much the Billing Specialist agent does without asking.
Show me what the Billing Specialist agent did this week.
# 1. Role.update
curl -X PATCH https: //api.sb/ leaseline.app/ roles/ billing-specialist \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"name": "Billing Specialist", "autonomy": {"default": "assist", "byClass": {"low": "supervised"}}}'
# 2. Action.list
curl "https: //api.sb/ leaseline.app/ actions? limit= 50& where= by%20%3D%20%22agent_billing_specialist%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: 'billing-specialist', name: 'Billing Specialist', autonomy: { default: 'assist', byClass: { low: 'supervised' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_billing_specialist" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id": "billing-specialist", "name": "Billing Specialist", "autonomy": {"default": "assist", "byClass": {"low": "supervised"}}}'
npx startup-builder do Action.list --json '{"limit": 50, "where": "by = \"agent_billing_specialist\" and createdAt >= \"2026-10-16\"", "sort": "-createdAt"}'
{
"name": "do",
"arguments": {
"code": "await $.Role.update({ id: 'billing-specialist', name: 'Billing Specialist', autonomy: { default: 'assist', byClass: { low: 'supervised' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_billing_specialist\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
}
}
Example
In a data Startup, the Billing Specialist Agent is named Bea. A Customer asks for $80 back against a $100 Limit, so Bea refunds it at once. A $400 request becomes an Approval for the Finance Lead.