AWRA OpsHub Search
Double-entry, by construction

Nobody in your organisation writes a journal entry. The ledger writes itself.

A sale rings up. A payment clears. Stock leaves the store on an approved invoice. Payroll posts. In every one of those moments AWRA OpsHub writes both halves of the accounting entry — debit and credit, in the same breath as the operation — into a general ledger you can browse, drill into and trial-balance the same afternoon.

Journal entries · General ledger with running balances · Trial balance · Ten automatic posting routes · Mirrored on the API

Both legswritten in one operation, so a half-entry is not a state the ledger can reach
10 routesoperational events that post their own journal without being asked
Every rowcarries the running balance after it, labelled DR or CR
0 exportsthe trial balance reads the same rows your operations wrote
The month-end reconstruction

Most organisations do their accounting twice.

Once in real life — a customer pays, a supplier is settled, stock moves, someone is paid — and then again, weeks later, when a bookkeeper opens a bank statement and tries to work out what all of it was. The second pass is where the errors live, because it is done from evidence rather than from the event: a reference on a statement line, a receipt in a drawer, somebody's memory of a Tuesday.

That gap has a cost you can measure. Margins look fine until the reconstruction finishes and discovers cost of sales was never relieved. Receivables look healthy because a credit sale increased cash the day the goods left. Output tax on a fulfilled invoice quietly never reaches a tax account, which is a filing problem rather than a presentation one. None of these announce themselves. Every one of them is invisible in an operational report and only ever visible in a ledger.

AWRA OpsHub removes the second pass by making the first pass accounting. There is exactly one service in the platform that is allowed to write to the ledger, and it physically cannot write one side of an entry on its own. Every operational routine that touches money calls it, hands it a debit account and a credit account, and gets a balanced pair back. The general ledger is therefore not a report assembled from your operations. It is your operations, expressed in accounts.

Ten roads into the ledger

Every one of these writes its own journal.

No queue to run, no "post to accounting" button, no nightly batch that can fail silently. Each of these operational events posts at the moment it completes, with the account pair its own logic determines.

Point-of-sale sale

Rings revenue and relieves inventory at cost in two balanced pairs, so gross margin is a ledger fact on the day of the sale rather than a month-end derivation.

DRAccounts Receivable  /  CR Sales Revenue
DRCost of Sales  /  CR Inventory Assets
Point-of-sale return

Reverses in three conditional legs rather than one blunt one. Revenue always comes back. Cost only returns if the goods did — a written-off return leaves the cost consumed. And the refund only debits cash where a tender actually moved money.

DRSales Revenue  /  CR Accounts Receivable
DRInventory  /  CR Cost of Sales  if restocked
Invoiced stock issue

When an approved issue is backed by a customer invoice, the invoice is the authority on all three figures — the agreed total, the discount already applied, and the tax split out. Receivables take the gross; revenue is credited net; tax gets its own line.

DRAccounts Receivable  gross
CRSales Revenue  net  +  CR Taxes Payable
Customer payment

Clears the receivable the sale created and lands the money in the right account by tender: cash and mobile money settle to Cash, everything else to Bank. Refunds reverse into whichever one the original payment used.

DRCash or Bank  /  CR Accounts Receivable
Operating expense

Rent, utilities, subscriptions, bank charges. Posts the expense against Payables or straight to settlement depending on whether you pay now or hold it, and posts a second matching journal when the payable is later cleared.

DROperating Expense  /  CR Accounts Payable
DRAccounts Payable  /  CR Cash or Bank  on settlement
Stock adjustment

Check-ins, check-outs and reason-coded adjustments move value between inventory and the account their reason implies, so a write-off and a receipt are different postings rather than the same one with a different note.

DRInventory Assets  /  CR Accounts Payable
Payroll run

Posting an approved run recognises the cost and then settles it, in two pairs, referenced to the run and its period so the ledger line and the payslip batch point at each other.

DRPayroll Expenses  /  CR Payroll Payable
DRPayroll Payable  /  CR Bank
Vendor payment

Every outbound supplier settlement — bank transfer, mobile money, cheque — reduces payables and the settlement account together, from the same register that reconciles the payment itself.

DRAccounts Payable  /  CR Cash or Bank
Project payout

Payments to people working on a project post to the same payroll expense account as the payroll engine, so project labour cost and payroll cost never disagree about what was spent.

DRPayroll Expenses  /  CR Cash or Bank
The same routes, from the app

Field adjustments, mobile POS and mobile invoice payments call the identical posting service as the browser. There is no second, looser accounting path for mobile work — which is the usual place a parallel ledger appears.

=one posting service, one ledger, two clients
Journal entries

Every posting, newest first, with the balance it produced.

The journal is the flat chronological record: one row per leg, each carrying its account, its amount, the document that caused it, and the running balance of that account immediately after it. Page sizes run from 25 to 200 rows.

Journal entries · 3,412 rows · debits 41,208,660.00 · credits 41,208,660.00 Balanced
Date Account Source Amount Running balance
24 Aug 14:06 Taxes Payable Output tax on INV-2098 CR 2,206.90 318,442.15 CR
24 Aug 14:06 Sales Revenue Revenue for invoice INV-2098 CR 13,793.10 7,904,118.40 CR
24 Aug 14:06 Accounts Receivable Revenue for invoice INV-2098 DR 16,000.00 1,244,905.60 DR
24 Aug 11:52 Bank Payroll run 2026-08 (settled) CR 2,884,300.00 6,118,772.05 DR
24 Aug 09:14 Inventory Assets COGS for POS sale POS-4471 CR 11,265.00 3,470,881.25 DR
Notice the third row. The invoice was 16,000 gross with 2,206.90 of tax — so receivables took the full sixteen thousand the customer owes, revenue was credited 13,793.10 net, and the tax went to its own account. Three rows, one document, and a tax balance that is ready to be filed rather than reverse-engineered.
Date range from & to Debits only or credits only Large entries — anything above 1.5× your own average 25 to 200 rows a page Linked to its source adjustment or item

The large-entries filter deserves a sentence of its own, because it is the one filter here you could not have configured yourself. It does not compare postings to a number you typed. It computes the average entry amount across your own ledger and then shows you everything more than half again above it. A business posting thousands of small retail lines and a business posting a handful of large equipment purchases get a different threshold from the same control, and neither had to guess what "large" means in their books.

General ledger

The same postings, gathered under the accounts they hit.

The ledger view walks the accounts that have actually been posted to — not every account you own, only the live ones — and shows each with its full entry history and a closing balance expressed in the sense that account naturally carries.

Normal balance is the idea that makes this readable. An asset or an expense account grows when you debit it; a liability, equity or income account grows when you credit it. AWRA knows which is which from the account's own type, and accumulates each account in its own direction — so Inventory Assets rising is a positive number, and Sales Revenue rising is also a positive number, even though one grew on a debit and the other on a credit.

The payoff is what happens when an account goes the wrong way. A cash account that has been overdrawn does not display as negative cash. The label flips instead: the number stays positive and the tag beside it changes from DR to CR, which is how an accountant would read it out loud and exactly what the trial balance needs. A negative number in a balance column is a presentation bug that hides a real condition. A flipped side is the real condition, stated.

Accounts with activity 14

Only accounts carrying at least one posting appear, so the ledger is never padded with empty rows from the chart of accounts.

Entries in the ledger 3,412

Every leg ever written, each one still attached to the operational document that caused it.

Last posting 2 min ago

Because the posting happens inside the operation, "how current are the books" and "how current is the business" are the same question.

Trial balance

It balances because a half-entry was never possible.

A trial balance in most systems is a test — you run it to find out whether something has gone wrong. Here it is closer to a statement of the obvious, and that is the point.

Trial balance · all activity to date Debits = Credits
Account Type Debit Credit
Accounts ReceivableAsset1,244,905.60
Inventory AssetsAsset3,470,881.25
BankAsset6,118,772.05
Accounts PayableLiability918,340.00
Taxes PayableLiability318,442.15
Sales RevenueIncome7,904,118.40
Cost of SalesExpense4,182,900.10
Payroll ExpensesExpense2,884,300.00
Accounts sitting at zero are left out, so what you read is the live shape of the business rather than a full inventory of account names. An account that has swung against its normal side appears in the opposite column — an overdrawn bank account shows as a credit, which is where it genuinely belongs.
Who sees the books

The ledger is not one permission.

Being allowed into accounting is not the same as being allowed to read the general ledger, and neither is the same as being allowed to change the chart of accounts. Each of those is its own grant, and they stack.

That granularity is what lets you give a branch manager the aging report without handing them the whole ledger, or give a bookkeeper the journal without giving them the power to rename a system account the statements depend on.

view_accounting

The floor. Without it none of the accounting screens exist for that role at all.

view_journal_entries

Required on top of the floor for every ledger-derived screen — the statements included.

view_general_ledger

The per-account drill-down specifically, so entry-level detail can be granted separately from summary reporting.

view_reports

Gates the statements above the ledger: trial balance, income statement, balance sheet, cash flow, receivables and payables.

manage_accounts

The chart of accounts itself. System accounts the reports are keyed to stay locked even here.

The ledger as a trigger

A posting is an event you can build on.

Every journal posting raises an event inside the platform, which means your workflow rules can watch the ledger the same way they watch a purchase order or a ticket. Post a journal above a threshold and notify the finance lead. Post to a particular account and open a review task. Post anything at all on a weekend and put it in a queue somebody checks on Monday.

This is a small thing that turns out to matter, because the alternative is a person remembering to look. A control that depends on somebody opening a report is not a control — it is a hope with a screen attached. Wiring the rule to the posting itself is how the check happens on the entry nobody was expecting.

Straight answers

What the ledger does today — and what we can add to yours.

Finance software is the worst possible place for a vague answer, so here is the shape of it precisely, including the work we would take on if you need it.

The straight answer

What AWRA OpsHub does today

  • Every posting writes both legs in one operation, so total debits and total credits are equal by construction rather than by reconciliation
  • Ten operational routes post automatically — POS sales and returns, invoiced stock issues, customer payments, expenses, stock adjustments, payroll runs, vendor payments and project payouts
  • A running balance on every journal row, accumulated in that account's natural debit or credit sense, with the side label flipping rather than the number going negative
  • Output tax split off a customer invoice and credited to Taxes Payable on its own line, so a filing figure exists without being reverse-engineered
  • A large-entries filter measured against your own average posting, so outliers surface without you setting a threshold
  • Per-account drill-down across only the accounts that carry activity, with each entry still linked to the document that caused it
  • Trial balance, income statement, balance sheet, cash flow and receivables/payables all reading the same rows
  • System accounts the statements are keyed to are locked against rename and deletion, even for roles that manage the chart
  • Every posting raises a workflow event, so automation rules can watch the ledger directly
  • The whole ledger mirrored on the API — the mobile app and your integrations read identical figures

More we can add to your workspace

  • A date range and comparative periods on the trial balance, income statement and balance sheet, so any month or quarter can be read on its own and set beside the one before it
  • Manual journal entry posting from the browser, with a maker-checker approval step and a reversal action
  • Account numbering and a parent-child account hierarchy, with subtotals rolling up through the tree
  • A month-end close that refuses new postings into a closed period — the close is recorded today with who closed it and when, and the enforcement is the part we would build on top
  • A journal header that groups both legs of a posting under one document number, with a per-document view
  • Multi-currency postings with a period-end revaluation and an FX gain/loss account
  • Zero-balance accounts carried onto the trial balance for completeness where an auditor asks for the full list
  • Budget-versus-actual columns on the statements, drawing on the budgets you already keep
  • A depreciation engine with per-class rates and residual values, posting its own monthly journal
  • Scheduled delivery of a signed statement pack to your accountant on a monthly cadence

Where we point you to a specialist

  • Your statutory accounts carry your auditor's sign-off. We will build the ledger they audit and hand over every posting behind it; we will not put our name where theirs belongs.
  • Which account a novel transaction belongs in is your accountant's judgement. Tell us the rule and we will build the posting that follows it every time — the decision itself stays with the person who is accountable for it.
  • A prior-period restatement is an accounting decision with consequences outside the software, so it stays in your hands and your auditor's rather than being a button we ship.
  • We will not tell you whether a charge is deductible or an input tax is recoverable. That is advice, and a vendor willing to give it in a sales meeting is selling you a liability.

Everything in the middle column is scope rather than a ceiling — several of them are a few days of work on foundations that already exist. Tell us which you need and we will come back with a written spec, a timeline and a price to add it to your workspace.

One coupling worth knowing before you plan around it: revenue on an ad-hoc stock issue is recognised only where the movement's reason is flagged as revenue-generating, and that flag is matched on the reason's name. Rename a revenue reason and the postings that follow it need the flag set again on the new name.

Questions, answered

General ledger FAQ.

Is this a real double-entry ledger or a transaction log with accounting words on it?
A real one. There is a single posting service in the platform, every operational routine goes through it, and it writes a debit and a matching credit together. Nothing in the application can write one side on its own, which is why the trial balance is a read rather than a test.
Do I have to post journals myself?
No — and today you cannot from the browser, because the ledger is written by your operations rather than typed. If you need manual journals with an approval step and a reversal action, that is the first item in the middle column above and sits on foundations that already exist.
Can I see a trial balance for last month only?
Today the trial balance, income statement and balance sheet read all activity to date. Cash flow is the one with period controls — daily, weekly, monthly and yearly windows with a trend chart. Adding a date range and comparative periods to the rest is scoped work on the same figures, not a rebuild.
What happens to an account that goes the wrong way?
Its side label flips and the number stays positive. An overdrawn bank account reads as a credit balance rather than as negative cash, both in the ledger and on the trial balance, because that is what it actually is.
How is tax handled when an invoice is fulfilled?
The invoice is treated as the authority. Receivables are debited with the gross the customer owes, revenue is credited net of tax, and the tax portion is credited to Taxes Payable on its own line. If an invoice's tax figure is impossible — negative, or larger than the total — the posting treats the whole amount as revenue and leaves the invoice to be corrected on its own terms rather than spreading a broken number into the ledger.
Does a point-of-sale refund reverse everything?
It reverses what actually happened, in three separate decisions. Revenue always comes back. Cost only returns to inventory if the goods did — a damaged return leaves the cost consumed. And cash is only credited where the tender genuinely moved money, so a refund still owed to a customer correctly leaves a credit sitting on their receivable.
Can our accountant get at the underlying data?
Yes. The journal, ledger and every statement are available over the API under a key you issue, and the QuickBooks integration syncs with its own health and exception reporting. Nothing about the ledger is trapped behind a screen.
Does the mobile app keep its own books?
No, and that is deliberate. Mobile adjustments, mobile POS and mobile invoice payments call the same posting service as the browser. A parallel accounting path for field work is the usual way two sets of numbers appear in one business.
Ready when you are

Close the books on the business you actually ran.

Not on a reconstruction of it, assembled weeks later from bank lines and memory. Every posting in AWRA OpsHub is written by the operation that caused it, both legs at once, the moment it happens.