Batch Update
Some corrections are the same correction, five hundred times. A year of postings on the wrong expense account. A department that was never filled in. A project that should have been on every line of a job. Opening each entry and fixing it by hand is a day’s work and a fresh chance to make a typo.
Batch Update does that in one pass: filter down to exactly the transactions you mean, tick them, and set the field once.
There are two of them — General Ledger → Batch Update for journal entries, and Vendors → Batch Update for vendor documents. They work identically; the AP one just has more to filter on. Each needs its own permission, and that permission carries more weight than its name suggests — see what the permission really grants.
This screen edits posted transactions directly. Anything still waiting for approval never appears here. Changing a date or an account moves real money between periods or accounts in your ledger — with no reversing entry to show for it. It’s the right tool for a genuine correction and the wrong one for a guess.
Finding the transactions
The screen searches as soon as you open it, and it starts on the last 30 days. If you’re fixing something from last year, that’s why the list looks short — set the dates before you conclude anything is missing.
The Filters panel holds the rest. On the General Ledger side you can narrow by Description, Reference, Account and Department, and by three different date ranges: when the transaction is dated, when it was created, and when it was last updated. The AP side adds Invoice Number, Vendor, Due date from / Due date to, and amount filters — greater than, less than, equal to.
Line Data is the switch that changes what you’re working on. Off, each row is a whole transaction. On, each row is a single ledger line within a transaction — which is what you want when the thing that’s wrong is one account on one line, not the document as a whole. Turning it on changes the columns, the fields you’re allowed to set, and the filters: Line Data adds Project, Source and Memo on the General Ledger side, and Account, Expense line account, Tax account, Project and tax-amount filters on the AP side.
Transactions in a closed period are never listed. They’re filtered out before you see them, and nothing on screen says so — so a filter that should match fifty rows may quietly return thirty. If the count looks wrong, check your period lock before you go looking for a bug.
Selecting
Tick rows individually, or use the header checkbox. That checkbox is worth understanding properly:
Select-all means every row matching your filter — not just the ones on screen. The table has no pages; it loads the whole result and scrolls. So one click can select several thousand transactions, and the counter above the table (Total transactions and Transactions selected — Total lines / Lines selected in Line Data mode) is the only thing telling you how many. Read it before you act on it.
Changing fields
With rows ticked, Batch update transactions (or Batch update lines) opens the dialog. Set one or more fields, then Apply update writes the same value to every selected row.
The rule the dialog states, and it’s the important one: only values you enter are sent, and a blank field means “leave this alone”. So you can change a department on four hundred transactions without touching anything else about them.
Which fields you get depends on the module and on whether Line Data is on:
| Field | Where |
|---|---|
| Transaction date | everywhere |
| Set transaction year only (keep month and day per row) + Target year | everywhere |
| Department and Clear department | everywhere |
| Project and Clear project | everywhere — the label reads (all lines) or (this line) on the General Ledger side and (line) in AP Line Data mode |
| Account (this line) | GL, Line Data mode |
| Due date, Vendor, Payable (record) account | AP |
| Expense account (line) | AP, Line Data mode |
Two things that catch people:
- Blanking a dropdown does nothing. Blank means “unchanged”, so to actually empty a department or project you must tick Clear department / Clear project. This is the single most common “I changed it and nothing happened”.
- Set transaction year only rewrites just the year and keeps each row’s own month and day. That’s what you want when a batch was booked into the wrong year — you’re not flattening five hundred transactions onto one date. (A 29 February landing in a non-leap year becomes 28 February.)
A batch can partly succeed. You’ll be told how many worked and how many didn’t, with the reason for each — a row in a closed period, or one that’s locked for another reason, is refused on its own without taking the rest of the batch down with it. Every change is recorded in the Audit Log, before and after.
Batch delete
The same screen has a Batch delete button, and it does exactly what it says to everything you’ve ticked.
This is the most destructive action in neoo, so be clear about the blast radius. Deleting a vendor document does not just remove that document — it removes the payments recorded against it, the journal entry those payments created, and the files attached to it. It is a hard delete. There is no undo, no recycle bin, and nothing to reverse. The only trace left is the audit record that it happened.
The confirmation is a single dialog — Delete transactions?, telling you how many rows and that it cannot be undone — and then it’s done. There’s no second step, no typing the count to confirm.
What does protect you:
- The period lock. Anything dated on or before your Close Books up to date can’t be deleted here.
- Enforce Transaction Reversal for all Dates. With this on, Batch delete isn’t offered at all — consistent with the individual transaction screens, where it removes the Delete button entirely. If your policy is that mistakes get reversed rather than erased, this setting covers this screen too. Both live on the Audit screen.
- Line Data mode. Delete disappears — you can’t delete half a transaction, only a whole one.
- A journal entry behind an accrual, or one locked by a pending expense, is refused individually. A vendor document that belongs to an expense is not protected — the expense is deleted with it.
The permission grants deletion too
There is no separate delete permission. The permission that lets someone use Batch Update is the same one that lets them mass-delete: ledger.batchupdate for the journal, vendor.batchupdate for AP.
This deserves a moment when you’re setting up roles. “Batch update” reads like a bulk-edit convenience — the kind of thing you’d hand to a bookkeeper so they can re-account a quarter without pestering anyone. It also hands them the ability to permanently destroy vendor documents, their payments and their attachments, in one click, for any open period.
Grant batch update narrowly, and to people you’d trust with deletion — because that’s what you’re granting. If you want the bulk-edit convenience without the risk, turn on Enforce Transaction Reversal for all Dates: the update stays, the delete goes away.
Which screens exist
General Ledger → Batch Update and Vendors → Batch Update are the two. There is no batch update for customer invoices — corrections on the AR side are made on the documents themselves, or with an AR Transaction.