Accounting System Sync
Tabs connects with QuickBooks Online, NetSuite, Sage Intacct, Campfire, and Rillet so your billing, payments, and revenue activity flow straight into your ERP, with no manual re-entry.
This page covers what moves between the two systems once you are connected. For connection steps, see Connecting QuickBooks, Connecting NetSuite, Connecting Sage Intacct, Connecting Campfire, or Connecting Rillet. Other ERPs may be supported via CSV export or API — contact support@tabsplatform.com for options.
What syncs
Tabs pulls reference data from your accounting system on a scheduled basis and pushes transactional data as activity occurs in Tabs. The first sync after connecting pulls all historical records; later syncs are incremental.
Accounting system → Tabs (import)
Tabs → accounting system (push)
Updates made in Tabs reflect in your ERP immediately for pushed objects. Updates made in your ERP sync back to Tabs on the next daily sync (typically the following morning).
Chart of accounts sync
Tabs matches each incoming account by its ERP identifier, so an account that was retired and later restored in your ERP returns to the same record in Tabs instead of arriving as a duplicate.
An account can be linked to more than one connected ERP at the same time, which is what keeps reporting intact while you migrate between systems. When an account stops being available in one ERP, Tabs removes only that ERP’s link and leaves the account active for any other ERP still pointing at it. The account is retired in Tabs once nothing points at it.
How Tabs learns an account is gone depends on the ERP. Rillet reports each account’s status directly, so Tabs reads it. QuickBooks Online, NetSuite, and Sage Intacct signal removal by dropping the account from the sync, so Tabs retires an account that stops appearing. Either way the change lands on the next sync rather than retroactively.
Invoice and credit memo field mapping
Most invoice and credit memo fields map to the obvious ERP equivalent: customer, transaction and due dates, document number, and line item description, quantity, rate, and amount. These header fields are worth calling out because support varies by ERP:
Journal entry batch sizes
Revenue journal entries are generated and submitted through Close Management — they do not push automatically. Rillet entries missing a customer dimension are blocked until the dimension is set and the entry is re-pushed.
Integration items
Integration items map Tabs products to items in your ERP. They determine ERP account impact when invoices sync.
Every product used on a billing term needs an integration item assigned. An invoice cannot be sent, or marked as sent off Tabs, while any of its lines points at a product whose integration item carries no ERP identifier, or at no item at all.
What matters is the identifier recorded on the item, not where the item came from. An item you created in Tabs by hand or by CSV and then linked to your ERP is fine. An item that originally came from your ERP but has since lost that link is not.
Without an integration item, you may see errors like:
- “Billing item(s) are missing an integration item”
- Products showing as “uncategorized”
Resolve missing integration items
- Open the product in the Product Catalog and click Edit Product
- Check the Integration item field
- If the dropdown is empty, go to the home page and click Sync to ERP to pull items from your ERP
- Select the matching ERP item and save
When you update an integration item on a product, the change applies to all existing invoices using that product automatically.
Tabs does not create new items in your ERP. Add items in your ERP first, then sync to Tabs.
See Product Catalog for how integration items fit into the product catalog, and GL Account Mapping for setting each item’s revenue, unbilled, and deferred accounts.
Push to ERP
If a customer exists in Tabs but not in your ERP, you’ll see a Missing in ERP badge on the customer profile. Click Push to ERP to create the record in your accounting system. ERP-linked workflows require the customer to exist in both systems.
See Customer Ingestion for customer sync behavior.
Troubleshooting
View ERP sync errors
Start here for any failed push. Open ERP sync errors at app.tabsplatform.com/merchant/erp-sync-errors. Each entry lists the affected record and the error reason. After addressing the cause, re-send the record through the normal Tabs send/sync flow to retry the push.
If a single record fails while others from the same period succeed, the cause is almost always specific to that record — read its error reason before changing any integration settings.
Any ERP
Invoice reset behavior
Resetting a sent invoice to draft in Tabs removes the corresponding record from your ERP. Re-sending recreates it.
Applying a credit memo in your ERP instead of in Tabs
Credit memo sync is one-way (Tabs → ERP) for every supported ERP. Tabs pushes credit memos out and never pulls them back, so applying a Tabs-created credit memo in your ERP is not equivalent to applying it in Tabs.
On any ERP that Tabs pulls payments from, here is what you end up with:
- The apply returns to Tabs as a payment on the invoice, not as an applied credit memo. In NetSuite and Sage Intacct that payment is labeled Credit Memo (ERP).
- The invoice shows as paid, but the credit memo stays
OPENin Tabs at its full balance, with nothing linking it to that payment. - The same money now appears twice across the two records.
Two rules avoid this:
- Apply Tabs-created credit memos in Tabs.
- Apply ERP-originated credit memos in that ERP. They never sync into Tabs at all.
For NetSuite, unapplying a credit memo or journal entry in NetSuite cancels the matching Tabs payment and recalculates the invoice balance on the next sync. Tabs detects this by comparing recently modified NetSuite records against the applications it already has on record, so it is not retroactive. An application unapplied before this behavior shipped, or outside the sync’s lookback window, needs a one-off correction from Tabs Support.
QuickBooks Online
Invoices fail to sync
If QuickBooks rejects an invoice with an error about service dates or revenue recognition schedules, native QBO revenue recognition is likely enabled on the mapped product. Tabs manages recognition through Close Management — disable revenue recognition on QBO items used by Tabs.
See Close Management for full details.
Duplicate journal entries with Plaid
Disable QBO’s built-in transaction matching before connecting Plaid. Running both simultaneously creates duplicate journal entries.
See Set Up Plaid for the full cash application setup.
NetSuite
Credit memo fails to apply
A credit memo and the invoice it offsets must sit on the same AR account in NetSuite. If the customer’s default AR account changed after the invoice was created, the apply fails with a sublist error. See NetSuite: AR account override.
Sage Intacct
Credit memo cannot be unapplied
Sage Intacct does not support unapplying a credit memo once it’s applied — this is a Sage API constraint. Apply credit memos carefully in Sage-connected accounts.
Customer creation fails
Tabs does not send an explicit customer ID when creating a customer in Sage. If Sage rejects new customers, auto-numbering is likely off. Enable a numeric document sequence for customers, then retry. See Connecting Sage Intacct.
Taxed invoices fail on location or department
Tabs does not send location or department on the tax subtotal. Turn on line-item dimensions in Order Entry subtotals at the top-level company and the connected entity, and leave Apportioned off on the Tax row. See Connecting Sage Intacct.
Payment push fails with AR-0251
The mapped undeposited funds account is bank-linked, which Sage rejects. Select a separate non-bank clearing account. See Undeposited funds account.
Campfire
Invoice or payment fails to push
An invoice fails to push if a line is missing an Integration item mapped to a Campfire product. Create the product in Campfire, sync it into Tabs, then map it on the billing term and retry. Payment pushes fail if Undeposited Funds is not set on the Campfire integration page.
Rillet
Invoice not pushing
Marking an invoice as “Sent off Tabs” does not push it to Rillet. To push an invoice to Rillet, send it through the normal Tabs send flow.
Related resources
- GL Account Mapping — item revenue accounts and system-level account mapping
- Connecting QuickBooks — turn off auto-apply credits, connect, and validate
- Connecting NetSuite — SuiteApp, Tabs Integration Role, and OAuth 2.0 M2M
- Connecting Sage Intacct — Web Services user, entity mapping, auto-numbering, and tax subtotals
- Connecting Campfire — API key, legal entity, and product mapping
- Connecting Rillet — API key connect, cash accounts, and item revenue accounts
- Integration Overview — full integration landscape and setup models
- Invoices & Integrations — invoice sync and tax
- Payments & Integrations — payment and credit memo sync
- Tabs data model — customer, invoice, and payment fields in the billing lifecycle

