← Dispatch Pro

Connecting Sage Accounting

Push your finished invoices straight into your own books — dispatcher guide · QuickBooks · Xero

1. Which Sage this is

Sage Accounting — the cloud product. "Sage" is several different products with different APIs: Sage Accounting, Sage 50, Sage 200, Sage Intacct. They are not interchangeable and this connection works with Sage Accounting only. If you sign in at accounting.sage.com, this is you. If you run Sage 50 on a desktop, it isn't — tell us and we'll say where that stands.

2. What the connection does

When you raise an invoice in Dispatch Pro, you can push it into Sage instead of retyping it. That's the whole feature.

What crossesDirection
Invoices you raised here — reference, date, lines, tax, totalDispatch Pro → Sage
The contact needed to hang that invoice onDispatch Pro → Sage
Anything at all from your booksNever.

Push only. We do not sync, reconcile, or read your ledger. Nothing moves until you connect and press push on a specific invoice.

If the Sage row in Settings → Accounting is greyed out, that switch is ours rather than yours — ask us where it stands.

3. What you need first

4. Registering your Sage app

Sage 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.

  1. Sign in at developer.sage.com and open the app registry for Sage Accounting.
  2. Create an app and name it something your team will recognise on a consent screen.
  3. Add this Callback URL exactly:

    https://app.pinnaclegrove.ca/auth/accounting/callback

    Sage requires https:// and matches the callback exactly against what we send. The Accounting card in Settings shows the same URL for whichever address you're signed in to — copy it from there if it differs.
  4. Save, then reveal the Client ID and Client Secret with the Show control beside each field and copy both.
The mismatch that catches everyone. If the Callback URL in Sage isn't identical to the one above, the connection fails at the last step with a Sage error rather than a Dispatch Pro one. It's almost always a trailing slash.

5. Pasting the credentials

  1. Settings → Accounting, on the Sage Accounting row.
  2. Open Connect with your own Sage Accounting app.
  3. 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.

We never ask for your Sage username or password, and you should never give them to anyone who does. What you paste here identifies an application you created. On its own it cannot reach your books: the permission comes from you approving it on Sage's screen, and you can withdraw it in Sage at any time.

6. Connecting

  1. Press Connect on the Sage Accounting row.
  2. Sage asks you to sign in and approve. If you have more than one business, pick carefully — that's the one the invoices land in.
  3. Allow access. You come back to Settings and the row reads connected.

Sage doesn't name the business as part of the sign-in, so immediately afterwards we ask Sage directly and record it. If no business comes back, the connection is refused rather than saved pointing at nothing.

7. Tax rate and ledger account

Once connected the row grows two required fields. Fill both and press Save codes.

FieldWhat to enter
Tax code in Sage AccountingYour Sage tax rate id — the id the API uses, not the display name.
Revenue account in Sage AccountingThe ledger account id that haulage revenue posts to.
Neither is guessed. Sage posts every invoice line to a ledger account at a tax rate. Dispatch Pro has no built-in rate and will not pick an account in your chart of accounts — a push with either missing is refused rather than sent somewhere wrong. Your bookkeeper can read both ids out of Sage in a minute; ask us if you'd rather we walked through it with you.

8. Pushing an invoice

Raise the invoice as usual (Invoices tab), then push it. The status sits on the invoice:

StatusMeaning
queuedAccepted, waiting its turn. Retries on its own.
needs customerWe couldn't be sure which Sage contact this is. See §9.
pushedIt's in Sage, with Sage's own id recorded here.
failedSage refused it. Sage's own reason is shown on the invoice.

An invoice can only land once. Before creating anything we search Sage for an invoice carrying that reference and confirm it matches exactly — so a retry after a timeout cannot mint a duplicate, and INV-7 is never mistaken for INV-70.

Sage access tokens last five minutes. That is normal and handled: a push that arrives on a stale token refreshes and retries by itself. You will not see it.

9. Matching contacts

The first time you invoice a given customer we search your Sage customers 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.

10. When it stops working

What you seeWhat to do
connection expired — reconnectSage's permission lapsed — refresh tokens last about 31 days without use, and someone may have revoked us in Sage. Press Connect again. Nothing is lost.
not switched on hereOurs to enable, not yours. Ask us where it stands.
A push failed mentioning tax or ledgerThe tax rate id or ledger account id doesn't match one in Sage. Check both against Sage's own settings (§7).
The Sage screen errors on redirectCallback URL mismatch — see the note in §4.
Invoices land in the wrong businessYou authorized a different one. Disconnect, reconnect, and pick carefully.

11. Disconnecting

Disconnect stops further pushes immediately. It does not reach into Sage — invoices already pushed are yours and stay where they are. You can reconnect later.

You can also revoke Dispatch Pro from inside Sage; 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.