From 31st-ai
Reconcile bank and credit card accounts by running health checks, resolving duplicates and uncategorized items, delegating bank-feed processing, then completing the QuickBooks reconciliation via browser. Activate when the user mentions reconciliation, bank matching, uncleared items, account health, bank-feed cleanup, or closing the books.
How this skill is triggered — by the user, by Claude, or both
Slash command
/31st-ai:bank-reconciliationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
| Situation | Phase |
| Situation | Phase |
|---|---|
| Check account health, duplicates, uncategorized items | Phase 1 |
| Unrecorded bank-feed transactions exist | Phase 2 |
| Bank-feed review queue has flagged items | Phase 2 Step 3 |
| Ready to finalize reconciliation in QB UI | Phase 3 |
qbMasterData(entityTypes=["account"]) → filter to Bank and Credit Card accounts.
qbAccountHealth(accountId, startDate, endDate) per account.
Health score thresholds:
Health flags:
dueDate field older than 7 days (not QB cleared status)Resolve duplicates:
Fetch both candidates: qbFetchTransactions(transactionId=firstId) + qbFetchTransactions(transactionId=secondId)
Verify true duplicate (same amount + vendor + purpose; two similar charges from one vendor can both be legitimate).
Voidable via tools: BillPayment, Invoice, Payment, SalesReceipt, CreditMemo, Purchase, RefundReceipt, Transfer
Not voidable via tools: Bill, JournalEntry, Deposit, Expense, VendorCredit → flagForReview with transaction type and matched pair.
VOID TRANSACTION GUARD: void target must appear in the most recent qbFetchTransactions result.
qbVoidTransaction(transactionId, transactionType) — ask before voiding; voiding preserves audit trail better than deleting.
Re-run qbAccountHealth after each void or flagForReview. Repeat until no duplicate flags remain.
Resolve uncategorized:
qbFetchTransactions(accountId, filter=["Ask My Accountant","Uncategorized"], startDate, endDate)
For each uncategorized item:
qbMasterData(detailedInfo="vendor", filter=counterpartyName) — >1 matches → MULTI-VENDOR AMBIGUITY GUARD blocks; flagForReview with candidate listqbFetchTransactions(transactionType="Bill", outstandingOnly=true, entityId=vendorId). Outstanding status not date-bounded.
flagForReviewRe-run qbAccountHealth after cleanup. Do not open the reconciliation screen until score ≥ 95.
bankFeed(action="fetch", accountId, sinceDate=startDate) — skip items with alreadyFlagged=true.
bank-feed-processing skill with accountId, startDate, endDate, and the fetched item list. Do not re-implement recording logic here.After delegation, items must be marked recorded or flagged via fetchWorkQueue(source="markRecorded", ...).
Review queue check:
fetchWorkQueue(source="bank-feed-processing", accountId, startDate, endDate, status="flagged")
flagForReview(aiReasoning="Reconciliation blocked: [N] bank-feed items remain flagged for the period. Do not finalize until the review queue is cleared. Items: [summaries].")Start browser automation only after: Phase 1 health score ≥ 95 AND Phase 2 review queue is empty.
Any unresolved item = inspection-only, not finalization.
Activate computer-use skill: QBO → Bookkeeping → Reconcile → select account.
Enter statement details:
Mark cleared transactions. Investigate suspicious items with qbFetchTransactions(accountId, startDate, endDate) while screen stays open.
Reconciliation difference threshold: $0.00 exactly. Any non-zero difference → halt reconciliation. Never force-adjust — a forced adjustment creates a discrepancy that compounds every month.
Ask before "Finish Now":
The reconciliation difference is $0.00. Do you want me to click "Finish Now"?
Never click "Finish Now" without explicit user confirmation, even with $0.00 difference.
After completion: download/save the QB reconciliation report PDF for audit records.
bank-feed-processing — this skill must not re-implement categorization or inference logicProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub naga-deepledger/31st-ai-plugin --plugin 31st-ai