Connecting inFlow to Xero
Cut down on double-entry when exporting your sales and purchases by connecting inFlow to Xero! If you want your purchase and sales orders pushed to Xero Accounting, follow this guide to set up the integration.
Setup
To fully utilize the integration between inFlow and Xero, you may need a paid Xero account. It’s recommended to select a higher-tier plan that includes access to journal entries. If you have any questions about how Xero connects with inFlow, please reach out to your Customer Success Manager (CSM).
How does this work?
This integration has inFlow serve as the central hub for your inventory tracking. It will create new records for products, customers, and vendors if they don’t already exist in Xero.
When sales orders in inFlow are marked as invoiced — meaning you’ve notified your customer that they owe you — inFlow will send the sales order to Xero as an invoice.
Purchase orders work similarly: when a purchase order is fully or partially received, inFlow will send it to Xero, and it will appear as a bill. Your inventory value will be pushed along with it.
You can make payments in inFlow or Xero Online using the handy two-way sync payments option.
Inventory tracking remains one-way — from inFlow to Xero. Only payment information can flow in both directions.
As soon as the purchase order sync is enabled, inFlow will sync your inventory value to Xero. It’s important that your inventory value is accurate in inFlow and Xero before enabling the integration.
Before setup checklist
- ✅ Are your quantities and costs for products accurate in inFlow? If you intend to push purchase orders, make sure that your stock levels and product costs are accurate! The integration adjusts Xero’s total inventory value to match inFlow’s, so make sure they align before you begin. See the “Push purchase orders” tab for details!
- ✅ Does your home currency in inFlow and Xero match? Make sure that your main currency in Xero and inFlow is the same. The home currency is set when you create your Xero account. For information on how you can use multiple currencies in Xero, take a look here.
- ✅ Are the taxes in both systems the same? Make sure that the tax rates found in inFlow are also added to Xero. For guides on taxes in Xero, take a look here.
- ✅ Have you set up SKUs for your inFlow products? Xero requires your products to have SKUs, and it will display product SKUs as Item Codes on invoices and bills. You can add SKUs to inFlow manually, via an import, or have inFlow generate them for you.
- ✅ Is your Xero account using Non-Tracked (untracked) inventory? Xero suggests that third-party inventory integrations should only use non-tracked inventory products. If you are not using this, you need to change your products to non-tracked inventory instead. Xero’s tracked inventory uses a special “Inventory” type account to track stock levels and value, which conflicts with the integration and can cause double entries.
Take a look here for more on tracked inventory. If you already have tracked products in Xero, you can convert them to non-tracked products.
- ✅ Have you added a Current Assets account? All non-tracked inventory needs to be linked to the Current Assets account type in Xero, rather than the Inventory account type used for tracked inventory. For a full guide on creating accounts, take a look at Xero’s guide.
- ✅ Creating an inFlow Adjustments account – inFlow must connect to a Cost of Goods Sold (COGS) account and a separate COGS-based account to track adjustments. During the Xero setup, select Create inFlow Adjustments account.

inFlow to Xero account flowchart
For a visualization of how inFlow connects to your various Xero accounts, take a look at the flowchart below.

Connecting inFlow to Xero
- Log in to inFlow’s integration settings as an administrator (select the Integrations icon from the Main Menu
) - Click on the Xero tile.
- Click Connect to Xero to begin the integration setup.
- Your browser will prompt you to sign in to your Xero account for authorization. If you have multiple Xero accounts, select the one you’d like inFlow to communicate with.
- Click Allow Access to allow inFlow to view and update your Xero data.
Once you’ve connected the two programs, you’ll be able to configure what inFlow will push to Xero. This includes payment options, account selection, tax setup, and more.
Sales order push settings
- Your browser will redirect to the inFlow Xero integration setup, with the Sales order push setting toggled on. This means sales orders from inFlow will be pushed to Xero as an invoice.
If you don’t want to push sales orders from inFlow to Xero, you can click to toggle this setting off.

- In the General section, select the Product Sales account and the optional Shipping Income account that inFlow should connect to.
Typically, this is the Xero account you use to receive payment for products sold. This account will be set as the Product income account for products created via inFlow in Xero. Select the appropriate Xero account from the drop-down. The Product Income account for existing products in Xero will not change.

Sales order payment settings
Next are the Payment settings. When the Sync payments setting is enabled, you can choose how you want to manage and process payments. Select your preferred option. See the table below for details on each payment option.

| Payment setting | Explanation |
|---|---|
| Push and pull payments | This is a two-way payment sync option. You can process payments in inFlow or Xero, and the payment will be pushed to the other system for you. Note: This option applies only to orders pushed from inFlow to Xero. |
| Push payments | With this payment option, payments can only be made on inFlow sales orders, and the payment information will be sent to the matching Xero invoice. If a payment is added to the Xero invoice, inFlow will not receive the payment information on the matching sales order. |
| Pull payments | With this setting, payments are added only to the Xero invoice, and the payment information is sent to the matching inFlow sales order. If a payment is added to an inFlow sales order, Xero will not receive the payment information on the matching invoice. |
Push refunds to Xero
When enabled, refunds you record in inFlow are sent to Xero as credit notes.
Sales order payment method mapping
Instead of assigning all payments to one Xero account, you can now direct various payment methods to separate Xero accounts.
Example: If you want cheque and Cash payments routed to your main bank account but credit card payments to a separate account, create one row for Cheque + Cash → Bank account, and map credit cards to another account, or they can be routed to the Default payment method account mapping.
You can map multiple inFlow payment methods to the same Xero account, or map them to different accounts depending on how your bookkeeping is set up. Check with your bookkeeper or accountant if you’re unsure which Xero account to use.
When each payment method points to the right Xero account, payments go to the correct account on their own — so you do less sorting out by hand and can close your books faster.
- Map the Default payment method to an Xero account. The Default option captures all payment methods that aren’t mapped to a specific Xero account.
- Click Add payment method to add one or more payment methods, then select the plus icon to add them to the field.
- Choose the Xero account to which those payments should be sent.
Payments pulled from Xero to inFlow won’t have a payment method and will follow the [none] payment method mapping.

What is the [none] payment method?
The term [none] refers to any payment linked to an order marked as paid without a selected payment method.

You can add [none] as a separate row in the payment method mapping to direct these payments to a specific Xero account. If you do not map [none], inFlow will send those payments to the account specified in the Default row.
![Sales order payment method mapping interface configured to include the [none] payment method.](https://www.inflowinventory.com/wp-content/uploads/2021/08/none-mapping.png)
Removing a payment method row
If needed, hover over a payment method mapping row and select the X icon to remove it.

Sales order tax settings
At the bottom of the setup, you’ll find the tax settings. Similar to mapping your accounts, you’ll need to map the taxes in inFlow to the tax rates in Xero.
- Match the inFlow taxes to the Xero taxes in the drop-down menu. If you see “No matches found,” it means Xero doesn’t have a matching tax for the taxing scheme in inFlow. Create the tax in Xero, then return to inFlow and click Check again.
- When done, click Next to continue to the Purchase order and inventory value push settings.

Sales order push account setup breakdown
inFlow needs to know which Xero accounts to update for you during the push. It’s always best to confirm account mappings with your company bookkeeper or accountant if you’re unsure of something.
Product income account: When items are created in Xero via inFlow, we have to set their Product Income account to any income-type account. This is the account used to receive money for products when they are sold.
Shipping income account: This is an optional account for customers who ship products to their customers. Since Xero does not have a dedicated shipping field, freight is added as a line item on the invoice. Ideally, shipping should not be included with actual product income. You may create a separate Xero account to track freight charged to your customers.
Payments account: This can be any bank or asset type account used to receive payments from your customers when a sale is made. It is recommended that you turn it off if you record payments directly in Xero; otherwise, there will be double entries.
Taxes: Make sure that the tax rates found in inFlow are also added to Xero.
Purchase orders and inventory values push settings
- At the top of the screen, you’ll see that the Purchase order and inventory value push settings are toggled on. This setting will push purchase orders from inFlow to Xero as bills, along with their inventory values.
If you don’t want to push purchase orders and inventory value from inFlow to Xero, you can click to toggle this setting off.
If you’ve enabled purchase order push, the first time you push a purchase order to Xero, your total inventory value will also be pushed. It’s important that your inventory value is accurate in inFlow beforehand. Otherwise, the inventory value pushed to Xero will be inaccurate, resulting in journal entries that need to be reconciled. To check the current inventory value in inFlow, run the Inventory Details report with Total Cost Value selected as a column.

- In the General settings, select the appropriate accounts that inFlow should connect to.

- For the Adjustments/Other Costs account, we recommend selecting Create inFlow Adjustments account in Xero to create a dedicated account for inFlow to make adjustments as needed. Don’t select the same Xero account for more than one setting.
Make sure not to map the Xero Cost of goods sold account to the Adjustments/Other Costs Account. Otherwise your inventory value will push to that account incorrectly.
Purchase order payment settings
Next in the setup is the Payment settings section. The Sync payments setting lets you choose how you want to manage payments. Select your preferred option. See the table below for a breakdown of each option.

| Payment setting | Explanation |
|---|---|
| Push and pull payments | This is a two-way payment sync option. You can process payments in inFlow or Xero, and the payment will be pushed to the other system for you. Note: This option applies only to orders pushed from inFlow to Xero. |
| Push payments | With this setting, payments are only added to the Xero bill, and the payment information will be sent to the matching inFlow purchase order. If a payment is added to an inFlow purchase order, Xero will not receive the payment information on the matching bill. |
| Pull payments | With this setting, payments are only added to the Xero bill, and the payment information will be sent to the matching inFlow purchase order. If a payment is added to an inFlow purchase order, Xero will not receive the payment information on the matching bill. |
Push refunds to Xero
When enabled, vendor refunds or credit notes entered in inFlow will be sent to Xero.
Unapplied payments are refunds or credits in inFlow that have not yet been matched or applied to a specific order. Essentially, they represent money that is sitting as a balance rather than being associated with a particular transaction.
When the Push refunds toggle is enabled, inFlow will send unapplied refund amounts or customer/vendor credits to Xero. If the toggle is off, those refunds will remain in inFlow and will not appear in Xero.

Purchase order payment method mapping
Just like sales orders, you can map individual inFlow payment methods to specific Xero accounts for purchase order payments. The Payment method mapping area works the same way as it does for sales orders (shown in the sales order section above).
The Default row is required and handles any payment method not covered by a specific mapping.
To add a mapping:
- Click + Add payment method, then select the plus icon to add it to the field.
- Choose the Xero account where those payments should be applied.
Payments pulled from Xero to inFlow won’t have a payment method and will follow the [none] payment method mapping.

What is the [none] payment method?
The term [none] refers to any payment linked to an order marked as paid without a selected payment method.

You can add [none] as a separate row in the payment method mapping to direct these payments to a specific Xero account. If you do not map [none], inFlow will send those payments to the account specified in the Default row.
![Purchase order payment method mapping interface configured to include the [none] payment method.](https://www.inflowinventory.com/wp-content/uploads/2021/08/none-mapping.png)
Removing a payment method row
If needed, hover over a payment method mapping row and select the X icon to remove it.

Purchase order push tax settings
- Similar to the sales order push settings, match the inFlow taxes to the Xero taxes in the drop-down menu. If you see “No matches found,” it means Xero doesn’t have a matching tax for the taxing scheme in inFlow. Create the tax in Xero, then return to inFlow and click Check again.
- When done, click Next.

Purchase order account setup breakdown
Push inventory value: You can manually update the inventory value from inFlow to Xero by clicking Push Inventory value in the inFlow integration settings.
Cost of goods sold: You’ll need to tell inFlow which Xero account to update when it pushes the total Cost of Goods Sold value from inFlow to Xero.
Inventory assets account: This is a CURRENT asset account to track the inventory cost value of inFlow’s stocked products. This is also the account set for the stocked item’s Product Purchases account in Xero. To create a new account, take a look at this guide in Xero’s support center.
Adjustments/other costs account: This can be any direct-cost account, but we recommend selecting + Create inFlow Adjustment Account from the settings page. This account is used to balance out the Inventory Asset account and track the cost value of inFlow’s non-stocked items. This is also the account we use to set the Product Purchases account in Xero for non-stocked/service items.
Payment push: Payment push (push payments and push refunds): Enable only if inFlow is your primary source for recording purchase order payments and refunds. If you also enter payments in Xero or through another integration, disable these settings to prevent duplicate entries.
Pull payments: Enable this if you record vendor payments in Xero and want those updates to appear automatically on the matching inFlow purchase order.
The table below shows the default Xero account each payment method maps to if you haven’t set up custom payment method mapping. Once you configure payment method mapping, those rules take over.
| Payments (Check) account | Payments (Credit Card) account |
| Check | Visa |
| Cash | Mastercard |
| EFT | American Express |
| Wire Transfer | Discover |
| Paypal | Credit Card |
| Firepay |
Taxes: Make sure that the tax rates found in inFlow are also added to Xero. You will have to map those taxes in the taxes field.
Tracking categories settings
Xero tracking categories help you tag transactions for better reporting. You can organize them by department, region, or project, etc. Xero supports a maximum of 2 active tracking categories at a time.
Tracking categories are applied at the product item level in Xero, even when the mapped inFlow field is order-level, such as Location or Sales Rep. The order-level value will be applied to each line item on the invoice or bill.
- Toggle Enable push.
- For each of your active Xero tracking categories, choose which inFlow field to map to it using the drop-down menu.
- Set up mappings for sales orders and purchase orders — the same inFlow field can be mapped differently for each order type.
- Click Finish when done.

The following inFlow fields can be mapped to Xero tracking categories:
Order-level fields:
- Location
- Sales Rep
- Pricing Scheme
- Order-level custom fields
Line item-level fields:
- Product category
- Product custom fields
Missing option behavior
When inFlow pushes an order to Xero, it looks for a tracking category option that matches the order’s field value. For example, if you’ve mapped Location to a tracking category, inFlow looks for a Xero option that matches the location name.
If no match is found, you can choose what happens:
| Create the option automatically | inFlow adds the missing option to the Xero tracking category using the value from the inFlow field, so the order still syncs to Xero. |
| Report an error | The order won’t be sent to Xero until the mismatch is resolved. An integration error will appear to let you know. |
To avoid mismatches, make sure the tracking category option names in Xero match the values used in inFlow. For example, if your inFlow location is called “Main Warehouse,” the tracking category option in Xero should use the same name.
I selected the wrong Xero account; how can I disconnect the app?
In inFlow:
- Log in to inFlow’s integration settings as an administrator (select the Integrations icon from the Main Menu
) - Select the Xero tile, then click on Disconnect from Xero.
- Next, a warning message will appear. Click on the Disconnect button.
- Click Done to complete disconnection.
In Xero:
Take a look at this guide on how to disconnect inFlow from the Xero apps. Once both sides have been disconnected, you can reconnect inFlow to Xero again.
Push Sales orders
How to push a sales order to Xero
Sales Orders are pushed to Xero when they are marked as invoiced, paid, or partially paid in inFlow.
inFlow pushes sales orders as Xero invoices, credit notes, and payments (if payment push is enabled). The payment push setting is optional if you have already handled payments in Xero. In Xero, these can all be found under the Sales Overview section.
In inFlow, when a sales order is marked as invoiced (meaning you’ve notified your customer that they owe you for the order), inFlow will push the order to Xero as an invoice.
You can change the sales order status to invoiced when a sales order is partially paid or paid in full, or by selecting the Mark invoiced button.
You can mark a sales order as invoiced in the following ways:
- Printing a sales invoice.
- Emailing a sales invoice.
- Select the Mark invoiced button.
Printing and emailing
Printing and emailing invoices from inFlow informs your customers that they have an open order with an outstanding balance.
Printing or emailing the invoice triggers inFlow to set the order status to Invoiced, which then sends the order to Xero.
What are these rounding adjustments on my sales and purchase orders?
The two programs handle rounding differently. inFlow sums everything before rounding the final total, whereas Xero rounds each item and then sums them. To ensure your order totals match, inFlow may sometimes need to apply a rounding adjustment.
Will Xero also track my inventory?
This integration is one-way, meaning only information from inFlow will be pushed to Xero. Inventory in inFlow will also push the inventory value to Xero. This means all your day-to-day inventory will be tracked in inFlow, and Xero will only be used for accounting and bookkeeping purposes. If you create an invoice, bill, or credit note on Xero, it won’t be pushed to inFlow.
Please note that this integration uses Xero’s non-tracked inventory product types. Inventory levels aren’t pushed from inFlow to Xero.
Does inFlow push serial numbers?
Xero doesn’t currently support serial numbers, so products pushed from inFlow won’t include the serial information.
Discounts
Xero bills don’t have a discount column available, so any bills pushed from inFlow will show the discounted unit price from inFlow.
What happens when a return or a refund is applied to a sales order in inFlow?
If there is a return or refund on a sales order, this will create a credit note in Xero. The number will be similar to the original invoice number, and the original invoice in Xero will remain unchanged.
Can I apply a pending credit on a customer’s account to a sales order as a payment?
Applying a credit to a customer’s account for a sales order in inFlow will not push it as a payment on Xero. You will have to manually apply the credit as a payment to the order on Xero.
Why are the quantities different on the two invoices?
For sales orders, inFlow will push the standard UOM quantity of your product to Xero. For example, if the Sales Unit of Measure for Product A is set to 1 pack = 6 ea., and you sell 2 packs, inFlow will push a quantity of 12 units to the Xero invoice.
For purchase orders, inFlow will push the Standard UOM quantity of your product to Xero. For example, if the Purchase Unit of Measure for Product A is set to 1 pack = 6 ea., and you buy 2 packs, inFlow will push a quantity of 12 units to the Xero Bill.
Which fields on the sales order and customer pages are pushed to Xero?
| Sales order fields that sync to Xero | Sales order fields that don’t sync to Xero |
| Customer name | Shipping Address |
| Invoice/order date | Sales Rep |
| Invoice/order number | Location of items |
| Freight charges | Non-Customer costs |
| Products/SKUs sold | Payments made by credit |
| Quantity of products sold | – |
| Payment details | Customer fields synced to Xero |
| Discounts | Customer Name |
| Due date | Billing and Shipping Address |
| Subtotal on sales order | |
| Taxes on sales order | Currency |
| Balance left on sales order | – |
| Product Description | – |
| P.O # | – |
The first time a sales order is sent to Xero, it’ll include the PO#. But if you make any changes to the PO# field in inFlow after that, those changes won’t update in Xero unless you un-invoice the sales order and then re-invoice it in inFlow.
I ship products to my customers; how will this work with inFlow & Xero?
If you don’t already have a dedicated shipping account in Xero, you’ll need one to connect inFlow to Xero and track shipping. For a full guide on creating accounts, take a look at Xero’s guide. For the Shipping account, you can use Revenue -> Other Income, name it Shipping, and select how it is taxed.
inFlow created new products in Xero, but they already existed. Now I have duplicates! Why did this happen?
inFlow looks for existing products by SKU. If it doesn’t find any products matching the SKU, then it will create new products (using that SKU). To avoid duplicates, please ensure the SKU is identical.
Push purchase orders
How to push purchase orders and inventory value to Xero
When a purchase order is received in full or in part, inFlow creates a bill in Xero. In addition to sending this information, your inventory value will also be pushed.
- To push a purchase order, click the fulfill button or select the Receive tab to partially receive the order.
- Once the purchase order is received in full or in part, it will be sent to Xero as a bill.
When does inFlow update the inventory value in Xero?
Many factors can affect inventory value. When an item enters or leaves your stock, it increases or decreases your total inventory value. Changes in product costs will also affect your inventory value. This can include:
- Purchase of items
- Sales of items, when the purchase order push is enabled
- Stock adjustments/count sheets
- Work orders
- Cost adjustments
In addition to the events above, the inventory value push runs automatically every day at 2:00 a.m. in your local time, or manually via the integration settings page.
What happens when a purchase order is pushed to Xero from inFlow?
When a purchase order is pushed to Xero, inFlow will create a corresponding Xero Bill. inFlow’s total Inventory Cost Value will update the Xero Inventory Assets account to match. Lastly, inFlow’s Cost of Goods Sold will update the Xero Cost of Goods Sold account.
Which payment setting should I use when entering payments in Xero?
When enabled, inFlow will send all payment information on a purchase order from inFlow to Xero. Entering a payment on a purchase order in inFlow will create a corresponding Xero Payment.
If your business enters payments into Xero manually or via another software integration, duplicate payments can occur if you mark an order Paid in inFlow. This is because there are now two sources trying to pay for the same order. To prevent this, you can disable payment push.
When the payment push is off, all orders that are partially paid or paid in inFlow will still sync to Xero, but payment information from inFlow will not be updated in Xero. That way, when you receive the payment in Xero, you can still mark it as paid in inFlow without worrying about duplicate payments.
How does inFlow calculate and push the Cost of Goods Sold?
inFlow calculates the Cost of Goods Sold using several factors, which are explained here. When a sales order is marked Fulfilled, inFlow will update Xero’s Cost of Goods Sold account with the Cost of Goods Sold value for that order.
If you disable sales order push, the invoice will not be created in Xero, but the Cost of Goods Sold will still be pushed if you have enabled purchase order & inventory value push.
Why is the discount percentage on my purchase order not showing on the Xero bill?
Xero bills don’t have a discount column available, so any bills pushed from inFlow will show the discounted unit price.
I have marked a purchase order as paid, but it hasn’t been pushed to Xero!
If you have disabled payment push, then the purchase order will only be pushed when the products are fulfilled.
What happens when you return something on a purchase order?
Once any item on your purchase order is returned and is unstocked or refunded, Xero will create a credit note named <order name>-Credit. Applying credit from the vendor’s account to an order in inFlow will not push it as a payment to Xero.
I added a payment to my purchase order in inFlow, but it wasn’t pushed to Xero. Do I need to change something?
Check whether you have payment push enabled! If it isn’t, then a payment alone will not push the purchase order. If it is enabled, check which payment accounts you’ve set up! inFlow defaults to the Credit Card account if you don’t specify a payment method. So, if you don’t have a credit card account in Xero, then make sure you select the specific payment method (e.g., cash, check, EFT).
What fields on a purchase order and vendor page are pushed to Xero?
When are purchase orders pushed to Xero?
Purchase orders are pushed any time an order is paid*, partially paid*, fulfilled, or partially fulfilled.
*if payment push setting is enabled.
For partially received orders in inFlow, Xero will only include products that have been received in inFlow so far. When the remaining products are marked as received in inFlow, the related Xero Bill will be updated to include those items.
If you’d like to create separate Xero bills when partially receiving products in inFlow, you’ll need to split the order by received items and create two separate purchase orders in inFlow.
I prepay my vendor when I purchase from them. How does the integration handle this?
If your unfulfilled purchase order is marked paid or partially paid, this will still be pushed to Xero as a bill. In the bill, those products will temporarily use your mapped Adjustment/Other Costs account (think of it as a temporary clearing account). As you fulfill the order, the received items will automatically update on the bill to show the mapped Inventory Assets account.
| Purchase Order fields that sync to Xero | Purchase Order fields that don’t sync to Xero |
| Vendor name | Shipping Address |
| Order Number | Sales Rep |
| Order Date | Email and Phone number |
| Freight Charges as a line item | Non-Vendor costs |
| Products/SKUs Ordered | Payments made by credit |
| Quantity of products ordered | Billing Address |
| Payment Details | Vendor Fields Synced to Xero |
| Due Date | Vendor Name |
| Due Date | Currency |
| The subtotal on the purchase order | – |
| Taxes on the purchase order | – |
| Balance left on the purchase order | – |
| Product Description | – |

Xero and Inflow the Tax rates has matched but also cannot connect.
I was on the lookout for an inventory management app that will integrate with Xero but not necessarily replicate what Xero already does. It looks like Infow does a lot of the Xero tasks but not enough inventory management, which would make paying for 2 apps to do the same thing somewhat redundant.
Explain “A validation exception occurred: You have reached the limit of invoices you can approve. “
Thanks for the article.
Hey! Always a pleasure seeing your content.
Good Afternoon,
I have been trying to fix syncing issues between Xero and InFlow all afternoon. I have amended the acounts as per the troubleshooting but still can’t get InFlow to sync properly.
Assistance would be very much appreciated.
The error I am receiving is, “A validation exception occurred: To update fields on a paid invoice line item, you must supply a LineItemID; Date cannot be changed on an invoice that has payments or credit notes allocated to it.; The status AUTHORISED cannot be applied to the invoice because it has payments or credit notes allocated to it.”
We take a lot of orders through proforma, so we receive payment before fulfilling anything. However, we haven’t tried to modify the date, so I’m unsure where this error has come from.