QuickBooks & Xero Two-Way Sync
How DocuClipper validates required fields before export, keeps later edits in sync with QuickBooks Online and Xero, and lets you pick contacts, items, accounts, and tax codes straight from your connected company.
Last updated
DocuClipper doesn't just push invoices and bills into QuickBooks Online (QBO) and Xero once - it keeps them aligned. Once a project is linked to a connected company, approved invoices are created automatically as they're extracted, DocuClipper validates the required fields before each push, it lets you pick contacts, items, accounts, and tax codes directly from your connected company, and after a record has been synced it pushes your later classification edits back automatically - matched by ID, so it updates the existing record instead of creating a duplicate.
This article explains those behaviors. To connect a project in the first place, open the invoice's Export & Sync panel and choose Connect Integration; for the walkthrough, see Import invoices and receipts into QuickBooks Online and Export invoices to Xero.
Automatic creation on extraction
Linking a project to a QBO or Xero connection makes sync the default, not a manual step. As each document finishes extracting, DocuClipper creates it in the connected company automatically:
- Approved invoices only. If your project uses the approval workflow, an invoice syncs once it's approved. Purchase orders skip the approval gate and sync as draft POs.
- QuickBooks records post; Xero records land as drafts. In QuickBooks the bill, invoice, or expense is created as a normal posted record. In Xero the bill (ACCPAY) or sales invoice (ACCREC) is created in Draft status, so you review and approve it inside Xero before it hits your ledger.
- Document type sets the record type. A bill/payable becomes a QuickBooks Bill or Xero ACCPAY; a receivable becomes a QuickBooks Invoice or Xero ACCREC; an expense/purchase becomes a QuickBooks Purchase/expense; a purchase order becomes a draft PO; a credit note becomes a QuickBooks Vendor Credit or Credit Memo, or a Xero credit note - see Credit notes. See Choose "Bills & Receipts" or "Sales Invoices" when you upload.

The reconciliation gate below applies to edits you make afterward, not to this extraction-time creation.
Pre-flight required-field validation
Before any push - whether automatic on extraction or a manual sync - DocuClipper validates the invoice against the target accounting system before it makes any API call. If a field that QuickBooks or Xero requires is missing, the sync is blocked and you get a specific message telling you exactly what to fix - including the line number for line-level problems - instead of a cryptic error coming back from the accounting system.
What's required depends on the document type and the target:
| Target & document type | Header requirement | Per-line requirement |
|---|---|---|
| QBO - Invoice (receivable) | Customer | A numeric amount on each line |
| QBO - Bill (payable) | Vendor | A category/account or a product/service item, plus a numeric amount |
| QBO - Expense / Purchase | Payment account | A category/account, plus a numeric amount |
| QBO Vendor Credit (credit note, payable) | Vendor | A category/account or a product/service item, plus a numeric amount |
| QBO Credit Memo (credit note, receivable) | Customer | A numeric amount on each line |
| Xero - Bill (ACCPAY) | Contact (supplier) | An account code, plus an amount |
| Xero - Sales Invoice (ACCREC) | Contact (customer) | An account code, plus an amount |
| Xero credit note (ACCPAYCREDIT / ACCRECCREDIT) | Contact (supplier or customer) | An account code, plus an amount |
A line with no amount and no unit price at all - a note, a section heading or an unpriced backorder row carried over from the document - has nothing to post, so it is left out of invoices, bills and expenses sent to QuickBooks Online, Xero, Sage and Dynamics 365. It stays on the invoice in DocuClipper and in the Excel export.

A blocked sync reads, for example:
Cannot sync to QuickBooks Online: this bill is missing a required Vendor. Please set it before syncing.
or, for a line-level gap:
Cannot sync to Xero: line 2 (Office Supplies) is missing a category/account. Please set it before syncing.
Fix the flagged field on the invoice detail page and sync again. The invoice rules and per-project default account features exist largely to fill these required fields in for you so validation passes on the first try.
Freight, fees, discounts and tax
The record DocuClipper creates totals what the document prints. Besides the line items, it posts whatever the printed total is made of: freight and shipping, fees and service charges, tips, discounts and promotions, a cash rounding, and tax. These are the same amounts the editor uses to check that an invoice adds up, so a document with a green "adds up" badge lands in your books at its printed total.
How each one posts:
| QuickBooks Online bills, expenses, purchase orders and vendor credits | QuickBooks Online sales invoices and credit memos | Xero | |
|---|---|---|---|
| Freight, fees, rounding | A line of its own, on the project's charges account (else the bill's category, the project's default expense account, or the first line's category) | A line of its own. Freight uses QuickBooks' shipping line when shipping is turned on in your company; other fees use the project's charges item, else the first line's product/service | A line item of its own, on the project's charges account (else the default account, or the first line's account) |
| Discounts | A negative line on the same account as charges | QuickBooks' discount line (a negative line if discounts are turned off in your company) | A negative line item on the same account as charges |
| Tax, U.S. companies | A Sales tax line, split across the lines' categories in proportion to their amounts, or on the project's Sales tax paid account | Lines are marked taxable. With QuickBooks' standard sales tax, the invoice carries the printed tax amount. With Automated Sales Tax, QuickBooks works out the tax from the customer's address | Calculated by Xero from each line's tax rate (see below) |
| Tax, other countries | Calculated by QuickBooks from each line's tax code (VAT, GST, HST). Amounts are sent tax-exclusive | Same as bills | Calculated by Xero from each line's tax rate. Amounts are sent tax-exclusive |
Every charge or discount line carries the same tax code (or Xero tax rate) as the document's lines, so freight is taxed like the goods and a discount reduces the taxed amount.
Every line needs a tax code outside the U.S. QuickBooks and Xero work the tax out from each line's tax code, and a QuickBooks company that tracks GST, HST or VAT accepts a document only when every line has one. Before each QuickBooks sync, DocuClipper gives the lines without a code one:
- The document prints tax and no line has a code: the project's Default tax code for taxed documents. With no default, the one tax code in your company whose rate matches the tax printed (for example HST ON when the tax is 13% of the subtotal).
- The document prints tax and some lines have a code: the project's Default tax code for taxed documents for the others.
- The document prints no tax: the project's Default tax code for untaxed documents (for example Zero-rated). With none set, your company's no-tax code when it has exactly one (for example GST Free).
A line that already has a tax code keeps it in every case.
In Xero, a line without a rate on a document that prints tax takes the project's Default tax rate for taxed documents, else its account's default tax rate, which covers most organizations. On a document that prints no tax, a line without a rate takes the project's Default tax rate for untaxed documents (for example Zero Rated or Exempt), so Xero adds no tax the document doesn't show; with none set, it takes its account's default rate.
When DocuClipper can't tell which code is right, the sync is held with a message that says what to set, and nothing is posted:
Cannot sync to QuickBooks Online: this bill has 232.19 of tax, but none of its lines has a tax code, so it would post without the tax. Set a tax code on the lines, or choose a default tax code in Project settings > Invoices.
Cannot sync to QuickBooks Online: QuickBooks needs a tax code on every line, and 1 line has none. Set a tax code on that line (use the exempt or zero-rated code for a line with no tax), or choose a default tax code in Project settings > Invoices.
Cannot sync to QuickBooks Online: QuickBooks needs a tax code on every line. This document has no tax, and 1 line has no tax code. Set that line to the no-tax code that applies (Exempt, Zero-rated, Out of Scope), or choose a tax code for untaxed documents in Project settings > Invoices, then sync again.
Exempt, zero-rated and out-of-scope sales are reported differently on a tax return, so when your company has more than one no-tax code, DocuClipper leaves the choice to you. Pick a tax code on the lines, or set Default tax code for untaxed documents once for the project, and the document syncs. If that code is later made inactive in QuickBooks, untaxed documents are held with a message asking you to choose another. A QuickBooks company that doesn't track sales tax doesn't need tax codes, so its tax posts as a line of its own, like any other cost.
Settings (optional)
None of this needs setup: unset, every component posts to an account the document already uses. To send them somewhere specific, open the project's Project Settings, go to the Invoices tab and expand Charges, discounts and tax. The section shows only the settings that apply to your connected company:
- Charges and discounts account - where freight, fees and discounts post (QuickBooks bills and expenses, and Xero).
- Charges item for sales invoices - the product/service fees post with on a QuickBooks sales invoice.
- Sales tax paid account - U.S. QuickBooks companies: where the sales tax on bills and expenses posts.
- Default tax code for taxed documents / Default tax rate for taxed documents - outside the U.S.: the tax code for lines that have none on a document that prints tax.
- Default tax code for untaxed documents / Default tax rate for untaxed documents - the tax code for lines that have none on a document that prints no tax. The list shows only your no-tax (0%) codes, such as Exempt, Zero-rated or Out of Scope. In QuickBooks it appears for companies outside the U.S.; in Xero, for every organization.


Child projects inherit these settings like the rest of the tab.
When the total in QuickBooks or Xero differs
After every sync DocuClipper reads back the total QuickBooks or Xero recorded. If it differs from the printed total by more than two cents, the Export & Sync panel says so, next to the green Synced badge:

It is almost always tax: QuickBooks or Xero calculated it from the lines' tax codes at a rate that doesn't match the document, or Automated Sales Tax used the customer's address. Check the tax code on each line and save; the record syncs again and the note clears once the totals agree.
A record synced before charges, discounts and tax were posted gets them the next time it syncs, for example after you edit one of its lines, so its total in QuickBooks or Xero changes to the printed total.
When QuickBooks rejects a sync
Some rules live in your QuickBooks company's own settings, so only QuickBooks can check them. When QuickBooks turns a push down, the Export & Sync panel shows a red Error badge with two lines: what is wrong and what to change, in plain words, and underneath it QuickBooks said: followed by QuickBooks' own message, which is useful if you contact support. The invoices list shows the first sentence in the Needs attention column; hover over it for the full text.

The most common rejections and what to do:
| What the panel says | What to do |
|---|---|
| QuickBooks Online needs a GST code on every line (or VAT code, tax code) | Your company tracks GST or VAT (Australia, the UK, Canada and other regions), so every line needs a tax code. Pick one in each line's Tax code field, using your tax-free code (for example GST Free) for lines without tax. Saving the invoice syncs it again. |
| Its Product/Service is a category heading in QuickBooks | The line points at a category, which only groups products in QuickBooks. Choose a real product or service for that line. Category headings are not offered in the Product/Service dropdown. |
| QuickBooks Online already has a customer, vendor or employee with this name | QuickBooks uses one list of names for customers, vendors and employees, inactive ones included, so a vendor cannot share a name with a customer. Choose the existing record, or use a slightly different name such as Acme Supplies (Vendor). |
| QuickBooks Online already has a transaction with number ... | That document number is taken. If the document is already in QuickBooks, there is nothing to do. Otherwise change the Id # and sync again. |
| Something this document uses ... is inactive or deleted | A vendor, customer, account, product or tax code on the invoice was made inactive in QuickBooks. Pick an active one. |
| Purchase orders are turned off | Turn on Use purchase orders in QuickBooks (Settings > Account and settings > Expenses). |
| This transaction was changed in QuickBooks Online while DocuClipper was saving it | Someone edited the record in QuickBooks at the same moment. Sync again. |
| ... is in GBP, and your QuickBooks company works only in USD | The invoice is in a currency other than your company's (see Currency). Turn on multicurrency in QuickBooks (Settings > Account and settings > Advanced > Currency), or set the invoice's currency to Company currency to post it in your company's currency. |
| ... but the vendor (or customer) ... is set up in USD | With multicurrency on, QuickBooks posts a vendor's or customer's transactions only in that contact's currency. Pick or create a vendor or customer in the invoice's currency, or set the invoice's currency to Company currency. An expense's payment account must be in the invoice's currency too. |
Any other rejection shows QuickBooks' own explanation after QuickBooks Online rejected this sync:.
Pick contacts, items, accounts, and tax codes from your connected company
Once a project is linked to QuickBooks or Xero, the mapping fields on the invoice detail page become searchable dropdowns that pull live from your connected company - so you map to records that actually exist instead of typing free text that might not match.
- Contact - start typing to search your QBO customers/vendors or Xero contacts.
- Item / product-service - start typing to search the items and products defined in QBO or Xero. (Previously only the contact field was a connected dropdown; the item/product field now works the same way.)
- Category / account - pick from your chart of accounts.
- Tax code / tax rate - pick from the tax codes (QBO) or tax rates (Xero) configured in your company.
Each dropdown searches as you type. If the record you need doesn't exist yet, you can create it inline - type the new name and choose the "create" option, and DocuClipper creates it in QuickBooks or Xero on export.
In QuickBooks a new customer or vendor needs a name that no other customer, vendor or employee uses, inactive ones included. When the name is taken, DocuClipper says so and suggests choosing the existing record or adding the new one under a slightly different name, for example Acme Supplies (Vendor).
Fixing what's missing also syncs it
The automatic push on extraction only goes through if the invoice already has everything the accounting system requires. On your first invoice from a new vendor that often isn't the case - no rule exists yet, so the vendor or a line's category may be blank, and the push is held.
You don't need to look for a Sync button. Fill in what the Export & Sync panel says is missing, and the moment nothing is blocking it, DocuClipper pushes the invoice on its own. If several lines need coding, it waits until the last one is done rather than retrying on every keystroke.
The same reconciliation and approval rules below apply to that first push.
Automatic re-sync of later edits
If you edit an invoice or bill after it has already been synced, DocuClipper pushes the change back to QuickBooks or Xero automatically - you don't have to remember to re-export it.
How it behaves:
- Update, never duplicate. Re-sync only updates the record that already exists in the accounting system (matched by its stored ID). It never creates a second copy.
- Classification fields only. Re-sync covers the fields you typically correct after the fact: category/account, product/service item, and tax code. Identity and amount fields (quantity, unit price, line description) are not re-pushed - change those before the first sync.
- Both systems. Works for QBO invoices, bills, and expenses, and for Xero bills and sales invoices. (Purchase orders are not re-synced.)
- Reconciliation-gated. If the invoice doesn't reconcile (subtotal + tax ≠ total, or lines don't sum to the subtotal), the automatic push is held so a broken record isn't sent to your books - including when a rule is what filled the fields in. The panel names the discrepancy, for example "Line items $34,901.92 ≠ Subtotal $35,156.13", the edit still saves in DocuClipper, and you can force the push with Sync anyway once you've reviewed it. This is usually worth investigating rather than overriding: it most often means a line didn't come through the extraction, so the total in your books would be short.

- Best-effort. Your edit always saves in DocuClipper immediately. The re-sync runs in the background; if the accounting system rejects it (for example a bill that's already locked or paid), the edit still sticks in DocuClipper and the failure is recorded so you can retry. The sync status badge and its timestamp update when the push succeeds.
This is what makes a bulk-apply of a category to every line, or a single corrected GL code, flow through to QuickBooks or Xero without a manual re-export.
Credit notes
A credit note is a refund or adjustment, and both accounting systems keep it as its own record type rather than as a bill with negative amounts. Set the document type to Credit Note and DocuClipper creates the right one.
Which record you get is decided by the contact already on the document, so there is no separate setting:
| The document has | QuickBooks creates | Xero creates | Effect |
|---|---|---|---|
| A vendor or supplier (the usual case) | Vendor Credit | Credit note (ACCPAYCREDIT) | Reduces what you owe |
| A customer, and no vendor | Credit Memo | Credit note (ACCRECCREDIT) | Reduces what you're owed |
If the wrong one is created, change the contact on the document, setting a customer instead of a vendor or the reverse, and it re-syncs to the correct side. Switching the document type between Credit Note and Bill also works: DocuClipper removes the record it created before, so you never end up with both on the ledger.
Enter the amounts as positive numbers, exactly as they appear on the document. The record type is what makes it a credit, and the accounting system subtracts it. A negative amount would double the sign and move the balance the wrong way.
Credit notes are validated like any other document, per the table above: a vendor-side credit note needs a vendor and a coded line, a customer-side one needs a customer. Setting a per-project default account covers any line you have not coded.
Neither QuickBooks nor Xero has a debit note record. If you set a document to Debit Note, DocuClipper will not sync it and says so rather than guessing - change it to Bill or Credit Note, whichever matches what the document actually does.