---
title: "How to connect to Xero"
slug: "how-to-connect-to-xero-1"
updated: 2026-05-25T01:23:09Z
published: 2026-05-25T01:23:09Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://help.infoodle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# How to connect to Xero

<p>Connecting infoodle to Xero lets your transactions, contacts and account codes flow between the two systems on a regular schedule. This article walks through where the connection lives in infoodle, what each configuration option does, how to authorise infoodle to talk to your Xero organisation, and what to know on the governance side: the donor data that crosses the boundary, the OAuth access you are granting, and how to do a clean disconnect.</p>

<h2>Before you start</h2>

<ul>
<li>You will need a Xero account with permission to connect a Connected App to your organisation. If your accountant set up your Xero, they may need to do this step. Details are on the Xero help site: <a href="https://central.xero.com/s/article/Getting-started-with-Xero-Connected-Apps">Getting started with Xero Connected Apps</a>.</li>
<li>You will also need a role in infoodle with the right role permissions. The role permissions required for connecting to Xero are:
<ul>
<li><strong>Manage finance configurations:</strong> gives access to the Xero Setup page.</li>
<li><strong>Read and Report on Transactions</strong> (read-only) or <strong>Manage, Read and report on transactions</strong> (full transaction admin): to work with transactions inside infoodle.</li>
<li><strong>Update System information:</strong> useful if you need to change site-wide settings while you set up the connection.</li>
</ul>
</li>
<li>Note, only one infoodle site connects to one Xero organisation. If you manage multiple Xero organisations, decide which one infoodle should connect to before you start.</li>
</ul>

<section class="warningBox">
  <div class="title">The Xero connection is site-wide</div>
  <div class="content"><p>There is one Xero connection for the whole infoodle site, it is not scoped to a cluster. If you use cluster restrictions for donor-data segregation, treat <strong>Manage finance configurations</strong> as a privileged grant: the holder can change a setting that controls how every cluster's donor data is shared with your accounting system.</p></div>
</section>

<hr>

<h2>Step 1: Open the Xero Setup page in infoodle</h2>

<ol>
<li>From the left-hand menu, click or hover over <strong>Finance</strong>, then click <strong>Transaction processing</strong>.</li>
<li>On the page, click <strong>Configuration</strong>, then <strong>Xero Setup</strong>.</li>
</ol>

![Image](https://cdn.document360.io/d198920d-a212-4177-85f9-e1abc92e7ab3/Images/Documentation/image-ZCQ8S2XL.png){height="" width=""}

<p>The Xero Setup page is divided across several tabs:</p>
<ul>
<li>With <strong>Manage finance configurations</strong> you see Status, Xero Connection, Contact settings, Account code settings, and Giving Number.</li>
<li>With the broader <strong>Manage, Read and report on transactions</strong> role permission you also see Transaction settings, which controls how Xero line-item descriptions are matched to people in infoodle.</li>
</ul>
<p>You can fill these in before you connect, or come back to them later.</p>

<hr>

<h2>Step 2: Check the current connection state</h2>

<p>Click the <strong>Status</strong> tab. Before you have connected infoodle to Xero, the status fields are all empty.</p>

![Image](https://cdn.document360.io/d198920d-a212-4177-85f9-e1abc92e7ab3/Images/Documentation/image-4JXFWIF6.png){height="250" width=""}

<p>Once the connection is in place, the Status tab is where you check the organisation name, base currency, country code, and the timestamp of the last successful communication with Xero. The Status tab also shows a <strong>Connection Message</strong> and a <strong>Last Message</strong> field with the most recent response from Xero.</p>

<hr>

<h2>Step 3: Connect to Xero</h2>

<p>Open the <strong>Xero Connection</strong> tab. While infoodle is not yet connected, this tab shows a button saying: <strong>Connect to Xero</strong>.</p>

![Image](https://cdn.document360.io/d198920d-a212-4177-85f9-e1abc92e7ab3/Images/Documentation/image-ZCQ8S2XL.png){height="" width=""}

<section class="infoBox">
  <div class="title">Note</div>
  <div class="content"><p>If you have the cashbook version of Xero, the person who created your Xero system (typically your accountant) needs to do this step.</p></div>
</section>

<section class="infoBox">
  <div class="title">The next click leaves infoodle</div>
  <div class="content"><p>The <strong>Connect to Xero</strong> link takes you to <strong>login.xero.com</strong>, where Xero asks you to sign in and choose which organisation to connect to infoodle. Make sure you are signing in to the correct Xero login. If your accountant manages multiple organisations, double-check which one you grant access to.</p></div>
</section>

<hr>

<h2>Step 4: Authorise infoodle on the Xero side</h2>

<p>Clicking <strong>Connect to Xero</strong> opens Xero in a new window.</p>

<p>Here you can:</p>
<ol>
<li> <b>Sign in</b> to your Xero account if you are not already signed in.</li>
<li><b>Choose</b> the Xero organisation you want infoodle to connect to.</li>
<li>Review the access infoodle is requesting, and click <strong>Allow access</strong>.</li>

![Image](https://cdn.document360.io/d198920d-a212-4177-85f9-e1abc92e7ab3/Images/Documentation/image-JB2VTI0G.png){height="35" width=""}

</ol>
<p>Xero then redirects you back to infoodle and confirms the connection. You will be asked to re-confirm the details on the infoodle screen.</p>

<h3>What you are granting infoodle on your Xero organisation</h3>

<p>The Xero consent screen lists four scopes. In plain English, granting them means infoodle can:</p>
<table style="border-collapse:collapse;width:100%;margin:12px 0;">
<thead>
<tr>
<th style="border:1px solid #ddd;padding:6px 10px;text-align:left;">OAuth scope</th>
<th style="border:1px solid #ddd;padding:6px 10px;text-align:left;">What infoodle can do on your Xero org</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border:1px solid #ddd;padding:6px 10px;"><code>accounting.contacts</code></td>
<td style="border:1px solid #ddd;padding:6px 10px;"><strong>Read and write</strong> contacts: create, update and look up the people and organisations in your Xero contacts list.</td>
</tr>
<tr>
<td style="border:1px solid #ddd;padding:6px 10px;"><code>accounting.transactions</code></td>
<td style="border:1px solid #ddd;padding:6px 10px;"><strong>Read and write</strong> invoices, bills, bank transactions and similar transactional records.</td>
</tr>
<tr>
<td style="border:1px solid #ddd;padding:6px 10px;"><code>accounting.settings</code></td>
<td style="border:1px solid #ddd;padding:6px 10px;"><strong>Read and write</strong> the organisation's chart of accounts, tracking categories, tax rates and similar org-wide settings. This is the broadest of the four scopes.</td>
</tr>
<tr>
<td style="border:1px solid #ddd;padding:6px 10px;"><code>offline_access</code></td>
<td style="border:1px solid #ddd;padding:6px 10px;">Hold a long-lived refresh token so infoodle can keep talking to Xero on the regular three-hourly poll <strong>without anyone being signed in</strong>. This is what makes the unattended scheduled sync possible.</td>
</tr>
</tbody>
</table>
<p>If your governance posture requires four-eyes approval for write access to your accounting system, the time to record that approval is here, at the consent step.</p>

<section class="warningBox">
  <div class="title">One organisation per infoodle site</div>
  <div class="content"><p>infoodle connects to a single Xero organisation per site. If you manage more than one organisation in Xero, the consent screen prompts you to pick the one you want to grant access to. To swap organisations later, disconnect the existing one first (see <strong>Disconnecting from Xero</strong> below) and then repeat this connection step.</p></div>
</section>

<hr>

<h2>Step 5: Confirm the connection</h2>

<p>Return to <strong>Finance, Transaction processing, Configuration, Xero Setup</strong> and click the <strong>Status</strong> tab.</p>

![Image](https://cdn.document360.io/d198920d-a212-4177-85f9-e1abc92e7ab3/Images/Documentation/image-CG0NHFBJ.png){height="300" width=""}

<p>Once authorised, the page shows:</p>
<ul>
<li><strong>Is Connected:</strong> Yes</li>
<li><strong>Organisation connected to:</strong> the name of your Xero organisation</li>
<li><strong>Financial Year</strong>, <strong>Base Currency</strong>, <strong>Currency List</strong>, <strong>Country Code:</strong> pulled from Xero</li>
<li><strong>Last Successful Communication</strong> and <strong>Last Authentication completed:</strong> timestamps of the most recent sync and the most recent OAuth refresh</li>
<li><strong>Connection Message</strong> and <strong>Last Message:</strong> the most recent response or error message infoodle received from Xero</li>
</ul>
<p>To re-check the connection (for example after Xero prompts for a re-authentication), open the <strong>Xero Connection</strong> tab and click <strong>Check Xero connection and Authorise</strong>.</p>

<hr>

<h2>Step 6: Configure how contacts flow between infoodle and Xero</h2>

<p>Open the <strong>Contact settings</strong> tab.</p>

![Image](https://cdn.document360.io/d198920d-a212-4177-85f9-e1abc92e7ab3/Images/Documentation/image-8C4907PU.png){height="" width=""}

<p>The settings options are:</p>
<ul>
<li><strong>Build infoodle from Xero:</strong> what infoodle does when a new contact is added in Xero. Choose <strong>Import then manually add to infoodle</strong> to review each new contact, or <strong>Automatically add to infoodle to match Xero</strong> to skip the review. Manual is the safer default for most organisations.</li>
<li><strong>Xero changes to contacts:</strong> what infoodle does when a contact is edited in Xero. Options: <strong>Updates are ignored</strong>, <strong>Manually update changes</strong>, <strong>Automatically update infoodle to match Xero</strong>.</li>
<li><strong>infoodle changes to contacts:</strong> what Xero receives when a contact is edited in infoodle (where that contact is connected to Xero). Options: <strong>Updates are ignored</strong> or <strong>Update Xero</strong>.</li>
<li><strong>Name format to create in Xero:</strong> the name format used when you create a new contact in Xero from infoodle. Choose <strong>Firstname Lastname</strong> or <strong>Lastname Firstname</strong>. Individual contacts only.</li>
<li><strong>Allow Quick Add of new contacts from reconcile screen:</strong> set to <strong>No</strong> to hide the Quick Add button on the reconciliation screen for transactions whose contact is not yet in infoodle.</li>
</ul>
<p>Click <strong>Save</strong> at the bottom of the tab when you are finished.</p>

<hr>

<h2>Step 7: Configure how transactions are matched</h2>

<p>Open the <strong>Transaction settings</strong> tab. This tab tells infoodle how to read the descriptions on Xero line items so it can match incoming transactions to people in infoodle.</p>

<section class="infoBox">
  <div class="title">Note</div>
  <div class="content"><p>You only see this tab if your role has <strong>Manage, Read and report on transactions</strong>. Users with the narrower <strong>Manage finance configurations</strong> or <strong>Read and Report on Transactions</strong> role permissions see the other five sub-tabs but not this one.</p></div>
</section>

![Image](https://cdn.document360.io/d198920d-a212-4177-85f9-e1abc92e7ab3/Images/Documentation/image-49FB9AXF.png){height="300" width=""}

<p><strong>Reconcile Xero contact names and descriptions:</strong> the placeholder tokens infoodle understands.</p>
<ul>
<li><strong>num:</strong> a Giving Number, matched against the person's Giving Number in infoodle</li>
<li><strong>any text num:</strong> any text and a space before the Giving Number</li>
<li><strong>num any text:</strong> any text after the Giving Number and a space</li>
<li><strong>lastname:</strong> person's last name</li>
<li><strong>firstname:</strong> person's first name</li>
<li><strong>initial:</strong> person's initial (best used with lastname)</li>
<li><strong>housename:</strong> household or organisation name</li>
</ul>
<p>Example: <code>Nr. {num}</code> would match a description like <strong>Nr. 1042</strong> to the person who has Giving Number 1042. Example: <code>{lastname}, {initial}</code> would match <strong>Smith, J</strong>.</p>

<section class="warningBox">
  <div class="title">Privacy note for name-based reconcile patterns</div>
  <div class="content"><p>If you adopt a placeholder pattern that includes firstname, lastname, initial or housename, the donor's name will appear in Xero transaction descriptions and will be visible to anyone with access to your Xero books, often a wider audience than donor-data viewers in infoodle. If your privacy notice does not cover that disclosure, consider a Giving-Number-only pattern (num or Nr. num) instead.</p></div>
</section>

<p><strong>Perform minimal reconcile</strong> (UK customers using Gift Aid should review carefully):</p>
<ul>
<li><strong>Full reconcile with automation where specified:</strong> choose this if you need to extend Xero data with non-accountcode information (stock, memberships, etc.). You can still flag transactions for automatic reconcile.</li>
<li><strong>Minimal but automatic reconcile:</strong> choose this if you are only capturing account codes (and optionally tracking categories). infoodle will reconcile everything automatically with no manual step.</li>
</ul>

<hr>

<h2>Step 8: Account code settings</h2>

![Image](https://cdn.document360.io/d198920d-a212-4177-85f9-e1abc92e7ab3/Images/Documentation/image-8D47JSDN.png){height="" width=""}

<p><strong>Update descriptions:</strong> when set to <strong>Yes</strong>, each time infoodle polls Xero it refreshes the account code descriptions in infoodle to match Xero. Set to <strong>No</strong> to keep your infoodle descriptions exactly as you have entered them.</p>

<hr>

<h2>Step 9: Giving Number settings</h2>

![Image](https://cdn.document360.io/d198920d-a212-4177-85f9-e1abc92e7ab3/Images/Documentation/image-761I46ZA.png){height="" width=""}

<p><strong>Giving Number is xero's Account number?</strong></p>
<ul>
<li><strong>Yes:</strong> infoodle uses the Giving Number as Xero's Account Number when syncing contacts to Xero, and any new contact imported from Xero gets its Giving Number set from Xero's account number.</li>
<li><strong>No:</strong> infoodle and Xero each keep their own numbering; neither field is written to the other system.</li>
</ul>
<p>The format of your Giving Number must match the format you have configured under Administration, System, Giving Numbers. See <a href="/v1/docs/giving-number-settings">Giving Number Settings</a>.</p>

<hr>

<h2>Step 10: Set up the import schedule</h2>

<p>Once infoodle is connected, tell it which bank accounts and account codes to pull transactions from on its regular three-hourly poll. This is the <strong>Xero Schedule</strong>: see the <a href="/v1/docs/xero-schedule">Viewing the Xero schedule</a> article for the setup steps.</p>
<p>After the schedule is in place, infoodle pulls the following on each poll:</p>
<ul>
<li>Contacts that have changed since the last poll</li>
<li>Bank accounts that are still active in your schedule</li>
<li>Account codes that are still active in your schedule</li>
<li>Transactions that have been reconciled or updated in Xero since the last poll</li>
<li>Tracking categories</li>
</ul>

<hr>

<h2>What syncs between infoodle and Xero</h2>

<ul>
<li><strong>Contacts: two-way</strong>, subject to your Contact settings.</li>
<li><strong>Transactions: mostly Xero to infoodle</strong>; infoodle to Xero is via Upload to Xero.</li>
<li><strong>Bank accounts and account codes: Xero to infoodle</strong>, for the items in your Xero Schedule.</li>
<li><strong>Tracking categories: Xero to infoodle</strong>.</li>
</ul>

<hr>

<h2>What donor data flows to Xero</h2>

<p>When the connection is active and the <strong>infoodle changes to contacts, Update Xero</strong> option is selected, the following fields on each affected person record in infoodle are written to Xero as a contact:</p>
<ul>
<li>Name (first name and last name, or organisation name)</li>
<li>Email address</li>
<li>Phone numbers</li>
<li>Postal address (street, suburb, city, state, postcode, country)</li>
<li>Giving Number (written into Xero's <strong>Account Number</strong> field if <strong>Giving Number is xero's Account number?</strong> is set to Yes)</li>
</ul>
<p>When the <strong>Upload to Xero</strong> feature is used, donation amounts and transaction dates also flow to Xero alongside the contact name. If the reconcile pattern includes a name token, the donor's name appears in the Xero line-item description.</p>
<p>Xero is a separate data controller (or processor, depending on your Xero contract). Customers under UK GDPR, NZ Privacy Act 2020, the Australian Privacy Principles or equivalent should add Xero to the <strong>recipients of your data</strong> list in their privacy notice, and to their ROPA or Article 30 record where applicable.</p>

<hr>

<h2>Audit trail</h2>

<p>infoodle's per-record logging for Xero sync events is limited: each poll updates timestamps and message fields on the Status tab, but infoodle does not expose a per-contact or per-transaction sync log inside the Xero Setup area.</p>
<p>On the Xero side, every contact or transaction that infoodle creates, updates or reconciles is recorded in Xero's <strong>History &amp; Notes</strong> panel against that record. For external-auditor questions about automated entries into the accounting system, History &amp; Notes is the right place to point the auditor.</p>

<hr>

<h2>Disconnecting from Xero</h2>

<p>Open the <strong>Xero Connection</strong> tab on the Xero Setup page. Once connected, the tab offers a disconnect option alongside the <strong>Check Xero connection and Authorise</strong> action.</p>

<section class="warningBox">
  <div class="title">Disconnect affects every infoodle environment sharing the same Xero organisation</div>
  <div class="content"><p>If your charity has separate live and test infoodle sites connected to the same Xero organisation, revoking the grant from inside Xero will disconnect every infoodle site using that connection, not just the one you are working in. Disconnecting from the infoodle side affects only the infoodle site you are signed in to.</p></div>
</section>

<h2>What data stays after disconnect</h2>

<ul>
<li>Contacts and transactions previously written to Xero stay in Xero.</li>
<li>Contacts and transactions previously imported into infoodle stay in infoodle.</li>
<li>Schedule, contact-settings and account-code settings are kept on the infoodle side, so reconnecting to the same Xero organisation restores the same configuration.</li>
</ul>

<h2>How to do a clean two-sided revocation</h2>

<ol>
<li>In infoodle, on the <strong>Xero Connection</strong> tab, click the disconnect option. This stops the scheduled sync.</li>

<li>Sign in to Xero, go to <strong>Settings, Connected apps</strong>, find the infoodle entry, and click <strong>Disconnect</strong>. This revokes the refresh token.</li>
<li>If a donor has asked you to erase their record, delete or anonymise the record in Xero directly as well as in infoodle. The disconnect itself does not remove anything.</li>
</ol>

<h2>Changing the connected Xero organisation</h2>

<p>If you swap the connected Xero organisation, account codes, contacts and historical mappings do not transfer. Past sync history is meaningful only in the context of the previous Xero organisation. Multi-entity charities running several legal entities through one infoodle site should plan this change carefully.</p>

<hr>

<h2>Common questions</h2>

<h4>Why is the Xero Setup page not in my Finance menu?</h4>
<p>Your role needs the role permission <strong>Manage finance configurations</strong>. Without it, the Configuration, Xero Setup sub-menu is not available. Ask an administrator to update your role under Administration, Roles. If you can see the page but the Transaction settings tab is missing, that is expected, Transaction settings requires the broader <strong>Manage, Read and report on transactions</strong> role permission.</p>
<h4>I clicked Connect but ended up authorising the wrong Xero organisation, what now?</h4>
<p>Disconnect from the infoodle side, then go to Xero's Settings, Connected apps and revoke infoodle's access from the unwanted organisation. Then click <strong>Connect to Xero</strong> again in infoodle and pick the correct organisation on the Xero consent screen.</p>
<h4>I am connected, but no transactions are appearing in infoodle. Why?</h4>
<p>The connection only opens the door. Transactions follow the Xero Schedule. Until you tell infoodle which bank accounts and account codes to import, nothing is pulled. See the Xero Schedule article.</p>
<h4>The Status tab shows "Failed to retrieve information". What does this mean?</h4>
<p>There are two cases. The first is a transient comms error: it clears on the next poll and the <strong>Last Successful Communication</strong> timestamp updates. The second is a persistent error caused by the Xero side revoking the grant. To tell them apart, sign in to Xero and check <strong>Settings, Connected apps</strong>. If infoodle is still listed there, the issue is transient; if it has been removed, reconnect from the Xero Connection tab in infoodle.</p>

<hr>

:::(Info) (Related Articles:)
<ul>
<li><a href="/v1/docs/xero-schedule">Viewing the Xero schedule</a></li>
<li><a href="/v1/docs/adding-xero-account-codes-to-the-xero-schedule">Adding Xero account codes to the Xero schedule</a></li>
<li><a href="/v1/docs/sync-infoodle-contacts-with-xero">Sync infoodle contacts with Xero</a></li>
<li><a href="/v1/docs/contacts-from-xero">Contacts from Xero</a></li>
<li><a href="/v1/docs/send-to-xero">Send to Xero</a></li>
<li><a href="/v1/docs/what-if-i-change-a-transaction-in-xero">What if I change a transaction in Xero?</a></li>
<li><a href="/v1/docs/xero-setup">Xero Setup</a></li>
<li><a href="/v1/docs/giving-number-settings">Giving Number Settings</a></li>
</ul>
:::
