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.
Part of the finance integrations guide.
| Core object | BankTransaction — full CRUD (get/create/update/delete/list) in Loopfour's Xero integration |
|---|---|
| Required link | Every BankTransaction is tied to a specific BankAccount |
| Reconciliation status | Tracked via the IsReconciled boolean flag, read via getBankTransaction/listBankTransactions |
| What creation alone doesn't do | Creating 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.
Field mapping
Payment event to Xero BankTransaction sync sequence
| Step | Action | Who does it |
|---|---|---|
| 1 | Payment event occurs (payout, wire) | Payment processor / bank |
| 2 | createBankTransaction against the correct BankAccount | Loopfour's Xero integration |
| 3 | Bank feed line imports into Xero | Xero (independent of the integration) |
| 4 | Xero auto-matches the two, sets IsReconciled | Xero's matching engine |
| 5 | Poll IsReconciled to confirm | Loopfour's Xero integration |
Frequently Asked Questions
Sources
Related
Topic
Payment Reconciliation & Cash Application
Payment reconciliation is the process of proving that every dollar that hit your bank account is accounted for somewhere in your books — matched to a deposit, a payout, an invoice, or an explained var…
Read moreTopic
Integrations
Every finance automation vendor publishes an integrations page: a grid of logos, a claim of "seamless" connectivity, and not much else. That page answers a marketing question — does this vendor touch…
Read moreDiagnostic
What breaks when a Xero bank transaction doesn't match the bank statement line?
A BankTransaction created through Xero's API isn't automatically linked to the real bank statement line Xero later imports. Xero's schema tracks this with an IsReconciled flag; its auto-matching compares amount, date, and contact against imported lines, and if those don't line up closely enough, the created transaction and the real line both sit unreconciled instead of resolving into one record.
Read moreComparison
Xero BankTransaction vs. generic journal entry: which reconciliation approach should I use?
Use Xero's native BankTransaction object whenever the write represents an actual bank-side event — a payout, a wire, a card settlement. It's built for exactly this and reconciles against the real bank feed automatically. Fall back to a generic journal entry only for non-bank adjustments (accruals, corrections) that were never going to show up on a bank statement in the first place.
Read more