Invoice Bulk Pay
A bulk-payment console for WooCommerce: one card payment settles any set of NET-30 invoices, and every invoice marks itself paid with the gateway transaction reference.
From problem to production.
The problem, the build, and what it changed.
-
01
The problem
The client's trade customers order on NET-30 terms and pay later — often one head office settling many invoices, across several store locations, with a single virtual card. Staff opened every invoice's payment page separately, typed the same card number each time, then manually changed each order's status. Ten invoices meant ten card entries and ten status edits. Worse, WooCommerce refused payment entirely if any product in an old invoice had sold out since the order was placed — blocking money for goods that had already shipped.
-
02
The solution
A bulk-payment console inside WooCommerce. Office staff tick all the invoices one card covers — even across different customer emails and locations — and the plugin builds one itemized payment page. The card is charged once through the store's normal payment gateway; every covered invoice is then marked paid automatically, carrying the card's transaction reference, and moved to Completed. The payment link can also be emailed to the customer's accounts-payable office to enter the card themselves.
-
03
Key features
- One payment, many invoices — any set of outstanding invoices becomes a single itemized payment page
- Everything settles itself — each invoice marked paid with the gateway transaction reference, no manual status edits
- Payment-evidence gate — invoices settle only when the gateway confirms money moved, or a manager logs an offline payment under their own name
- Honest reporting — the collection record is excluded from revenue analytics, so the money is counted once
- Automatic audit trail — every invoice notes which bulk payment covered it; every skip and mismatch is logged
- Payer-friendly — unpaid groups reserve their invoices against double-charging and cancel themselves after 7 days
- The out-of-stock fix — payment pages no longer refuse payment because stock ran out after the order was placed
-
04
Engineering & hardening
Settlement is crash-safe and race-safe: it resumes if interrupted mid-batch, is idempotent under gateway webhook races, and self-heals via cron — no double-charges, no double-credits, no stranded invoices. No card data ever touches the plugin; it integrates through standard gateway flows with zero external services or dependencies. Hardened through three independent audit passes (security, payments correctness, code review) plus end-to-end verification before delivery.
-
05
Outcome
Ten invoices are now one card entry instead of ten, with zero manual status edits. Money for goods that had already shipped stopped being blocked by later stock-outs, and every settlement carries its own audit trail down to the transaction reference.
Inside the plugin.
The screens behind the story above — real production captures, sample data. Click any to zoom.
Need a plugin like Invoice Bulk Pay?
The same engineering — idempotent, hardened, documented — pointed at your business problem. You own the code outright.