Skip to content

General Ledger (GL)


The General Ledger (GL) module is the financial backbone of the system. It maintains the chart of accounts, records all financial transactions through journal entries, enforces close-date controls, manages subledgers and cost centers, and provides budget tracking. Postings from other modules (Accounts Receivable, Accounts Payable, Jobs, etc.) flow into the GL through the approval workflow and are visible here in the Unapproved Postings screen.


  • Chart of Accounts — The complete list of ledger accounts that categorize every financial transaction. Each account has a type (Income or Balance Sheet), a natural balance (Debit or Credit), and belongs to a hierarchical category.

  • Journal Entry (Document Posting) — A balanced set of debit and credit lines recorded against ledger accounts on a specific date. Every financial event in the system — whether entered manually or generated by another module — becomes a journal entry in the GL.

  • Double-Entry Accounting — Every journal entry must have equal debits and credits. The system enforces this: attempting to post an unbalanced entry displays an error message. This ensures the accounting equation (Assets = Liabilities + Equity) always holds.

  • Subledger — A subsidiary ledger that groups related postings and controls its own open-date window. For example, the “Accounts Payable” subledger receives all AP-generated postings, and its date window can be closed independently of other subledgers.

  • Cost Center — An organizational unit (department, division, branch) assigned to ledger accounts. Cost centers enable departmental reporting — you can see how much each division spent on materials or earned in revenue without creating separate accounts for each.

  • Fiscal Period & Close Date — Each subledger has its own open-date window (Start/End Close Date) that controls which posting dates are accepted; closing a period adjusts a subledger’s window, locking those dates and preventing retroactive changes. GL Settings also exposes a Master Close Date field, but it is not consumed by the posting/close-date enforcement code.


Upstream — Every module posts to the GL:

  • Accounts Payable → vendor invoice postings debit the configured expense accounts and credit the AP Control account
  • Accounts Receivable → sales invoice postings debit the AR Control account and credit the configured revenue accounts
  • Inventory → receiving and adjustment postings move value between the configured Inventory, Inventory Suspense, and Inventory Variance accounts
  • Job Costing → job expense postings and job close distributions flow through configured GL accounts
  • Service → work order invoicing posts revenue and cost entries to the GL
  • Payroll → payroll runs post to the configured wage, employer tax, and liability accounts

Downstream — GL feeds financial outputs:

  • Financial Reports — Trial balance, income statement, and balance sheet are generated directly from GL balances
  • Budget vs. Actual — GL actuals are compared against budget amounts set in the Budgets screen
  • Bank Reconciliation — GL bank account transactions are matched against bank statement lines

Key Integration Point — Posting Configuration: The Posting Configuration screen maps each module’s transaction types to specific subledgers. This routing determines which subledger receives the posting and which date-window rules apply. For example, the AP module’s individual transaction types (Post Invoice, Pay Invoices, Issue Check, Void Check) and the Payroll run each map to whichever subledger an administrator assigns to that posting-configuration detail row. The destination subledger is configurable, not a fixed per-module name.


Navigation: General Ledger → GL Settings

This screen configures system-wide GL parameters. All changes save automatically when you leave a field.

These settings tell the system which top-level ledger category represents each financial statement section. They are used for financial reporting and period-end closing.

FieldDescription
Assets CategoryThe ledger category representing all asset accounts
Liabilities CategoryThe ledger category representing all liability accounts
Equity CategoryThe ledger category representing all equity accounts
Income CategoryThe ledger category representing all revenue accounts
Cost of Goods Sold CategoryThe ledger category representing COGS accounts
Expense CategoryThe ledger category representing all expense accounts

All six category fields are required to save GL Settings, and they drive the income-statement and retained-earnings computations. They are not separately re-validated by the GL close action, which only requires that all subledgers be closed.

FieldDescription
YTD Income AccountThe balance sheet account that holds year-to-date net income during the fiscal year
Retained Earnings AccountThe equity account that receives net income during the annual GL close
FieldOptionsDescription
Document Posting Close TypeApproval, PasswordThe actual routing is controlled per subledger’s Close Type field; new subledgers are created with Close Type Approval regardless of this setting. Approval routes postings through the Unapproved Postings screen. Password requires the posting user (who must be an authorized user of the subledger) to re-enter their own login password to post directly.
Master Close DateDate pickerA date field in GL Settings. Note: posting locks are enforced per subledger via each subledger’s open-date window (Start/End Close Date); this Master Close Date field is not consumed by the posting/close-date enforcement code.

The Reset Master Close Password button (shown in red) opens a dialog where an administrator can set a new master close password. Note: when a Password-type subledger’s date window is closed, posting directly requires the posting user’s own login password (and the user must be listed as an authorized user on that subledger) — the master close password stored here is not consumed by the journal-entry posting flow.


Navigation: General Ledger → Manage Ledger Accounts

This screen (page title Ledger Management) displays all ledger accounts in the chart of accounts and allows creating, editing, and navigating to account details.

ColumnDescription
Ledger IDThe account code (humanId)
DescriptionAccount name
CategoryHierarchical category path (e.g., Assets › Current Assets)
Cost CenterThe cost center assigned to this account
TypeIncome or Balance Sheet
  • Use the search field above the grid to filter by Ledger ID or Description in real time.
  • Click any row to navigate to the View Ledger Account detail screen.
  • Click the + icon in the column header to create a new ledger account (requires create permission).
  • Click the Edit icon on any row to edit that account (requires update permission).

The create/edit dialog contains the following fields:

FieldRequiredDescription
Ledger IDYesThe account code. Must be unique across all accounts.
DescriptionYesThe human-readable account name.
TypeYesIncome (profit/loss accounts) or Balance Sheet (asset/liability/equity accounts)
Natural BalanceYesDebit or Credit — the side of the ledger this account normally carries a balance on
CategoryYesSelect the hierarchical ledger category this account belongs to
Cost CenterConditionalRequired unless the account is flagged as a root account
Prevent Direct PostingNoIf checked, the UI prevents this account from being used directly in journal entries; it is reserved for system postings only

| Is Root Account | No | This field defaults to true for new accounts and is not exposed as a user-editable control. |


Navigation: General Ledger → Ledger Categories

Ledger categories organize accounts into a hierarchical tree (e.g., Assets → Current Assets → Cash). This structure drives financial statement formatting and the GL Settings category mappings.

The screen displays categories as a collapsible tree. Each row shows the category name. Expand a category to see its subcategories.

Actions per row:

ButtonDescription
+ (Add)Create a new subcategory under this category
EditRename this category
DeleteDelete this category (only available for subcategories that have a parent). All subcategories and accounts under the deleted category are moved to the parent.

Click the expand arrow on any category row to open its detail panel:

  • Ledger Account Selector — Autocomplete field to search for and assign an existing ledger account to this category.
  • Category Ledgers Grid — Lists all accounts currently in this category, showing Ledger ID and Name.
    • Move Up button — Moves the account to the parent category.

Navigation: General Ledger → Cost Centers

Cost centers represent divisions, departments, or other organizational units. Every ledger account is assigned to a cost center (unless it is a root account), enabling reporting broken down by department.

ColumnDescription
CodeThe short cost center code (humanId)
DescriptionThe full cost center name
ActionsEdit and Delete buttons
  • Click + in the header to create a new cost center (requires create permission).
  • Click Edit to modify a cost center’s code or description (requires update permission).
  • Click Delete to remove a cost center (requires delete permission).
FieldRequiredDescription
CodeYesShort identifier for the cost center. Must be unique.
DescriptionYesFull name or description

Navigation: General Ledger → Subledgers

Subledgers are subsidiary ledgers that group related postings (for example, Accounts Receivable, Accounts Payable, Payroll). Each subledger has its own close date range and authorized users, providing granular control over who can post to which subledger and for which periods.

ColumnDescription
NameSubledger name
Close TypeHow the subledger is closed (Approval or Password)
Start Open DateThe earliest date that can be posted to; editable inline
End Open DateThe latest date that can be posted to; editable inline
Authorized UsersUsers allowed to supply a password to post into a closed period for this subledger (the password-override path); multi-select chips
Is RealtimeIf checked, postings appear immediately without batching

Inline editing: Click on the Start or End date cells to open a date picker and change the date directly. Changes save on blur/accept. Similarly, click the Authorized Users field to add or remove users.

Advance Close Date button (Redo icon): Bumps both the Start and End close dates forward by one month in a single click. Useful during month-end when you are ready to open the next period.

More menu (⋮) per row:

  • Edit — Opens the full edit dialog
  • Delete — Deletes the subledger after confirmation
FieldRequiredDescription
NameYesSubledger name
Close TypeYesApproval or Password
Start Open DateYesEarliest postable date
End Open DateYesLatest postable date
Is RealtimeNoWhether postings are immediately visible

The Edit dialog only lets you change Name, Close Type, and Is Realtime. The Start/End Open Date fields are not in the edit dialog; change them inline in the subledger list grid.


Navigation: General Ledger → Journal Entries

This screen is used to manually post journal entries to the general ledger. Every entry must be in balance (total debits must equal total credits) before it can be posted.

FieldRequiredDescription
DateYesPosting date for the journal entry. Must be within an open period. Auto-focuses when the screen loads.
Reverse DateNoIf specified, the system automatically creates a reversing entry on this date. Disabled if Recurring is checked.
ReferenceYesA reference code or description (max 255 characters). You can also type or select a saved template name here — selecting a template loads its line items automatically.
DescriptionNoOptional free-text description of the entry (max 255 characters)

Check the Recurring checkbox to convert this entry into a recurring posting schedule.

FieldRequiredDescription
UntilNoDate when recurring entries should stop. If blank, the entry recurs indefinitely.
ScheduleNoMonthly or Weekly
IntervalNoFrequency multiplier (e.g., Interval = 2 with Monthly schedule = every 2 months)

The entry grid where you add debit and credit lines:

ColumnRequiredDescription
LedgerConditionalThe ledger account. Required if either Debit or Credit is non-zero.
DebitNoDebit amount. Entering a debit disables the credit field for that row.
CreditNoCredit amount. Entering a credit disables the debit field for that row.
ReferenceNoPer-line reference (max 255 characters)
DescriptionNoPer-line description (max 255 characters)
Delete (×)Removes that entry row
  • A new blank row is automatically added when you focus on the last row.
  • The footer shows the running totals for Debit and Credit columns.
  • Click Post to submit the entry. If the entry is out of balance or empty, an error message is displayed.

Attach supporting documents (e.g., invoices, receipts) to the journal entry. Visible only if you have the viewAttachments permission. Attachments are saved with the document when it is posted.

The Upload File button allows bulk-loading of entry lines from an Excel file. Its menu offers Download Template (to get the Excel template) and Upload Data (to import a filled-in file). Importing replaces the current entries grid with the imported rows.

Click Post to submit the journal entry. The system validates:

  1. Total debits must equal total credits (otherwise: “Document is out of balance”).
  2. At least one entry line must have a ledger account (otherwise: “Document is empty”).

On success, a notification appears: Document Posted # [number]. Click Acknowledge to dismiss it. The form resets for the next entry.


Navigation: General Ledger → Manage Document Templates

Document templates are pre-built journal entry patterns that can be loaded into the Journal Entries screen to save time on recurring manual postings.

ColumnDescription
ReferenceTemplate identifier (used as the reference when loading)
DescriptionOptional description of the template’s purpose
ActionsEdit and Delete buttons

Header fields:

FieldRequiredDescription
ReferenceYesUnique identifier for the template (max 255 characters)
DescriptionNoDescription of the template (max 255 characters)

Template line items grid:

ColumnRequiredDescription
Ledger AccountYesThe account for this line. Rows left without an account are dropped when the template is saved.
ReferenceNoPer-line reference text (max 255 characters)
DescriptionNoPer-line description (max 255 characters)
DebitNoDebit amount (mutually exclusive with Credit)
CreditNoCredit amount (mutually exclusive with Debit)
DeleteRemove this line
  • A new blank row is added automatically as you tab through the last row.
  • The Save button is disabled if the template is out of balance. Templates must be balanced (debits = credits) before they can be saved.

Navigation: General Ledger → Manage Recurring Entries

This screen manages the schedule of recurring journal entries. Recurring entry auto-posting is not currently operational.

ColumnDescription
ReferenceTemplate reference used for the recurring entry
DescriptionTemplate description
Start DateWhen the recurring schedule begins
Last Posted DateWhen the entry was most recently posted
UntilWhen the schedule ends (blank = indefinite)
ActionsEdit and Delete buttons
FieldRequiredDescription
TemplateYesSelect the document template to use for this recurring entry
ScheduleYesMonthly or Weekly
Start DateYesFirst date the entry should be posted
UntilNoLast date the entry should be posted
Posting IntervalYesFrequency multiplier (minimum 1). For example, Schedule = Monthly and Interval = 3 means once per quarter.

Navigation: General Ledger → Unapproved Postings

When a subledger’s Close Type is set to Approval, postings routed to that subledger from any module (AR, AP, Jobs, Payroll, etc.) that have not yet been approved appear here. An authorized approver reviews and approves or denies each posting before it is committed to the ledger.

Postings are organized into tabs by source module. Each tab label includes a badge showing the number of pending postings for that source (e.g., AR 3, AP 7). Click a tab to view postings from that source.

Each source tab displays a grid of pending postings. The columns vary by source but typically include fields such as:

  • Date, Reference, Description
  • Customer, Vendor, Job, or other entity links (clickable to open in a new tab)
  • Dollar amounts, quantities, percentages
  • User — the person who submitted the posting

Click the expand arrow on a row to see its detail entries (individual debit/credit lines) in a secondary grid below.

  1. Check the checkbox next to one or more postings to select them.
  2. Selections persist across tabs — you can select postings from multiple sources.
  3. Click Approve Selected to approve all selected postings. A confirmation dialog appears before the action is taken.
  4. Click Deny Selected to reject all selected postings. A confirmation dialog appears before the action is taken.
  5. Both buttons are disabled if no postings are selected.

Approved postings are committed to the general ledger. Denied postings are marked denied and drop out of the pending queue (the row is retained, not deleted). The originating module is not notified.


Navigation: General Ledger → Manage Ledger Accounts → (click a row)

This screen displays all details for a single ledger account along with its full transaction history.

FieldDescription
Ledger IDThe account code
DescriptionAccount name
CategoryHierarchical category path
Cost CenterAssociated cost center
TypeIncome or Balance Sheet
Direct Posting AllowedWhether manual journal entries can post to this account
Natural BalanceDebit or Credit

Below the header is the transaction history grid with date range filtering:

  • Start Date / End Date — Filter transactions to a specific date range.
  • Collapse by Subledger — Group transactions by subledger instead of showing individual lines.
  • For Balance Sheet accounts, a Balance Forward line appears at the top showing the net balance as of the start of the selected period.
ColumnDescription
DateTransaction date
ReferenceDocument reference
NameName associated with the transaction
DescriptionTransaction description
DebitDebit amount
CreditCredit amount
BalanceRunning cumulative balance
View DocumentIcon link to open the full source document

Expand a grouped row (when Collapse by Subledger is on) to see individual transactions within that subledger group.

Clicking the View Document (eye) icon on a transaction row opens the View Ledger Document dialog, which shows the complete source document behind that posting — its header and every general ledger line it generated.

The dialog header displays:

FieldDescription
DateThe document’s transaction date
Document NumberThe document number
ReferenceThe document reference. When the document is an AP payment, vendor invoice, or customer invoice, this is a link that opens that record in a new tab
NameThe associated customer or vendor. When present, this is a link that opens that record in a new tab
DescriptionThe document description

Below the header, the Details tab lists every GL line of the document, sorted by ledger account:

ColumnDescription
Ledger AccountThe account the line posted to. Click it to open that account’s View Ledger Account screen in a new tab
NameThe customer, vendor, employee, or job associated with the line (a link to that record’s view, when present)
ReferenceThe line reference (a link to the source AP payment or invoice, when applicable)
DescriptionThe line description
DebitThe debit amount
CreditThe credit amount

A second Attachments tab lets you view and manage files attached to the document. This tab only appears for users with the View Attachments permission.

Use Close to dismiss the dialog.

When Collapse by Subledger is on, each grouped subledger row can be expanded with the toggle arrow at the left of the row to reveal a child grid listing the individual transactions that make up that group. Rows that have no underlying transactions cannot be expanded.

The expanded detail grid shows the following columns:

ColumnDescription
DateTransaction date
ReferenceDocument reference for the individual posting
NameName associated with the transaction
SourceThe module or process that generated the posting (for example, the source recorded when the entry was posted, such as a posting-configuration source or “Document Posting”)
DescriptionTransaction description
DebitDebit amount
CreditCredit amount
View DocumentIcon link to open the full source document

The Source column makes it possible to see, line by line, which area of the system originated each posting within a collapsed subledger group.

The Actions dropdown in the top-right contains:

  • Edit Ledger Account — Opens the create/edit dialog to modify the account’s properties (requires update permission).

Navigation: General Ledger → Banks

Bank accounts define the institution and account details used for check printing (AP), ACH transfers, and bank reconciliation. Each bank is linked to a GL ledger account.

ColumnDescription
NameBank name
AddressStreet address
Address 2Suite/unit
CityCity
StateState or province
ZipPostal code
Check #Current check number sequence
(unlabeled)Edit and Delete icon buttons per row; the column header holds a Create (+) icon

Click the expand arrow on a bank row to see its full details:

Left panel: Full address including country.

Right panel:

FieldDescription
Account NumberBank account number
Routing NumberABA routing number
Fractional Routing NumberCheck fractional routing code
Check NumberCurrent check sequence number
Ledger AccountThe GL account this bank is tied to
ACH Bank IDACH bank identifier
ACH Company IDCompany ID used in ACH files
ACH Bank NameBank name as it appears in ACH files
ACH Origin PrefixSingle-character prefix for ACH origin
ACH EnabledWhether ACH transfers are active
ACH BalancedWhether ACH file should be balanced
Print ChecksWhether checks are printed for this bank
FieldRequiredDescription
NameYesBank institution name (max 255 characters)
AddressYesStreet address (via Google Places autocomplete)
Address 2NoSuite, floor, or unit (max 255 characters)
CityYesCity (max 255 characters)
StateConditionalRequired for US addresses; optional for international
ZIPYesPostal code (max 255 characters)
CountryYesDefaults to United States
Account NumberNoBank account number (max 25 characters)
Routing NumberNoABA routing number (max 15 characters)
Fractional Routing NumberNoCheck fractional code (max 15 characters)
Check NumberNoCurrent check number in sequence
Ledger AccountYesGL account linked to this bank
Default Fee AccountNoGL account for bank fees
ACH Company IDNoACH company identifier (max 15 characters)
ACH Company NameNoACH company name (max 23 characters)
ACH Bank NameNoBank name in ACH file (max 25 characters)
ACH Origin PrefixNoSingle-character ACH prefix (max 1 character)
ACH EnabledNoEnable ACH transfers
ACH BalancedNoCreate balanced ACH files
Print ChecksNoEnable check printing for this bank

Navigation: General Ledger → Budgets

Budgets allow you to set target amounts by ledger account and period for comparison against actual results.

ColumnDescription
NameBudget name
Start DateFirst period of the budget
End DateLast period of the budget
FinalizedWhether the budget has been locked
ClosedWhether the budget period has closed
ActionsEdit and Delete buttons

Click a budget row to open the Budget Amounts detail screen.

FieldRequiredDescription
NameYesBudget name (max 255 characters)
Start DateYesFirst date of the budget period
End DateYesLast date of the budget period

After creating a budget, click its row in the list to open the Budget Amounts screen. This screen has a dynamic column layout:

  • The first column is the Ledger Account (autocomplete, restricted to Income-type accounts).
  • The second column is labeled Distribute (internally the equal distribution amount) — enter an amount here to automatically split it evenly across all period columns.
  • Remaining columns are one per calendar month within the budget’s date range (e.g., “Jan”, “Feb”, “Mar”). Enter the target amount for each account in each period.

To add a row, click in the blank row at the bottom. To remove a row, click the Delete button on that row.

Click Save to persist all budget amounts. A Data Import button is available to load budget amounts from a CSV or Excel file.


Navigation: General Ledger → Ledger Closing

This screen shows the history of all GL close operations and allows initiating a new close.

ColumnDescription
Timestamp CreatedWhen the close was initiated
Last UpdatedWhen the close record was last updated
Close DateThe date through which the ledger was closed
UserThe user who performed the close

History is displayed in reverse chronological order (most recent first). This is a read-only log.

Click Close Ledger to open the Close General Ledger dialog.

FieldRequiredDescription
Close DateYesThe date through which you want to close. When the dialog opens, this field is pre-filled automatically with the earliest Start Close Date found across all subledgers. You can change it before closing, subject to the validation below.

The pre-filled Close Date is the earliest Start Close Date among all subledgers, so the default value reflects how far the most-behind subledger has been advanced.

To close the ledger:

  1. Navigate to General Ledger → Ledger Closing and click Close Ledger.
  2. Review the Close Date, which defaults to the earliest subledger Start Close Date. Adjust it if needed.
  3. If you see the error All subledgers must be closed to close general ledger, advance any subledger still open within the period (Subledgers → Advance Close Date), then reopen this dialog.
  4. Click Close Ledger to commit. A new record appears in the Ledger Closings list.

Navigation: General Ledger → Posting Configuration

Posting configuration defines how transaction types from other modules are routed to specific subledgers. This is typically set up during initial system configuration and rarely changed thereafter.

Each posting configuration row shows its Name. Expand a row to see its subledger mappings:

ColumnDescription
DescriptionThe posting configuration detail description
SubledgerThe subledger this configuration routes to (editable autocomplete, saves on blur)

The following modules generate GL postings that are routed through the Posting Configuration mappings:

Source ModuleTransaction TypesTypical GL Accounts
Accounts PayableVendor invoices, payments, prepayments, voidsAP Control, configured expense accounts, Cash
Accounts ReceivableSales invoices, cash receipts, deposits, adjustmentsAR Control, configured revenue accounts, Cash
InventoryReceiving, adjustments, counts, movement, cost updatesConfigured Inventory, Inventory Suspense, Inventory Variance accounts
Job CostingJob expenses, overhead, job close distributionsExpense accounts per job type, contract closing accounts
ServiceWork order invoicing, service contract billingsRevenue and cost accounts per service configuration
PayrollPayroll runs (earnings, deductions, employer contributions)Configured wage, employer tax, Cash, and liability accounts
Manual (GL)Journal entries, recurring entries, templatesAny ledger account (subject to direct-posting restrictions)

Each source module’s postings are routed to the subledger defined in its Posting Configuration row. The subledger’s date window and authorized users control when and by whom postings can be made.


Access to GL screens and functions is controlled by the following permissions:

PermissionActionsDescription
ledgerAccountcreate, read, update, deleteManage chart of accounts
ledgerCategorycreate, update, deleteManage category hierarchy
ledgerCostCentercreate, update, deleteManage cost centers
subledgercreate, update, deleteManage subledgers; also controls ability to authorize users
bankcreate, update, deleteManage bank accounts
budgetcreate, update, deleteManage budgets and budget amounts
ledgerDocumentTemplatecreate, update, deleteManage journal entry templates
recurringLedgerEntrycreate, update, deleteManage recurring entries
generalLedgerBalancesreadView running balances in the ledger account detail
unapprovedPostingsApprove or deny postings on the Unapproved Postings screen
viewAttachmentsMisc permission; enables the Attachments tab on Journal Entries

Example 1: Monthly Rent Accrual via Template

Section titled “Example 1: Monthly Rent Accrual via Template”

Scenario: Sarah (Controller) needs to record the $4,500 monthly office rent for Precision Mechanical. She creates a reusable template so the accrual posts automatically each month.

Step 1 — Create the template:

  1. Navigate to General Ledger → Manage Document Templates and click +.
  2. Set Reference = RENT-MONTHLY and Description = Monthly Office Rent Accrual.
  3. Add two lines:
    • Line 1: Ledger = 6100 Rent Expense, Debit = $4,500.00
    • Line 2: Ledger = 2200 Accrued Liabilities, Credit = $4,500.00
  4. Footer shows Debit Total = $4,500.00, Credit Total = $4,500.00 — balanced.
  5. Click Save.

Step 2 — Post using the template:

  1. Navigate to General Ledger → Journal Entries.
  2. Set Date = 01/31/2026, type RENT-MONTHLY in the Reference field — the two lines auto-populate.
  3. Click Post. Notification: Document Posted # 4821.

Step 3 — Convert to recurring:

  1. Navigate to General Ledger → Manage Recurring Entries and click +.
  2. Select Template = RENT-MONTHLY, Schedule = Monthly, Interval = 1, Start Date = 02/28/2026.
  3. Click Save. The recurring entry is saved for the configured schedule. Note: recurring entry auto-posting is not currently operational; entries must be posted manually.

Result:

AccountDebitCredit
6100 Rent Expense$4,500.00
2200 Accrued Liabilities$4,500.00

Example 2: Approving Cross-Module Postings

Section titled “Example 2: Approving Cross-Module Postings”

Scenario: Mike (GL Manager) logs in Monday morning and sees pending postings from AP, AR, and Payroll that need GL approval before they hit the books.

Step 1 — Review pending postings:

  1. Navigate to General Ledger → Unapproved Postings.
  2. The tabs show: AP 5, AR 4, Payroll 3 — 12 total pending postings.

Step 2 — Review AP postings:

  1. Click the AP tab. Five vendor invoice postings appear.
  2. Expand the first row (FastPipe Supply, $2,350.00) to verify the GL distribution:
    • Debit 5200 Materials Expense $2,350.00
    • Credit 2000 AP Control $2,350.00
  3. Check all five AP postings.

Step 3 — Review AR postings:

  1. Click the AR tab. Four cash receipt postings appear.
  2. Expand the first row (Greenfield Construction, $17,000.00):
    • Debit 1010 Cash $17,000.00
    • Credit 1200 AR Control $17,000.00
  3. Check all four AR postings.

Step 4 — Review Payroll postings:

  1. Click the Payroll tab. Three entries from last Friday’s payroll run.
  2. Expand the first (Wages posting):
    • Debit 6010 Wages Expense $24,500.00
    • Credit 1010 Cash $19,200.00
    • Credit 2100 Federal Tax Payable $5,300.00
  3. Check all three Payroll postings.

Step 5 — Approve all:

  1. All 12 postings selected across three tabs.
  2. Click Approve Selected. A confirmation dialog appears titled Approve Postings asking “Are you sure you want to approve these ledger postings?” (no posting count is shown). Confirm to proceed.
  3. All 12 entries are committed to the general ledger.

Scenario: Sarah (Controller) is closing the books for January 2026. All AP, AR, and Payroll activity has been posted and approved.

Step 1 — Verify subledger dates:

  1. Navigate to General Ledger → Subledgers.
  2. Confirm all subledgers have Start Open Date = 02/01/2026 or later:
    • Accounts Payable: Start = 02/01/2026, End = 02/28/2026 ✓
    • Accounts Receivable: Start = 02/01/2026, End = 02/28/2026 ✓
    • Payroll: Start = 02/01/2026, End = 02/28/2026 ✓
  3. For any subledger still showing January dates, click the Advance Close Date button (Redo icon) to bump forward one month.

Step 2 — Clear unapproved postings:

  1. Navigate to General Ledger → Unapproved Postings.
  2. Verify all tabs show 0 pending items. If any remain, approve or deny them.

Step 3 — Close the ledger:

  1. Navigate to General Ledger → Ledger Closing and click Close Ledger.
  2. Enter Close Date = 01/31/2026.
  3. Click Close. The system:
    • Updates the retained earnings balance based on January net income
    • Creates a ledger closing record with timestamp and Sarah’s username

Step 4 — Verify:

  1. Navigate to General Ledger → Ledger Closing.
  2. Confirm a closing record exists for 01/31/2026 with Sarah’s username.

Rules are grouped by category. Each rule has an ID for cross-referencing.

  • BR-GL-C1: Double-Entry Balance — Journal entry cannot post unless total debits = total credits.
  • BR-GL-C2: Close Date Window — Posting dates are validated against each affected subledger’s open-date window (Start/End Close Date). The Master Close Date field in GL Settings is not enforced by the posting engine.
  • BR-GL-C3: Prevent Direct Posting — Accounts flagged “Prevent Direct Posting” are hidden from the account lists on the Document Templates, Post Invoice, Issue Check, Post Sale, Post Cash Receipt, and Sales Orders screens. However, the Journal Entries (Document Posting) autocomplete lists all accounts regardless of this flag, and neither backend rejects a manual posting to a flagged account, so the flag does not currently block direct posting on the Journal Entries screen.
  • BR-GL-C4: Category Mapping Required — All six GL category mappings (Assets, Liabilities, Equity, Income, Cost of Goods Sold, Expense) are required fields in GL Settings and must be configured to save settings and for the income-statement and retained-earnings computations to be correct. They are not separately re-validated by the GL close action, which only checks that all subledgers are closed.
  • BR-GL-A1: Template Auto-Load — Typing a template reference in the Journal Entry Reference field auto-populates saved line items.
  • BR-GL-A2: Recurring Entry Auto-Post — Recurring entry auto-posting is not currently operational.
  • BR-GL-A3: Reversing Entry — If a Reverse Date is set, the system auto-creates a mirror-image reversal entry on that date.
  • BR-GL-A4: Retained Earnings Update — GL close updates the retained earnings balance based on net income for the closed period. This is a balance update, not a GL journal entry.
  • BR-GL-W1: Subledger Date Windows — Each subledger has its own date window controlling when postings can be made.
  • BR-GL-W2: Approval Workflow — When a subledger’s close type is set to “Approval,” postings routed to that subledger enter the Unapproved Postings queue for manual approval before committing to the ledger.
  • BR-GL-X1: Universal Posting Destination — AP, AR, Inventory, Job Costing, Service, and Payroll all post journal entries to GL.
  • BR-GL-X2: Posting Configuration Routing — Each module’s transaction types are routed to specific subledgers via Posting Configuration mappings.

Q: My journal entry won’t post — I get an error when clicking Post. The entry is out of balance. Check the footer totals: Debit Total must exactly equal Credit Total (BR-GL-C1). Add or adjust lines until both sides match.

Q: I get “posting date is in a closed period” when saving an entry. The posting date falls outside the affected subledger’s open-date window — before its Start Close Date or after its End Close Date (BR-GL-C2). Check that subledger’s date window on the Subledgers (Subledger Management) screen — review its Start Close Date and End Close Date — then use a posting date inside that window.

Q: An account I need doesn’t appear in the Ledger Account autocomplete. The Journal Entries (Document Posting) screen lists all ledger accounts in the Ledger Account autocomplete, regardless of the Prevent Direct Posting flag, so that flag is not the cause here. Prevent Direct Posting accounts are hidden from the account lists on the Document Templates, Post Invoice, Issue Check, Post Sale, Post Cash Receipt, and Sales Orders screens — but not from the Journal Entries (Document Posting) autocomplete. If an account is missing from the Journal Entries autocomplete, the likely cause is something else — for example the account does not exist yet, or the account list had not finished loading when you opened the screen.

Q: I want to close the GL but subledger date windows are still open. As a best practice, advance subledger date windows past the close date before closing the GL. Navigate to Subledgers, find any subledger still showing dates within the period you’re closing, and click Advance Close Date to bump it forward.

Q: A user can’t post to a specific subledger. While the subledger period is open, any user can post; the Authorized Users field does not restrict normal posting. That list only governs who may enter a password to post into a closed period (the password-override path). If a user needs that override ability, add them to Authorized Users on the subledger record — the change takes effect immediately.

Q: Unapproved postings are blocking my month-end close. Navigate to Unapproved Postings and review each tab (AP, AR, Payroll). Approve or deny all pending items before attempting the GL close to ensure all transactions are reflected in the closed period.

Q: My recurring entry didn’t auto-post. Recurring entry auto-posting is not currently operational. Recurring entries must be posted manually.

Q: I need to correct an entry in a closed period. You cannot post directly to a closed period. Instead, create a reversing entry and a correcting entry in the current open period. Use a Reverse Date on the original entry template to auto-generate the reversal.


  1. Ensure all AP and AR transactions for the period have been posted and approved.
  2. Navigate to Subledgers and verify the End Open Date for each subledger has passed (or advance it with the Advance Close Date button).
  3. If using the Approval close type, go to Unapproved Postings and approve or deny all pending items.
  4. Navigate to Ledger Closings and click Close Ledger. Enter the close date (last day of the period).
  5. Confirm that a closing record appears in the Ledger Closings list.
  1. Create a Document Template for the accrual (e.g., “Monthly Rent Accrual”) with the debit to the expense account and credit to the accrued liability account.
  2. On the Journal Entries screen, type the template reference in the Reference field to load it.
  3. Alternatively, set up a Recurring Entry that references the template. Note: recurring entry auto-posting is not currently operational.

The system will not post a journal entry unless debits exactly equal credits. Watch the footer totals in the entry grid as you work. If the entry is out of balance, the system shows a “Document is out of balance” error when you click Post.

The Authorized Users field on the Subledger record does not control normal posting — while the period is open, any user can post. It controls who may supply a password to post into a closed period (the password-override path). To grant a user that override ability, add them to the list; changes take effect immediately.

Set up a budget in Budgets that covers your fiscal year. Enter monthly targets per ledger account. The system compares these targets against actual postings for management reporting. Use the Distribute column to spread an annual target evenly across all months with a single entry.

If an account has Prevent Direct Posting checked, it is omitted from the account lists on the Document Templates, Post Invoice, Issue Check, Post Sale, Post Cash Receipt, and Sales Orders screens. It is not removed from the Ledger Account autocomplete on the Journal Entries (Document Posting) screen, which lists all accounts, and neither backend rejects a posting to a flagged account. As a result this flag does not currently prevent control accounts (such as the AR or AP control account) from being adjusted through a manual journal entry — treat that as a known gap rather than a guarantee.