User Manual
Help Center/User Manual/Connect Sage Intacct: sync customers, invoices, and products

Connect Sage Intacct: sync customers, invoices, and products

Last updated 2026-11-01

Get a Client ID and Client Secret in the Sage Developer Portal, authorize a dedicated Web Services user, paste the values into Integration, test, map, and activate — customers, invoices, and products sync both ways.

The Sage Intacct connector syncs customers, invoices, and products between Sage Intacct and your system in both directions: you can pull each of them in and push each of them back out. Sales orders and inventory are not part of this connection today — what you can sync now is customers, invoices, and products. One detail matters from the start: the credentials are tied to a dedicated Web Services integration user, and signing in to the web interface with that user will invalidate the token (REST-2102).

Sage Intacct connection steps: credentials first, then test, then mapping, then activate.

Prerequisites#

  • A Sage Intacct company, plus an app in the Sage Developer Portal for that company.
  • A dedicated Web Services integration user, explicitly authorized in the company configuration. Use a user created only for this connection — not a person’s everyday sign-in.
  • Never sign in to the Sage Intacct web interface with that integration user. Doing so invalidates the token and later syncs fail with REST-2102.
  • If your company uses multiple entities, have the Entity ID ready — you will enter it in the company_id field. Single-entity companies can leave that field empty.

Get your credentials#

  1. Go to Sage Developer Portal → your app, and copy the Client ID shown there.
  2. In the same place, copy the Client Secret. The secret is shown only once — save it somewhere safe before you leave the page.
  3. Make sure these client credentials are bound to the Web Services user that is explicitly authorized in your Sage Intacct company configuration. Authorize your dedicated integration user there — the token step will be rejected if the app is not authorized in the company Web Services setup.
The number one pitfall for this connection: someone signs in to the web interface with the integration user, the token stops working, and syncs start failing with REST-2102. Keep that user for the connection only.

Fill it into Integration#

  1. Open Integration, create a new connection, and pick Sage Intacct. The form has the three fields below — fill them in this order.
  2. client_id (Client ID) — required, a text field. Paste the Client ID you copied from Sage Developer Portal → your app.
  3. client_secret (Client Secret) — required, a password field. Paste the Client Secret from the same app page. It is stored as a secret and is not shown back after you save.
  4. company_id (Company ID (optional)) — optional, a text field, for example mycompany. Fill it only if you work with multiple entities: enter the Entity ID here. Company ID and Entity ID in this form are the same value — there is no separate entity field, and single-entity companies leave this empty.
  5. There is no server address field to fill in. The connection always uses the Sage Intacct REST API v1 address https://api.intacct.com/ia/api/v1.

Test the connection#

Click Test connection and the system runs two steps for real. Step one: it exchanges your Client ID and Client Secret for a token at the Sage Intacct token address (POST https://api.intacct.com/ia/api/v1/oauth2/token). If either required field is empty, the test stops right away with MISSING_CLIENT_SECRET and sends no request at all. If Sage Intacct answers 401 in this step, the result is INVALID_CREDENTIALS — the values are wrong, or the app is not authorized in the company Web Services setup.

Step two: with that token, the system runs a small probe through the query service (POST /services/core/query) asking for one customer — object customer, fields id and name, size 1. A 200 answer means the connection works end to end. If the probe answers 401, the result is INVALID_TOKEN, and the message carries the REST-2102 reminder: signing in to the web interface with the authorized user invalidates the token. The test waits up to 12 seconds before it reports a timeout.

Mapping / pick a template#

Map the three object types this connection carries: customers, invoices (the arinvoice object in Sage Intacct), and products. For each type, pair the Sage Intacct fields with the fields on your side — at minimum the record id and name — and check the preview with one real record before you activate. If you filled company_id, confirm the records in the preview belong to that entity.

What this connection can and cannot do today: customers, invoices, and products can be pulled in and pushed out. Sales orders and inventory cannot be synced through this connection yet, so do not build a flow that expects orders or stock levels from Sage Intacct here.
Sage Intacct round-trip: token first, one-customer probe, then customers, invoices, and products both ways.

Activate#

After activation, the flows you enabled sync customers, invoices, and products between Sage Intacct and your system: new and changed records are pulled in, and records you create or update on your side are pushed back to Sage Intacct. Watch the first runs in Runs / Logs. If syncs suddenly start failing with REST-2102, do not change the mapping first — check whether anyone signed in to the web interface with the integration user, get a fresh token issued, and make sure that user stays out of the web interface.

FAQ#

Sync suddenly fails with REST-2102, or the test returns INVALID_TOKEN

The token has been invalidated. The usual cause is that someone signed in to the Sage Intacct web interface with the authorized Web Services integration user — that sign-in invalidates the token this connection relies on.

Get a fresh token issued for the connection, test again, and keep that integration user out of the web interface for good — it should exist only for this connection.

Test returns INVALID_CREDENTIALS (401 when getting the token)

Either the Client ID or Client Secret you pasted is wrong, or the app is not authorized in the Web Services setup of your Sage Intacct company — Sage Intacct rejects the token request in both cases.

Re-copy both values from Sage Developer Portal → your app (the secret is shown only once, so use the copy you saved), paste them again without extra spaces, and confirm in the company configuration that the app is authorized for your dedicated Web Services user. Then test again.

Test returns MISSING_CLIENT_SECRET

One of the two required fields — client_id or client_secret — is empty in the connection form. The test checks this first and sends no request to Sage Intacct until both are filled.

Fill both client_id and client_secret with the values from Sage Developer Portal → your app, save, and run the test again.

Sales orders or inventory do not come through

This is not a mapping mistake. This connection syncs customers, invoices, and products only — sales orders and inventory are not carried by it, so nothing arrives for those two types no matter how the mapping is set.

Limit your flows on this connection to customers, invoices, and products, and handle sales orders and inventory through your other existing process for now.