Drupal Ubercart module UC QB per order

Ubercart QuickBooks integration solution

1. What is UC QB per order?

UC QB per order is a drupal module. It works with drupal e-commerce module Ubercart and QuickBooks API module to synchronize Ubercart orders to Intuit's QuickBooks Accounting Software.

2. Overview

Integrate Ubercart with Intuit QuickBooks by using the QuickBooks Web Connector. Simply install the required modules and proper settings, QuickBooks will import the orders information from an Ubercart store by one figure click.

3. Features

  • Able to choose which orders you want to import to QuickBooks.
  • Import Ubercart orders into Quickbooks as Sales Receipts or Invoices.
  • Match Ubercart with QuickBooks customers and items or create if non-existent.
  • Map Ubercart with QuickBooks accounts, shipping, taxes, payment method and customer message.
  • Create a QuickBooks class to track your orders.
  • Multiple currencies supported.
  • Tests with QuickBooks 2009-2011 US and Canadian version.

4. Requirements

  1. Drupal Ubercart web store installed and proper setup.
  2. Drupal QuickBooks API module installed.
  3. A SSL certificate installed at your web store.
  4. QuickBooks 2009-2011 US or Canadian version (other versions may work but have not been verified).
  5. QuickBooks Web Connector (free download here).

5. Installations

In order to better illustrate, I have used a specific web store centparts.com for this tutorial.

5.1 QuickBooks API installation

Download QuickBooks API. Install and enable QuickBooks and Web connector modules.

5.2 Web Connector installation

Download QuickBooks Web Connector and install on the same computer system in which your QuickBooks software is installed on.

5.3 QuickBooks API & Web Connector setup

5.3.1 Create a new user (I choose username 'qbwc_user') at your Drupal store.
5.3.2 Navigate to Drupal user permission and enable 'access qbwc' for 'anonymous user' (I have to give 'anonymous user' access permission to get it to work.).
5.3.3 Navigate to Administer > Site configuration > Quickbooks and fill in the form and save configuration.
5.3.4 Click link "Download QWC file" to download the 'drupal.qwc' xml file.
5.3.5 Create a new drupal page and set URL path is 'qbwc'. Make sure you can access https://centparts.com/qbwc by browser. (This step may not be necessary, but it is the only way I got it to work for me.)
5.3.6 Launch your QuickBooks Web Connector which installed at step 5.2.
5.3.7 Launch your QuickBooks software and signin to your company file.
5.3.8 Click the 'Add an application' button and select 'drupal.qwc' which downloaded at step 5.3.4.
5.3.9 QuickBooks will prompt a dialog to ask you to authorize new web service.
5.3.10 Click OK to close the dialog. You will notice the Web Connector added a new application. Add user qbwc_user password to the dialog.
5.3.11 Now you can delete the page created at step 5.3.5.
5.3.12 Open QuickBooks Preferences dialog (Edit > Preferences...) and go to the Integrated Applications > Company Preferences tab.
5.3.13 Pick an application (in this case it is nano1store) and click Properties... button.
5.3.14 In the Properties dialog, uncheck Prompt before allowing access, check Allow this application to login automatically and choose login as. Click OK to close the dialog. If you have set the company file path in 5.3.3 form, now your Web Connector is able to import orders to QuickBooks even if QuickBooks is not running.
5.3.15 Test Web Connector is working. Wait 5 minutes the Web Connector will auto-run. If you can't wait, do as 5.3.16.
5.3.16 Check the checkbox before the Application name, and click Update Selected button.
5.3.17 If you see the Status column display "Last result: No data exchange required" then your Web Connector has worked properly.

5.4 UC QB per order installation

5.4.1 Download UC QB per order module and install as usual.
5.4.2 You need to wait a few minutes and navigate to Administer > Site configuration > UC QuickBooks per order settings. If you see the screen shot below, you will likely need to wait longer until UC QB per order module communicates with QuickBooks has completed.
5.4.3 Once the form is populated, you need to finish the form according to your parameters. (your form will not be the same as mine it depends on your own parameters)
5.4.4 In order to track store orders in QuickBooks, create a class in QuickBooks and map to store.
5.4.5 If you need to use multiple currencies feature, copy the file qbxml.8.0.inc in UC QB per order module to QuickBooks API module folder qb/includes/qbxml/. And modify qb.inc as below. (I agree it's not good to hack other module, but I have no choice.)

$form['qb_version'] = array(
'#type' => 'select',
'#title' => t('Quickbooks API version'),
'#options' => array(
'5.0' => '5.0',
'6.0' => '6.0',
'7.0' => '7.0',
'8.0' => '8.0' // new
'#default_value' => variable_get('qb_version', QB_VERSION_DEFAULT),


Now that you have done all settings!

6. Testing

6.1 Navigate to Administer > Store administration > orders > view orders.
6.2 Click view order icon into order detail page. You will see a pane at the bottom.
6.3 Choose are going to import as sales receipt or invoice and click submit.
6.4 Wait a few minutes or repeat 6.2 - 6.3 add more orders in import queue.
6.5 Check your QuickBooks, the Ubercart order has been imported to QuickBooks successfully!
6.6 Check the order in Ubercart.

7. Download

At Drupal site:
git clone --branch master toptons@git.drupal.org:sandbox/toptons/1279950.git uc_qb_per_order
At GitHub:
At Google code:

8. Wrapping up

This ends our quick tutorial of UC QB per order module. Be sure to give it a try and compare how much time can be saved by manually recording your online orders into QuickBooks!
Comments are welcome and will help us to improve UC QB per order module.

9. Change logs

[Nov 8, 2011]

  • correction of using QuickBooks US version importing tax.
  • Change sales receipt deposit to bank account.
  • Follow drupal coding standard.
Drupal 6 quickbooks module128.35 KB

stuck on last step

Hi, I stuck on 5.4.2 - variables are not appearing for very long time.
The difference I noticed from described is on step 5.3.3, version 8.0 is not in the list, only 7.0. And QB Connector returns this message now:

Via receiveResponseXML(): Sending error message back to application:
HRESULT = 0x80040423
Message: The version of QBXML that was requested is not supported or is unknown.

Any steps to trace and fix the issue?

Thank you.

Please follow the step 5.4.5

Please follow the step 5.4.5 to get version 8.0.

Which version and language of your QuickBooks you are using?

Stuck at 5.3.17

Keep getting the error:
QBWC1012: Authentication failed due to following error message.
The request failed with an empty response.

I have php-soap installed, so it should have worked?

Excited to try this out but wondering about inventory syncing...

I was wondering if this syncs inventory both ways between the quickbooks and ubercart?

If it does I'll be thrilled!

Eric Constantinides

Interested to know how syncing the inventory

Since the orders have imported into QuickBooks from Ubercart, it will be great to see other way around.


First of all, thanks for the module and the tutorial. I'm having a few issues. I eventually got customers to import into Quickbooks but no receipts/invoices. However, I had to make a few modifications in the module for it to work at all (outlined below).

Some info: I'm using the latest drupal QB api module 6.x-1.x from git (http://drupalcode.org/project/qb.git/shortlog/refs/heads/6.x-1.x. Notice the latest dev package download does not have module in it anymore. The README says "Nothing to see here, please use a versioned branch instead.").
Also, I'm using Quickbooks Pro Plus 2011.

1) I was not able to make the api 8.0 changes because there is no qbxml.8.0.inc in the UC QB per order module to copy over (and couldn't find it on google). So I'm still using 7.0. Not sure if this is the cause of my problems.
2) After installing the UC QB per order module, I got "unsupported operand" php errors on settings page because $acct in _get_qb_accounts() had no values for the "CostOfGoodsSold" and "Income" and "Bank" keys. (To get around these errors, I hacked in an isset() check) Could this be because I'm still using api v7.0?
3) After connecting with the Web Connector and visiting the settings form (/admin/settings/uc_qb_per_order), I was only able to save the settings after making the "UC shipping map to" field not required (in code) because it was not getting a value.
4) I'm getting this error after I make an order importable as a Receipt and run the Web Connector. "Import to QuickBooks failed. Error code: 3140. Error message: There is an invalid reference to QuickBooks Account "80000009-1326334369" in the Items. QuickBooks error message: You cannot associate an item with Sales Tax Payable, Undeposited Funds, accounts receivable, accounts payable, or non-posting accounts. Usually, if you sell the item, use an income account; if you buy it, use an expense account."
I did create an Income account in Quickbooks and I expected it to appear somewhere in the UC QB per order module settings (/admin/settings/uc_qb_per_order) fields but it does not. At this point, customer data DOES import and I can see them listed in the Customer Center window of Quickbooks. Yay!

Any insight would be greatly appreciated. I am more than willing to pay for support as I have a client breathing down my neck to get this working. :) I appreciate your time.

Hi, I added the

Hi, I added the qbxml.8.0.inc, please copy to qb module includes/qbxml folder. Please try again. If you can send me the QuickBooks web connector log file (in VERBOSE mode) then I can check the issue for you.

Simply match Ubercart and QuickBooks inventory once manually

Simply match Ubercart and QuickBooks inventory once manually. Then Ubercart and QuickBooks will deduct the inventory synchronously. But it does not work if you have multiple Ubercarts need to import to the same company file.

Same php error

I too am getting the below php errors:

PHP Fatal error: Unsupported operand types in /home/site/public_html/sites/all/modules/ubercart/uc_qb_per_order/uc_qb_per_order_settings.inc on line 73

Can anybody supply the fix for this..??


This error is your

This error is your uc_qb_per_order didn't get information from your quickbooks yet or it even didn't connect to quickbooks. Check steps at 5.3 also make sure php-soap was installed.

Full version of qb project?

Do you have a full version of a late dev version of the qb drupal project. The files of it have disappeared from Drupal and has been replaced with a blank "nothing here" note in the download.

The developer quit. => http://drupalcode.org/project/qb.git

Just uploaded

You can download the attachment of this page.

Where is the attachment?

Thanks - Where is the attachment? I cannot find a link anywhere to download it

Opened the permission, please

Opened the permission, please check again.

Came up now on page refresh

Thanks - it came up now on page refresh

Query to create qb_user table

Do you have or know the query to create the qb_user table properly?

The QB module install did not create it and update.php does not create it. I get the error

qb_user' doesn't exist query: SELECT qdvid FROM qb_user WHERE uid = 1

I am trying to get where I can use the UC QB per order module but of course it won't work until there is Quickbooks Integration working

DB Tables for QB module

I had to hack together create table queries to create the missing tables qb_user, qb_data_and qb_data_value tables using the install modules in the qb.zip file above - and it cleared the query errors; now I have to get the SSL working through a proxy shared server before I can try the Web Connector. There is still no QWC file download working, but I know this is not your module - toptons.com to support, but I think I will eventually succeed with the help of the working QB.ZIP file posted here, and a manually built QWC file might work.

Thanks for the help of toptons.com

Need to add modules/qb/qwc folder

A "missing" empty folder called qwc must be created in modules/qb to get the download to work to download the QWC file - and it comes down called Drupal.QWC. Edit it with Edit_pad_lite if needed, but do not mess with the Owner and File ID numbers - they are needed by the SSL connection and Intuit's Quickbooks Web Connector programs to verify the connection. Now I still have an SSL issue - not the fault of the QB.zip package, and when I solve that it should connect at least.

To anyone else who reads this - as of 3/30/3012 - DO NOT UPGRADE to the latest Quickbooks Integration module on Drupal.org. It is an EMPTY FILE. You will need to change the datestamp manually on this QB.ZIP file above if you want the "out of date" status warning to go away.



I am building an online marketplace with ubercart marketplace (http://drupal.org/project/ubercart_marketplace) and I would like to integrate multiple sellers each separate quickbooks accounts. Is this possible?

Basically one online store with multiple sellers the way milo allows you to. http://milo.com/retailers/get-started.html.



Post new comment

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options

By submitting this form, you accept the Mollom privacy policy.