{"id":380532,"date":"2026-10-09T14:29:49","date_gmt":"2026-10-09T14:29:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ai-order-entry-for-woocommerce\/"},"modified":"2026-10-10T21:00:11","modified_gmt":"2026-10-10T21:00:11","slug":"potosales-order-entry","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/potosales-order-entry\/","author":23575695,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.4.1","stable_tag":"0.4.1","tested":"7.1.3","requires":"6.6","requires_php":"8.1","requires_plugins":null,"header_name":"PotoSales Order Entry for WooCommerce","header_author":"","header_description":"Review purchase orders and explicitly create WooCommerce orders.","assets_banners_color":"758ed4","last_updated":"2026-10-10 21:00:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":116,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.3":{"tag":"0.3.3","author":"dj41888","date":"2026-10-09 14:29:12","revision":3736856},"0.3.4":{"tag":"0.3.4","author":"dj41888","date":"2026-10-10 08:39:29","revision":3737783},"0.4.0":{"tag":"0.4.0","author":"dj41888","date":"2026-10-10 15:54:17","revision":3738306},"0.4.1":{"tag":"0.4.1","author":"dj41888","date":"2026-10-10 21:00:11","revision":3738705}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3736856,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3736856,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3736856,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3736856,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3.3","0.3.4","0.4.0","0.4.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3736856,"resolution":"1","location":"assets","locale":"","width":1440,"height":1100},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3736856,"resolution":"2","location":"assets","locale":"","width":1440,"height":1100},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3736856,"resolution":"3","location":"assets","locale":"","width":1440,"height":1100},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3736856,"resolution":"4","location":"assets","locale":"","width":1440,"height":1100}},"screenshots":{"1":"Purchase orders list with credits, extraction status and links to the created WooCommerce orders.","2":"Only the lines that still need attention are shown, next to the original purchase order.","3":"Check the read-only final order preview before explicitly creating the order.","4":"The result is a regular pending WooCommerce order linked to your existing customer."}},"plugin_section":[],"plugin_tags":[2353,10553,285381,146690,286],"plugin_category":[45],"plugin_contributors":[285382],"plugin_business_model":[],"class_list":["post-380532","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-b2b","plugin_tags-order-entry","plugin_tags-purchase-order","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-dj41888","plugin_committers-dj41888"],"banners":{"banner":"https:\/\/ps.w.org\/potosales-order-entry\/assets\/banner-772x250.png?rev=3736856","banner_2x":"https:\/\/ps.w.org\/potosales-order-entry\/assets\/banner-1544x500.png?rev=3736856","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/potosales-order-entry\/assets\/icon-128x128.png?rev=3736856","icon_2x":"https:\/\/ps.w.org\/potosales-order-entry\/assets\/icon-256x256.png?rev=3736856","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/potosales-order-entry\/assets\/screenshot-1.png?rev=3736856","caption":"Purchase orders list with credits, extraction status and links to the created WooCommerce orders."},{"src":"https:\/\/ps.w.org\/potosales-order-entry\/assets\/screenshot-2.png?rev=3736856","caption":"Only the lines that still need attention are shown, next to the original purchase order."},{"src":"https:\/\/ps.w.org\/potosales-order-entry\/assets\/screenshot-3.png?rev=3736856","caption":"Check the read-only final order preview before explicitly creating the order."},{"src":"https:\/\/ps.w.org\/potosales-order-entry\/assets\/screenshot-4.png?rev=3736856","caption":"The result is a regular pending WooCommerce order linked to your existing customer."}],"raw_content":"<!--section=description-->\n<p>B2B stores often receive purchase orders as PDF files or photos and retype every line into WooCommerce. PotoSales Order Entry reads the purchase order for you and prepares a draft order for your staff to check.<\/p>\n\n<ul>\n<li>Upload a PDF, JPG or PNG purchase order from the WooCommerce admin.<\/li>\n<li>The service extracts buyer, addresses, PO number, dates, items, quantities, units and prices.<\/li>\n<li>Lines are matched to your own WooCommerce products. Confirmed matches are remembered for each customer.<\/li>\n<li>Problems are collected in one list: missing amounts, unknown products and totals that do not add up.<\/li>\n<li>Review each line's quantity, unit price and line amount. An entered line amount takes precedence; otherwise the amount is calculated from quantity and unit price. Amount differences remain visible for staff to review.<\/li>\n<li>Confirmed product amounts are copied into the order without automatically adding or extracting tax. Store tax settings do not change these amounts. Staff can make any further adjustments in the created WooCommerce order.<\/li>\n<li>Staff edit the draft next to the original document and then create the order. The order is created as <strong>pending<\/strong> and is never marked paid.<\/li>\n<li>Duplicate uploads and duplicate buyer PO numbers are detected before an order is created twice.<\/li>\n<li>The admin interface is available in English and Simplified Chinese and follows the site language by default.<\/li>\n<\/ul>\n\n<p>Nothing is created automatically. Every order requires an explicit action by a user with permission to create orders. WooCommerce remains the authoritative store for your customers, products, prices and orders. Uploaded documents, limited product candidates and task feedback are sent to the service as described below.<\/p>\n\n<h4>Free trial<\/h4>\n\n<p>Clicking Get started in the welcome dialog on an eligible website starts a free trial: currently 20 processed purchase orders within 14 days, up to 5 uploads per day. The current allowance and terms are shown before activation. Each website has its own allowance. A document is charged only after a successful extraction. Failed or rejected documents release their credit. The trial does not turn into a paid subscription.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>MySQL or MariaDB with InnoDB tables. SQLite (including WordPress Playground) is not supported. On an unsupported database the plugin activates without running its features and shows a requirement notice on the Plugins screen; it does not create its tables or connect to the service.<\/li>\n<li>WooCommerce 9.0 or later (HPOS and the legacy order storage are both supported).<\/li>\n<li>The site must be reachable from the internet over HTTPS. The service verifies the site before it activates the trial, so local or private test sites cannot be activated.<\/li>\n<li>PHP extensions: sodium and OpenSSL.<\/li>\n<li>Simple products and specific product variations. Staff confirm the order currency and amounts; the plugin does not convert currencies or apply an exchange rate.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin needs the PotoSales order-entry service to read purchase orders. The service is operated by PotoSales. On a fresh, unconnected installation, no service requests are made until an authorized user opens the plugin page. After an administrator accepts the terms and activates the connection, background tasks can send status, heartbeat and queued feedback requests even when the page is closed.<\/p>\n\n<ul>\n<li><strong>Trial terms (when the plugin page is opened before activation):<\/strong> the plugin loads the current trial terms and allowance. No store data is sent, and the request does not include the site address.<\/li>\n<li><strong>Trial activation (when an administrator clicks Get started):<\/strong> the site URL, a verification callback URL on this site, random installation and request IDs, a temporary verification secret, the accepted terms version and the WordPress user ID of the administrator who accepted. The service calls the verification URL to confirm site ownership.<\/li>\n<li><strong>Document upload (when a user uploads a purchase order):<\/strong> the uploaded file, its hash, size and extension, and installation\/import\/request identifiers. The file may contain customer names, contact details and addresses. The service stores it encrypted and uses Alibaba Cloud Model Studio (International deployment scope) to extract its contents. Model Studio stores data in Singapore; model inference may run in other locations outside mainland China.<\/li>\n<li><strong>Product comparison (when a user asks for product suggestions):<\/strong> the selected purchase order line and a limited list of candidate products (product and variation IDs, name, SKU and variation attributes), processed by the service and its AI provider.<\/li>\n<li><strong>Status, version and credits (on the plugin page and in connected background tasks):<\/strong> site and task identifiers; the plugin version (sent with every request so the service can ask for an update when a version is no longer supported) and the WooCommerce version; requests for task status, current plans and remaining credits.<\/li>\n<li><strong>Review feedback (after an order is created or an import is discarded):<\/strong> event and task identifiers, the outcome, names of changed fields, event time and the WooCommerce order ID. If employee attribution was enabled on an existing installation, a WordPress user reference may also be added to uploads and feedback. New installations leave this disabled. The plugin does not upload the store's full customer or employee database.<\/li>\n<li><strong>Support and continued-access requests (when explicitly submitted):<\/strong> request identifiers and the support message reviewed and submitted by the user. No payment card details are collected by this plugin.<\/li>\n<li><strong>Online purchase (only when an administrator clicks Subscribe, Switch to this plan or Buy top-up):<\/strong> the plugin asks the PotoSales service to register the purchase for this website, with the selected plan and the payment email entered by the administrator. The payment window is then loaded from Freemius (https:\/\/checkout.freemius.com), which receives the plan, the payment email and the payment details entered in that window. After the payment, the plugin receives the Freemius license ID and sends it to the PotoSales service, which confirms it with Freemius and adds the credits to this website as soon as Freemius shows the payment. While the payment is being confirmed, the page asks the PotoSales service again every few seconds for up to one minute. Cancelling a renewal sends a cancellation request to the PotoSales service, which cancels the subscription at Freemius. Freemius terms: https:\/\/freemius.com\/terms\/ Freemius privacy policy: https:\/\/freemius.com\/privacy\/<\/li>\n<li><strong>Document management (when requested):<\/strong> the document identifier for deletion or retrieval of a stored original; cancel\/resume requests include the corresponding intake identifier.<\/li>\n<\/ul>\n\n<p>Service address: https:\/\/api.potosales.com<\/p>\n\n<ul>\n<li>Trial terms: https:\/\/potosales.com\/terms<\/li>\n<li>Privacy notice: https:\/\/potosales.com\/privacy<\/li>\n<li>Support: https:\/\/potosales.com\/support<\/li>\n<\/ul>\n\n<p>Alibaba Cloud processes documents on behalf of PotoSales: https:\/\/www.alibabacloud.com\/help\/en\/legal\/latest\/alibaba-cloud-international-website-privacy-policy<\/p>\n\n<h3>Source code<\/h3>\n\n<p>The admin interface in assets\/app.js is built from the readable source files in the admin folder with esbuild. The WordPress.org package includes package.json and package-lock.json. From the plugin folder, use Node.js 22 with npm, run npm ci to install the locked build dependencies, then npm run build to regenerate assets\/app.js. These tools are only needed to rebuild the interface, not to use the plugin. The payment window uses the Freemius Checkout library (@freemius\/checkout, MIT licence, source: https:\/\/github.com\/Freemius\/freemius-checkout-js), which is bundled into assets\/app.js by the same build and loads no remote script. The CSS files in assets are readable source files.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce.<\/li>\n<li>Install this plugin from Plugins &gt; Add New and activate it.<\/li>\n<li>Click Get started below the plugin name on the Plugins screen, or open WooCommerce &gt; PotoSales Order Entry.<\/li>\n<li>Read the trial terms and privacy notice shown in the welcome dialog, tick the consent box and click Get started. No service URL, site ID or API key is needed.<\/li>\n<li>Upload a purchase order, review the highlighted items and create the order.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20happens%20after%20the%20trial%20ends%3F\"><h3>What happens after the trial ends?<\/h3><\/dt>\n<dd><p>When the trial expires or its credits are used up, new cloud extraction pauses unless the website has another valid credit allowance. Already extracted purchase orders can still be reviewed, edited and turned into WooCommerce orders. Existing WooCommerce orders are not deleted.<\/p>\n\n<p>To ask about continued access, open Plans and help and click Request continued access. Review the prefilled message and submit it through the support form. The service operator will confirm whether further access is available and on what terms; an extension is not guaranteed. You can view replies under Support progress. Sending a request does not charge you or start a paid subscription.<\/p>\n\n<p>When paid plans are open for online purchase, an administrator can buy them in Plans and help: a monthly subscription for the website, or a one-time top-up. The payment window is provided by Freemius, the merchant of record, and opens over the plugin page; card details never pass through this plugin or the PotoSales service. Credits are added to the website that made the purchase once the payment is confirmed. A subscription can be cancelled in Plans and help; credits already paid for remain usable until they expire. Switching to another plan starts the new plan at once, stops renewing the old one and moves its unused credits to the new plan. While online purchase is not open, Plans and help shows how to request continued access instead.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20create%20orders%20automatically%3F\"><h3>Does the plugin create orders automatically?<\/h3><\/dt>\n<dd><p>No. Extraction results are always a draft. A staff member must review the draft and click Create order.<\/p><\/dd>\n<dt id=\"which%20files%20are%20supported%3F\"><h3>Which files are supported?<\/h3><\/dt>\n<dd><p>PDF, JPG\/JPEG and PNG up to 5,000,000 bytes. A PDF may have at most 5 pages. Each file must contain one purchase order.<\/p><\/dd>\n<dt id=\"is%20the%20extraction%20always%20correct%3F\"><h3>Is the extraction always correct?<\/h3><\/dt>\n<dd><p>No. AI extraction can miss or misread values, especially on poor scans. The plugin shows the original document next to the draft and blocks order creation while required values are missing.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20change%20my%20customers%20or%20products%3F\"><h3>Does the plugin change my customers or products?<\/h3><\/dt>\n<dd><p>The plugin does not change your products. Staff with review permission can explicitly create or edit customer contact details and saved addresses in the customer management screen. Creating an order copies its reviewed address into that order only and does not overwrite the customer profile. Creating a customer through this plugin does not send an account invitation email.<\/p><\/dd>\n<dt id=\"which%20pricing%20plugins%20are%20supported%3F\"><h3>Which pricing plugins are supported?<\/h3><\/dt>\n<dd><p>Order amounts use the purchase order or the amounts explicitly entered by the reviewer. WooCommerce catalogue prices are shown only as a reference. Customer-specific price lists are not maintained in this plugin, and third-party B2B or dynamic pricing rules are not used to determine the order amounts.<\/p><\/dd>\n<dt id=\"how%20are%20quantities%20and%20units%20handled%3F\"><h3>How are quantities and units handled?<\/h3><\/dt>\n<dd><p>Staff enter the quantity to be ordered for the selected WooCommerce product and review its unit price and line amount. The plugin does not guess pack sizes or automatically convert cases and boxes into individual items. Review the product and final quantity against the original document before creating the order.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20uninstall%20the%20plugin%3F\"><h3>What happens when I uninstall the plugin?<\/h3><\/dt>\n<dd><p>Local connection credentials and scheduled tasks are removed. Imports, mappings and WooCommerce orders created with the plugin are kept. Uninstalling does not delete documents or the account held by the service; use the plugin's document deletion controls before uninstalling or contact support for service-side data requests.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>After a purchase the page confirms the payment within seconds and shows a clear result: payment successful with the credits added, still processing, or a notice to check again in 5 minutes.<\/li>\n<li>The service no longer records the website address on the Freemius license.<\/li>\n<li>A subscription you already hold stays visible and can be cancelled when plans are not on sale or online purchase is paused for maintenance.<\/li>\n<li>Purchase buttons are no longer locked while an earlier payment is still being confirmed.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Online purchase in Plans and help: monthly plans and top-ups open a Freemius checkout over the plugin page; credits are added to this website once the payment is confirmed. Shown only when paid plans are open for online purchase.<\/li>\n<li>Switch plans at any time: the new plan starts at once, the previous plan stops renewing and its unused credits move to the new plan.<\/li>\n<li>Cancel renewal from the plugin; credits already paid for remain until they expire.<\/li>\n<li>Clear notices before purchase about the free trial, refunds and automatic renewal.<\/li>\n<\/ul>\n\n<h4>0.3.4<\/h4>\n\n<ul>\n<li>Delete reviewed, failed, cancelled and completed import records without waiting for internal notifications; existing WooCommerce orders are preserved.<\/li>\n<li>Automatically resolve interrupted order creation and prevent duplicate orders. Failed creation can be retried without an administrator recovery procedure.<\/li>\n<li>Stop waiting indefinitely for unavailable extraction results; retry fetching the result or delete the record after the timeout.<\/li>\n<li>Make billing and shipping addresses optional, preserve manual edits and cleared fields, and warn about unrecognised countries or states without blocking order entry.<\/li>\n<li>Recognise existing customers by a unique exact email or name match, and remember customer-specific product codes when selections are saved.<\/li>\n<li>Treat stock shortages and individual-purchase limits as warnings, support private products, and remove the extra quantity ceiling.<\/li>\n<li>Improve date and currency handling, customer and product selection, and recovery from notification or connection failures.<\/li>\n<\/ul>\n\n<h4>0.3.3<\/h4>\n\n<ul>\n<li>First public release on WordPress.org.<\/li>\n<li>Preserve unsaved drafts and newer work during recovery; ignore late results after data deletion.<\/li>\n<li>Reconnect an existing website without entering credentials, and prepare the complete product catalogue during setup.<\/li>\n<li>Improve customer address editing, order validation and recovery from interrupted requests.<\/li>\n<li>Create orders using the confirmed product amounts without automatically adding or extracting tax; preserve existing orders and saved recovery snapshots.<\/li>\n<li>Free trial activated from the WordPress admin without entering technical settings.<\/li>\n<li>Entry clerk and order reviewer roles can open the order entry page and save their work.<\/li>\n<li>Stores using wholesale or dynamic-pricing extensions can create orders from the confirmed amounts.<\/li>\n<li>Credit balance, trial period and continued-access requests shown in the plugin; purchase requests are available only when paid plans are offered.<\/li>\n<li>Interface language follows the WordPress site language.<\/li>\n<li>If the service stops supporting an old plugin version, the plugin page shows an update button that opens the standard WordPress plugin update.<\/li>\n<\/ul>","raw_excerpt":"Upload a customer's purchase order, review the extracted lines against your catalogue and create a pending WooCommerce order in one step.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/380532","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=380532"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dj41888"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=380532"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=380532"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=380532"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=380532"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=380532"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=380532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}