Budgets
A budget in Solid Accounting is a target for what each account should spend or earn in each fiscal period of a fiscal year. Once you've set up a budget, the variance reports compare actual GL activity against it — answering "are we tracking to plan?"
Budgets don't post to the GL. They're a parallel set of numbers used for variance analysis only.
What a budget is
Budget: 2026 Operating Plan
Fiscal year: 2026 (Jan 1 – Dec 31)
Revenue
Service Income Jan 12,000 Feb 15,000 Mar 18,000 ... Dec 25,000 Total 220,000
Product Income Jan 3,000 Feb 4,000 Mar 5,000 ... Dec 8,000 Total 72,000
Expenses
Rent Jan 2,000 Feb 2,000 Mar 2,000 ... Dec 2,000 Total 24,000
Payroll Jan 6,800 Feb 6,800 Mar 6,800 ... Dec 6,800 Total 81,600
...
A budget has a name, a fiscal year, and a list of budget lines — each line is one (account, fiscal period, optional class, optional location) target. The granularity matters: you can budget at the account level only (one number per period per account) or get more specific by adding class or location dimensions for departmental budgets.
What's stored
| Field | Notes |
|---|---|
| Name | Free text — 2026 Operating Plan, Q3 Hire Plan, Aggressive Growth Scenario |
| Fiscal year | Required; budgets are scoped to one fiscal year |
| Description | Free text |
| Active flag | Inactive budgets stay in the system but don't appear on default reports |
Each line:
| Field | Notes |
|---|---|
| Account | Required; the account this target applies to |
| Fiscal period | Required; usually a month or a quarter — defined by your fiscal calendar |
| Amount | Required; the target in cents |
| Class | Optional dimension — for class-specific budgets |
| Location | Optional dimension — for location-specific budgets |
The combination (budget_id, account_id, fiscal_period_id, class_id, location_id) is unique. You can have one Service Income → Jan 2026 line per budget; you can have separate Service Income → Jan 2026 → North Region and Service Income → Jan 2026 → South Region lines if you budget by region.
Setting up a budget
Three common patterns:
Pattern 1 — Manual entry
For first-time budgets or small files: Lists → Budgets → New Budget, pick the fiscal year, and enter target amounts in each cell of the (account × period) grid. The grid editor handles tab-key navigation and supports paste-from-spreadsheet.
Pattern 2 — Copy from prior year + adjust
Create a new budget, then Populate from Prior Year Actual. Solid pre-fills every account's per-period target with what actually posted last year. Then you adjust — bump revenue targets up by 10%, add new lines for new initiatives.
This is the fastest path for established businesses. Most lines won't change much; you only edit the ones that need attention.
Pattern 3 — Import from spreadsheet
If your budget process lives in Excel/Google Sheets (most do), export to CSV with columns Account, Period, Amount, optionally Class, Location. Then Lists → Budgets → New Budget → Import CSV.
The CSV-mapper lets you pick which columns map to which fields, same as transaction CSV imports. Existing rows for the same (account, period, class, location) are updated; new rows are added.
Variance reports
The point of a budget is the variance report. Solid's two main variance reports:
- Profit & Loss vs Budget — your normal P&L with two extra columns: Budgeted and Variance. Variance = Actual − Budgeted (positive = better than budget for revenue, worse for expense).
- Budget Detail — line-by-line view of every account in the budget with actual, budgeted, variance, and percent-of-budget.
Profit & Loss vs Budget — January 2026
Service Income Actual 13,420 Budget 12,000 Var +1,420 ↑ 11.8%
Product Income Actual 2,890 Budget 3,000 Var -110 ↓ 3.7%
───────────────────────────────────────────────────────────
Total Revenue 16,310 15,000 +1,310 ↑ 8.7%
Rent Actual 2,000 Budget 2,000 Var 0
Payroll Actual 7,200 Budget 6,800 Var +400 ↑ 5.9%
Software Actual 420 Budget 400 Var +20
───────────────────────────────────────────────────────────
Total Expenses 9,620 9,200 +420 ↑ 4.6%
Net Income 6,690 5,800 +890 ↑ 15.3%
Both reports support the standard column layouts (monthly, quarterly, year-comparison) and the standard period picker. PDF/CSV export.
Multiple budgets per fiscal year
You can have multiple budgets active for the same fiscal year — useful for scenario planning:
- 2026 Conservative (assumes flat revenue, controlled costs)
- 2026 Base Case (your committed plan)
- 2026 Aggressive (assumes new initiatives hit)
When running a variance report, pick which budget to compare against. The active budget is the default; switch via the report's settings.
Budgets and dimensions
If you've set up classes (departments, segments) or locations (offices, regions), budgets can be dimensional:
- A class-only budget tags every line with a class
- A location-only budget tags every line with a location
- A class + location budget creates a target per
(account, period, class, location)cross-product
Variance reports automatically filter by the dimensions on the budget. Compare the Marketing department's actual vs. its own budget without seeing other departments mixed in.
Cash vs accrual
Budgets follow the same cash/accrual setting as the variance report. A budget on accrual basis is compared against accrual-basis actuals; same for cash. Most budget processes are accrual-basis (matches GAAP financial statements); cash-basis budgets are useful for cash flow planning.
You don't tag a budget as "cash" or "accrual" at setup — the basis is a runtime choice on the variance report.
Common gotchas
Variance shows a huge surprise on a single month. Check the period definition — Solid's fiscal periods can be calendar months or 4-4-5 retail weeks or anything else. If your budget was set up as monthly and your actuals are on a different period definition, totals won't align cleanly.
Numbers add up to the right yearly total but the monthly variance is way off. Common when you put a one-twelfth share into each month but the actual business is seasonal. Edit the monthly distribution to match expected seasonality — Solid doesn't enforce equal-monthly distribution.
Class/location filter changed and the variance is now off. Check whether the budget includes lines for the now-active dimension combination. A budget without class-tagged lines, viewed under a class filter, shows zero budget for that class — the variance is then 100% of actual.
Imported a CSV and got "duplicate budget line" errors. Multiple rows in the CSV with the same (account, period, class, location) combination. Deduplicate the source spreadsheet before importing.
Budget shows in the dropdown but variance is empty. Make sure the budget is for the fiscal year you're running the report against. A 2026 budget compared against 2027 actuals shows nothing — Solid can't infer cross-year mapping.
Cross-references
- General Ledger → Cash vs accrual — the basis choice that variance reports inherit
- Reports → Income Statement — the report that grows the variance columns when a budget is active
- Period Close walkthrough — closing the period feeds the actuals that variance compares against