HisabiHisabi
All posts
Product5 min read·

Bulk Operations in Hisabi — Send, Mark Paid, Cancel, Delete in One Click

Stop clicking the same menu 50 times. Bulk-select invoices, expenses, or clients and act on the lot. Quietly the most-requested feature of the year — now shipping.

By Hisabi Team · Product
Bulk Operations in Hisabi — Send, Mark Paid, Cancel, Delete in One Click

Power users have asked for this for months. If you issue 30+ invoices a month, the difference between clicking each one and selecting them all is the difference between a 30-minute Sunday and a 5-minute one. Bulk operations now ship across invoices, expenses, and clients.

What's Available

On /invoices, select rows and act in one click:

  • Bulk Send — moves DRAFT invoices to SENT and queues PDF + email for each, isolating per-invoice failures so one bad row doesn't block the rest.
  • Bulk Mark Paid — sets status to PAID with today's paidAt for everything eligible (skips already-paid and cancelled rows).
  • Bulk Cancel — moves selected invoices to CANCELLED. Skips paid invoices automatically.
  • Bulk Delete — hard-deletes the selected rows after a confirmation dialog. Use with care; there is no recycle bin.

On Expenses and Clients

On /expenses, bulk-select to delete in one go — useful for cleaning up test data or re-importing a corrected CSV.

On /clients (shipped this week), bulk-select to delete inactive clients. Their invoices are not deleted; they're simply unlinked, so historical revenue stays intact.

Designed Around Selection

Every list view now has a checkbox column on the left. Select all on a page with the header checkbox. Filter first, then select-all to act on the filtered set. The selected count is shown in a sticky action bar that appears only when at least one row is selected — out of your way otherwise.

Safety Rails

Destructive actions (Delete, Cancel) trigger an explicit confirmation dialog showing the exact count. Bulk endpoints are capped at 100 IDs per call to prevent runaway operations. Every bulk action goes through the same authorisation check as the single-item version, scoped to your account — there is no cross-account leakage even if you somehow guessed someone else's ID.

Failures are reported per row. If 47 of 50 invoices send successfully, you get a green toast for the 47 and a yellow toast naming the 3 that didn't, with the reason. No silent partial successes.

What's Next

Bulk export to CSV (selected rows only), bulk re-issue (clone selected drafts with today's date), and bulk currency conversion are next on the list. If there's a bulk action you want and don't see, write to us — most of these shipped because someone asked.

More on the workflow this enables: The Five-Minute Month-End Close.

Product

Frequently Asked Questions

Can't find what you're looking for? Contact us

100 is the right balance between usefulness and safety. It covers a typical month's invoice volume in one click, while bounding worst-case impact if someone accidentally selects-all on a year of data. If you genuinely need to act on more than 100 rows at once, do it in batches — filter, select 100, act, repeat.

Bulk Send, Mark Paid, and Cancel are reversible — you can re-edit the affected invoices to a previous status. Bulk Delete is not undoable; it hard-deletes from the database. The confirmation dialog shows the exact count and forces a separate click to discourage accidents.

Yes. Each invoice keeps its own currency. The bulk Send action processes them independently — a USD invoice goes out with USD totals and the correct VAT line, an AED invoice with AED. There's no global currency setting that overrides the per-invoice value.

Yes. Bulk-deleting expenses removes the underlying receipt files from private storage as part of the same operation. There's no orphaned-receipt state. Deleting a client unlinks invoices but does not delete the invoices themselves; their PDFs remain accessible.

Get Started

Ready to try Hisabi?

Create VAT-compliant, bilingual invoices with AI. Free to start.