Overview
Why QuickBooks to NetSuite is the most common migration path, and when companies typically make the move.
Why QB to NetSuite Is So Common
QuickBooks is the dominant small business accounting software. As companies grow, they hit QB's limitations and look for enterprise ERP. NetSuite is the natural upgrade path because:
- Similar workflow paradigms: Invoices, bills, payments work similarly
- Cloud-native: Both are cloud-based (QBO) or have cloud options
- Common industry: Biotech, professional services, e-commerce -- QB sweet spot is NetSuite sweet spot
- IPO readiness: Companies preparing to go public need SOX-compliant systems
When Companies Typically Migrate
| Trigger | Why QB Falls Short |
|---|---|
| Revenue exceeds $5-10M | Transaction volume strains QB performance |
| Multiple entities | QB requires separate company files; no consolidation |
| International expansion | Multi-currency is limited; no multi-subsidiary |
| Audit preparation | Auditors require better controls and audit trails |
| Advanced inventory | No lot tracking, serial numbers, or assembly management |
| Project accounting | Job costing is basic; no revenue recognition |
QuickBooks Limitations
Understanding QB's limitations helps explain data quality issues you'll encounter during migration.
Transaction Limitations
| Limitation | Impact on Migration |
|---|---|
| Single-entity only | No intercompany transactions to migrate; each QB file is separate |
| Date-based accounting | No posting period concept -- transactions post to the date's period |
| Limited payment application | Payments may need to be unapplied/reapplied in NetSuite |
| No approval workflows | All transactions are "approved" by default |
| Simple inventory | Average cost only; no FIFO/LIFO layers to migrate |
Field Limitations
- Limited custom fields: QB allows few custom fields; data may be stuffed in memo fields
- No segments: Class, Department, Location exist but are less structured than NetSuite
- Address format: QB address fields don't map 1:1 to NetSuite
- No external IDs: QB uses internal IDs that don't export cleanly
QuickBooks Online vs Desktop
The extraction process differs significantly between QuickBooks Online (QBO) and QuickBooks Desktop (QBD).
| Aspect | QuickBooks Online | QuickBooks Desktop |
|---|---|---|
| Report Export | Export to Excel from web interface | Export to Excel or IIF format |
| API Access | REST API available; third-party tools can extract | SDK available but more complex |
| Data Limits | Limited export rows; may need multiple exports | Full data access from local file |
| Historical Data | Available but export can be slow | Full history in local database |
| Custom Reports | Use "Classic View" for better export options | More report customization available |
| Transaction IDs | Available via API; not in standard exports | "Trans #" field available in reports |
Data Extraction
Key reports to extract and how to count transactions before scoping the migration.
Key Reports to Extract
Extract these reports from QuickBooks before starting your NetSuite migration:
Master Data
| Data Type | QB Report | Key Fields |
|---|---|---|
| Chart of Accounts | Account List (Reports > Accountant) | Account name, type, number, description, balance |
| Customers | Customer Contact List | Name, address, email, phone, terms, tax exempt |
| Vendors | Vendor Contact List | Name, address, email, phone, terms, 1099 status, tax ID |
| Items | Item List | Name, type, description, cost, price, account mapping |
| Employees | Employee Contact List | Name, address, hire date (if migrating) |
Transaction Data
| Data Type | QB Report | Notes |
|---|---|---|
| Open AR | A/R Aging Detail | As of cutover date; includes invoice details |
| Open AP | A/P Aging Detail | As of cutover date; includes bill details |
| Open Sales Orders | Open Sales Orders by Customer | Filter to open/pending only |
| Open Purchase Orders | Open Purchase Orders by Vendor | Filter to open only; calculate remaining qty |
| Trial Balance | Trial Balance (as of cutover date) | The master validation document |
| Historical Transactions | Transaction List by Date | If migrating detail; filter by type and date range |
Counting Transactions
Before scoping the migration, count your transactions:
QuickBooks Online
- Run Transaction List by Date report (Classic View)
- Filter by transaction type and date range
- Export to Excel
- Count unique transaction numbers (not lines)
QuickBooks Desktop
- Run Transaction Detail report
- Add "Trans #" column to the report
- Filter by date range
- Export to CSV/Excel
- Use Excel Remove Duplicates on Trans # column
Field Mapping
Detailed mappings for account types, item types, and address fields between QuickBooks and NetSuite.
Account Type Mapping
| QuickBooks Type | NetSuite Type | Notes |
|---|---|---|
| Bank | Bank | Direct mapping |
| Accounts Receivable | Accounts Receivable | One per subsidiary in NetSuite |
| Other Current Asset | Other Current Asset | Direct mapping |
| Fixed Asset | Fixed Asset | Consider FAM module for depreciation |
| Accounts Payable | Accounts Payable | One per subsidiary in NetSuite |
| Credit Card | Credit Card | Direct mapping |
| Other Current Liability | Other Current Liability | Direct mapping |
| Long Term Liability | Long Term Liability | Direct mapping |
| Equity | Equity | May need restructuring for NetSuite equity accounts |
| Income | Income | Direct mapping |
| Cost of Goods Sold | Cost of Goods Sold | Direct mapping |
| Expense | Expense | Direct mapping |
| Other Income | Other Income | Direct mapping |
| Other Expense | Other Expense | Direct mapping |
Item Type Mapping
| QuickBooks Item | NetSuite Item | Notes |
|---|---|---|
| Inventory Part | Inventory Item | Average cost method; set costing on import |
| Non-inventory Part | Non-inventory Item | For sale or purchase only |
| Service | Service Item | For sale, purchase, or both |
| Inventory Assembly | Assembly Item | Recreate BOM in NetSuite |
| Group | Kit/Package | Similar concept; recreate components |
| Discount | Discount Item | Direct mapping |
| Payment | Payment Item | For deposits received on invoices |
| Sales Tax Item | Tax Code | Different structure; configure tax codes separately |
| Subtotal | Subtotal Item | Direct mapping |
Address Field Mapping
QuickBooks address fields don't map directly to NetSuite:
| QuickBooks | NetSuite |
|---|---|
| Bill To Line 1 | Addr1 (or Addressee if company name) |
| Bill To Line 2 | Addr1 or Addr2 (depends on content) |
| Bill To Line 3 | Addr2 |
| Bill To City | City |
| Bill To State | State |
| Bill To Zip | Zip |
| Bill To Country | Country |
Common Gotchas
Pitfalls and traps to watch for when migrating data from QuickBooks to NetSuite.
Transaction Reversal Issues
QuickBooks handles voided/deleted transactions differently than NetSuite:
- Voided checks: QB may show $0 balance but original entry exists. Don't migrate voided transactions.
- Deleted transactions: Gone from QB -- no trace. Reconciliation gaps may appear.
- NSF checks: May be manually reversed in QB. Verify payment applications.
Payment Application Complexity
QB payment applications don't always transfer cleanly:
- Overpayments may be applied differently
- Credits and payments mixed on single transactions
- Discounts taken at payment time
Class/Department/Location Mapping
QB uses these as optional tags. NetSuite treats them as structured segments:
- Class: Maps to Class in NetSuite -- or could be Department depending on use
- Location: Maps to Location -- but NetSuite Locations are more structured
- No Department in QB: May need to create from scratch or derive from other fields
Inventory Costing
- QuickBooks uses average cost only
- NetSuite supports average, FIFO, LIFO, standard, lot, and serial costing
- If switching to FIFO: import opening inventory as single lot at average cost; FIFO applies going forward
- Don't try to recreate historical cost layers -- not worth the effort
1099 Vendor Data
- QB stores Tax ID (SSN/EIN) for 1099 vendors
- Export separately -- may not appear in standard vendor export
- Verify 1099 checkbox is set on vendors in NetSuite after import
- Handle this data securely -- contains sensitive PII
Open Transactions
Special handling required for open POs, SOs, AR, and AP during the QuickBooks to NetSuite cutover.
Open Purchase Orders
QuickBooks open POs require special handling:
Partially Received POs
Import only the remaining quantity, not the original order quantity:
Remaining = Original Qty - Received Qty
Service-Based POs
For POs used for service contracts (where you bill against them multiple times):
- Set quantity = total contract value
- Set rate = $1
- This allows multiple bill receipts against the PO
- Don't use quantity of 1 with full rate -- closes the line prematurely
Use Items, Not GL Accounts
When creating PO lines in NetSuite:
- Use Items: Allows multiple bill receipts per line
- Avoid GL accounts on lines: GL account lines don't support partial billing
Open Sales Orders
Similar principles apply to sales orders:
- Import remaining quantity only for partial shipments
- Link customer deposits to sales orders after import
- Set "To Be Emailed/Faxed/Printed" to False
Open AR/AP
For open invoices and bills:
- Use original invoice/bill date (for aging accuracy)
- Post GL impact to cutover period (not original period)
- Include document number from QB for reference
- Verify aging report matches legacy before cutover
Resources
Recommended partners, podcasts, articles, and related guide content for QuickBooks to NetSuite migrations.
Recommended Partners
For complex QuickBooks to NetSuite migrations, consider specialists:
- OptimalData Consulting -- QB to NS migration specialists (90+ migrations)
- Implementation partners with biotech/life sciences experience: Sikich, SquareWorks, Centium Consulting
Podcasts & Interviews
- Anchor Group Podcast: Data Migration 101 -- ROI of data migration, QB to NS strategies
- Salto: NetSuite Migrations -- Python for migrations, best practices
Articles
- OptimalData Resources -- QB to NS migration articles and templates
- Prendio: Interview with Migration Expert -- Biotech migration insights
Related Guide Content
- Phase 11: Data Migration -- Complete migration methodology
- Chapter 11.5: CSV Templates -- Import templates and best practices
- Chapter 11.11: Open Transactions -- Detailed open transaction handling
