{"id":359610,"date":"2026-08-28T23:29:48","date_gmt":"2026-08-28T23:29:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/purchasedesk-for-woocommerce\/"},"modified":"2026-09-08T18:42:10","modified_gmt":"2026-09-08T18:42:10","slug":"purchasedesk-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/ast.wordpress.org\/plugins\/purchasedesk-for-woocommerce\/","author":23527105,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.11","stable_tag":"1.0.11","tested":"7.1","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"PurchaseDesk \u2013 Suppliers, Purchase Orders & Cost of Goods for WooCommerce","header_author":"Eren Labs","header_description":"Buy stock the way you sell it. Raise purchase orders, keep supplier records, receive goods (fully or partially) and let WooCommerce stock and product cost update in one step. Pro adds weighted-average costing, reorder automation, purchase reports and a printable order.","assets_banners_color":"665f7d","last_updated":"2026-09-08 18:42:10","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/erenlabs.net\/plugins\/purchasedesk\/","header_author_uri":"https:\/\/erenlabs.net","rating":0,"author_block_rating":0,"active_installs":0,"downloads":297,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.10":{"tag":"1.0.10","author":"erenlabs","date":"2026-09-07 01:06:12","revision":3684056},"1.0.11":{"tag":"1.0.11","author":"erenlabs","date":"2026-09-08 18:42:10","revision":3687169},"1.0.3":{"tag":"1.0.3","author":"erenlabs","date":"2026-08-29 00:04:53","revision":3671021},"1.0.4":{"tag":"1.0.4","author":"erenlabs","date":"2026-08-29 00:47:37","revision":3671044},"1.0.6":{"tag":"1.0.6","author":"erenlabs","date":"2026-09-05 12:16:00","revision":3682413},"1.0.7":{"tag":"1.0.7","author":"erenlabs","date":"2026-09-05 22:39:15","revision":3682855},"1.0.8":{"tag":"1.0.8","author":"erenlabs","date":"2026-09-05 23:49:13","revision":3682871},"1.0.9":{"tag":"1.0.9","author":"erenlabs","date":"2026-09-06 16:26:36","revision":3683664}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3671001,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3671001,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3671001,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3671001,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3687170,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/wp-admin\\\/admin.php?page=purchasedesk-for-woocommerce\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"features\":{\"networking\":true},\"steps\":[{\"step\":\"setSiteOptions\",\"options\":{\"blogname\":\"PurchaseDesk demo shop\",\"woocommerce_onboarding_profile\":{\"skipped\":true},\"woocommerce_task_list_hidden\":\"yes\",\"woocommerce_default_country\":\"GB\",\"woocommerce_currency\":\"GBP\",\"woocommerce_store_address\":\"12 Market Row\",\"woocommerce_store_city\":\"Leeds\",\"woocommerce_store_postcode\":\"LS1 6DT\"}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"woocommerce\"},\"options\":{\"activate\":true}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"purchasedesk-for-woocommerce\"},\"options\":{\"activate\":true}},{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire_once '\\\/wordpress\\\/wp-load.php';\\nif ( ! function_exists( 'wc_get_product' ) ) { return; }\\n\\\/\\\/ Measured in Playground: WooCommerce's activation redirect fired on the first\\n\\\/\\\/ admin load and replaced landingPage with wc-admin. Clear it, and the task\\n\\\/\\\/ list that would otherwise sit on top of every screen.\\ndelete_transient( '_wc_activation_redirect' );\\nupdate_option( 'woocommerce_task_list_hidden', 'yes' );\\nupdate_option( 'woocommerce_onboarding_profile', array( 'skipped' => true ) );\\n$rows = array(\\n  array( 'Cold Brew Coffee Beans 250g', 'CB-250', '5012345678900', 12.90, 7.10, 24 ),\\n  array( 'Espresso Roast 1kg',          'ER-1K',  '5012345678917', 28.00, 15.40, 9 ),\\n  array( 'Ceramic Pour-Over Dripper',   'DR-CER', '5012345678924', 19.50, 8.20, 15 ),\\n  array( 'Paper Filters (100)',         'PF-100', '5012345678931', 4.20,  1.60, 60 ),\\n  array( 'Insulated Travel Mug 350ml',  'MUG-35', '5012345678948', 16.00, 6.90, 18 ),\\n  array( 'Hand Grinder',                'GR-HND', '5012345678955', 42.00, 21.00, 5 ),\\n  array( 'Digital Scale 0.1g',          'SC-01',  '5012345678962', 24.90, 11.30, 11 ),\\n  array( 'Gooseneck Kettle 1L',         'KT-1L',  '5012345678979', 39.00, 19.80, 6 ),\\n  array( 'Cleaning Tablets (30)',       'CT-30',  '5012345678986', 9.90,  3.80, 33 ),\\n  array( 'Gift Box Set',                'GB-SET', '5012345678993', 55.00, 27.50, 4 ),\\n);\\nforeach ( $rows as $r ) {\\n  if ( wc_get_product_id_by_sku( $r[1] ) ) { continue; }\\n  $p = new WC_Product_Simple();\\n  $p->set_name( $r[0] ); $p->set_sku( $r[1] ); $p->set_regular_price( (string) $r[3] );\\n  $p->set_manage_stock( true ); $p->set_stock_quantity( $r[5] ); $p->set_status( 'publish' );\\n  $p->update_meta_data( '_barcode', $r[2] );\\n  $p->update_meta_data( '_wc_cog_cost', (string) $r[4] );\\n  $p->save();\\n}\\n\\nif ( post_type_exists( 'erenlabs_supplier' ) && ! get_page_by_title( 'Northline Coffee Imports', OBJECT, 'erenlabs_supplier' ) ) {\\n  $sid = wp_insert_post( array( 'post_title' => 'Northline Coffee Imports', 'post_type' => 'erenlabs_supplier', 'post_status' => 'publish' ) );\\n  if ( $sid && ! is_wp_error( $sid ) ) {\\n    update_post_meta( $sid, '_pdwc_email', 'orders@northline.example' );\\n    update_post_meta( $sid, '_pdwc_contact', 'Mara Lindqvist' );\\n    update_post_meta( $sid, '_pdwc_phone', '+44 20 7946 0958' );\\n    update_post_meta( $sid, '_pdwc_lead_days', 7 );\\n  }\\n}\\n\\n\"}]}"}},"all_blocks":[],"tagged_versions":["1.0.10","1.0.11","1.0.3","1.0.4","1.0.6","1.0.7","1.0.8","1.0.9"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3671001,"resolution":"1","location":"assets","locale":"","width":2640,"height":1800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3671001,"resolution":"2","location":"assets","locale":"","width":2640,"height":1800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3671001,"resolution":"3","location":"assets","locale":"","width":2640,"height":1800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3671001,"resolution":"4","location":"assets","locale":"","width":2640,"height":1800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3671001,"resolution":"5","location":"assets","locale":"","width":2640,"height":1800},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3671001,"resolution":"6","location":"assets","locale":"","width":2640,"height":1800},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3671001,"resolution":"7","location":"assets","locale":"","width":2640,"height":1800},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3671001,"resolution":"8","location":"assets","locale":"","width":2640,"height":1800},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3671001,"resolution":"9","location":"assets","locale":"","width":2640,"height":1800}},"screenshots":{"1":"The dashboard: what is open, what is late, what needs reordering, and every stock movement as it happens.","2":"A purchase order \u2014 search your catalogue by name, SKU or barcode, then receive the delivery in full or a few units at a time.","3":"Receiving records who received what, at what price, and what the stock level was before and after.","4":"The planning grid \u2014 reorder points, order quantities and suppliers set for a whole page at once, with cost and supplier SKU edited inline.","5":"The reorder list, with anything already on its way subtracted so you never buy the same thing twice.","6":"Stock adjustments: damage, loss, customer returns and corrections, each with a reason.","7":"Supplier records with contact details and lead time, and the order emailed straight to them.","8":"Cost history on the product itself \u2014 see whether a supplier's price is creeping.","9":"Settings: order numbering, whether receiving updates cost, and who is allowed to change stock."}},"plugin_section":[],"plugin_tags":[233971,132181,279770,146690,261416],"plugin_category":[],"plugin_contributors":[271033],"plugin_business_model":[],"class_list":["post-359610","plugin","type-plugin","status-publish","hentry","plugin_tags-cogs","plugin_tags-cost-of-goods","plugin_tags-goods-received-note","plugin_tags-purchase-order","plugin_tags-vendor-management","plugin_contributors-erenlabs","plugin_committers-erenlabs"],"banners":{"banner":"https:\/\/ps.w.org\/purchasedesk-for-woocommerce\/assets\/banner-772x250.png?rev=3671001","banner_2x":"https:\/\/ps.w.org\/purchasedesk-for-woocommerce\/assets\/banner-1544x500.png?rev=3671001","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/purchasedesk-for-woocommerce\/assets\/icon-128x128.png?rev=3671001","icon_2x":"https:\/\/ps.w.org\/purchasedesk-for-woocommerce\/assets\/icon-256x256.png?rev=3671001","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/purchasedesk-for-woocommerce\/assets\/screenshot-1.png?rev=3671001","caption":"The dashboard: what is open, what is late, what needs reordering, and every stock movement as it happens."},{"src":"https:\/\/ps.w.org\/purchasedesk-for-woocommerce\/assets\/screenshot-2.png?rev=3671001","caption":"A purchase order \u2014 search your catalogue by name, SKU or barcode, then receive the delivery in full or a few units at a time."},{"src":"https:\/\/ps.w.org\/purchasedesk-for-woocommerce\/assets\/screenshot-3.png?rev=3671001","caption":"Receiving records who received what, at what price, and what the stock level was before and after."},{"src":"https:\/\/ps.w.org\/purchasedesk-for-woocommerce\/assets\/screenshot-4.png?rev=3671001","caption":"The planning grid \u2014 reorder points, order quantities and suppliers set for a whole page at once, with cost and supplier SKU edited inline."},{"src":"https:\/\/ps.w.org\/purchasedesk-for-woocommerce\/assets\/screenshot-5.png?rev=3671001","caption":"The reorder list, with anything already on its way subtracted so you never buy the same thing twice."},{"src":"https:\/\/ps.w.org\/purchasedesk-for-woocommerce\/assets\/screenshot-6.png?rev=3671001","caption":"Stock adjustments: damage, loss, customer returns and corrections, each with a reason."},{"src":"https:\/\/ps.w.org\/purchasedesk-for-woocommerce\/assets\/screenshot-7.png?rev=3671001","caption":"Supplier records with contact details and lead time, and the order emailed straight to them."},{"src":"https:\/\/ps.w.org\/purchasedesk-for-woocommerce\/assets\/screenshot-8.png?rev=3671001","caption":"Cost history on the product itself \u2014 see whether a supplier's price is creeping."},{"src":"https:\/\/ps.w.org\/purchasedesk-for-woocommerce\/assets\/screenshot-9.png?rev=3671001","caption":"Settings: order numbering, whether receiving updates cost, and who is allowed to change stock."}],"raw_content":"<!--section=description-->\n<p>WooCommerce tracks what you sell. It has never tracked what you <strong>buy<\/strong> \u2014 so the\npurchasing side of a store ends up in a spreadsheet, and the cost of goods ends\nup out of date.<\/p>\n\n<p>PurchaseDesk closes that half of the loop: purchase order software for inventory\npurchasing that lives inside the store you already run. Raise a purchase order for a supplier, send it,\nthen receive the goods when the box arrives \u2014 in full or a few units at a time.\nReceiving is the only step you take: stock goes up, the product's cost of goods\n(COGS) is updated, and the receipt is logged so you can see exactly who received\nwhat, when, and at what price.<\/p>\n\n<h4>Purchase orders, goods receipt and COGS in one pass<\/h4>\n\n<p>Purchasing is three jobs that most stores do in three places. PurchaseDesk does\nthem in one:<\/p>\n\n<ol>\n<li><strong>Raise the purchase order.<\/strong> Pick a supplier, search your catalogue by name,\nSKU or barcode, set quantity and unit cost per line, and send it. Track it\nthrough draft \u2192 ordered \u2192 partially received \u2192 received.<\/li>\n<li><strong>Book the goods in.<\/strong> When the delivery lands, receive against the order \u2014\nthe whole thing or the eleven units that actually turned up. This is the goods\nreceived note step \u2014 stock receiving proper \u2014 and it is the only place stock moves.<\/li>\n<li><strong>Let the cost follow.<\/strong> The unit cost you received at becomes the product's\ncost of goods, written where WooCommerce and the established COGS plugins read\nit \u2014 including WooCommerce core's own Cost of Goods Sold field when that feature\nis on.<\/li>\n<\/ol>\n\n<p>Because the receipt <em>is<\/em> the stock movement, there is nothing to reconcile\nafterwards: no second system, no CSV round-trip, no month-end guess about what\nyou actually paid. That is the whole point of keeping purchase management inside\nWooCommerce rather than beside it.<\/p>\n\n<h4>Supplier management, and the reorder list that uses it<\/h4>\n\n<p>Supplier management here means real records \u2014 contact person, email, phone,\naddress, lead time and notes \u2014 not a text field on an order. Set a default supplier and a\nsupplier SKU per product, keep reorder points and default order quantities on\nthe same screen, and the reorder list tells you what to buy next, with anything\nalready on its way subtracted so you never order the same thing twice.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li><strong>Suppliers<\/strong> \u2014 real supplier records with contact person, email, phone, address, lead time and notes.<\/li>\n<li><strong>Purchase orders<\/strong> \u2014 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 \u2192 ordered \u2192 partially received \u2192 received. Search, filter and sort the order list.<\/li>\n<li><strong>Goods receipt, in full or a few units at a time<\/strong> \u2014 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.<\/li>\n<li><strong>Scan to receive<\/strong> \u2014 a barcode scanner is just a fast keyboard. Scan a code and the matching line counts up.<\/li>\n<li><strong>Stock adjustments<\/strong> \u2014 record damage, loss, customer returns, goods sent back to a supplier or a plain correction, each with a reason and a note.<\/li>\n<li><strong>Product cost the rest of your store can see<\/strong> \u2014 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.<\/li>\n<li><strong>Planning grid<\/strong> \u2014 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.<\/li>\n<li><strong>Reorder list<\/strong> \u2014 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.<\/li>\n<li><strong>Undo a receipt<\/strong> \u2014 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.<\/li>\n<li><strong>Email the order to your supplier<\/strong> \u2014 the products, quantities and prices, sent from your own site.<\/li>\n<li><strong>Full history<\/strong> \u2014 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.<\/li>\n<li><strong>Duplicate an order<\/strong> \u2014 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.<\/li>\n<li><strong>Bulk actions on the order list<\/strong> \u2014 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.<\/li>\n<li><strong>Export your own records<\/strong> \u2014 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.<\/li>\n<li><strong>CSV import with a dry run<\/strong> \u2014 bring cost, supplier, supplier SKU, reorder point and default order quantity in from a spreadsheet. You see exactly what will change \u2014 row by row, with the numbers already read the way they will be written \u2014 before anything is saved.<\/li>\n<li><strong>Settings<\/strong> \u2014 order numbering, whether receiving updates cost, who is allowed to change stock, and how many orders a page shows.<\/li>\n<\/ul>\n\n<h4>Works with the rest of your stack<\/h4>\n\n<p>Cost is not stored in a private field. PurchaseDesk reads and writes the keys\nthe WooCommerce ecosystem already uses, and prefers WooCommerce core's own Cost\nof Goods Sold value when that feature is switched on. If you already have costs\nfrom another inventory or cost-of-goods plugin, PurchaseDesk reads them on day\none \u2014 nothing to migrate.<\/p>\n\n<h4>PurchaseDesk Pro<\/h4>\n\n<p>A separate paid version is available from the plugin's home page and adds:<\/p>\n\n<ul>\n<li>Weighted-average costing (instead of last-cost) as stock arrives<\/li>\n<li>Turn the reorder list into draft purchase orders in one click, grouped by supplier<\/li>\n<li>A purchasing dashboard: stock value at cost, spend versus the previous period, and a receipts trend chart<\/li>\n<li>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<\/li>\n<li>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)<\/li>\n<li>A printable purchase order to send your supplier (print or save as PDF from your browser)<\/li>\n<li>Export the spend REPORT as CSV for the period you are looking at (your own records export free, above)<\/li>\n<li>A purchasing dashboard trend chart and stock value at cost<\/li>\n<li>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)<\/li>\n<li>Email support answered on weekdays by the developer<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin can connect to Freemius (freemius.com) to power the optional Pro upgrade: licence activation, automatic updates for the paid version, and the checkout\/upgrade screens. <strong>Nothing is sent unless you opt in.<\/strong> If you click \"Allow &amp; Continue\" during the optional opt-in, non-sensitive environment data (site URL, WordPress and PHP versions, active theme\/plugins and your admin email) is sent to Freemius to enable licensing and updates; if you skip it, no data is transmitted. Freemius is only contacted for these upgrade\/licensing actions.<\/p>\n\n<ul>\n<li>Freemius Terms of Use: https:\/\/freemius.com\/terms\/<\/li>\n<li>Freemius Privacy Policy: https:\/\/freemius.com\/privacy\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>purchasedesk-for-woocommerce<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Open <strong>PurchaseDesk \u2192 Suppliers<\/strong> and add your first supplier.<\/li>\n<\/ol>\n\n<p>WooCommerce must be installed and active.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20a%20goods%20received%20note%20%28grn%29%3F\"><h3>Is this a goods received note (GRN)?<\/h3><\/dt>\n<dd><p>That is exactly what the receiving step is. When a delivery arrives you receive\nagainst the purchase order \u2014 in full or line by line \u2014 and PurchaseDesk records\nthe quantity, the unit cost, who received it and when, then moves the stock. The\nhistory keeps every receipt, so the goods received note is a record you can go\nback to rather than a slip of paper in a drawer.<\/p><\/dd>\n<dt id=\"does%20purchasedesk%20calculate%20landed%20cost%3F\"><h3>Does PurchaseDesk calculate landed cost?<\/h3><\/dt>\n<dd><p>Not today, and it is worth being clear about it. PurchaseDesk records the <strong>unit\ncost<\/strong> you actually paid on each purchase order line and writes that through as\nthe product's cost of goods. It does not spread freight, duty, insurance or\ncustoms handling across the lines, which is what landed cost means. If your\nmargins depend on landed cost you can enter a unit cost that already includes\nyour own allocation \u2014 the field is yours \u2014 but the plugin will not do the\nallocation for you.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20for%20vendor%20management%2C%20not%20just%20purchasing%3F\"><h3>Can I use it for vendor management, not just purchasing?<\/h3><\/dt>\n<dd><p>Yes, within reason. Suppliers are first-class records with contact details, lead\ntime and notes, and every order, receipt and adjustment is filed against the\nvendor it belongs to \u2014 so you can see what you buy from whom, how often, and at\nwhat price. It is purchasing-side vendor management; it is not a contracts,\nonboarding or compliance system.<\/p><\/dd>\n<dt id=\"does%20this%20change%20how%20woocommerce%20stores%20stock%3F\"><h3>Does this change how WooCommerce stores stock?<\/h3><\/dt>\n<dd><p>No. Stock is written through WooCommerce's own product API, exactly the way the\nproduct screen does it, so anything that listens for stock changes keeps working.<\/p><\/dd>\n<dt id=\"where%20is%20the%20product%20cost%20stored%3F\"><h3>Where is the product cost stored?<\/h3><\/dt>\n<dd><p>If WooCommerce's Cost of Goods Sold feature is enabled (WooCommerce \u2192 Settings \u2192\nAdvanced \u2192 Features), that is the value PurchaseDesk writes. It also mirrors the\ncost to the meta keys that established cost-of-goods plugins read, so reports\nelsewhere in your store agree with it.<\/p><\/dd>\n<dt id=\"can%20i%20receive%20part%20of%20an%20order%3F\"><h3>Can I receive part of an order?<\/h3><\/dt>\n<dd><p>Yes. Receive line by line and in any quantity; the order moves to \"partially\nreceived\" until every line is complete. Receiving the same delivery twice cannot\ndouble-count, because each line records how much has already been posted.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20variable%20products%3F\"><h3>Does it work with variable products?<\/h3><\/dt>\n<dd><p>Yes. Add the specific variation rather than the parent, because a variable\nproduct does not hold stock of its own \u2014 PurchaseDesk asks you for the variation\nif you pick a parent by mistake. Receipts, adjustments and history record both\nthe parent product and the variation, so reports line up either way.<\/p><\/dd>\n<dt id=\"i%20already%20track%20cost%20with%20another%20plugin.%20do%20i%20have%20to%20migrate%3F\"><h3>I already track cost with another plugin. Do I have to migrate?<\/h3><\/dt>\n<dd><p>No. PurchaseDesk reads the cost keys the WooCommerce ecosystem already uses, and\nprefers WooCommerce core\u2019s own Cost of Goods Sold value when that feature is\nswitched on. Existing costs show up on day one; there is nothing to import.<\/p><\/dd>\n<dt id=\"can%20i%20bring%20suppliers%2C%20costs%20and%20reorder%20points%20in%20from%20a%20spreadsheet%3F\"><h3>Can I bring suppliers, costs and reorder points in from a spreadsheet?<\/h3><\/dt>\n<dd><p>Yes. The CSV import covers cost, supplier, supplier SKU, reorder point and\ndefault order quantity, and it runs a dry run first: you see row by row exactly\nwhat will change, with the numbers already read the way they will be written,\nbefore anything is saved.<\/p><\/dd>\n<dt id=\"i%20received%20the%20wrong%20quantity.%20can%20i%20undo%20it%3F\"><h3>I received the wrong quantity. Can I undo it?<\/h3><\/dt>\n<dd><p>Yes. Reverse the receipt and both the stock level and the order go back to where\nthey were. The reversal is written into the history as its own line rather than\nquietly editing the original, so the audit trail still shows what happened.<\/p><\/dd>\n<dt id=\"does%20my%20shop%20manager%20need%20to%20be%20an%20administrator%20to%20use%20it%3F\"><h3>Does my shop manager need to be an administrator to use it?<\/h3><\/dt>\n<dd><p>No. PurchaseDesk checks the standard WooCommerce capability, so any Shop Manager\ncan work with orders and receipts. A separate setting controls who is allowed to\nchange stock, if you want receiving to be narrower than that.<\/p><\/dd>\n<dt id=\"can%20i%20send%20the%20purchase%20order%20to%20my%20supplier%3F\"><h3>Can I send the purchase order to my supplier?<\/h3><\/dt>\n<dd><p>Yes. The order \u2014 products, quantities and prices \u2014 can be emailed to the supplier\nfrom your own site. Pro also adds a printable version you can save as a PDF from\nyour browser.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20delete%20the%20plugin%3F\"><h3>What happens to my data if I delete the plugin?<\/h3><\/dt>\n<dd><p>Deleting PurchaseDesk removes what it created: its tables, its settings and its\nsupplier records. Export first if you want to keep the history \u2014 purchase orders,\ngoods received and every stock movement export as CSV for free, at any time. If\nyou have both the free and the paid build on disk, removing one leaves the\nother\u2019s data alone.<\/p><\/dd>\n<dt id=\"is%20this%20what%20we%20call%20goods%20inwards%3F\"><h3>Is this what we call goods inwards?<\/h3><\/dt>\n<dd><p>Yes. Goods inwards, goods receipt, a goods received note (GRN), booking in a\ndelivery \u2014 the same job under different names. You raise a purchase order for a\nsupplier, and when the boxes turn up you receive against that order, in full or\na few units at a time. Stock goes up, the product cost is updated where the rest\nof your store can read it, and the receipt is logged with who booked it in, when,\nand at what price.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>New: the upgrade screen carries a full Store Suite section - a sample screen per plugin, what it is for, five capabilities, who it suits, its own price and a button to its product page, with the bundle arithmetic beside the purchase box.<\/li>\n<li>New: PurchaseDesk's own upgrade page gains a purchasing-dashboard preview, a three-step \"Upgrading takes a minute\" block, and four more questions - including what happens to weighted-average cost if the licence lapses.<\/li>\n<li>Translations: all seven bundled languages updated for the whole upgrade screen, plus strings that had been English since earlier releases - the review request, the automatic-reordering notices, the reorder-list shortfall line and the \"receipt already reversed\" message.<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>New: Eren Labs Store Suite \u2014 the upgrade screen now shows the six-plugin suite and its single-licence bundle.<\/li>\n<li>New: the plugin accepts a Store Suite bundle licence; one key activates every Eren Labs plugin installed on the site.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Compatibility: tested up to WooCommerce 11.1.<\/li>\n<li>Translations: the free package now bundles the Arabic, German, Spanish, French, Italian, Brazilian Portuguese and Turkish catalogs, so the admin screens follow your site language without waiting for translate.wordpress.org.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>New: Pro licensing through Freemius \u2014 licence activation, automatic updates for the paid version and the in-admin checkout. The free version bundles the Freemius SDK (opt-in only; see External services) and works exactly as before.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Fixed: with WooCommerce's Cost of Goods Sold feature on, the product screen showed two cost boxes and saving could wipe or overwrite the cost typed in WooCommerce's own box. PurchaseDesk now defers to the core field and only draws its own when core's is off.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Now installs on PHP 7.4 and 8.0 (was 8.1 or later); verified with PHPCompatibilityWP.<\/li>\n<li>Listing: summary and tags now say purchase desk and supplier.<\/li>\n<li>New: ships in seven languages \u2014 Arabic, German, Spanish, French, Italian, Brazilian Portuguese and Turkish.<\/li>\n<li>Fixed: the CSV import confirms the file was read before you start; the supplier select lists every supplier, not the first 200.<\/li>\n<li>Improved: the Free vs Pro table meets WCAG AA contrast.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fixed: a purchase order was emailed in the language of whoever pressed Send,\nnot the shop's. Two buyers with different profile languages sent the same\nsupplier the same order in two languages. The email now always goes in the\nshop's language; the messages on screen stay in the buyer's.<\/li>\n<li>The free and Pro builds can now be installed at the same time without one\noverwriting the other's constants at file load.<\/li>\n<li>Declared the WooCommerce versions this plugin is built and tested against, so\nWooCommerce can tell a merchant whether it fits their install.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>The plugin's home link now opens the PurchaseDesk page instead of the Eren\nLabs home page.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>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.<\/li>\n<li>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.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>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.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Sanitize every request value the moment it is read, arrays included, rather than at the point of use.<\/li>\n<li>Drop load_plugin_textdomain(); WordPress has loaded directory-hosted translations automatically since 4.6.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>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.<\/li>\n<\/ul>","raw_excerpt":"PurchaseDesk for WooCommerce: purchase orders, supplier records, goods receipt and cost of goods (COGS) updated in the same step.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/359610","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=359610"}],"author":[{"embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/erenlabs"}],"wp:attachment":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=359610"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=359610"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=359610"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=359610"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=359610"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=359610"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}