# Accounting Finance

> Operator finance for SMEs/startups: GAAP/IFRS P&L, 13-week cash/runway forecasting, SaaS unit economics (NRR/GRR/CAC payback), chart of accounts, monthly close, bank reconciliation, ASC 606/IFRS 15 revenue recognition, VAT/sales-tax checklists. Use when building a P&L/budget, forecasting cash, setting up bookkeeping, or checking invoicing/VAT.

- **Type:** Skill
- **Install:** `agentstack add skill-san-npm-skills-ws-accounting-finance`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [san-npm](https://agentstack.voostack.com/s/san-npm)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [san-npm](https://github.com/san-npm)
- **Source:** https://github.com/san-npm/skills-ws/tree/main/skills/accounting-finance
- **Website:** https://skills-ws.vercel.app

## Install

```sh
agentstack add skill-san-npm-skills-ws-accounting-finance
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Accounting & Finance

> **Not tax, legal, or audit advice.** This skill encodes general operator practice and standard frameworks (US GAAP, IFRS, ASC 606/IFRS 15, EU VAT). Rates, thresholds, registration triggers, and filing rules change and are jurisdiction-specific. **Before filing anything or relying on a number for a board, lender, investor, or tax authority, have it reviewed by a qualified accountant/tax advisor** licensed in the relevant jurisdiction. Route any edge case — multi-state US nexus, cross-border digital services, equity/SAFE accounting, R&D capitalization, transfer pricing, M&A, or revenue-recognition judgment calls — to a professional. Treat every concrete rate/threshold below as **"verify before use."**

> **Sibling skills (don't duplicate — cross-link):** country-level tax depth → `eu-tax-accounting` (all 27 EU member states: corporate, VAT, payroll, deadlines). Billing/dunning/usage metering implementation → `saas-billing` (Express/Node) or `stripe-billing` (Next.js). Pricing/packaging → `pricing-optimization`. GTM funnel/forecasting → `revenue-operations`. Churn/retention cohort analysis → `retention-analytics`. EU regulatory (GDPR, contracts, entity) → `eu-legal-compliance`.

---

## 1. P&L Structure (GAAP / IFRS)

Standard multi-step income statement. **Key rule: define what OpEx contains so D&A is counted exactly once.** Below, operating expenses are stated *excluding* depreciation & amortization (the "ex-D&A" convention common in SaaS reporting); D&A is its own line. EBITDA then equals operating income + D&A with no double-count. If your accounting system buckets D&A *inside* OpEx, drop the separate D&A line and compute EBITDA = operating income + D&A (added back), not by re-subtracting it.

| # | Line item | Calculation | Watch for |
|---|-----------|-------------|-----------|
| 1 | **Revenue (net)** | Recognized per ASC 606/IFRS 15 (§6), net of refunds/credits | Recognized ≠ billed ≠ cash collected. Don't book deferred revenue as revenue. |
| 2 | **COGS / Cost of revenue** | Hosting/infra, third-party API/usage fees, payment processing, customer support & success delivery, onboarding/implementation labor | SaaS COGS typically 15–30% of revenue. Keep R&D and S&M *out* of COGS. |
| 3 | **Gross profit** | Revenue − COGS | SaaS target gross margin 70–85%. |
| 4 | **Operating expenses (ex-D&A)** | Sales & Marketing + Research & Development + General & Administrative | Allocate fully-loaded headcount (salary + employer taxes + benefits) to the right function. |
| 5 | **EBITDA** | Gross profit − OpEx(ex-D&A) | Proxy for operating cash generation; ignores capex, financing, tax. |
| 6 | **Depreciation & amortization** | Capitalized assets + capitalized software/intangibles amortization | Pure non-cash; never in COGS *and* here. |
| 7 | **Operating income (EBIT)** | EBITDA − D&A | GAAP operating result. |
| 8 | **Net interest** | Interest expense − interest income | |
| 9 | **Pre-tax income (EBT)** | EBIT − net interest ± other | |
| 10 | **Income tax expense** | Current + deferred tax | Tax expense (accrual) ≠ tax *paid* (cash). |
| 11 | **Net income** | EBT − income tax | Bottom line. |

> **EBITDA vs Adjusted EBITDA:** "Adjusted EBITDA" further adds back stock-based compensation, one-time/restructuring items, and M&A costs. Always label which one you're showing and footnote the add-backs — investors discount unexplained adjustments. **Rule of 40** (growth % + FCF or EBITDA margin % ≥ 40) is a common SaaS health check, not a GAAP metric.

**Monthly P&L review checklist**
- [ ] Recognized revenue reconciles to the billing system and the deferred-revenue roll-forward (§6), not just to cash.
- [ ] COGS contains only cost-of-delivery; S&M/R&D/G&A are not leaking into it.
- [ ] Headcount fully loaded (salary + employer payroll tax + benefits) and allocated to the correct function.
- [ ] One-time/non-recurring items flagged and excluded from run-rate and from EBITDA→Adjusted EBITDA.
- [ ] D&A counted once (per the convention you chose above).
- [ ] MoM and YoY comparatives included; material variances explained (§8).
- [ ] Accruals booked for incurred-but-unbilled expenses (the close, §5).

---

## 2. Cash Flow Forecasting

### 13-week rolling direct cash forecast (the operator standard)

Forecast **cash in/out**, not accruals. Rebuild weekly from the bank balance.

```
Week | Start cash | + AR collected | + Other in | − Payroll | − Vendors/AP | − Tax/VAT | − Debt svc | = End cash
1    | 150,000    | 45,000         | 0          | 30,000    | 8,000        | 0         | 0          | 157,000
2    | 157,000    | 12,000         | 0          | 0         | 5,000        | 0         | 2,500      | 161,500
3    | 161,500    | 28,000         | 5,000      | 30,000    | 9,000        | 14,000    | 0          | 141,500
...
13   | ...
```

**Rules**
- Use **cash collected** (apply realistic AR collection lag: e.g. net-30 invoices land in week 5–6, with a haircut for late payers), not revenue recognized.
- Payroll on **actual** pay dates (semi-monthly/biweekly/monthly) including employer taxes; biweekly = 26 pay runs/yr (two 3-paycheck months).
- VAT/sales-tax remittances and corporate-tax instalments on **statutory due dates** — these are large, lumpy, and easy to forget.
- Model AP on actual vendor terms; don't assume everything clears in the booking week.
- Flag any week where ending cash dips below a **defined floor** (e.g. ≥ 2 months of operating burn or a debt covenant minimum).
- Keep a low/base/high collections scenario for any week with concentrated customer risk.

### Burn & runway

```
Gross burn   = total operating cash OUT in the month (exclude one-offs / financing)
Net burn     = gross burn − cash revenue collected      (the number that actually depletes the bank)
Runway (mo)  = current cash balance / average forward NET burn   (use a 3-month trailing avg, not a single noisy month)
```

> **Runway is a trigger to plan, not a script.** A short runway with predictable recurring revenue, an open credit line, and a near-term profitability path is very different from a short runway with lumpy revenue and no debt access. Weigh: revenue predictability & retention (§3), fundraising-market conditions, debt availability and **covenants**, the path/time-to-default-or-breakeven, dilution at the current valuation, and the owners'/board's risk tolerance. Generally start serious fundraising **9–12 months** before zero cash (a raise commonly takes 3–6 months), and pre-model the cost-cut lever you'd pull if a round slips — but the right move is situational; pressure-test it with the board/CFO.

---

## 3. SaaS / Subscription Unit Economics

### MRR / ARR movement schedule (single source of truth for "growth quality")

```
                         Month
Beginning MRR            100,000
+ New (new logos)         12,000
+ Expansion (upsell)       6,000
+ Reactivation             1,000
− Contraction (downsell)  (3,000)
− Churned (lost logos)    (5,000)
= Ending MRR             111,000
ARR = Ending MRR × 12 =  1,332,000
```

- **Quick Ratio** = (New + Expansion + Reactivation) / (Contraction + Churned). > 4 is strong;  110% = healthy expansion engine; > 120% = elite. |
| **Logo retention** | 1 − logo churn | High logo churn + high NRR ⇒ a few big accounts carry you (concentration risk). |

### CAC, LTV, payback — state your assumptions or the numbers lie

| Metric | Formula | Notes / pitfalls |
|--------|---------|------------------|
| **Blended CAC** | All S&M / *all* new customers (incl. organic) | Flatters efficiency; use for company-level view. |
| **Paid CAC** | Paid S&M / customers from paid channels | The number that matters for scaling spend. |
| **CAC payback (months)** | CAC / (new MRR per customer × **gross margin %**) | Use *gross-margin-adjusted* MRR, not raw price.  0.75 efficient; account for **sales-cycle lag** (spend in Q1 closes in Q2). |

> **Common mistakes:** mixing gross vs net churn; forgetting gross-margin adjustment in payback/LTV; counting organic logos in *paid* CAC; ignoring the S&M→revenue timing lag; using a single month's churn (annualize a multi-month cohort). For deep cohort/retention curves see `retention-analytics`.

---

## 4. Bookkeeping Automation, Chart of Accounts & the Monthly Close

The body's biggest leverage point: a clean **chart of accounts (COA)** + a repeatable **close** + automated **bank feeds** + **approval controls**. (Implements the "bookkeeping automation" promise.)

### 4a. Chart of accounts (SMB/SaaS starter — numeric ranges)

Group by the P&L/balance-sheet line it rolls into so reporting is automatic.

| Range | Type | Example accounts |
|-------|------|------------------|
| 1000–1999 | **Assets** | 1000 Operating bank · 1010 Savings/reserve · 1100 Accounts receivable · 1200 Prepaid expenses · 1500 Fixed assets · 1510 Accumulated depreciation (contra) · 1600 Capitalized software |
| 2000–2999 | **Liabilities** | 2000 Accounts payable · 2100 Credit cards · 2200 Accrued expenses · 2300 **Deferred revenue** · 2400 Sales-tax/VAT payable · 2500 Payroll liabilities · 2700 Loans/notes payable |
| 3000–3999 | **Equity** | 3000 Common stock/share capital · 3100 Additional paid-in capital · 3200 Retained earnings |
| 4000–4999 | **Revenue** | 4000 Subscription revenue · 4100 Usage/overage revenue · 4200 Services/onboarding · 4900 Refunds & credits (contra) |
| 5000–5999 | **COGS** | 5000 Hosting/infrastructure · 5100 Third-party API/usage · 5200 Payment processing fees · 5300 Support & success (delivery) · 5400 Implementation labor |
| 6000–7999 | **Operating expenses** | 6000 Salaries & wages · 6010 Employer payroll taxes · 6020 Benefits · 6100 Sales & marketing · 6200 R&D/software dev (non-capitalized) · 6300 Rent & facilities · 6400 SaaS tools/subscriptions · 6500 Professional fees (legal/accounting) · 6600 Travel · 6700 Depreciation & amortization |
| 8000–9999 | **Other** | 8000 Interest income · 9000 Interest expense · 9500 Income tax expense |

**Rules:** keep it shallow (use classes/tags/departments for dimensions, not 200 accounts); never expense to a bank/AP account; reserve a contra account for refunds; reconcile **2300 Deferred revenue** to the §6 roll-forward and **2400 Sales-tax/VAT payable** to filed returns.

### 4b. Bank-feed reconciliation workflow

1. Connect bank/credit-card **feeds** (Plaid/native) into the ledger (QuickBooks Online, Xero, NetSuite, Wave).
2. Set **bank rules** to auto-categorize recurring lines (payroll provider → 6000/6010; Stripe payout → split fee 5200 vs gross; AWS → 5000).
3. **Match** feed transactions to existing invoices/bills; create from rules only when unmatched.
4. Clear the bank rec so **ledger balance = bank statement balance** every month; investigate any unreconciled item — never "plug" it.
5. Reconcile the **Stripe/PSP payout**: gross charges − processing fees − refunds = net deposit; book fees to 5200, not as a revenue contra.

### 4c. Monthly close checklist (target: business-day +5)

- [ ] All bank & credit-card accounts reconciled to statements (4b).
- [ ] AR aging reviewed; bad-debt reserve assessed.
- [ ] AP complete; **accruals** booked for incurred-but-unbilled costs (cut-off).
- [ ] Prepaids amortized (insurance, annual SaaS tools).
- [ ] Depreciation/amortization run for the period.
- [ ] **Deferred-revenue roll-forward** posted; revenue recognized per ASC 606/IFRS 15 (§6).
- [ ] Payroll fully recorded incl. employer taxes and PTO accrual.
- [ ] Sales-tax/VAT liability reconciled to returns/registers.
- [ ] Intercompany/owner transactions cleared (no personal expenses in the company ledger).
- [ ] Flux/variance review vs prior month, budget, and forecast (§8); lock the period.

### 4d. Approval controls, receipt capture & audit trail (segregation of duties)

- **Separate** who *requests*, *approves*, and *pays* — no single person initiates and disburses (fraud control). In tiny teams compensate with owner review of the bank feed + dual sign-off above a threshold.
- **Spend authorization matrix:** e.g.  €5k founder/CFO · > €25k board. Document and enforce in the AP/expense tool.
- **Receipt capture:** require an itemized receipt per expense (Ramp/Brex/Pleo/Expensify auto-OCR and attach); enforce a per-transaction documentation rule for tax substantiation.
- **Audit trail:** keep an immutable, time-stamped log of who entered/edited/approved each transaction; restrict ledger admin; never share logins. Retain records per jurisdiction (commonly **7–10 years**; verify locally).
- **Month-end lock:** close the prior period so posted entries can't be silently altered; corrections go through dated adjusting entries.

---

## 5. Invoicing & Accounts Receivable

### Invoice/dunning workflow

1. Contract signed → create invoice/subscription record.
2. Invoice issued → send on billing date with a payment link.
3. Track **aging** by terms (net 15/30/60).
4. Overdue dunning sequence (tune by segment; soften for strategic accounts):
   - Day 1 past due: friendly reminder + link.
   - Day 7: second notice.
   - Day 14: escalate to account owner.
   - Day 30: final notice; assess late fee (if contractually allowed) and collections.

> For automated dunning, retries, and payment-failure recovery on Stripe, use `saas-billing`/`stripe-billing` — don't hand-roll it.

### What a compliant invoice contains

Exact mandatory fields are **jurisdiction- and transaction-specific** (and differ for a *full* VAT invoice vs a *simplified* receipt below a local threshold). General good practice:

- Unique sequential invoice number; issue date (and tax point/supply date if different); due date.
- Supplier legal name, address, and **tax/VAT/company registration number where the supplier is registered**.
- Customer name and address.
- Line items: description, quantity, unit price; subtotal; tax rate(s) and tax amount per rate; total payable; currency.
- Payment terms and remittance/bank details.

> **The customer's VAT number is NOT universally required.** It is required (and must be valid) when you apply the **EU B2B reverse charge / intra-Community supply** — without a verified buyer VAT ID you generally cannot zero-rate (validate via **VIES**). But many customers (consumers, non-VAT-registered small businesses, non-EU buyers) have no VAT number, and that is fine. Likewise, *your* VAT number only appears if you are VAT-registered. Don't block invoicing on a VAT field that doesn't apply. Confirm the exact field set for your country with `eu-tax-accounting` or a local accountant.

---

## 6. Revenue Recognition (ASC 606 / IFRS 15)

**5-step model:** (1) identify the contract → (2) identify distinct performance obligations → (3) determine the transaction price → (4) allocate price to obligations (by standalone selling price) → (5) recognize revenue as/when each obligation is satisfied.

**SaaS patterns**

| Arrangement | Recognition |
|-------------|-------------|
| Monthly subscription | Ratably as service is delivered (each month). |
| Annual prepaid (e.g. €12,000 upfront) | €1,000/mo recognized; remainder sits in **deferred revenue (2300)**. |
| Multi-element (license + implementation + support) | Allocate price across distinct obligations by standalone selling price; recognize each on its own pattern. |
| Setup/onboarding fee | Defer and recognize over the period it relates to (often the contract/expected-life) unless it's a distinct obligation delivered upfront. |
| Usage/consumption | Recognize as usage occurs. |

### Deferred-revenue roll-forward (must tie to the balance sheet and §3)

```
Beginning deferred revenue        80,000
+ Billings (new + renewals)       30,000
− Revenue recognized this period  (26,000)
= Ending deferred revenue         84,000
```

> Multi-element allocation, contract modifications, variable consideration, and capitalized contract costs (ASC 340-40) involve **judgment** — get auditor/accountant sign-off before relying on the policy externally.

---

## 7. Tax Compliance Checklists

> **All rat

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [san-npm](https://github.com/san-npm)
- **Source:** [san-npm/skills-ws](https://github.com/san-npm/skills-ws)
- **License:** MIT
- **Homepage:** https://skills-ws.vercel.app

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-san-npm-skills-ws-accounting-finance
- Seller: https://agentstack.voostack.com/s/san-npm
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
