Who can use this: Owner only for lock / unlock / reopen / close. Manager and Accountant can view fiscal years and periods. Manager is explicitly denied
periods.unlockandperiods.reopen. URL / Route:
- Fiscal years —
/finance/fiscal-years(finance.fiscal-years.index). Detail:finance.fiscal-years.show,edit,update,create,store,destroy. Action endpoints:finance.fiscal-years.lock,reopen,close,generate-periods.- Periods —
/finance/periods(finance.periods.index). Detail:finance.periods.show,edit,update,create,store,destroy. Action endpoints:finance.periods.lock,reopen,close. Plan / feature gate:feature:period_locking_enabled(default: enabled). With it off, the lock/unlock/reopen actions are disabled but periods still exist as a calendar. Permissions:periods.lock,periods.unlock,periods.close,periods.reopen,periods.generate. All of these also requirefeature:period_locking_enabled.
Purpose
A fiscal year is the 12-month accounting calendar your books run on. Most organizations align it with the calendar year (1 Jan – 31 Dec) but Solavel supports any start date.
A period is a sub-range of a fiscal year — typically a calendar month. Posting into a period is allowed only while the period is open. Locking a period prevents further postings; closing it also rolls forward the period-end balances.
Lock dates exist to give you a clean cut-off for VAT returns, monthly reporting, and audit. Without them, someone could backdate a journal into a period that has already been reported, breaking the comparability of your books.
Step by step
Fiscal years
Create a fiscal year
Route: finance.fiscal-years.create / store. Permission: typically Owner; tied to settings.manage.
- Open
/finance/fiscal-years. - Click New fiscal year.
- Pick a Start date and End date (often 12 months apart). Solavel does not require fiscal years to be exactly 12 months — short or long initial years are allowed.
- Pick a Label (e.g. "FY 2025" or "FY 2024–25").
- Save.
Generate periods
Route: finance.fiscal-years.generate-periods. Permission: periods.generate.
After creating a fiscal year, click Generate periods to slice it into months automatically. You can also create periods manually under /finance/periods/create.
Lock a fiscal year
Route: finance.fiscal-years.lock. Permission (effectively): Owner-only.
Locks every period inside the year in one click. Subsequent locking of individual periods is unnecessary.
Reopen a fiscal year
Route: finance.fiscal-years.reopen. Permission (effectively): Owner-only. Only owners can reopen.
Reopens every locked period in the year.
Close a fiscal year
Route: finance.fiscal-years.close. Permission (effectively): Owner-only.
Closing rolls retained earnings, marks the fiscal year as Closed, and prevents reopen unless explicitly forced. The Trial Balance for the year is frozen at this point.
Periods
Browse periods
- Open
/finance/periods. Each row shows the fiscal year, label (e.g. "Jan 2025"), start, end, and status (Open / Locked / Closed). - The list is sorted newest-first. Filter by fiscal year.
Create a period
Route: finance.periods.create / store. Permission: periods.generate. Most users will not need this — generate periods from the fiscal year instead.
Edit a period
Route: finance.periods.edit / update. Allowed only on Open periods.
Lock a period
Route: finance.periods.lock. Permission: periods.lock (Manager denied by default).
A locked period blocks: posting / unposting / voiding any document dated in the period (invoice, bill, payment, journal, expense). The period's lock-state shows clearly in the toolbar of any document with a date inside it.
Reopen a locked period
Route: finance.periods.reopen. Permission: periods.reopen (Manager denied; Owner-only by default).
Use sparingly — reopening for a quick fix and re-locking is fine; reopening to allow regular backdated postings defeats the purpose.
Close a period
Route: finance.periods.close. Permission: periods.close.
Closing locks the period and additionally writes period-end carry-forward markers. This is the strictest state.
Delete a period
Route: finance.periods.destroy. Allowed only on Open periods with no postings.
Lock-date behaviour, in plain English
When a document has a date inside a locked period, the following actions are blocked:
| Action | Blocked? |
|---|---|
| Save as Draft | No (drafts don't post) |
| Edit a Draft | No |
| Post / Approve | Yes |
| Unpost (return to Draft) | Yes |
| Void | Yes |
| Reverse | Yes |
| View / Print PDF | No |
To unblock yourself, ask the Owner to Reopen the period, finish the change, then re-lock.
VAT returns interact with locks: finalising a VAT return effectively locks the period for that return; cleanly reopening requires un-finalising the return first.
Behaviour and rules
- Periods are independent of VAT returns; locking a period does not file a VAT return.
- The
period_locking_enabledflag is on by default; turning it off makes the lock buttons disappear but the periods still exist as a calendar. - A period that contains a posted invoice, bill, or journal cannot be deleted — archive (lock or close) instead.
- The first fiscal year is created automatically by the setup wizard using your country defaults.
- Manager role-permission set explicitly denies
periods.unlockandperiods.reopen. Owners and any user with thefinance.ownermiddleware-level role can unlock and reopen.
Permissions / restrictions
- View periods/years: any role.
- Generate periods:
periods.generate. - Lock period:
periods.lock. - Unlock / reopen:
periods.unlock,periods.reopen(Owner-only by default). - Close:
periods.close. - Lock / reopen / close at fiscal-year level: Owner-only.
- All of the above require
feature:period_locking_enabledto be on.
Lock vs Close vs Reopen — when to use which
| Action | Effect | Who can do it |
|---|---|---|
| Lock a period | Blocks new postings, unposting, reversing into that period. Drafts still editable. Reversible via Reopen | Owner |
| Close a period | A harder lock — typically used after a full period-end review. Rolls month-end totals into year-to-date | Owner / Accountant with periods.close |
| Reopen a period | Reverts a Closed or Locked period back to open, allowing posting | Owner only |
Common pattern: post all activity → run base-currency adjustment → finalize VAT return → Lock the month → leave Close for year-end.
Common mistakes
- "Posting is blocked but the period looks open." Check the fiscal year — locking the year locks every period inside it. Also check feature flag
period_locking_enabledis on. - Manager can't unlock. Unlocking and reopening are Owner-only by default. Grant a role override in Settings or escalate.
- VAT return blocked by closed period. Once a VAT return is finalized, postings into its period are blocked even if the period itself isn't formally locked. Edit the VAT return back to Draft (with permission) to unblock.
- "Reverse failed — original period is locked." Reverse posts a mirror journal on the reverse date, not the original date. Pick a reverse date in an open period.
Related
- Setup wizard — initial fiscal-year creation.
- Journal entries, Invoices, Bills, Payments, Expenses — every posting respects the period lock.
- Taxes and VAT — VAT-return interaction with locks.
- Base currency adjustments — run before locking month-end.
- Reports — most reports default to "Posted only" so locked-period numbers stay frozen.