Xero Integration - User Guide

Xero Integration - User Guide

For pricing and how to add to your website see at the bottom of the page.

Setup and Configuration

To set up the connection between your WooCommerce store and Xero account, there are two steps:

  1. You will need to create a private Xero application in your Xero portal
  2. Then you will need to connect your Xero application to WooCommerce

Note: Per limits set by Xero, a single Xero app will only support a maximum of 25 OAuth connections and a connection to two (2) organizations.

Step 1: Create a new application in Xero Developer portal

Go to the Xero Developer portal My Apps ( you may need to log in using your xero.com credentials ) section and click on the “New app” button:

Upon logging and clicking the “New app” button you will be presented with the following screen:

Fill in the form:

  • App name – this is the name of your application, choose an easy to remember name.
    Note: Do not include a symbol in the app name or connection may fail.
  • OAuth 2.0 grant type – this should be set to Web app
  • Company or application URL – URL to your shop or main page.
  • Privacy policy URL – optionally you can add a link to your shop privacy policy.
  • OAuth 2.0 redirect URI – you can find this URI inside your WooCommerce Xero Settings inside the wp-admin panel. See below.

Note: if you are doing a fresh install your settings will look as on the next screenshot. If you previously had a WooCommerce Xero integration set up you should still see the old settings fields – they will be removed once you will finish this setup guide.

When everything is ready create your app ( Create App button ). You will be taken to the next screen:

Your Xero application is now created. Don’t close this page yet you will need it for the next step.

Step 2:  Connect your Xero application to WooCommerce

  1. Copy the Client id, go back to your WooCommerce Xero admin settings page and paste it into the Client id field
  2. Next, go back to your Xero application and click Generate a secret. Copy the secret and paste it in the Client Secret field. The client secret key is visible only once so if you lose it you will need to generate it once again.
  3. Go back to your Xero Application and click Save ( your secret is no longer visible in Xero application ). Go to your WooCommerce Xero admin panel and also click Save.

You should now see that the “Sign in with Xero” button is now Active:

Once you click the button you will be taken to the login.xero.com site where you will be asked to grant access for your application:

On the next screen, you will be informed about the scope of required permissions and asked to accept. If you have more than one organization defined in Xero portal you will be able to choose which one you want to connect to:

After clicking connect you will be taken back to the WooCommerce Xero page that will confirm the status of the connection.

You are now connected and may continue with the rest of the setup.

Set Up Default Account Codes

Invoices and payments sent to Xero need to be associated with account codes in your company’s Chart of Accounts. This is a required part of setup. Find the Chart of Accounts via Accounting > Chart of Accounts or Accounting > Advanced in your Xero dashboard:

Xero provides a standard set of account codes that you can modify as necessary (default codes will vary by country):

Chart of Accounts

Note: The Tax Rate associated with the Xero account needs to match the tax rate setup in WooCommerce.

  • Sales Account – This account collects all sales of items in your store.
  • Shipping Account – This account collects all shipping charges.
  • Fees Account – This account represents the fees created by the WooCommerce Fees API.
  • Payment Account – This account collects all payments made.  This account either needs to be Account Type “Bank” or have “Enable Payments to this account” checked in the Edit Account Details popup.
  • Rounding Account – This account collects all the rounding corrections.

Account codes must be entered at WooCommerce > Xero within your site (below are sample codes for each account which may differ from the codes on your Xero account):

Important: All Account Code fields must be entered in order to send invoices to Xero. Read more about setting up account codes at: Settings: Chart of Accounts.

Miscellaneous Settings

Send Invoices

This controls when the invoice is created or updated in Xero.

  • Manual: merchant will send the invoice manually using the Order Actions menu
  • On creation: as soon as order is created, invoice is created in Xero
  • Payment completion: once the payment clears, the invoice will be created in Xero
  • On order completion: once order is set to status of ‘Completed’, the invoice will be created/updated

Recommended: Payment Completion.

Send Payments

Xero will mark the associated invoice as PAID based on this setting.  

  • Manual: merchant will update the invoice
  • Payment completion: invoice updated with payment once payment is received in WooCommerce
  • Order completion: invoice updated with payment information once order status is changed to ‘Completed’

You may need to send payments manually if you synchronise payments in another way, such as the PayPal to Xero integration.

Important: once a payment is sent for an invoice and the invoice is marked PAID in Xero, it can no longer be modified via the APIThis means that WooCommerce cannot make any changes to the invoice. Once the invoice is marked PAID in Xero, all changes must be made manually in Xero.

Match Zero Value Tax Rates

This allows you to explicitly match up a WooCommerce tax-exempt (0%) tax rate with a Xero tax-exempt (0%) tax rate. This helps avoid issues like tax-exempt line items showing up as Zero Rated EC Services.

Treat Shipping As

The costs associated with shipping line items in your WooCommerce orders can be treated either as Revenue or Expenses. You may need to toggle this setting based on your Xero Chart of Accounts settings to avoid errors.

Send Inventory Items

  • Tick the box to send the WooCommerce product SKU to Xero as an Item Code field. This allows you to reduce inventory numbers defined in Xero when each item is sold.
  • You must have a corresponding Inventory Item Setup in Xero for this to work properly.
  • Note that this is not an “Inventory Sync” as this will only reduce the existing quantity of inventory items in Xero when a corresponding item is sold.  It will not synchronise your Xero and WooCommerce inventories if the inventory quantity is adjusted in either system.

Orders with zero total

Tick the box for Orders with zero total to enable the export of invoices for orders that have a grand total of zero.

Debug

  • Tick the box for the Debug option to enable logging for this extension.
  • Log file is located at: /wc-logs/

Usage
Xero 2

Orders placed in your WooCommerce store are copied to your Xero account as an approved invoice. When payment is completed (normally immediately), then a payment is added to the invoice making the invoice paid in full. A note is added to each order in WooCommerce for the invoice including the Xero invoice reference number (Invoice ID). Here is a sample Xero invoice with payment.

WooCommerce Order Fields Sent to Xero

These are the WooCommerce Order fields that are sent to the Xero invoice. Note: If the Billing Company field is used, it will be the main name on the invoice. Otherwise, Billing First Name and Billing Last Name are used.

  • Billing First Name
  • Billing Last Name
  • Billing Email
  • Billing Company
  • Billing Address 1
  • Billing Address 2
  • Billing City
  • Billing State
  • Billing Postal Code
  • Billing Country
  • Billing Phone
  • Order Date
  • Order Number
  • Order Item Data: Product name
  • Order Item Data: Quantity purchased
  • Order Item Data: SKU (if Send Inventory is enabled)
  • Order Item Data: Product price
  • Order Shipping Charge (Optional)
  • Order Discount (Optional)
  • Order Tax Total
  • Order Total

Invoice Status is always AUTHORIZED. Tax Type depends on the WooCommerce setting.

Frequently asked questions

When are orders sent to Xero?

Invoices are created within Xero based on the Send Invoices setting found at WooCommerce >Xero.

When are payments sent to Xero?

Payments are sent to Xero based on the Send Payments setting found at WooCommerce >Xero. Note: when a payment is applied to a Xero invoice the order is marked PAID in Xero and cannot be modified any longer through the API.

Can I synchronise existing orders?

xerosync

Yes, you can, but it’s a manual process. To achieve this, go to WooCommerce > Orders and select the order you want to sync. Select Actions and choose Send Invoice to Xero. Then select the “>” button on the right.

How do I know if an invoice has been sent to Xero?

Entries are added to the Order Notes area of the order page.  There is one message for the invoice and one for payment.

What happens if the tax rate is not set up correctly?

In order for your tax rates in your Xero invoices to be as accurate as possible, it is essential that your tax rates and names in WooCommerce match the tax rates and labels in Xero. If these two tax rates differ you may receive errors when trying to generate invoices/payments.

Xero simply omits the tax rate in my invoices if items are tax exempt.

The default behaviour of WooCommerce is to completely omit taxes from sending per line-item if the tax is either 0% or the item is not taxable. If you want the Xero line items to show a zero tax rate(0.000%) you can do the following:

  • Make sure the Xero plugin is updated to at least version 1.7.17.
  • Create a new WooCommerce 0% tax rate with a name that exactly matches your 0% rate in Xero. Xero creates a 0% tax rate upon account setup named Tax Exempt so it’s recommended to copy the name exactly.
    WooCommerce Xero tax rates setup
  • Enable the Match zero value tax rates setting on the WooCommerce > Xero settings page.
  • Edit your tax-exempt products and make sure they’re set to Taxable as well as linked to the zero-rated tax class (or wherever you have the 0% tax rate setup).
  • Go to WooCommerce > Settings > Tax and for the option Calculate Tax Based On, choose Customer Billing Address.

What happens if an invoice fails?

If creating the Xero invoice fails for any reason there will be a note added to the Order Notes section with the error message. Typical causes of failure:

  • Missing account codes on WooCommerce > Xero settings page. Every account code field needs to be filled out there and matched up with an account from your Xero Chart of Accounts.
  • The Xero keys set on the WooCommerce > Xero settings page do not match the ones corresponding to your app.

Can I use Xero with my multi-currency store?

Yes, if you have a Xero account with multi-currency capability(this usually requires an upgrade). If you receive an error in the Order Notes related to the currency not being supported, add additional currencies in Xero by going to Organization Settingsclick on Currencies and add the currencies available in the store.

Can Stripe fees be synced to Xero?

Stripe fees do not sync to Xero with this extension at this time. However, it’s possible to sync Stripe fees with the Stripe + Xero integration provided by Xero.

Is the MOSS sales tax type supported? 

Yes, as of version 1.7.39 the MOSS sales tax type is correctly matched for stores that use it. 
Note: you must add the string “Moss” to any tax label which is of that tax type in order for it to be recognized.

How are coupons sent from WooCommerce and represented in Xero?

The extension sends a line-item wise coupon discount amount from WooCommerce to Xero and Xero shows it on each line item in the discount column of the invoice. Only discount amount information is sent to Xero, not coupon code information. So, while you’ll see the discount amount on each product in Xero, coupon code info won’t be visible there.

A few scenarios for coupons are mentioned below to give an idea of how coupon discounts get applied to the items and how they display in Xero.

Note: the screenshots below are of the new Xero invoice. On the classic Xero invoice, discount are represented in percentage (%) instead of the amount.

Percentage discount

For the given scenario, the coupon 20OFF is applied for a 20% discount.

WooCommerce Order:

Xero Invoice:

Fixed cart discount

For the given scenario, the coupon 50OFF is applied for a fixed $50 discount on the cart.

WooCommerce order:

Xero Invoice:

Fixed product discount

For the given scenario, the coupon POLOOFF is applied for a fixed $10 discount on a “Polo” product only, which is reflected on the Xero invoice for a specific product only.

WooCommerce Order:

Xero Invoice:

Multiple coupons

Multiple coupons are used in conjunction here. 2 coupons are applied.

  • POLOOFF for a fixed $10 discount on a “Polo” product
  • 20OFF for 20% discount on each product.

Xero Invoice will show to the total discount applied on each product separately.

WooCommerce Order:

Xero Invoice:

Code Snippets

Customisations are not covered under our support policy, so this isn’t something we can help implement or troubleshoot on your site.

What happens to the invoice when the associated order is refunded?

By default, the Xero integration will attempt to void the invoice once the order is totally refunded(when the order status changes to Refunded). Invoices that are marked PAID cannot be modified via the API and thus would have to be voided/modified manually at Xero.com.

If you wish to disable the automatic voiding of invoices when the associated WooCommerce order is refunded, add the following one-line code snippet to your child theme’s functions.php file or use a code snippets plugin:

add_filter( 'woocommerce_xero_disable_auto_void_invoices', '__return_true' );

How do I match the tax rate label to what is on Xero?

By default, a new tax rate label will be created on Xero during invoice creation. However, in some countries, this may or may not be the desired outcome. If you need to match the tax rate label from what you have entered in WooCommerce to what Xero already has in the system, you can use the following filter. Add the filter to your child theme’s functions.php file or using a code snippets plugin:

add_filter( 'woocommerce_xero_create_unique_tax_label', '__return_false' );

Once you have done this, whatever you have set in as your tax rate label in WooCommerce will match what is already existing in your Xero account.

Can I map products or product categories to different Xero account codes?

This is not yet an option in the Xero plugin, however, it is theoretically possible by creating a custom function that hooks into the woocommerce_xero_line_item_account_code filter. Your custom function would need to check the category ID or product ID and return an integer representing the Xero sales account code(must be a Revenue/Sales account type). 

Troubleshooting

How do I see debug information?

To view debug information make sure the Debug checkbox option is checked in the Xero settings page.  You can find Xero logs at WooCommerce > Status > Logs.

Why aren’t payments being exported?

If invoices are being created, but payments are not being created, make sure that the Xero account that is used for “Payment Account” has “Enable payments to this account” checked in the Edit Account Details popup.

I am getting an error sending invoices: “Item code ‘xxx’ is not valid”

If you get the following error in the order notes related to “Item Code”:

ERROR creating Xero invoice: ErrorNumber: 10 ErrorType: ValidationException Message: A validation exception occurred Detail: Item code ‘XXXX′ is not valid

Please check your Xero configuration and make sure the inventory item is setup correctly. Here’s a doc on how to set up inventory items in Xero.

I am getting an error sending invoices: “TaxType code ‘xxx’ cannot be used with account code ‘yyy’

You may see the following error in the order notes:

ERROR creating Xero invoice: ErrorNumber: 10 ErrorType: ValidationException Message: A validation exception occurred Detail: The TaxType code ‘xxx’ cannot be used with account code ‘yyy’.



If so, this is related to the shipping account being set to the wrong type in the WooCommerce Xero settings: it must match the account setting in Xero.  You can set it in the WooCommerce > Xero settings option Treat Shipping As: You must also be using at least version 1.7.7 of the plugin.

Line items without VAT applied appear as Zero Rated EC Services in Xero invoices 

See the section named Xero simply omits the tax rate in my invoices if items are tax-exempt for information on how you can force the Xero integration to match up with a specific tax rate for zero-rated line items.

I am getting an error for payments

ERROR creating Xero payment. ErrorNumber:10| Error Message:Account type is invalid for making a payment to/from


Make sure that the account you specified for “Payment Account” in the Xero settings has “Enable Payments To This Account” checked in Xero. This will need to be either a Bank account type or a Revenue/Sales account type.

Error: XERO: Invoice not created. OAuth Error: token_rejected | The organization for this access token is not active

This error happens when the API application was created with the wrong organization. Go to https://developer.xero.com/myapps?privateAppCreation=true and click on the application you created to connect to your WooCommerce site. If the Selected Organization is “Demo Company” you’ll need to delete this application and recreate another one.

When you recreate the application, on the option “Please select which organization your application can access:” be sure to select the correct organization. 

Error: ERROR creating Xero invoice: ErrorNumber: 10 ErrorType: ValidationException Message: A validation exception occurred Detail: Invoice not of valid status for modification

This is typically because there is already an invoice on Xero end which is marked as Paid (might be due to test orders sent from your staging environment to Xero during site development, or invoices created within Xero itself). You can add invoice prefix to Xero settings and test again to confirm that.

Overview and pricing of this feature. Click here

Troubleshooting this feature? Click here


    • Related Articles

    • Xero Integration - Feature

      View Guide Links at the bottom of the page Installation 1 CRU CREDIT Setup 2 CRU CREDIT Ease Of Use Easy Want this feature? Request Here Save time with automated sync between WooCommerce and your Xero account. Integrate your WooCommerce store with ...
    • Xero Integration - Troubleshoot Guide

      Can't see any Troubleshooting Guides on this page? This means we don't have any, please raise a ticket here if you have an issue and help us build out our guides! Overview and pricing of this feature. Click here Looking for the user guide for this ...
    • Gravity Forms User Registration - Feature

      View Guide Links at the bottom of the page Installation 1 CRU CREDIT Setup (optional) 1 CRU CREDIT Ease Of Use Easy Want this feature? Request Here Purchase CREDITS  Here Seamless Integration With the Gravity Forms User Registration Add-On you can ...
    • Gravity Forms User Registration - User Guide

      For pricing and how to add to your website see at the bottom of the page. Create Your Form The first step in integrating the User Registration Add-On is going to be creating the form you would like to use. This can include existing forms. The only ...
    • AutomateWoo - User Guide

      For pricing and how to add to your website see at the bottom of the page. AutomateWoo is a marketing automation plugin which integrates directly with your WooCommerce store. Using automated marketing campaigns and a unique set of tools, AutomateWoo ...