Connecting Xero
1. What the connection does
When you raise an invoice in Dispatch Pro, you can push it into Xero instead of retyping it. That's the whole feature.
| What crosses | Direction |
|---|---|
| Invoices you raised here — number, date, lines, tax, total | Dispatch Pro → Xero |
| The contact needed to hang that invoice on | Dispatch Pro → Xero |
| Anything at all from your books | Never. |
Push only. We do not sync, reconcile, or read your ledger. Invoices are created as ACCREC (a sales invoice owed to you) with tax-exclusive lines. Nothing moves until you connect and press push on a specific invoice.
2. What you need first
- A Xero organisation and an account that can authorize apps for it.
- Company admin on your Dispatch Pro account — the Accounting card is admin-only.
- Your tax type and your revenue account code as they exist in Xero. Both are required and neither is guessed; see §6.
- About ten minutes to register the app.
3. Registering your Xero app
Xero connections run under an app you register, so the developer relationship, the app name on the consent screen, and the ability to revoke it are all yours.
- Sign in at
developer.xero.comand open My Apps. - New app. Choose the Web app integration type, name it something your team will recognise on a consent screen, and give your company URL.
- Set the Redirect URI to exactly:
Xero requires an absolute URL and does not accept wildcards. The Accounting card in Settings shows the same URL for whichever address you're signed in to — copy it from there if it differs.https://app.pinnaclegrove.ca/auth/accounting/callback - Create the app, then open its Configuration and generate a client secret. Copy the Client id and the secret now — Xero shows a new secret once.
http instead of
https.We request three scopes and nothing else: offline_access (so the connection
survives without sending you back to Xero every half hour),
accounting.transactions and accounting.contacts. No payroll, no bank
feeds, no read of your wider ledger.
4. Pasting the credentials
- Settings → Accounting, on the Xero row.
- Open Connect with your own Xero app.
- Paste the Client ID and Client secret, then Save credentials.
The secret is encrypted before it is stored and never shown again — the field goes blank and reads stored — type to replace. That's expected. To rotate it later, type the new one over the top; you don't need the old one.
Changing the client ID means connecting as a different application, so any existing connection has to be re-made and Dispatch Pro will say so. Rotating only the secret keeps the connection — Xero issued it to the id.
5. Connecting
- Press Connect on the Xero row.
- Xero asks you to sign in and pick the organisation to authorize. Choose carefully if you have more than one — that's the organisation the invoices land in.
- Allow access. You come back to Settings and the row reads connected.
Xero doesn't tell us which organisation you picked as part of the sign-in, so immediately afterwards we ask Xero directly and record it. If you authorize with no organisation selected, the connection is refused rather than saved pointing at nothing.
6. Tax rate and revenue account
Once connected the row grows two required fields. Fill both and press Save codes.
| Field | What to enter |
|---|---|
| Tax code in Xero | Your Xero tax type — the code, not the display name. For most BC carriers that's your GST-on-income type. |
| Revenue account in Xero | The account code from your chart of accounts that haulage revenue posts to — typically a four-digit sales code. |
7. Pushing an invoice
Raise the invoice as usual (Invoices tab), then push it. The status sits on the invoice:
| Status | Meaning |
|---|---|
| queued | Accepted, waiting its turn. Retries on its own. |
| needs customer | We couldn't be sure which Xero contact this is. See §8. |
| pushed | It's in Xero, with Xero's own id recorded here. |
| failed | Xero refused it. Xero's own reason is shown on the invoice. |
An invoice can only land once. Before creating anything we ask Xero whether an invoice with that number already exists — so a retry after a timeout or a dropped connection cannot mint a duplicate in your books.
8. Matching contacts
The first time you invoice a given customer we look for them in Xero by name. One obvious match is used. Several, or none, and the push stops at needs customer and asks you to pick — or to create the contact — rather than guessing. Your choice is remembered, so it's a once-per-customer question.
9. When it stops working
| What you see | What to do |
|---|---|
| connection expired — reconnect | Xero's permission lapsed — it does after 60 days without a push, or if someone disconnected us in Xero. Press Connect again. Nothing is lost. |
| not switched on here | Ours to enable, not yours. Ask us where it stands. |
| A push failed mentioning tax or account | The tax type or account code doesn't match one in Xero. Check both against Xero's own settings (§6). |
| The Xero screen errors on redirect | Redirect URI mismatch — see the note in §3. |
| Invoices land in the wrong organisation | You authorized a different one. Disconnect, reconnect, and pick carefully. |
10. Disconnecting
Disconnect stops further pushes immediately. It does not reach into Xero — invoices already pushed are yours and stay where they are. You can reconnect later.
You can also revoke Dispatch Pro from inside Xero; we'll show the connection as needing a reconnect the next time we try to use it.
Removing your app credentials deletes the stored secret. What we keep either way is the record of when the connection was made, changed, removed, and used — see Terms §15 and the Privacy Policy.