Period locks
A period lock closes a date window so that no new donations, edits, or voids can touch dates inside it. Locks are how you freeze a month or a fiscal year after you’ve produced statements for it.
Who can lock and unlock
- Tenant Admin can lock their own centre’s periods.
- Platform Admin can unlock a previously-locked period with a required reason.
- Both actions require step-up MFA.
Why you want to do this
Once the month is closed and statements have gone out, you do not want an
accountant accidentally back-dating a transaction into it. A period lock
makes that impossible at the service layer — the create / edit / void
paths refuse with a clear error message (Period
YYYY-MM-DD..YYYY-MM-DD is locked).
Creating a lock
Pick start / end datesinclusive
→
Reasonoptional
→
Step-upMFA code
→
Active lockaudit-logged
- Go to
Period locksin the sidebar. - Click
+ New lock. - Pick the start date (first day of period) and end date (last day).
- Enter an optional reason (e.g. “March 2026 close”).
- Step-up with your MFA code and confirm.
Guards
- Future-dated locks are rejected. You can only lock past windows, never prevent future entries.
- Overlapping locks are rejected. If you already have an active lock covering 1–31 March, trying to lock 15 March – 15 April fails.
- Both guards surface as
PeriodLockErrorwith a clear message.
Unlocking
Unlocking is an NGO-Super-Admin-only action that requires a reason (no blank unlocks allowed). The workflow:
- Open the lock entry (it shows as “Active” in the list).
- Click
Unlock. - Enter the reason (“Auditor requested a correction in April”).
- Step-up with your MFA code.
- The lock is now Unlocked. The original lock row is preserved and both transitions are hashed into the audit chain.
Unlocking does not delete the lock row. It sets the unlock
timestamp and reason, and a new lock over the same window can be created
once your corrections are done.
Impact on transactions
With an active lock covering 1–31 March, the following rules apply:
- Creating a new donation / expense with
txn_dateinside the window is blocked. - Editing an existing donation / expense whose date falls inside the window is blocked.
- Voiding a transaction inside the window is blocked.
- Running reports over the window works exactly as before; period locks are about mutations, not reads.
Year-end close recipe
- Produce the I&E, R&P, and donor statements for the closing FY.
- Cross-check totals against your bank reconciliations.
- Lock the full FY (e.g. 1 April 2025 – 31 March 2026).
- Build an audit bundle for the FY and hand it to your auditor.