Connecting Sage Intacct
Last updated: October 6, 2026
Stackpack supports a read-only integration with Sage Intacct that pulls vendor spend transactions into Stackpack. This builds your vendor list automatically and keeps each vendor's spend history current. Stackpack never writes to your Sage Intacct company.
For what Stackpack keeps from your accounting system, and what it does not, see What Stackpack stores from your accounting system.
Authentication
Stackpack offers two ways to authenticate with Sage Intacct. Both are read-only.
Option 1: Business User (OAuth 2.0)
You sign in to Sage Intacct as a Business User with admin privileges and authorize Stackpack. Sage Intacct issues Stackpack a token scoped to your company; Stackpack never sees your password.
Requirements
A Sage Intacct Business User with admin privileges, and that user's email and password to complete the Sage Intacct sign-in.
Caveats
The connection is tied to that Business User. If the user is removed from Sage Intacct or loses admin privileges, the profile stops syncing and must be reconnected by another admin.
Option 2: Web Services user (client credentials)
You create a dedicated Web Services user in Sage Intacct with a read-only role, authorize Stackpack's Sender ID, and give Stackpack the Web Services username. Stackpack authenticates directly with that user. This method is not tied to any person's account, but it requires setup inside Sage Intacct.
Requirements
Authorize Stackpack as a Web Service. Go to Company → Setup → Company → Security → Edit → Web Services Authorizations → Add and enter Stackpack's Sender ID:
StackpackMPP.Create a read-only role (for example
stackpack-role) under Company → Admin → Roles with the following List and View permissions:Module
Permissions (List, View)
Cash Management
Credit card transactions
Company
Class; Departments; Department groups; Entities; Locations; Location groups; Channel; Channel groups; Inter-entity account mapping (View only)
General Ledger
Journal entries; User-defined journal entries; Accounts; Account groups; Journals; User-defined journals; Recurring journal entries
Accounts Payable
Vendors; Vendor types; Vendor groups; Bills; Recurring bills; Payment requests; Posted payments
Expenses
My expenses; Employees
Create a Web Services user under Company → Admin → Web Services users and assign the role. The user should be a Business User. Admin access is not required, though some companies need Admin Full for the API to return all objects. Do not use Admin Limited.
Note the username in the form
userId@companyId(for examplestackpack-user@YourCompanyId). You will enter it in Stackpack.
For more on Web Services users, see Sage's documentation: https://www.intacct.com/ia/docs/en_ZA/help_action/Administration/Users/web-services-only-users.htm
Caveats
If the Web Services user is deactivated or its role loses a permission, the profile stops syncing until the user is restored and the profile is reconnected.
Caveats for both methods
Stackpack currently operates in USD. Amounts are read as recorded on each Sage Intacct transaction and are not converted, so companies with non-USD transactions will see those amounts summed as-is. Multi-currency support is on our roadmap.
Stackpack reads Sage Intacct Departments as Departments and Locations (entities) as Locations. Populating Stackpack Departments from Sage Intacct is enabled by a switch on your account; Classes can also be used to populate Departments. Ask your Stackpack contact to enable either.
Multi-entity companies: Stackpack authenticates at the top level and then into each entity it can access, walking the entity hierarchy. Entities the connecting user cannot access are skipped and logged; the rest of the sync continues.
Connecting
During onboarding
On the "Sync with Sage Intacct" step, click either Connect as a Business User or Connect with a Web Services user.
Business User: sign in to Sage Intacct and authorize Stackpack. Web Services user: enter the
userId@companyIdusername and click Connect.You are returned to Stackpack and the first sync starts immediately.
From Company Settings
Go to Company Settings → Integrations → Sage Intacct and click Connect (or Add integration if a profile already exists).
Enter a name for the profile. To use a Web Services user, expand Specify a Web Services username and enter
userId@companyId. Leave it blank to use the Business User sign-in.Click Connect and complete the Sage Intacct sign-in if prompted.
Reconnecting re-runs the authentication for an existing profile and restores syncing without changing any synced data. Use it when Stackpack reports the profile needs attention.
Disconnecting revokes Stackpack's token with Sage Intacct (Business User connections) and removes the profile. Web Services connections have no token to revoke; you may also deactivate the Web Services user in Sage Intacct.
Sync schedule and window
The first sync runs when you connect. After that, Stackpack currently syncs Sage Intacct automatically once a week, on Sunday. Sage Intacct queries are metered, so the weekly cadence keeps API usage low.
Stackpack retains spend for the current calendar year plus the two prior calendar years. (During January through March, one additional prior year is retained so year-over-year comparisons remain available.)
Each sync re-reads the months since the previous sync, and the prior quarter is fully refreshed at the start of each new quarter. Late payments, edits, and reversals are therefore picked up and applied to the month of the original transaction date.
What Stackpack reads from Sage Intacct
Reference lists, per entity: Vendors, Chart of Accounts, Classes, Departments, and Locations (entities).
Transactions, filtered by date. Stackpack records one entry per transaction line, so a bill split across three accounts produces three entries.
Sage Intacct transaction | Included when | Recorded as | Notes |
|---|---|---|---|
AP Payment (Posted payments) | Paid date falls in the sync window | Payment | Default source of bill spend. Dated by the paid date. The GL account, department, class, and location come from the bill line the payment settled. |
Credit card transaction (Cash Management) | State is Posted, Paid, or Partially Paid, and the transaction has not been reversed | Credit Card | Dated by the transaction date. Can be turned off per profile. |
Employee expense | State is Approved | Expense | Dated by the line's entry date. |
Journal entry (General Ledger module) | The line has a vendor | Journal Entry (Debit or Credit) | Tracked separately as accrual spend. Journal entries from other modules (AP, AR, and so on) are not read, since their source transactions are read directly. |
Bill (alternative mode) | The bill is not on hold | Bill | Used instead of AP Payments when your account is configured for bill-based spend. Dated by the bill's created date. |
By default Stackpack reads AP Payments rather than Bills, so spend reflects cash out the door. Your Stackpack contact can switch your account to bill-based spend if you prefer to see spend when the bill is entered; in that mode Payments, credit card transactions, expenses, and journal entries are not read.
How the vendor is determined. Stackpack uses the vendor dimension on the line. If it is blank, Stackpack falls back to a custom transaction field named SERVICE_PROVIDER when your company defines one, matching its value to a Vendor by name. For payments and bills, the header vendor is the final fallback. If your company records the vendor in a different custom field, let us know during onboarding so Stackpack can read that field instead.
Line-level exclusions. A line is skipped when any of the following is true:
It has no transaction date.
It has no vendor (after the fallbacks above).
Its amount is zero.
Its GL account is on the profile's excluded GL account list, if your Stackpack administrator has configured one.
Unlike some other integrations, Stackpack does not filter Sage Intacct lines by account type. Use the excluded GL account list to remove accounts such as payroll or tax from spend.
Fields captured per transaction line
Field | Sage Intacct source |
|---|---|
Transaction ID | Line ID (payment ID for AP Payments) |
Date | Payment: paid date. Credit card: transaction date. Expense and journal entry: line entry date, falling back to the header date. Bill: line created date, falling back to the bill's created date. |
Amount | Payment: total paid in the transaction currency, falling back to total amount, then base-currency totals. Others: line transaction amount, falling back to the base amount. Journal entries use the base amount. |
Currency | Transaction currency, falling back to base currency (journal entries: base currency first) |
Type | Payment, Credit Card, Expense, Journal Entry (Debit or Credit), or Bill |
Accrual | Set for Journal Entry lines only |
Memo | Header description, then bill number or memo, then line memo or "paid for", joined with |
Account category | The GL account's Category |
Account ID and name | GL account on the line (for payments, from the paid bill line) |
Class ID and name | Class dimension on the line |
Department ID and name | Department dimension on the line |
Location ID and name | Location dimension on the line, falling back to the entity being read |
Vendor ID and name | Vendor (see "How the vendor is determined") |
How transactions become vendor spend
Stackpack groups the captured lines by vendor, matching on the Sage Intacct Vendor ID. If a vendor was recovered from the custom field by name only, Stackpack matches by name. Within each vendor, lines are grouped by the calendar month of their date. Each vendor then carries a monthly spend time series, one bucket per month, with:
Monthly spend field | Derived from |
|---|---|
Year and month | The transaction date's calendar month |
Amount | Sum of Payment, Credit Card, and Expense (or Bill) line amounts for that month |
Transaction count | Number of those lines in that month |
Accrual amount | Sum of Journal Entry debits to the vendor, offset by Journal Entry credits |
Alongside the time series, each vendor records the GL accounts and locations its transactions posted to (each with a line count), the earliest month with spend in the retained window, and the most recent month with spend. When the Department or Class switch is enabled, the vendor also records the Departments or Classes it posted to, and Stackpack keeps a per-department monthly spend series keyed on the Department name, falling back to the Class name when no Department is set.
Spend views in Stackpack use Amount by default. If accrual-based spend is enabled for your company, vendors that have Journal Entry activity show Amount + Accrual amount, and vendors without any Journal Entry activity continue to show Amount.
Monthly buckets older than the retention window are dropped on each sync. Buckets inside the window are replaced by the latest sync, so corrections in Sage Intacct flow through rather than accumulate.
Frequently asked questions
Q: What does the Sage Intacct integration involve, and what information does Stackpack pull from Sage Intacct?
You authorize Stackpack either as a Business User (sign in and approve) or with a dedicated read-only Web Services user. From then on Stackpack reads, once a week, your vendor-spend transactions: AP Payments, posted credit card transactions, approved employee expenses, and General Ledger journal entries that name a vendor. It also reads your Vendors, Chart of Accounts, Classes, Departments, and Locations to label those transactions, across every entity it can access. Stackpack keeps the current year plus two prior years and never writes to Sage Intacct.
Q: Which specific data points or fields are required for the integration?
Each transaction line needs a date, a vendor, a non-zero amount, and a GL account. Lines missing any of these are skipped. The vendor can come from the line's vendor dimension, a SERVICE_PROVIDER custom field, or (for payments and bills) the header vendor. Department, Class, Location, description, and memo are optional and enrich the vendor record when present.
Q: Are there any data or configuration prerequisites we should validate before starting the trial?
For the Business User method: the connecting user is a Business User with admin privileges, and you accept that the connection depends on that user remaining active.
For the Web Services method: Stackpack's Sender ID
StackpackMPPis authorized, the role has the List and View permissions in the table above, and the Web Services user is a Business User (not Admin Limited).Vendor spend is recorded against Vendor records, and the vendor dimension is populated on payment, credit card, and expense lines. Where it is not, a
SERVICE_PROVIDERcustom field with the vendor name lets Stackpack recover the vendor.Bills you want counted have been paid, since Stackpack reads AP Payments by default. Ask your Stackpack contact about bill-based spend if you want spend recognized when bills are entered.
Credit card transactions are posted (not draft) if you want them included.
If you want Departments in Stackpack, Department (or Class) dimensions are used on transactions and you have asked Stackpack to enable the matching switch.
Your books are in USD. Non-USD transactions are summed without conversion.
Q: Which authentication method should we choose?
The Business User method is faster to set up and needs no Sage Intacct configuration, but it stops working if that user leaves or loses admin rights. The Web Services method takes about fifteen minutes of setup in Sage Intacct and is independent of any individual. Most customers who plan to use Stackpack long term choose the Web Services method.
Q: Why does spend appear in the month of payment rather than the month of the bill?
By default Stackpack reads AP Payments, dated by their paid date, so spend reflects when cash left the company. If you prefer spend recognized when the bill is entered, ask your Stackpack contact to switch your account to bill-based spend.
Q: We have many entities. Do we need to connect each one?
No. Connect once at the top level. Stackpack walks the entity hierarchy and reads each entity the connecting user can access. Entities the user cannot access are skipped, so make sure the Business User or Web Services user has access to every entity whose spend you want.
Q: Can we exclude credit card transactions?
Yes. Each profile has an Import credit card transactions switch that your Stackpack administrator can turn off.
Q: Can we exclude certain GL accounts, such as payroll or taxes?
Yes. Your Stackpack administrator can set an excluded GL account list per profile, by account number or name. Lines posted to those accounts are skipped on the next sync.
Q: Why is a vendor's spend different in Stackpack than in Sage Intacct?
The usual causes are unpaid bills (not yet a payment), lines with no vendor dimension and no SERVICE_PROVIDER value, draft or reversed credit card transactions, unapproved expenses, entities the connecting user cannot access, and accounts on your excluded GL account list. Spend is also dated by the payment date, so a bill entered in one month and paid in the next appears in the payment month.