Skip to content
SystemSyncer
Menu

ERP integration · Shopify + Sage Intacct

Shopify Sage Intacct Integration: REST API, OAuth, and Financial Posting

How to connect Shopify to Sage Intacct — the REST API and OAuth 2.0, the legacy XML API, summary vs. detailed posting, dimensions, payout reconciliation, and sales tax.

Last reviewed:
Reading time
3 min read

Part 7 of 8: Your store with a specific ERP

Short answer

Sage Intacct is primarily a financial system, so a Shopify integration is mostly about posting sales, refunds, fees, and tax correctly — often as daily or per-payout summaries tagged with Intacct dimensions — rather than running fulfillment. Sage recommends its REST API for new client applications; the XML API keeps working, but new objects and features are released only on REST. The REST API uses OAuth 2.0, and Sage documents authorization code, client credentials, and PKCE flows. Reconcile Shopify Payments payouts through a clearing account, post tax as calculated at checkout, and involve your Intacct partner and controller in the posting design before building.

Sage Intacct integration surface at a glance (documented by the vendor; see sources)

Recommended API
Sage recommends the REST API for client applications; new objects and features are released only on REST.
Legacy API
The XML API continues to be supported and existing integrations keep working.
Authentication
REST API uses OAuth 2.0; Sage documents authorization code, client credentials, and PKCE flows.
Sender ID
A web services sender ID must be authorized by the company (Company Security) or approved by an admin.
Data flow Typical Shopify–Sage Intacct flows
  1. Shopify Orders
  2. Sync service Summarize
  3. Sage Intacct AR

Sage Intacct is a cloud financial management system popular with US mid-market companies, including many direct-to-consumer brands that outgrew QuickBooks. Unlike ERPs that run the warehouse, Intacct usually sits at the end of the chain: Shopify (or an order management system and a 3PL) handles orders and fulfillment, and Intacct needs accurate revenue, receivables, cash, fees, and tax. The integration design is therefore mostly a posting design. As on every page, documented marks statements from Sage or Shopify documentation, and recommendation marks our guidance. Nothing here is accounting or tax advice.

REST, XML, and authentication

Documented: Sage Intacct recommends the REST API for client applications. The XML API continues to be supported and existing integrations keep working, but all new objects and features are released using the REST API.

Documented: the REST API uses OAuth 2.0. Sage documents the authorization code grant, the client credentials grant, and PKCE for public clients. A web services sender ID must be authorized by the company — added on the Company Security settings or approved by an admin during OAuth authorization.

Recommendation: build new integrations on REST. Use a dedicated integration user with only the permissions the postings need, store refresh tokens securely, and alert when authorization is revoked. If you inherit an XML-based connector, it will keep working, but new Intacct capabilities will arrive on REST.

Decide the posting design first

Approach What Intacct receives Fits
Daily or per-payout summary Summarized sales, discounts, shipping, tax, refunds, and fees per day or payout, with dimensions High-volume D2C; Shopify keeps order detail
Per-order AR An invoice (or sales document) per order, with payments applied B2B orders on terms; low volume
Hybrid Summaries for card-paid D2C, per-order invoices for wholesale Blended D2C and B2B stores

Recommendation: agree the design with your controller and Intacct partner before choosing a connector or writing code. Decide:

  • Dimensions every posting carries (channel, store, location, department, class).
  • Accounts for sales, discounts, shipping income, tax liability by jurisdiction, merchant fees, refunds, and the Shopify clearing account.
  • Timing: post by order date, ship date, or payout date — this decides which period revenue lands in.

Payout reconciliation

Documented (Shopify): Shopify Payments balance transactions record each charge, refund, adjustment, and payout with gross amount, fee, and net, and are associated with the payout that settled them.

Recommendation: post payments into a clearing (undeposited funds) account, then post each payout as a deposit that clears them and books fees, refunds, and chargebacks to their own accounts. The clearing account should return to near zero after each payout. See reconciling Shopify payouts.

Sales tax

Recommendation: post the sales tax Shopify or your tax engine calculated at checkout, by jurisdiction, rather than recalculating it in Intacct. Keep marketplace-collected tax out of your own liability. See sales tax in ERP integrations.

Refunds and adjustments

Recommendation: refunds reverse sales, tax, and shipping in the same dimensions and accounts as the original posting. In a summary design, refunds get their own lines in the day’s (or payout’s) summary rather than being netted against sales. Chargebacks and dispute fees are booked when they appear in the payout data.

Idempotency and audit

Recommendation: every posting carries a deterministic reference — the payout ID for payout postings, the date and store for daily summaries, the Shopify order ID for per-order documents — and the integration checks for an existing posting with that reference before creating one. Keep the source data behind each summary so auditors can trace any line back to orders and payout transactions.

Common pitfalls

  • Posting every order when finance only needed summaries, creating noise and API load.
  • Missing dimensions that make channel or location reporting impossible later.
  • Fees never booked, so revenue and cash are overstated.
  • Tax recalculated in Intacct, creating differences from what customers paid.
  • Reposted summaries after a retry because postings had no deterministic reference.

Frequently asked questions

Should a new Shopify–Sage Intacct integration use the REST or XML API?

REST. Sage recommends the REST API for client applications and releases new objects and features only on REST. The XML API remains supported, so existing integrations keep working, but new development should start on REST with OAuth 2.0.

Should every Shopify order be posted to Sage Intacct?

Often not. Intacct is usually the system of record for finance, not fulfillment. Many companies post daily or per-payout summaries — sales, discounts, shipping, tax, refunds, fees — tagged with dimensions such as channel, location, or department, and keep order-level detail in Shopify or an order management system. Agree the approach with your controller.

How do Shopify payouts reconcile in Sage Intacct?

Record payments into a clearing (undeposited funds) account and post each Shopify Payments payout as a deposit that clears those payments and books processing fees, refunds, and chargebacks separately. The clearing account should return to near zero after each payout.

What are Sage Intacct dimensions used for in an ecommerce integration?

Dimensions tag transactions for reporting — for example by sales channel, store, location, or department. Deciding which dimensions every Shopify posting carries is part of the mapping design, because adding them later means reposting or living with incomplete reports.

Sources and further reading

Platform-specific statements on this page were checked against these sources on . Vendor APIs change; confirm details in the current documentation before you build.

  1. [1] Sage Intacct Developer (API overview and release notes) — Sage Intacct
  2. [2] OAuth 2.0 authorization (REST API) — Sage Developer
  3. [3] Sage Intacct REST API reference — Sage Developer
  4. [4] ShopifyPaymentsBalanceTransaction (GraphQL Admin API) — Shopify