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
  1. Go to Period locks in the sidebar.
  2. Click + New lock.
  3. Pick the start date (first day of period) and end date (last day).
  4. Enter an optional reason (e.g. “March 2026 close”).
  5. 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 PeriodLockError with a clear message.

Unlocking

Unlocking is an NGO-Super-Admin-only action that requires a reason (no blank unlocks allowed). The workflow:

  1. Open the lock entry (it shows as “Active” in the list).
  2. Click Unlock.
  3. Enter the reason (“Auditor requested a correction in April”).
  4. Step-up with your MFA code.
  5. 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_date inside 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

  1. Produce the I&E, R&P, and donor statements for the closing FY.
  2. Cross-check totals against your bank reconciliations.
  3. Lock the full FY (e.g. 1 April 2025 – 31 March 2026).
  4. Build an audit bundle for the FY and hand it to your auditor.