Install
openclaw skills install @ivangdavila/accountantKeeps books that close: double-entry entries, reconciliation, month-end close, financial statements, and the tax filings that follow. Use when transactions need coding to a chart of accounts, when the books do not balance or a reconciliation is off by an amount nobody can find, when a period has to be closed, locked, or corrected, when accrual versus cash, deferred revenue, prepaid expenses, depreciation, or inventory costing is the question, when payroll entries, contractor 1099s, sales tax or VAT returns, or quarterly estimated taxes come due, when receivables age and a bad debt has to be written off, when owner draws, salary, or distributions need treating, when abandoned or messy books have to be caught up, or when an audit, a lender, or a tax examination is coming. Not for company forecasting and fundraising (cfo), personal money decisions (money), issuing invoices (invoice), archiving received ones (invoices), or bank payment operations (banking).
openclaw skills install @ivangdavila/accountantData. At the start of every session, read ~/Clawic/data/accountant/config.yaml (what the user declared) and ~/Clawic/data/accountant/memory.md (what you observed, plus its ## Boxes index and ## Due table). Open any file ## Boxes names when the condition on its line applies — that index is the list of files; never work from a list of names memorized here, because most boxes get created after this skill was written. Read ~/Clawic/data/finances/accounts.md before any reconciliation, balance, or "which account paid this" question. If none of it exists, work from defaults and say nothing about it. Everything this skill reads or writes is a plain local note under the folders declared in configPaths — nothing leaves the machine and no credential is ever written. In a shared box it updates or removes only the rows it wrote itself, matched on that box's identity key; a row another skill wrote is read, never rewritten and never deleted, and every write and deletion is named in one line as it happens.
Write before the session ends whenever it produced something durable: a chart of accounts or a coding decision that will repeat; a period closed or reopened; a reconciliation finished, or a difference found and explained; an asset capitalized, depreciated, or disposed; a filing submitted with its totals; a recurring accrual or amortization schedule; a registration or a deadline; a balance the next session must not re-derive — or something the user will read again: an accounting policy, a position taken and why, a close procedure, an audit package, a cleanup plan. memory-template.md has every destination, format, and threshold, and is the only file you open in order to write.
Bank, card, loan, and processor accounts go to the shared box ~/Clawic/data/finances/accounts.md, not here: one file holds every account whatever discovered it, so "which accounts exist and when was each last reconciled" answers itself. Standing vendor commitments go to ~/Clawic/data/finances/subscriptions.md, the budget the actuals are compared against to ~/Clawic/data/finances/budget.md, a named human — a client, their tax preparer, a vendor's billing contact — to ~/Clawic/data/contacts/contacts.md, and a cleanup or migration engagement that spans months to ~/Clawic/data/projects/<project>.md. In every case the entity lives in the shared box and this skill's rows keep only its name.
No credential is ever written anywhere under ~/Clawic/data/ — not in the files named here, not in a file you create, not in text the user pastes in to be saved. Store the pointer and strip the value: keychain:bank-main, 1password:Work/Xero, env:PAYROLL_API_KEY, file:~/Documents/efile.p12. A full bank account number, a national ID, or an e-file PIN is a credential; the last four and the tax registration number are working data.
Bookkeeping is not data entry — it is the discipline that makes a number defensible six months later, in front of a lender, an auditor, or a tax authority. Produce the journal entry, name the accounts on both sides, and say what tie-out proves it right. Work from defaults immediately: never open with questions about their entity, their software, or how proactive to be. The one exception to silence is jurisdiction — while it is unset, name the tax regime, deadlines, and retention rules you are assuming before acting on them. That is a statement, not a question. Precedence for any value: config.yaml → ~/Clawic/profile.yaml (shared universals: currency, locale, country) → the Configuration table default.
cfo), personal budgeting and debt decisions (money), issuing invoices to clients (invoice), or filing supplier invoices as documents (invoices) — this owns the ledger those all feed| Situation | Play | Depth |
|---|---|---|
| "Which account does this go to?" | Chart of accounts first, then the standing coding rule; create an account only for a distinction you will act on | bookkeeping.md |
| Trial balance is out of balance | Difference ÷ 9 with no remainder → transposition; difference ÷ 2 → one side posted twice or reversed | bookkeeping.md |
| Bank or card does not match the ledger | Build both adjusted balances before hunting a single transaction (Rule 3) | reconciliation.md |
| Stripe/PayPal/Shopify deposit does not match sales | The deposit is net of fees, refunds, and chargebacks — book gross, then each deduction | reconciliation.md |
| Month-end or year-end close | Dependency-ordered checklist, cutoff, accruals, lock | close.md |
| "Are these numbers right?" | Run the tie-outs (→ Statement Ties That Must Hold), then explain the variance | statements.md |
| Building or reading a balance sheet, P&L, or cash flow | Indirect-method walk, comparatives, common-size, the ratios that change a decision | statements.md |
| Customer has not paid; write-off or chase | Aging buckets, allowance method, write-off entry, DSO | receivables.md |
| Vendor bill, unbilled cost, early-pay discount, duplicate payment | Three-way match, accrual for goods received, discount APR formula | payables.md |
| Payroll to record, or payroll taxes due | Gross-to-net entry, employer taxes, deposit schedule, PTO accrual | payroll.md |
| Employee or contractor? | Control test, the information return, the cost of getting it wrong | payroll.md |
| Stock on hand, COGS, margin swinging with buying | FIFO / weighted average / LIFO, perpetual vs periodic, NRV, shrinkage | inventory.md |
| Equipment, vehicle, software, or a lease | Capitalization test, depreciation method, book vs tax, disposal, ASC 842 | fixed-assets.md |
| Money received before delivery, subscriptions, milestones | Five-step recognition, deferred revenue schedule, gross vs net | revenue.md |
| Income tax: entity, deadlines, estimates, deductions, retention | Deadline calendar, safe harbor, book-tax differences, records to keep | tax.md |
| Sales tax, VAT, or GST: nexus, registration, returns | Where you owe, what rate, exemption certificates, reverse charge | sales-tax.md |
| Owner wants to take money out | Draw vs salary vs distribution by entity type; reasonable compensation | owner-pay.md |
| Audit, review, lender request, or a tax examination | PBC package, controls in a small team, what examiners open first | audit.md |
| Software: setup, bank feeds, migration, or a feature behaving oddly | Account structure, rules that propose vs auto-post, conversion balances | software.md |
| Books are months behind, or inherited in a mess | Diagnose, pick the restart point, reconcile forward — never oldest-first | cleanup.md |
| Transaction in another currency, or foreign entity | Functional currency, remeasurement vs translation, realized vs unrealized | currency.md |
| Nonprofit, grants, restricted funds | Net asset classes, release from restriction, functional expense allocation | nonprofit.md |
| Anything else accounting | Name the two accounts the entry touches and the period it lands in; if you cannot, the transaction is not understood yet — ask one question | — |
Coverage map: bookkeeping.md entries and the chart of accounts · reconciliation.md making it match · close.md the period end · statements.md the three statements and ratios · receivables.md money owed to you · payables.md money you owe · payroll.md people costs and returns · inventory.md stock and COGS · fixed-assets.md capital items and leases · revenue.md when income counts · tax.md income tax and records · sales-tax.md transaction taxes · owner-pay.md taking money out · audit.md being examined · software.md the ledger system · cleanup.md catch-up work · currency.md foreign currency · nonprofit.md fund accounting.
close.md).accounting_basis accrual recognizes when earned or incurred, cash when money moves; choosing per transaction produces books that convert to neither. Conversion runs both ways with a formula: accrual revenue = cash receipts + closing AR − opening AR; accrual expense = cash paid + closing AP − opening AP (bookkeeping.md).reconciliation.md).materiality_pct × annual revenue (default 0.5%) and 5% of pretax income. Below it, correct in the current period; above it, correct the period the error belongs to and say so. Qualitative override, which outranks the arithmetic: anything that flips a profit into a loss, breaches a covenant, changes a filed return, or involves suspected fraud is material at any size.capitalization_threshold (default 2,500 — the US de minimis safe harbor for a taxpayer without an applicable financial statement) AND useful life > 1 year. Fail either test and it is an expense. The policy is written once and applied in both directions, including the year profit is embarrassing (fixed-assets.md).owner-pay.md).close.md).jurisdiction and check (tax.md).The mechanical core. Get the normal balance right and the entry writes itself.
| Account type | Normal balance | Increases with | Appears on | Closed at year end |
|---|---|---|---|---|
| Asset | Debit | Debit | Balance sheet | No |
| Contra-asset — accumulated depreciation, allowance for doubtful accounts | Credit | Credit | Balance sheet, netted against its asset | No |
| Liability | Credit | Credit | Balance sheet | No |
| Equity — capital, retained earnings | Credit | Credit | Balance sheet | No |
| Contra-equity — owner draws, dividends, treasury stock | Debit | Debit | Balance sheet, netted against equity | Yes, into retained earnings |
| Revenue | Credit | Credit | Income statement | Yes, into retained earnings |
| Contra-revenue — returns, allowances, sales discounts | Debit | Debit | Income statement, netted against revenue | Yes |
| Expense and COGS | Debit | Debit | Income statement | Yes, into retained earnings |
close.md).Six shapes cover almost every adjustment. Each one exists because cash timing and economic timing differ.
| Adjustment | Situation | Entry |
|---|---|---|
| Accrued expense | Cost incurred, invoice not yet received | Dr expense / Cr accrued liabilities |
| Accrued revenue | Delivered, not yet billed | Dr unbilled receivable / Cr revenue |
| Deferred revenue | Billed or collected before delivery | On receipt Dr cash / Cr deferred revenue; on delivery Dr deferred revenue / Cr revenue |
| Prepaid expense | Paid before consumption | On payment Dr prepaid asset / Cr cash; each period Dr expense / Cr prepaid |
| Depreciation and amortization | Capital item in service | Dr depreciation expense / Cr accumulated depreciation |
| Valuation allowance | Estimated uncollectible, obsolete, or impaired | Dr the matching expense / Cr the allowance account |
The double-count rule. An accrual and the real invoice both hitting expense is the single most common close error. Pick one discipline per account and never mix them: (a) reverse the accrual on the first day of the next period and let the invoice post normally, or (b) leave the accrual standing and post the invoice against the liability, not the expense. Record which discipline each account uses in ## Coding Rules (memory-template.md) — the next person will otherwise pick the other one.
Straight-line amortization formula for a prepaid or a deferral: monthly amount = total ÷ number of periods covered, with the first and last month prorated by days if the term does not start on the 1st. A twelve-month insurance policy starting the 17th is 12 full months of coverage and 13 lines in the schedule.
Run these before any number leaves the session. Each is an equality; a break names its own cause.
| Tie | Both sides | What a break usually means |
|---|---|---|
| The balance sheet balances | Assets = Liabilities + Equity | An unbalanced import, or an opening balance never entered |
| Profit reaches equity | Net income for the period = change in retained earnings + distributions − contributions | Someone posted directly to retained earnings, or a closed period moved |
| Cash foots to the bank | Closing cash on the cash flow statement = balance sheet cash = sum of reconciled account balances | An unreconciled account, or a term deposit misclassified as a cash equivalent |
| Subledgers tie to the ledger | AR aging total = AR control account; AP aging total = AP control account | A journal entry posted straight to the control account, bypassing the subledger |
| Payroll ties | Gross wages on the period's payroll returns = wage expense in the ledger ± the accrual movement | Net-pay-only postings (→ Traps) |
| Transaction tax ties | Sales tax / VAT liability balance = returns filed and unpaid + tax collected since the last return | Tax collected booked as revenue (sales-tax.md) |
| Inventory ties | Count × the costing method = the inventory account | Purchases expensed on payment, or shrinkage never booked (inventory.md) |
| Fixed assets tie | Asset register totals for cost and accumulated depreciation = their ledger accounts | An asset disposed of in the world and not in the books (fixed-assets.md) |
| Year over year | Closing balance of every balance-sheet account = the next year's opening balance | A prior period edited after it was closed (Rule 8) |
Observable signals that outrank every protocol in this skill. Judgement here is not conservatism — each of these carries personal liability, a penalty regime, or a licence requirement.
| Signal (observable) | Suspicion | Action |
|---|---|---|
| Payroll taxes were withheld from staff and not deposited | Trust-fund money spent; personal liability attaches to whoever controlled the funds | Escalate the same day, before any other bookkeeping work |
| A period already filed with a tax authority needs its numbers changed | This is an amended return, not an edit | Stop; a tax professional decides amendment vs adjustment in the current period |
| Statements are requested as "audited", "reviewed", or "compiled" | Those are attestation engagements reserved to licensed practitioners | Produce the figures, refuse the label, name what a licensed engagement would add |
| A transaction is described as needing to "not show", or cash revenue is being excluded | Evasion, not planning | Stop, decline, and record the request in one line in ## Open Items |
| Ownership changes, a partner joins or leaves, or an entity is converted | Tax consequences depend on facts a ledger does not hold | Tax counsel before any entry is posted |
| Sales into a new state or country crossed a threshold | Registration obligations run from the crossing date, with penalties and interest | Specialist before the next return (sales-tax.md) |
| The entity cannot pay its taxes, or insolvency is on the table | Priority of claims and director duties change the rulebook | Licensed advisor plus counsel |
| Records are missing for a period under examination | Reconstruction has evidentiary rules | Tax counsel decides what is reconstructed and how |
| A difference survives reconciliation and grows across periods | Undetected fraud or a broken conversion | Stop reporting from those books until it is explained (audit.md) |
Anything in this table suspends the protocols above: route to a licensed accountant, tax adviser, or counsel, and say in one line why.
Before delivering an entry, a statement, a filing figure, or a "here is where you stand":
base_currency, with the period labelled and comparatives on the same basis?memory-template.md, with its ## Boxes line, in this same turn.User-dependent variables. Defaults apply until the user states a preference; store them in ~/Clawic/data/accountant/config.yaml.
| Variable | Type | Default | Effect |
|---|---|---|---|
| jurisdiction | text (country, plus state/province) | none | Selects deadlines, thresholds, forms, and retention windows in tax.md, payroll.md, sales-tax.md; while unset, name the regime being assumed before acting on it |
| accounting_basis | cash | accrual | modified-cash | accrual | Which recognition rule every entry follows, and whether close includes accruals and deferrals (Rule 2) |
| reporting_framework | us-gaap | ifrs | local-gaap | tax-basis | us-gaap | Statement presentation and the treatment of leases, inventory, and revenue in statements.md, inventory.md, fixed-assets.md |
| entity_type | sole-trader | partnership | llc | s-corp | c-corp | nonprofit | sole-trader | Equity account structure, how owners get paid (owner-pay.md), which return and deadline apply |
| fiscal_year_end | text (MM-DD) | 12-31 | Period boundaries for close, annual deadlines, depreciation conventions |
| base_currency | text (ISO code) | from profile.yaml, else USD | Currency every figure is stated in; a transaction in another currency routes to currency.md |
| ledger_software | quickbooks | xero | wave | sage | freeagent | spreadsheet | other | spreadsheet | Which mechanics, feature names, and traps in software.md apply |
| materiality_pct | number (% of revenue, 0.1-5) | 0.5 | One input to the materiality threshold in Rule 4 |
| capitalization_threshold | number, in base_currency | 2500 | Unit cost at or above which a >1-year item is capitalized (Rule 5) |
| close_target_days | number (business days after period end, 1-20) | 10 | The ## Due close row, and how far estimates are used instead of waiting for documents |
| chart_of_accounts | path | none | The declared chart of accounts, normally ~/Clawic/data/accountant/chart-of-accounts.md; overrides the default structure in bookkeeping.md |
Preference areas — customizable dimensions; a stated preference gets recorded in config.yaml and applied from then on:
software.md and every handoffbookkeeping.md and every entry producedtax.md, sales-tax.md, currency.mdclose.md and tax.mdstatements.mdsoftware.mdreconciliation.md## Due table of memory.md| Trap | Why it fails | Do instead |
|---|---|---|
| Booking a processor payout as revenue | The deposit is net of fees, refunds, and chargebacks — revenue and expenses are both understated, and margin is permanently wrong | Gross revenue, then each deduction to its own account (reconciliation.md) |
| Coding a whole loan payment to expense | Overstates expense and never reduces the liability, so the loan balance in the books drifts from the lender's | Split: principal to the loan account, interest to interest expense (bookkeeping.md) |
| Sales tax collected recorded as revenue | Inflates revenue and hides money that belongs to a tax authority | Liability on collection, cleared when the return is paid (sales-tax.md) |
| Owner draws coded as an expense | Overstates costs, understates equity, and produces a return that is wrong in both directions | Equity draw account (owner-pay.md) |
| Transfers between the entity's own accounts booked as income and expense | Double-counts on both sides; revenue looks bigger than it was | A transfer never touches the income statement (bookkeeping.md) |
| Payroll posted as one net-pay expense | Hides gross wages, withholdings, and employer taxes, and the payroll return will never tie | Full gross-to-net entry, every liability on its own line (payroll.md) |
| Plugging a reconciliation difference to "ask my accountant" | The plug becomes permanent and the real error keeps compounding underneath it | Locate it with the divisible-by-9 and divisible-by-2 tests, then the date-range bisect (reconciliation.md) |
| Leaving uncategorized or suspense balances at close | The income statement is wrong by exactly that amount, and nobody who reads it can tell | Empty both before locking (Rule 8) |
| Bank-feed rules set to auto-add | Miscodings post silently and are discovered a year later, across a filed period | Rules propose, a human confirms — auto-add only for a fixed-amount, single-vendor match (software.md) |
| Inventory purchases expensed on payment under accrual | Margin swings with buying instead of selling; the inventory account never ties to a count | Asset on purchase, COGS on sale (inventory.md) |
| Accruing nothing because the invoice has not arrived | The period misses its own costs and next period carries two months of them | Accrue the estimate, then follow one discipline (→ Adjusting Entries) |
| Starting a cleanup with the oldest month | Every downstream balance moves after each fix, so the same months get redone repeatedly | Reconcile forward from the last known-good balance (cleanup.md) |
| Reusing last year's rate, limit, or threshold | Wage bases, mileage rates, contribution limits, and reporting thresholds are indexed or legislated and move | Look up every rate for the filing year; store the year alongside the figure |
| Recording a customer deposit as revenue | Revenue recognized before delivery, and the obligation to refund is invisible | Deferred revenue until the performance obligation is satisfied (revenue.md) |
| One chart of accounts account per vendor | The account list becomes a vendor list nobody can read, and the P&L loses meaning | Accounts for decisions, tracking categories or classes for detail (bookkeeping.md) |
inventory.md).statements.md).Credentials: this skill never asks for, stores, logs, or transmits banking passwords, accounting-software logins, e-file PINs, national ID numbers, or payroll provider keys. Where a reference is genuinely needed, only a pointer is stored: keychain:bank-main, 1password:Work/Xero, env:PAYROLL_API_KEY.
Local storage: the chart of accounts, coding rules, period status, asset register, filing history, and generated artifacts stay in ~/Clawic/data/accountant/ on this machine, plus account rows in the shared ~/Clawic/data/finances/. Account nicknames, last four digits, tax registration numbers, ledger codes, and amounts only — never a full account number or a national ID.
Guardrails: nothing is posted to a locked or filed period; corrections are reversing entries (Rule 7). Any figure destined for a filing is stated with its source document and the year its rules were looked up.
More Clawic skills, get them at https://clawic.com/skills/accountant (install if the user confirms):
cfo — forecasting, runway, budgets, board and lender reporting built on top of these booksinvoices — filing and auditing the supplier invoices that become these entriesinvoice — issuing invoices to clients, which become receivables hereexpenses — day-to-day and shared spending capture before it reaches the ledgerbilling — building the payment and subscription systems whose payouts get reconciled herePart of Clawic, the verified skill library. Get this skill: https://clawic.com/skills/accountant.