QuickBooks Migrator in ERPNext: Migrating Your QuickBooks Online Data
The QuickBooks Migrator lets you bring your QuickBooks Online data into ERPNext accounts, items, customers, suppliers, and transactions. This page covers how to set it up, how to run the migration, and exactly what happens to each kind of record when you fetch the data.
How to set up the QuickBooks Migrator
Create a QuickBooks Online App
- From the awesome-bar, go to the QuickBooks Migrator doctype.
- Go to the Intuit Developer Portal and sign in (or sign up).
- Open the My Apps page and click Select APIs.
- Under QuickBooks API, check Accounting.
- Click Create App, you’ll land on your app’s dashboard.
- Go to the Keys tab, then the Production Keys section, and complete the requirements.
- A Redirect URL is generated in the QuickBooks Migrator doctype add it to the list of Redirect URIs in your Intuit app (under Production Keys) and save. Make sure the URL starts with https.
- From Production Keys, copy the Client ID and Client Secret into the QuickBooks Migrator doctype.
- Save the QuickBooks Migrator.
Connect to the QuickBooks Online API
- Click Connect to QuickBooks.
- A new browser tab opens and asks you to log in.
- If you have more than one company, select the one you want to migrate, then click Connect.
- On successful authorisation, the tab closes and the indicator shows Connected to QuickBooks.
- In the QuickBooks Migrator, select the Company you want to migrate your data into, and save.
Migrate the data
- Click the Fetch Data button.
- The indicator changes from Connected to QuickBooks to In Progress, with progress bars showing the migration status.
- This takes a few minutes depending on the size of your data.
- When complete, the indicator changes to Complete or Failed.
What happens when you click Fetch Data?
The sections below explain how each type of QuickBooks record is handled as it’s brought into ERPNext.
Account
Existing Chart of Accounts: ERPNext creates a chart of accounts when a company is made, and those accounts are kept.
Account naming: to avoid collisions with existing accounts, all QuickBooks accounts get a “- QB” suffix. For example, Job Expense becomes Job Expense – QB. ERPNext also encodes account names with the company abbreviation, so it becomes Job Expense – QB – AZ (assuming AZ is the company abbreviation).
Root accounts: five root accounts Asset, Equity, Expense, Liability, Income are created, and every account becomes a child of one of these depending on its type.
Group accounts: QuickBooks allows transactions on group accounts, which ERPNext doesn’t. To handle this, each group account gets a child with a hyphenated name, so Job Expenses and Job Materials become Job Expenses, Job Expenses – 1, and Job Materials.
Name collisions: QuickBooks allows multiple accounts with the same name, which ERPNext doesn’t. Each duplicate gets a hyphenated name so a second Job Materials becomes Job Materials – 1.
Item
Naming: all items get company-encoded names Pen becomes Pen – AZ.
UOM: all items are assigned Unit as the default UOM, and Unit is allowed to hold fractional values.
Inventory: regardless of whether an item is an Inventory or Non-Inventory item in QuickBooks, no inventory-related information is kept.
Customer and Supplier
All customers and suppliers get company-encoded names, e.g. a name like Pen becomes Pen – AZ.
Invoice
Variants: QuickBooks has four transactional variants of Invoice, all saved as a Sales Invoice:
- Invoice → a Sales Invoice.
- Sales Receipt → a POS Sales Invoice.
- Credit Memo → a return Sales Invoice (Credit Note).
- Refund Receipt → a return POS Sales Invoice.
Discount and markup: QuickBooks uses special accounts for markup and discount; ERPNext handles these differently, so instead all items reflect the change in their income accounts.
Shipping: for invoices with shipping, an item named Shipping is added to the item table.
Round off: ERPNext rounds differently from QuickBooks, so for invoices with tax and a currency different from the company currency, the Sales Invoice grand total may differ from the QuickBooks invoice.
Special case: if a QuickBooks invoice is linked to a Delayed Charge or Statement Charge, an equivalent Journal Entry is created for it.
Bill
QuickBooks has two transactional variants of Bill, both saved as a Purchase Invoice:
- Bill → a Purchase Invoice.
- Supplier Credit → a return Purchase Invoice.
Other
The following are saved as Journal Entry: Advance Payment, Bill Payment, Cheque, Credit Card Credit, Expense, Inventory Qty Adjustment, Journal Entry, Payment, and Tax Payment.
Tax
For every QuickBooks Tax Rate, an ERPNext account is created.
Custom Fields
The QuickBooks Migrator adds the following custom fields:
- Company field — on Customer, Item, and Supplier.
- QuickBooks ID field — on Customer, Item, Journal Entry, Purchase Invoice, Sales Invoice, and Supplier.
NOTE
The QuickBooks ID custom field is what keeps each migrated record traceable back to QuickBooks. If you ever need to reconcile a migrated invoice or supplier against the original, that field is how you match them.
TIP
Run the migration into a fresh or test company first and review the results the renaming (- QB suffix, company abbreviation, hyphenated duplicates) and the rounding differences on multi-currency taxed invoices are easier to understand on a trial run than on your live books.
Related Topics
- Chart of Accounts
- Sales Invoice
- Purchase Invoice
- Journal Entry
- Company
SUMMARY
The QuickBooks Migrator imports QuickBooks Online data into ERPNext. Set it up by creating a QuickBooks Online app on the Intuit Developer Portal, adding the generated https Redirect URL, and entering the Client ID and Client Secret; then connect, select the target company, and click Fetch Data. On migration, existing ERPNext accounts are kept while QuickBooks accounts gain a “- QB” suffix and company abbreviation, with hyphenated names handling group accounts and duplicates under five root accounts. Items get company-encoded names, a Unit UOM, and no inventory data; customers and suppliers are company-encoded; invoices and bills map to Sales and Purchase Invoices (with special cases as Journal Entries); other transactions become Journal Entries; each tax rate becomes an account; and Company and QuickBooks ID custom fields are added for traceability.