Product Icon

Bulk Order Entry – Spreadsheet, Barcode & Reorder for WooCommerce

Your B2B customers already know what they want. Let them type, scan, paste from Excel, upload or reorder. Checked & priced before the cart.
Choose a billing option
$149
Save 20%
$298 $238.40

Product comparison

Subscription includes

  • Product updates and improvements
  • Customer support
  • 30-day money-back guarantee

Wholesale customers don’t browse. They arrive with a list, in a spreadsheet, in a scanner, or in their head from last month’s order. Every click between that list and the cart is friction. Bulk Order Entry gives them one table and five ways to fill it. Every line resolves as it’s entered, against SKU, barcode or your own product code, with the customer’s own price. Anything that doesn’t match stays on screen to be fixed, instead of disappearing silently.


Five ways to fill the table

One form, and it meets the customer wherever their list already is. Turn off the ones you don’t need.

  • Type or search: start typing a name, a SKU, a barcode or an article number. Suggestions appear as they type, and show what’s already in the list.
  • Scan: a barcode scanner is a keyboard, and the form knows one when it sees one. Scan the same box twice and the quantity goes to two. Scan once, then type 24, and you have 24.
  • Paste from Excel: paste two columns straight out of a spreadsheet, products and quantities, or paste each column separately.
  • Upload a spreadsheet: download a catalogue of everything you sell, fill in the quantity column, upload it back. Or upload a file of your own and tell the form which columns to read.
  • Order again: signed-in customers get their saved lists and their recent orders, one click to load either back into the form.

Entries checked before the cart, not after

A code goes in and the line answers immediately: the product it matched, the price that customer pays, and what it comes to. Nobody reaches the cart to find out something was wrong.

  • Four places to match: every code is looked up against your SKU, the GTIN, EAN or UPC field in WooCommerce, a product meta field of your own naming, and the product ID. Variations included.
  • The customer’s own price: the price shown is the price that customer would pay, so role pricing, tiered pricing and tax display all come through. If a plugin gives that customer a different price, the form shows it.
  • Stock, said plainly: a line that is out of stock says so. A line asking for more than you have says how many are left, in its own colour, without refusing the order.
  • Nothing disappears: a code that matches nothing stays on screen, marked, with its quantity intact, so it can be corrected. It is never silently dropped.

Built for a scanner in a warehouse

Plug in any USB or Bluetooth scanner, nothing to configure. The form tells a scan from typing and handles the two things people actually do at a shelf. Scan the same item repeatedly and each scan adds one or scan once and type a number instead. Either way the line flashes so you can see it landed, the field clears itself, and it is ready for the next box without anyone touching the screen.

WooCommerce’s own GTIN, UPC and EAN field is searched out of the box. If your barcodes live somewhere else: an import plugin, a custom field, your ERP’s own code, name that field in settings and it is searched too.

Spreadsheets, both download & upload

Customers download a catalogue of everything they are allowed to order, fill in the quantity column and upload it back. CSV, XLS and XLSX all read.

The file follows your shop. If you sell where prices are written with a comma, the download is separated with semicolons so it opens straight into columns in Excel rather than as one long line per row.

Customers who would rather send their own file can. Upload anything with a product column and a quantity column, then point the form at which is which. A supplier’s export works as well as yours.

A button, a block or a page of its own

Put it wherever your customers already are:

  • As a floating button: on every page or only the ones you choose.
  • As a block: dropped into any page in the editor.
  • As a shortcode: [bulk_order_entry], dropped into any editor.

Yours to control, yours to brand

Bulk ordering is usually made available for some customers and some products, not all of them. Yours to control:

  • Who: allow or block by user role, so the form appears for wholesale accounts and nobody else, or for everyone including guests.
  • What: allow or block whole categories and tags, and exclude individual products or single variations with a checkbox on the product itself.
  • Colour: set five colours and the rest resolves itself: buttons, rules, quiet text, disabled states, the lot. Pick a dark background and the form turns itself the right way up rather than printing dark text on a dark card. Rounded or square corners, and the position and stacking order are yours.
  • Texts & translations: every visible string is editable, per language, so the form uses your store’s tone of voice.

Built to be extended

Templates can be overridden from your theme the ordinary WooCommerce way. Fourteen filters and actions cover the things a developer needs.


All features

Find out what Bulk Order Entry can do for you:

  • One order form with five ways in: type, scan, paste from Excel, upload a file, or reorder
  • Live matching on SKU, GTIN/EAN/UPC, your own product field, and product ID, variations included
  • Every line priced as the customer would pay it, with the running total
  • Out of stock and low stock flagged before the order is placed
  • Unmatched lines kept on screen and editable, never silently dropped
  • Barcode scanner support, with repeat-scan counting and scan-then-type quantities
  • Saved lists and one-click reordering from past orders, for signed-in customers
  • Downloadable catalogue spreadsheet that follows your shop’s own number format
  • Uploads of your customers’ own spreadsheets, with columns mapped at upload
  • Floating widget, Gutenberg block, or the [bulk_order_entry] shortcode
  • Restrict by user role, product category, tag, product or single variation
  • Adjustable widget design
  • Every visible string editable per language, 18 locales included
  • WPML, Polylang and Weglot compatible
  • HPOS compatible
  • Overridable templates and fourteen developer hooks

Frequently asked questions

Does it work with my role-based or wholesale pricing?

Yes. The form asks WooCommerce what that customer would pay, the same way the shop page does, so whatever sets your prices, role pricing, tiered pricing, a B2B plugin, shows through in the table and in the total.

Do my customers need an account?

Only for saved lists and reordering, which need somewhere to save to. Typing, scanning, pasting and uploading all work for guests if you allow it, and you can restrict the whole form to chosen roles.

What if a customer's code doesn't match anything?

The line stays on screen, marked, with its quantity kept, and says so plainly. Nothing is dropped quietly. Four fields are searched before a code is called a miss: your SKU, WooCommerce's GTIN/EAN/UPC field, a product field of your own naming, and the product ID.

Does it work with variations?

Yes. Variations are resolved, priced and ordered like any other product, and can be excluded one at a time.

Will it fit my theme?

It takes five colours and derives everything else from them, so it cannot end up half-branded. It works on a light or a dark background, and both templates can be overridden from your theme if you want to go further.

Does it slow down my site?

Not at all, the widget loads nothing on pages where it does not appear. Where it does, lookups and assets are optimized to ensure fast loading times.

Which file formats can customers upload?

CSV, XLS and XLSX. The separator is detected on the go, so a file saved by a Dutch, German or French copy of Excel reads as well as an English one.

Is it translated?

Into eighteen locales across Dutch, French, German, Spanish and English, and every visible string can also be overridden per language in settings. WPML, Polylang and Weglot are supported.

Extension information

  • PHP version required: 8.1
  • Tested with WordPress: 7.1
  • Tested with WooCommerce: 11.1.0
  • Requires at least WordPress: 6.6
  • Requires at least WooCommerce: 9.6

Compatibility

  • High performance order storage (HPOS)

Countries

  • Worldwide

Languages

Dutch, Dutch (Belgium), English (UK), English (United States), French (Belgium), French (France), German, German (Austria), German (Switzerland), Spanish (Mexico), Spanish (Spain)

Related Products

Price $79 annually
Rated 3.4 out of 5 stars
Price $279 annually
Rated 3.9 out of 5 stars
Price $59 annually
Rated 3.1 out of 5 stars
Price $109 annually
Rated 2.7 out of 5 stars
Price $49 annually
Rated 4.1 out of 5 stars
Price $109 annually
Rated 2 out of 5 stars
Price $109 annually
Rated 2.3 out of 5 stars
Price $39 annually
Rated 2.8 out of 5 stars
Price $109 annually
Rated 2.6 out of 5 stars
Use of your personal data
We and our partners process your personal data (such as browsing data, IP Addresses, cookie information, and other unique identifiers) based on your consent and/or our legitimate interest to optimize our website, marketing activities, and your user experience.