Bulkdozer help
Last updated: 21 August 2026
Everything here is written for the person using Bulkdozer, a bookkeeper, an accountant, or a business owner doing their own books. If it does not answer your question, email adam@bulkdozer.app.
Contents
| Section | What it answers |
|---|---|
| What Bulkdozer is | What the tool does, in one paragraph |
| How your data moves | What travels between Xero and Bulkdozer, and which way |
| Connecting to Xero | The connect button and the Xero permission screen |
| Choosing an organisation | Connecting more than one set of books, and switching |
| Finding the right rows | Searching and filtering |
| Making changes | What you can edit, and what you cannot |
| Voiding, deleting and removing payments | Including paid invoices, payments and credit notes |
| The review screen | What it shows you before anything is written |
| When something fails | Reading the errors and what to do |
| Disconnecting | Removing one organisation |
| Deleting your account | Removing everything |
| Questions and answers | The common questions, including what Bulkdozer does not do |
| Where the app explains itself | What Bulkdozer tells you as you work |
| Getting help | How to reach a human |
What Bulkdozer is
Bulkdozer shows the invoices and bills from your Xero organisation as a grid, like a spreadsheet, so you can change a lot of them at once. Xero makes you open records one at a time; Bulkdozer lets you filter to the ones you care about, edit them together, and write them all back in one go. Its best-known trick is voiding invoices that have already been paid, which Xero will not let you do directly.
Bulkdozer is free. There is nothing to pay and no card to enter.
How your data moves
Nothing about your invoices or bills is ever stored by Bulkdozer. They travel from Xero, through our server, to your browser, where they sit only while you have the tab open. When you press Apply, your changes travel back the same way. Close the tab and the copy in your browser is gone.
- 1Xero (your live books) → Bulkdozer server
Invoices and bills are read, but only when you press the button to load them. - 2Bulkdozer server → Your browser
They appear in the grid. This copy lives in the tab and nowhere else. - 3Your browser → Bulkdozer server
You press Apply, and only your changes are sent. - 4Bulkdozer server → Xero (your live books)
The changes are written to your books.
Kept in our own database (London): your account, your encrypted Xero tokens, your list of organisations and your column layout. Nothing from your books passes into it at any point in the four steps above.
In words, and in both directions:
| Direction | What moves | When |
|---|---|---|
| Out of Xero, into Bulkdozer | Invoices and bills, their contacts, and the list of currencies your organisation uses | Only when you press the button to load them |
| Out of Bulkdozer, into Xero | Your edits: reference, invoice number, date, due date, contact, and status (void, delete, or putting a paid invoice back to authorised). Plus deleting payments and removing credit note allocations, where you asked for that or the change requires it | Only when you press Apply and confirm |
| Stored in Bulkdozer’s own database | Your name and email from Xero, your Xero connection tokens (encrypted), which organisations you connected, and your column layout | While your account exists |
| Never stored anywhere by us | The invoices and bills themselves, their amounts, their numbers, your contacts | - |
Nothing syncs on a schedule. Bulkdozer never runs in the background, never polls Xero, and never changes anything overnight. It only acts while you are sitting in front of it and only when you press a button.
Connecting to Xero
- Go to bulkdozer.app.
- Click the blue Connect to Xero button.
- You will be taken to Xero’s own sign-in page, the real one, at xero.com. This is a normal full-page move, not a pop-up. Sign in there as you always do, including any two-step verification.
- Xero then shows you a permission screen listing what Bulkdozer is asking for and which organisation you want to connect. Choose the organisation and click Allow.
- Xero sends you back to Bulkdozer, already signed in.
You never type a Xero password into Bulkdozer. You cannot, because there is nowhere to put one. Bulkdozer has no passwords of its own at all. Connecting to Xero is both how you sign up and how you sign in every time afterwards. If you ever see something that looks like Bulkdozer asking for your Xero password, it is not us.
What the permission screen is asking for, and why:
| Permission | Why it is needed |
|---|---|
| Your name and email | So you can sign in with Xero rather than making another password |
| Staying connected | So you do not have to reconnect every visit. Xero requires this of certified apps |
| Invoices and bills | The whole point: reading them into the grid and writing your edits back |
| Payments | Only used to delete a payment off an invoice, either because you asked to remove it, or because you are voiding a paid invoice and Xero refuses that until the payment is gone. Bulkdozer never records a payment |
| Contacts (read only) | To fill the contact picker and the contact filter. Bulkdozer never creates or changes a contact |
| Settings (read only) | One request only, listing which currencies your organisation uses |
Two of those are read-only on purpose. Bulkdozer asks for nothing beyond this list.
Choosing an organisation
If you look after several sets of books you can connect as many as you like.
- The Organisations screen lists everything you have connected, by name, and shows which one you are currently working in.
- Connect another takes you back through the Xero permission screen so you can pick another organisation.
- Click an organisation to make it the active one. The grid then shows that organisation’s records.
- You reach this screen from the link in the top bar of the editor.
There is no other setup. Bulkdozer has no configuration screen, no account mapping and no sync settings, because it does not create anything in Xero and does not sync on a schedule. The only preference it remembers is how you like your columns arranged.
Finding the right rows
At the bottom of the editor are two tabs: Invoices and Bills. Pick one, then narrow things down before you load them.
The filters available are:
- Text: matches against fields like the reference or invoice number.
- Contact: pick one or more contacts. The picker searches as you type. Only active contacts are offered; contacts you have archived in Xero are left out, so that you cannot accidentally move an invoice onto a contact your organisation has retired.
- Status: draft, submitted, authorised, paid, voided, and so on.
- Date range and due date range.
- Amount range.
- Currency: the list offered is the set of currencies your own organisation actually uses, taken from Xero, not a generic list of world currencies.
Once you have set your filters, load the results. Only what matches comes back, which keeps things fast and keeps you away from records you did not mean to touch.
You can also show and hide columns and drag them into the order you like. That layout is saved against your account, so it looks the same next time and on your other devices.
Making changes
Click a cell and type, exactly as you would in a spreadsheet. You can edit many rows before writing anything back. Nothing goes to Xero until you press Apply.
What you can change
- Reference
- Invoice number
- Date and due date
- Contact: only while an invoice is still a draft or submitted, because Xero does not allow the contact to change once an invoice is approved
- Status: to void or delete
What you cannot change, and why
- Line items, descriptions, quantities and prices. Bulkdozer does not touch them at all.
- Amounts, sub-total, tax and amount due.These are shown but greyed out. They are Xero’s own calculated figures and Bulkdozer never recalculates or overwrites them.
- Currency. Shown for information only. The currency on an existing invoice can never be changed, in Bulkdozer or in Xero.
- Account codes and tax rates. Bulkdozer never sets either.
There is an Undo and a Redo button. These work on the edits you have made in the grid but have not yet applied. They do not undo anything that has already been written to Xero. Nothing does.
Voiding, deleting and removing payments
There are three ways in. Hover over a row number and a bin appears on it. That is the quick way, and it marks the whole record to go. Or pick the row by its number and press Delete, which does the same thing and works across as many rows as you have picked. Or set the row’s status to void by hand. Either way Bulkdozer works out the right action for you:
- A draft or submitted invoice is deleted, because that is what Xero does with unapproved records.
- An authorised or paid invoice is voided.
Voiding a paid invoice is the feature Bulkdozer exists for, and it is worth understanding what it does on your behalf, because Xero will not void such an invoice while anything is attached to it:
- If a payment is attached, Bulkdozer deletes the payment first. The payment record is gone for good. Xero has no way to restore one, and neither do we. The money is not lost, though: if that payment came from a bank feed, its statement line goes back to your Reconcile tab, ready to be matched to the right invoice. Only a payment you keyed in by hand has to be keyed in again.
- If a credit note is allocated, Bulkdozer removes that allocation first. The credit note itself is not destroyed. It survives and is ready to be applied to something else, but Bulkdozer will not re-apply it for you.
- Only then does it void the invoice.
The review screen counts both of these before anything happens, so you can see how many records are affected.
Removing a payment without voiding
Sometimes the invoice is fine and only the payment is wrong: it was keyed against the wrong invoice, or entered twice. You do not have to void a perfectly good invoice to fix that. Hover over the amount in the Paid column and a button appears beside it. One click queues it, and the whole row answers at once: the amount empties, what was owed comes back, and the status drops from Paid to Authorised. Those cells turn yellow, because none of it has happened yet. Nothing reaches Xero until you press Apply, and Undo takes the lot back in one step. Picking the cells and pressing Delete does the same, across as many rows at once as you have picked.
It is all the payments on that invoice, not one of them. If an invoice was settled by two payments and only one was wrong, this is not yet the tool for it. Remove them all and re-enter the right one in Xero.
The Credited column has the same button, and it does the gentler thing: it takes the credit notes off this invoice without destroying them, so they are free to be applied somewhere else. Bulkdozer will not re-apply them for you.
You can also get at the payment deletion from the Status column, by setting a paid row to authorised. It does exactly the same thing. The button is usually what you want; the status route is there because that is how Xero thinks about it, and because it works across a whole column at once when you are pasting or filling.
The invoice itself is not touched. It stays exactly as it was: same number, same lines, same total. It simply goes back to showing its full amount as owing, ready for the right payment to be entered in Xero. Deleting the payments is the whole change: Xero has no separate “un-pay” button, and an invoice drops back to authorised by itself once nothing is paying for it.
Note that a payment is deleted, not un-assigned. Xero lets you take a credit note off an invoice and keep the credit note, because a credit note is a document in its own right that can be spread across several invoices. A payment is not: the payment record is the link between the money and that one invoice, so there is nothing left over to un-assign. Removing it means deleting it, and that cannot be undone.
In practice this is less drastic than it sounds, because the money is not what gets deleted. If the payment came from a bank feed, its statement line returns to your Reconcile tab the moment the payment goes, ready to be matched against the invoice it should have been on all along. That is exactly the fix when a payment landed on the wrong invoice. Only a payment you keyed in by hand, with no bank line behind it, has to be keyed in again.
The review screen
Nothing is written to Xero until you have seen this screen and confirmed it. It shows:
- Invoices/bills changed: how many records you are about to touch.
- Total field changes: how many individual edits that adds up to.
- Being voided: how many are being voided or deleted.
- Going back to Authorised: how many paid invoices are having their payments removed without being voided.
- A red warning, “Payments will be deleted”, if any invoice you are changing has a payment against it, saying how many, stating that deletion is permanent, and telling you what those invoices end up as: voided, or back to authorised and owing again.
- A warning, “Credit note allocations will be removed”, if any has a credit note, and confirming the credit notes themselves are kept.
- A note that each record is re-checked against Xero at the last moment. If somebody else has changed a record since you loaded it, Bulkdozer skips it rather than overwriting their work.
- A Download CSV button. This saves a list of exactly what you are about to change. It is worth clicking before a large run, because it is the only record you will have of what the values were before.
Press Apply and a progress bar shows how many have been processed. Keep the tab open while it runs.
When something fails
Bulkdozer does not fail a whole batch because one row had a problem. Each record is sent individually, so the good ones go through and the problem ones are reported.
When it finishes you get a summary showing how many applied and how many did not. If any did not, you get a list headed “Why some rows didn’t apply” showing the invoice number alongside Xero’s own explanation: not a vague message from us. Typical reasons are that a record was changed in Xero since you loaded it, or that Xero’s own rules do not allow the change.
In the grid, the row number of anything that did not apply turns red. Rows that applied return to normal. So you can see at a glance what still needs attention.
Two specific messages you may see:
- “Your Xero connection expired. Reconnect and try again.” Your authorisation has lapsed or was removed at Xero’s end. Go to the Organisations screen and reconnect. Nothing was changed.
- “Xero rate-limited the request.” Xero limits how fast any app may talk to it. Wait a moment and press Apply again. Anything still showing as a pending change was not applied.
If a run is interrupted, anything still showing as an unsaved change in the grid did not reach Xero. Press Apply again to retry just those.
Disconnecting an organisation
- Go to the Organisations screen.
- Press Disconnect next to the organisation.
- Confirm.
This revokes Bulkdozer’s access at Xero itself, not merely on our side, and removes our record of that organisation. You can also remove Bulkdozer from inside Xero, under Settings → Connected apps, which has the same effect on access.
Deleting your account
Also on the Organisations screen, at the bottom. Deleting your account:
- revokes every Xero connection you have,
- permanently erases your account details, your encrypted Xero tokens, your session, your list of organisations and your saved column layout,
- and cannot be undone.
Your invoices and bills are untouched by this, because they live in Xero and were never stored by us in the first place. Any change you already applied stays applied.
Questions and answers
How do I disconnect from Xero?
What does Bulkdozer not do?
Quite a lot, deliberately:
- It does not create invoices, bills, contacts, credit notes or payments. It only changes ones that already exist.
- It does not touch line items, descriptions, quantities or unit prices.
- It does not set or change account codes.
- It does not handle tax. It never sets a tax rate and never posts a tax amount, so Xero’s own tax treatment applies untouched.
- It does not change currenciesor do any currency conversion. Amounts are Xero’s figures, shown as they are.
- It does not touch payroll, bank transactions, journals, quotes, purchase orders or reports.
- It does not sync anything, on a schedule or otherwise.
- It has no undo for applied changes and keeps no backup of your records.
When and how does data sync? Is it automatic?
Does Bulkdozer store my invoices?
Can I undo a change after applying it?
What happens to a payment when I void a paid invoice?
Can I un-assign a payment instead of deleting it?
Can I delete a payment without voiding the invoice?
Why can I not type into the Paid or Credited columns?
What happens to a credit note?
How do payment processing fees appear in Xero?
How do I reconcile what Bulkdozer changed?
Why can I only pick some contacts?
Why can't I change the contact on this invoice?
Why did some rows come back red?
Does it work with more than one organisation?
Does it work with foreign currency invoices?
What does it cost?
Is my data used to train AI?
Where the app explains itself
You should not need this page open while you work. Bulkdozer tells you what is about to happen at the moments that matter, so here is where to expect it.
Before anything is written, the review screen states how many records and how many individual field changes are involved, how many are being voided, and how many paid invoices are going back to authorised. If any invoice you are changing has a payment against it, a red alert headed “Payments will be deleted” says how many, warns that the deletion is permanent, and says what those invoices end up as. If any has a credit note, a warning headed “Credit note allocations will be removed” explains that the credit notes themselves are kept. The same screen tells you that every record is re-checked against Xero at the last moment, so you know changes made by a colleague will be skipped rather than overwritten.
While a run is in flight, the progress bar is accompanied by “Keep this tab open”.
Afterwards, failed rows are listed under “Why some rows didn’t apply”, each with Xero’s own explanation of what went wrong.
When you are about to lose work, Bulkdozer stops you: starting a new search or navigating away with unsaved edits raises a prompt first.
When something needs your attention, expired connections and rate limits are explained in plain words with a route to fixing them, rather than as codes.
Before anything irreversible, Disconnect and Delete account both ask you to confirm, and the delete confirmation states plainly that it cannot be undone.
Getting help
Email adam@bulkdozer.app. There is also a feedback form inside the app, on the Organisations screen, which sends us your message along with the email address on your account so we can reply. You can attach a screenshot. Do have a quick look at what is in it first, since a screenshot of the grid will show whatever was on your screen.
When reporting a problem it helps enormously if you can say which organisation, roughly when it happened, and what the error message said.