Fiscal calendar and accounting periods
The fiscal calendar defines when the school can post and govern accounting activity. Makronexus treats the fiscal year and its generated accounting periods as controlled backend records, not as free-form dates entered independently on each transaction.
Audience: accountants, bursars, implementers, period-control owners, and auditors
Learning time: 35 minutes
Navigation: Finance → Accounting → Cash & Banking → Cashbook → Fiscal Calendar (finance/cashbook)
Configuration boundary: academic years and terms organise school activity; fiscal years and accounting periods govern Finance posting. They may align, but they are different records.
Learning outcomes
You will be able to:
- distinguish academic dates from fiscal dates;
- create a fiscal year and generate its periods;
- explain draft and active fiscal-year status;
- explain open, soft-closed, and hard-closed period states;
- identify the exact abilities used to view, create, activate, close, and reopen;
- verify that the current posting date is covered by an eligible period;
- recognise when a reopen is a governance action rather than routine editing.
Date layers
| Date layer | Primary owner | Finance effect |
|---|---|---|
| Academic year | School Setup / academics | scopes fees, students, awards, and billing context |
| Academic term | School Setup / academics | scopes term billing and due dates |
| Fiscal year | Finance | groups governed accounting periods |
| Accounting period | Finance | controls whether a posting date is open or closed |
| Transaction date | operational user | economic or business date |
| Posting date | accounting runtime | date used for ledger inclusion |
| Settlement date | bank/provider | external movement date |
| Effective date | configuration/control owner | determines when rules, rates, matrices, and mappings apply |
Do not repair a Finance period problem by changing an academic year, and do not repair an academic term problem by reopening an accounting period.
Fiscal-year lifecycle
The current UI presents a fiscal year as draft until its periods are generated and an authorised user activates it. A draft fiscal year is not available for posting.
A fiscal year records information such as:
| Field | Meaning | Control |
|---|---|---|
| Fiscal year name/code | human and stable identity | use a naming convention |
| Start/end dates | inclusive calendar boundary | must not create ambiguous coverage |
| Period frequency | how periods are generated | approve before generation |
| Currency | calendar’s configured currency context | confirm against school design |
| Opening balance | starting control amount shown on the fiscal year | reconcile or document zero |
| Status | draft or active | activation is controlled |
| Generation status/count | whether expected periods exist | review before activation |
Period states
| State | Meaning | Typical operating rule |
|---|---|---|
open | postings may be accepted subject to other controls | normal current-period operation |
soft_closed | period is closed for routine work but can follow controlled correction policy | review unresolved activity before hard close |
hard_closed | period is locked as completed accounting evidence | reopen only through explicit governance |
The exact close prerequisites are configuration-dependent. Posting policy can require zero exceptions, reconciliation, and GL/cashbook parity. Never claim a close is safe merely because the button is enabled.
Sequential governance
The current fiscal-calendar experience warns when a previous period is not hard closed. Period governance is designed as a sequence, not as independent calendar tiles.
When an earlier period remains open or soft closed, investigate before moving the close sequence forward.
Prerequisites
| Requirement | Why it matters |
|---|---|
| Correct school selected | fiscal calendars are school-scoped |
| Approved fiscal design | dates and frequency affect all accounting periods |
| Primary currency decision | fiscal-year currency must be intentional |
| Opening-balance decision | migration amount or documented zero must exist |
| Period-control owner | activation/close/reopen need ownership |
| Required books and Chart of Accounts | period readiness depends on accounting structure |
| Posting policy | close gates and correction rules depend on it |
| Separate reviewer | reopening and close evidence should not rely on one actor |
Roles and exact permissions
| Action | Exact ability |
|---|---|
| View governed fiscal calendars | cashbook_period:read |
| Create fiscal years | cashbook_period:create |
| Activate fiscal years | finance_control:manage_policy |
| Close periods | cashbook:close_period |
| Reopen periods | cashbook:reopen_period |
| View readiness | financial_process_setup:readiness or finance_control:readiness depending on workspace |
| Resolve posting exceptions | finance_posting_exception:resolve |
Activation is treated as a policy-level control in the current UI. Close and reopen use separate cashbook abilities.
Guided procedure
1. Confirm the date design
Record:
- fiscal-year start and end;
- period frequency;
- first operational posting date;
- opening-balance source;
- school currency context;
- academic-year and term relationship.
Control: the fiscal calendar should represent the approved accounting design, not a convenient date range chosen during data entry.
2. Open the Fiscal Calendar
Navigate to Finance → Accounting → Cash & Banking → Cashbook, then open the fiscal-calendar/periods view.
Expected result: the school selector is visible and the page lists fiscal years for that school.
3. Create the fiscal year
Choose New Fiscal Year if you have cashbook_period:create. Enter the approved identity, dates, frequency, currency, and opening balance.
Expected result: a draft fiscal year appears.
System effect: no posting is enabled yet.
4. Generate periods
Select the draft fiscal year and choose Generate Periods. Provide the required reason.
Expected result: expected accounting periods are generated and ready for review.
Control: inspect every start and end date before activation.
5. Review generated periods
Verify:
- no date gap;
- no date overlap;
- correct period order;
- correct opening period;
- correct year-end boundary;
- correct period names/codes;
- expected count.
6. Activate the fiscal year
An authorised policy manager activates the reviewed fiscal year with a reason.
Expected result: status becomes active and posting becomes available subject to the selected period and other controls.
7. Verify an open period
Identify the period covering the planned posting date. Confirm open state.
8. Close or reopen only through control evidence
Before close, inspect the policy and readiness evidence. Capture reason, actor, timestamp, balances, exceptions, reconciliation status, and approval request where applicable.
Reopen is not “edit the status.” It is an exceptional governed action. Record why the original close no longer supports required correction work.
Worked scenario: Mupfure Learning Academy
Mupfure Learning Academy uses a January–December fiscal year with monthly periods and USD as the configured calendar currency for the test school. Term 1 spans January–April, but the first four accounting periods remain separate monthly records.
The implementer creates FY2027, generates 12 periods, reviews boundaries, activates the year, and confirms January is open. The school does not create one period per academic term because the approved accounting design is monthly.
At month-end, the accountant requests a soft close only after resolving critical posting exceptions. The reviewer confirms reconciliation evidence. A later correction requires a governed reopen with a reason and independent review.
Failure modes
| Symptom | Likely cause | Evidence to inspect | Safe action | Escalate when |
|---|---|---|---|---|
| Posting date is rejected | fiscal year draft or period not open | fiscal-year status, period state, posting date | activate/open the correct period through governance | eligible active/open period still rejects |
| Generated periods are wrong | incorrect start/end/frequency design | fiscal-year fields and generated boundaries | do not activate; correct design in test scope | generation contradicts approved inputs |
| Activate button missing | missing finance_control:manage_policy | permission list | request authorised activation | user has ability but backend returns 403 |
| Close is blocked | exceptions, reconciliation, parity, approval, or previous-period rule | close policy, readiness, approval request | resolve the named blocker | blocker is inconsistent with backend evidence |
| Reopen is blocked | missing permission, policy, approval, or immutable close state | cashbook:reopen_period, close evidence | use governed correction process | required correction cannot be represented |
| Financial statements omit activity | posting date outside report range or period configuration | journal dates, statement filters, period boundaries | reconcile date semantics | posted entries remain absent with matching filters |
Verification checklist
- Fiscal year scope matches the selected school.
- Dates and frequency match the approved design.
- Currency and opening balance are documented.
- Generated periods have no gaps or overlaps.
- Expected period count is complete.
- Fiscal year is active.
- Planned posting date falls inside an open period.
- Close policy is documented.
- Close/reopen abilities are separated.
- Reasons and actor evidence are retained.
- Statement date filters have been tested against sample journals.
Practice and knowledge check
Guided practice: design and generate a 12-period fiscal year in a test school, then verify every boundary.
Independent scenario: the academic term ends on 30 April, but the fiscal month ends on 31 March and 30 April. Explain why two date systems can both be correct.
- Why is a fiscal year not the same as an academic year?
- What makes a draft fiscal year unavailable for posting?
- What must be reviewed before activation?
- What is the difference between soft close and hard close?
- Why should periods be governed sequentially?
- Which ability activates the fiscal year in the current UI?
- Why is reopen an exceptional control action?
Answer guide: the records have different purposes; periods must be generated and the year activated; boundaries/count/currency/opening balance require review; soft and hard close have different control strength; prior periods affect sequence; activation uses finance_control:manage_policy; reopen changes completed evidence and requires reason/authority.
Next lesson
Continue to Currencies and exchange-rate governance.