Sage Intacct Integration
BuildOps and Sage Intacct integrate through a one-way sync, from BuildOps to Intacct. BuildOps is the system of record — master data (Customers, Vendors, Items, Jobs/Projects) and transactions (PO Receipts, Invoices, Payments, Adjustments, Inventory) flow from BuildOps out to Intacct via API when a user takes an action (Save, Post, or Export).
Setup Subscriptions – Web Services
1. Setup Cloud Elements Web Services User
Email: [email protected]
Enable Web Services for the company in Intacct.
Create the web services user with full/"All" admin permissions, and assign it a custom "BuildOps" role with "All" permissions on required activities and lists.
Notify your BuildOps Implementation Manager after creating the Web Services User.
2. Setup BuildOps Sender ID in Web Services Authorizations
Add "BuildOpsMPP" as an active, authorized Web Services Authorization Sender ID.
3. Setup BUILDOPSLINK Custom Field
Create a custom Text field on the AP Bill Detail object — Field ID
BUILDOPSLINK, Label "BuildOps Link", Length 100. This field stores the BuildOps reference ID for Purchase Order lines, which is what lets BuildOps reconcile updates between the two systems (for example, cost changes made on the Intacct bill reading back correctly to the linked BuildOps AP Bill).A second BUILDOPSLINK custom field (same settings) is also required on the Purchase Order Transactions Detail object, linked to the Purchase Order-BuildOps, Vendor Invoice, and PO-BuildOps-Inventory document types.
Also required
Enable Subscriptions for: Accounts Payable, Accounts Receivable, General Ledger, Purchasing, Order Entry, and Projects.
Document Sequences: create and apply unique document numbering sequences for Customers and Vendors.
Project Integration
Determine if you will be syncing Projects to Intacct.
If syncing Projects, set up these Project Types: Projects, Service Jobs, Service Agreements.
BuildOps creates a unique Intacct Project per Service Job, Project, and Service Agreement, each under its own Project Type, so they can be reported on separately.
Jobs/Projects will post to Projects when Invoices are posted from BuildOps to Intacct.
Dimensions Setup
Specify the level where Master Files will reside and where transactions will be posted.
Define which Dimensions (Class, Department, Location, Entity) will be used.
Entity is set once at the connector/customer level, not per line item. Class, Department, and Location are the dimensions that encode at the line-item level.
Journal Entry for WIP Report
Decide if you will sync the WIP Report as a Journal Entry to Intacct.
If using WIP, add a new Journal Symbol in Intacct: Navigate to General Ledger → Journal Entries → click Add from the Journal dropdown → create a new symbol "WIP".
How WIP recognition works (jobs only — not Projects or Service Agreements):
Initial posting: PO Receipts and AR Invoices post to temporary WIP expense/revenue accounts in Intacct.
Recognition: clicking "Recognize WIP" in BuildOps generates journal entries moving the balances from the WIP accounts to final COGS/Income accounts.
Partial recognition is not supported — once recognized, documents become read-only.
Transaction Definitions
1. Purchase Order Receipt in BuildOps → Purchase Orders in Intacct
Set up a Transaction Definition in Intacct's Purchasing Module:
Name: Purchase Order-BuildOps
Set to Non-Posting if using the standard Receipt to Purchase Order flow. Set to Posting if needed.
Enable Subtotal and configure a line for Purchase Tax with a GL Account.
Ensure decimal places are set to 5 at Purchasing → Setup tab → Configuration.
2. Invoice in BuildOps → Sales Invoice in Intacct
Set up a Transaction Definition in Intacct's Order Entry Module:
Name: Sales Invoice-BuildOps
Enable Subtotal and configure a line for Sales Tax.
Define GL Mappings in the Posting Configuration.
Set up a Numbering Sequence if you want separate numbering for BuildOps.
Data Syncing Between Sage Intacct & BuildOps
Data Read from Sage Intacct
GL Accounts
Item GL Groups
Class, Dimensions (Department, Location, Entity)
Payment Methods (hardcoded per Intacct)
Data Entered in BuildOps Accounting Settings
Payment Types
Printed Check
Cash
EFT
Credit Card
Online, Online Charge Card, Online ACH Debit (requires additional setup in Intacct)
Payment type names must exactly match Sage Intacct's list and be case-sensitive; mismatches may cause syncing issues.
Adjustment Types
Invoice Adjustment
Overpayment/Refund to Customer
Refund
Customers Syncing Between BuildOps & Intacct
BuildOps Field | Intacct Field |
Customer Name | Name |
Customer Status | Status |
Customer Billing Address Line 1 | Address 1 |
Customer Billing Address Line 2 | Address 2 |
Customer Billing Address City | City |
Customer Billing Address State | State |
Customer Billing Address Zip Code | Zip Code |
Customer Phone | Primary Phone |
Customer Email | Email Address |
Payment Terms | Terms |
Note: BuildOps requires Customer Address (Addr1, City, State, Zip Code & Email) for proper syncing.
Items Syncing Between BuildOps & Intacct
BuildOps Field | Intacct Field |
Item Name | Name |
Product Code (Required) | Item ID |
GL Group | Item GL Group |
Item Requirements:
Item Name cannot exceed 100 characters.
Product Code cannot exceed 30 characters (no trailing spaces or special symbols).
Special characters are not permitted in item names — alphanumeric characters and standard spacing only.
UOM (Unit of Measure) is required. If unknown, select Each.
Item GL Group must be selected.
Product Code cannot be changed after creation (Intacct limitation).
BuildOps always sends items to Intacct as Non-Inventory Items, even for customer using BuildOps' own Inventory module.
Vendors Syncing Between BuildOps & Intacct
BuildOps Field | Intacct Field |
Vendor Name | Name |
Vendor Status | Status |
Vendor Type | Type |
Vendor Address | Mail Address |
Vendor Notes | Comments |
Vendor Primary Contact | Contact Info |
Vendor Email | Email Address |
Notes:
BuildOps writes to Vendor records.
Vendor Contact & Email are required in BuildOps.
If a remittance address is different from the pickup address, ensure the correct setup for vendors in Intacct — BuildOps only stores one address per vendor and sends the pickup address.
How vendor sync works: The vendor RefID is BuildOps's pointer to the matching Intacct vendor record — it tells the integration whether to update an existing vendor or create a new one. Clearing or editing the RefID doesn't cause an error; it just makes the next sync treat the vendor as never-synced, which creates a duplicate vendor in Intacct. To stop a vendor (and its receipts) from syncing, use the Bypass/exclude-from-sync status or archive the vendor — don't edit the RefID to try to suppress a sync.
Sales Tax Syncing
Sales Tax Rates cannot be imported from Intacct.
Sales Tax Rates must be manually set up in BuildOps.
Sales Tax will be calculated in BuildOps and sent as a single amount to Intacct.
Receipts as PO
PO Receipts in BuildOps → Purchase Orders in Intacct.
AP Bill is entered in Intacct and syncs back to BuildOps.
AP Bill updates in BuildOps if information changes in Intacct.
If a synced AP Bill line from Intacct doesn't include its own description, BuildOps looks for a description on the linked Receipt or PO line before falling back to the generic catalog description. This runs automatically on every Bill sync or re-sync, but existing invoices generated before a bill line is corrected won't update retroactively — you'll need to regenerate the invoice after the corrected bill line syncs.
Once a receipt is posted or exported, it can no longer be deleted — use Void Receipt and recreate it if needed. Depending on the integration, voiding a receipt either sends a reversal entry or deletes it in the accounting system.
Invoices Syncing Between BuildOps & Intacct
Invoices write to the Order Entry Module as Sales Invoice transactions, carrying line-item details (dimensions) from department settings.
Invoices may fail to sync if their dates fall in a closed accounting period in Sage Intacct. Ensure invoice issue dates and posting dates align with open periods in both systems, and re-export as needed.
Voiding an invoice in BuildOps attempts to delete the corresponding invoice in Sage Intacct. This does not create a reversing journal entry or a separate audit trail — the invoice is simply removed, and only if the period is still open.
If the invoice's period is closed in Intacct, the void will fail and BuildOps will show a "closed period" error. You cannot void a transaction in a closed accounting period.
Because a straight void leaves no audit trail and can't be redated, the recommended best practice is to issue a credit memo (negative invoice) instead — it creates a separate, traceable transaction, lets you control the transaction date, and preserves a complete audit trail. If a negative sale in BuildOps causes contract-balance issues, issue the credit memo manually in Sage Intacct instead.
BuildOps defaults a voided invoice's sync status back to its prior state (e.g., "Synced" or "Sync Failed") — this status does not confirm the void actually reached Intacct. Always verify manually in Intacct.
Invoice header vs. line-item location (Intacct v2): The invoice header always syncs to the Intacct Entity determined by the Job, Property, or Service Agreement. Each line item can independently sync to its own Intacct Location, including sublocations under that entity, even when multiple sublocations appear on the same invoice. It's normal and expected for a line item's sublocation to differ from the entity shown on the header.
Payment Syncing Between BuildOps & Intacct
Users can select a bank account or undeposited funds on the payment detail page.
If a bank account is selected, it creates an AR advance (Advance Payment) in AR management.
If undeposited funds are selected, it must be paired with an invoice, creating a posted payment in AR management.
Ensure that payment types are valid and match the exact case-sensitive names supported by Sage Intacct.
Verify payment dates to ensure they fall within open accounting periods in Sage Intacct.
Payments V1 vs. V2:
Payments V2 (current standard): creates two Intacct records — an Advance (cash receipt to an unbilled AR account) and a Payment (applying the advance to the invoice) — for better tracking of unapplied funds.
Payments V1 (legacy): creates only a single Posted Payment record, and cannot be voided or unapplied through the integration.
If a payment fails to sync because it's pointed at the wrong Intacct Location, you can edit the Location on that same payment and re-sync — no need to void and recreate it. Once a payment successfully syncs, its Intacct Location locks and becomes read-only.
For Intacct Payment V2, selecting Save & Void Payment in BuildOps sends a reversal to Intacct for the associated payment and advance. The void must be performed in an open accounting period, and any invoice applications or bank deposits may need to be removed in Intacct first.
For Payment V1, payment voids and unapplies are not supported through the integration and must be handled manually in Intacct.
Important: The void date defaults to the date the payment is voided and cannot currently be backdated.
Disabling Sync
Disabling inbound or outbound sync with Intacct is not a supported feature. The only workaround is placing individual records in Bypass status.
Inventory Management
For customers using BuildOps' inventory module alongside Intacct:
Inventory PO Receipt (replenishing stock): debits the Inventory GL account, credits an Inventory-GR (goods received) offset account.
Adding inventory to a job/visit: creates a journal entry that debits COGS and credits the Inventory GL account.
Quantity changes (shrinkage/corrections): manual quantity adjustments create journal entries booking the gain/loss to a dedicated Inventory Shrinkage GL account. This Shrinkage GL account is configurable directly in BuildOps under Settings → Integrations → Intacct → General → Inventory Accounting Configuration.
Standard cost changes: generate journal entries that debit/credit Inventory against a Purchase Price Variance (PPV) account.
Adjustments (Write-Offs, Refunds & Overpayments)
Write-offs (bad debt): creates an AR Adjustment (Credit Memo) in Intacct — must be manually applied to the invoice.
Refunds: creates the customer as a one-time vendor if needed, then creates a Bill in Intacct to be paid.
Overpayments: creates both a Debit Memo (AR Adjustment) and a Bill in Intacct — the debit memo must be manually applied.
Credit Memo (negative AR invoice): creates a Credit Memo in Intacct, applied via a $0 payment in BuildOps to consume the credit.
For step-by-step instructions, see the Adjustments – Sage Intacct and How Adjustments Integrate articles.
Troubleshooting Syncing Issues
Common Challenges
Payments failing to sync due to invalid or mismatched payment types.
Invoices not posting because their dates fall within closed accounting periods.
Voided invoices in BuildOps not automatically reflected in Sage Intacct, especially in closed accounting periods.
Accounting sync statuses for voided invoices remaining as "Synced" or "Sync Failed" without reflecting the void action.
Tax discrepancies caused by differences in tax calculations or missing tax data in Sage Intacct, leading to recalculations in BuildOps.
Common Error Messages
Error | Cause | Resolution |
"Not Supported: Please remove item... manually" | Intacct doesn't allow removing a single line from an existing receipt via the API | Add a negative line item to reverse the incorrect entry, sync it, then add the correct line item and sync again |
"Invalid receipt date, the period _____ is closed." | Document date falls in a closed Intacct period | Change the "Issued By" date to an open period, or have your accounting team reopen the period |
"Smart rule VENDORTERM_REQUIRED was violated..." | Vendor record in Intacct is missing required info (usually Payment Terms) | Update the vendor record in Intacct and re-sync |
"Cannot Modify the value for ITEMID." | An item on the transaction was marked inactive in BuildOps or Intacct | Replace the inactive item with an active one and re-sync |
"Missing transaction definition for key: nonInventoryPurchaseOrderReceipt." | Intacct transaction definitions aren't configured correctly (often with 3-way matching enabled) | Work with your Intacct admin to correctly configure all required transaction definitions |
"Invalid payment method. Valid payment methods are..." | Payment type name in BuildOps doesn't exactly match Intacct's supported list | Only Printed Check, Cash, EFT, Credit Card, Online, Online Charge Card, and Online ACH Debit are valid — names must match Intacct exactly, case-sensitive |
"Required field 'Vendor ID' is missing." | Vendor Numbering Sequence isn't configured in Intacct | In Intacct, go to Accounts Payable → Setup → Configuration and add a document numbering sequence for vendors |
General Tips for Successful Syncing
Always use case-sensitive names for payment methods that match Sage Intacct's list.
Regularly monitor accounting periods in Sage Intacct to ensure transaction dates are valid.
Validate setup details (like payment types and invoice dates) beforehand to prevent syncing failures.
Manually void invoices in Sage Intacct if they cannot be voided automatically due to closed accounting periods.
Issue credit memos or adjustments in Sage Intacct as workarounds for voided invoice syncing issues.
Review tax mapping and taxable flag configurations to minimize tax discrepancies between BuildOps and Sage Intacct.
Confirm integration settings to control whether taxes are recalculated or strictly follow Sage Intacct's data.

