{"id":390165,"date":"2026-10-24T02:38:22","date_gmt":"2026-10-24T02:38:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/deltify-po-importer-for-woocommerce\/"},"modified":"2026-10-24T02:37:47","modified_gmt":"2026-10-24T02:37:47","slug":"deltify-po-importer","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/deltify-po-importer\/","author":23589879,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"6.8","requires_php":"8.2","requires_plugins":null,"header_name":"Deltify PO Importer for WooCommerce","header_author":"Deltify (Dynamic Ventures)","header_description":"Review a text PDF purchase order before creating an on-hold WooCommerce order.","assets_banners_color":"","last_updated":"2026-10-24 02:37:47","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":69,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"deltify","date":"2026-10-24 02:37:47","revision":3762672}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3762672,"resolution":"1","location":"assets","locale":"","width":1358,"height":1666}},"screenshots":{"1":"The source PDF beside SKU corrections, price choices, duplicate warnings and the approval total."}},"plugin_section":[],"plugin_tags":[98131,1764,146690,51032,286],"plugin_category":[45,50],"plugin_contributors":[288176],"plugin_business_model":[],"class_list":["post-390165","plugin","type-plugin","status-publish","hentry","plugin_tags-order-import","plugin_tags-pdf","plugin_tags-purchase-order","plugin_tags-wholesale","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-media","plugin_contributors-deltify","plugin_committers-deltify"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/deltify-po-importer.svg","icon_2x":false,"generated":true},"screenshots":[{"src":"https:\/\/ps.w.org\/deltify-po-importer\/assets\/screenshot-1.png?rev=3762672","caption":"The source PDF beside SKU corrections, price choices, duplicate warnings and the approval total."}],"raw_content":"<!--section=description-->\n<p>For wholesalers who receive customer purchase orders as PDFs and retype them into WooCommerce.\nDeveloped by Deltify (Dynamic Ventures).\nPick an existing customer, upload one supported text PDF, and review the source PDF beside the draft.\nMatch products and variations by exact SKU, correct uncertain lines manually, compare quoted and\ncatalogue prices, and approve an on-hold order. Nothing is ordered until you approve.<\/p>\n\n<ul>\n<li>Unlimited individual imports, with no subscription or external account required.<\/li>\n<li>Exact SKU matching and manual corrections; no fuzzy guesses.<\/li>\n<li>Explicit price choices, duplicate warnings and an audit trail.<\/li>\n<li>WooCommerce order CRUD with High-Performance Order Storage (HPOS) support.<\/li>\n<li>Local PDF extraction and display. This version makes no external service requests.<\/li>\n<\/ul>\n\n<h4>Supported documents and shops<\/h4>\n\n<p>This first release supports a narrow text table format with an explicit header:\nSKU Description Qty Unit price Line total (or Buyer SKU instead of SKU).\nUse positive whole-number quantities and decimal-point prices with two decimals, without thousands separators.\nAn unsupported table stops for review. Scans, handwriting, wrapped descriptions, unfamiliar layouts,\ncomma decimals and complex tables are not supported. Always compare every row with the source PDF.<\/p>\n\n<p>Requires WooCommerce (tested with 11.2.1). The shop must have taxes disabled, use one currency,\nand use item-only orders. Shipping, taxes, fees and discounts on the PDF are not imported.\nB2B price-list extensions are not supported. These limitations are not paid restrictions.<\/p>\n\n<h4>What approval does<\/h4>\n\n<p>Approval creates an on-hold order and invokes WooCommerce's normal stock reduction.\nNo payment method is set or charged. Core order emails for this operation are suppressed.\nOther extensions and stock notifications may still react to order hooks; test your actual store's\nextensions on staging first. The plugin does not mark orders as shipped or completed.<\/p>\n\n<h4>Privacy and storage<\/h4>\n\n<p>PDFs stay on your server, outside its public web directories. The plugin stores customer and\nreviewer IDs, the PDF hash, extracted rows, corrections and order references in a custom database table.\nViewing PDFs requires WooCommerce management and order-editing permissions and a security token.\nThere is no telemetry, AI service, payment service or API key in this free release.<\/p>\n\n<p>Deactivation and uninstall retain imports and PDFs for your records. There is no automated retention\nor erase\/export screen in this version. The store operator must manage retention and removal of the\nprivate PDFs and import records, including backups, under their own policy.<\/p>\n\n<h3>Source and licenses<\/h3>\n\n<p>Readable plugin PHP and JavaScript are included. PDF.js is bundled locally with its readable build,\nworker, resources and license. third-party.txt lists exact versions, source links and build instructions.\nThere is no remotely downloaded executable code.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce on a staging copy of your store first.<\/li>\n<li>Ask your host to create a directory outside ALL web-served folders, owned by the PHP service account with mode 0700\n(stored PDFs then get mode 0600).<\/li>\n<li>Set DELTIFY_POI_PRIVATE_DIR in wp-config.php to that directory's absolute path, for example:\ndefine( 'DELTIFY_POI_PRIVATE_DIR', '\/srv\/private-purchase-orders' );<\/li>\n<li>Upload and activate this plugin ZIP. Composer and Node are not required on the merchant's server.<\/li>\n<li>Open WooCommerce &gt; PO Importer, choose a customer, upload a supported PDF and review every row.<\/li>\n<li>Save the review, confirm that the PDF is checked and that no extra charges are needed, then approve.<\/li>\n<\/ol>\n\n<p>Uploads remain blocked until private storage is configured. If your host cannot provide private\nstorage outside the web root, this version cannot be used there. Never use a public uploads folder.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20read%20any%20pdf%3F\"><h3>Does it read any PDF?<\/h3><\/dt>\n<dd><p>No. It only reads the supported text table described above. There is no OCR or AI extraction.<\/p><\/dd>\n<dt id=\"does%20it%20take%20payment%20from%20the%20customer%3F\"><h3>Does it take payment from the customer?<\/h3><\/dt>\n<dd><p>No. It creates an on-hold order for a person to handle using the store's normal process.<\/p><\/dd>\n<dt id=\"is%20there%20a%20monthly%20quota%20or%20paid%20unlock%3F\"><h3>Is there a monthly quota or paid unlock?<\/h3><\/dt>\n<dd><p>No. Everything included in this WordPress.org package is available without a license key.<\/p><\/dd>\n<dt id=\"will%20a%20duplicate%20create%20an%20order%20automatically%3F\"><h3>Will a duplicate create an order automatically?<\/h3><\/dt>\n<dd><p>No. Duplicate hashes and customer PO references produce a warning that requires explicit acknowledgement.\nA replay of approval for the same import returns the existing order.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release: local text PDF extraction, exact SKU matching, manual review beside the source PDF,\nexplicit price choices, duplicate warnings, an audit trail and approved on-hold orders (HPOS-safe).<\/li>\n<\/ul>","raw_excerpt":"Turn a supported text PDF purchase order into a WooCommerce order after checking every line yourself.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/390165","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=390165"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/deltify"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=390165"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=390165"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=390165"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=390165"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=390165"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=390165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}