Title: PurchaseDesk – Suppliers, Purchase Orders &amp; Cost of Goods for WooCommerce
Author: erenlabs
Published: <strong>August 28, 2026</strong>
Last modified: August 29, 2026

---

Search plugins

![](https://ps.w.org/purchasedesk-for-woocommerce/assets/banner-772x250.png?rev=
3671001)

![](https://ps.w.org/purchasedesk-for-woocommerce/assets/icon-256x256.png?rev=3671001)

# PurchaseDesk – Suppliers, Purchase Orders & Cost of Goods for WooCommerce

 By [erenlabs](https://profiles.wordpress.org/erenlabs/)

[Download](https://downloads.wordpress.org/plugin/purchasedesk-for-woocommerce.1.0.4.zip)

 * [Details](https://wordpress.org/plugins/purchasedesk-for-woocommerce/#description)
 * [Reviews](https://wordpress.org/plugins/purchasedesk-for-woocommerce/#reviews)
 *  [Installation](https://wordpress.org/plugins/purchasedesk-for-woocommerce/#installation)
 * [Development](https://wordpress.org/plugins/purchasedesk-for-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/purchasedesk-for-woocommerce/)

## Description

WooCommerce tracks what you sell. It has never tracked what you **buy** — so the

purchasing side of a store ends up in a spreadsheet, and the cost of goods ends 
up out of date.

PurchaseDesk closes that half of the loop. Create a purchase order for a
 supplier,
send it, then receive the goods when the box arrives — in full or a few units at
a time. Receiving is the only step you take: stock goes up, the product’s cost is
updated, and the receipt is logged so you can see exactly who received what, when,
and at what price.

#### What it does

 * **Suppliers** — real supplier records with contact person, email, phone, address,
   lead time and notes.
 * **Purchase orders** — search your catalogue by name, SKU or barcode and add lines
   in a click; set quantity and unit cost per line; track the order through draft
   ordered  partially received  received. Search, filter and sort the order list.
 * **Goods receipt, in full or a few units at a time** — stock is written through
   WooCommerce’s own product API, so every integration, low-stock notice and lookup
   table stays correct. Receiving the same delivery twice cannot double-count.
 * **Scan to receive** — a barcode scanner is just a fast keyboard. Scan a code 
   and the matching line counts up.
 * **Stock adjustments** — record damage, loss, customer returns, goods sent back
   to a supplier or a plain correction, each with a reason and a note.
 * **Product cost the rest of your store can see** — cost is written where WooCommerce
   and the established cost-of-goods plugins read it, including WooCommerce’s built-
   in Cost of Goods Sold field when you have it enabled.
 * **Planning grid** — set reorder points, default order quantities and suppliers
   for a whole page of products at once, and edit each product’s cost and supplier
   SKU inline on the same screen. Setting them one product at a time is why inventory
   plugins stay empty.
 * **Reorder list** — everything at or below its reorder point, with anything already
   on its way subtracted so you never buy the same thing twice. Snooze a product
   for two weeks when you do not want to see it.
 * **Undo a receipt** — received 100 when 10 arrived? Reverse it. Stock and the 
   order go back, and the reversal is written into the history rather than hiding
   the mistake.
 * **Email the order to your supplier** — the products, quantities and prices, sent
   from your own site.
 * **Full history** — an audit line for every receipt, reversal and adjustment, 
   with the quantity and the stock level before and after; receipts also record 
   the unit cost, adjustments the reason. Deleting an order never destroys it.
 * **Duplicate an order** — next week’s order is usually last week’s order. Copy
   any purchase order into a fresh draft: same supplier, same lines, same costs,
   nothing received.
 * **Bulk actions on the order list** — mark a whole page of orders as ordered, 
   move them back to draft, cancel or delete them in one go, with status tabs that
   carry a count.
 * **Export your own records** — purchase orders, goods received and every stock
   movement, as CSV, whenever you want. Your records are yours; nothing is held 
   back to sell you an upgrade.
 * **CSV import with a dry run** — bring cost, supplier, supplier SKU, reorder point
   and default order quantity in from a spreadsheet. You see exactly what will change—
   row by row, with the numbers already read the way they will be written — before
   anything is saved.
 * **Settings** — order numbering, whether receiving updates cost, who is allowed
   to change stock, and how many orders a page shows.

#### Works with the rest of your stack

Cost is not stored in a private field. PurchaseDesk reads and writes the keys
 the
WooCommerce ecosystem already uses, and prefers WooCommerce core’s own Cost of Goods
Sold value when that feature is switched on. If you already have costs from another
inventory or cost-of-goods plugin, PurchaseDesk reads them on day one — nothing 
to migrate.

#### PurchaseDesk Pro

A separate paid version is available from the plugin’s home page and adds:

 * Weighted-average costing (instead of last-cost) as stock arrives
 * Turn the reorder list into draft purchase orders in one click, grouped by supplier
 * A purchasing dashboard: stock value at cost, spend versus the previous period,
   and a receipts trend chart
 * Purchase reports over a period you pick (7, 30, 90, 180 or 365 days): spend by
   supplier with each supplier’s share, receipts over time, and the value still 
   on order
 * A full inbound table: everything outstanding per product across every open order
   on one screen (the free reorder list already subtracts what is on its way, and
   the free dashboard totals it)
 * A printable purchase order to send your supplier (print or save as PDF from your
   browser)
 * Export the spend REPORT as CSV for the period you are looking at (your own records
   export free, above)
 * A purchasing dashboard trend chart and stock value at cost
 * Scan barcodes with a phone camera while receiving, where the browser provides
   the Barcode Detection API: Chrome or Edge on Android, and Chrome on macOS (Windows,
   Linux and iOS browsers do not offer it today; a USB or Bluetooth scanner works
   everywhere and is free)
 * Email support answered on weekdays by the developer

## Screenshots

[⌊The dashboard: what is open, what is late, what needs reordering, and every stock
movement as it happens.⌉⌊The dashboard: what is open, what is late, what needs reordering,
and every stock movement as it happens.⌉[

The dashboard: what is open, what is late, what needs reordering, and every stock
movement as it happens.

[⌊A purchase order — search your catalogue by name, SKU or barcode, then receive
the delivery in full or a few units at a time.⌉⌊A purchase order — search your catalogue
by name, SKU or barcode, then receive the delivery in full or a few units at a time
.⌉[

A purchase order — search your catalogue by name, SKU or barcode, then receive the
delivery in full or a few units at a time.

[⌊Receiving records who received what, at what price, and what the stock level was
before and after.⌉⌊Receiving records who received what, at what price, and what 
the stock level was before and after.⌉[

Receiving records who received what, at what price, and what the stock level was
before and after.

[⌊The planning grid — reorder points, order quantities and suppliers set for a whole
page at once, with cost and supplier SKU edited inline.⌉⌊The planning grid — reorder
points, order quantities and suppliers set for a whole page at once, with cost and
supplier SKU edited inline.⌉[

The planning grid — reorder points, order quantities and suppliers set for a whole
page at once, with cost and supplier SKU edited inline.

[⌊The reorder list, with anything already on its way subtracted so you never buy
the same thing twice.⌉⌊The reorder list, with anything already on its way subtracted
so you never buy the same thing twice.⌉[

The reorder list, with anything already on its way subtracted so you never buy the
same thing twice.

[⌊Stock adjustments: damage, loss, customer returns and corrections, each with a
reason.⌉⌊Stock adjustments: damage, loss, customer returns and corrections, each
with a reason.⌉[

Stock adjustments: damage, loss, customer returns and corrections, each with a reason.

[⌊Supplier records with contact details and lead time, and the order emailed straight
to them.⌉⌊Supplier records with contact details and lead time, and the order emailed
straight to them.⌉[

Supplier records with contact details and lead time, and the order emailed straight
to them.

[⌊Cost history on the product itself — see whether a supplier's price is creeping.⌉⌊
Cost history on the product itself — see whether a supplier's price is creeping.⌉[

Cost history on the product itself — see whether a supplier’s price is creeping.

[⌊Settings: order numbering, whether receiving updates cost, and who is allowed 
to change stock.⌉⌊Settings: order numbering, whether receiving updates cost, and
who is allowed to change stock.⌉[

Settings: order numbering, whether receiving updates cost, and who is allowed to
change stock.

## Installation

 1. Upload the `purchasedesk-for-woocommerce` folder to `/wp-content/plugins/`.
 2. Activate the plugin through the **Plugins** menu in WordPress.
 3. Open **PurchaseDesk  Suppliers** and add your first supplier.

WooCommerce must be installed and active.

## FAQ

### Does this change how WooCommerce stores stock?

No. Stock is written through WooCommerce’s own product API, exactly the way the

product screen does it, so anything that listens for stock changes keeps working.

### Where is the product cost stored?

If WooCommerce’s Cost of Goods Sold feature is enabled (WooCommerce  Settings 
 
Advanced  Features), that is the value PurchaseDesk writes. It also mirrors the 
cost to the meta keys that established cost-of-goods plugins read, so reports elsewhere
in your store agree with it.

### Can I receive part of an order?

Yes. Receive line by line and in any quantity; the order moves to “partially
 received”
until every line is complete. Receiving the same delivery twice cannot double-count,
because each line records how much has already been posted.

### Does it work with variable products?

Yes. Add the specific variation rather than the parent, because a variable
 product
does not hold stock of its own — PurchaseDesk asks you for the variation if you 
pick a parent by mistake. Receipts, adjustments and history record both the parent
product and the variation, so reports line up either way.

### I already track cost with another plugin. Do I have to migrate?

No. PurchaseDesk reads the cost keys the WooCommerce ecosystem already uses, and

prefers WooCommerce core’s own Cost of Goods Sold value when that feature is switched
on. Existing costs show up on day one; there is nothing to import.

### Can I bring suppliers, costs and reorder points in from a spreadsheet?

Yes. The CSV import covers cost, supplier, supplier SKU, reorder point and
 default
order quantity, and it runs a dry run first: you see row by row exactly what will
change, with the numbers already read the way they will be written, before anything
is saved.

### I received the wrong quantity. Can I undo it?

Yes. Reverse the receipt and both the stock level and the order go back to where

they were. The reversal is written into the history as its own line rather than 
quietly editing the original, so the audit trail still shows what happened.

### Does my shop manager need to be an administrator to use it?

No. PurchaseDesk checks the standard WooCommerce capability, so any Shop Manager

can work with orders and receipts. A separate setting controls who is allowed to
change stock, if you want receiving to be narrower than that.

### Can I send the purchase order to my supplier?

Yes. The order — products, quantities and prices — can be emailed to the supplier

from your own site. Pro also adds a printable version you can save as a PDF from
your browser.

### What happens to my data if I delete the plugin?

Deleting PurchaseDesk removes what it created: its tables, its settings and its

supplier records. Export first if you want to keep the history — purchase orders,
goods received and every stock movement export as CSV for free, at any time. If 
you have both the free and the paid build on disk, removing one leaves the other’s
data alone.

### Is this what we call goods inwards?

Yes. Goods inwards, goods receipt, a goods received note (GRN), booking in a
 delivery—
the same job under different names. You raise a purchase order for a supplier, and
when the boxes turn up you receive against that order, in full or a few units at
a time. Stock goes up, the product cost is updated where the rest of your store 
can read it, and the receipt is logged with who booked it in, when, and at what 
price.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“PurchaseDesk – Suppliers, Purchase Orders & Cost of Goods for WooCommerce” is open
source software. The following people have contributed to this plugin.

Contributors

 *   [ erenlabs ](https://profiles.wordpress.org/erenlabs/)

[Translate “PurchaseDesk – Suppliers, Purchase Orders & Cost of Goods for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/purchasedesk-for-woocommerce)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/purchasedesk-for-woocommerce/),
check out the [SVN repository](https://plugins.svn.wordpress.org/purchasedesk-for-woocommerce/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/purchasedesk-for-woocommerce/)
by [RSS](https://plugins.trac.wordpress.org/log/purchasedesk-for-woocommerce/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.4

 * The plugin’s home link now opens the PurchaseDesk page instead of the Eren Labs
   home page.

#### 1.0.3

 * Fixed: the stock-movements CSV export produced an empty file. It queried a column
   the table does not have, so the download contained only its header row.
 * Corrected the description of the planning grid, the audit trail, the Pro report
   period and the phone-camera browser support to match exactly what the plugin 
   does.

#### 1.0.2

 * Read only the settings keys the screen owns, one per line, each sanitized with
   a core WordPress function instead of a helper of our own.

#### 1.0.1

 * Sanitize every request value the moment it is read, arrays included, rather than
   at the point of use.
 * Drop load_plugin_textdomain(); WordPress has loaded directory-hosted translations
   automatically since 4.6.

#### 1.0.0

 * First public release: suppliers, purchase orders with catalogue search, bulk 
   actions and one-click duplication, goods receipt in full or a few units at a 
   time, scan-to-receive, receipt reversal, stock adjustments, the planning grid,
   the reorder list, CSV import with a dry run, cost history, email to supplier,
   and a dashboard.

## Meta

 *  Version **1.0.4**
 *  Last updated **13 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 8.1 or higher **
 * Tags
 * [cost of goods](https://wordpress.org/plugins/tags/cost-of-goods/)[goods receipt](https://wordpress.org/plugins/tags/goods-receipt/)
   [purchase orders](https://wordpress.org/plugins/tags/purchase-orders/)[reorder](https://wordpress.org/plugins/tags/reorder/)
   [suppliers](https://wordpress.org/plugins/tags/suppliers/)
 *  [Advanced View](https://wordpress.org/plugins/purchasedesk-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/purchasedesk-for-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/purchasedesk-for-woocommerce/reviews/)

## Contributors

 *   [ erenlabs ](https://profiles.wordpress.org/erenlabs/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/purchasedesk-for-woocommerce/)