Systems, NetSuite, Integrations

A Guide to Migrating BILL from QuickBooks Online to NetSuite

Introduction

Migrating BILL (formerly Bill.com) during a NetSuite implementation requires careful planning, coordination with the BILL support team, and alignment with your overall data-migration strategy. This guide walks through the key steps, considerations, and best practices to ensure a smooth transition from QuickBooks Online (QBO) to NetSuite while preserving AP integrity and avoiding duplicate vendors or mismatched balances.

Planning

Before beginning any sync or data movement, take the following preparatory steps:

1. Notify BILL support early

Let the BILL support team know that you are implementing NetSuite. You’ll need multiple scheduled sync calls throughout the project, and their calendars fill quickly. Reach out as soon as the NetSuite implementation kicks off to avoid delays.

2. Expect a migration fee

If you plan to continue using your existing BILL instance, BILL charges a small fee for migrating the integration from QuickBooks to NetSuite.

3. Clean up your vendor list

This is an ideal time to inactivate duplicates, standardize naming conventions, and review vendor statuses.

4. Reconcile AP between BILL and QuickBooks

Ensure the detailed AP aging report in BILL ties exactly to QBO. Any discrepancies here will cascade into NetSuite if not addressed upfront.

5. Decide on your historical transaction strategy

You must choose between:

  • Detailed historical transaction loads, or

  • Summary-level financial statements

This choice directly affects BILL’s vendor sync and open-payables sync. If you'd like to learn more about loading historical transactions into NetSuite, see our dedicated article on the topic.

You can also reference BILL's official documentation for additional context.

The BILL data sync

BILL syncs data to NetSuite in three phases:

  1. Vendors

  2. Segment structure

  3. Open payables

Each phase is outlined below.

Vendors

There are two approaches for getting vendors into NetSuite:

Option A — Allow BILL to create vendors during the first sync

BILL can auto-create vendor records directly in NetSuite.

Pros:

  • No need to prepare a vendor CSV import.

  • Minimal upfront work.

Cons:

  • Vendors do not sync until go-live week, which means no "real" vendor records exist during UAT

  • Not suitable for clients loading detailed historical transactions

Option B — Import vendors via CSV and map them to BILL

Users manually upload vendor records into NetSuite before installing the BILL SuiteApp. After the SuiteApp installation, a custom field appears:

  • BILL Vendor Name

    • Field ID: custentity_bdc_vendor_name

You must populate this field with the exact BILL vendor name to prevent BILL from creating duplicate vendors during the sync.

Important: only active BILL vendors sync into NetSuite.

Segment Structure

Once installed, BILL pulls the active segments from NetSuite—such as department, location, class, and subsidiary.

This allows new transactions created in BILL to use the updated NetSuite segment structure.

However:

  • Historical open payables from the legacy system will retain their old segment structure

  • To avoid clutter, we recommend inactivating old segments before syncing

This ensures BILL users see only the correct segment values going forward.

Open Transactions

The final sync pushes open AP transactions from BILL into NetSuite.
This step is critical because BILL needs these vendor bills to exist in NetSuite so it can properly mark them paid when you process payments in BILL after go-live.

Before initiating this step:

Checklist

  • ✔️ Confirm BILL’s AP aging reconciles 1:1 to QuickBooks

  • ✔️ Review partially paid bills and partially applied credits

  • ✔️ Complete all historical AP migration work in NetSuite

  • ✔️ Decide how you will handle suspense accounting (see below)

What BILL pushes

BILL sends:

  • Fully open vendor bills

  • Fully open vendor credits

It does not send:

  • Partially paid bills

  • Partially applied credits

Handling partially applied transactions

If you have partially used bills/credits:

Create a dummy offset entry to clear the partially applied amount,
then create a new bill/credit for the remaining open balance.

This ensures the sync only receives clean, fully open transactions.

How BILL posts transactions

All synced transactions debit a single suspense account and credit Accounts Payable.
This is intentional—BILL does this to account for changed segments between systems.

If you loaded detailed transactions

You must either:

  1. Replace the AP account with your suspense account on any historical AP transactions, or

  2. Exclude open AP transactions from the historical load so BILL’s synced transactions become your starting open AP

Either approach ensures BILL can correctly mark bills as paid after go-live.

Other Considerations

Here are a few operational best practices:

  • Pay down as much AP as possible before the sync—this reduces complexity.

  • Temporarily disable mandatory segments in NetSuite during the BILL sync.

  • Expect processing time:

    • Most syncs take a few hours

    • Large datasets can take up to 5 business days

Conclusion

BILL’s integration has a meaningful impact on your NetSuite data-migration strategy—especially around vendors and open AP. Planning, understanding the sync sequence, and aligning your historical data strategy are essential to a clean, reconciliation-ready go-live.

At OptimalData Consulting, we help clients prepare, validate, and execute data-migration plans that avoid costly rework and ensure accurate AP balances in NetSuite.

If you’d like support with your BILL migration—or any part of your NetSuite implementation—contact us or explore more resources on our NetSuite implementation resources page.

Subscribe for updates!