0saas

Job ticket 775515 · smb · ledger counter · no subscription

The sixth client is an upgrade. The invoice was always arithmetic.

FreshBooks prints no free plan: a 30-day trial, then Lite at US$23 a month list — still capped at 5 billable clients, with teammates at US$11 a month each and advanced payments US$20 more. This job ticket hands the ledger work to prompts you own: paste a client's month of work lines and the counter rules a balanced invoice with every basis shown; paste the month's costs and the sorter files them with the tax-ambiguous lines marked ASK, never answered. Payments and portals stay FreshBooks's — the arithmetic was always yours.

FreshBooks is a trademark of its owner. This is an independent, unaffiliated comparison built on FreshBooks's own published pricing material, linked below and re-read every thirty days.

Paste the lines, press rule the sheet, and the invoice balances in front of you — grouped lines, visible multiplication, subtotal, expenses, double-ruled total. — rendered in this browser

Source: noneRendered: 0Uploaded to 0saas: nothing

Sample data is illustrative, not a claim about FreshBooks. Every FreshBooks figure on this page comes from the linked pricing page, read 2026-09-27.

The prompt pack

Two prompts, each mapped one-to-one onto a FreshBooks feature you are currently rationed on. Run them from this page with a free key, or copy them into any free chat model — the text is identical either way, and it is printed in full at the bottom of this section so it survives this site.

Loading the pack from tools.json… If this fails, the full prompt text is still readable below.

One-time unlocks only, never a subscription. If a price ever appears here it was read from Stripe in that request, not typed by hand. An unlock is client-side gating, not secure payment verification: it is stored in this browser and cannot prove payment to anyone else.

What FreshBooks's own pricing page says

Read from freshbooks.com/pricing on 2026-09-27. Fields we could not read are marked unconfirmed rather than filled in with a plausible number.

What FreshBooks prices — read from freshbooks.com/pricing on 2026-09-27 — vs this job ticket. — verified 2026-09-27
The jobFreshBooks (after 30-day trial)This pageThis page + a free-tier model
Billable clients5 on Lite (US$23/mo list)Unlimited pastes — client six costs nothingundefined
Invoice draftingInside the planA ruled sheet with visible basis per line, US$0undefined
Team access+US$11/mo per memberYour file, shared however you share filesundefined
Payments · client portalThe paid railsNot displaced — collect however you collectundefined

What this replaces, and what it does not

A displacement claim you cannot substantiate is a lie with good typography. This is the whole scope, including the parts where FreshBooks wins.

Balanced invoice drafts

Numbered lines, visible arithmetic, double-ruled totals

A filed expense month

Column posting with ASK flags on mixed-use lines

Documents you own

Printable sheets plus CSV downloads of the whole month

No payment processing

The sheet is paper; money moves on your existing rails

No recurring billing

Each invoice is ruled from a fresh paste

No tax filing or advice

Flags mark ambiguity for your accountant — answers stay theirs

The prompts, in full, as text

Copy these into any model. They are the product; the page around them is convenience. Each block is the exact system prompt the interactive runner sends, plus the user-message template.

Prompt 01 — 1. Rule the invoice sheet · freshbooks-invoice-ruled v1.0.0 · best ally: Groq Cloud — free tier · llama-3.3-70b-versatile

Replaces: The invoicing core: your pasted work lines (dates, hours, rates, expenses) posted into a balanced invoice draft — numbered lines, subtotal, the math in the margin.

Why this model: Invoice assembly is deterministic multiplication plus clean grouping; a free 70B at near-zero temperature produces sheets whose totals provably add, with every rate traced to the paste. Fallback ally: OpenRouter — :free model variants.

System prompt (1348 chars):

You rule the ledger counter: the reader pastes their work for one client — dated lines with hours or quantities, the agreed rate, and any pass-through expenses. You rule one invoice sheet: numbered lines grouped sensibly, each line's amount computed and shown, a subtotal, then the total under a double rule. Rates and numbers come only from the paste.

Return ONLY one JSON object. No markdown fences, no commentary, no preamble.

{
  "kicker": string (max 8 words),
  "title": string (the table's caption, max 8 words),
  "columns": [ { "label": "No." }, { "label": "Line" }, { "label": "Basis" }, { "label": "Amount" } ],
  "rows": [ [ value, value, value — one array per row, same order as the columns, every cell a short string ] ],
  "notes": [ string (one short footnote each) ]
}

Hard rules:
1. Every invoice line shows its basis (3.5h @ US$85 = US$297.50) — arithmetic always visible.
2. Lines group by pasted category or week; the grouping is stated in a header row per group.
3. The subtotal equals the sum of line amounts; the total equals subtotal plus posted expenses; both shown.
4. Expenses post at pasted cost, with markup only if the paste states one.
5. Currency and date order follow the paste; no conversions invented.
6. A NOTE row flags any work line that lacks a rate, which is priced at zero and annotated — never guessed.

User message template:

Rule an invoice for this client month. Client + invoice period: {{client}} My pasted work lines and expenses: {{lines}}

Variables:

  • {{client}} — Client + period (max 160 chars) sample data shipped with the tool
  • {{lines}} — Work lines + expenses (paste) (max 3000 chars) sample data shipped with the tool

Output schema (the answer must match this exactly):

{ "type": "object", "required": [ "rows" ], "properties": { "kicker": { "type": "string" }, "headline": { "type": "string" }, "subhead": { "type": "string" }, "rows": { "type": "array", "minItems": 1, "maxItems": 40 }, "stat": { "type": "object" }, "footnotes": { "type": "array" } } }

Decoding: temperature 0.15 · max 1800 output tokens · responseMimeType application/json · budget ~900 in / ~900 out · cost per run: 1 request against Groq's free daily quota; the relay floor needs no key at all.

Prompt 02 — 2. File the month's expense lines · freshbooks-expense-sorter v1.0.0 · best ally: OpenRouter — :free model variants · qwen/qwen3-32b

Replaces: The bookkeeping half: your pasted month of costs filed into ledger columns — with each line's tax-deductible question marked ASK or CLEAR, never answered for you.

Why this model: Expense filing is deterministic categorization with a conservative flag for ambiguity; a free 32B at low temperature files honestly and marks the gray lines instead of pretending certainty. Fallback ally: Groq Cloud — free tier.

System prompt (1377 chars):

You file the counter's expense lines: the reader pastes a month of costs (date, payee, amount, note). You file them into ledger columns (materials, travel, software, meals, fees, other), each line carrying its amount verbatim, and each line's tax question marked: CLEAR (obviously business) or ASK (mixed-use or ambiguous, with the reason named). You file and flag — you never give tax advice.

Return ONLY one JSON object. No markdown fences, no commentary, no preamble.

{
  "kicker": string (max 8 words),
  "title": string (the table's caption, max 8 words),
  "columns": [ { "label": "Date" }, { "label": "Payee" }, { "label": "Column" }, { "label": "Amount × Flag" } ],
  "rows": [ [ value, value, value — one array per row, same order as the columns, every cell a short string ] ],
  "notes": [ string (one short footnote each) ]
}

Hard rules:
1. Every pasted line files exactly once; a MISSING row lists anything unparseable with the raw text quoted.
2. Amounts carry verbatim; column totals sum the column's lines and print beneath.
3. ASK flags cite the mixed element (personal overnight on a work trip) in <= 10 words.
4. Meals always file with an entertainment-context note from the paste, or ASK when the note is silent.
5. The grand total equals the pasted total — arithmetic you can hold against the bank statement.
6. Write in the language of the pasted month.

User message template:

File my month of expenses. My business (one line, for context): {{business}} My pasted costs (date, payee, amount, note): {{expenses}}

Variables:

  • {{business}} — Your business (one line) (max 120 chars) sample data shipped with the tool
  • {{expenses}} — Expense lines (paste) (max 3000 chars) sample data shipped with the tool

Output schema (the answer must match this exactly):

{ "type": "object", "required": [ "rows" ], "properties": { "kicker": { "type": "string" }, "headline": { "type": "string" }, "subhead": { "type": "string" }, "rows": { "type": "array", "minItems": 1, "maxItems": 40 }, "stat": { "type": "object" }, "footnotes": { "type": "array" } } }

Decoding: temperature 0.15 · max 1600 output tokens · responseMimeType application/json · budget ~900 in / ~800 out · cost per run: 1 request against the free OpenRouter daily pool; the relay floor needs no key at all.

Questions worth asking before you cancel

Is an invoice from a paste legally an invoice?

The sheet carries what every invoice needs — parties, dated lines, rates, arithmetic, totals — and you own the file. What it lacks is jurisdictional boilerplate (tax IDs, VAT lines, sequential numbering schemes), which you add in your letterhead layer. The arithmetic, the hard part to get wrong, is done and shown.

Why does the ASK flag exist?

Because the worst expense software lies by omission: a mixed-use cost filed silently as CLEAR is a small fraud with good UX. This counter underlines the gray lines and names why — your accountant gets a sheet with the judgment calls visible, which is what they are for.

What did FreshBooks's promo actually say?

On 2026-09-27 the pricing page listed Lite at US$23/month ('Was $23.00') and sold it against a US$1.00/mo opening-months promo; both figures are in the artifact, recorded separately so nobody mistakes a time-boxed promo for the list price.

Where does my client data go?

Into one request to your free ally and nowhere else — no books hosted, no portal, no stored client list. Sheets download to your disk; the counter forgets the month when the tab closes.

Nothing is loaded from X or LinkedIn until you click, and no share is counted, logged or reported back to us — the buttons are plain links to each network's own share page.

Next on the ledger