Verified to work with WooCommerce 10.7 and WordPress 6.9
New: Added support for WooCommerce Cost of Goods Sold (COGS) field when syncing cost prices
New: Added option to use ?rest_route= format for webhook URLs to resolve 404 issues on certain permalink setups
New: Added customizable “On sale” text prefix for products marked on sale
New: Added “On sale text” setting to configure the sale label displayed before product names
Fix: Hardened output escaping and input sanitization across admin and frontend templates
Fix: Added nonce validation to AJAX handlers and sanitized all $_REQUEST / $_POST inputs
Fix: Mobile app REST API requests (WooCommerce iOS/Android) now correctly delay product sync to avoid race conditions
Fix: Rate limiter now properly enforces minimum interval between PayPal POS API calls
Fix: Improved product UUID / variant UUID metadata handling to prevent duplicate or missing meta entries
Fix: Variation creation/update hooks now correctly sync parent products instead of variations
Fix: Webhook destination URL construction improved for alternate webhook configurations
Fix: Replaced deprecated get_page_by_title() with WP_Query in purchase transaction handling
Fix: Fixed missing exit after wp_safe_redirect on connection refresh
Fix: Fixed broken HTML custom attributes in admin input fields (double-escaping bug)
Fix: Various translation string fixes and added translator comments throughout
Dev: Added missing exit after wp_safe_redirect to prevent further execution
Dev: Updated internal error prefix from [Zettle error] to [PayPal POS error]
8.0.3
Verified to work with WooCommerce 10.4 and WordPress 6.9
New: Added option to enable/disable direct stock updates to PayPal POS
Fix: Improved image upload reliability by using file upload endpoint instead of byte array
Fix: Added verification check for uploaded images to handle 404 responses
Fix: Prevented race conditions when updating stock levels by adding a locking mechanism
8.0.2
Fix: Namechange to reflect the change of the underlying system from Zettle to PayPal POS
8.0.1
New: Added option to use the native GTIN field in WooCommerce to sync barcodes to and from Zettle
Fix: Plugin sometimes triggering sync from WooCommerce to Zettle unnecessarily
Fix: Namechange
Dev: Performance improvements
Dev: Declared some variables in a different way to avoid warnings
Dev: Added option to switch to new backend
8.0.0
Verified to work with WooCommerce 10.2
Fix: Orders created from Zettle sometimes triggering empty new order emails
Fix: Purchases using Gift cards are imported correctly sometimes
Fix: Syncing of WebP images not working on certain server setups
Fix: Tokens from Zettle being fetched in parallell causing intermediate connection issues
7.9.9
Fix: Namechange
7.9.8
Verified to work with WooCommerce 10.0
New: Added option to not turn off stock tracking in Woo when products are removed in Zettle
New: Added the option to use a lock when grabbing access tokens from Zettle – this will make the plugin more stable when using caches and similar
New: Added option to use the parent SKU for syncing products instead of the variant SKU
New: Added option to improve compatibility with ACF Better Search
Fix: Swish Zettle payments registed as ZETTLE_SWISH instead of IZETTLE_SWISH
Fix: Metadata sometimes not saved properly to products
Fix: View values of the manage stock and stocklevel options used instead of edit values – causing issues with some plugins
Dev: Better error handling
7.9.7
Verified to work with WooCommerce 9.8 and WordPress 6.8
New: Added option to use alternative Zettle barcode when exporting product data to Zettle
Fix: Product names longer than 64 characters being shortened when exported to Zettle
Fix: Some Zettle purchases not processed when imported to WooCommerce
Fix: Requests to Zettle sometimes timing out
7.9.6
Verified to work with WooCommerce 9.7
New: Added option to change the order number to display “ZT-” before orders that have been created by the plugin
New: (Experimental) Added option for US companies to better select what tax rates products should have in Zettle
Fix: Extra variants being created in WooCommerce under special circumstances
Fix: WebP images sometimes uploaded incorrectly to Zettle
Fix: Syncing a new product to Zettle without a tax/VAT rate not working
7.9.5
Verified to work with WooCommerce 9.4
New: Added option to pick the barcode from the Atum Barcode field
Fix: Tax calculations sometimes incorrect when using discounts in purchases that are importent to WooCommerce from Zettle
Fix: Mismatch errors stopping syncs from working when saving on some variant fields
Fix: Some items not matching well using SKU when running WPML and syncing products from Zettle
Dev: Now runs at woocommerce_init instead of plugins_loaded
7.9.4
Verified to work with WooCommerce 9.3 and WordPress 6.7
New: Added feature to include “On sale” in Zettle product name when product is on sale in WooCommerce
New: Added option to not do a check on the external reference when syncing products to Zettle
Fix: WPML – Zettle settings not showing on certain products with some WPML settings
Fix: WPML prices sometimes synced with double tax
Fix: Performance improvement for cleaning product orphans in Zettle
Fix: Products not syncing when Zettle meta values updated without WooCommerce methods
Fix: Incorrect total order value on WooCommerce orders created from Zettle purchases
7.9.3
Verified to work with WooCommerce 9.1 and WordPress 6.6
New: Added support for AVIF image format
New: Added option to lock the installation id when connecting to Zettle again
New: Added option to handle WPML Multicurrency prices better
Fix: Numeric attributes not handled properly if negative
7.9.2
Verified to work with WooCommerce 8.9
New: Added option to handle Zettle gift cards purchases as separate order items in WooCommerce orders created from Zettle purchases
Fix: The Zettle barcode field under the quick edit view not showing existing barcode if set
7.9.1
Verified to work with WooCommerce 8.7 and WordPress 6.5
New: Added option to create a WooCommerce customer when creating a WooCommerce order from a Zettle purchase
New: Added quick edit option to update the Zettle barcode field
Fix: Refresh link in error message not refreshing connection to Zettle
Dev: Fix some deprecation messages
7.9.0
Verified to work with WooCommerce 8.6
New: Added category exclusion filter in Products to Zettle
New: Added option to put SKU in front of product name
New: Added option to filter out virtual products when syncing to Zettle
New: Added option to set low stock status in Zettle
Fix: Manual syncs ignored if you’d put Update products in WooCommerce as your import behaviour
Dev: Updated logging logic
7.8.9
Verified to work with WooCommerce 8.5
New: Added option for adding Zettle purchase row comments as meta data to order items in WooCommerce when syncing purchases from Zettle
Fix: Non-latin character handled incorrectly for Zettle purchases
Dev: Added filter for changing unit names when syncing products to Zettle
Dev: Better logs for image syncing
Dev: Added metadata to Zettle gift card purchases for integrations with other plugins
7.8.8
Fix: Error when accessing Products from Zettle settings if not authenticated
7.8.7
Verified to work with WordPress 6.4
New: Added import filters when importing products from Zettle
Fix: Category changes in WooCommerce sometimes not picked up when syncing product to Zettle
Fix: WebP image exports to Zettle not working on some server setups
7.8.6
Verified to work with WooCommerce 8.2
New: Added support to export Yoast Pro barcodes
New: Added a new category export filter that takes category hierarchies into account
New: Added support for the Future status in the Product export filter
New: Added option to use comments on simple amount purchases in Zettle to bind a Zettle purchase with an existing WooCommerce order
New: Added option to set a special status on orders created from Zettle if one item or more in the purchase is out of stock
New: Added option to set the webhook priority on the shutdown hook that handles Zettle updates
Fix: Base currency not correctly selected sometimes when using the WPML/WCML currency solution
Fix: Set it up so that multiple Zettle stock import options can’t be enabled at the same time – for new users
Fix: Categories sometimes not being found when syncing categories to Zettle from Woo
Fix: Stock changes sometimes trigged twice when using Zettle purchases combined with Products from Zettle stock sync
Fix: Error notices showing wrong timestamp
Fix: WebP images sometimes not being synced when dynamic image resizer plugins or solutions are active on the site
Dev: Updated default settings for new users
Dev: Added more logging
7.8.5
Verified to work with WordPress 6.3 and WooCommerce 8.0
New: Added option to delete variants in WooCommerce if deleted in Zettle – automatically enabled for new users
New: Added a better option for handling unusual characters in Zettle JSON objects – automatically enabled for new users
Dev: Added better descriptions in plugin
7.8.4
Verified to work with WooCommerce 7.9
WC High-Performance Order Storage compatibility declaration
New: Added option to allow the conversion from simple products to variable products when syncing existing products from Zettle to WooCommerce
New: Added option to sync products between WooCommerce and PayPal POS using a better type of UUID matching
Fix: Syncing interrupted sometimes when using the Price Based on Country for WooCommerce plugin
Fix: Incorrect currency during syncs used when using the CURCY plugin
Dev: Added more filters
7.8.3
Verified to work with WooCommerce 7.5 and WordPress 6.2
New: Added option to force the new order email to be sent to site admins upon the creation of a WooCommerce order from a Zettle Purchase
Fix: Daily sync actions in the Action scheduler constantly being cancelled
Fix: Tax sometimes incorrectly calculated for US clients
Fix: Incorrect currency being used during syncs to Zettle when Aelia Currency Switcher is installed on the site
Fix: Empty error messages being shown at times
Dev: Added support for the new Zettle Inventory API
7.8.2
New: Added option to not sync attributes at all from Zettle to WooCommerce
Fix: Tooltips not showing on Zettle purchases page
Fix: Some options under Zettle purchases still displayed when disabling Zettle purchases
7.8.1
Verified to work with WooCommerce 7.4
Added support for WEBP images
Added option to only perform a daily sync at certain intervals
Added option to not use external references to match products between WooCommerce and PayPal POS
Added option to bulk remove Zettle metadata from products
Added option to not show any notices from plugin
Fix: Zettle integration injecting javascript that already is provided by WooCommerce
7.8.0
Verified to work with WooCommerce 7.2
Added option to not generate an order created email that is sent to the admin when Zettle orders are created in WooCommerce
Added option to not reduce stock when Zettle orders are created in WooCommerce
Added option to do a daily export to Zettle in addition to exports done in realtime
Added option to sync Zettle stock values to a metadata value on the WooCommerce product instead syncing it to the product stock value
Added option to sync custom units on Zettle product over to WooCommerce as a metadata field on the product
Added support for the new FinanceV2 Zettle API
Bug: Variants not deleted from Zettle when removed in WooCommerce
7.7.1
Verified to work with WordPress 6.1
Fix: Duplicate categories in WooCommerce sometimes not handles properly when syncing to Zettle
Fix: Logs behaving strangely if null values are entered
7.7.0
Verified to work with WooCommerce 7.0
Added advanced option to skip looking for webhook signatures from Zettle
Fix: Plugin sometimes loosing connection to Zettle when site is inactive for a long time
Fix: Drafts not syncing correctly to Zettle after last update
Fix: Better error messages for some scenarios
7.6.9
Fix: Fixed more typos
7.6.8
Moved around options to make the plugin easier to understand and use
Added better support for UUIDs created outside of the plugin
Fix: Multiple typos in the plugin corrected
Fix: Error when accessing tax options for certain configurations
7.6.7
Verified to work with WooCommerce 6.8
Fix: Not able to handle attributes with only numerical values when exporting to Zettle
7.6.6
Verified to work with WooCommerce 6.7
Added Getting started guide to plugin
7.6.5
Fix: Export button not working properly sometimes when using WPML/Polylang
Fix: Plugin will always use sale price when available regardless of pricing option chosen
7.6.4
Verified to work with WordPress 6.0 and WooCommerce 6.5
Added option to sort variants and attributes alphabetically when imported from Zettle
Added option to map barcode imported from Zettle to a specific meta data field in WooCommerce
Fix: getPid() causing warnings when disabled
Fix: Attribute name empty when importing attribute from Zettle that has a space before or after the name
7.6.3
Verified to work with WooCommerce 6.3
Added option to trigger save_post when stock is updated from Zettle
Added option to trigger low and no stock notification emails when stock is changed via Zettle
Fix: Cron replacement option triggered queued actions ran before actual requests to service, causing severe lag
Fix: Scheduled sales caused Mismatch errors
Fix: Issue where new products created could sometimes have an existing reference to Zettle attached – causing duplicate behavior
7.6.2
Verified to work with WooCommerce 6.2
Added option to trigger save_post when products are created/updated in WooCommerce via Zettle
Fix: Issue with stocklevel changes if the Zettle Purchase stock change option and Products from Zettle stocklevel option was turned on at the same time
7.6.1
Verified to work with WordPress 5.9 and WooCommerce 6.1
Fix: Categories was duplicated in every sync if synced from Zettle.
Fix: TAX was incorrectly stored on order when creating WooCommerce order from Zettle purchase, causing problems if syncing to accounting system.
7.6.0
New: Added admin option to clear all Zettle data on products in WooCommerce
New: Added function to set specific category to be used in Zettle on WooCommerce product.
7.5.0
The plugin is verified to work with WooCommerce 5.9
New: Added option for prioritizing Zettle price above Sale price
Fix: Changed import type to Merge products as default
Fix: Error thrown if SKU is too long
Fix: Notices failing to show up
Fix: Variations out of stock were synced even when configured not to
Fix: Added timestamp to notices
Fix: Failing to unschedule actions causing error
Fix: thepostid variable not declared causing warnings
Fix: Wrong number of parameters in the update of products from zettle caused products to be created although setting was set to only update.