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. 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. 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. 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.
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.