Posting, period close, and audit trail

This page describes how Quoining models the general ledger so that CPAs, auditors, and controllers know exactly what to expect when they open the books. It is written for accounting professionals; no prior Quoining experience required.

Quoining is accounting software, not a CPA firm.

Output reports are management reports unless a licensed CPA issues a compilation, review, or audit report covering them. Customers remain responsible for the accuracy of their books and for any filings with the IRS, state agencies, or regulators.

Posting model

  • Every source transaction (bill, invoice, payment, journal entry, bank-feed match, FX revaluation, etc.) writes one posted journal entry with balanced debit/credit lines. Posting is atomic: a transaction either posts in full or not at all.
  • Each line carries entity, account, department/class/custom-field tags, currency, FX rate, and document links so the entry is self-explanatory years later.
  • Posted entries are never mutated in place. Any change to an already-posted entry is implemented as a reversal plus a new entry, both of which remain on the ledger.
  • The underlying audit_log table is append-only and protected by database triggers that block UPDATE and DELETE. Admins cannot bypass these triggers from the application layer.

Period close and lock

  • Periods move through Open › In Close › Closed › Locked. A closed period blocks new postings with an effective date inside the period. A locked period additionally blocks admins from re-opening without an explicit reversal reason.
  • Re-opening a closed period is an audited action. Every re-open writes an entry to audit_log with the actor, reason, and timestamp.
  • Any journal entry posted into a previously-closed period is flagged on the trial balance and on the period-close checklist as “Posted after close” so auditors see them without hunting.
  • Prior-period adjustments use reversing entries with descriptive memos (e.g. “Out-of-period correction — restated FY2025 opening balances”) rather than silent edits.

Audit trail

  • Every create/update/delete on ledger-relevant entities (accounts, journal entries, bills, invoices, payments, bank matches, period status) is recorded to audit_log with the actor’s user id, IP, user agent, and a diff of before/after values.
  • Impersonation sessions (Quoining support acting on behalf of a customer) are tagged with a impersonator_id so auditors can distinguish customer actions from support actions.
  • The audit log is retained for the lifetime of the company account and is exportable on request. Customers can also pull their own audit trail via the API or a CSV download in settings.

Auditor package

When your external auditor starts field work, open Reports and hand them: (1) the trial balance as of period end, (2) the GL detail export for the fiscal year, (3) subledger exports for AP, AR, fixed assets, inventory, and payroll, and (4) the audit-log CSV filtered to the period under audit. We are working on a one-click bundled “auditor package” ZIP; until then the individual exports are all available today and share the same as-of snapshot semantics.

Multi-currency and FX

Quoining implements ASC 830. Functional currency is set per entity. Non-functional balances are remeasured at period end using the spot rate; the offset posts to the cumulative translation adjustment (CTA) account on the balance sheet. Realized FX gains and losses on settlement post to a dedicated P&L account. The method and source of rates are visible on every statement.

Consolidation

Consolidated financial statements are produced at the top-of-tree entity. Intercompany eliminations run against a dedicated “Intercompany” account class; the eliminations journal is visible and re-runnable. Non-controlling interests (NCI) are computed per subsidiary ownership percentage and disclosed on the consolidated balance sheet and income statement.

Questions

For auditor or controller-level questions before you sign up: support@quoining.com. Existing customers can open a support ticket from within the app.