xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField Sales & SFACRMRewardsClaimsInventoryProcurementWarehouse ManagementField ServiceServiceSupportTelephony & MessagingFinance & AccountingPayrollExpense ManagementCommercePortalsAnalytics & ReportingData StudioMobile AppSee all products →
PLATFORM
Platform overviewApp BuilderAutomationIntegrationsSecurity & GovernanceChange ManagementDevelopers
SENSE AI
Sense AI overviewSense AssistSense ControlSense VisionAI StudioTrust & governanceIn Claude & ChatGPTUse cases
SOLUTIONS
Auto DMSConsumer Goods DMSSales Force Automation (SFA) FMCG & DistributionManufacturing & Dealer NetworksAutomotive & DealershipsPharma & HealthcareConsumer DurablesAgri-InputsBuilding MaterialsService NetworksWarehousing & 3PLFinancial AccountingERP SoftwareIndia GST ComplianceUAE VAT & e-InvoicingSaudi ZATCA & VATAll solutions →
RESOURCES
Knowledge CenterDeveloper & CLIBlogGuidesWhat is xMatix?Company facts
COMPANY
AboutCareersPartnersEventsContactAuthorsLegal
Sign in Request demo
Home/Docs/Finance & Accounting/Published statements
HOW-TO · Last reviewed

Published statements

A published statement is a permanent copy of a financial statement: xMatix computes the statement from the ledger once, stores the result on the record with a content hash, and locks the record so it can no longer be edited or deleted. Every statement screen in Finance is live and moves whenever the ledger moves (see Financial statements). A published statement is the figure that holds still: the one you filed, signed or sent to a lender. Publishing usually happens at year end, after the books are closed (see Fiscal periods and period close). The AOC-4 and DPT-3 filing copies depend on it, because they can only be filed once the year's statements are published.

Overview

Each Published Statement record names one statement type, one company and one fiscal year, plus an optional scope: a branch, a business unit, a consolidation group or a GST registration. Until you publish, the record is a draft that you can change or delete freely. When you click Publish, xMatix:

  1. computes the statement named in Statement Type Name for that company, fiscal year and scope, straight from the posted ledger;
  2. stores the computed result in Statement Json;
  3. stores a SHA-256 hash of that result in Content Hash, so any later change to the stored copy can be detected;
  4. sets Status to Published and stamps Published Date Time.

From then on the stored figures never change. A later backdated posting, a reversal or a change to an account's Schedule III classification moves the live statement screens but not the published copy.

When to use it

  • At year end, to keep the audited Balance Sheet and Profit and Loss exactly as signed.
  • Before filing the AOC-4 pack or the DPT-3 return: both refuse to file until the year's statements are published.
  • To keep the ADT-1 notice of appointment of auditor, together with the answers typed into it, as filed.
  • To keep a statement for one division, branch or GST registration, or for a group of business units, as you sent it to a lender or a board.

Do not use it as a working report. To see current figures, open the live statement screen. To get a statement by email every month, subscribe to the statement instead (see Financial statements).

How xMatix handles it

What each statement type computes. Statement Type Name is a text box, and xMatix accepts only the following codes, typed exactly as shown (capitals included, no spaces):

CodeWhat is frozenScope fields used
BalanceSheetThe Balance Sheet for the fiscal yearBranch, Business Unit, Consolation Group, GST Registration
ProfitAndLossThe Profit and Loss for the fiscal yearBranch, Business Unit, Consolation Group, GST Registration
TrialBalanceThe Trial Balance for the fiscal yearBranch, Business Unit, Consolation Group, GST Registration
RiskReportThe risk report for the company's latest fiscal year (see below)Branch, Business Unit, Consolation Group, GST Registration
Aoc4FilingThe AOC-4 pack: Balance Sheet, Profit and Loss and Notes to AccountsNone: always the whole company
Dpt3ReturnThe DPT-3 return of depositsNone: always the whole company
Adt1AuditorAppointmentThe ADT-1 notice of appointment of auditor, with the answers typed for itNone: always the whole company

Anything else is refused when you publish, including Balance Sheet written with a space and balancesheet in lower case. This check is deliberate: a published statement cannot be deleted, so xMatix would rather refuse than store the wrong statement under your label.

The period covered. The Balance Sheet, Profit and Loss and Trial Balance cover the whole fiscal year named on the record. The record also has an As Of Period field that cuts the statement off at an earlier period. No seeded form shows it, so unless an administrator adds it to the form, every publish covers the full year.

The Risk Report ignores the record's fiscal year. A RiskReport is always built for the company's latest fiscal year, meaning the one with the latest start date. That can be a year you have only just created. To freeze the risk report for a closed year, publish it before you create the next year.

Statutory filing copies.

  • AOC-4 (Aoc4Filing) is refused until a Balance Sheet and a Profit and Loss for the same company and fiscal year are both Published. When it publishes, the pack is recomputed from the ledger at that moment; it does not copy the figures from the two published statements. Publish the AOC-4 copy straight after the statements so that nothing posts in between.
  • DPT-3 (Dpt3Return) is refused until a Balance Sheet for the same company and fiscal year is Published, because item 9 of the return reports net worth as per the latest audited balance sheet.
  • ADT-1 (Adt1AuditorAppointment) needs nothing else to be published first. It freezes the notice built from the company master, the fiscal year and the answers typed for that company and fiscal year, and it keeps those answers inside the published copy. Later changes to the answers do not alter it.

The AOC-4 Filing, DPT-3 Return of Deposits and ADT-1 Notice of Appointment of Auditor screens in the Financials app show the same packs live, for review, and save nothing. The DPT-3 and ADT-1 screens work at any time. The AOC-4 screen packages the finalised statements, so it shows the same "must both be Published" message until the year's Balance Sheet and Profit and Loss are published. The published record is the permanent copy.

The lock. Once Status is Published:

  • any save that changes the record is refused with A published statement is immutable; it can only be superseded. The one change allowed is setting Status to Superseded;
  • deleting it is refused with A published statement cannot be deleted.;
  • clicking Publish again is refused with the same "immutable" message, because publishing rewrites the stored statement.

A Superseded record is no longer locked: it can be edited and deleted like a draft. It also stops counting as published, so the AOC-4 and DPT-3 checks ignore it.

Prerequisites

  • The company's fiscal year exists and the year's postings are complete (see Fiscal years and periods).
  • Every GL account carries the right Schedule III Classification, because the Balance Sheet and Profit and Loss place accounts by it (see GL accounts).
  • To publish for a group of business units, the consolidation group exists and has members (see Business units).
  • For ADT-1, the answers for the notice are entered for the company and fiscal year.
  • Published Statement is in an app you can open, and your security profile lets you create Published Statement records and run Publish (see Permissions).

Procedure

Step 1 — Open the Published Statement list

No seeded app has a menu entry for Published Statement. Once an administrator has added it to your finance app (see Configuration), open that app and choose Published Statement. The All Published Statement view lists every record.

Step 2 — Create the draft record

  1. Click New.
  2. Fill in the form:
    • Name — a unique name, such as FY 2026-27 Balance Sheet (audited). It is required, and no two Published Statement records can share a name.
    • Partner Account — the company whose books you are publishing. Required to publish.
    • Fiscal Year — the year to publish. Required to publish.
    • Statement Type Name — one of the codes in the table above, for example BalanceSheet.
    • Branch, Business Unit and, under Additional Information, Consolation Group and GST Registration — leave all four empty for the whole company. Fill in one of them to narrow the statement. They are ignored for Aoc4Filing, Dpt3Return and Adt1AuditorAppointment.
    • Leave Published By and Published Date Time empty. The form shows them, but they are not inputs.
  3. Click Save. The record opens. Its header shows Partner Account, Business Unit and Branch, and its Publish, Edit and Delete buttons.

Nothing has been computed yet: Statement Json and Content Hash are empty.

Step 3 — Check the draft

While the record is a draft you can still correct it. Click Edit to change any field from Step 2, or Delete to discard it. Compare the scope with the live statement screen you intend to freeze: open the same statement for the same company and year, with the same branch, business unit or GSTIN, and check the totals there. The published copy is computed the same way, from the same ledger.

Step 4 — Publish

  1. Click Publish in the record header.
  2. Confirm with Yes in the Are you sure? dialog.

xMatix computes the statement, and the record shows:

  • Status: Published;
  • Published Date Time: the moment it was frozen;
  • Statement Json: the computed statement, as text;
  • Content Hash: a 64-character hash of that text.

If Status is still not Published after the action, check that Partner Account and Fiscal Year are both filled in (see Common problems).

Step 5 — Publish the statutory filing copies

For a company that files AOC-4 and DPT-3:

  1. Publish a BalanceSheet and a ProfitAndLoss for the company and year, with no scope fields (Steps 2 to 4).
  2. Create and publish an Aoc4Filing record for the same company and year.
  3. Create and publish a Dpt3Return record for the same company and year.
  4. To file ADT-1, enter the notice's answers, then create and publish an Adt1AuditorAppointment record for the same company and year.

Step 6 — Replace a published statement

A published statement cannot be corrected. If the books change after publishing (for example, an audit adjustment), retire the old copy and publish a new one:

  1. Open the published record. On the record page, click the Status value, change it to Superseded and save. Change nothing else in the same save.
  2. Create a new record with the same company, fiscal year, statement type and scope (Step 2), and publish it (Step 4).

Keep the superseded record as your history of what was filed before. Deleting it is possible but loses that history.

Step 7 — Read or hand over a published statement

The figures are on the record in Statement Json, as structured text, not as a formatted statement. No screen renders a published copy as a statement. To hand over a readable copy, export the live statement screen to PDF straight after publishing, and keep it with the record's Content Hash. To prove later that the stored copy is unchanged, compute a SHA-256 hash of the Statement Json text and compare it with Content Hash.

Fields

The create form shows the first group of fields. The record page groups the rest under Reference Details and Publish Details.

FieldWhat it meansNotes
NameThe record's nameRequired. Typed by you; no automatic numbering. Must be unique across all Published Statement records.
Partner AccountThe company whose ledger is publishedRequired to publish. Hidden on tenants that run a single company.
BranchNarrows the statement to one branchOptional. Not used by AOC-4, DPT-3 or ADT-1. Hidden on tenants with a single location.
Business UnitNarrows the statement to one business unitOptional. Not used by AOC-4, DPT-3 or ADT-1.
Consolation GroupComputes the statement across the member business units of a consolidation groupOptional ("Consolation" is the label on screen). The group must have members, or publishing fails. Not used by AOC-4, DPT-3 or ADT-1.
GST RegistrationNarrows the statement to one GST registrationOptional. Not used by AOC-4, DPT-3 or ADT-1.
Fiscal YearThe year the statement coversRequired to publish. Ignored by RiskReport, which always uses the company's latest year.
Statement Type NameWhich statement to computeFree text. One of BalanceSheet, ProfitAndLoss, TrialBalance, RiskReport, Aoc4Filing, Dpt3Return, Adt1AuditorAppointment, exactly as written.
StatusDraft, Published or SupersededSet to Published by Publish. A published record can only be moved to Superseded.
Published Date TimeWhen the statement was frozenSet by Publish.
Published ByMeant to record who publishedNot filled in by Publish; it stays empty.
Statement JsonThe frozen statementSet by Publish. Structured text, never recalculated.
Content HashSHA-256 hash of Statement JsonSet by Publish. 64 hexadecimal characters.
LabelA second display nameOptional. Not on the seeded forms.
As Of PeriodCuts the statement off at an earlier period of the yearOptional. Not on the seeded forms; empty means the whole year.

Business rules

  • Publish requires a company and a fiscal year. Without both, Publish does nothing and the record stays a draft.
  • Only the seven statement codes publish. Any other value, or an empty one, is refused with a message that lists the supported codes.
  • AOC-4 gate. An Aoc4Filing publish is refused until a Published BalanceSheet and a Published ProfitAndLoss exist for the same company and fiscal year. Any scope counts, but use whole-company statements.
  • DPT-3 gate. A Dpt3Return publish is refused until a Published BalanceSheet exists for the same company and fiscal year.
  • Published records are locked. No edit except Status to Superseded; no delete; no second publish.
  • Superseded is not published. A superseded record no longer satisfies the AOC-4 or DPT-3 gate, and it can be edited or deleted.
  • Hand-entered values do not count. Typing Published into Status skips the computation, leaves Statement Json empty and locks an empty record. Always use Publish.
  • Nothing else changes. Publishing posts nothing, closes no period and changes no live statement.

Example

A finance lead at Lakeview Components Pvt Ltd closes FY 2026-27 and the auditors sign the accounts.

  1. They create FY 2026-27 Balance Sheet (audited): Partner Account Lakeview Components Pvt Ltd, Fiscal Year FY 2026-27, Statement Type Name BalanceSheet, no scope. They save and click Publish. Status becomes Published, and Content Hash shows a 64-character value.
  2. They do the same for FY 2026-27 Profit and Loss (audited) with ProfitAndLoss.
  3. They create FY 2026-27 AOC-4 with Aoc4Filing and publish it. It succeeds because both statements are published. They then publish FY 2026-27 DPT-3 with Dpt3Return.
  4. The bank wants the Profit and Loss of the Projects division alone. They create FY 2026-27 P&L – Projects with ProfitAndLoss and Business Unit Projects, and publish it.
  5. In June an audit adjustment is posted into FY 2026-27. On FY 2026-27 Balance Sheet (audited) they change Status to Superseded, then create and publish FY 2026-27 Balance Sheet (revised). Both records stay in the list: one superseded, one published.

Training

Practice exercise

In a sandbox company with a fiscal year that has postings:

  1. Create a Published Statement with Statement Type Name Balance Sheet (with a space) and click Publish. Expected result: the publish is refused with a message listing the supported codes, and Status does not become Published.
  2. Correct the type to BalanceSheet and publish. Expected result: Status Published, Published Date Time filled in, Content Hash 64 characters long.
  3. Click Edit, change the Name and save. Expected result: A published statement is immutable; it can only be superseded.
  4. Try to delete the record. Expected result: A published statement cannot be deleted.
  5. Create an Aoc4Filing record for the same company and year and publish it. Expected result: refused, because the Profit and Loss is not yet published. Publish a ProfitAndLoss, then publish the AOC-4 record again. It succeeds.

Quick reference

  • Live statement screens move with the ledger; a published statement never does.
  • Required to publish: Partner Account and Fiscal Year.
  • Statement codes: BalanceSheet, ProfitAndLoss, TrialBalance, RiskReport, Aoc4Filing, Dpt3Return, Adt1AuditorAppointment.
  • Leave the scope fields empty for the whole company; fill in at most one of them.
  • AOC-4 needs both the Balance Sheet and the Profit and Loss published; DPT-3 needs the Balance Sheet.
  • Published means locked: no edit, no delete, no re-publish.
  • To correct: set Status to Superseded, then publish a new record.
  • Never type Published into Status by hand; always click Publish.

Permissions

  • See, create, edit and delete drafts. These follow the security profile's access to the Published Statement entity (see Security profiles). The seeded System Administrator, Standard User, Sales Manager and Sales Executive profiles have full access. A user without read access does not see the list.
  • Publish is a server action, granted per profile on the profile's Actions tab. Of the seeded profiles, System Administrator and Standard User have it. Without the grant, the user cannot run Publish.
  • Supersede is an ordinary edit of Status, so anyone who can edit Published Statement records can supersede a published one. To keep that to a few people, remove edit access from the other profiles.
  • The lock applies to everyone, administrators included.

Configuration

  • Add Published Statement to an app. No seeded app lists it. Under Setup → Design Studio → Apps, open the app your finance team uses and add Published Statement with Manage Items (see Create an entity). Add Consolidation Group at the same time if you publish for groups.
  • Show As Of Period. To publish a statement cut off before year end, add the As Of Period field to the Published Statement create form (see Design a form layout).
  • Offer a list of statement types. Statement Type Name is free text on the seeded form. To prevent typing mistakes, an administrator can make the form offer only the seven codes.
  • Grant Publish on the Actions tab of each profile that should publish, and remove edit access where only a few people should be able to supersede.
  • Schedule III classification on GL accounts decides where every account appears in the Balance Sheet and Profit and Loss you publish (see GL accounts).
  • Consolidation groups decide which business units a group-scoped statement covers (see Business units).

Common problems

I clicked Publish and nothing happened

Partner Account or Fiscal Year is empty. Without both, the action skips the computation and the record stays a draft. Click Edit, fill in both, save and publish again.

"'…' is not a statement type that can be published. Supported: …"

Statement Type Name is not one of the seven codes. Copy the code exactly from the message, for example ProfitAndLoss, not Profit and Loss. Edit the draft and publish again.

"The fiscal year's Balance Sheet and Profit and Loss must both be Published before generating AOC-4."

One of the two statements is missing, is still a draft, or has been superseded, or it was published for a different company or fiscal year. Publish the missing statement for the same company and year, then publish the AOC-4 record.

"The fiscal year's Balance Sheet must be Published before filing the DPT-3 return …"

Publish a BalanceSheet for the same company and fiscal year first, then publish the DPT-3 record.

"A published statement is immutable; it can only be superseded."

The record is published, and the save tried to change it, or Publish was clicked a second time. Use Step 6 to supersede it and publish a new record.

"A published statement cannot be deleted."

Published records are permanent. Supersede it instead (Step 6). A superseded record can be deleted, but keeping it preserves the history.

"Consolidation group has no business units."

The group in Consolation Group has no members with a business unit. Add the units on the group's Members tab, or clear the field, then publish again.

"Name '…' already exists"

Another Published Statement record has the same name. Names are unique across all companies and years, so include the year and the type in the name.

Common questions

Does a published statement update when I post an adjustment?

No. That is its purpose. The stored figures are the ones computed at the moment you clicked Publish, and later postings, reversals and account reclassifications do not change them. The live statement screens do move. If the published figures must reflect the adjustment, supersede the record and publish a new one for the same company, year, type and scope. Comparing the old and new Statement Json shows exactly what changed.

Can I see the published statement as a formatted report?

Not from the record. The record keeps the statement as structured text in Statement Json, with Content Hash as its seal, and no screen draws it as a formatted statement. For a readable copy, open the same live statement with the same scope straight after publishing and export it to PDF. File the PDF with the record's name and hash. To check later that the stored copy is unchanged, hash the Statement Json text with SHA-256 and compare.

Why can't I publish the Cash Flow or Fund Flow statement?

Publishing supports only the Balance Sheet, Profit and Loss, Trial Balance, the risk report, and the AOC-4, DPT-3 and ADT-1 packs. Cash Flow, Fund Flow, Changes in Equity, the ratio screens and the ageing statements are live-only. To keep a fixed copy of one of those, export it to PDF from its statement screen, or subscribe to receive it by email at each period end.

Who published this statement?

The record does not say. Publish leaves the Published By field empty and records only when the statement was frozen, in Published Date Time. If your process needs a named approver, record it yourself: include the approver's role in the record's Name, or keep the sign-off with the PDF you file alongside the record. You can also limit the Publish grant to the few profiles that sign off accounts, so that the list of people who could have published is short and known.

Do I need to publish statements for every branch?

No. Publish for the whole company unless someone needs a fixed copy of a narrower slice. The AOC-4, DPT-3 and ADT-1 copies are always for the whole company, whatever the scope fields say. Their gates accept any published Balance Sheet or Profit and Loss for the company and year, but a whole-company statement is the one that matches the filing.