WooCommerce iZettle Integration


The plugin works with “iZettle GO” as well as “iZettle GO PLUS”.

Now you can save many hours by connecting WooCommerce with iZettle and get help to:

  • Create WooCommerce products in iZettle, including the main image.
  • Update the products in iZettle when something changes on a product in WooCommerce (including stock level).
  • Download iZettle purchases and create an order in WooCommerce or just update the stock level on the purchased products.
  • Generate EAN-13 barcodes for use in iZettle.
  • Populate the iZettle purchase price field in WooCommerce.

Download and test within seconds, just authorize the plugin to your iZettle account and start to sync.

When first connected you will get a one-week free trial where you can test all functionality including the automatic sync, when the free trial ends all functionality remains but with the limitation to perform manual synchronization every 7:th day.


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

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


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 iZettle 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 iZettle, enter your account details and authorize the plugin (your account user-id and password remains safe with iZettle and cannot be reached by the plugin).
  4. When the authorization is complete, close the window

Products to iZettle

If you have a valid subscription or trial, you can select how often you want to Sync products to iZettle. Without subscription or trial, sync can be done manually every 7:th day.

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

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

The plugin can be configured to Use the price from the iZettle 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 iZettle but not in the web shop.

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

Some things to remember about product synchronization:

  • If you do not have a valid subscription or trial, the selector for how often product synchronization can be done is not shown.
  • When you use the selection When changed in WooCommerce it can take a minute or two before you see the change in iZettle.
  • 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 iZettle, use the “Do not sync to iZettle” checkbox. You find it at the Inventory tab of simple products or at each variation of variable products.

Products from iZettle

If you have a valid subscription or trial, you can import products from iZettle to WooCommerce. This is normally done once to get started with WooCommerce if you have previously only used iZettle.

It is not reccomended to manage the products in iZettle and do imports to update in WooCommerce. The recommended way of working is to administer your products in WooCommerce and let them sync automatically to iZettle.

Purchases from iZettle

If you have a valid subscription or trial, you can select how often you want to Download purchases. Without subscription or trial, sync can be done manually every 7:th day.

When downloading purchases the plugin is creating a local copy of your purchases. You can view and perform actions on downloaded purchases in the iZettle 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 iZettle 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 iZettle 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 iZettle and WooCommerce products.
  • Use the barcode field in WooCommerce described above and copy the data in the field to iZettle.
  • Use the SKU field on the product or variation and copy the data in the field to iZettle.
  • Use the barcode field in iZettle and copy the data to the WooCommerce barcode field (useful if you want to handle the admin of barcodes in the iZettle 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 trouble-shoot.

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


Q: What can I sync if I do not purchase a subscription?
A: You can sync manually without any cost for two hours once a week, the two hours stars when you sync something. After the two hours you must wait a week until the next syncing can be done.

Q: I believe that I have configured everything correct and done manual sync, still nothing happens. No products being synced to iZettle 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 iZettle, is this a bug?
A: iZettle 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 iZettle, it seems that all products are uploaded to the “root” on iZettle. Will the sync still work both ways if I move the products to different folders in the iZettle admin (with browser) after the Woo -> iZettle 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 iZettle 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 iZettle. The name change will be overwritten next time the product is synced from WooCommerce. Instead use the field “Product name” at the iZettle tab on your products. Just enter the name you want on the product in iZettle in the field.


May 19, 2020
I absolutely love this plugin. I have been using a similar but more expensive plugin from WeTail. But this one is much better it seems. Great job Björntech! Wilgart - Handcrafted Danish Headwear
January 1, 2020
Nice app. For a starting business a bit expensive. So free app is welcome, but unfortunately the free sync doesn’t work, so for now it is unusable for me. Update 01-01-2020: After contact, it was determined there was a bug in the plugin. Author made a change to the plugin and now syncing product work like it should. Thanks!!!
November 14, 2020
I want to love this plugin but at this price i cant. 12$ a month is more expensive than i paid for hosting the website. That was my original review but after using the free version for months now i can say that its a great plugin and if you need the extra syncs that week paying the fee isn't too bad there tech support is a solid 10/10
October 28, 2019
There are tons of plugin authors who promise support and only give it when you pay up. BjornTech surprised me by being fast, knowledgable immediately after installing the plugin. A minor issue, he tackled it and made the improved version immediately available as an update to all users. My reward? Subscribed for a year after the trial period. Minor issue that I brought to his attention was immediately attended to. 300+ installations and growing with only 6 reviews so far because let's face it; people don't have time and tend to forget that leaving a good review is very important for these guys. So, it works well, you get immediate help in case of issues? LEAVE a REVIEW - he's worth it, promise!
October 28, 2019
With increased purchases, we've searched for an easy solution to synchronise stock levels both for our Woocommerce online shop as well as for izettle go that we use in our brick and mortar store. Once installed, this plugin is such a time saver for us. It seems it gets optimised constantly and in case of an issue, customer support will quickly provide a solution.
June 5, 2019
Bjorntech made the effort to change their plugin so the switch from another synchronisation plugin could be done without removing products from iZettle and syncing again. So very satified with the plugin and the support.
Read all 10 reviews

Contributors & Developers

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


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

Translate “WooCommerce iZettle Integration” into your language.

Interested in development?

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



  • New: If configured to use sale price if it exists and the price is set with schedule the plugin will now update iZettle price when sale starts and stops.
  • New: Possibility to update category on the iZettle product when updating from WooCommerce. If a product belongs to more than one category, the first one will be used.
  • New: Added a “Generate barcode” at the barcode field.
  • New: Added a function to download a fresh copy of a purchase and update already created orders from the iZettle purchases list. Useful if something is wrong with iZettle data when first creating the order.
  • Fix: The plugin did not handle stocklevel correct on variable products where “Manage stock” was set on product level.
  • Fix: Totals where not displayed in the admin mail sent when creating a WooCommerce order from a purchase.
  • Fix: The “Dry run” import function did crash if the import was set to import stocklevel.
  • Fix: Rewrite of the barcode handler.
  • Fix: Additional fixes to handle the faulty datastructure from iZettle (see 6.4.1)
  • Fix: In some cases products where duplicated instead of updated when data on a product was changed in iZettle.


  • Fix: On Feb 9, 2021 iZettle suddenly and without warning to integrators changed the data-structure for purchases causing WooCommerce orders to be created with 0 as total for each item-row. This version is fixing this problem. The issue have been reported to iZettle.


  • Fix: Tax-class on items in a purchase was only set if the WooCommerce product existed. Causing VAT to not be correct in the purchase.
  • Fix: Tax calculation was rounded at 4 decimails instead of 2, causing rounding issues in purhcase totals in some cases.
  • Fix: Product name for products created in iZettle was not sanitized.
  • Fix: Setting iZettle UUID to WooCommerce products before creating/updating in order to prevent multiple products to be created in case of errors in iZettle.
  • Fix: Tax amounts in orders based on a purchace containing discounts whas not calculated correct way.
  • Fix: When weight was imported from iZettle the plugin did not take the weight-settings into account when saving.
  • Fix: Double check that images are really changed when a product is updating, this to avoid updates of images when not needed.


  • Fix: An extra , did cause crash messages to be sent from the site in some PHP versions


  • Fix: Tax amounts on WooCommerce orders where wrong if items with discounts where included in the purchase.
  • Fix: WooCommerce admin notes did cause some installations to crash when syncin variable products.
  • Fix: Handle duplicates of UUID:s on variants caused by copying products in previous releases.
  • Fix: Make the plugin always to poll for purchases rather than to rely on webhook-calls. This due to recent issues with th iZettle pusher API.
  • New: The plugin can be configured to delete products in WooCommerce if they are deleted in iZettle.
  • New: Added the possibility to map tax percentages in iZettle with Tax-class in WooCommerce. This was done automatically i previous versions but could fail sometimes.


  • Fix: Variable products did not sync correctly after 6.2.1


  • Fix: Products included in a grouped product was not synced due to an error in checking for the parent of a product variant.
  • Fix: Changed the queuing from iZettle to not be queued as default as it is confusing when the updates takes a lot of time without an active selection to queue.
  • Fix: When a variable product was deleted the metadata on the variations was not deleted.
  • Fix: Image sync errors did give faulty notifications


  • New: Product name added to be displayed in tooltip of changes in stocklevel by purchase in the iZettle tab.
  • Fix: Products in other state than published and private was not updated from iZettle.
  • Fix: Product images where not changed in iZettle if changed in WooCommerce.
  • Fix: The plugin did crash if used on installations with WC > 4.0.0 and < 4.3.0.
  • Fix: 6.1.0 order creation introduced a PHP function that requires PHP >= 7.3 dispite the fact that the plugin only requires PHP 7.2. This casued order creation to crash before orders where fully created.


  • Fix: The plugin was not able to sync products and stocklevels manually on installations with an WC version older than 4.0


  • Fix: Stocklevel from iZettle was not synced when using the queuing mode (the default mode).


  • Fix: iZettle special price did save without division of 100 and caused prices to be saved wrongly in WooCommerce
  • Fix: No barcode generaton (if choosen) was done when a new product was created in iZettle and creating a WooCommerce product
  • FIx: Some data was not saved on the WooCommerce product when importing from iZettle


  • Fix: In some cases updated WooCommerce products where set to an invalid status causing the product not to be shown in the GUI. Please do not run product sync in version 6.1.0. If you experience problems contact support.
  • Fix: In some cases all product data was not changes on WooCommerce products when created or changed in iZettle.


  • New: Discounts are now shown as discounts on items and and extra item not only in totals.
  • New: Added metabox showing when product was updated and UUID to product screen. Configure this box to be shown by cecking option in the advanced section.
  • Fix: Online status must be set if online description is choosen.
  • Fix: A previous version of the plugin did not clean uuid properly causing uuid to be duplicated in some products. The sync is now checking for duplicates and is cleaning faulty products.
  • Fix: In some cases the stocklevel was updated in iZettle also when the option was not set to do this.
  • Fix: Moved iZettle web settings to advanced in order to not confuse users not needing iZettle web settings.


  • Fix: Fixed a problem with the image-handling causing some installations to genereate a fatal error.


  • Fix: Barcodes in the iZettle-tab was not saved.


  • Fix: Illegal whitespace caused some installations to crash when the plugin was enabled.


  • New: WooCommerce 4.0 is required to use all functionality in this version.
  • New: Added possibility to select what product type(s) to syncronize to iZettle.
  • New: Added the possibility to select to not update the price when updating products from WooCommerce to iZettle.
  • New: Added the possibility to bulk edit No-sync.
  • New: Added the possibility to quick edit No-synk, Price and cost price.
  • New: Improved layout and helptext in settings.
  • New: Status messages when syncing is done.
  • New: Possibility to create products automatically in WooCommerce when a product is created in iZettle.
  • New: Possibility to edit all data in iZettle and let changes to automatically edit data in WooCommerce
  • Fix: Attributes not set correct on variations when importing products from iZettle.
  • Fix: The iZettle product importer was timing out if importing a large number of products (> 1500).
  • Fix: Price, Cost price, Product name and No-sync was copied when creating a product from an existing one.
  • Fix: Removed Imagick activation because it caused fatal errors sometimes


  • Fix: Purchases with a large number of items caused the action scheduler to crash in a fatal error.


  • Fix: Queues are now cleared when unistalling rather than deactivating.
  • Fix: Checking for update etag done earlier in order to reduce queuing when updating products from WooCommerce.
  • Fix: Product upload fails If image does not exist on main product or parent.
  • Fix: Logging when searching for products to delete was flooding the log.
  • Fix: Updates for ervers with CRON disabled running WooCommerce > 4.0 did not work.


  • Fix: iZettle variations was always created new in some cases, causing huge inventory records that causes timeouts.


  • New: Using WooCommerce action scheduler to process products and purchases.


  • Fix: Fatal error when saving the e-mail adress in settings the first time.
  • FIx: Global and category settings from WooCommerce advanced quantity is now working.


  • Fix: Removed the possibility to change stocklevel in iZettle since it in some situations can change the stocklevel twice.
  • Fix: The function creating barcodes did log warning messages in the wp log.
  • Fix: Removed the “Any” variant if not needed in variations sent to iZettle.


  • Fix: When editing a product it was synced independant of the syncronisation settings.
  • New: Possibility to set products being synced to iZettle as online products (for iZettle web)


  • New: Added compatibility for barcodes from “Product GTIN (EAN, UPC, ISBN) for WooCommerce”. Can be selected in the barcode section if the plugin is installed.
  • Fix: In some cases when a purchase was creating an order subtotals did include tax amounts.
  • Fix: Stocklevel updates from iZettle did not change the stocklevel in WooCommerce.
  • Fix: Removed session information in logging since some sites where logging an error when calling session_start()


  • Verified to work with WooCommerce 4.0
  • Verified to work with WordPress 5.4
  • Fix: When a barcode was generated the checksum digit where missing.


  • Fix: Clients waiting for free sync and configured to sync when changed is causing the plugin to ask for credentials every minute.
  • Fix: When the name of a product was changed in iZettle the name did not save on the WooCommerce product when configured to do so.
  • Fix: Changing settings for how products should be updated from iZettle did only work if saved twice.
  • Fix: Changing cost price in iZettle did set price to 0 in WooCommerce
  • Fix: Products going out of stock can be configured to be removed from iZettle.


  • New: Added two “dry run” import modes to allow checking how an iZettle import would change already existing products.
  • New: In rare cases a purchase could create double WooCommerce orders. Added queuing mechanism to handle this.
  • New: Several improvements to the iZettle one time import.
  • New: Added Session id in log records for better trouble-shooting
  • Fix: Timestamp on iZettle purchases did show GMT rather than local time.
  • Fix: Changed authorization top level domain as iZettle changed it.
  • Fix: Token did not refresh when the refresh connection was pressed.


  • New: Added advanced setting to make all images to update when doing a full sync.
  • New: Added support for “WooCommerce Sequential Order Numbers” and “WooCommerce Sequential Order Numbers Pro” plugins
  • Fix: Image metadata was not cleaning image information when copying a product, resulting in the plugin to copy the products old image.
  • Fix: Improved one time import of variable products.
  • Fix: Setting iZettle price on product variations from the edit product view did not work since the change in 4.6.1


  • Fix: Removed load text domain as WordPress is doing the loading automatically.
  • Fix: Cleaning up README.txt as it became larger than the recommended 10k.
  • Fix: iZettle price internally changed to izettle_internal_price to give better clarity on what is is.


  • New: Added the possibility to change barcode, price, cost price and name to be changed in the izettle app or web.
  • Fix: Price or costprices changed in iZettle where saved including tax in all situations. This caused tax to be added again if prices where saved excluding tax in WooCommerce.
  • Fix: A change done in the barcode field did not always save, leaving the field blank after an update.
  • Fix: If the system was using , as decimal delimiter izettle price and cost price entered in the iZettle tab did not update decimals.


  • Fix: Date shown for purchase was 1 hour wrong.
  • Fix: Tax-rate calculation on a product with no tax-rate calculation caused warnings in php log.
  • Fix: A purchase made in an iZettle non-library product caused warnings in the PHP-log.
  • Fix: One time import from iZettle did match on internal reference rather than SKU field and because of this failed to match SKU:s.
  • Fix: Simplified the changing of stocklevels
  • Fix: If a name was changes in the iZettle client it was not changed in WooCommerce


  • New: Added functionality to use iZettle UUID as main identifier. Useful if using SKU:s but no not have SKU on all products.
  • New: Support for “Price Based on Country for WooCommerce” (https://wordpress.org/plugins/woocommerce-product-price-based-on-countries/)
  • Fix: In some cases free sync did not work fully (problem introduced in 4.4.0)
  • Fix: In some cases a newly saved bardode updated iZettle but left the WooCommerce product field empty causing a later sync to clear barcode in iZettle.
  • Fix: Barcode should not be copied from originating product to new when duplicating products.
  • Fix: Uuid was not saved on new product variations.