WooCommerce Zettle Integration


The WooCommerce Zettle Integration plugin is highly configurable and easy to use. Download and test within seconds, just authorize the plugin to your Zettle account and start to synchronize.

This plugin lets you:

  • Create Zettle products from WooCommerce products.
  • Create WooCommerce products from Zettle products.
  • Realtime update selected data on products in Zettle from changes in WooCommerce.
  • Realtime update selected data on products in WooCommerce from changes in Zettle.
  • Syncronize stock levels between WooCommerce and Zettle.
  • Optionally create WooCommerce orders based on purchases made in Zettle.
  • Optionally generate EAN-13 barcodes for use in Zettle.

The plugin is compatible with the “WooCommerce advanced quantity” plugin.

When first connected you will get a one-week free trial where you can test all functionality including the automatic sync. Additional trial time can be arranged if needed. More information here.


Install the plugin from the WordPress store as you would do with a plugin.

You will find all settings under the tab Zettle that can be found at WooCommerce->Settings->Zettle.


Enter your e-mail adress in the the User e-mail field. The e-mail is used for sending the Access Token required when purchasing a subscription.

  1. Press Authorize to connect the plugin with your Zettle account, popup windows must be allowed in the browser for this to work.
  2. You will be asked to agree with our privacy policy.
  3. You are then redirected to Zettle, enter your account details and authorize the plugin (your account user-id and password remains safe with Zettle and cannot be reached by the plugin).
  4. When the authorization is complete, close the window

Products to Zettle

Select how often you want to Sync products to Zettle.

The plugin can create a set of products in Zettle out of the products you have in WooCommerce. Products that you already have in Zettle will remain unchanged.

When syncing products the plugin can be configured to update stock levels on the products in Zettle created by the plugin.

The plugin can be configured to Use the price from the Zettle standard price field or the sales price field. If the sales price field is chosen and the field is blank on a product, the plugin will use the standard price on that product.

Include products with status selects if only products being published or if all products regardless status should be synced. This is useful for products sold in Zettle but not in the web shop.

In Product categories to sync you can select the product categories that will be synced to Zettle, leave blank if you want all products to be synced.

Some things to remember about product synchronization:

  • When you use the selection When changed in WooCommerce it can take a minute or two before you see the change in Zettle.
  • If you have large number of products, the sync will take a long time. Do not start it several times.
  • You can always start a manual sync by pressing the Start button
  • If you want to prevent a single product or variation from being synced to Zettle, use the “Do not sync to Zettle” checkbox. You find it at the Inventory tab of simple products or at each variation of variable products.

Products from Zettle

The recommended way of working is to administer your products in WooCommerce and let them sync automatically to Zettle.

It is possible to configure what fields you do want to be able to change in Zettle and get automatically updated in WooCommerce.

The plugin can also be configured to create new WooCommerce product based on new products created in Zettle

Purchases from Zettle

You can select how often you want to Download purchases.

When downloading purchases the plugin is creating a local copy of your purchases. You can view and perform actions on downloaded purchases in the Zettle tab, found in the main WordPress menu.

The plugin can create an order or just change the stock level for products being sold when a purchase is arriving to WooCommerce. These functions can also be manually performed at the Zettle tab in the main menu.


The plugin is adding a Barcode field at the Inventory tab on each simple product. On variable products a Barcode field is added on each variation of the product.

You can enter information manually on each product or let the plugin populate the Zettle barcode field in a number of different ways:

  • Generate an EAN-13: If the barcode-field in WooCommerce is empty an EAN-13 barcode will be generated and saved on both the Zettle and WooCommerce products.
  • Use the barcode field in WooCommerce described above and copy the data in the field to Zettle.
  • Use the SKU field on the product or variation and copy the data in the field to Zettle.
  • Use the barcode field in Zettle and copy the data to the WooCommerce barcode field (useful if you want to handle the admin of barcodes in the Zettle app)
  • Clean the barcode field (useful if you want the plugin to generate new barcodes automatically later.)


CAUTION: Use the advanced settings carefully and only if you fully understand the implications.

Enable logging if you experience problems with the plugin and need to troubleshoot.

Contact hello@bjorntech.com for more information about the advanced settings.


Q: What can I sync if I do not purchase a subscription?
A: All syncing is open during the trial period.

Q: I believe that I have configured everything correct and done manual sync, still nothing happens. No products being synced to Zettle and no purchases downloaded.
A: Your system probably has CRON disabled. Go to the settings page, check the box \”CRON disabled on server\” and save. While you are there, also check the \”Enable logging\”. Check the logs at \”WooCommerce->Status->Logs\” after a couple of minutes and you will see how the updates started. If not, send us the logfiles to hello@bjorntech.com and we will look into the problem.

Q: Some variable products are created without variations in Zettle, is this a bug?
A: Zettle has a limit of max 99 variations on a product. To handle this, we are removing all variations on a product with more than 99 variations.

Q: When I sync products from Woo to Zettle, it seems that all products are uploaded to the “root” on Zettle. Will the sync still work both ways if I move the products to different folders in the Zettle admin (with browser) after the Woo -> Zettle sync?
A: The sync will always work both ways regardless of how you organize the products into folders from the browser or app.

Q: If I rename products (shorten names) on the Zettle website, will this have any affect on syncing? It will not change the product names in Woo store, right? What name will be shown in the customers receipt (I would prefer the longer name from Woo)?
A: Do not rename products in Zettle. The name change will be overwritten next time the product is synced from WooCommerce. Instead use the field “Product name” at the Zettle tab on your products. Just enter the name you want on the product in Zettle in the field.

Q: Do you support syncing of WEBP product images?
A: Yes

Q: Is the plugin compatible with the Zettle Inventory API change set to occur on the 31st of May 2023 (see https://developer.zettle.com/docs/api/inventory-v3/inventory-api-migration-guide)?
A: Yes

Q: Is the plugin compatible with HPOS (High performance order storage)?
A: Yes


August 23, 2022
This plugin is turning out to be a real lifesaver for us. We have 3000 – 4000 products that need to be synchronised between WooCommerce and Zettle and this plugin has made that process so much easier. The settings allow for complete control over the whole sync process and we are delighted – thank you! The support is awesome too and a big shout out to Carl who answered our questions quickly and helped us get our first test synchronisations completed successfully.
August 22, 2022
To start amazing product and integration! Secondly the man behind this truly a legend! Great customer service and very friendly! I would recommend this to anyone working with Woocommerce and Settle. ***** stars for me!
August 11, 2022
This is by far the most time saving plugin we have installed. With a lot of configuration options, it is still easy to set up and get to work to our specific needs. We have products in Zettle that should not be in woocommerce, and everything still just works. I’ve contacted support twice – the first time the problem was entirely caused by me (and could easily be corrected by me). The second time there actually was a minor bug in the plugin – a very specific case with special characters invovled that I think could pass most companies tests. Both time I was met with great respect, quickly and by someone with very good knowledge. The issues were solved within the day. Simply great custumer support, which should make any company proud. But my overall experience with the plugin is that it “just works”, and is well worth it’s realatively low fee.
May 18, 2022
Excellent plugin that allowed us to develop a site for a client which integrates their instore Zettle account to their online WooCommerce perfectly and so much better than Zettle’s own offering. Zettle really should simply recommend their customers use this plugin. In addition, and very importantly, the support is excellent. A couple of minor queries were answered within the hour and a syncing issue was fully diagnosed and sorted by the next morning. Data is now synchronising exactly as we need, very quickly and in both directions which is just what we were looking for and well worth the subscription. Put simply, we couldn’t have delivered to the customer requirements without this. If you need to integrate Zettle to your WooCommerce site, you won’t find better than this plugin.
February 18, 2022
Due to a lot of miscommunication and not sharing access to their zettle account, what should have been a simple process with a plug-in that does exactly as it should, became a bit of a nightmare thanks to the client being rather inept. Thankfully Bjorntech have an amazing approach to support and are friendly, helpful and most of all, fast at dealing with issues, even when the issue wasn’t their fault at all, helping troubleshoot and offering solutions along the way was one of the most pleasant and incredibly helpful customer service. Carl in particular who dealt with my situation was a real treat to talk to and made everything very easy to deal with. Honestly staggered by how good their customer service was, we pay a lot for a lot of premium plugins across our sites, from buddyboss to wp rocket and their support is always horrific, never respond or just act like it’s not their fault their plugins aren’t working, if only we could clone a Carl and have him work in some of those companies too we’d have some amazing support everywhere! Thanks again for all your help
December 21, 2021
Ignore the other zettle plugins, this extension is by far the most reliable and support is very competent and efficient.
Read all 18 reviews

Contributors & Developers

“WooCommerce Zettle Integration” is open source software. The following people have contributed to this plugin.


“WooCommerce Zettle Integration” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “WooCommerce Zettle Integration” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • 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


  • 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


  • 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


  • 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


  • Fix: Error when accessing Products from Zettle settings if not authenticated


  • 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


  • 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


  • 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


  • 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 Zettle 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


  • 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


  • 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


  • 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 Zettle
  • 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


  • 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


  • 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


  • 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


  • Fix: Fixed more typos


  • 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


  • Verified to work with WooCommerce 6.8
  • Fix: Not able to handle attributes with only numerical values when exporting to Zettle


  • Verified to work with WooCommerce 6.7
  • Added Getting started guide to plugin


  • 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


  • 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


  • 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


  • 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


  • 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.


  • 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.


  • 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.


  • The plugin is verified to work with WooCommerce 5.7
  • Fix: Tax was not handled correct for US Zettle installations if vat was not enabled in WooCommerce
  • Fix: Variation images was not imported when importing products from Zettle


  • Fix: Purchases did not update when using debug mode.


  • The plugin now requires PHP 7.3
  • The plugin is verified to work with WooCommerce 5.6
  • New: Now using the inventory tracking started and stopped messages from Zettle
  • Fix: The webhook error message was not removed after a temporary webhook error
  • Fix: Metadata was cleaned from products when using delayed publication, resulting in duplicates in Zettle.
  • Fix: Product variations with 0 in stock in Zettle was not set to manage stock when imported to WooCommerce
  • Fix: Missing customer name on orders.
  • Fix: VAT was not stored correctly on orders causing VAT to not show in statistics. Use the repair function to fix already created orders.


  • Verified to work with WordPress 5.8 and WooCommerce 5.5
  • Fix: Stocklevel was not set to 0 if a product was created in an import from Zettle.
  • Fix: If multiple Taxes was used on a purchase, taxes was not set correctly on created orders.
  • Fix: If stocklevel was set both from “Products from Zettle” and from “Purchases” the stocklevel could be corrupted in some cases.
  • New: Implemented the new Zettle tax-setting API. Currently only used for USA-customers.
  • New: Added the possibility to not sync SKU to Zettle.


  • Fix: In some cases stocklevel is not updating correctly when importing manually.
  • Fix: Allow for non-numeric article id:s when syncing stocklevel change directly to the ERP-system Fortnox.


  • Fix: Purchases from Zettle where not automatically downloaded if the configuration page was saved after v7.0.4, please check the configuration and save the page again.


  • New: Added an error message when the backend service is unable to connect to the site.
  • Fix: Products included in a grouped product did not sync as expected.
  • Fix: In some cases metadata was not cleaned correctly when trashing a product.
  • Fix: Adjusted error message lenght on CURL errors.


  • Fix: Variable products did not update correct to Zettle


  • Fix: In some cases stocklevel changes on product variants did causes faulty “Mismatch” error mesasge.
  • Fix: In some cases updating a product caused a fatal error in the barcode update.


  • Fix: Settings page for products to Zettle did not load due to an error.


  • Fix: Stocklevel on variaitons was not handled correctly


  • Fix: When importing new variable products from Zettle, the product variations where not saved in all cases.
  • Fix: Importing product variation images from Zettle caused an error and the image was not imported.