ERP & Account Mapping

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.

Connect your ERP

QuickBooks Online

Connect QuickBooks Online yourself via Settings → Integrations → QuickBooks. Turn off Automatically apply credits in QuickBooks first, then sign in to Intuit and grant Tabs access. QuickBooks Desktop is not supported.

See Connecting QuickBooks for the full steps.

NetSuite

Connect NetSuite yourself via Settings → Integrations → NetSuite using OAuth 2.0 machine-to-machine. A NetSuite Administrator installs the Tabs Platform Automation SuiteApp, maps the certificate to a dedicated user with Tabs Integration Role (not Administrator), then completes Set up NetSuite in Tabs (subsidiary and sales-order vs invoice-only).

See Connecting NetSuite for the full steps.

Contact your implementation manager for complex NetSuite configurations. If you connect a sandbox environment, ensure it has been synced with production within the last few months to maintain data consistency.

Sage Intacct

Connect Sage Intacct yourself via Settings → Integrations → Sage Intacct. Enable Web Services, authorize Tabs, and create a dedicated Web Services user, then map one Sage entity in Tabs. Before Tabs can push customers and invoices, enable customer auto-numbering and configure Order Entry Sales Invoice and Credit Memo templates.

See Connecting Sage Intacct for the full steps.

Campfire

Connect Campfire yourself via Settings → Integrations → Campfire. A Campfire Super User Admin unlocks API docs and can create an admin API key. Paste the key into Tabs, then map one legal entity. Create products in Campfire first, then set each Tabs product’s Integration item to the synced Campfire product.

See Connecting Campfire for the full steps.

Rillet

Connect Rillet yourself via Settings → Integrations → Rillet using an API key generated in Rillet under Organization Settings → API Keys. Tabs supports invoice and journal entry export with Rillet; contracts do not sync.

Create the products you plan to bill in Rillet first. Tabs imports them as items and does not create products in Rillet. Rillet products are always non-revenue products, which keeps Rillet from recognizing revenue that Tabs is already recognizing, and they arrive with a deferred account but no revenue account. Assign each item’s revenue account in Tabs after connecting.

See Connecting Rillet for the full steps.

Other ERPs may be supported via CSV export or API — contact support@tabsplatform.com for options.

What syncs

Tabs pulls reference data from your ERP 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.

ERP → 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 → ERP (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.

Map revenue and unbilled accounts

Map each item’s GL accounts inline on Integrations → Items. Every item shows dropdowns — sourced from your ERP’s chart of accounts — for its Revenue and Unbilled accounts, plus a Deferred account dropdown when that account isn’t managed by your ERP. Changes save inline; no CSV round-trip or page navigation is needed.

  • Accounts that Tabs pulls from your ERP appear read-only with a “managed in your ERP” indicator and sync automatically. To change them, update the account in your ERP.
  • Items falling back to the default earned revenue account are marked DEFAULT.
  • For Sage Intacct, only the deferred account syncs automatically from your ERP — set the revenue account manually or via CSV.
  • For Rillet, Tabs supports invoice and journal entry export only (no contract sync). Set each item’s revenue account manually: Rillet’s non-revenue products carry a deferred account rather than a revenue account, so Tabs has nothing to source one from. Leaving an item pointed at a deferred account makes revenue entries post deferred against deferred and cancel each other out.
  • CSV upload remains available as an optional bulk path for large catalogs. It is non-destructive — it only updates the accounts included in each row and leaves other mappings untouched.

Account mapping

Configure ERP account mappings under Integrations → your ERP → Manage:

  • Revenue journal entries — accounts used when Close Management posts recognized revenue
  • Cash application — bank accounts mapped to Plaid accounts for payment matching journal entries. Supported for QuickBooks Online, NetSuite, and Sage Intacct
  • Reconciliation — bad debt, bank fees, and other close-out account types

Map the Bank Fees account before you run cash application. Stripe payout reconciliation books each invoice’s card-fee residual to this account, so while it is unmapped the entire payout batch stops and every invoice in it stays unpaid. Tabs highlights the field and shows a banner on the Integrations page until it’s set. For NetSuite and Sage Intacct, “mapped” means both a GL account and a linked ERP item.

For NetSuite and Sage Intacct cash application, reconciliation account types are backed by an ERP item you select (rather than a raw GL account). Configure the reconciliation item in your ERP first, then map it in Tabs.

In NetSuite:

  1. Go to Lists → Accounting → Items → New (or edit an existing item)
  2. Choose Non-Inventory Item → For Sale
  3. On the Accounting tab, set the Income Account to the account Tabs should use for reconciliation journal entries
  4. Save the item

In Sage Intacct:

  1. Go to the item you want to use for reconciliation
  2. Assign it to an Item GL Group that resolves to the account Tabs should use for reconciliation journal entries
  3. Save the item

In Tabs:

  1. Go to Integrations → your ERP → Manage
  2. For default reconciliation types (Bad Debt, Bank Fees) or custom types, select the ERP integration item you created
  3. Click Sync if the item does not appear in the dropdown yet
  4. To add a custom reconciliation method, click Add account type, name it, and map the ERP account and integration item

See Set up Plaid for cash application setup.

Undeposited funds account

Payments Tabs pushes to your ERP land in an undeposited funds account, a clearing account that holds customer payments until you record the bank deposit. Set it under Integrations → your ERP → Manage → Undeposited Funds Account.

Each ERP constrains which account is valid here, and they pull in opposite directions:

  • QuickBooks Online accepts only a Bank or Other Current Asset account and rejects anything else with “Invalid account type used.” Tabs limits both this picker and the Plaid bank-account mapping to those two types.
  • Sage Intacct rejects a bank-linked GL account, because Sage uses those to represent the bank account itself. Select a separate non-bank clearing account that you clear later. A bank-linked account comes back as Sage error AR-0251 in your ERP sync errors.

For Sage Intacct, leaving this field empty fails the payment push before Tabs calls Sage. There is no silent fallback to a default account.

NetSuite: AR account override

By default, a credit memo pushed to NetSuite inherits the customer’s current default receivables (AR) account. NetSuite only lets a credit memo be applied to an invoice when both sit on the same AR account, so if the customer’s default AR account changed after the invoice was created (for example, after a billing cadence change), the apply fails in NetSuite with a sublist error and the credit memo shows a sync failure in Tabs.

To avoid that, select a specific AR account when creating a credit memo so it matches the AR account on the invoice it will offset. The selector is optional and appears only for NetSuite-connected merchants; leaving it blank uses the customer’s default AR account. Accounts come from the receivable accounts already synced from your chart of 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

To see why a record failed to sync, 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.

Invoices fail to sync to QuickBooks

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

If you use QuickBooks, 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.

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 never pulls credit memo records back. Applying a Tabs-created credit memo in your ERP is therefore not equivalent to applying it in Tabs. On any ERP that Tabs pulls payments from, the apply returns to Tabs as a payment on the invoice rather than as an applied credit memo: the invoice shows as paid, but the credit memo stays OPEN in Tabs at its full balance, and nothing links it to that payment. The same money then appears twice across the two records. In NetSuite and Sage Intacct, that payment is labeled Credit Memo (ERP).

Always apply Tabs-created credit memos in Tabs. Credit memos created directly in your ERP do not sync back into Tabs at all. An ERP-originated credit memo has to be applied in that ERP.

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.

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. If a single invoice fails while others from the same period succeed, check the ERP sync errors page for the specific reason and re-send after resolving it.

Sage Intacct: credit memo unapply

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.

Sage Intacct: 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.

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.

Campfire: invoice not pushing

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.