Suggested Bank Rules
The Suggested Bank Rules section appears on a project's report
page once you've uploaded a Bank Feed (For Review) export, a bank
import file (.qbo or QBO-formatted CSV), or both. It looks at every
recurring vendor pattern in the combined transaction set, proposes a
QBO bank rule for each one, and lets you export them as an .xls
that QBO accepts via Banking › Manage Rules › Import
Rules.
When it shows up
- The engagement has at least one of: a Bank Feed (For Review) export, a Bank Import File (.qbo / QBO-formatted CSV), or both.
- Your firm is on a paid plan (Solo, Firm, or a single-cleanup credit). Free Preview shows an upgrade prompt instead of the table.
If those two conditions are met, the section appears between the category breakdown and the recommended cleanup sequence.
Bank import files: covering more than 300 transactions
QBO caps the For Review export at 300 rows. For clients with large
backlogs (most cleanup engagements, almost every rebuild), 300 rows
isn't enough to surface every recurring pattern. The bookkeeper
almost always still has the original .qbo or QBO-formatted CSV file
they downloaded from the bank before importing it into QBO's bank
feed; that file has the complete transaction set.
Drop those files into the Bank Import Files slot on the upload page (it accepts multiple files, one per bank or credit-card account). The rule generator merges them with the For Review export, de-duplicates rows that appear in both sources (matched on date, amount, and normalized vendor description), and clusters the combined set. The summary line at the top of the rule table tells you exactly how many rows came from each source.
Two formats are supported:
.qbo(OFX): the file QBO accepts directly during bank-feed import. Both bank-statement and credit-card-statement variants work.- QBO-formatted bank CSV: either the 3-column layout (Date / Description / Amount) or the 4-column layout (Date / Description / Debit / Credit). "Transaction Date" / "Memo" header aliases are accepted. Raw bank CSVs that don't conform to one of these layouts are not supported.
Bank import files only feed the rule generator. They do not affect the bank-feed health-score category, the unprocessed-transactions finding, or any other detector — those continue to read the For Review export as before.
How clusters become rules
The engine groups For Review transactions by a normalized version of
the bank description. Card tails, dates, transaction IDs, and QBO
noise prefixes (PURCHASE AUTHORIZED, POS DEBIT, ACH PMT, and
similar) are stripped before grouping, so variants of the same vendor
collapse into one cluster. Money-out and money-in transactions are
clustered separately so the same payee can produce two rules when it
shows up in both directions.
A cluster only becomes a rule when it contains at least 2 transactions. One-off charges don't warrant a permanent bank rule.
Account suggestions
Each row gets a suggested account, in this order, strongest signal first. The row also surfaces which signal produced the suggestion (small grey label under the dropdown) so you know at a glance whether to second-guess it:
- QBO match (majority) — if QBO already proposed the same account for at least half of the transactions in the cluster, and that account exists in the uploaded Account List, it wins. This is the strongest signal because it reflects either an existing rule or QBO's own learned suggestions.
- Vendor pattern — for ~50 common vendors (Verizon, Amazon, Shell, Stripe, Uber, etc.) we map the vendor name to a list of category keywords (Verizon → telephone, phone, wireless, internet, utilities, communications) and pick the first COA account whose name contains one of those keywords. Direction-aware: expense accounts are preferred for money-out, income accounts for money-in. We never invent account names — if the COA has none of the mapped keywords, this tier returns nothing and the next tier runs.
- QBO match (partial) — if at least one row in the cluster has a QBO suggestion that maps to a real COA account, even without majority agreement, it's used as a weaker signal.
- Chart of Accounts fuzzy match — if a single account name contains a 4+ character token from the cluster description (e.g. "Telephone" matches a "TELEPHONE SERVICE" cluster), that account is proposed.
- AI suggestion — for clusters that none of the deterministic tiers above could match, we send the residual patterns to Claude in a single batched call along with the uploaded Chart of Accounts. Claude can only suggest accounts that literally exist in that COA; any name it proposes that isn't on the list is dropped silently. AI-suggested rows are tagged with a small purple "AI suggestion" badge under the account dropdown so you can spot-check them. Treat these the same way you'd treat any auto-suggested account: confirm before export. If the AI tier is unavailable (timeout, rate limit, parse failure) the section degrades to the no-suggestion case below.
- No suggestion — when nothing fires, the row is flagged amber and the export button is blocked until you assign an account manually. The dropdown lists every account from the uploaded Account List, alphabetized.
If you didn't upload an Account List, the dropdown is replaced with a free-text input and you can type account names directly. The export will still work; QBO just enforces that the names match its own COA on import.
What you can edit per rule
- Include / exclude (leftmost checkbox). Unchecked rules are skipped at export time. Use the header checkbox to toggle every row at once.
- Rule name — the human-readable label QBO shows in Manage Rules. Defaults to the title-cased vendor name.
- Account — the QBO account the rule will categorize matches into. Required before export.
- Auto-add (rightmost checkbox, with a select-all in the column header). Off by default. When off, matching transactions still appear in For Review with the rule pre-applied for confirmation. When on, QBO accepts the match into the register automatically. Leave it off unless the vendor is unambiguous (utility bills, subscription charges) and the bookkeeper trusts the categorization blindly.
The match pattern (the "description contains" string QBO will use) isn't directly editable in v1 — it's locked to the cluster's normalized key. PR feedback will guide whether that ships in v2.
Importing into QBO
- Click Export Rules (.xls). The file is named
<ClientName>_Bank_Feed_Rules_<date>.xls. - In QBO, go to Banking › Rules › New Rule dropdown › Import Rules.
- Upload the .xls. QBO previews each rule before committing — review names and accounts one more time, then confirm the import.
If QBO refuses the file or marks specific rows invalid, the most common cause is an account name that doesn't match the client's COA exactly (case-sensitive, including the colon-joined sub-account path). Re-pick the account in the LedgerClean table and re-export.
What this does NOT do
- It does not push rules into QBO automatically. The .xls file is the only handoff; you import it manually.
- It does not detect rules that already exist in the client's QBO. If you import a duplicate rule, QBO may flag or skip it on import.
- It does not generate rules for one-off transactions. Anything that appears just once in the For Review queue is intentionally excluded.
- It does not modify the For Review queue or any project data. The generation is read-only.