{"id":348754,"date":"2026-08-13T08:14:49","date_gmt":"2026-08-13T08:14:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/salesdesk-pos-for-woocommerce\/"},"modified":"2026-08-13T10:48:39","modified_gmt":"2026-08-13T10:48:39","slug":"eren-labs-retail-pos-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/eren-labs-retail-pos-for-woocommerce\/","author":23527105,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.4","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Eren Labs Retail POS for WooCommerce","header_author":"Eren Labs","header_description":"In-store point of sale for WooCommerce: barcode scanning (hardware & camera), quick sale, returns, receipts and barcode labels.","assets_banners_color":"c7bdf4","last_updated":"2026-08-13 10:48:39","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/erenlabs.net\/","header_author_uri":"https:\/\/erenlabs.net","rating":0,"author_block_rating":0,"active_installs":0,"downloads":21,"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":"erenlabs","date":"2026-08-13 10:48:39"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3644615,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3644615,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3644979,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3644979,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3644615,"resolution":"1","location":"assets","locale":"","width":1280,"height":1240},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3644615,"resolution":"2","location":"assets","locale":"","width":1280,"height":1240},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3644615,"resolution":"3","location":"assets","locale":"","width":1280,"height":1240},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3644615,"resolution":"4","location":"assets","locale":"","width":1280,"height":1240},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3644615,"resolution":"5","location":"assets","locale":"","width":1280,"height":1240},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3644615,"resolution":"6","location":"assets","locale":"","width":1280,"height":1123},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3644615,"resolution":"7","location":"assets","locale":"","width":1280,"height":1240}},"screenshots":{"1":"The sale terminal \u2014 scan, cart, customer, discount and payment in one screen.","2":"The dashboard \u2014 today, this month, last 7 and 30 days, best sellers and payment mix.","3":"Orders \u2014 every POS sale and return in one sortable table.","4":"The return terminal \u2014 scan what comes back, refund and restock.","5":"Barcode labels \u2014 print price labels straight from the counter.","6":"Settings \u2014 tenders, label size and the store details printed on receipts.","7":"Sale complete \u2014 order number, total, remaining stock and the receipt."}},"plugin_section":[],"plugin_tags":[1292,26270,10229,26349,11787],"plugin_category":[],"plugin_contributors":[271033],"plugin_business_model":[],"class_list":["post-348754","plugin","type-plugin","status-publish","hentry","plugin_tags-barcode","plugin_tags-point-of-sale","plugin_tags-pos","plugin_tags-receipt","plugin_tags-retail","plugin_contributors-erenlabs","plugin_committers-erenlabs"],"banners":{"banner":"https:\/\/ps.w.org\/eren-labs-retail-pos-for-woocommerce\/assets\/banner-772x250.png?rev=3644979","banner_2x":"https:\/\/ps.w.org\/eren-labs-retail-pos-for-woocommerce\/assets\/banner-1544x500.png?rev=3644979","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/eren-labs-retail-pos-for-woocommerce\/assets\/icon-128x128.png?rev=3644615","icon_2x":"https:\/\/ps.w.org\/eren-labs-retail-pos-for-woocommerce\/assets\/icon-256x256.png?rev=3644615","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/eren-labs-retail-pos-for-woocommerce\/assets\/screenshot-1.png?rev=3644615","caption":"The sale terminal \u2014 scan, cart, customer, discount and payment in one screen."},{"src":"https:\/\/ps.w.org\/eren-labs-retail-pos-for-woocommerce\/assets\/screenshot-2.png?rev=3644615","caption":"The dashboard \u2014 today, this month, last 7 and 30 days, best sellers and payment mix."},{"src":"https:\/\/ps.w.org\/eren-labs-retail-pos-for-woocommerce\/assets\/screenshot-3.png?rev=3644615","caption":"Orders \u2014 every POS sale and return in one sortable table."},{"src":"https:\/\/ps.w.org\/eren-labs-retail-pos-for-woocommerce\/assets\/screenshot-4.png?rev=3644615","caption":"The return terminal \u2014 scan what comes back, refund and restock."},{"src":"https:\/\/ps.w.org\/eren-labs-retail-pos-for-woocommerce\/assets\/screenshot-5.png?rev=3644615","caption":"Barcode labels \u2014 print price labels straight from the counter."},{"src":"https:\/\/ps.w.org\/eren-labs-retail-pos-for-woocommerce\/assets\/screenshot-6.png?rev=3644615","caption":"Settings \u2014 tenders, label size and the store details printed on receipts."},{"src":"https:\/\/ps.w.org\/eren-labs-retail-pos-for-woocommerce\/assets\/screenshot-7.png?rev=3644615","caption":"Sale complete \u2014 order number, total, remaining stock and the receipt."}],"raw_content":"<!--section=description-->\n<p>If you sell over a counter as well as online, you are probably running two systems and reconciling them by hand: WooCommerce for the website, and a separate POS terminal \u2014 or a notebook, or a spreadsheet \u2014 for the shop. Every evening the two disagree, and every evening someone has to decide which one is lying.<\/p>\n\n<p><strong>Retail POS removes the second system.<\/strong> It is a complete point of sale that runs inside the WooCommerce admin you already log into, on the products, prices, stock, customers, taxes and orders that are already there. A counter sale <strong>is<\/strong> a WooCommerce order. Its stock movement <strong>is<\/strong> a WooCommerce stock movement, made through WooCommerce core. No second catalogue, no sync step, nothing to reconcile at closing time.<\/p>\n\n<h4>What it replaces<\/h4>\n\n<ul>\n<li><strong>The separate POS system.<\/strong> Sell in store from <code>wp-admin<\/code>, on the machine already sitting at the counter: scan, cart, discount, take payment, print the receipt.<\/li>\n<li><strong>The stock spreadsheet.<\/strong> One stock figure, not two. Counter sales take stock down through WooCommerce, returns put it back, the cart will not oversell a stock-managed line, and a snapshot after each sale shows what is left of exactly the items you just sold \u2014 the quickest way to catch a bad count.<\/li>\n<li><strong>Double entry at the end of the day.<\/strong> POS sales land in your normal order list, under your normal tax rules, in your normal reports.<\/li>\n<li><strong>The price-sticker order.<\/strong> Print your own scannable barcode labels, at the counter, at your label size.<\/li>\n<\/ul>\n\n<h4>What it costs you to try<\/h4>\n\n<p>Nothing, and nothing is held back behind a signup. No account, no API key, no licence check, no external service: the free plugin talks to your own database and nowhere else (see <strong>External services<\/strong> below). Install it on the till, sell one item, and you will know inside a minute whether the counter likes it. Remove it and it deletes its own settings and scheduled jobs and stops there \u2014 your products, stock and orders stay exactly as they are, because they were WooCommerce's all along.<\/p>\n\n<h4>Scan, tap, done: barcode scanner, phone camera, or a photo<\/h4>\n\n<p>Beep \u2014 the line drops into the cart. Beep. Beep. Tap <strong>Cash<\/strong>. The receipt prints, the order is a real WooCommerce order, stock is already down, and the cursor is back in the scan box before the cashier has looked up. That loop is the whole plugin, and it was built behind a real shop counter, not in a spreadsheet.<\/p>\n\n<ul>\n<li><strong>USB or Bluetooth barcode scanner, with nothing to configure.<\/strong> Any HID scanner gun that types into a text field works, and you do not need to program an Enter suffix into it: the scan box fires by itself as soon as four or more characters land, and it fires on Enter too.<\/li>\n<li><strong>The cursor always comes home.<\/strong> The scan box takes focus when a POS screen opens, and clicking any empty space sends focus straight back to it. No hunting for the field between customers.<\/li>\n<li><strong>Your phone is the second scanner \u2014 no app to install.<\/strong> Tap the camera button on the scan box and a live viewfinder opens. Browsers with a built-in BarcodeDetector (typically Android Chrome) decode natively; where there is none (typically iOS Safari) the bundled ZXing library decodes instead. Both are set up for Code 128, EAN-13, EAN-8, UPC-A, UPC-E, Code 39, ITF and QR.<\/li>\n<li><strong>\"Read from photo\", for the label that will not read.<\/strong> Creased, faded, printed too small? Take a still \u2014 or pick one from the gallery \u2014 and it is retried at three sizes and four rotations, twelve attempts, before it admits defeat.<\/li>\n<li>The camera view uses the rear camera at up to 1920\u00d71080, crops the middle band of the frame, alternates horizontal and vertical passes, turns on continuous autofocus where the device supports it, and shows zoom and torch (flashlight) buttons where the phone exposes them.<\/li>\n<li>Camera scanning is available on the Sell and Returns screens. The Labels screen takes a hardware scanner or a typed code, auto-firing at six characters or more.<\/li>\n<\/ul>\n\n<h4>What a scan finds, and what to do when there is no barcode<\/h4>\n\n<ul>\n<li>A scanned code is matched against the product's barcode field, then WooCommerce's own <strong>GTIN<\/strong> field, then the <strong>SKU<\/strong>, then WooCommerce's SKU index \u2014 and a variation always wins over its parent.<\/li>\n<li>Only published products and variations ring up. A variable parent is never sellable on its own: it opens a <strong>variant picker<\/strong> listing each variation with its price, remaining stock and barcode, so the sizes are on the screen instead of in your head.<\/li>\n<li><strong>No barcode? Search by product name.<\/strong> Type two characters or more and every word has to appear in the title; a single-word search additionally matches part of a SKU, barcode or GTIN.<\/li>\n<\/ul>\n\n<h4>The quick sale: cart, quick edit and discount<\/h4>\n\n<ul>\n<li><strong>Quantity, three ways.<\/strong> Minus, plus, or type the number. Stock-managed lines are capped at the stock on hand, with a warning, so a busy counter cannot quietly oversell.<\/li>\n<li><strong>Quick edit, mid-sale.<\/strong> The pencil on a cart line opens price, sale price, stock and cost and writes straight back to the WooCommerce product or variation \u2014 optionally copying the new price, sale price and cost to every sibling variation in one go, refreshing the parent's price range afterwards. Setting a stock number switches stock management on for that item and flips its in-stock status to match.<\/li>\n<li><strong>The price you type is the price the shop means.<\/strong> The server converts your figure back to WooCommerce's own entry basis before saving, so opening a line and saving it unchanged leaves the price exactly where it was.<\/li>\n<li><strong>Manual discount on the whole sale<\/strong>, as a percentage or as a fixed amount of money. It is recomputed and re-capped on the server (percentage clamped to 0\u2013100, a fixed amount never above the total), so a fiddled browser cannot invent a bigger one.<\/li>\n<\/ul>\n\n<h4>Money that adds up<\/h4>\n\n<ul>\n<li><strong>The counter quotes gross.<\/strong> Cart lines, the subtotal and the Complete sale button all show the tax-inclusive amount the customer actually hands over \u2014 whichever way the shop is set to display prices elsewhere.<\/li>\n<li><strong>Tax is WooCommerce's job.<\/strong> Items ring up at the product's own WooCommerce price and the order's tax is calculated by WooCommerce itself, so your rates, classes and rules apply unchanged.<\/li>\n<li><strong>Discounts that do not break VAT.<\/strong> The discount scales every line total down proportionally instead of dropping in a negative fee line, so tax recomputes correctly even when the basket mixes rates.<\/li>\n<li><strong>Your tenders, your words.<\/strong> Payment methods are a free-text list in Settings \u2014 Cash, Card and Bank transfer to start with; rename them, add them, delete them, and they appear as buttons on the sale screen. Renaming keeps a method's key, so last month's orders stay attached to the same tender. A sale in the free version is settled by exactly one method covering the full total.<\/li>\n<li><strong>Customers by phone.<\/strong> Type the number: if a WooCommerce customer has it as their billing phone the sale links to them, otherwise the order simply carries the name and phone you typed. Nobody is forced to create an account, POS sales do not send the customer the usual WooCommerce order e-mails, and the admin new-order mail is off by default \u2014 one setting if you want it back.<\/li>\n<\/ul>\n\n<h4>Receipt printing<\/h4>\n\n<p>Hit print and a narrow monospace window opens, sized for a roll of thermal paper: store name, address and phone, every line item, the subtotal, the discount if there was one, the total, the payment method, and the customer's name and phone. Receipt line amounts are the pre-discount figures, so the paper adds up the way a customer checks it \u2014 items total to Subtotal, minus Discount equals TOTAL. Any past POS sale can be reprinted from the order list.<\/p>\n\n<h4>Returns and refunds at the counter<\/h4>\n\n<p><strong>Blind (receiptless) returns<\/strong>: scan what comes back over the counter, hand over the money, done \u2014 no original order needed. The payout is documented as a refunded POS order and stock is restored automatically when stock reduction is on. The returns cart deliberately has <strong>no stock cap<\/strong>: a customer can bring back three of something you currently hold none of, exactly as a real counter has to allow.<\/p>\n\n<h4>Barcode label printing<\/h4>\n\n<ul>\n<li><strong>Print barcode labels<\/strong> for any product that already has a SKU or barcode: scan or search products into a queue, set how many copies of each, and print.<\/li>\n<li>Barcode rendering auto-detects <strong>EAN-13<\/strong> and <strong>EAN-8<\/strong> and falls back to <strong>Code 128<\/strong>.<\/li>\n<li>Label width and height in millimetres, and what goes on the label (store name, product name, variant, price, the barcode and its digits), are all configurable in Settings.<\/li>\n<\/ul>\n\n<h4>POS orders and the sales dashboard<\/h4>\n\n<ul>\n<li><strong>POS order list<\/strong> with filters for type, status and date, and search by order number, phone, or customer name and e-mail. Editing is limited to safe fields \u2014 customer name, phone, e-mail and city, payment method, order status and a note. Line and price changes stay on WooCommerce's own order screen, where they belong.<\/li>\n<li><strong>Sales dashboard<\/strong>: today, last 7 days, last 30 days and the calendar month to date, a daily revenue chart, a payment-method breakdown, average basket and best sellers. Returns and partial refunds are netted out, so the figure on the screen is what actually stayed in the till.<\/li>\n<\/ul>\n\n<h4>Translations<\/h4>\n\n<p>Every string is translatable and the plugin ships its translation template (<code>languages\/eren-labs-retail-pos-for-woocommerce.pot<\/code>). Translations for the free version are served as WordPress.org language packs from translate.wordpress.org \u2014 nothing is bundled, so you always get the current community translation. A language switcher on the POS screens lets each user read the plugin in a language of their own, separately from the rest of wp-admin, using whatever language packs WordPress has installed; anything else falls back to English. Right-to-left languages get an RTL layout.<\/p>\n\n<h4>Pro<\/h4>\n\n<p><a href=\"https:\/\/erenlabs.net\/\">Retail POS Pro<\/a> adds what a full-day retail counter needs:<\/p>\n\n<ul>\n<li><strong>In-store (POS) pricing<\/strong> \u2014 ring items up at a counter price distinct from the website price. Set it per product on the product editor, or generate it across the whole catalogue in bulk (site price \u00b1 a percentage, with optional rounding \u2014 nearest 0.10\/0.50\/1\/5 or charm .90\/.99\/9.90).<\/li>\n<li><strong>Split payments<\/strong> \u2014 settle one sale with several tenders (half cash, half card), each recorded separately.<\/li>\n<li><strong>Partial payment &amp; customer credit ledger<\/strong> \u2014 take what the customer has now, book the remainder to their account; debtor list with aging, collections, printable statements, WhatsApp reminders.<\/li>\n<li><strong>Cash register &amp; end of day<\/strong> \u2014 opening float, cash-ins, expenses, expected-vs-counted close with carryover.<\/li>\n<li><strong>Exchange terminal<\/strong> \u2014 scan returned + given items; the tax-correct difference is collected or refunded.<\/li>\n<li><strong>Campaign scenarios<\/strong> \u2014 preset one-tap chips: \"buy 3 pay 2\", \"2nd item \u221250%\", percentage\/fixed presets.<\/li>\n<li><strong>Profit reports<\/strong> \u2014 revenue, cost, margin, stock turnover, attribute breakdowns, discount usage.<\/li>\n<li><strong>Store activity feed<\/strong> \u2014 every sale, return, exchange and credit of the day in one chronological stream.<\/li>\n<\/ul>\n\n<h4>Compatibility<\/h4>\n\n<ul>\n<li>HPOS (High-Performance Order Storage) compatible \u2014 and works on classic post storage too.<\/li>\n<li>Barcode sources: the <code>_barcode<\/code> meta, WooCommerce's GTIN field (<code>_global_unique_id<\/code>), or the SKU (optionally kept in sync with the SKU on save).<\/li>\n<li>Quick edit records a unit cost under <code>_wc_cog_cost<\/code> (Cost of Goods) and <code>_cost<\/code>. The free version only writes it \u2014 there are no margin or profit figures anywhere in free; profit reporting is a Pro feature.<\/li>\n<li>Whether a POS sale reduces stock, and which order status POS sales get, are both settings.<\/li>\n<\/ul>\n\n<h4>Bundled libraries<\/h4>\n\n<p>All JavaScript libraries ship inside the plugin (nothing loads from a CDN):<\/p>\n\n<ul>\n<li>JsBarcode 3.12.3 (MIT) \u2014 barcode label rendering<\/li>\n<li>ZXing for JS 0.23.0 (Apache-2.0) \u2014 camera barcode decoding fallback<\/li>\n<li>Chart.js 4.5.1 (MIT) \u2014 dashboard charts<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This free version contacts no external service at all. Sales, customers, orders, settings and reports are stored only in your own WordPress database, and the plugin ships no licensing, analytics or telemetry code of any kind.<\/p>\n\n<p>The separately distributed Pro version (obtained from erenlabs.net, not from WordPress.org) uses the Freemius SDK (https:\/\/freemius.com) for licence validation, automatic updates and optional usage tracking. On first activation Pro shows an explicit opt-in screen; NOTHING is sent anywhere unless you click \"Allow &amp; Continue\" \u2014 choosing \"Skip\" keeps the plugin fully functional with no data leaving your site. If you opt in, Freemius receives basic site data (site URL, WordPress and PHP versions, plugin version, admin e-mail address) to provide licence checks, update notifications and support. Your sales, customers, credit ledger and reports are never sent.\nFreemius terms: https:\/\/freemius.com\/terms\/\nFreemius privacy policy: https:\/\/freemius.com\/privacy\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>eren-labs-retail-pos-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>Retail POS \u2192 Settings<\/strong>, check your payment methods and store info, then start selling from <strong>Retail POS \u2192 Sell<\/strong>.<\/li>\n<\/ol>\n\n<p>WooCommerce must be installed and active. Staff need the WooCommerce manager capability (<code>manage_woocommerce<\/code>) to open the POS screens.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20with%20my%20barcode%20scanner%3F\"><h3>Does it work with my barcode scanner?<\/h3><\/dt>\n<dd><p>Any scanner gun that types into a text field \u2014 the usual USB or Bluetooth HID kind \u2014 works, and you do not have to program an Enter suffix into it. The scan box fires by itself once four or more characters land (and on Enter as well), and it takes focus back after every action, so the next scan always lands in the right place.<\/p><\/dd>\n<dt id=\"can%20i%20scan%20barcodes%20with%20a%20phone%20or%20tablet%20camera%3F\"><h3>Can I scan barcodes with a phone or tablet camera?<\/h3><\/dt>\n<dd><p>Yes, with no app to install. A camera button on the scan box opens a live viewfinder: browsers with a built-in BarcodeDetector (typically Android Chrome) decode natively, and where there is none (typically iOS Safari) the bundled ZXing decoder takes over. If a damaged or dense label will not read live, \"Read from photo\" takes a still and retries it twelve ways. Camera scanning is on the Sell and Returns screens; the Labels screen takes a scanner gun or a typed code. Browsers only release the camera on a secure connection, so the site has to be served over HTTPS.<\/p><\/dd>\n<dt id=\"do%20i%20need%20barcodes%20on%20my%20products%3F\"><h3>Do I need barcodes on my products?<\/h3><\/dt>\n<dd><p>No. Search by name or SKU and pick from the results. When you do want them, the Labels screen prints scannable barcode labels for any product that already has a SKU or barcode, and the plugin can keep a product's barcode in step with its SKU on save.<\/p><\/dd>\n<dt id=\"does%20a%20pos%20sale%20reduce%20stock%3F\"><h3>Does a POS sale reduce stock?<\/h3><\/dt>\n<dd><p>Yes, and it is a setting if you would rather it did not. Stock reduction goes through WooCommerce core, so lookup tables and integrations stay correct. Stock-managed lines are capped at the stock on hand while you build the cart, and after the sale a snapshot shows what is left of everything you just sold.<\/p><\/dd>\n<dt id=\"are%20pos%20orders%20normal%20woocommerce%20orders%3F\"><h3>Are POS orders normal WooCommerce orders?<\/h3><\/dt>\n<dd><p>Yes. They are ordinary WooCommerce orders tagged as POS sales, they take the status you configure (Completed by default), and they show up in your reports and integrations like any other order.<\/p><\/dd>\n<dt id=\"does%20the%20price%20on%20the%20pos%20screen%20include%20tax%3F\"><h3>Does the price on the POS screen include tax?<\/h3><\/dt>\n<dd><p>Yes. Every figure the terminal quotes \u2014 each cart line, the subtotal and the Complete sale button \u2014 is the gross, tax-inclusive amount the customer hands over, even if your shop displays prices excluding tax elsewhere. WooCommerce calculates the tax itself, so your rates and tax classes apply unchanged, and a percentage or fixed discount scales the line totals proportionally so VAT stays right in a mixed-rate basket.<\/p><\/dd>\n<dt id=\"can%20i%20split%20a%20payment%20between%20cash%20and%20card%3F\"><h3>Can I split a payment between cash and card?<\/h3><\/dt>\n<dd><p>Not in the free version: one sale is settled with one payment method covering the full total. Split payments, partial payment and a customer credit ledger are Pro features.<\/p><\/dd>\n<dt id=\"can%20i%20print%20barcode%20labels%20for%20my%20products%3F\"><h3>Can I print barcode labels for my products?<\/h3><\/dt>\n<dd><p>Yes. Scan or search products into the Labels queue, choose how many copies of each, and print. EAN-13 and EAN-8 are auto-detected with a Code 128 fallback, and the label size in millimetres and what appears on the sticker are set in Settings.<\/p><\/dd>\n<dt id=\"can%20i%20print%20a%20receipt%20on%20a%20thermal%20printer%3F\"><h3>Can I print a receipt on a thermal printer?<\/h3><\/dt>\n<dd><p>The receipt opens as a narrow monospace window sized for thermal roll paper and prints through your browser's own print dialog, so any printer your browser can print to \u2014 including a thermal roll printer \u2014 will do. There is no driver-level or ESC\/POS printer integration in the plugin.<\/p><\/dd>\n<dt id=\"can%20my%20staff%20use%20it%20without%20giving%20them%20the%20run%20of%20the%20site%3F\"><h3>Can my staff use it without giving them the run of the site?<\/h3><\/dt>\n<dd><p>Anyone who can manage WooCommerce \u2014 the Shop manager role, plus administrators \u2014 can open the POS screens; nobody needs a full administrator account to work the counter. Developers can point the <code>rpsw_capability<\/code> filter at a different capability.<\/p><\/dd>\n<dt id=\"can%20i%20take%20a%20return%20without%20the%20receipt%3F\"><h3>Can I take a return without the receipt?<\/h3><\/dt>\n<dd><p>Yes \u2014 returns are blind. Scan what the customer brings back, refund it, and stock is restored automatically; the payout is recorded as a refunded POS order so the day's figures stay honest. There is no stock cap on the returns cart, so you can take back more than the shop currently holds.<\/p><\/dd>\n<dt id=\"does%20the%20pos%20work%20offline%3F\"><h3>Does the POS work offline?<\/h3><\/dt>\n<dd><p>No. This is a WordPress admin screen and it needs a live connection to your site \u2014 every scan, search and sale is a request to WordPress. If the internet drops at the counter, the terminal stops with it.<\/p><\/dd>\n<dt id=\"what%20languages%20does%20it%20come%20in%3F\"><h3>What languages does it come in?<\/h3><\/dt>\n<dd><p>Every string is translatable. The plugin ships its translation template only; translations are served as WordPress.org language packs, and a switcher on the POS screens lets each user read the POS in any language WordPress has a pack installed for, independently of the rest of wp-admin. Anything else falls back to English, and right-to-left languages get an RTL layout.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20uninstall%20it%3F\"><h3>What happens to my data if I uninstall it?<\/h3><\/dt>\n<dd><p>The plugin removes its own options and scheduled events and stops there. Your products, stock, customers and orders stay exactly as they are \u2014 including the POS ones, because they are ordinary WooCommerce orders and always were.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<li>Sale terminal: barcode scanning (scanner gun + phone camera), product search, cart with stock caps and inline quick edit, tax-correct manual discounts, configurable payment methods, printable receipt and a post-sale remaining-stock snapshot.<\/li>\n<li>Blind (receiptless) returns that refund and restock automatically.<\/li>\n<li>POS order list with filters and safe editing; dashboard with a calendar month-to-date total, daily revenue, payment breakdown and best sellers, all net of returns.<\/li>\n<li>Barcode label printing (JsBarcode) with a configurable label size and content.<\/li>\n<li>Fully translatable: the plugin ships its translation template (<code>languages\/eren-labs-retail-pos-for-woocommerce.pot<\/code>) and no catalogs of its own, so translations are served as WordPress.org language packs. A per-user language switcher lets each cashier read the POS in a different language from the rest of wp-admin, with English as the fallback.<\/li>\n<li>Built-in Help &amp; support page. HPOS-compatible; works on classic order storage too.<\/li>\n<li>Documents the Pro version's Freemius licensing under \"External services\"; the free package ships no licensing or telemetry code at all.<\/li>\n<\/ul>","raw_excerpt":"Point of sale for WooCommerce: sell in store with a barcode scanner or phone camera. A POS system with receipts, returns and barcode labels.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/348754","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=348754"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/erenlabs"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=348754"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=348754"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=348754"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=348754"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=348754"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=348754"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}