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

SectionWhat it answers
What Bulkdozer isWhat the tool does, in one paragraph
How your data movesWhat travels between Xero and Bulkdozer, and which way
Connecting to XeroThe connect button and the Xero permission screen
Choosing an organisationConnecting more than one set of books, and switching
Finding the right rowsSearching and filtering
Making changesWhat you can edit, and what you cannot
Voiding, deleting and removing paymentsIncluding paid invoices, payments and credit notes
The review screenWhat it shows you before anything is written
When something failsReading the errors and what to do
DisconnectingRemoving one organisation
Deleting your accountRemoving everything
Questions and answersThe common questions, including what Bulkdozer does not do
Where the app explains itselfWhat Bulkdozer tells you as you work
Getting helpHow 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.

  1. 1Xero (your live books)Bulkdozer server
    Invoices and bills are read, but only when you press the button to load them.
  2. 2Bulkdozer serverYour browser
    They appear in the grid. This copy lives in the tab and nowhere else.
  3. 3Your browserBulkdozer server
    You press Apply, and only your changes are sent.
  4. 4Bulkdozer serverXero (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:

DirectionWhat movesWhen
Out of Xero, into BulkdozerInvoices and bills, their contacts, and the list of currencies your organisation usesOnly when you press the button to load them
Out of Bulkdozer, into XeroYour 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 itOnly when you press Apply and confirm
Stored in Bulkdozer’s own databaseYour name and email from Xero, your Xero connection tokens (encrypted), which organisations you connected, and your column layoutWhile your account exists
Never stored anywhere by usThe 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

  1. Go to bulkdozer.app.
  2. Click the blue Connect to Xero button.
  3. 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.
  4. 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.
  5. 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:

PermissionWhy it is needed
Your name and emailSo you can sign in with Xero rather than making another password
Staying connectedSo you do not have to reconnect every visit. Xero requires this of certified apps
Invoices and billsThe whole point: reading them into the grid and writing your edits back
PaymentsOnly 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:

  1. 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.
  2. 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.
  3. 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

  1. Go to the Organisations screen.
  2. Press Disconnect next to the organisation.
  3. 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?

Organisations screen, then Disconnect next to the organisation you want to remove. This genuinely revokes our access at Xero. To remove everything, use Delete account on the same screen. You can also disconnect from within Xero under Settings → Connected apps.

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?

It is never automatic. Bulkdozer reads from Xero only when you ask it to load records, and writes to Xero only when you press Apply and confirm the review screen. It does nothing in the background, has no overnight job, and does nothing at all when you are not using it. There are no sync settings because there is no sync.

Does Bulkdozer store my invoices?

No. They are read from Xero, held in your browser while you work, and never saved on our servers. What we store is your account details, your encrypted Xero connection, your organisation list and your column layout. Full detail is in the Privacy Policy.

Can I undo a change after applying it?

No. Once applied, changes are in your live Xero books. Voids and deletions cannot be reversed in Xero, and a deleted payment cannot be restored by anybody. This is why the review screen exists and why the Download CSV button is worth using before a big run. Undo and Redo in the toolbar only affect edits you have not yet applied.

What happens to a payment when I void a paid invoice?

It is permanently deleted, because Xero will not void a paid invoice otherwise. The review screen warns you and tells you how many payments are affected. The payment record cannot be brought back, but if it came from a bank feed its statement line returns to your Reconcile tab, so the money is still there to re-match. A hand-keyed payment has to be re-entered in Xero yourself.

Can I un-assign a payment instead of deleting it?

No. Xero does not offer that, for either of us. A credit note can be taken off an invoice and kept, because it is a document in its own right that can be applied to several invoices; the same is true of overpayments and prepayments. A payment is different: the payment record is the link between the money and that one invoice, so there is nothing left over to un-assign. Deleting it is the only way to take it off. That is the one real difference between the two buttons: the Credited one keeps what it removes, and the Paid one does not.

Can I delete a payment without voiding the invoice?

Yes. Hover over the amount in the Paidcolumn and click the button that appears in the corner of the cell. The invoice itself is left alone. It goes back to showing its full amount as owing, ready for the right payment to be entered in Xero. That is what you want when the invoice is correct and only the payment was wrong. The deletion is just as permanent as it is when voiding. Setting a paid row’s status to authorised does the same thing.

Why can I not type into the Paid or Credited columns?

Because there is nothing sensible to type. Those two numbers are worked out by Xero from records attached to the invoice: the payments against it, and the credit notes applied to it. Bulkdozer never creates either of those. You cannot make an invoice paid by typing an amount into a cell, because a real payment needs a date and a bank account behind it. What you can do is take those records away, which is what the button in the corner of the cell is for.

What happens to a credit note?

Its allocationto that invoice is removed. That is Xero’s own term, and its own distinction. The credit note itself is kept and stays available to allocate elsewhere; only the tie to this invoice goes. Bulkdozer will not re-allocate it for you.

How do payment processing fees appear in Xero?

They do not come from us. Bulkdozer does not process payments, take card details or charge fees of any kind, so it never creates a fee line in your books. Any processing fees you see are from whatever payment service you use, not from Bulkdozer.

How do I reconcile what Bulkdozer changed?

Two ways. Download the CSV from the review screen before you apply, which lists exactly what is about to change. And in Xero itself, each record’s History & Notes shows the change with “Bulkdozer” named as the application that made it, so there is a permanent trail on Xero’s side.

Why can I only pick some contacts?

The contact picker offers active contacts only. Contacts archived in Xero are deliberately left out, so an invoice cannot be moved onto a contact your organisation has retired.

Why can't I change the contact on this invoice?

Xero only allows the contact to change while an invoice is a draft or submitted. Once it is approved, the contact is fixed. That is Xero’s rule, not ours.

Why did some rows come back red?

They were not applied. The summary lists each one with Xero’s own reason. The most common is that somebody changed the record in Xero after you loaded it, in which case Bulkdozer skipped it on purpose rather than overwrite their work.

Does it work with more than one organisation?

Yes. Connect as many as you like and switch between them on the Organisations screen. Each is connected and disconnected separately.

Does it work with foreign currency invoices?

Yes. Each invoice shows its own currency, and the currency filter lists the currencies your organisation actually uses. Bulkdozer never converts between currencies and never recalculates an amount, so there is no exchange rate for it to get wrong.

What does it cost?

Nothing. Bulkdozer is free and takes no payment details. If paid features are ever added, you will be told before anything could be charged, and nothing will be charged without you agreeing to a price first.

Is my data used to train AI?

No. Data from Xero is never used to train or improve AI or machine learning models. Xero’s developer terms forbid it and we agree with them. We also never sell your data or use it for advertising.

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.

Privacy PolicyTerms of Service