Accounting Integrations
QuickBooks, Xero and FreshBooks, and which of the three actually sends anything on its own.
Three accounting packages can be connected: QuickBooks Online, Xero and FreshBooks. Each has its own settings page under Settings, each connects by signing in to the accounts package rather than by pasting keys, and each can push orders, customers and products across.
They are not equivalent, and the difference matters before you plan a month end around one.
Only QuickBooks Sends Anything by Itself
Xero and FreshBooks Do Not Sync Automatically Yet
Both connect, both have auto-sync switches on their settings pages, and both can be driven by the API. What is missing is the part that fires when something happens in the shop. Turning on Auto-Sync Invoices for Xero or FreshBooks changes nothing on its own: no order placed in the shop reaches either package without something else telling it to. The switch is not broken, it is waiting on the connection between the two halves. If you are choosing an accounts package on the strength of this feature, choose QuickBooks, or ask for the work to be finished.
QuickBooks is wired up: an order placed, a refund issued and a customer registering each reach QuickBooks on their own, if the matching switch is on.
QuickBooks
Connect by pressing Connect and signing in. You come back with a company file linked. Until that happens, every switch on the page is inert.
Three switches, each off by default and each independent:
Sync orders. A placed order becomes a sales receipt or invoice. This fires when the order is placed, not when it is paid, so an unpaid order on terms arrives in QuickBooks as soon as it exists.
Sync customers. A new registered customer becomes a customer record. Guests who never register are not included, which for most shops is the larger half of the order book.
Sync products. Despite the name, nothing sends products automatically. The switch exists, but products only go across when you press Sync Products on the settings page. Treat it as a button rather than a setting.
Customers can be pushed in bulk the same way, with Sync Customers.
Sandbox and Production Are Separate Companies
The connection can point at a QuickBooks sandbox company for testing. Orders synced to sandbox are not in your real books and never will be: there is no migration between the two. Test there, then disconnect, then connect to the real company, and expect to resync anything you want in both.
Xero
Xero needs a client ID and secret from an app you create in your own Xero developer account, then a connection. Beyond the credentials, the page asks for four account codes: sales, shipping, expenses and payments. These are the codes in your chart of accounts, and getting one wrong puts revenue in the wrong place quietly rather than failing.
Everything on the page works except the automatic part. The service can create invoices, contacts, products, payments and refunds, and does it correctly when called.
FreshBooks
The same shape: an app in your FreshBooks developer account, a connection, and a set of mappings. It can create invoices, clients, items, payments and expenses. As with Xero, nothing in the shop currently calls any of it on its own.
What a Sync Does Not Cover
Worth knowing whichever package you use:
Edits do not flow. Changing an order here after it has synced does not update the accounts package. The first push is a snapshot.
Nothing comes back. Marking an invoice paid in the accounts package does not mark the order paid here. The traffic is one way.
A failure is quiet. If a sync fails, the order is not held up and nobody is told. It is written to the error log, which is the only place it appears. A month that looks light in the accounts package and right in the shop is the shape of this.
Tax is sent as calculated here. The accounts package takes the figure, it does not recalculate it. If your tax setup here is wrong, it is wrong in both places, consistently.
Reconcile the First Month by Hand
Whichever package you connect, compare the first month's order total in the shop reports against the same month in the accounts package before you rely on it. Sync failures do not announce themselves, and the only way to learn that something is missing is to look for it once, deliberately, while the volume is still small enough to check.
Connections Expire
All three sign you in with a token that has to be renewed, and the renewal can fail: a password changed at the accounts package, access revoked, an app reconfigured. When it does, the connection stops working and the settings page stops showing itself as connected.
Nothing emails you about it. If you are relying on an automatic sync, look at the settings page occasionally and confirm it still says connected, because a disconnected integration and a quiet month look identical from inside the shop.
