Skip to main content

How do I set up Xero BankTransaction sync for reconciliation?

Create a BankTransaction against the correct BankAccount for every payment the workflow processes, using createBankTransaction, and let Xero's own bank feed import and auto-matching reconcile it against the real statement line. Check the IsReconciled flag via getBankTransaction or listBankTransactions rather than assuming creation alone means the transaction is reconciled.

Zuny FesterBy Zuny Fester, Head of Operations and Marketing
Reviewed by Zuny Fester
Published Last reviewed Editorial policy

Part of the finance integrations guide.

Core objectBankTransaction — full CRUD (get/create/update/delete/list) in Loopfour's Xero integration
Required linkEvery BankTransaction is tied to a specific BankAccount
Reconciliation statusTracked via the IsReconciled boolean flag, read via getBankTransaction/listBankTransactions
What creation alone doesn't doCreating a BankTransaction doesn't reconcile it — that happens via Xero's own matching against the imported bank feed

BankTransaction is Xero's first-class reconciliation object

Unlike ERPs without a dedicated payment object, Xero's Accounting API exposes BankTransaction with full CRUD — get, create, update, delete, and list. Loopfour's Xero integration implements all five, which is the most complete reconciliation surface of any ERP in this integration matrix.

The setup sequence

Every BankTransaction must reference a specific BankAccount — get this wrong and the transaction lands against the wrong account, invisible to reconciliation against the statement the workflow actually intended. Create the transaction with createBankTransaction as soon as the payment is known (a Stripe payout lands, a wire clears), with the transaction type, line items, and BankAccount set correctly. Creating the record doesn't itself reconcile anything — Xero's own bank feed import and auto-matching engine is what ties the created BankTransaction to the real statement line, which is a separate process running on Xero's side, not something the integration triggers directly.

Confirming it actually reconciled

The IsReconciled flag on a BankTransaction (readable via getBankTransaction or listBankTransactions) is the source of truth for whether Xero's matching engine actually tied the created transaction to a real bank feed line. A workflow that only checks "did createBankTransaction return success" is checking the wrong thing — that confirms the record exists in Xero, not that it's reconciled. Poll or periodically list BankTransactions and check IsReconciled to catch transactions that were created but never matched.

What causes an unreconciled BankTransaction

Most commonly: the amount or date on the created transaction doesn't precisely match the bank feed line (a fee wasn't accounted for, a date is off by the settlement delay), the wrong BankAccount was used, or the real bank feed line simply hasn't imported into Xero yet. The fix is almost always in how precisely the created BankTransaction mirrors what the bank actually reports — Xero's auto-matching is looking for a close match, not a fuzzy one.

Next step

Map the finance workflow with the most exposure and prove the automation path.

Bring the invoice, contract, payment reconciliation, or customer finance workflow you have to defend at audit. Loopfour can map the trigger, controls, integrations, and approval loop.

Book a workflow review

Field mapping

Payment event to Xero BankTransaction sync sequence

StepActionWho does it
1Payment event occurs (payout, wire)Payment processor / bank
2createBankTransaction against the correct BankAccountLoopfour's Xero integration
3Bank feed line imports into XeroXero (independent of the integration)
4Xero auto-matches the two, sets IsReconciledXero's matching engine
5Poll IsReconciled to confirmLoopfour's Xero integration

Frequently Asked Questions

No. Creation just puts the record in Xero. Reconciliation happens when Xero's own bank feed import and matching engine ties it to the real statement line — check IsReconciled to confirm that actually happened.

The created BankTransaction stays unreconciled indefinitely. This is a Xero-side bank feed issue, not something the integration can force — check Xero's bank feed connection status directly.

Yes — updateBankTransaction is implemented, unlike Xero AP bills in this integration, which are create-only. BankTransactions support the full CRUD set.

Sources

Related