Skip to content

Financial Statements & GL Reports

The VMX Ledger produces a full set of financial statements directly from your books: P&L, P&L Detail, Balance Sheet, Cash Flows, Trial Balance, Journal, and Audit Log. All of them live in the Ledger's slide-out menu: open Admin → Ledger, click the arrow handle on the left edge of the page, and pick a report under Reports.

All Ledger reports are on the accrual basis (the report footer shows "Accrual basis" and the generation time), amounts link to the underlying account registers and transactions so you can drill from a statement line to the exact entries behind it, and every report is print-formatted — use your browser's print function for a paper copy.

The Ledger is enabled per-client by VMX; if there is no Ledger tab in your Admin, contact help@vmxllc.com. Users also need the GL admin permission (Admin → Permissions).

On several reports you may see extra dropdowns — Customer..., Class..., Department..., or a Consolidate stores checkbox — depending on how VMX configured your Ledger. If your store doesn't use those features the controls simply don't appear.

Profit & Loss (P&L)

Admin → Ledger → Reports → P&L shows income and expenses for a date range, grouped into sections by account type: Income, Cost of Goods Sold, GROSS PROFIT, Expenses, NET OPERATING INCOME, Other Income, Other Expenses, NET OTHER INCOME, and NET INCOME.

  1. Set the date range (defaults to the first day of the current month through today) and click Run.
  2. Choose Sort: By Balance or Sort: By Account # to order the accounts within each section.
  3. Check Include $0 accounts to also list chart-of-accounts entries with no activity in the period.
  4. Click any account's amount to open its register and see the transactions behind the number.

P&L Detail (its own entry in the Reports menu) is the same statement expanded to transaction level — under each account it lists every entry with Date, Transaction Type, Num, Name, Memo, Split, Amount, and a running Balance. Click a Num or Memo to open the transaction.

Month-by-month columns

The Group By... dropdown breaks the P&L into columns:

  • Group By:Month — one column per calendar month in your date range, plus a TOTAL column. Set the range to a full year and you get the twelve-column P&L that shows a seasonal business its shape: which months carry the year and which ones cost money. Each month's figure links to that account's register for just that month. Ranges longer than three years fall back to a single TOTAL column.
  • Group By:Class / Group By:Department — one column per class or department, plus TOTAL. These only appear if VMX configured your Ledger with classes or departments.

Every row adds across to its own TOTAL, so you can check a month column against the year without leaving the page.

Compare P&L periods (Prior Period, Prior Year, Custom Range)

On Admin → Ledger → Reports → P&L, use the Compare to... dropdown to put a second period next to the current one:

  • Prior Period — the equal-length period immediately before your date range
  • Prior Year — the same date range one year earlier
  • Custom Range — any range; fill in the Start and End boxes that appear
  • Budget — your plan for the matching months, once you've built one (see Budgets); appears only when a budget exists. Budget comparisons colour the variance by whether you're ahead of or behind plan (green/amber) and shade the ones worth attention — see What the colours mean. Period comparisons don't colour that way, because whether last year's number being higher is good or bad isn't something the report can know.

Check $ Change and/or % Change to add difference columns, then click Run. The comparison period is shown under the report title ("vs. ...") and every section total — including GROSS PROFIT and NET INCOME — gets comparison figures.

Balance Sheet

Admin → Ledger → Reports → Balance Sheet shows your financial position — ASSETS on top, then LIABILITIES AND EQUITY — as of a single date.

  1. Enter the "as of" date (defaults to today) and click Run.
  2. Check Include $0 accounts to also list accounts with no balance.
  3. Click any account's balance to open its register.

Within Equity, the report splits earnings by fiscal year: Retained Earnings (Prior Years) holds net income from completed fiscal years, and Net Income (This Year) is the net income of the current fiscal year to date (it links to the P&L for that period). Your fiscal year start is configured by VMX — if your reporting year doesn't start January 1 and the split looks wrong, contact help@vmxllc.com.

To compare against another date, use the Compare to... dropdown — Prior Year, Prior Month End, Prior Fiscal Year End, or Custom Date (fill in the As of box that appears) — and optionally check $ Change / % Change for difference columns.

Statement of Cash Flows

Admin → Ledger → Reports → Cash Flows builds a STATEMENT OF CASH FLOWS for a date range using the Indirect Method: it starts from Net Income and adjusts for changes in non-cash asset and liability accounts.

  1. Set the date range and click Run.

The statement shows:

  • Cash Flows from Operating Activities — Net Income (linked to the P&L for the same range), then Adjustments to reconcile Net Income to Net Cash provided by Operations broken into Changes in Assets and Changes in Liabilities, ending in Total Adjustments and Net Cash Provided by Operating Activities
  • Cash Flows from Financing Activities — changes in equity accounts (capital contributions, owner distributions) and Net Cash Provided by Financing Activities
  • Cash at Beginning of Period, Net Cash Increase for Period, and Cash at End of Period

A Notes section at the bottom lists exactly which accounts are treated as cash in this report (that flag is part of your account-type setup), and notes that investing activities are not yet broken out as their own section — changes in non-current assets are currently included under operating activities.

If the calculated cash change doesn't match the actual change in your cash accounts, a Variance: box appears stating the two figures and the difference; this typically indicates investing activity (equipment purchases, notes receivable) that the report doesn't yet break out separately. Contact help@vmxllc.com if you see a variance you can't explain.

Trial Balance

Admin → Ledger → Reports → Trial Balance lists every account with its START balance (before the period), the period's CREDIT and DEBIT totals, the net change (+/-), and the END balance. It's the fastest way to confirm the books balance and to spot an account that moved unexpectedly.

  1. Set the date range (defaults to the first day of the current month through today) and click Run.
  2. Use the inactive-accounts dropdown to control which accounts are listed: Hide inactive accounts, Show accounts with prior balance (the default), or Show all accounts.
  3. Click any figure to open that account's register for the matching date range.

The TOTALS row at the bottom compares total credits to total debits. When they match you'll see ✓ Balanced in green. If they don't, the report shows a red out-of-balance warning:

⚠️ Trial balance is out of balance by $[amount]. Credits exceed debits.

(or "Debits exceed credits."). An out-of-balance trial balance means a posting error — contact help@vmxllc.com so VMX can help track it down.

Journal

Admin → Ledger → Reports → Journal is the classic general journal: every transaction in the date range, listed line by line with its debits and credits, grouped by transaction.

  1. Set the date range and click Run.
  2. Optionally filter with the Vendor... dropdown, or narrow by account type with the second dropdown: All accounts, Payments (Bank + CC), Bank only, Credit Card only, or Accounts Payable. Active filters are echoed under the report title.

Columns are Date, Type (JE, BILL, CHECK, PAYMENT, EXPENSE, DEPOSIT), Num, Name, Memo, Status (Cleared/Reconciled labels on bank lines), Account, Debit, and Credit. Multi-line transactions get a bold subtotal row, and a TOTAL row at the bottom sums all debits and credits for the range. Click a Num or Memo to open the transaction.

A/P Aging — what you owe, and how late it is

Admin → Ledger → Bills & Vendors → A/P Aging buckets your unpaid vendor bills by how overdue they are: Current (not yet due), 1–30, 31–60, 61–90, Over 90, and No due date.

  1. Set the As of date (defaults to today) and click Go.
  2. Click Detail view to expand each vendor into its individual open bills — with Ref No., Due date, and Days late — then Summary view to collapse again.
  3. Click a vendor name to open Pay Bills for that vendor; click a Ref No. to open the bill.

The report is a point in time, not a running total. Set As of to a past date and it shows what was outstanding then — payments made after that date are excluded, and a note on the page reminds you the figures won't match the always-current Vendor Balances screen.

Bills with No due date get their own column rather than being silently treated as current, so they stay visible instead of hiding in the aging. If that column has real money in it, open those bills and set due dates — or assign the vendor a payment term (Admin → Ledger → Setup → Payment Terms) so future bills get a due date automatically.

The grand TOTAL should equal both the Vendor Balances total and the Accounts Payable balance on your Balance Sheet for the same date. If those three disagree, contact help@vmxllc.com.

Export any report to a spreadsheet

Every Ledger report has an Export CSV button next to Run. Click it and the report downloads as a .csv file that opens in Excel, Numbers, or Google Sheets.

The export always matches what's on screen:

  • Your current filters apply. The export uses the values in the boxes at that moment — you don't have to click Run first.
  • Every column comes along, including comparison, month, class and department columns.
  • Amounts are plain numbers — no dollar signs, no thousands separators — so you can sum, sort and pivot them immediately.
  • The account tree is preserved as indentation in the Account column, the same way it reads on screen.

Files are named for the client, report and period — for example hgs-pnl-2025-01-01-to-2025-12-31.csv — so repeated downloads don't pile up as "pnl (3).csv".

This is the fastest way to hand your accountant a year of numbers, or to build a spreadsheet that VMX doesn't produce for you.

GL Audit Log — who changed what

Admin → Ledger → Reports → Audit Log records every create, update, and delete of a Ledger transaction — who did it, when, and exactly what changed (old value → new value, line by line). Use it to answer "who changed this entry?" or to reconstruct a deleted transaction.

  1. Set the date range (defaults to the first day of the current month through today).
  2. Optionally filter by Employee..., Action... (Create, Update, Delete), Type... (Journal Entry, Bill, Check, Payment, Expense, Deposit), Account..., or a specific Trans #.
  3. Click Run. A Clear button appears when filters are active. If nothing matches you'll see "No audit log entries found for the selected filters."

The log shows up to 500 entries (newest first) with ID, Timestamp, Action, Type, Trans #, Details, and User. The Details column spells out each change: header fields ("Date: set to...", old value struck through with an arrow to the new value), lines added/deleted/modified with their accounts and amounts, and reconciliations ("[N] line(s) reconciled"). Routine no-change saves and simple line reorders are hidden to keep the log readable.

Every transaction page also carries its own History section with the same events for just that transaction — and if a transaction has been deleted, opening its old link still shows the full history under a "Transaction Deleted" notice, so nothing disappears without a trace.

Vendor Balances is the same screen

Hide aging on A/P Aging turns off the overdue columns and leaves one Total per vendor. That view is what used to be a separate Vendor Balances page — the old link still works and lands you here.

They were merged because they answered the same question two different ways, and only one of them was right about the past: Vendor Balances could only ever show today, because it read a running total rather than rebuilding from the payments. A/P Aging works at any As of date, and now so does this view.

Two columns appear only when a bill on screen actually carries an early-pay discount:

  • Discount — what you'd save by paying before the discount date
  • Pay now — the total after taking every discount still available

Total always means what you owe. Pay now is what you'd hand over today. The old Vendor Balances screen used the word "Total" for the second one, so if a figure looks lower than you remember, that's why.

Percent columns and gross margin on the P&L

Two checkboxes on the P&L add percent columns next to TOTAL:

  • % of Income divides every row by Total Income. With it on, the GROSS PROFIT row's percentage is your gross margin, and NET INCOME's is your net margin.
  • % of Expense divides expense-side rows (Cost of Goods Sold, Expenses, Other Expenses) by Total Expenses. Income rows leave this column blank.

Both columns come along in the CSV export.

Quarter columns on the P&L

The Group By dropdown on the P&L offers Quarter alongside Month: one column per calendar quarter in your date range, plus TOTAL. Each quarter cell drills into that quarter's account activity. Up to five years of quarters fit before the report asks you to narrow the range.

General Ledger view of the Journal

The Journal's View dropdown offers General Ledger — the same entries re-grouped the way an accountant reads them: by account, with a Beginning Balance, a running balance on every line, and an Ending Balance per account. This is the "GL report" an outside accountant asks for at year end; export it with the same Export CSV button. (Beginning balances are hidden when a vendor or account-type filter is active, because a filtered beginning balance would mix in activity the filter excludes.)

Expenses by Vendor — who you actually spend money with

Ledger > Bills & Vendors > Expenses by Vendor ranks vendors by expense-side spend over a date range, whatever the instrument — bills, checks, or card expenses. Each vendor links to the Journal filtered to just their activity. Spend with no vendor on it is shown in a "(No vendor)" line at the bottom rather than hidden, so the ranking always adds up to the real total.

This is the same screen as Vendor Payments with its Basis set to Expenses (accrual). The Payments basis shows cash actually paid out of your bank and credit-card accounts instead — for vendors on terms the two differ on purpose, because this month's payments settle last month's bills. Both bases show a transaction count and each vendor's % of the total.

Check Detail — every check in a date range

Ledger > Banking > Check Detail lists checks and numbered bill-payment checks: date, number, payee, bank account, what each check paid (bill numbers for bill payments), cleared status, and amount. Filter to Outstanding only to see checks that have not cleared the bank — the classic outstanding-checks list for a reconciliation.

Cash Forecast — the next 30/60/90 days

Ledger > Reports > Cash Forecast projects your bank balance forward using your own seasonality: today's balance plus the net cash change your books saw over the same weeks last year (aligned to the weekday, so weekends and payroll days line up). For a seasonal business this beats extrapolating recent weeks — a spring average projected through summer, or a winter average projected into spring, misses the turn every time.

Open bills due in the window are listed for awareness but not subtracted: last year's pattern already includes last year's bill payments, so subtracting this year's bills on top would double-count. The chart marks each bill's due date and the projection's low point, and the page warns if the line crosses zero.

The page also states its own accuracy: it replays the model at monthly dates over the past year and prints the typical miss (for example "±$31,000") — judge the projection against that number. Until your books span a full year, the page falls back to a simpler recent-average model and says so. Either way it is a projection, not a promise.

Every report has a Print / PDF button. It opens your browser's print dialog with the report laid out clean (no menus or buttons) — choose a printer to print it, or choose Save as PDF to get a PDF file for emailing or filing.

My Reports — save a view, optionally email it

Every report has a small ☆ Save this view… link next to its buttons (when My Reports is enabled for your store). It carries the report with the filters currently on screen to My Reports (at the top of the Reports section), where the view is saved under a name — one click on Open re-runs the exact report, filters and all, any time. Each saved view shows its filters as small chips so you can tell your saved P&Ls apart at a glance.

Emailing is a property of a saved view: use Email… on a view's row (or fill in recipients when saving) to send its CSV automatically on the Report Emails screen, cadence you choose:

  • Dates — pick an "Always …" option (e.g. Always last month) so the period rolls forward: a monthly P&L view saved in August emails July's P&L in August, August's in September, and so on. "Keep the dates exactly as saved" is right for plain saved views you open by hand.
  • The cadence — monthly (sent the 1st) or weekly (sent Monday mornings).
  • The recipients — comma-separated email addresses; your accountant is the classic case.

The email attaches the report's CSV — generated by the same code as the screen, so the numbers always match what you'd see in VMX. Pause, resume, or delete views on the My Reports list, and use Send now to test an emailed one immediately. A saved view with no recipients never emails anything.