User guide
Everything from first sign-in to running a monthly close. Questions we haven't answered here go to [email protected].
Numbersgame — User Manual
For: Bookkeepers, controllers, and CFOs using AI to work in their accounting system. Time to read: 15 minutes. Time to first AI-assisted close: under an hour.
1. What Numbersgame does
Numbersgame is a bridge between your accounting ledger and Claude (or ChatGPT). QuickBooks Online is fully supported. Xero is supported for reporting, searching, the common day-to-day writes and the bank feed, and is available on request — see 4.11 for exactly what works and what does not. After a five-minute setup you can ask Claude things like:
"Show me the P&L for Acme Coffee for May, then list the five largest expenses."
…and Claude actually answers — pulling live data from your books. With a bit more authorization, Claude can also write to them: create invoices, record bill payments, classify uncategorized transactions, draft journal entries for your review.
You stay in control. Claude shows you exactly what it's about to write to your books before it does. You confirm. You can revoke access at any time from your dashboard.
2. Get started in 5 minutes (speedrun)
If you already know the drill:
- Open https://app.numbersgame.xyz/signup → create an account → verify your email
- Pick a plan, enter a card, subscribe
- Connect a company → authorize → it appears in your list
- Open Claude Desktop → Add custom connector → paste
https://mcp.numbersgame.xyz/mcp→ authorize - Ask Claude: "What's the cash balance for [company name] today?"
Done. The rest of this manual fills in details, plus example workflows and a bookkeeper-flavored system prompt you can hand to Claude.
3. Setting up your account
3.1 Sign up
- Go to https://app.numbersgame.xyz/signup
- Enter your email + a password (10+ characters)
- Complete the Cloudflare bot check (usually invisible — just click Create account)
- Check your inbox for a verification email. Click the link.
Tip: Use your work email. Notifications about billing and account activity go there.
3.2 Create your firm
After verifying, you'll land on a "Create firm" screen.
- Firm name — what shows up in invites and Stripe receipts. Examples: Smith & Associates CPAs, Acme Bookkeeping.
- Slug — the short URL-friendly version. Used in data exports and audit logs. Auto-filled from the name; you can tweak it.
Click Create firm and you're in.
3.3 Add a passkey (recommended)
A passkey lets you sign in with Touch ID, Face ID, Windows Hello, or a hardware security key — no password, no codes, no phishing risk. Set one up once and your laptop or phone is your login.
- Open the account menu (the user icon, top right) → Security
- Click Add passkey
- Give it a label (e.g. Work MacBook)
- Your browser pops a system dialog → confirm with your fingerprint / Face ID / PIN
- The passkey shows up in your list
Repeat on each device you'll sign in from (phone, tablet, second laptop). You can have as many as you want.
Why this matters: Passkeys are bound to app.numbersgame.xyz cryptographically. A fake login page can't steal them — even if you click a phishing link, your authenticator simply won't release the credential.
Recovery: Keep your password set too. If you lose every passkey-bearing device, you can still sign in with the password and add new passkeys.
4. Connecting a company
4.1 Pick a plan
Plans price by the number of companies you connect. Open the account menu (the user icon, top right) → Billing to compare.
| Plan | Active companies | Price/month | New connections per week |
|---|---|---|---|
| Starter | 3 | $149 | 6 |
| Growth | 7 | $299 | 14 |
| Scale | 30 | $799 | 60 |
| Enterprise | by agreement | from $1,499 | by agreement |
A "connection" is one company you've authorized. The weekly limit prevents churning through a stack of clients on a tier you've outgrown.
Every plan starts with a 14-day trial. You add a card when you pick a plan, and nothing is charged until the trial ends — so you can connect a real client and do real work before you decide. Cancel inside the fourteen days and you are not billed.
Enterprise is an agreement, not a tier — for multi-partner firms or volume needs. It is contact-only: email [email protected]. Once you have signed, your agreement sets your numbers and the row above stops describing you:
- Your allotment is a starting point, not a wall. Connecting past it does not block you — it adjusts what you are invoiced, and we are told at the time so the invoice stays right. Most agreements carry no hard ceiling at all. Where one has been agreed, we email you before you reach it rather than after, and raising it is an approval rather than an upgrade.
- You are invoiced, not charged. There is no Checkout step and no card on file, so 4.2 Subscribe and the Stripe Customer Portal below do not apply to you. Your rate lives in your signed agreement and nowhere else: we deliberately hold no monetary amount in the product, so nothing here can quietly disagree with what you signed.
4.2 Subscribe
This section is for the self-service plans. If you are on an Enterprise agreement, skip it — you are invoiced, and your companies are enabled without a Checkout.
- Billing → Subscribe to the plan you want
- Stripe Checkout opens — enter card details
- You're back on the dashboard, plan badge updated
You can change plans later via Manage subscription (Stripe Customer Portal). An upgrade takes effect immediately and is prorated; a downgrade takes effect at the end of the period you have already paid for, and you have until that date to get under the lower cap — see 9.2. The one case where you are asked to disconnect first is subscribing again after cancelling, because there is no paid period left to defer into.
4.3 Connect your first company
Watch the 60-second walkthrough, then follow the steps below:
Here is the video on how to connect Numbers Game to your Xero company
- Open Companies in the nav
- Click Connect QuickBooks
- Intuit's authorization screen opens — sign in if you aren't already
- Pick which company to connect (if you administer several)
- Click Connect
- Open the Company that you just connected. Optionally edit "Client Profile", "Client-specific rules", connect to a dedicated Slack channel, select "Accounting basis"
- Download and save "Company_Name.md" from the top section.
- Create a Project named after the company — in Claude, or in ChatGPT
- In Claude: add the
.mdto the project's knowledge files. In ChatGPT: open the file, copy all of it, and paste it into the project's instructions — do not upload it as a file. ChatGPT applies project instructions to every chat in the project, while a file added to Sources is only consulted when ChatGPT judges it relevant; this file carries the company id that every single tool call has to pass. - In Claude you can delete your local copy afterwards — the project keeps it. In ChatGPT, keep it until the text is pasted in.
You'll bounce back to Numbersgame with your company in the list. Last refreshed = when the access token was renewed; this happens automatically every hour.
Heads-up: QuickBooks notifies the file's primary admin. When you connect a company, Intuit automatically emails the QuickBooks file's primary admin that "NumbersGameMCP" was connected. If you manage a client's books, that email may go to your client — give them a heads-up so it doesn't surprise them. It looks like this:

We've written two ready-to-send emails for exactly this — one to send before you connect, one to answer a client who asks after the notification arrives: Client communication templates.
Once the company is connected, the second step is connecting Claude to Numbers Game (covered in detail in section 6) — here's that walkthrough as a video:
Repeat for each company up to your plan's active cap.
4.4 Disconnecting a company
In Companies, open the company and click Disconnect. The connection is removed from Numbersgame and the access token at your accounting system is revoked. You can reconnect later — disconnecting frees an active slot, but counts against your weekly new-connection limit when you reconnect.
Disconnect vs. erase. Disconnect stops the connection but keeps the company's Numbersgame history (audit log, saved reports, vendor mappings). If you want that history gone too — a client leaves, or you're asked to delete their data — disconnect the company first, then use Delete permanently on the company's page. The card only appears once the company is disconnected, which is deliberate: it takes two decisions rather than one. Erase schedules a full removal of that company's stored data: it is archived for 30 days so it can be recovered if you erase the wrong one, then permanently deleted.
4.5 Sharing a company with another firm
Sometimes people outside your firm need to work with one client's books — the classic case: your client also works with a fractional CFO who has their own Numbersgame firm and their own set of companies. You don't add them to your team; you share the one company with their firm.
- In Companies, open the company and find the Shared access card (owners and admins only).
- Enter the email address of an owner or admin at the other firm and click Send share invite.
- They receive an email and must be signed in with that email address as an owner or admin of their firm to accept. The invite expires after 7 days.
- On accept, their entire team can use the company — under their own firm's roles, so their viewers stay read-only. It appears in their company list and Claude connection screen marked shared.
What sharing does and doesn't do:
- Their notes are theirs. The other firm gets its own client profile, vendor mappings, tasks, and saved reports for the company — completely separate from yours. Neither firm sees the other's.
- It uses one of their connection slots. A shared company counts against the receiving firm's plan, just like a company they connected themselves. If they're at their limit, they'll be asked to upgrade before accepting.
- You stay in control. The Shared access card lists every firm with access; Revoke cuts them off within about 30 seconds and removes their notes for this company. The other firm can also remove itself at any time.
- Disconnect ends it for everyone. If you disconnect or erase the company, shared access ends with it. Only your firm — the owner — can disconnect or erase.
4.6 Letting Claude email documents to customers
Claude can email an invoice, estimate, purchase order, sales receipt or credit memo straight to the customer it belongs to. QuickBooks sends the mail, using your client's own sending identity and template, so what arrives looks exactly like every other document that client has ever sent.
This is the only thing Claude does that reaches someone outside the books, and nothing can take it back. There is no recall, no draft state and no undo. For that reason it is off until three separate switches are on, and any one of them turns it off again:
- Numbersgame enables it for your firm. Email support and ask. This makes the setting visible — it does not start anything.
- You switch it on for your firm, in Firm settings → Document sending. Owners and admins only.
- You leave it on for the individual company. Every company is listed under the firm switch; switch off the ones that should never send.
Changes reach Claude within about a minute.
Turning it on for the firm is the decision worth thinking about, because from then on the approval you see in Claude is the last check before an email leaves. Read the recipient address character by character, confirm the document by its number, and send one document per approval. If you have set a send tool to Always allow in Claude, you will not even get the prompt — so don't, and change it back before switching sending on.
If Claude refuses, it will tell you which of the three switches is closed, so you know whether to change a setting yourself or ask us. And if a send is refused for one company while working for another, that's switch 3 doing its job.
Do not delete a document straight after sending it. QuickBooks accepts the send and marks the document as sent immediately, but the mail itself goes out a moment later — deleting the document in that window stops the email leaving. If you need to reverse something you have sent, void it rather than deleting it; the customer already has a copy, and the record should still exist.
Working through it step by step: see Send a document to a customer in the SOP library.
4.7 Connecting a bank (bank feeds)
A bank feed pulls transactions from a bank or credit card into Numbersgame so Claude can code them into your ledger. QuickBooks and Xero both work; what a booked line becomes in each is at the end of 4.8. It is an add-on and has to be switched on for your firm; you also agree to a short consent about what is sent to Plaid, our bank connection provider, before anything can be connected.
One connection is one bank login, not one account. A login that exposes a checking account, a savings account and a card is a single connection carrying three accounts.
Choose the company first. A bank is bound to the company you pick and cannot be moved afterwards — a feed with nowhere safe to post is how transactions end up in the wrong client's books. You are redirected to your bank to sign in; Numbersgame never sees your bank credentials.
Then map each bank account to the account that represents it. On the connection's page, every account the login exposes has to point at the account in that company's chart that stands for it. The list offers only bank and credit card accounts, and shows the account type beside each one, because a bank feed can only post into a register that represents a real balance at a financial institution. Expense accounts are what a transaction is coded to, which is a different question and is decided per transaction.
An unmapped account is never booked. Nothing is guessed. If a mapping is missing you will see it on the bank list as Mapping incomplete, and every transaction on that account is held until you fix it.
If the chart has no bank or credit card account for a feed to point at, the screen will say so — add one in your ledger, then reload the page.
A new connection starts by importing its history, and while it does the bank list shows Importing history. Nothing is coded or posted from that connection until the import finishes — usually within a few minutes of connecting. You do not have to wait to map the accounts; do that straight away.
Then seed the bank rules, before you code anything. This is the step new customers skip, and skipping it is the single most common reason a first run holds almost everything.
The feed's confidence in a transaction rests mostly on two things: a bank rule that matches the merchant, and how consistently that merchant has been coded before. A bank you connected this morning has neither — there is no booking history behind it yet. So without rules, the first run hands you back nearly the whole batch to read line by line.
Once the history has finished importing, ask Claude for the rules the client needs. A prompt that works:
The bank history has finished importing for <CLIENT>. Before we code anything, go through the transactions in the feed and find the merchants that recur — the subscriptions, the utilities, the regular suppliers, payroll, the card processors. For each one tell me the merchant, how often it appears, and the account it should be coded to. Take that account from how this client has already coded that vendor, and tell me which entries you read it from. Where there is no prior entry, say so and mark the account as your suggestion. Leave out one-offs, anything where the past coding disagrees with itself, and anything you are unsure about. Give me one line each so I can say yes or no, and save only the ones I confirm.
Budget about an hour per client, once. Every rule you seed now is a transaction that posts by itself instead of waiting for you every month — and rules are shared by every bank on that company, so you do this per client, not per bank.
There is more on what a rule holds, and on keeping them current, in 4.10 Bank rules.
4.8 How the bank feed decides what to post
Every transaction goes through the same two stages, in this order.
First, the safety checks. These are structural: they hold a transaction for review no matter which setting you have chosen, and no setting can override them. A transaction is held if:
- the bank account is not mapped to an account in the ledger
- no accounting basis (cash or accrual) has been stated for the company — tell Claude which one the client is on and it continues; unlike the two below, this does not need a setting
- it is in a currency other than the company's own
- a bank rule names a different account than the one proposed
- the ledger could not be read to check for an existing entry or an open bill
- it is a credit-card payoff whose other side has not been identified
- split lines do not add up to the bank amount
- it is still pending, or the bank withdrew it
- it is already recorded in the ledger — the transaction clears that entry rather than adding a second one
- it is a payroll debit (ADP, Paychex, Gusto, Rippling, JustWorks and the like). Payroll is posted by the provider as a journal entry splitting the run into gross wages, employer taxes, deductions and net cash; the bank line clears that journal. Post it from the payroll provider's own connection, then match this line against it.
Then, your setting. Each connection has one, and you change it on the connection's page. From most cautious to least:
| Setting | What posts without asking |
|---|---|
| Propose only | Nothing. Every transaction is coded and handed back for you to enter yourself. This is where a new connection starts. |
| Bank rules only | Only transactions that exactly match a bank rule you have already taught (4.10). A company with no rules posts nothing in this mode. |
| Post above the threshold | Transactions scoring at or above the connection's confidence threshold, which you set. Anything below is held, and can be approved individually after you have read it. |
| Post everything above safety | The confidence score stops deciding: anything without a structural objection posts. A low-confidence guess will land in the ledger. |
A company with several banks is governed by its strictest connection. If one bank is set to post above the threshold and another is on propose only, that company posts nothing. The bank list says so on the row when it applies. Set every connection on a company to the same level, or the cautious one wins.
Confidence is not the model's opinion of itself. It is calculated here from things that can be checked — whether a bank rule matched and agrees with the proposed account, how consistently that merchant has been coded before, how clean the merchant name is, and Plaid's own category confidence. The same transaction always produces the same number.
Setting the confidence bar. Post above the threshold uses a number on the connection's page, 0.90 by default. An owner or admin can change it between 0.75 and 1.00. The floor is deliberate: 0.75 is the most a transaction can score when the bank tells us nothing but a raw payment descriptor, so a bar below it would post those on the strength of the amount alone.
Lowering the bar is rarely the right answer to lines being held. A line held because nobody has taught a bank rule for that merchant is held for a good reason, and dropping the bar posts every other unknown merchant with it. Teach the rule, or approve those specific lines.
Approving what was held. A transaction held only because it did not clear the bar has nothing structurally wrong with it — it is a judgement we were not confident enough to make alone. Read what Claude proposes and, if it is right, tell it to book those lines: it records your approval against every entry, with your reason, so the ledger shows a person's decision rather than a machine's.
What approving actually clears. It is not only the confidence bar, and it is worth knowing exactly where the line falls.
- Most judgement holds can be approved in one go — a bank rule naming a different account, a credit-card payoff whose other side is unidentified, a first-time unknown payee, a fee gap, an unmatched open bill, several candidate bills, a prior reversal.
- Four holds need a reason typed per line and cannot ride an "approve all": it is already in the general ledger, it looks like a capital purchase, a transfer's other leg is missing, or strict bill matching found no open bill. These are the ones where approving in bulk would be how a duplicate gets posted, so the product makes you say why, line by line.
- Two holds are not approvals at all — an account that is not mapped, and a foreign currency. Those are settings, and approving does nothing until the setting exists.
- A connection set to Propose only still posts nothing, approval or not, because that setting means the feed does not write to your books at all. Change the setting if that is what you want; approval is not a way around it.
Your approval and your reason are recorded against every entry, so the ledger shows a person's decision rather than a machine's.
Anything posted can be reversed, and every run can be reported on, so you can see what was booked, what was held, and why.
What a booked line becomes. The decision above is the same in both ledgers; only the document differs.
| The feed decides | In QuickBooks | In Xero |
|---|---|---|
| Money out, coded to an expense | Expense (Purchase) | Spend money transaction |
| Money in, not against an invoice | Deposit | Receive money transaction |
| Between two accounts you own | Transfer | Bank transfer |
| Settles an open bill or invoice | Bill payment | Payment against that bill or invoice |
One difference worth knowing on Xero. Before posting, the feed checks whether the ledger already records the transaction. In QuickBooks that is one report listing everything that touched the account. Xero does not let us read an equivalent at the access level we hold, so the same answer is rebuilt from the transactions themselves and then checked against Xero's own bank summary for the period. If the two do not reconcile, the feed treats it as could not read rather than nothing there, and holds the line. That is deliberate: the failure it prevents is posting a second copy of something already in the books, which is silent and ends up in the P&L.
4.9 Disconnecting a bank
On the connection's page, Disconnect this bank. Owner or admin only, and you type DISCONNECT to confirm.
- The feed stops immediately. No further transactions are pulled or booked.
- Everything already booked stays in the ledger. Disconnecting reverses nothing and deletes no entry from your books.
- The stored bank credential is removed at Plaid, so it stops being billed.
- The transactions we had pulled but not yet booked are deleted.
- The connection stays visible in your bank list as Disconnected, so the history of what was connected and when is not lost.
Reconnecting later is a new connection, not an undo: a new billable month, the accounts to map again, and booking back at Propose only.
Deleting the connection is a second, separate step. Once a connection is disconnected the same page offers Delete this connection, which removes it from your bank list altogether along with its account mapping and any remaining unbooked transactions. Everything already posted stays in the ledger, and the record of what was posted is kept so it can still be reviewed or reversed. Deleting cannot be undone.
Delete is deliberately not available the moment you disconnect. Removing the stored credential at the provider sometimes takes a retry, and until it confirms we still need it — deleting early would leave a credential in place that nothing could ever remove. The page says so while it waits, and the button appears once it clears. Nothing is required from you in the meantime.
If a bank is only asking you to sign in again, use Re-authenticate instead. Disconnecting and reconnecting to fix an expired login costs a fresh month and loses your settings; re-authenticating keeps the same connection.
Deleting a whole company's bank data, rather than one connection, is part of erasing the company — see §9.
4.10 Bank rules
A bank rule is one line you teach us: this merchant is coded to this account. It is stored per company, so every bank on that company shares the same set, and it is what turns a bank feed from a list of payments into something that can be coded without asking you each time.
Where they come from. You do not fill in a form. Tell Claude how something should be coded — "Amazon Web Services goes to Software subscriptions" — and it records the rule. Coding a feed teaches rules as you confirm its proposals, so a company's rule set grows out of ordinary work rather than a setup session. You can see and edit the rules a company has on its company page — the card is called Vendor mappings.
Seed them when you connect the bank, before the first coding run. This is the one time it is worth doing in bulk, and it is the difference between a first run you read line by line and one that mostly posts itself.
Confidence comes from two things above all: a rule that matches, and how consistently that merchant has been coded before. A newly connected bank has neither — there is no booking history behind it yet — so an unseeded first run holds nearly everything and hands the whole batch back to you.
Once the history has finished importing, ask Claude to go through the merchants that recur — the subscriptions, the utilities, the regular suppliers, payroll, the card processors — and propose a rule for each. Ask it to take each account from how the client has already coded that vendor, and to say which entries it read that from. Where there is no precedent it should say so and mark the account as its own suggestion. That distinction matters: a rule saved this way codes that merchant every month without asking again, and later there is nothing to tell apart one read off three years of consistent coding from one inferred from a merchant name.
Leave out one-offs, anything where the past coding disagrees with itself, and anything it is unsure about. A rule you have to unpick later is worse than no rule.
A rule holds more than an account. It also records whether that vendor is ever billed. A vendor who is never billed can be posted straight to the expense; one who is billed has to settle an open bill instead, or the same cost lands in the books twice. That is why the system asks rather than assuming.
Why an empty company is a problem. In Bank rules only the connection posts only what matches a rule, so a company with none posts nothing at all, indefinitely — it is not a slow start, it is a stop. In the other settings it is not fatal, but a matching rule is the strongest single input to the confidence score, so a company with no rules holds far more for review than its owner expects.
The bank list flags the connection, and the connection's page says which of the two situations you are in.
Rules need looking at every so often. A rule is a standing instruction, and it keeps being applied long after the reason for it stopped being true — a client changes what they buy from a supplier, an account gets renamed or merged, a vendor who was never billed starts sending invoices. Nothing in the feed notices, because the rule keeps matching and keeps looking right.
So each company's rules carry a review date, and we ask for them to be looked at every five weeks. On the company's page the rules panel says when they were last reviewed, and an owner or admin confirms the whole set with Confirm these are still correct — one press for the client, not one per rule. Editing a rule counts as reviewing it, so fixing something does not then ask you to confirm the fix.
Past five weeks the panel turns amber, the bank list marks the connection, and Claude is told the age when it reads the rules. None of that changes what posts — an old rule is still the firm's stated coding for that client and is still applied. It is a prompt to look, not a brake.
A rule never overrides a safety check. If a rule names one account and the proposal is a different one, that disagreement holds the transaction rather than picking a winner — see 4.8.
4.11 Connecting Xero
Numbersgame works with Xero as well as QuickBooks. It is on request: the Connect a Xero organisation button only appears once we have switched it on for your firm, so email support if you want it. Everything below describes what happens once it is on.
A Xero organisation counts against your plan exactly like a QuickBooks company — same connection limit, same price, no Xero surcharge.
Before you connect: the permission we have to ask for
Xero's developer terms require us to ask, in as many words, before any Xero data reaches a third party. Claude is that third party — it is the whole product — so you will see a short consent step the first time, naming api.anthropic.com as where the data goes. An owner or admin has to accept it; it is not something staff can accept on your behalf.
You can withdraw it later from the same card on the Companies page. Withdrawing stops Xero working immediately — within about thirty seconds Claude starts refusing anything about your Xero organisations, without you reconnecting anything and without an open conversation needing to be restarted. Your QuickBooks companies are unaffected. Accepting again turns it back on.
Connecting
- On Companies, accept the Xero terms if you have not already.
- Click Connect a Xero organisation. Xero asks you to sign in and pick which organisations to allow.
- You can tick more than one. Unlike QuickBooks, one Xero authorization can connect several organisations at once — each becomes its own company here, and each uses a connection slot.
- You come back to the Companies list with them connected.
If you tick more organisations than your plan has slots left, none of them are connected — we hand the whole grant back to Xero and ask you to upgrade or free a slot. Keeping the ones that fit would mean choosing on your behalf which client to leave out.
There is a second limit behind your plan's: Xero sells connection slots to us, app-wide, and that pool is finite. If a connection is refused for that reason the message will say so — it is not something you can fix by changing your plan, so tell us and we will raise it.
What is exactly the same
Once connected, a Xero company behaves like any other: it appears in the same list, has the same detail page and dashboard, uses the same roles (viewers stay read-only), the same client profile and rules, the same saved reports, the same audit log, the same sharing with another firm, and the same erasure and disconnect controls.
What Claude can do with a Xero company
Reports. Balance sheet, profit and loss, trial balance, aged receivables and aged payables.
One thing to know about the two aged reports: Xero has no whole-book aging report of its own, so Claude builds them from the invoices and bills themselves. That means they cannot see anything posted straight to the receivables or payables account without a document behind it — payroll tax liabilities are the usual example. So every Xero aging is checked against the matching account on Xero's own balance sheet and tells you when the two do not agree, and by how much. If you are reconciling at a close, read that line before you use the total.
Looking things up. Search customers, suppliers, invoices, bills, accounts and items, and open a customer, supplier, invoice or item in full.
Writing. Create and update customers and suppliers, create and update invoices, create bills, create and update items and accounts, void an invoice, and delete a bill or an item. Deleting a bill in Xero voids it — the bill and its number stay in the books.
That is genuinely narrower than QuickBooks, where Claude has around 150 tools. The table below is the honest version.
Where Xero differs from QuickBooks
| QuickBooks | Xero | |
|---|---|---|
| Bank feeds | Supported | Supported since 2026-08-29. A bank line books into Xero as a spend or receive transaction, a transfer, or a payment against an invoice or bill. The already-in-the-ledger check works differently: Xero does not let us read a general ledger at our tier, so it is rebuilt from the transactions themselves and checked against Xero's own bank summary. A window that does not reconcile is treated as a FAILED read rather than an empty one, so the line is held for you instead of being posted twice |
| General ledger report | Supported | Not available. Xero gates the raw journals endpoint behind a higher developer tier than we hold |
| Cash flow statement | Supported | Not available |
| Sending documents by email | Claude can email invoices and other documents through QuickBooks | Not available — nothing is emailed from a Xero company |
| Bill payments, purchase orders, estimates, credit memos, journal entries, deposits, transfers | Supported | Not available. Ask Claude for one of these on a Xero company and it will tell you plainly rather than guess |
| Attachments | Supported | Supported, and at full parity since 2026-09-03: listing what is attached, attaching a document Claude writes, and attaching a file you already have. Verified on a live Xero invoice |
| Invoice due date | Optional — QuickBooks works it out from the customer's payment terms | Required. Xero has no payment terms to fall back on, so Claude will ask you for one rather than assume "due on receipt", which would put every invoice straight into the 1–30 overdue bucket |
| Items and accounts | A code is optional | A code is required. Xero uses it as the identity on every invoice line, so Claude asks rather than inventing one |
| Customers and suppliers | Two separate records | One record. Xero decides whether a contact is a customer or a supplier from the documents posted against it. If you give Claude a display name and a company name that differ, it will ask which one to keep rather than quietly dropping one |
| Classes and departments | Supported on transactions and lines | Not available. Xero tracks by category name rather than by id, and guessing would file things under the wrong one — so Claude refuses instead |
| Sales tax on a line | Set through QuickBooks' tax detail | Xero uses the account's default tax rate unless you name a tax code. Amounts you give Claude are always treated as excluding tax |
| Editing invoice lines | Change one line, the rest stay | Sending lines replaces all of them, and Xero gives the new lines new ids — which breaks any payment already allocated against the old ones. Claude will send the full set; changing only a date or reference leaves lines alone |
| Voiding an invoice | The document stays at zero | A draft or submitted invoice moves to Deleted, an approved one to Voided. Both keep their number and stay findable in Xero, so the audit trail survives either way |
| Undoing a mistake | QuickBooks rejects a second edit if someone else changed the record first | Xero has no equivalent check. If two people edit the same record at once, the last write wins |
| Multiple currencies | Aged reports convert to your home currency | Converted too, using Xero's own exchange rate. If Xero has no rate for an unpaid foreign invoice, Claude tells you rather than adding currencies together |
| Aged receivables and payables | Comes from QuickBooks' own report | Built from your invoices and bills, because Xero has no whole-book version. It is checked against your balance sheet and says so when the two do not agree — see above |
| Parent and sub-accounts | Supported | Xero's chart of accounts is flat. Asking for accounts under a parent gets a plain refusal rather than a wrong list |
| Searching for several values at once | "any of these" lists and partial-word wildcards | Xero's search has neither. Claude searches one value at a time, or matches "contains" where you meant a wildcard |
| Removing an item | Made inactive; the record stays | Deleted. A Xero item has no active or inactive state, which is also why you cannot search for inactive ones |
Disconnecting a Xero organisation
Same button as a QuickBooks company, on the company page. Disconnecting also hands the organisation back to Xero, so it stops appearing in your Xero connected-apps list and the slot is returned. Erasing a company does the same and removes the stored authorization entirely.
5. Inviting your team
If multiple bookkeepers share the workload, invite them so they can sign in with their own accounts.
- Team → Invite a teammate, then Send invite
- Email address + role:
- Owner — full access, can change billing, can invite others
- Admin — can connect/disconnect companies and invite, can't change billing
- Member — can use Claude with the firm's companies but can't change firm settings
- Viewer — read-only: can use Claude to read the books and generate reports, but can't create or modify anything in the books. Viewers also cannot see bank connections or bank-feed transactions — bank data is treated as more sensitive than the ledger and is limited to Owners, Admins and Members. A viewer does not get a refusal, they simply have no Banks section at all.
- They receive an email. They click the link, set their password (or sign in if they already have a Numbersgame account), and they're in.
Who can see what the team did. The Audit log — every tool call, one line each — is open to every role, including Viewers. Usage, which totals the same history across your team, is Owner and Admin only. Both live in the account menu; see §9.5.
Note: Seats are uncapped — invite as many teammates as you need. Plans price on connected companies, not seats.
5.0 Which AI clients your team has connected
Team → Connected clients (Owner and Admin) lists every AI client that currently holds a live connection to your firm, grouped by person: which client, when they authorised it, and when it was last used. It is the screen for "who actually has access to our books through Claude", and the one to check when somebody leaves.
Two honest limits, so you are not misled by it:
- It names the product, not the app. The connection identifies itself as Claude, ChatGPT, or whatever else was used — but Claude on the desktop and Claude in a browser identify the same way, so we cannot tell you which of the two it was.
- Last used is a tool call, not a sign-in. Somebody can have Claude connected and simply not have asked it for anything.
This screen shows you what is connected; it is not where you end it. Each person revokes their own connections under Security → Connected applications — see §6.4, which also explains why revoking is per person and per firm.
5.1 Restricting a company to certain people
By default everyone in your firm can work on every company you have connected. When one client should be visible to two people and not the other six — a sensitive engagement, a family member's books, a client who asked — open the company and use Restrict access.
Tick Restrict this company to selected users, choose who, and save. From then on the company is invisible to everyone else: it disappears from their company list, Claude refuses it for them, and it drops out of any parent-company group they can see. Owners and admins set this; it applies to owners and admins too, so it is a real boundary rather than a suggestion.
6. Connecting Claude
On a Claude Teams or Enterprise plan, read §6.5 first. If your own Claude admin deploys the connector for the whole organisation, most of this chapter is not your people's job to do.
6.0 Set the tool permissions — do this on every client
This is the step people skip, and skipping it makes Numbersgame feel broken in two different ways: Claude stops and asks before every single call, or it flatly tells you it "can't" do something it can.
Every Numbersgame action starts on Needs approval. In Claude, open Customize → Connectors, click Numbers Game, and you'll see Tool permissions — each category can be set to Always allow, Needs approval, or Blocked.
Set the read-only categories to Always allow. Reading is where the volume is: a single "how did we do last quarter?" can be a dozen report and list calls, and approving each one by hand is what makes people give up on the connector. Nothing in a read-only tool changes your books.
Leave the write categories on Needs approval. Anything that creates or updates — accounts, classes, departments, customers, vendors, items, journal entries, purchases — should stop and show you what it's about to do. The approval prompt is the last check before a change lands in QuickBooks or Xero, and you only see it a handful of times per session, so it costs you very little.
Never set a send tool to Always allow. If your firm has document sending switched on (§4.6), that approval prompt is the last thing standing between a draft and a real email to your client's customer. See §4.6 before you touch those.
You do this once per person, per client. It does not carry across from a colleague, and it does not carry from Claude Desktop to the web.
6.1 Claude Desktop (Mac, Windows)
- Open Claude → Settings → Connectors → Add custom connector
- Paste:
https://mcp.numbersgame.xyz/mcp - Click Add
- A Numbersgame consent screen opens in your browser
- Pick which companies to grant Claude access to — you can grant some and exclude others
- Click Authorize
The connector flips green and you'll see Numbersgame in the tools menu of new conversations.
First-time only: The browser tab will say "Authorize <Claude Desktop>". This is normal. Numbersgame doesn't pre-trust any client — every Claude install, every browser, every device gets its own consent.
6.2 Claude Code (CLI)
claude mcp add --transport http numbersgame https://mcp.numbersgame.xyz/mcp
On first use of a Numbersgame tool, Claude Code will open your browser to authorize. Same multi-select consent screen as Desktop.
6.3 ChatGPT (Plus / Pro / Business / Enterprise / Edu — in a browser)
Creating a custom MCP connector in ChatGPT needs developer mode, and it is a web-only flow: the phone app cannot do it.
- Settings → Security and login → Developer mode. On a Business, Enterprise or Edu workspace an admin turns this on first, in the workspace permission settings — it cannot be enabled for one member on their own.
- Go to Plugins and click + to create a developer-mode app for our MCP server
- Name it Numbers Game, describe it, and give it the URL
https://mcp.numbersgame.xyz/mcp - Choose OAuth when it asks how to authenticate
- Complete the same Numbersgame consent screen, picking which companies to share
In a chat, choose Developer mode from the + menu and select Numbers Game.
The ChatGPT desktop app and Codex are a different route. They read a local
MCP config, not the web connector: Settings → MCP servers → Add server, choose
Streamable HTTP, paste the same URL, save, select Restart, then
Authenticate. The desktop app, the Codex CLI and the IDE extension share one
config file, so doing it in one does it for all three. From a terminal:
codex mcp add numbersgame --url https://mcp.numbersgame.xyz/mcp, then
codex mcp login numbersgame.
6.4 Revoking Claude's access
Open Security → Connected applications in Numbersgame. Every MCP client you've authorized for the current firm is listed with its scope, the companies it can reach, when it was first connected, and when it last refreshed a token. Click Revoke next to a row to invalidate its tokens.
Revocation propagates to the MCP service within 30 seconds (the bearer-token cache TTL). The next tool call from that Claude install fails with 401 invalid_token and the user is prompted to re-authorize.
Revoking only invalidates this user's tokens for this firm. The OAuth client registration (Claude Desktop's
client_id) is preserved, so re-authorizing is one click in the client. Removing the client globally is a support operation.
6.5 If your organisation sets Claude up for everyone
On a Claude Teams or Enterprise plan, your own Claude administrator can add the Numbers Game connector once for the whole organisation and publish the Wizard skill to the workspace library. Your people then open Claude already connected, and 6.1 to 6.3 above are not their job — following those steps would add a second, personal connector alongside the organisation's one, which is worse than doing nothing.
If that describes you, an owner or admin can tell us so. Open Firm Settings and find Claude is set up centrally, then press Hide the setup pages.
What disappears, for everyone in the firm: the Connector and Setup pages and their two menu entries, the banner that appears when the Wizard skill is updated, and the Add Numbers Game to Claude and Configure Claude steps on the dashboard.
What does not change: nobody is disconnected, no tool stops working, and nothing about the connector itself is altered — this only changes what the dashboard shows. Project files stays exactly where it is, because each company's project file is still downloaded and uploaded by a person here (§7.1), whatever your Claude admin deployed. You can switch it back on at any time and the pages return.
Where the Wizard skill then comes from. Those two pages are the only place we hand out the skill and the connector URL, so once they are hidden your people get both from your Claude workspace library — they ask your admin rather than installing their own copy. That is the outcome to aim for, not a gap to work around: a copy somebody installs themselves stays on their account, never picks up our updates, and nobody remembers to remove it when it goes stale. If your admin has not published the skill yet, a member asking them for it is exactly the conversation you want.
One thing a central rollout may not cover is the tool-permission step in §6.0. If your people are still asked to approve every single call, that setting is theirs to change in their own Claude — check with your Claude admin whether it can be set for the organisation instead.
7. Working with your AI bookkeeper
Out of the box, Claude knows it has a Numbersgame connector with accounting tools. To turn it into a bookkeeper — careful, conservative, polite, formats reports well — install the Numbers Game Wizard (our finance wizard skill) and add per-company context. Both are available on the Setup page in the dashboard (/app/setup).
1. Install the Numbers Game Wizard (once per account). On /app/setup, click Download Finance Wizard — you get numbers-game-wizard.zip. In Claude Desktop open Settings → Customize → Skills; on claude.ai the same screen is Customize → Skills. Click +, then Create skill → Upload a skill, and give it the zip as it is — do not unzip it first. (Skills run on code execution: if you have no Skills section, enable Settings → Capabilities → Code execution and file creation first.) Claude will now work as the Wizard whenever you ask it to do accounting work — trigger it naturally ("close the month", "run the weekly review", "categorize transactions") or by name: "NGWizard".
Throughout our docs, "the Wizard" means Claude running with this skill installed. The Standard Operating Procedures in the Help section are the Wizard's playbook — one page per job, each with a copyable prompt and the deliverables to expect.
Why it is a zip. It contains numbers-game-wizard/SKILL.md plus a
reference/ folder holding the parts only some jobs need: everything
Xero-specific, the vendor-mapping procedure and the bank-CSV import procedure.
Claude opens those files only when the work calls for them, so ordinary
conversations carry about 4,400 fewer tokens of instructions and leave more room
for your books. Every install route takes this file — Claude, ChatGPT and Codex
alike.
If you would rather have one file, /app/setup still links NGWIZARD.md
underneath the steps. It contains all of the same material inline, so nothing is
missing; it is simply longer to carry. Use it if an upload screen refuses the
zip.
ChatGPT and Codex take the same file. In ChatGPT: Skills → Create → Upload
from your computer, then call it in a chat with @numbers-game-wizard. In
Codex: unzip it into ~/.agents/skills/ and call it with
$numbers-game-wizard. If your account does not have Skills yet, paste the
.md contents into a project's or a custom GPT's instructions instead.
On Claude Team and Enterprise, one person can do it for everybody. An owner uploads the same zip — reference folder and all — under Organization settings → Skills → Organization skills → + Add, and adds the connector under Organization settings → Connectors → Add → Custom → Web. Colleagues then find the skill already switched on and only have to click Connect on the connector. That is the version of this page worth following if your firm is on a team plan: nobody is left running a stale copy on their own laptop.
Updating a folder install. The same rule applies — nothing updates itself. In ChatGPT, upload the new zip and delete the older copy so two versions are not on offer at once. In Codex, unzip over the same folder. On Claude Team and Enterprise, the owner removes the old entry from Organization skills and adds the new zip, and everyone has it.
Your firm can add its own procedures as files. On Custom Skill in the Set up menu, upload a Markdown file — your month-end close, your review checklist. It travels inside the skill your team downloads, and Claude opens it only when that work comes up, so it costs nothing in an ordinary conversation. That is why a file can be 32,768 characters when the section above it is capped at 15,000: the section is in front of Claude every time, a procedure is not.
Up to eight files, 98,304 characters across all of them. Upload only plain text
or Markdown — a PDF or a Word document renamed to .md is refused, because a
skill file is instructions Claude follows and half-readable bytes are worse than
none. Files publish with your section and the same acknowledgement, and they roll
back together, so a rollback never leaves old instructions beside new
procedures.
Keeping it current. An installed skill does not update itself. When we publish a new version — or when someone at your firm changes your own section, below — a bar appears at the top of the dashboard saying so, with an Update button that takes you to Setup. Download the file again and use Replace on the existing skill rather than uploading a second copy: two copies both stay active, and Claude follows whichever it picks. Dismissing the bar hides it until the next change. Each person installs the skill into their own Claude account, so each person gets their own bar and has to do this themselves.
Your firm's own instructions (optional, and only if we have enabled it). Owners and admins get a Your part of the Wizard skill section in Firm settings. Two things go there:
- A trigger phrase of up to two words — your firm's name, usually — that opens the Wizard in Claude alongside the standard phrases.
- Your instructions, written as markdown: how your firm names things, what you check before closing, who deliverables are addressed to. Anything you would tell a new bookkeeper on their first week.
Saving stores a draft that nobody else can download. Download skill always gives you the live file — the standard skill with your published section in it, never the draft. Most firms upload it once in Claude's Organization settings → Skills, which gives it to everyone in the organisation at once; installing it in your own Claude with Replace works the same way for one person.
Publish is what changes the file your team gets, and it asks you to confirm three things first, which are worth reading rather than clicking past: your instructions take precedence over the standard skill, including its safety rules. If you write "post corrections without asking me", Claude will do exactly that, and the step where it would otherwise have checked with a person is gone. The screen flags phrases that read that way and asks you to confirm you meant them — it will not stop you, because overriding is the point of the feature, but nothing should be switched off by accident.
Every published version is kept, so you can put an earlier one back. As with any change, your team has to download the skill again before it reaches their Claude.
2. Add per-company context (once per company). The same page lists a setup file for each connected company. Download the company's .md file and add it to a Claude Project named after the company — Projects → New project → upload as knowledge file. The file pins the realm ID and any client-specific rules you've entered, so every conversation in that project is scoped to the right books.
Together these teach Claude to:
- Always read before writing
- Show you a summary of every write operation before posting it to your books
- Use standard accounting categorization conventions
- Format reports as readable tables, not raw JSON dumps
- Flag anything that looks unusual or out-of-period
7.0 Attaching a document to a record
Two kinds of document, both onto QuickBooks or Xero, and both worth asking for in the same breath as the work.
A document Claude writes. "Post the journal and attach a note explaining the split." Claude composes a PDF — or a spreadsheet, for anything tabular — and attaches it. Nothing to set up.
A document you already have. Attach the supplier's PDF (or scan, or receipt photo) to the message and ask for it on the record: "attach this invoice to bill 4021". Claude uploads the file to the connector and puts it on the ledger. Two things to know:
- It needs code execution turned on in your Claude settings, because that is where your attached file physically sits. Settings → Capabilities → Code execution. If it is off, Claude will say it cannot make the upload — attach the file in QuickBooks or Xero directly instead.
- And that sandbox has to be allowed to reach us. Code execution can be switched on while the sandbox is still walled off from the internet, which is the default on many accounts. In Settings → Capabilities, scroll down, turn Allow Network Egress on, then type
mcp.numbersgame.xyzunder Additional Allowed Domains and click Add. Until you do, Claude says it cannot make outbound network requests and your file never leaves your machine — Troubleshooting has the why, the fix, and how to tell it apart from a refusal. - Claude may decline, and that is deliberate on its side, not a fault in the connector: sending a file to a server is exactly the shape of a request it is trained to be careful about. If it refuses, ask it to use the connector's own
request_attachment_uploadtool by name. It has always gone through for us on the second ask.
Watch the filename, and the two ledgers differ. On Xero a document addresses its attachments by name, so uploading a name it already has replaces that file and the original is gone — Claude refuses a collision and asks you which you meant, rather than finding out the hard way. On QuickBooks the same name simply produces a second attachment, so you end up with two rather than losing one. Both measured on 2026-09-03, not assumed. If several documents genuinely belong on one record, give them names that differ (scan.pdf and IMG_0001.jpg are the ones that bite).
What Claude should never do is re-type your document and attach that as though it were the original. It can read a PDF you paste in and write a fresh one carrying what it read — useful as a summary, never as the document of record. A misread figure in an official-looking file on the ledger is worse than no attachment at all.
7.1 Keeping company files current
The .md file you put in a Claude Project is a snapshot. When you edit a
company's Client Profile or client-specific rules in the portal, the copy sitting
in that project does not change. Claude keeps reading the old one, and nothing
about the conversation looks wrong — which is exactly why this needs a page of
its own.
Near the top of every company file there is now a line like:
Numbers Game context version: 4
Every time the company's profile, its rules, or a firm instruction template attached to it changes, that number goes up. The file asks Claude to report the version it is carrying, and the Wizard skill asks Claude to report it on the first tool call of a conversation. That is how the portal knows.
Account menu → Project files (/app/context) lists every company you can see,
the version it is on, and one of five statuses:
| Status | What it means |
|---|---|
| Current | Someone has been seen working with this version, or it was marked updated. |
| Updating | The file changed in the last week. People still working in older conversations have not picked it up yet — normal. |
| Behind | It changed more than a week ago and nobody has been seen with the new version. This is the one to act on. |
| Mismatch | A higher version than this company's was reported — almost always the wrong company's file in that project. |
| Not seen | Nothing has ever been reported. This is not the same as up to date — it usually means nobody has used Claude on that company yet. |
Entity groups are on this page too, marked with a Group badge. A group's
.md goes stale the same way a company's does — and more often, because adding
or removing a member changes the file for everyone using it. A group does
have a Client Manager — nameable here or on the group's own page — and for that
same reason it matters more than a company's: any member's rules moving stales
the group file, and only the person who owns that Claude Project can replace it.
What a group has no such thing as is templates, which attach to companies, so
the Templates column shows a dash rather than a warning: that field does not
exist for a group, which is not the same as one being unset. Groups are only
visible to people who can reach every company the group covers, so a colleague
may see a group on this page that you do not.
Where a company has no template attached, the Templates column is a picker rather than a dash: choose one and it is attached from the list, without opening the company. Attaching one changes that company's file, so its version moves and the row goes to Updating — which is the page doing its job, not a fault. Adding a second template, reordering them or removing one stays on the company page, because the order they render in is part of what they mean. The picker needs the instruction templates feature and an owner or admin; a group row keeps its dash, since templates attach to companies.
Every row has a Download .md button, which hands you exactly the file that company's (or group's) own page does — the current version, carrying your firm's instructions and that company's own. It is there so you can refresh a stale project without leaving the list.
Owners and admins also get an I've updated it button on any row that is not already Current. Use it when you know the file was replaced but nobody has opened a conversation yet — it records the claim so the row stops nagging. It can only ever move a company forward.
Read the honest version of what this page is. We cannot see inside anybody's Claude. Everything here is reported by Claude during a conversation, so silence means "we have not been told", never "fine". A firm where nobody has re-opened a project will show a wall of Not seen, and that is the page working correctly.
Client Managers
On each company — and on each entity group — you can name a Client Manager: the person at your firm who owns that Claude Project.
This matters more than it sounds. In a shared Claude Project, only the person who created it can replace a knowledge file. If Claude tells the wrong person their file is out of date, it has told nobody. So when Claude notices a stale file, it names the Client Manager — and if none is set, it falls back to "whoever set up this Claude Project", which is a guess.
In Firm settings → Client Manager you can press Expect one on every company. Read what that does carefully: it flags companies with nobody named — on the company page and on this dashboard, plus a count in Firm settings. A group with nobody named is flagged on the group's own page and caught by the No client manager filter on Project files, but the Firm settings count is companies only — so that number can read zero while a group still has nobody. It does not block anything. Setup files still download, and nothing about the connector changes. It is a way to see the gap, not a way to close it.
Firm instruction templates
Client-specific rules are per company. Instruction templates are the rules you would otherwise paste into fifty companies by hand — your close checklist, your naming conventions, how you want journal entries described.
Owners and admins write them once in Firm settings → Instruction templates,
then attach them to whichever companies should follow them. An attached template
is rendered into that company's .md file, in its own Firm instructions
section, above the client-specific rules.
- Editing a template bumps the version of every company using it. That is the point, and it is also why a small wording change can turn a page amber.
- A template that is still attached to a company cannot be deleted. Detach it first — the error tells you which companies are holding it.
- This is switched on per firm. If you do not see it in Firm settings, ask us.
Which skill everyone is running
The same page shows Skill adoption for owners and admins: who at your firm has been seen running which Wizard version, over the last 7, 14 or 30 days, with the percentage on the current one.
Two columns that look like they should agree, and should not be read as if they do: Running is what Claude reported from inside a conversation. Last downloaded is what the portal handed out. Downloading a skill is not installing it, and the gap between those columns is usually the whole story.
8. Example workflows
8.1 Read-only — financial reports
Things you can ask without granting write access:
"Show me Acme Coffee's profit and loss for May, comparing it month-over-month with April."
"What's the cash balance across all my Boba Tea companies right now? Format as a one-line summary plus a table by company."
"Pull the accounts receivable aging for Smith Logistics. Anything over 60 days?"
"List every transaction over $5,000 in the last quarter for Acme. Group by vendor."
"Has Acme's gross margin been trending up or down over the last 12 months? Plot it as a simple ASCII chart."
"Show me the top 10 expense categories year-to-date for Acme. What changed most vs last year?"
8.2 Write — with confirmation
These require qbo:write scope on the authorization screen. Claude will always show a summary first and wait for your "yes":
Invoicing
"Draft an invoice for Stellar Marketing — 40 hours at $150/hr for May consulting, terms net 30."
Claude: "I'll create invoice #1145 for Stellar Marketing, $6,000, terms Net 30, due 2026-06-15. Want me to send it via QuickBooks Email or just save it as a draft?"
Recording payments
"Pacific Vendors just paid invoice #1102 — $2,300 — by ACH today."
Claude: "Apply $2,300 ACH payment received today to invoice #1102 (Pacific Vendors). The invoice is currently $2,300 outstanding, so this fully settles it. Proceed?"
Expense entry
"Record the $84.20 office supplies receipt I'm sending you — Staples, paid by Visa ending 4242."
Claude: "I'll record an expense of $84.20 to category 'Office Supplies', payment account 'Visa 4242', vendor 'Staples', date today. Receipt attached as memo. Confirm?"
Categorization batches
"Show me all uncategorized transactions for May. I'll tell you how to categorize each batch."
Claude lists them, you reply "Anything from Stripe → Sales: Online; anything from AWS → Software Subscriptions; anything from Uber Eats → Meals: Client", Claude applies in one batch and confirms.
8.3 Recurring close
A monthly close prompt you can save and re-run:
"Run the monthly close checklist for Acme Coffee, period May 2026:
- List uncategorized transactions (don't fix them yet — just list)
- Show me unreconciled bank transactions vs the May statement total of $48,221.18
- Pull the trial balance
- Compare expense categories May vs April — flag anything ±15%
- List open invoices over 30 days"
Claude works through all five and gives you a single report. You decide what to act on.
8.4 Multi-company comparisons
Once you have several companies connected on Growth or Scale:
"For each of my coffee-shop companies, what was their May revenue and net margin? Rank them."
"Has any of my companies missed payroll runs in the last 90 days?"
8.5 Saved reports and the company dashboard
When Claude finishes a piece of work you want to keep — a monthly close summary, a review of flagged transactions — it can save the output against that company. Ask for it explicitly:
"Save that close summary as a report run for Acme Coffee."
Saved runs appear on the company's page in Companies → [company], and the most recent one is rendered on that company's Dashboard tab so you can re-read it without going back through the chat.
Each report type can carry its own retention period — set one and older runs of that type are purged automatically. Types with no retention set are kept until you delete them, or until the company or firm is deleted.
8.7 Parent companies — reporting across several entities
When a client owns several businesses, each one is its own company with its own realm ID, and a Claude project set up for one of them cannot see the others. A parent company groups them so you can work across the whole set in one project.
A parent is not a connected company. It has no connection of its own, no vendor mappings and no accounting basis — it holds the group's name, the list of companies in it, the rules you want followed when reporting across them, and the summaries Claude stores.
Creating one
- Companies → Parent companies
- Type the group's name — usually the holding company or the family of businesses — and click Create
- On the group's page, add each company from the dropdown. A company belongs to one group at a time.
- Write the group rules: how you want these entities reported together. This is where you say which intercompany balances to eliminate, which entity leads, and what should stay separate.
- Optionally state the group's fiscal year end and reporting currency under Company info
- Click Download group .md file and start a new Claude project with it
The file contains every company's realm ID, so that one project can pull all of them. Rules you edit afterwards reach Claude on its next call — you don't have to download the file again.
Combined, not consolidated
Adding entities together gives you a combined view. It does not eliminate intercompany balances: a loan between two of the companies shows in full on both sides, and nothing in QuickBooks knows the two are related. If eliminations matter, say which ones in the group rules.
Claude is also told to check each report's accounting basis and currency before combining, and to stop rather than add figures that disagree — cash-basis and accrual-basis numbers don't sum, and there is no currency conversion anywhere in Numbersgame.
Who can see a group
A parent company is visible only to people who can access every company it covers. If you restrict a colleague from one of the companies, the whole group disappears for them — including any summaries stored on it, since those contain that company's figures. When you add a restricted company to a group, Numbersgame tells you who will lose sight of it before you confirm.
Deleting a company that is in a group
Erasing a company also deletes any group summaries that covered it. A summary is one document, and one company's numbers cannot be lifted out of it, so the other entities' analysis goes with it. Both the company page and the staff console say how many summaries will be destroyed before you confirm.
8.8 Automations — work that runs without you
Companies → Automations. Everything above happens because you asked Claude in a conversation. Automations are the same kind of work on a schedule, run by us rather than by you sitting there.
A workflow is a saved instruction — "review last month's uncategorised transactions and write me a summary", "produce the month-end pack for this client" — with the companies it applies to and the tools it is allowed to use. A schedule decides when it runs: daily, weekly, monthly. Run history shows every run, what it produced, and what it cost.
Output lands where saved reports land, so a scheduled review appears on the company dashboard the same way one you asked for does.
Two things worth knowing. Automations run on a model we host rather than through your Claude subscription, so your firm consents to that separately before the first run — the same shape of permission as bank feeds and Xero. And this is in limited release: email us if you want it switched on.
8.6 Slack
If your team lives in Slack, you can connect a workspace and route each company's task updates to a channel.
- Account menu → Firm Settings → Connect Slack and authorize the workspace
- On a company's page, pick the channel its updates should post to
- Map your firm's members to their Slack users so only authorized people can act on tasks
Numbersgame posts task messages and maintains its own section in the channel's canvas. It doesn't read your messages, files, or DMs.
Private channels: Slack hides private channels from apps that haven't been invited. In the channel, type
/invite @Numbersgame, then hit refresh in the channel picker.
8.9 Budgets
Claude can read a client's budget, build one, change one, and compare it against what actually happened — on QuickBooks Online and Xero alike for reading and reporting, and on QuickBooks for building and changing.
Seeing what is there
"What budgets does Acme Coffee have?" "Show me the FY2027 operating budget."
A company often holds one budget per financial year, so it is worth asking which exist before assuming which one a question is about.
Budget vs actual
"How is Acme tracking against the FY2027 budget this quarter?"
You get a line per account per period: what was budgeted, what actually happened, the difference in pounds and percent, and whether that difference is good or bad — above budget is favourable for income and unfavourable for an expense, worked out from the account's own type rather than guessed. Accounts with spend but no budget line appear too, which is usually the row you most want to see.
Building one
"Build a 2027 budget for Acme: 120,000 of rent, 48,000 of software, 30,000 marketing, spread evenly across the year."
Claude can take annual figures and spread them across the months or quarters, or take a month-by-month spreadsheet you paste in. If you attach a CSV, ask for a dry run first — Claude shows you every line it would write, per account and per period, with the totals, and writes nothing until you say go.
Three things worth knowing before you start. They are QuickBooks' rules, not ours, and they are the ones that surprise people:
- A budget line can be changed or zeroed, but never removed. QuickBooks has no way to delete a single budget line. If you budget the wrong account, the tidiest fix is to set that line to zero — it stays on the budget showing nothing — or to delete the whole budget and rebuild it. So it is worth getting the accounts right even if the numbers are rough.
- Changing a budget only touches the lines you mention. Ask to change March and March changes; every other month stays exactly as it was. You do not need to re-send the whole year.
- Budgets built here are profit-and-loss budgets. QuickBooks' API cannot create a balance-sheet budget — it accepts the request and quietly makes a P&L one instead, so Claude refuses rather than hand you the wrong thing. Build a balance-sheet budget in QuickBooks itself; Claude can read and report on it afterwards.
Deleting a budget takes every line with it and cannot be undone, so Claude tells you what the budget contains and asks you to confirm on the spot. The reply includes the full contents, which is the only copy — keep it if there is any chance you want the budget back.
On Xero, budgets are read-only: Xero's API offers no way to create or change one. Build it in Xero (Accounting → Reports → Budget Manager) and Claude can read it and run budget vs actual against it here. One quirk worth knowing: Xero only returns the periods you ask for, so if a budget looks short, widen the dates.
9. Managing your account
9.1 Passkeys
Account menu → Security lets you add, rename, and remove passkeys. We recommend at least two — one on your daily-driver device and one on a backup (phone, second laptop, or hardware key).
If you remove your last passkey, you'll still be able to sign in with email + password. If you remove all your passwords too (not currently supported), you'll need account recovery via the email on file.
9.1a Two-step sign-in
By default a passkey is an alternative to your password: either one signs you in. Two-step sign-in makes it an addition — on a browser we have not seen before, you need both.
When you actually see it. Only on an unfamiliar browser. Sign out and back in on your own laptop and nothing changes; the second step appears when someone signs in from somewhere new, which is what a stolen password looks like. A browser that has completed the step is remembered for 90 days.
Turning it on.
- For yourself: Account menu → Security → Two-step sign-in.
- For everyone in the firm: Settings → Two-step sign-in (owners and admins). Individuals can still switch it on for themselves; they cannot switch off a firm requirement.
What the second step is. Your passkey. If you have none on the machine you are sitting at — a new laptop, a borrowed desktop — choose email me a code and we send a six-digit code to the address on your account. So a new machine can never lock you out.
Remembered browsers. Security lists every browser that has passed the step, with when it was last used and when it expires. Forget any of them — do that for a laptop you no longer have. Resetting your password forgets all of them at once, which is the right move if you think someone else has your password.
If you are locked out. There are no recovery codes to lose. Your firm's owner or admin can reset you from Team → Reset two-step, which lets you sign in once within the hour and switches your own setting off so you can set it up again. If nobody in the firm can do it — or the locked-out person is the only owner — contact us and we will.
Two notes worth knowing before you switch it on for a firm:
- Nobody is stranded. A colleague with no passkey completes the step with the emailed code, so turning it on does not require everyone to set up a passkey first.
- It does not touch Claude. The connector authorises separately (§6); two-step sign-in is about the portal.
9.2 Changing plans
Billing → Switch plan.
- Upgrades take effect immediately and Stripe prorates the difference.
- Downgrades take effect at the end of your current billing period, not straight away. You keep the higher plan (and its connection cap) until then, and there's no refund for the remainder. Until it kicks in, the pending change is shown on the Billing page and you can cancel it.
Make sure your connection count fits the smaller plan before the switch date — if you're at 6 connections on Growth and dropping to Starter (3), disconnect 3 companies before the period ends.
9.3 Invoices & receipts
Stripe handles all billing emails. To see past invoices or update your payment method, click Manage subscription under Billing — it opens Stripe's Customer Portal.
9.4 Exporting your data
Billing → Export firm data (owner-only) generates a ZIP with your firm record, members, connected companies, and the last year of tool-call activity. We send a one-week signed URL to download. Useful for archives or migrations.
Treat that link like a password. For the week it lasts, anyone who has it can download the ZIP — there is no second sign-in. Do not paste it into a shared channel or forward it to someone who should not have your firm's member list. Creating an export is owner-only and capped at five a day; opening the link is not checked again.
We record that the export happened — who asked and when, never what was in it. The same is true of every other file the portal hands you.
9.5 Seeing who used what
Two entries in the account menu answer this, from opposite ends of the same history.
Account menu → Usage — the summary, for owners and admins. Tool calls, active people, companies worked on, portal visits, and how many calls failed or were refused by a rule, over the last 7, 30 or 90 days. Under the counters: a day-by-day chart, a weekday-by-hour heatmap of when your team actually works, and three tables — people, companies, and which tools are being used (with how long they take).
Account menu → Audit log — the same history one line at a time, open to every role. Every tool call with its company, tool, outcome, duration and error code, filterable by company, tool, or success and failure. This is the screen for "what exactly happened at 14:03".
Worth knowing:
- Usage is owner and admin only. It reports on everyone in the firm, which is firm administration rather than your own work. The audit log is open to everybody.
- Restricted companies stay restricted. If a company is limited to specific people, an admin without access to it will not see it named on either screen. The firm owner sees everything.
- Portal visits are not tool calls. Someone with visits and no calls signed in and ran nothing — usually somebody who needs a hand getting Claude connected.
- Set the clock. Both screens have a timezone selector. "When is my team active" has a different answer in New York and Amsterdam, so pick the one your team works in.
- Nothing here is billing. Plan limits and invoices live under Billing (§9.2, §9.3); these two screens are activity, not money.
9.6 Dark mode
The sun/moon button in the header, next to your account menu, switches between light and dark. Light is the default. Your choice is remembered on that device — so you can have dark on the laptop and light on the desktop.
9.7 Closing your account
Account menu → Security → Delete account starts a 30-day soft delete. Sign-in is blocked immediately; the data is hard-deleted after 30 days. If you change your mind, contact support before day 30.
This deletes your own account, so any member can do it — with two exceptions that stop it quietly orphaning a firm. You are refused if you are the owner of a firm that still has other users (transfer ownership first, on Team), and if any firm that would be deleted with you still has companies connected (disconnect them first). You will also be asked to re-enter your password or use your passkey, and to type your own email address.
9.8 Compliance — the page to hand your client's IT reviewer
Account menu → Compliance. When a client's IT or security people send you a questionnaire, this is the answer. It lists the controls we run, how each is verified, and when it was last checked, alongside live metrics. It prints, so it can go straight into a response.
How much detail it shows is set per firm, and it fails closed — if we have not agreed a deeper level with you, you get the summary rather than an error. Every view is logged.
One entry is worth reading before you send the page on, because reviewers ask about it directly: "Four routes carry your data out, and no others" lists exactly where your data can go — to your own people through the portal, to Claude when one of you asks it to do something, back to QuickBooks or Xero when you make a change, and to your firm's own AI provider if you have turned that on. It also says plainly what we do not do: we record that data moved, and we do not inspect what is in it. A bookkeeper exporting a ledger and a bookkeeper taking one look the same to us, and we would rather say so than imply a filter we do not run.
9.9 What's new
Account menu → What's new, with a dot when there is something you have not read. A short note for each capability as it ships, written in the same voice as this manual. Nothing appears there before it is real and switched on.
10. Troubleshooting
"Claude says it doesn't see my QuickBooks companies." You probably skipped a company on the consent screen. In Claude, remove and re-add the Numbersgame connector — the consent screen will reappear and you can grant more.
"Sign-in keeps failing with a CAPTCHA error."
The Cloudflare check expired between page-load and submit. Refresh and try again. If it persists, disable any aggressive privacy extensions on app.numbersgame.xyz (uBlock Origin with default lists is fine).
"My passkey works on my phone but not my laptop." Passkeys can be device-local (lives only on that device) or synced (iCloud Keychain, Google Password Manager, 1Password). The first one you registered may be device-local. Easiest fix: add a second passkey on the device that doesn't have one.
"A tool call says payment_required."
Your subscription is past-due. Stripe will retry the card a few times; check Billing → Manage subscription for the actual status. Numbersgame blocks tool calls 7 days after the start of the unpaid period — not 7 days after the card first failed, so in practice it bites sooner than it sounds.
"I get monthly_change_limit when trying to connect a company."
You've used this month's company changes. A change is swapping one company out for another — disconnecting one and connecting a different one in its place. Three things do not count:
- Connecting a company you've never held before. Growing your book is always free, however many you add. This is why a firm onboarding thirty companies in a week never sees this error.
- Reconnecting a company that is still connected (re-authorizing after a token problem). Always free, no limit.
- Disconnecting. You can always disconnect; it's only the connection that refills the slot which counts.
Your allowance is 15% of the most companies you've ever had connected at once, rounded up, over a rolling 30 days — so it grows as your book does. A firm holding 7 companies gets 2 changes a month; one holding 80 gets 12. The error says how many you've used and when the oldest drops off. If you genuinely need more, talk to us — it can be set per firm.
"Claude won't write to QuickBooks even with qbo:write scope."
Confirm the realm-level grant — when you authorized Claude, you may have granted read-only on that specific company. Re-authorize and pick the company again with write checked.
"Claude insists it can't create or update something — e.g. 'I'm not able to create an account.'"
This is almost always the connector's tool permissions in Claude, not a Numbersgame problem. Each Numbersgame tool has to be approved before Claude will use it, and the write tools — anything that creates or updates (accounts, classes, departments, customers, vendors, items) — are often still unapproved while the read tools already work. In Claude, open Settings → Connectors → Numbersgame, find the tool you need (e.g. create_account), and enable/approve it. Then ask again. Setting the categories up front (§6.0) avoids this entirely. Quick way to tell this apart: if Claude flatly says it can't, it's the approval list; if it actually tries and hands back a QuickBooks error message, it's one of the two issues above instead.
"The tool I need isn't in the connector's list at all." Claude reads the list of Numbersgame tools once, when the connector connects, and keeps that list for as long as the connection lives. Anything we add or rename afterwards stays invisible to you until you reconnect — and a renamed tool can leave Claude calling a name that no longer exists. Nothing is wrong with your account. In Claude, open Settings → Connectors → Numbersgame, disconnect, then connect again; the current tools appear straight away. Everyone who uses the connector has to do this for themselves — it is per-person, not per-firm, so a colleague reconnecting does not fix it for you. A tool that appears after reconnecting may still need approving before Claude will use it, as above.
"I asked Claude to add a task and it asked me a question instead." If the wording describes something that repeats — monthly, weekly, quarterly — Claude deliberately stops and asks whether you want the work done now, a single task anyway, or a real recurring schedule. This is on purpose: a one-off task for a monthly obligation gets completed once and then nothing brings it back, and nothing warns you. Answer with one of the three and Claude proceeds; ask again in the same words and you get the same question, because only you know which you meant. Recurring schedules live on the company's page under Recurring schedules, and Claude can set one up for you. See Recurring tasks in the SOP library for the details — including why "last day of month" is not the same as "day 31".
"Something failed and Claude's explanation isn't enough." Open Account menu → Audit log and filter to Failed. Every call is there with the company, the tool, how long it took, and the error code Numbersgame or QuickBooks returned — which is the thing support will ask you for. If you're an Owner or Admin, Usage counts the same failures by day and by tool, which answers the different question: is one thing broken, or is everything?
"Claude says it can't make outbound network requests when I ask it to attach my file." Your file sits in Claude's code-execution sandbox, and that sandbox has to make one ordinary HTTPS request to hand the bytes to Numbersgame. On many accounts it starts with no internet access at all, so the request never happens. This is a setting on your side; nothing is wrong with the connector.
Why Claude is strict about it. The sandbox can see every file you attach to a conversation. A sandbox that can also reach any address on the internet is, by construction, a way for your data to leave — and not only when you mean it to: a document you upload or a page Claude reads can carry instructions aimed at Claude, and a model that acted on them would be sending your books somewhere you never named. So network access is off by default and is opened one address at a time rather than in general. It is the right default and we would not ask you to switch it off wholesale.
How to change it. In Claude, open Settings → Capabilities and scroll down:
- Turn Allow Network Egress on.
- Below it, under Additional Allowed Domains, type
mcp.numbersgame.xyz. - Click Add, and check it appears in the list.
That is the same host your connector already talks to, and the only one we need — you are not opening the sandbox to the internet, you are naming one address, which is usually the answer to the question an administrator will ask. On Team and Enterprise plans these controls often belong to an administrator rather than to you, so the request may have to go to whoever runs your workspace. Nothing else stops working while you wait: documents Claude writes itself are built on our side and never touch the sandbox, so those attach normally.
How to tell this apart from a refusal. Both look like "Claude won't upload my file", and the two fixes are opposite ones. Open Account menu → Audit log: if request_attachment_upload is there but no upload_attachable follows it, the upload was prepared and the bytes never arrived — that is the network setting. If there is no row at all, Claude declined before calling anything, which is the deliberate caution described in §7.0; ask it to use request_attachment_upload by name. Both were measured on live customer accounts on 2026-09-03 and 2026-09-04.
"I don't see my private Slack channels when assigning a channel."
Slack only lets apps see private channels they've been invited to, so a private channel stays hidden until you add the app to it. In Slack, open the private channel and type /invite @Numbersgame (or use the channel's Integrations → Add apps). Then go back to the company's page, open the channel picker, and click refresh — the private channel will now appear. Public channels show up without inviting.
11. Getting help
Start with the Help section in the dashboard (/app/help) — it has this manual, the Standard Operating Procedures (the Wizard's workflow library: one page per bookkeeping job, with copyable prompts and video demos), a guide on how to prompt with AI, a library of example prompts, and a contact-support form.
Beyond that:
- Email:
[email protected] - Security issues:
[email protected](don't post publicly) - Sales / Enterprise:
[email protected] - Status page:
https://app.numbersgame.xyz/status(live — current health + 7-day success rate + incident log)
Average response time during business hours (EST): under 4 hours.
Appendix A — What Claude can and can't do
Can do (with qbo:read)
- Read any report QuickBooks Online provides (P&L, balance sheet, AR/AP aging, etc.)
- List customers, vendors, invoices, bills, expenses, accounts
- Pull transaction details
- Compare periods, segments, classes, departments
- Read budgets and compare them against actuals, with variance and whether it is favourable
Can do (with qbo:write)
- Create / update: invoices, payments, bills, bill payments, expenses, journal entries, estimates, purchase orders, sales receipts, credit memos, refund receipts, vendor credits, deposits, transfers, time activities
- Create / update: customers, vendors, items, accounts (chart of accounts), classes, departments
- Apply a credit memo to an open invoice, and a vendor credit to a bill — and convert a purchase order into a bill, closing the PO in the same step
- Set sales tax per taxable line, and class or department per transaction or per line
- Categorize uncategorized transactions, singly or in a reviewed batch
- Import a bank statement from CSV, with a dry run first, and reverse a whole import in one step
- Create and amend budgets, including spreading an annual figure across the year — see 8.9 for the three QuickBooks rules that surprise people
- Add memos and line-item descriptions
- Write a document and attach it to an invoice, bill, journal entry or expense — a PDF or a spreadsheet Claude composes from what it knows (a workings note behind a journal, a summary for the client, a schedule). This works on QuickBooks and Xero alike
- Attach a file you already have — a supplier's PDF, a scan, a receipt photo. Attach it to the conversation and ask; Claude uploads it to the connector and puts it on the record. Requires code execution to be on in your Claude settings (see 7.0)
Can do without touching the ledger
- Save a report Claude produced against the company, so it appears on the dashboard
- Create tasks and recurring task schedules, and complete or defer them
- Read and update the company's client profile, rules and open items
Can do (with qbo:admin)
- Manage user-defined lists such as terms and payment methods — there is no tool for these; set them up in QuickBooks
Can't do (intentionally)
- Void is only for invoices and payments. Those two are voided rather than deleted, so the document and its number stay in the books at zero — the right correction when someone outside already holds a copy.
- Everything else is deleted outright, and the number goes with it. Bills, bill payments, journal entries, estimates, expenses, deposits, transfers, credit memos, refund receipts, sales receipts, purchase orders, vendor credits, and customer or vendor records. If you need a journal entry to survive at zero, reverse it with a second entry rather than deleting it — deleting leaves no trace of the first.
- Remove an attachment. Claude can put a file on a record and list what is there; taking one off is done in QuickBooks or Xero.
- Remove a single budget line, or build a balance-sheet budget. QuickBooks' API allows neither. A line can be zeroed instead, and a balance-sheet budget is built in QuickBooks itself. 8.9
- Change Intuit account settings (login, subscription, etc.)
- Initiate ACH transfers or pay bills via QuickBooks Bill Pay
- Send 1099s, W-2s, or payroll filings
On a Xero company, the list is shorter. Reports (balance sheet, P&L, trial balance, aged receivables and payables), searching customers, suppliers, invoices, bills, accounts and items, and writing customers, suppliers, invoices, bills, items and accounts — including voiding an invoice, voiding a bill, and deleting an item. Almost everything else above is QuickBooks-only, and asking for it on a Xero company gets you a plain refusal naming the reason rather than a guess. It runs one way too: deleting an item is Xero-only, because QuickBooks makes items inactive instead of deleting them. Budgets read and report on both, but are only writable on QuickBooks — Xero's budget endpoint is read-only (8.9). The differences that change how you word a request are in 4.11.
Every tool is labelled read-only or write, so Claude can run reads without interrupting you and always asks before a write.
Bulk classification is deliberately two tools: preview_bulk_classification finds and lists candidate transactions (read-only), and bulk_assign_classification applies only the ones you approved. Nothing is classified without you seeing the list first.
Appendix B — Privacy & data handling
- What we store: your firm's QuickBooks refresh tokens (AES-256-GCM encrypted), session metadata, and a log of which tools each user called when. We do not store the content of your QBO data — Claude reads it live, you see it once. Reports you explicitly save are the exception: those are stored so you can read them again.
- What Claude sees: only the QuickBooks data the tool calls return. Claude does not have ambient access to your QBO file.
- Backups: encrypted nightly to Cloudflare R2, deleted automatically after 30 days. Encryption keys are not stored with the backups.
- Logs: structured logs of each tool call (firm, realm, tool name, success/fail, duration). Shipped to Better Stack and kept 3 days there (metrics 30 days), plus a rolling 7-day archive on our own server. Usage and audit records are kept longer as business records — see the privacy policy.
- Generated PDFs: deleted automatically 24 hours after they're created, whether or not you downloaded them.
- Product analytics: we use PostHog (EU-hosted) to see which features are used and where they break. Events are recorded against your firm, not you individually — we don't send a per-user identifier. Session replays of this dashboard are recorded with all text and inputs masked. Full detail in the privacy policy.
- Export anytime from Billing → Export firm data.
Full terms in the Licence Agreement, privacy policy at /legal/privacy.
