Accounting System Sync

View as Markdown

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)

ObjectNotes
CustomersInitial setup and ongoing sync
Products / itemsTabs products map to ERP items — create new items in ERP first
Item GL accountsWhere your ERP exposes them, Tabs pulls each item’s revenue, deferred, and unbilled accounts. Pulled accounts appear read-only in Tabs and sync automatically
Chart of accountsTabs pulls but does not modify ERP accounts. See Chart of accounts sync
Close periodsImported for book close enforcement
Historical invoices & paymentsInitial setup
Payments applied in ERPSync back to Tabs on daily pull. A credit memo applied to an invoice in your ERP also arrives this way, as a payment rather than as an applied credit memo. See Applying a credit memo in your ERP instead of in Tabs

Tabs → accounting system (push)

ObjectWhen it syncs
CustomersNew customers and updates created in Tabs
InvoicesWhen sent — draft invoices do not sync
Credit memosWhen created in Tabs, and when applied in Tabs. One-way only: credit memos are never pulled from your ERP
PaymentsWhen applied in Tabs, including Stripe and Plaid
Journal entriesWhen submitted via Close Management — not automatic

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:

Tabs fieldObjectWhere it lands
PO numberInvoiceNetSuite Other Ref # (otherRefNum), Sage Intacct ponumber, and Rillet purchase_order_number. Not supported for QuickBooks Online, which has no native PO field
MemoInvoiceNetSuite memo, QuickBooks Online CustomerMemo, Sage Intacct memo on the Order Entry header, Rillet memo
MemoCredit memoNetSuite memo, QuickBooks Online CustomerMemo, Sage Intacct memo on the Order Entry header. Not available for Rillet. In NetSuite, a blank Tabs memo falls back to the document number, which is what keeps Plaid reconciliation write-offs readable in NetSuite
AR account overrideCredit memoNetSuite account only. Optional, see NetSuite: AR account override

Journal entry batch sizes

ERPMax entries per batch
QuickBooks Online500
NetSuite500
Sage Intacct2,500
CampfireOne journal entry per customer per currency — no numeric cap
RilletOne journal entry per customer per period — no numeric cap

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

  1. Open the product in the Product Catalog and click Edit Product
  2. Check the Integration item field
  3. If the dropdown is empty, go to the home page and click Sync to ERP to pull items from your ERP
  4. 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 OPEN in 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.