---
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
