এই ভলিউমে · ভলিউম 05
অ্যাকাউন্টিং
হিসাব তালিকা জার্নাল ও লেজার বিলিং ও ইনভয়েসিং পেমেন্ট ও রসিদ পেমেন্ট রিকনসিলিয়েশন মাল্টি-কারেন্সি ডেফার্ড রেভিনিউ কমিশন অ্যাকাউন্টিং কর (VAT/GST) পিরিয়ড ক্লোজ
বাংলা সারসংক্ষেপ

ওয়ার্কফ্লো: Open → SoftClosed → Closed → Locked। প্রি-ক্লোজ গেট: সব শর্ত পূরণ—বুকিং টার্মিনাল, রিকন সম্পন্ন, BSP ইম্পোর্টেড, রিকগনিশন রান, FX রিভ্যালুয়েশন, ECL আপডেট, TB ব্যালেন্সড। Maker-Checker: ইনিশিয়েটর ≠ অনুমোদনকারী।

Chapter 5.10 — Period Close

1. Purpose

Period close is the controlled transition of an accounting period (typically a calendar month) from Open to Closed (and, after audit sign-off, Locked). This chapter defines the close mechanics: state machine, required pre-close activities, reconciliation gates, the close run itself, post-close adjustments handling, and the audit-lock state. The discipline of period close is what turns an operational system into a financial system.

2. Why it matters in modern travel accounting

Without disciplined period close: - Bookings creep into wrong months (service-date drift, late entries) - Restated financials damage credibility with banks/investors - Audit fees inflate as accountants chase moving numbers - Comparative reporting (month-over-month, YoY) becomes meaningless - Tax filings risk amendment penalties

Travel-specific drivers: - BSP semi-monthly settlement crosses month boundaries - Service dates ≠ issuance dates by weeks or months - Refunds and ADMs land months after the original booking

3. Industry relevance

travoBooks' period-close model aligns with standard ERP practice (Oracle, SAP, NetSuite, QuickBooks) while accommodating travel-industry quirks: BSP cut-off, deferred revenue recognition, ADM provisioning, commission true-ups.

4. Compliance considerations

  • IFRS 15 — period-end revenue recognition run (Chapter 5.7) is mandatory at close.
  • IAS 21 — FX revaluation of monetary balances at period-end closing rate (Chapter 5.6).
  • IAS 1 — Presentation — comparable periods, consistent classification.
  • SOC 2 / ISO 27001 — change-control over close, segregation of duties (maker vs checker for close itself).
  • Tax filings — many jurisdictions require monthly VAT returns based on closed-period numbers.

5. Business logic

5.1 Period states

State Description Postings allowed? Who can change
Open Default operational state Yes — all roles per permission (already open)
SoftClosed Operational entries blocked; reconciliation in progress Only specific roles (accountant, controller) Accountant (partner)
Closed All entries locked; reports finalised No (override requires Reopen workflow) Controller (partner)
Locked Audit-frozen; no override possible No Platform admin only

5.2 Pre-close checklist (per partner per period)

Before initiating close, the platform validates a configurable checklist:

Check Default required
All bookings in period in terminal states (ISSUED / CANCELLED / etc.) — no DRAFT/HELD/PENDING Yes
All ticketing timelimits handled (no expired-without-action) Yes
Customer AR aging — review report generated Yes (sign-off)
Supplier AP aging — review report generated Yes (sign-off)
Bank reconciliation complete for all bank accounts Yes
BSP file imported for any BSP periods ending in this month Yes
Memos (ADMs/ACMs) imported and triaged Yes
Commission reconciliation run Yes
Revenue recognition run executed for period Yes
FX revaluation run for monetary balances Yes
Unresolved disputes < threshold Configurable
Trial balance balances Yes
Inter-branch / inter-company transactions cleared If applicable

Unsatisfied items block the soft-close transition (the gate).

5.3 Soft-close

Soft-close moves period to SoftClosed: - Bookings with transaction_date in period cannot be edited. - New JEs into the period require period_admin permission. - Operational entries (new bookings, payments) into the period are blocked; current-period operations continue.

This window allows the accountant to make month-end adjustments without operational noise. Typical duration: 3–10 business days.

5.4 Close

After all adjustments are in: 1. Final trial balance generated and saved as a financial record. 2. Final P&L, Balance Sheet, Cash Flow generated and snapshotted. 3. Period transitions to Closed. 4. All postings into the period now require a Reopen workflow. 5. Notifications to partner_admin + controller + audit role.

The close itself is maker-checker: one user initiates, another approves.

5.5 Post-close adjustments

If a discovery requires posting into a closed period: 1. Operator initiates Reopen Request with justification and impact summary. 2. Controller-level approval required. 3. Approval moves period back to SoftClosed. 4. Adjustment posted with is_post_close_adjustment = TRUE flag. 5. Period re-closed with new trial balance snapshot. 6. Audit trail captures the full reopen → adjust → re-close cycle.

Most platforms prefer to post the adjustment in the current period with appropriate disclosure rather than reopen — travoBooks supports both paths, with current-period preferred by default.

5.6 Lock

After external audit completes: - Auditor (or platform admin) marks period Locked. - No further changes possible by any role. - Any future correction must use a prior-period adjustment in a current open period, properly disclosed.

5.7 Year-end close

At fiscal year-end, additional steps: 1. Income statement accounts closed to retained earnings:

Debit  Revenue Accounts (4xxx) — total                  Σ
Credit COGS/Expense Accounts (5xxx/6xxx) — total        Σ
Credit/Debit Retained Earnings (3001)                   net income/loss
  1. New fiscal year periods initialised.
  2. Annual financial statements snapshotted.
  3. Audit pack generated.

The year-end close is a special close workflow with additional pre-checks (full-year recognition complete, year-end accruals booked, tax provisions estimated).

5.8 BSP-period vs accounting-period

BSP settles on semi-monthly periods that may not align with calendar months. The platform handles this by: - Recording every transaction with both accounting_period and bsp_period dimensions. - BSP files are imported into the bsp_period they belong to. - The Bank/BSP reconciliation matches by bsp_period. - The accounting close uses calendar month; BSP settlement may straddle.

If a BSP file for a period ending in the current accounting month has not yet arrived, the close can still proceed with estimated BSP-payable accrual (based on issued tickets), trued-up when the file arrives.

6. Inputs → processing → outputs

Initiate soft-close

Input: {partner_id, period_year, period_month}

Processing: 1. Permission check (period.close.partner). 2. Run pre-close checklist. 3. If gate failed → return list of unsatisfied items. 4. If gate passed → set period_state = SoftClosed, record initiator. 5. Notify accountants.

Output: Close-readiness report + state transition.

Final close

Input: {partner_id, period_year, period_month} from SoftClosed state.

Processing: 1. Permission check (period.close.approve.partner — must differ from initiator). 2. Trigger recognition run, FX revaluation, accrual run. 3. Generate trial balance. 4. Validate SUM(Debits) = SUM(Credits) exactly. 5. Generate P&L, BS, CF snapshots. 6. Set period_state = Closed. 7. Lock postings. 8. Notify stakeholders.

Output: Snapshot files (PDF + structured data) attached to period record.

7. Module dependencies

Direction Module
Depends on JE Engine, FX, Recognition, Reconciliation, Reporting
Depended on by Audit, Reporting, Tax Filings, External Reporting

8. Security & permissions

Permission Allows
period.read.partner View period state
period.close.partner Initiate close
period.close.approve.partner Approve close (different user)
period.reopen.partner Initiate reopen
period.reopen.approve.partner Approve reopen
period.lock.platform Lock period (audit)
period.post_locked.platform Override locked period — extreme rare

9. Validation rules

Code Condition
PERIOD_PRECLOSE_GATE_FAILED One or more pre-close items unsatisfied
PERIOD_TRIAL_BALANCE_UNBALANCED Final TB doesn't balance — critical
PERIOD_CLOSE_SAME_USER Maker = Checker
PERIOD_ALREADY_CLOSED Re-close attempt
PERIOD_LOCK_REQUIRES_AUDIT_SIGNOFF Lock without audit-role confirmation
PERIOD_REOPEN_LOCKED Cannot reopen a locked period
PERIOD_BSP_FILE_PENDING BSP file for period not imported (configurable: warn vs block)
PERIOD_FUTURE_CLOSE Attempt to close a period whose end date is in the future

10. Error handling

A failed final close (e.g., trial balance doesn't balance) leaves the period in SoftClosed; the system surfaces the unbalanced account(s) and refuses to proceed. This is the strongest invariant in the platform.

11. Real-world examples

A — Routine monthly close

May 2026 close timeline: - May 31 — operational month-end. - Jun 1–3 — accountants finalise bank recon, BSP recon, AR/AP review. - Jun 4 — recognition + FX revaluation runs. - Jun 5 — soft-close initiated by accountant. - Jun 5–7 — controller reviews snapshots, drills into anomalies. - Jun 8 — final close approved by controller; period closed. - Jul 15 — auditor reviews (quarterly cycle); locks Q1 (Mar 31) after sign-off.

B — Post-close discovery

Mid-Jun: accountant discovers a missed ADM acceptance from May, BDT 18,000. - Option A (preferred): post in June with disclosure "ADM related to May ticket issuance". - Option B: reopen May, post, re-close — requires controller approval and additional audit attention.

C — Year-end close

December 31 close adds: - Final-quarter accruals (bonus, annual override, tax provisions). - Closing entries to retained earnings. - Comparative-prior-year snapshot. - Year-end audit pack export.

12. Step-by-step workflow

sequenceDiagram autonumber actor A as Accountant (Maker) actor C as Controller (Checker) participant T as travoBooks participant DB as MySQL participant R as Reports A->>T: Initiate Soft-Close (May 2026) T->>T: Run pre-close checklist alt Gate fails T-->>A: List of unsatisfied items else Gate passes T->>DB: SET period_state = SoftClosed T-->>A: SoftClose confirmed end A->>T: Run Recognition + FX revaluation A->>T: Initiate Final Close T-->>A: Pending checker approval C->>T: Approve Final Close T->>R: Generate Trial Balance + P&L + BS + CF T->>T: Validate TB balanced alt Unbalanced T-->>C: Reject; show unbalanced accounts else Balanced T->>DB: SET period_state = Closed T->>R: Snapshot reports to period record T->>R: Notify stakeholders end

13. Database tables touched

Table Role
accounting_periods One row per period per partner
period_close_runs Audit of each close attempt
period_pre_close_checks Checklist state per period
period_snapshots Trial balance + P&L + BS + CF saved
period_reopens Reopen requests + approvals
journal_entries All postings reference period

14. Future scalability

  • Continuous close — automated reconciliation reduces formal close to confirmation only.
  • Auditor portal — auditors get scoped read-only access during their review.
  • Predictive close-readiness — ML flags likely close-blocking issues 5 days before month-end.
  • Period-close orchestration UI — Kanban-style board for the close runbook with task ownership.

15. Common pitfalls

  • ⚠️ Closing before recognition run. Revenue lands in the wrong period; restate.
  • ⚠️ Skipping the pre-close gate. Bookings in DRAFT in a closing month indicate either data loss or unfinished work; investigate.
  • ⚠️ Same-user close. Maker-checker is mandatory; bypassing destroys audit credibility.
  • ⚠️ Reopening when current-period adjustment would suffice. Reopen is a last resort.
  • 🔒 Lock requires audit attestation. Don't lock as a convenience — locked is forever (without platform admin override).
  • ⚠️ BSP semi-monthly period crossing month-end can produce timing differences between BSP-payable accrual and BSP-statement matching. Document this in period notes.