> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.tabs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.tabs.com/_mcp/server.

# ERP & Account Mapping

Tabs connects with **QuickBooks Online**, **NetSuite**, **Sage Intacct**, and **Rillet** so your billing, payments, and revenue activity flow straight into your ERP, with no manual re-entry.

## Connect your ERP

### QuickBooks Online

1. Go to **Settings → Integrations**
2. Click **Connect** on QuickBooks Online
3. Log in to Intuit and grant Tabs access

Requires QuickBooks Online administrator access. QuickBooks Desktop is not supported.

### NetSuite

1. Go to **Settings → Integrations**
2. Click **Connect** on NetSuite
3. In NetSuite, upload the RSA certificate Tabs provides and map it to an integration record
4. Enter your NetSuite **Account ID**, **Client ID**, and **Certificate ID** back in Tabs to complete the OAuth 2.0 connection
5. Complete the one-time setup — choose a **Subsidiary** and **Sales-order flow** — before syncing starts. No NetSuite data syncs until this step is saved

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 via **Settings → Integrations → Sage Intacct**, then use **Sync** or **Manage → Sync** to pull data from Sage into Tabs. Sage requires configured Sales Invoice and Credit Memo templates in the Order Entry module before Tabs can push transactions.

Other ERPs may be supported via CSV export or API — contact [support@tabsplatform.com](mailto: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)

| Object                         | Notes                                                                                                                                                         |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Customers                      | Initial setup and ongoing sync                                                                                                                                |
| Products / items               | Tabs products map to ERP items — create new items in ERP first                                                                                                |
| Item GL accounts               | Where 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 accounts              | Tabs pulls but does not modify ERP accounts                                                                                                                   |
| Close periods                  | Imported for book close enforcement                                                                                                                           |
| Historical invoices & payments | Initial setup                                                                                                                                                 |
| Payments applied in ERP        | Sync back to Tabs on daily pull                                                                                                                               |

### Tabs → ERP (push)

| Object          | When it syncs                                       |
| --------------- | --------------------------------------------------- |
| Customers       | New customers and updates created in Tabs           |
| Invoices        | When sent — draft invoices do not sync              |
| Credit memos    | When created in Tabs                                |
| Payments        | When applied in Tabs, including Stripe and Plaid    |
| Journal entries | When 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).

### Journal entry batch sizes

| ERP               | Max entries per batch                                      |
| ----------------- | ---------------------------------------------------------- |
| QuickBooks Online | 500                                                        |
| NetSuite          | 500                                                        |
| Sage Intacct      | 2,500                                                      |
| Rillet            | One journal entry per customer per period — no numeric cap |

Revenue journal entries are generated and submitted through [Close Management](/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 should have an integration item assigned. Without one, 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](/product-catalog#product-fields) 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 the revenue account manually per item, since Tabs never pulls Rillet products.
* **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

If the **Bank Fees** account isn't mapped, Tabs highlights the field and shows a banner prompting you to map it — reconciliation can't run until it's set.

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](/plaid) for cash application setup.

## 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](/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](/close-management#quickbooks-revenue-recognition-settings) 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](/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. Credit memos created in your ERP do not sync back into Tabs — create and apply them in Tabs instead.

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

## Related resources

* [Integration Overview](/integration-overview) — full integration landscape and setup models
* [Invoices & Integrations](/billing-invoices) — invoice sync and tax
* [Payments & Integrations](/payments-integrations) — payment and credit memo sync
* [Tabs data model](/data-model) — customer, invoice, and payment fields in the billing lifecycle