Guide

Xero and QuickBooks out of sync with your practice management tool? Here's how to fix it

Most accounting firms keep Xero or QuickBooks and their practice management tool in step by hand: someone updates a client's details in one app, then the other, then the proposal tool. Typically that's a few minutes per change, but across a busy client list it adds up to hours a month, plus the errors nobody notices until billing.

The symptom is familiar. A client changes their trading name or billing email, and three months later an invoice goes to the old address. A new service is agreed in the proposal tool but never appears as a job. The partner asks for work in progress by client, and the numbers in the practice tool don't match the ledger. This guide is for accounting and bookkeeping firms of 10-60 people - a people business, meaning a business that sells its people's expertise and time, like accountants, lawyers, agencies and consultants. It covers what you can fix with native integrations, and when a custom sync is worth it.

Why it happens

Every app in an accounting firm's stack keeps its own list of clients, and each one was designed to be the master.

The ledger

Xero or QuickBooks - holds two kinds of client record: the firm's own contacts for billing, and each client's own organisation or company file that your team works in.

The practice management tool

Karbon, TaxDome or similar - holds the client, the jobs, the deadlines, the owners and often the time.

The proposal tool

such as Ignition - holds what the client bought and at what fee.

The CRM

, if you have one separately, such as HubSpot, holds the sales history.

Spreadsheets

fill the gaps: the WIP report, the fee schedule, the "who owns which client" list.

Native integrations connect some of these pairs, usually in one direction, usually for a few fields. Anything outside those fields - service changes, ownership changes, fee changes, client groups - is synced by a person. And because the apps match records by name, a "Ltd" in one and a "Limited" in the other is enough to create a duplicate.

The fix with what you already have

Start by getting the native connections right. They're free, supported by the vendors, and they handle the most common changes.

  1. 01

    Pick one master for each kind of data

    Write it down: client legal name and contact details are mastered in the practice tool; services and fees in the proposal tool; invoices and payments in the ledger. Every integration you turn on should flow from the master, never both ways for the same field unless the vendor supports it.

  2. 02

    Connect your practice tool to your ledger

    Karbon's Xero integration matches client contacts, prompts you to review partial matches, creates new contacts only when needed, keeps contact details in sync both ways, and syncs Karbon invoices to Xero with payments flowing between the two. If you're on TaxDome, its pricing page lists direct integrations with client general ledgers on Pro and Business plans. Check your own tool's integration page for QuickBooks Online support and what it covers.

  3. 03

    Connect the proposal tool to the practice tool

    Ignition's Karbon integration creates and assigns Karbon work items when a proposal is accepted, from services you've linked to Karbon work templates. That turns "the client bought it" into "the job exists" without anyone typing.

  4. 04

    Clean up before you connect

    Export your client lists from each app into one spreadsheet, agree the legal name for every client, merge duplicates, and archive old clients. Connecting two messy lists produces one bigger mess. Our free app inventory spreadsheet helps you list every app and what it holds.

  5. 05

    Agree a naming rule

    Use the registered legal name exactly as on the public register. Keep trading names in a separate field.

  6. 06

    Review sync errors weekly

    Most integrations log failed or partial matches. Give one person ten minutes on a Monday to clear them.

Setting it up, step by step

Here's the order we'd suggest. Do it outside your busiest months, and block out a few afternoons for whoever owns it - often the practice manager with the billing lead.

  1. Write the master list. In a single page, list each kind of data - legal name, trading name, billing contact, address, services, fees, client manager, invoices, payments - and name the app that owns it. Share it with the partners and get a yes.
  2. Export and compare. Export the client list from Xero or QuickBooks, from Karbon or TaxDome, and from Ignition. Put them side by side in one spreadsheet with a column for the agreed legal name. Look for near-matches: "Ltd" against "Limited", "&" against "and", old trading names, sole traders listed under a person's name in one app and a business name in another.
  3. Fix the records at the master. Correct names and contact details in the app that owns them. Merge duplicates there first. Archive clients you no longer act for, so they don't get matched to new ones.
  4. Turn on the practice tool to ledger connection. In Karbon, connect the Xero integration and work through the matching screen it gives you, confirming partial matches one by one rather than accepting them in bulk. In TaxDome, check which integrations your plan includes and connect the ledger from its settings. If you bill from the practice tool, decide whether invoices are created there or in the ledger - never both.
  5. Link services to work templates in Ignition. For each service in Ignition, choose the Karbon work template it should create when a proposal is accepted. Accept a test proposal for an internal test client and check the work item appears with the right owner and dates.
  6. Test with a few real changes. Change a billing email in the master app, and check it arrives in the others. Accept a proposal and check the job appears. Raise and pay a test invoice and check the payment status flows back.
  7. Set up the weekly error review. Find where each integration logs failed or partial matches. Put a recurring ten-minute slot in one person's calendar to clear them, and a short note on what to do with each kind of error.
  8. Tell the team what changed. People who used to update three apps now update one. Say which one, clearly, and update any checklist that still says otherwise.

Common mistakes

Syncing both ways for the same field.

If contact details can be edited in two places and both sync, the last change wins, and sometimes the wrong one does.

Bulk-accepting matches.

Matching screens make it tempting to accept everything. One wrong match can send a client's invoices to another client's contact.

Connecting before cleaning.

Duplicates in either app become duplicates in both.

Forgetting archived and former clients.

Old records with similar names cause the worst mismatches.

No owner for errors.

Integration logs that nobody reads fill up quietly until a client complains.

Assuming the integration covers a field because it covers the record.

Check field by field. Many connections sync the client but not the client manager, the service list or the client group.

What good looks like

A client's details are changed once, in one app, by the person responsible, and appear everywhere else within a day without anyone retyping them. A proposal accepted on Tuesday has its jobs created and assigned on Tuesday. The weekly error list fits on one screen and usually holds two or three items. The client counts in the ledger, the practice tool and the proposal tool match, or the difference is explained by a short list of known exceptions. And nobody in the firm can remember the last invoice that went to an old address. When a new person joins the billing team, they learn one place to change a client, not three, and the one-page guide is all the training they need on day one.

When that stops working

Native integrations cover the common paths. Firms usually outgrow them in one of these ways:

Changes in one app don't reach the others.

A fee change in the proposal tool, or a new client manager in the practice tool, never reaches the ledger or the reporting.

You run a WIP or fee spreadsheet

because no single app has time, fees and invoices for each client in one place.

Client groups break things.

A family with three companies, a trust and two rental properties is one relationship to your partners and seven unrelated records to your software.

You use QuickBooks for some clients and Xero for others

, and the practice tool only syncs well with one.

Duplicates come back

every month, no matter how often someone merges them.

Reports disagree.

The partner's recoverability report and the ledger tell different stories, and someone spends a day reconciling them before every partner meeting.

A vendor changes its integration

and nobody notices for weeks.

If the sync problems are between more than two apps, or involve your own business rules, settings won't fix them.

What a custom build looks like

A custom sync sits quietly between your apps and keeps them agreeing, using each vendor's official connection. It's often the first thing we build for accounting firms, because everything else depends on the client records being right.

For a typical firm:

  1. One client record, mastered once. The build follows your written rules: names and contacts from the practice tool, services and fees from the proposal tool, invoices from the ledger. Changes flow out to the other apps within minutes.
  2. Your rules, not the vendor's. Client groups, multi-entity families, mixed Xero and QuickBooks books, service packages that become several jobs - the sync handles the shapes your firm actually has.
  3. A daily check. Every morning, the build compares the apps and lists anything that disagrees, with a suggested fix. A person approves the fix.
  4. One view of the numbers. Time, fees, invoices and payments per client in one place, so the WIP report builds itself. It can live in a simple internal hub your managers already open every day, like the team hub we built for an agency.
  5. Alerts when something breaks. If a vendor changes its connection, we hear about it first, not your billing team.

On the open market, a single integration typically costs $2,000-5,000 to build and a multi-part internal tool $15,000-30,000, plus ongoing support (see our guide to software costs for accounting and law firms). Forge publishes its prices on the pricing page: a two-week ops audit at $2,500 (£2,000), credited to your first month, then a monthly plan at $2,000, $3,500 or $7,500 a month (£1,600, £2,800 or £6,000), with your first build included. The software runs on your own accounts, so you own it and pay those tool costs directly. We train the people who rely on it, roll it out in stages so nobody is surprised, and keep it monitored and fixed as the vendors change.

Clean client records also make onboarding easier; our guide to client onboarding for accounting firms covers the next step.

Who gets time back, and what they do with it

Sync work is invisible, which is why it's rarely measured. It usually falls on the practice manager, the billing lead and the managers who build the reports.

When the apps agree on their own, your billing lead stops cross-checking invoices against the practice tool every month and spends that time on aged debt - for example, calling the clients who are drifting past 60 days before the debt becomes a write-off. Your managers stop rebuilding the WIP report on Friday afternoons and use the time to review files properly. Your partners walk into the monthly meeting with numbers everyone trusts, so the meeting is about clients and pricing rather than whose spreadsheet is right.

For example: a month at a 20-person firm

For example, take a 20-person firm with around 400 clients: most on Xero, about 60 on QuickBooks Online, with Karbon for work and Ignition for proposals.

Before, the billing lead spent the first two days of each month comparing Karbon's client list against Xero contacts and Ignition's fee schedule in a spreadsheet. About one in twenty clients had something that didn't match - a new billing contact, a fee change that never reached the invoice, a duplicate created when a client added "Holdings" to their name. The WIP report took a manager most of a Friday afternoon.

After a cleanup weekend and the native connections, the firm finds around 40 duplicates and 70 archived clients still marked active. Ignition now creates Karbon work items when proposals are accepted, and the Karbon to Xero connection keeps contact details in step. The billing lead's monthly cross-check shrinks to a morning, spent mainly on the QuickBooks clients and on client groups, which the native connections don't handle the way the partners think about them. That remaining gap is exactly what a custom sync would close, and the firm now knows what to ask for.

Rolling it out and training the team

The settings are the easy part. The harder part is changing habits so that people update the master app and only the master app.

Start with one service line.

Bookkeeping clients, say, or one partner's portfolio. Run the new setup for a month and fix the rough edges before moving the rest.

Write a one-page "where do I change it" guide.

Name, address, billing contact, fee, client manager - each with the app and the person responsible. Pin it where people work.

Remove the old paths.

If people can still edit contact details in the ledger, some will. Tighten permissions where the apps allow it.

Train the people who change records most.

Admin, billing and client managers. A thirty-minute session on the master list and the error review is enough.

Give the error review an owner and a backup.

Holidays are when sync errors pile up.

Check in after a month.

Ask the team what still feels duplicated. Those answers become the list of gaps for the next round.

How to know it worked

Take a baseline before you start, then measure again after two and six months.

Duplicate client records

in each app. This should fall and stay down.

Clients whose details differ between apps.

Sample twenty clients a month and count mismatches.

Invoices sent to the wrong contact, or at the wrong fee.

Count the credit notes and reissues.

Time from proposal accepted to job created.

With the Ignition connection, this should be the same day.

Hours spent on the monthly cross-check and the WIP report.

Ask the billing lead and managers to note it for a month before and after.

Sync errors per week, and how long they wait.

A short, steady list is healthy; a growing one means something has changed.

Partner confidence.

Ask whether the partners trust the WIP and recoverability numbers without a separate reconciliation. If they don't yet, that's the next thing to fix.

FAQ

Questions, answered plainly

Does Karbon sync with Xero?

Yes. Karbon's Xero integration matches client contacts, creates new ones only when needed, keeps contact details in sync both ways, and syncs Karbon invoices to Xero, with payments flowing between the two.

Can I use one practice management tool with both Xero and QuickBooks clients?

Many practice tools connect to both, but the depth of each connection differs. Check what each integration syncs before you commit, and test with a few real clients first.

Why do I keep getting duplicate clients across my apps?

Usually because the apps match records by name and the names differ slightly between apps. Agree one naming rule, clean the lists before connecting, and make one app the master for client details.

What's the difference between a native integration and a custom sync?

A native integration is built by the vendor and covers common fields in a fixed way. A custom sync follows your firm's own rules, connects more than two apps, and handles shapes like client groups that the native integrations don't.

How much does a custom app sync cost for an accounting firm?

Typically $2,000-5,000 for a single integration and $15,000-30,000 for a multi-part tool on the open market. With Forge, a two-week ops audit is $2,500 (£2,000), credited to your first month, then $2,000, $3,500 or $7,500 a month (£1,600, £2,800 or £6,000) with your first build included.

Start with a 2-week ops audit - $2,500, credited to your first month.