Kwikbill

Xero and QuickBooks sync

Last updated 26 October 2026.

Kwikbill posts your sent invoices, their payments and any voids into Xero or QuickBooks Online, so whoever does your books never retypes an invoice. The sync is one way, from Kwikbill to your accounts, and it only ever touches invoices that came from Kwikbill. One accounting provider is connected per business at a time.

What syncs, and when

WhenWhat happens in Xero or QuickBooks
An invoice is sentThe client becomes a contact (matched by email, then by exact name, otherwise created) and the invoice is created as an approved sales invoice with the same number, dates, lines, tax and total.
A sent invoice is editedThe invoice in Xero or QuickBooks is updated to match. Nothing is posted if the invoice has not changed since the last push.
A payment is recordedA payment for that amount, on that date, is applied to the invoice and deposited to the bank account you chose. Card and bank payments taken through Kwikbill count, as do payments you record by hand.
An invoice is voidedThe invoice is voided in your accounts too, as long as it has no payments. If it has, the log asks you to void it there yourself.

Pushes happen in the background within a few seconds. Each invoice shows a line under its status: “Synced to Xero” with the time, “Not synced” with a Sync now link, or “Sync failed” pointing you at the log.

What does not sync

  • Drafts, until they are sent.
  • Estimates, credit notes, purchase orders and receipts.
  • Expenses, time entries and bills.
  • Deleted payments: Kwikbill never deletes anything in your accounts. The log tells you to remove the payment there.
  • Invoices issued before your sync-from date, unless you move the date back and backfill.

Connecting

  1. Go to Settings → Accounting (owners and admins only).
  2. Press Connect Xero or Connect QuickBooks and sign in there. Xero asks which organisation to allow; if your login has several, Kwikbill asks you to pick one afterwards.
  3. You come back to Kwikbill with the mapping form open. Check it, save, and you are done.

Connecting the other provider later disconnects the first; the button says so before it sends you off. Disconnecting never removes anything already posted.

The mapping

  • Sales account (Xero) or income item (QuickBooks): every invoice line is posted to this one account. Pick your usual sales or revenue account.
  • Bank account (Xero) or deposit to account (QuickBooks): where payments land. If you take card or bank payments through Kwikbill, choose the account the provider pays out to, or an undeposited funds account you reconcile from.
  • Tax rates: one row per Kwikbill tax rate, each matched to a tax code in your accounts. Kwikbill pre-selects a code with the same percentage (preferring sales-side codes); rows with no match are highlighted until you choose one. Invoices that use an unmapped rate fail to sync with a message saying which rate.
  • Lines without tax: the code used for lines with no tax rate, usually Xero's “No VAT” or QuickBooks' “NON”.
  • Sync invoices from: defaults to the day you connected. Invoices issued before it are left alone, so a long history does not land in this year's accounts by accident.

Refresh lists re-reads your accounts and tax codes after you add one in Xero or QuickBooks. Backfill queues every sent invoice issued on or after the sync-from date that is not in your accounts yet, with its payments; already-synced invoices are skipped, so it is safe to press more than once.

Totals match to the penny

Kwikbill sends each line's net amount and its tax amount explicitly, rather than letting the accounting software recalculate tax from the rate. The invoice in your accounts therefore shows exactly the subtotal, tax and total the client was sent, including discounts, tax-inclusive pricing and mixed rates. If the provider ever reports a different total, the sync log shows both figures as a warning so you can check the tax rounding settings on that side.

Card and bank payment fees

Payments are posted at the full invoice amount the client paid. Stripe and GoCardless fees appear on your payout statements, not on the invoice, so record them from those statements the way you do today. Kwikbill does not post fee entries.

The sync log

Settings → Accounting lists the last 50 pushes with the time, what was sent, whether it worked and the provider's message when it did not. Failed rows have a Retry button, which queues a fresh attempt after you have fixed the cause. Temporary problems (the provider being down, a rate limit) are retried automatically for several hours before they are marked failed. Log entries are kept for 90 days.

Troubleshooting

  • “Tax rate … is not mapped”: open the mapping, choose a code for the highlighted rate, save, then press Retry on the row.
  • “Choose the bank account payments go to”: the deposit account is empty. Pick one and retry.
  • “Void it in Xero yourself: it has payments recorded”: Kwikbill does not unapply payments in your accounts. Remove the payments there, void the invoice there, and the Kwikbill side is already void.
  • “No longer accepts Kwikbill's access” or the connection is marked disconnected: the provider revoked or expired the token, which happens if the connection goes unused for a long time or someone removed Kwikbill in the provider's settings. Press Reconnect; your mapping is kept when you reconnect to the same organisation.
  • The contact was created twice: Kwikbill matches by the client's email, then by exact name. Give the client the same email address in both systems before their first invoice syncs, or merge the contacts on the accounting side; later invoices use the linked contact.
  • An invoice from before you connected is missing: it is before the sync-from date. Move the date back and press Backfill.

Privacy

Kwikbill stores the access tokens Xero or QuickBooks issue, encrypted, and uses them only to post the records above. It reads your chart of accounts and tax codes for the mapping form and nothing else; it does not read your other invoices, bank feeds or contacts. The sync log keeps the provider's error message, never its full response. Disconnecting revokes the token with the provider.

Questions

Email [email protected]. For automations beyond accounting, see the Zapier guide and the API and webhooks.