Skip to content

Welcome to the Jungle Commerce Sage Intacct App

This app keeps your Sage Intacct company in step with activity in your Jungle Commerce account. When something changes in Jungle — a purchase order is raised, a product is edited, a supplier return is approved — the app maps it to the equivalent Sage Intacct record and creates or updates it for you, so your finance team works from Intacct without re-keying.

Synchronisation is one-way (Jungle → Sage Intacct) for every record type except customers, which the app also reads back from Sage Intacct into Jungle (see Customers). Jungle remains the system of record for inventory; stock levels are reflected in Sage Intacct as daily journal entries rather than tracked items.

Setting up the app

You set the app up once per Sage Intacct company, from the app's home page. Only one installation is possible per Sage Intacct company.

1. Connect your Sage Intacct company

Click Connect to Sage Intacct on the home page. This starts the Sage Intacct OAuth2 authorization-code flow: you sign in to Sage and authorise the app, and Sage sends you back to the app already connected. The app identifies the company from the credentials Sage returns, so you configure the app separately for each Sage Intacct company you have access to.

2. Provide your Jungle API key

Paste your Jungle Commerce API key and click Verify. The app checks the key against Jungle and shows your Jungle account name on success, so you can confirm you have connected the right account before going further. (Jungle is authenticated with an API key — there is no separate Jungle sign-in step.)

3. Choose your Sage Intacct accounts

Once both sides are connected, pick the GL accounts the app should post against. Three are required, and the dropdowns are populated from your Sage Intacct chart of accounts:

  • Cost of Goods Sold account
  • Inventory account
  • Inventory adjustment account

These are the accounts the daily inventory-movement journal posts to, and the inventory account is also used by draft AP bills and supplier-return credit memos.

4. Choose locations (optional)

If you run multi-entity Sage Intacct, set:

  • a default parent location — used as the parent whenever the app auto-creates a location, which multi-entity Sage requires; and
  • a default sales-order location — stamped on every synced sales-order line, which multi-entity Sage also requires.

Single-entity setups can leave these unset. You can also turn on location filtering and pick which Jungle locations to include, so only activity at those locations is synced.

5. Choose what to sync

Toggle which record types the app keeps in step. Each toggle maps to one of the record types documented below:

Toggle Controls
Purchase orders Purchase orders and, on close, draft AP bills
Sales orders Sales orders
Products Products
Suppliers Suppliers
Locations Locations
Bills Bills
Draft bill on PO close Draft AP bills (on by default)

6. Save

Click Submit to save the configuration. Your connection and settings are stored against the Sage Intacct company, and the app will begin keeping the selected record types in step as each synchronisation job goes live. To change any of this later, return to the home page and reconfigure the same company.

What gets synchronised

The app purposefully synchronises the record types below — each has a dedicated flow that creates and updates the matching Sage Intacct record.

Jungle record Sage Intacct record Direction What triggers it
Purchase order Purchasing document (draft) Jungle → Intacct Purchase order created / modified
Purchase order, on close AP bill (draft) Jungle → Intacct Purchase order closed
Bill AP bill (draft) Jungle → Intacct Bill created / modified
Sales order Order Entry document (draft) Jungle → Intacct Order created / modified
Supplier AP vendor Jungle → Intacct Supplier created / modified
Product Inventory item (non-inventory) Jungle → Intacct Product created / modified
Location Location Jungle → Intacct Top-level location created / modified
Supplier return AP adjustment / credit memo (draft) Jungle → Intacct Supplier return approved
Inventory movements GL journal entry Jungle → Intacct Scheduled, once per day
Customer AR customer Jungle ↔ Intacct Sales-order sync (push) and scheduled poll (pull)

Alongside these, the app incidentally synchronises a few supporting records — primary contacts on vendors, customers and locations; currency codes; and line-level location dimensions — only as a by-product of the records above. These are described inline in the relevant sections rather than documented separately, because they are never synchronised on their own.


Purchase orders

Jungle → Sage Intacct · created and updated when a Jungle purchase order is created or modified.

A Jungle purchase order is mapped to a standard Sage Intacct Purchasing document ("Purchase Order"). The app:

  • Resolves the purchase order's supplier to a Sage Intacct vendor and its destination location (orderedTo) to a Sage Intacct location, creating either if it does not yet exist (see Suppliers and Locations).
  • Writes the document as a draft. The draft is treated as an exact mirror of the current Jungle purchase order, so on every re-sync it is replaced wholesale (deleted and recreated) rather than patched — this prevents duplicate lines accumulating.
  • Is idempotent: the matching Intacct document is found by its document number. If someone has advanced the document in Intacct past draft (submitted, approved, closed), the app leaves it untouched rather than overwrite human work.

Purchase orders with no line items are skipped, and voided Jungle purchase orders are skipped (a cancelled order has no meaningful draft representation). Purchase-order synchronisation can be turned off with the purchaseOrderSyncEnabled setting.

Draft AP bills

Jungle → Sage Intacct · created when a Jungle purchase order is closed.

When a Jungle purchase order moves to Closed, the app additionally creates a draft AP bill in Sage Intacct from that purchase order, posting against the configured inventory account, or against the GRNI Clearing Account when one is configured. This gives your AP team a bill to review and approve the moment goods are received.

Like the purchase-order draft, the bill is an exact mirror: it is matched by bill number, left alone if it has been advanced past draft in Intacct, and otherwise replaced (delete + recreate) so it stays in step with the Jungle purchase order. Each synced bill is recorded for later inspection and stamped back onto the source purchase order.

This behaviour is controlled by the draftBillOnPoCloseEnabled setting and is on by default.

Bills

Jungle → Sage Intacct · created and updated when a Jungle bill is created or modified.

A first-class Jungle bill is mapped to a Sage Intacct AP bill, posting against the configured inventory account, or against the GRNI Clearing Account when one is configured. This is distinct from draft AP bills: those are derived from a purchase order when it closes, whereas this flow mirrors a bill that already exists in its own right in Jungle. The app:

  • Resolves the bill's supplier to a Sage Intacct vendor and its destination location (orderedTo) to a Sage Intacct location, creating either if it does not yet exist (see Suppliers and Locations).
  • Uses the bill's supplier reference (the invoice number) as the Sage Intacct bill number, and carries the bill's issue and due dates onto the Intacct bill.
  • Writes the bill as a draft and keeps it an exact mirror — matched by bill number, replaced wholesale (delete + recreate) on re-sync, and left untouched if it has been advanced past draft in Intacct, so human review and approval are never overwritten.

Bills with no line items are skipped. Each synced bill is recorded for later inspection and the Intacct bill number is stamped back onto the Jungle bill. Bill synchronisation is controlled by the billSyncEnabled setting and is off by default.

Sales orders

Jungle → Sage Intacct · created and updated when a Jungle order is created or modified.

The sell-side mirror of purchase-order sync: a Jungle order is mapped to a standard Sage Intacct Order Entry document ("Sales Order"). The app:

  • Resolves the order's customer to a Sage Intacct AR customer, creating one if necessary (see Customers).
  • Stamps the configured default sales-order location onto every line so multi-entity Sage accepts the document.
  • Writes the document as a draft and keeps it an exact mirror — matched by document number, replaced wholesale on re-sync, and left untouched if advanced past draft in Intacct.

Orders with no line items are skipped, as are cancelled Jungle orders. Sales-order synchronisation can be turned off with the salesOrderSyncEnabled setting, and a default line location is set with defaultSalesOrderLocationId.

Suppliers (vendors)

Jungle → Sage Intacct · created and updated when a Jungle supplier is created or modified.

A Jungle supplier becomes a Sage Intacct AP vendor. On a supplier create or update the app upserts the matching vendor — creating it when absent, and patching it when it already exists so name, tax and address edits in Jungle propagate to Intacct. The vendor's primary contact is reconciled at the same time (created or updated) so the vendor carries up-to-date contact details.

When a supplier has a tax number (such as an ABN), Sage Intacct validates it against the vendor's contact and requires a country to be present. If the Jungle supplier's address has no country, the app falls back to Australia (AU) — the home country of Jungle's Intacct companies — so the vendor still saves; a country supplied on the address is used as-is.

The app remembers the link between the Jungle supplier and the Intacct vendor, so later edits update the existing vendor rather than creating a duplicate. Suppliers are also resolved on demand while syncing purchase orders and supplier returns; in that context an existing vendor is reused as-is and only created if missing. Supplier synchronisation can be turned off with the supplierSyncEnabled setting.

Products (inventory items)

Jungle → Sage Intacct · created and updated when a Jungle product is created or modified.

A Jungle product becomes a Sage Intacct inventory-control item. On a product create or update the app upserts the matching item — creating it when absent and patching it when present so name and description edits propagate.

Items are created as non-inventory: Jungle stays the inventory system of record, and stock changes flow into Intacct as daily GL journal entries rather than Intacct-tracked stock. Product synchronisation can be turned off with the productSyncEnabled setting.

Locations

Jungle → Sage Intacct · created and updated when a top-level Jungle location is created or modified.

Only top-level Jungle locations (those without a parent) become first-class Sage Intacct locations. On a location create or update the app upserts the matching location and its primary contact so renames and address edits propagate.

Once a location has transactions posted against it in Sage Intacct, Sage locks its place in the entity hierarchy: the app can no longer change that location's name or contact, so later renames or address edits in Jungle are left unapplied and the existing Sage location is kept as-is.

Nested Jungle locations are not synced as standalone Intacct locations; instead they surface as the destination dimension on the purchase-order lines that reference them.

Multi-entity Sage requires a parent when auto-creating a location, so the customer picks an existing top-level location as the default parent (defaultParentLocationId). Where that is not configured, location auto-creation is skipped and the customer is prompted to pre-create the location in Intacct. Location synchronisation can be turned off with the locationSyncEnabled setting.

Supplier returns (AP credit memos)

Jungle → Sage Intacct · created when a Jungle supplier return is approved.

An approved Jungle supplier return is mapped to a Sage Intacct AP adjustment — the object Sage's UI labels a credit memo — posted against the configured inventory account, or against the Supplier Returns Clearing Account when one is configured. The return's supplier is resolved to a vendor (created if necessary) along the way.

The adjustment is written as a draft and kept idempotent: matched by adjustment number, left alone if advanced past draft in Intacct, and otherwise replaced (delete + recreate). Supplier returns that are not approved, or have no line items, are skipped. Each synced adjustment is recorded for later inspection and stamped back onto the source supplier return.

Inventory movements (GL journal entries)

Jungle → Sage Intacct · posted on a daily schedule.

Rather than mirroring every individual stock movement, the app rolls a day's Jungle inventory movements up into a single Sage Intacct GL journal entry for that day. Lines post against the configured COGS, inventory and inventory-adjustment accounts (cogsAccountCode, inventoryAccountCode, adjustmentAccountCode).

Days with no movements — or whose movements net to zero journal lines — post nothing. When location filtering is enabled (filterByLocation with locationIds), only movements at the selected root locations are included. Each posted journal is recorded for later inspection.

Supplier Returns Clearing Account

The Supplier Returns Clearing Account is an optional "goods returned not credited" account, selected in the configuration UI. When it is configured:

  • Supplier return fulfilments (stock physically shipped back to a supplier) appear in the daily journal as SUPPLIER RETURN lines, moving the cost of the returned stock out of the inventory account and into the clearing account. Adjustments that unpack a supplier-return allocation are journaled as the reversal.
  • AP adjustment (credit memo) lines are coded to the clearing account instead of the inventory account, so posting the credit memo clears the clearing balance rather than crediting inventory a second time.
Event Debit Credit
Supplier return fulfilled (journal) Supplier Returns Clearing Account Inventory Account
Supplier credit memo posted Accounts Payable Supplier Returns Clearing Account

The clearing account's running balance represents stock returned to suppliers that has not yet been credited. Once the supplier's credit memo is posted, the balance for that return nets to zero; any residual amount is a price variance between the stock's cost at fulfilment and the credited amount.

Create this as a balance-sheet (current asset) GL account in Sage Intacct — between fulfilment and credit it carries a debit balance (stock the supplier owes you credit for), so it belongs on the balance sheet rather than in the profit and loss.

When this account is not configured, supplier return fulfilments produce no journal lines and AP adjustments post against the inventory account, exactly as before the account existed.

GRNI Clearing Account and Purchase Price Variance Account

The GRNI Clearing Account is an optional "goods received not invoiced" account. It is selected together with a Purchase Price Variance Account: the app refuses to save one without the other. Enable these only in consultation with Jungle support. Before you switch over, every previously received item must be billed, or its billing obligation must be closed.

When both accounts are configured:

  • The daily journal accrues each receipt on the day it arrives. GRNI lines move the received cost into the inventory account against the GRNI Clearing Account.
  • When a supplier bills a different price than the stock was received at, or a receipt is matched to a purchase order at a different price, GRNI VARIANCE lines post the difference to the Purchase Price Variance Account on the day of the match.
  • When a receipt turns out to be a transfer or a customer return, the journal reverses its accrual out of inventory at the received cost.
  • Draft AP bill and bill lines are coded to the GRNI Clearing Account instead of the inventory account, so posting the bill clears the accrual.
Event Debit Credit
Stock received (journal) Inventory Account GRNI Clearing Account
Billed dearer than received Purchase Price Variance Account GRNI Clearing Account
Billed cheaper than received GRNI Clearing Account Purchase Price Variance Account
Receipt re-matched to transfer GRNI Clearing Account Inventory Account
Supplier bill posted GRNI Clearing Account Accounts Payable

The inventory account only ever moves by the received cost, which is the cost Jungle carries the stock at. The GRNI Clearing Account's balance is stock received but not yet billed. It clears to zero for a receipt once its bill is posted.

Create the GRNI Clearing Account as a balance-sheet (current liability) GL account in Sage Intacct. Create the Purchase Price Variance Account as an expense account.

The receipt data comes from the Jungle reconciliation line feed. If the feed is unavailable, the day's journal sync fails and retries on the next run rather than posting a journal without its GRNI lines. GRNI lines carry the Location dimension like every other journal line. They carry no Item dimension, because the feed does not identify the received item. When location filtering is enabled, only receipts at the selected root locations are accrued, the same as for movements.

When these accounts are not configured, receipts produce no journal lines and bill lines post against the inventory account, exactly as before the accounts existed.

Vendor invoices converted from purchase orders in Sage Intacct

The app codes its own bills to the GRNI Clearing Account: the draft AP bill created when a purchase order closes, and synchronised bills. It cannot do the same for the purchase orders it writes to Sage Intacct, because Sage Intacct purchase order lines take no GL account.

If you convert one of those purchase orders to a vendor invoice inside Sage Intacct Purchasing, the vendor invoice takes its GL accounts from its own transaction definition. Sage Intacct looks them up in the Transaction posting account mapping table on the definition's Posting Configuration tab, by the line item's Item GL group (Sage Intacct: Field descriptions, purchasing transaction definitions). That mapping normally debits the inventory account. With GRNI on, the daily journal has already debited inventory for the receipt, so the converted vendor invoice would debit inventory a second time and leave the accrual on the GRNI Clearing Account.

Choose one of these approaches:

  1. Recommended: do not convert these purchase orders in Sage Intacct. Approve the app's draft AP bill, or synchronise the Jungle bill, instead.
  2. If you must convert them, change the vendor invoice transaction definition that your purchase order workflow converts to. In its Transaction posting account mapping table, map the debit for your inventory items' Item GL groups to the GRNI Clearing Account.

Ask your Sage Intacct consultant to review option 2 before you use it. The mapping applies to every vendor invoice that uses that transaction definition, not only the ones converted from the app's purchase orders. Jungle has not tested option 2 in a Sage Intacct company, with or without Inventory Control.

Customers

Jungle ↔ Sage Intacct · the only two-way record type.

Customers synchronise in both directions:

  • Sage Intacct → Jungle (pull). A scheduled poller reads new and changed Sage Intacct AR customers and creates or updates the matching Jungle customer. This is the customer's purposeful, first-class flow.
  • Jungle → Sage Intacct (push). While syncing a sales order, the app resolves the order's customer to a Sage Intacct AR customer, creating one if it does not exist.

Both directions share a single cross-reference link, so a customer created by one side is recognised by the other rather than duplicated: a customer the push creates carries the same identifier the poller looks up, and a customer the poller creates is reused by the push.