Purchase order sync is the part of a ConnectWise to Xero integration most MSPs find out about second. The invoice sync works on day one and feels like the hard part. Then the first vendor bill lands, the procurement team raises a PO in ConnectWise, and nothing flows to Xero. The bookkeeper keys the bill by hand, the procurement record sits in ConnectWise, the two stop agreeing within a quarter.

This article explains why purchase order sync is the part that breaks first, the three working workarounds while you decide on the permanent fix, and what to check before signing with any vendor that claims to handle it.

What ConnectWise to Xero purchase order sync actually means

ConnectWise to Xero purchase order sync is the data flow that takes a purchase order (PO) raised in ConnectWise procurement and creates the corresponding record in Xero, typically as a bill (Accounts Payable). The flow may include the PO itself, the goods receipt, the matched vendor invoice, the payment, and the eventual link to a customer invoice if the cost is on-billed.

Xero supports purchase orders as a record type via the Purchase Orders endpoint on the accounting API (Xero developer documentation, accessed 23 May 2026). The endpoint creates draft or approved purchase orders with line items, tax codes and tracking categories. ConnectWise procurement exposes its own purchase order, product receiving and vendor invoicing data via the Procurement endpoints on the Manage REST API (ConnectWise Developer Network, accessed 23 May 2026).

The data is there on both sides. The reason the sync is hard is the lifecycle gap in the middle.

Why purchase order sync is the part that breaks first

Three things make procurement sync harder than invoice sync. First, the lifecycle: a ConnectWise PO has at least five meaningful states (raised, partially received, fully received, vendor invoice received, paid), while a Xero bill has fewer. The sync has to decide which ConnectWise state triggers which Xero event, and different vendors decide differently. Second, the matching: a ConnectWise PO can be split across multiple vendor invoices, and a single vendor invoice can also cover multiple POs (a monthly statement). The sync has to handle both directions. Third, on-billing: MSPs often raise a PO for hardware that will be on-billed to a customer, so the PO cost and the eventual customer invoice need to be linkable so finance can see the margin.

The r/ConnectWise community has a long-running thread on PO sync workarounds (r/ConnectWise community discussions, accessed 23 May 2026). Nearly every MSP that tried to handle PO sync as part of the invoice sync ran into one of these three issues within the first quarter.

A 60-second answer

If you are looking for the fastest answer: pick one of three patterns based on your PO volume. Under 20 POs per month, key vendor bills into Xero manually and use the ConnectWise procurement record as the audit trail. Between 20 and 100, run a scheduled batch sync that creates Xero bills from ConnectWise POs at the goods-receipt step. Over 100, use a vendor whose product supports real-time PO sync with explicit lifecycle handling. The permanent fix in all three cases is to decide which ConnectWise state triggers the Xero bill and to enforce that decision in writing, not in code.

Pattern one: manual keying with PO as audit trail

For MSPs under about 20 POs per month, the cleanest answer is also the lowest-tech: raise the PO in ConnectWise, receive the goods in ConnectWise, then key the vendor bill into Xero by hand when it arrives. Use the ConnectWise PO number as the reference on the Xero bill.

This gives you a clean audit trail (both systems carry the same reference), no broken sync to maintain, and no false confidence that automation is keeping things in agreement when it is not. It costs you the time to key the bill, which for 20 POs per month is roughly an hour at typical bookkeeper rates. Graduate off this pattern when PO volume crosses about 20 per month, or when procurement time on PO admin exceeds two hours a week.

Pattern two: scheduled batch sync at goods receipt

For MSPs between 20 and 100 POs per month, a scheduled batch sync at the goods-receipt step is the sweet spot. The pattern: every ConnectWise PO that hits the "fully received" state in a given period creates a draft bill in Xero with the PO line items, the vendor mapped to the matching Xero contact, and the PO number in the bill reference. The bookkeeper then reviews and authorises the draft bill in Xero, applying tax codes and tracking categories at authorisation.

This pattern works because it leaves judgement in the right place. The sync handles the data transfer. The bookkeeper handles the judgement (is the bill correct, does the tax code apply, does the tracking category match). The PO number in the reference field is the dedupe key, so the same PO cannot create two Xero bills no matter how many times the sync runs.

The Xero developer documentation describes the Purchase Orders endpoint as supporting draft creation with the same reference-field dedupe pattern that works on the Invoices endpoint (Xero developer documentation, accessed 23 May 2026). The Bills endpoint behaves the same way.

When to graduate off this pattern: when PO volume crosses about 100 per month, when the bookkeeper review becomes a bottleneck, or when procurement and finance want real-time visibility of POs in Xero rather than at end of day.

Pattern three: real-time sync with explicit lifecycle handling

For MSPs over 100 POs per month, a real-time PO sync is the right shape, but only with a vendor whose product handles the lifecycle explicitly. The thing to watch in vendor demos is not the headline "yes we sync POs", it is which ConnectWise state triggers which Xero event, and how the sync handles partial receipts, vendor invoice mismatches and reversals.

A real-time PO sync that handles the lifecycle well will create a draft Xero PO when the ConnectWise PO is raised, update it on quantity or price changes, create a linked Xero bill when the ConnectWise PO transitions to "vendor invoice received", handle partial receipts by creating multiple Xero bills linked to the same Xero PO, and refuse to silently edit a Xero bill that has already been authorised. A sync that does not handle the lifecycle well will create a draft bill on every state transition, leaving the bookkeeper to clean up three half-completed drafts per PO. That is worse than no sync.

The permanent fix: the lifecycle decision

Regardless of which pattern you pick, the permanent fix is the same: write down which ConnectWise state triggers which Xero event, and make every member of the procurement and finance teams agree before the sync goes live.

A clean lifecycle decision looks like this:

  • ConnectWise PO raised: no Xero action.
  • ConnectWise PO fully received: create draft Xero bill with PO line items, vendor mapped, PO number in reference.
  • ConnectWise vendor invoice attached: update Xero draft bill with vendor invoice number and date.
  • ConnectWise PO paid: mark Xero bill paid via the standard Xero payment apply flow, not via the sync directly.

This is one example. Yours may differ. The point is that the decision is written down once, agreed once, and enforced in the sync configuration once. Without that decision, every vendor's sync feels broken because everyone has a different idea of what it should do.

Evidence sandwich: why this pattern works

The lifecycle-decision-then-pattern approach is the recurring answer in MSP discussions of ConnectWise to Xero PO sync. Supporting evidence:

  • r/ConnectWise threads on PO sync workarounds repeatedly identify the lifecycle gap (multiple ConnectWise states, fewer Xero states) as the root cause (r/ConnectWise community discussions, accessed 23 May 2026).
  • The Xero developer documentation describes the Purchase Orders endpoint as supporting independent draft creation with reference-field dedupe (Xero developer documentation, accessed 23 May 2026).
  • The ConnectWise Developer Network documents the Procurement endpoints as exposing PO state, vendor invoice attachment and goods-receipt events as discrete data points (ConnectWise Developer Network, accessed 23 May 2026), so the sync has enough lifecycle data to make the right decisions if it is configured to.

Put together: the tooling supports the right answer. The work is in choosing which answer and enforcing it consistently.

How to set up pattern two step by step

For most MSPs, pattern two (scheduled batch sync at goods receipt) is the right shape. Here is how to set it up.

  1. Confirm the trigger event. The ConnectWise PO state that triggers a Xero bill draft is "fully received". Not "raised", not "partially received". Document this in your finance procedures.
  2. Map vendors. Every ConnectWise vendor with active POs needs a matching Xero contact in the Supplier role. Use the ConnectWise vendor ID as the dedupe key on the Xero contact, mapped to AccountNumber or a contact custom field.
  3. Map products to Xero account codes and tax codes. Every ConnectWise product on a PO needs a Xero account code (usually Cost of Goods Sold or Direct Costs) and a Xero tax type. Build a lookup for both.
  4. Decide tracking-category routing on bills. If you use Xero tracking categories on invoices, you almost certainly want them on bills too. The routing rule for bills is usually the same as for invoices: ConnectWise location drives the Location category, ConnectWise work-type or business unit drives the Department category.
  5. Configure the sync to upsert by PO number. Every Xero bill created by the sync carries the ConnectWise PO number in the reference field, used as the dedupe key.
  6. Run a parallel cycle. For one billing cycle, run the sync alongside the existing manual process and compare the Xero bills the sync creates against the bills the bookkeeper would have keyed. Resolve any mismatches before going fully live.
  7. Build the unmapped-vendor report. A weekly report listing ConnectWise POs in fully-received state without a synced Xero bill catches missing vendor mappings and tax-code gaps before they become a quarter-end surprise.
  8. What to ask vendors about PO sync

    In any vendor demo for a packaged ConnectWise to Xero sync, the five PO-sync questions that cut through marketing are:

    1. Which ConnectWise PO state triggers the Xero bill creation in your product, and is it configurable?
    2. How does your product handle a PO that is partially received, then partially received again, then fully received? Show me the resulting Xero bills.
    3. How does your product handle a vendor invoice that covers two POs? Show me how the two are linked in Xero.
    4. How does your product handle a PO that is reversed in ConnectWise after the Xero bill has been authorised?
    5. Show me the actual sync log for a failed PO sync. What does the bookkeeper see, and what is the resolution path?

    If a vendor can answer all five with a live demo on real data, you have a product that handles PO sync well. If a vendor can only answer in the abstract, the sync probably works for the happy path and falls over on the edge cases.

    When PO sync is not worth automating

    Three situations where a manual PO process is the right answer even at high volume. First, when procurement and finance are run by the same person; if one human owns the PO from raising to paying, automation adds complexity without removing work. Second, when POs are rare but high-value; five POs a month with bespoke terms each is a manual process forever. Third, when the procurement workflow lives in another system entirely and ConnectWise is only used for record-keeping; syncing POs to Xero adds a third source of truth where two were already enough.

    Frequently asked questions

    Why does ConnectWise to Xero purchase order sync break so often?

    The lifecycle mismatch. ConnectWise has at least five meaningful PO states (raised, partial receipt, full receipt, vendor invoice received, paid); Xero has fewer states on its bill record. Every sync has to decide which ConnectWise state triggers which Xero event, and different vendors decide differently. Without a documented lifecycle decision, the sync feels broken no matter how well it is engineered.

    Can I sync ConnectWise POs to Xero purchase orders rather than Xero bills?

    Yes, the Xero Purchase Orders endpoint supports this (Xero developer documentation, accessed 23 May 2026). Most MSPs prefer to sync to bills (Accounts Payable) instead, because bills are the record finance pays from. Xero POs are useful for budgeting and committed-cost reporting; bills are useful for paying.

    What is the dedupe key for purchase orders in Xero?

    The ConnectWise PO number, written into the Xero bill (or Xero PO) reference field. Same dedupe pattern as the invoice sync. Without it, partial receipts and re-runs create duplicate bills.

    How do I handle a PO that covers multiple Xero tracking categories?

    Split the bill line items so each line carries one Location and one Department tracking category. Xero supports tracking-category mapping at line level on bills, the same as on invoices. Bundling multiple categories on a single line blurs the reporting.

    What if a vendor invoice covers two ConnectWise POs?

    Two patterns work. Either the sync creates one Xero bill linked to both POs (if the sync supports many-to-one), or the bookkeeper splits the vendor invoice into two Xero bills, one per PO. Pattern two is the common manual approach.

    What if a ConnectWise PO has been paid but never received properly?

    This is the most common procurement-finance mismatch. The clean answer is to reconcile in ConnectWise (mark the PO received and attach the vendor invoice), let the sync update Xero, then apply the payment in Xero. The messy answer is to mark the Xero bill paid manually and leave the ConnectWise PO incomplete; the two systems then disagree forever.

    Does Connect Zero support purchase order sync?

    Yes, with the lifecycle-decision-first approach described above. The setup includes a documented mapping of ConnectWise PO states to Xero bill events, which the operator and finance lead sign off before the sync goes live. For the full feature picture, see the ConnectWise Xero features page. To walk through your specific PO shape, see the contact page.

    How long does it take to set up PO sync separately from invoice sync?

    Roughly half a day to a day after the invoice sync is working. The work is in the vendor mapping, product-to-account mapping, and the lifecycle decision. The sync configuration is the easy part once those three are documented.

    Should PO sync go live at the same time as invoice sync?

    Usually no. The cleaner sequence is to get invoice sync working for a full billing cycle, confirm both sides agree, then turn on PO sync as a separate cut-over. Bundling the two cut-overs increases the chance that a problem in one masks a problem in the other.

    Closing read

    Purchase order sync is not difficult because the APIs are weak. Both ConnectWise procurement and Xero bills expose enough data to do the sync well. It is difficult because the lifecycle decision needs to be made explicitly, by procurement and finance together, before the sync goes live. With the decision made and one of the three patterns picked, PO sync becomes the boring part of the integration. Which is what you want it to be.

    For more on how Connect Zero approaches the lifecycle decision and the supporting workflows, see how the sync works, or talk to us about your specific PO shape.


    *Connect Zero is built by Auswide IT, a South-Australia-based MSP and integration vendor. Last updated 23 May 2026.*