Check your cash and runway from QuickBooks every Monday

Mondays: cash across your QuickBooks bank accounts, average monthly net burn over the last three months, and how many months of runway that leaves.

Runs
Mondays at 8:30
Posts
Stat tile

What lands on your board

AcmeRunway14.9months-1% vs previous period, worsevs last report
Cash in bank$1,284,300
Net burn per month$86,400
An example with made-up numbers. Your agent posts your real ones.

What it does

Runway is the one number a founder should know without looking, and it goes stale the week payroll grows. Working it out means adding up bank balances, deciding what counts as burn and dividing, usually in a spreadsheet nobody has touched since the last board meeting.

The agent does it from the books every Monday with the same rules each time: bank accounts only, the cash-basis loss of the last three full months, cash divided by burn. When burn starts creeping up, the card shows it weeks before the board deck does.

How it works

  1. 1Total the bank accounts

    Run SELECT Name, CurrentBalance FROM Account WHERE AccountType = 'Bank' AND Active = true through GET /v3/company/{realmId}/query and add up CurrentBalance. List credit card accounts (AccountType = 'Credit Card') separately instead of netting them.

  2. 2Pull three months of profit and loss

    Call GET /v3/company/{realmId}/reports/ProfitAndLoss with the last three full months as start_date and end_date, summarize_column_by=Month and accounting_method=Cash, and read the Net Income row for each month.

  3. 3

    3Compute burn and runway

    Net burn for a month is its net loss. Average the three months; runway is bank cash divided by that average, to one decimal. If the average is a profit, report the business as cash-flow positive instead of giving a runway.

  4. 4Check the books are current

    Query the newest Deposit and Purchase (ORDERBY TxnDate DESC MAXRESULTS 1). If nothing has been booked for more than 7 days, say the balance is probably stale and since when.

  5. 5

    5Write the report

    Months of runway and the change since last week, cash per bank account and in total, net burn for each of the three months, and the month the money runs out at this rate.

  6. Post it to the board

    With BRIEFKIN_TOKEN set, the agent sends the result as one card that updates in place every run. Without it, you get the report in the chat.

What you get

  • Months of runway and the change since last week.
  • Cash in each bank account and the total.
  • Net burn for each of the last three months and the average.
  • The month the cash runs out at the current burn, and a warning if the books are behind.

Install and run it

Pick your agent, where the data comes from and how to schedule it; the commands below follow.

Agent
Data
Schedule
  1. Install the skill

    One command. It puts the SKILL.md in ~/.claude/skills and in ~/.agents/skills, which Codex, Cursor, Gemini CLI, Copilot CLI and OpenCode read too.

    shellcurl -fsSL https://briefkin.dev/skills/quickbooks-cash-and-runway/install | sh
  2. Run it

    Ask Claude Code:

    promptRun the quickbooks-cash-and-runway skill

    Or paste the prompt instead of installing:

    promptUsing QuickBooks Online (read only): add up CurrentBalance of all active accounts with AccountType Bank, and list credit card balances separately. Pull the ProfitAndLoss report for the last three full months, cash basis, summarized by month, and take each month's net income; a loss is net burn. Average the three months and divide cash by that average for months of runway, to one decimal. Give me runway, cash per bank account and the total, burn per month, and the month the cash runs out. If the newest transactions in the books are more than a week old, warn me the balance may be stale. If the business is profitable, say so instead of giving a runway.
  3. Put it on a schedule

    Mondays at 8:30, from cron on any machine where Claude Code is signed in:

    crontab30 8 * * 1 claude -p "Run the quickbooks-cash-and-runway skill"

    Add it with crontab -e. A laptop asleep at that time runs it when it wakes if you use launchd or Task Scheduler instead; GitHub Actions works for the API route.

  4. Send it to your board

    Connect Briefkin once with curl -fsSL https://briefkin.dev/install | sh and every run lands on your board as a stat tile. How setup works

View the SKILL.mdRaw file
SKILL.md---
name: quickbooks-cash-and-runway
description: "Mondays: cash across your QuickBooks bank accounts, average monthly net burn over the last three months, and how many months of runway that leaves. Use when the user asks for this, or when it runs on a schedule."
---

# QuickBooks cash and runway

Mondays: cash across your QuickBooks bank accounts, average monthly net burn over the last three months, and how many months of runway that leaves.

Runway is the one number a founder should know without looking, and it goes stale the week payroll grows. Working it out means adding up bank balances, deciding what counts as burn and dividing, usually in a spreadsheet nobody has touched since the last board meeting.

The agent does it from the books every Monday with the same rules each time: bank accounts only, the cash-basis loss of the last three full months, cash divided by burn. When burn starts creeping up, the card shows it weeks before the board deck does.

## Two ways to get the data

Use the API or MCP route when you have an MCP server, a CLI or an API token for the app. Otherwise, if you can drive a browser the user is signed in to (Claude in Chrome, a Playwright or Chrome DevTools MCP server), use the browser route. Say which one you used.

## Route A: API or MCP server

### What you need

- A QuickBooks Online user or app with read access to accounting data: a QuickBooks connector or MCP server, or an OAuth 2.0 app with the `com.intuit.quickbooks.accounting` scope and the company's realm ID.
- Books kept reasonably current, since a bank balance in QuickBooks is only as fresh as the last bank feed match.

If something is missing, say what and stop; do not invent numbers.

### Steps

1. **Total the bank accounts** (QuickBooks): Run `SELECT Name, CurrentBalance FROM Account WHERE AccountType = 'Bank' AND Active = true` through `GET /v3/company/{realmId}/query` and add up `CurrentBalance`. List credit card accounts (`AccountType = 'Credit Card'`) separately instead of netting them.
2. **Pull three months of profit and loss** (QuickBooks): Call `GET /v3/company/{realmId}/reports/ProfitAndLoss` with the last three full months as `start_date` and `end_date`, `summarize_column_by=Month` and `accounting_method=Cash`, and read the Net Income row for each month.
3. **Compute burn and runway**: Net burn for a month is its net loss. Average the three months; runway is bank cash divided by that average, to one decimal. If the average is a profit, report the business as cash-flow positive instead of giving a runway.
4. **Check the books are current** (QuickBooks): Query the newest `Deposit` and `Purchase` (`ORDERBY TxnDate DESC MAXRESULTS 1`). If nothing has been booked for more than 7 days, say the balance is probably stale and since when.
5. **Write the report**: Months of runway and the change since last week, cash per bank account and in total, net burn for each of the three months, and the month the money runs out at this rate.

## Route B: the browser

### What you need

- Signed in to QuickBooks Online as a user who can see the chart of accounts, banking and reports (Standard user with all access, or Company admin), with the right company open.

If something is missing, say what and stop; do not invent numbers.

### Steps

Start at https://app.qbo.intuit.com/app/chartofaccounts. The user is signed in already; never type passwords or codes, and ask if a sign-in page appears.

1. **Total the bank accounts**: Open `https://app.qbo.intuit.com/app/chartofaccounts` (the gear menu > **Chart of accounts**); pick the company first if you have several. Filter or sort by **Type**, add up the **QuickBooks balance** column for the Bank accounts, not the **Bank balance** column, which is the feed's figure, and list the Credit Card accounts separately.
2. **Run the profit and loss by month**: Go to **Reports** > **Standard reports** and open **Profit and Loss**. Set **Report period** to a custom range from the 1st of the month three months ago to the last day of last month, **Display columns by** to **Months**, **Accounting method** to **Cash**, and run it. Read the **Net Income** row for each of the three months.
3. **Compute burn and runway**: A month's net loss is its net burn. Average the three months and divide total bank cash by the average, to one decimal. If the average is a profit, report the business as cash-flow positive instead of a runway.
4. **Check the books are current**: Open **Transactions** > **Bank transactions**. If the account tiles show a backlog in **For review**, or the newest entry on the **Categorized** tab is more than 7 days old, say the balance is probably stale and since when.
5. **Write the report**: Months of runway and the change since last week, cash per bank account and in total, net burn for each month and the average, and the month the money runs out at this rate.

Note: QuickBooks balance is the books; Bank balance is what the feed last saw. They differ by whatever is still in For review. Report controls in the newer report view carry slightly different names from the classic view; the options are the same.

## The report

- **Months of runway** and the change since last week.
- **Cash** in each bank account and the total.
- **Net burn** for each of the last three months and the average.
- The month the cash runs out at the current burn, and a warning if the books are behind.

## Post it to Briefkin

When `BRIEFKIN_TOKEN` is set, or `~/.config/briefkin/env` exists (the installer from https://briefkin.dev/docs writes it), also send the result to the user's Briefkin board as one card. Keep the `item_key` the same on every run so the card updates in place, use a new `event_id` per run, and put today's real numbers in place of the example ones. If the request fails, say so once and carry on.

```bash
[ -n "${BRIEFKIN_TOKEN:-}" ] || . ~/.config/briefkin/env
curl -sS -X POST "${BRIEFKIN_URL:-https://briefkin.dev}/v1/events" \
  -H "authorization: Bearer $BRIEFKIN_TOKEN" \
  -H "content-type: application/json" \
  -d @- <<'JSON'
{
  "v": 1,
  "event_id": "quickbooks-cash-and-runway/<date of this run, e.g. 2026-10-16>",
  "item_key": "quickbooks-cash-and-runway",
  "project": "Acme",
  "source": "QuickBooks cash and runway skill",
  "kind": "metric",
  "title": "14.9 months of runway at current burn",
  "metric": {
    "label": "Runway",
    "value": 14.9,
    "unit": "months",
    "better": "higher",
    "period_start": "<start of the period, ISO 8601>",
    "period_end": "<end of the period, ISO 8601>"
  },
  "glance": [
    {
      "type": "Grid",
      "props": {
        "columns": 2
      },
      "children": [
        {
          "type": "Stat",
          "props": {
            "label": "Cash in bank",
            "value": 1284300,
            "prefix": "$"
          }
        },
        {
          "type": "Stat",
          "props": {
            "label": "Net burn per month",
            "value": 86400,
            "prefix": "$",
            "better": "lower"
          }
        }
      ]
    }
  ],
  "widget": [
    {
      "type": "Table",
      "props": {
        "columns": [
          "Account",
          "Balance"
        ],
        "align": [
          "left",
          "right"
        ],
        "rows": [
          [
            "Operating checking",
            "$412,800"
          ],
          [
            "Treasury",
            "$850,000"
          ],
          [
            "Payroll",
            "$21,500"
          ],
          [
            "Total cash",
            "$1,284,300"
          ]
        ]
      }
    },
    {
      "type": "Table",
      "props": {
        "columns": [
          "Month",
          "Net burn"
        ],
        "align": [
          "left",
          "right"
        ],
        "rows": [
          [
            "July",
            "$81,200"
          ],
          [
            "August",
            "$88,900"
          ],
          [
            "September",
            "$89,100"
          ],
          [
            "Average",
            "$86,400"
          ]
        ]
      }
    },
    {
      "type": "Callout",
      "props": {
        "text": "Burn is up $7,900 a month since July. At $86,400 a month the cash lasts until about January 2028.",
        "tone": "info"
      }
    }
  ],
  "size": "md"
}
JSON
```

Widgets come from the Briefkin catalog (https://briefkin.dev/v1/catalog). Without a token, just give the user the report.

Set `period_start` and `period_end` to the window the number covers: the tile names it from them ("Last 7 days", "Today", "This month"). For a count right now (open items, a balance), send `"period_label": ""` so no period shows; for another name, send it as `period_label` (at most 24 characters).

## Run it on a schedule

Suggested: Mondays at 8:30 (`30 8 * * 1`). From cron, with the agent signed in on that machine:

```bash
30 8 * * 1 claude -p "Run the quickbooks-cash-and-runway skill"
# Codex: codex exec, Gemini CLI: gemini -p, Copilot CLI: copilot -p, OpenCode: opencode run
```

Or use the agent's own scheduler (Claude Code routines, Codex automations, Claude or ChatGPT scheduled tasks): https://briefkin.dev/skills/quickbooks-cash-and-runway#schedule

Source: https://briefkin.dev/skills/quickbooks-cash-and-runway

What your agent needs

  • A QuickBooks Online user or app with read access to accounting data: a QuickBooks connector or MCP server, or an OAuth 2.0 app with the com.intuit.quickbooks.accounting scope and the company's realm ID.

  • Books kept reasonably current, since a bank balance in QuickBooks is only as fresh as the last bank feed match.

Connecting QuickBooks

  1. QuickBooks connector in Claude. Intuit and Anthropic partnered in 2026 to bring QuickBooks into Claude; where your plan offers the connector, connect it with your Intuit sign-in.
  2. QuickBooks Online MCP server, Intuit's open-source local server (source). It runs over stdio and reads QUICKBOOKS_CLIENT_ID, QUICKBOOKS_CLIENT_SECRET, QUICKBOOKS_REFRESH_TOKEN, QUICKBOOKS_REALM_ID and QUICKBOOKS_ENVIRONMENT.
  3. Accounting API with OAuth 2.0. Register an app in the Intuit Developer Portal, authorize the company once with the com.intuit.quickbooks.accounting scope, and store the same five values. Access tokens last an hour and the refresh token can change on each refresh, so the skill must save the newest one.

The accounting scope has no read-only version; with Intuit's MCP server, set QUICKBOOKS_DISABLE_WRITE, QUICKBOOKS_DISABLE_UPDATE and QUICKBOOKS_DISABLE_DELETE to true so the agent gets only read, search and report tools.

Questions

Should credit card balances come off the cash?

The skill doesn't subtract them, because a card paid in full every month is already part of the burn. It lists them so you see them; if you carry a balance or draw on a line of credit, ask for net cash and it takes them off.

Why cash-basis profit and loss and not the cash flow statement?

For most startups, cash-basis net income is close to operating burn and easy to read month by month. It leaves out financing (a loan, a raise) and equipment purchases. If you have those, ask for the CashFlow report and the agent uses the net change in cash from operating and investing activities.

Do I need Briefkin to use the QuickBooks cash and runway skill?

No. The skill runs with your own agent and gives you the report in the chat. With a Briefkin token set, each run also posts it to your board as a stat tile, so you can glance at it instead of asking again.

Which agents can run it?

Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot CLI, OpenCode, Windsurf and Amp all read SKILL.md files. The install command puts it in ~/.claude/skills and ~/.agents/skills, where they look. ChatGPT, the Claude app and Grok take the prompt instead. Pick your agent under "Install and run it" and the commands change to match.

Can it work without an API or MCP server, from my browser?

Yes. Switch the data source to "Your browser" and the steps change to the QuickBooks pages themselves: the agent opens app.qbo.intuit.com/app/chartofaccounts in a browser you are signed in to and reads the numbers off the page. Claude Code, Codex, Cursor, Claude app and ChatGPT can drive a browser out of the box; Gemini CLI, Copilot CLI and OpenCode need a Playwright or Chrome DevTools MCP server first. It is slower than the API and needs you signed in, so it suits a report you run by hand or from a scheduler on your own computer.

Watch runway on your board, run after run

Skills are free to use with any agent. Briefkin is where their results land: one board for every report, number and question your agents send, with a ping when something needs you.

Free during the open beta. No card.