<!-- skill: Budget Sheets | version: 1.0.0 | description: Zero-based budget, age-of-money, pivots and CSV imports | category: System & Productivity -->
## Instructions
- Zero-based template: every euro/dollar gets a job (`Income − Assigned = 0`); categories: Fixed (rent/util), Variable (food/fuel), Sinking (car/insurance), Fun (capped %); new month = copy sheet, zero balances, reassign.
- YNAB-style age-of-money: `=TODAY()-AVERAGE(date_of_last_10_income_events)` proxy or manual buffer-days; goal 30 → 60 → 90 days; buffer lives in `Next-Month` category, never invested until 60d held.
- Account register: Date | Payee | Category | Outflow | Inflow | Balance (`=running SUM`); reconcile weekly against bank (mark `R`); uncleared >7d = investigate, not ignore.
- Import CSV bank: download camt/csv → normalize columns (Date, Payee, Amount) with `TEXTSPLIT`/`DATEVALUE` → paste to Import tab → categorize → move to Register; never edit bank export in place.
- Pivot spend review: monthly pivot (Rows=Category, Values=SUM Outflow, Filter=Month) + payee pivot for leaks; top-3 overspends get a rule (cap, swap, or kill) before next month.
- Sinking funds: annual bills ÷ 12 monthly (`Car insurance 1200/yr → 100/mo`); separate rows per fund, running balance; borrowing across funds logged as debt row, repaid next month.
- Pay-yourself-first: savings transfer on payday (auto row, category `Savings`), 20% target split (emergency → invest → sinking); Fun spends only from Fun balance, never from Sinking.
- Debt snowball: list debts (balance, APR, min); pay mins + all extra to smallest; `=NPER(rate/12,-pay,bal)` months-left per debt; paid debt payment rolls to next (snowball), track in Debt tab.
- Guardrails: 50/30/20 check monthly, grocery cap per person, eating-out ≤ 50% groceries; red conditional format on category > budget; freeze week (no discretionary 7d) when 2 categories red.
- Charts: month bars (budget vs actual per category), 6-month trend line, net-worth area (assets − debts); one dashboard sheet, print-fit A4 for fridge review.
- Pairs excel: this skill is the method, excel skill owns formulas/pivots; keep formulas locale-proof (`;` vs `,` per region) and dates ISO (`yyyy-mm-dd`).
- Yearly review: 12-month pivot, savings rate (`saved/income`), biggest 10 transactions audit, insurance/subscription cull (cancel 2+ yearly or justify).
## Examples
- Zero check: `=IncomeTotal-SUM(Assigned)` must be 0 before month starts; red if ≠0.
- Age-of-money: `=TODAY()-AVERAGE(LargeDates)` or simpler `=BufferBalance/AvgDailySpend` days buffered.
- Months-left debt: `=NPER(0.19/12,-250,3200)` → months to clear 3200 at 19% paying 250.
- Import normalize: `=DATEVALUE(A2)` date, `=NUMBERVALUE(C2)` amount, `=XLOOKUP(payee,Rules!A:A,Rules!B:B,"Needs category")`.
## Workflows
1. Setup: categories → sinking rows → dashboard → rules list (payee→category).
2. Monthly open: copy prior → zero balances → assign income to every euro → verify zero.
3. Weekly: import CSV → categorize via XLOOKUP → reconcile → pivot glance.
4. Month-end: pivot review → top-3 rules → roll sinking → savings-rate note.
5. Yearly: 12-mo pivot → cull subscriptions → raise sinking for inflation → net-worth log.
## Templates
```text
# Sheet layout (tabs)
# 01-Budget (Month | Category | Budgeted | Spent | Left | Note)
# 02-Register (Date | Payee | Category | Out | In | R | Balance)
# 03-Import (raw paste + normalized cols + XLOOKUP category)
# 04-Sinking (Fund | Monthly | Paid-In | Spent | Balance)
# 05-Debt (Creditor | Balance | APR | Min | Pay | MonthsLeft NPER)
# 06-Dashboard (zero-check, savings rate, 3 charts, top-3 rules)
```
```excel
# Key formulas (adjust ; for EU locale)
Zero-check:      =TotalIncome-SUM(BudgetedRange)
Register balance:=SUM($In$2:In2)-SUM($Out$2:Out2)
Left:            =Budgeted-Spent
Auto-category:   =XLOOKUP(B2,Rules!$A:$A,Rules!$B:$B,"Needs category")
Months-left:     =NPER(APR/12,-Pay,Bal)
Savings rate:    =Saved/Income
Buffer days:     =BufferBal/(AvgMonthlySpend/30)
```
```csv
# bank-import.csv (normalized before paste)
Date,Payee,Amount,CategoryHint
2026-10-01,ALDI MARKET,-54.20,Groceries
2026-10-02,Employer Salary,2450.00,Income
2026-10-03,Shell Fuel,-60.00,Transport
```
```text
# Rules tab (payee → category, grows monthly)
# ALDI* → Groceries | Shell* → Transport | Netflix → Subscriptions
# Employer* → Income | Landlord → Rent | *Insurance* → Sinking:Insurance
```
## Tools
- Excel/LibreOffice Calc/Google Sheets; `XLOOKUP`, PivotTables, conditional formatting; bank CSV export.
- LibreOffice Suite skill for Calc parity; scanner app for receipt capture to Import notes.
## Advanced
- Envelope rollover: `Left` positive rolls to same category next month (sinking-style), negative rolls as debt; `=MAX(0,Left)` rollover column.
- Variable-income: 3-month average baseline, surplus → buffer not lifestyle; deficit months draw buffer, log drawdown.
- Multi-currency: one sheet per currency, monthly FX row, net-worth converts at month-end rate; never mix currencies in Register.
- Troubleshooting: pivot shows blank → dates stored as text (`DATEVALUE` fix); XLOOKUP #N/A → trailing spaces (`TRIM` payee); balance drift → missing opening balance row or duplicate import (dedupe by date+amount+payee); locale errors → swap `,`/`;` in formulas.
## Documentation
- In-app Help → Financial templates; Microsoft Support budget articles.
- https://support.microsoft.com/excel + https://help.libreoffice.org/Calc/
- https://www.ynab.com/method (age-of-money concept source)
