xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField SalesCRMRewardsClaimsInventoryProcurementWarehouse 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
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/Entity Reference/Journal — entity reference
REFERENCE · Last reviewed

Journal — entity reference

The single posting vehicle of the ledger: every value movement in the platform — document posting, manual entry, opening balance, depreciation, payroll, allocation, reversal and period close — is a journal, and its posted lines ARE the general ledger. Posting runs through one pipeline that validates the entry is balanced, resolves an Open fiscal period from the journal date, stamps the totals and the Posted status, and updates the GL and party balance caches in the same unit of work. Posted and Reversed journals are immutable and cannot be edited or deleted; corrections are made by posting a reversal that points back through ReversalOfJournalId. Journals raised by a source document also carry SourceEntityName, SourceRecordId and PostingPurpose so the document's accounting can be found and reversed independently.

Fields

FieldLabelTypeRequiredWhat it does
BranchIdBranchLookup → BranchYesHeader-level branch that seeds each line's branch when the line leaves it empty; the line's own branch, once resolved, is what the balance cache is keyed on. Branch is also the hub from which business unit and GST registration are derived during posting.
BusinessUnitIdBusiness UnitLookup → BusinessUnitHeader-level business unit used as the first fallback for lines that do not carry their own. When the resolved lines end up spanning more than one business unit, posting adds due-to/due-from clearing lines so each unit balances independently — but only if the company has an inter-business-unit control account configured.
CreatedByIdCreated ByLookup → UserAccountYes
CreatedDateTimeCreated DateDateAndTimeYes
FiscalPeriodIdFiscal PeriodLookup → FiscalPeriodYesResolved by the posting engine from the journal date, not chosen by the user — posting looks up the Open period covering that date for the company and fails if there is none. Every balance-cache row the journal maintains is keyed on this period.
IdIdGuidYes
JournalDateDocument DateDateThe accounting date of the entry, defaulting to today when a journal is created. It determines which fiscal period posting resolves and it is mirrored down onto every line, so it — not the created timestamp — is what date-driven ledger reports filter on.
JournalTypeNameJournal Type NameTextClassifies where the entry came from — DocumentPosting, Manual, OpeningBalance, Reversal, Closing, Depreciation, Payroll or Allocation — and defaults to Manual when not supplied. A journal of type Reversal cannot itself be reversed. Note that recurring-journal runs are materialised as Manual, not as a distinct type; they are identified by their source document instead.
LabelLabelText
ModifiedByIdModified ByLookup → UserAccountYes
NameNameText, uniqueYes
NarrationNarrationText
OwnerIdOwnerLookup → UserAccountYes
PartnerAccountIdPartner AccountLookup → AccountYesThe company (legal entity) the journal belongs to, following the finance convention that a partner account is the owning company — it is not the customer or supplier. Fiscal-period resolution, inter-business-unit clearing-account lookup and the balance rows the journal writes are all scoped by it; the customer or supplier lives on the line's party account instead.
PostedByIdPosted ByLookup → UserAccount
PostedDateTimePosted Date TimeDateSet by the posting engine to the moment of posting in UTC. It is the posting timestamp, not the accounting date — use the journal date for anything period- or statement-related.
PostingPurposePosting PurposeTextDistinguishes the several journals a single source document can produce — an invoice raises a main journal plus separate ones for cost of goods sold and for tax collected at source, for example — so each can be found and reversed independently. Values come from the document posting purposes (Invoice, InvoiceCOGS, InvoiceTcs, Bill, BilledInventory, CreditNote, DebitNote, SaleDebitNote, PaymentTaken, PaymentGiven, GoodsReceipt, DeliveryOrder, Return, BillReturn, ChequeClearing, InterestCharge) and it is meaningful only on document postings.
RecordTypeIdRecord TypeGuid, hidden
ReversalOfJournalIdReversal Of JournalLookup → JournalPresent only on reversal journals, pointing back at the journal being corrected; the original is simultaneously flipped to Reversed. This is the audit trail for every correction, since nothing in the ledger is ever edited or deleted.
SourceEntityNameSource Entity NameTextNames the entity of the document that produced this journal, held as plain text with deliberately no foreign key so that any entity can post. Together with the source record id and the posting purpose it is the lookup key used to find an existing posted journal for a document and reverse it on edit, un-approval or delete.
SourceRecordIdSource RecordLookup → @sourceEntityName
StatusStatusTextTakes one of Draft, PendingApproval, Posted or Reversed. Only Draft and PendingApproval can be posted; Posted and Reversed make the whole journal and its lines immutable and undeletable outside the posting service, and Reversed means a swapped-sides reversal journal has already been posted against it.
TotalCreditTotal CreditCalculated (calculated)Stamped by the posting engine as the sum of the line credits, rounded to two decimals, and always equal to the debit total — an entry whose sides differ is rejected before it can post. Note that inter-business-unit clearing lines added during posting are included, though they net to zero.
TotalDebitTotal DebitCalculated (calculated)Stamped by the posting engine as the sum of the line debits, rounded to two decimals, and is always exactly equal to the credit total because posting refuses an unbalanced entry. It is a posting artefact rather than something to fill in by hand.
UIPropsUI PropsText
UpdatedDateTimeModified DateDateAndTimeYes

Actions

ActionLabelTypeWhat it does
BulkDeleteDeleteDeleteDelete the selected records.
CloneCloneServerAction (Clone)Create a copy of this record
DeleteDeleteDeleteOnly works while the journal is Draft or PendingApproval. A Posted or Reversed journal cannot be deleted — the ledger is append-only — and the attempt is rejected with a prompt to reverse it instead.
DeleteInListDeleteDeleteDelete in a list page
EditEditEditOnly meaningful while the journal is Draft or PendingApproval. Once the status is Posted or Reversed the record is immutable outside the posting service, and a status change is refused with a prompt to use the reversal action.
EditInLineEditEditInlineEdit
EditListRowEditEditEditListRow
NewNewNewNew
PostJournalPostServerAction (PostJournal)Validates and commits the journal to the ledger in one atomic unit of work: it requires at least two lines, exactly one of Debit or Credit per line with no negative amounts, equal debit and credit totals, a GL account on every line, no inactive accounts, and a party on every control-account line. It then defaults each line's dimensions, adds inter-business-unit clearing lines when the entry spans more than one business unit and a clearing account is configured, resolves an Open fiscal period from the journal date, stamps the totals, Posted status, timestamp and posting user, and updates the GL and party balance caches. Only Draft or PendingApproval journals are accepted, and after this the journal is immutable.
ReverseJournalReverseServerAction (ReverseJournal)Creates a brand-new journal with every debit and credit swapped, posts it immediately, and marks the original Reversed — it does not delete or edit anything. The reversal is dated today unless a reversal date is passed, so it lands in an Open period even when the original period has been closed, and it copies the original's source document, posting purpose and dimensions. Only a Posted journal can be reversed, and a reversal journal cannot itself be reversed.

Validations

ValidationApplies toError messageNotes
Fiscal PeriodFiscalPeriodId, ErrorFiscal Period cannot be null!Fiscal Period cannot be null!
Journal Date ValidationJournalDate, ErrorDocument Date cannot be future date.Document Date cannot be future date.

Lookup filters

FilterLookup fieldNotes
Branch For Partner AccountBranchId
Fiscal Period ActiveFiscalPeriodId
Partner Account FilterPartnerAccountId