Hi QuickBooks, I'm CiviCRM. Can We Be Friends?

CiviCRM does a good job at managing fundraising, members, event planning and more.  It contains information on money collected from sources such as online donations, event fees, membership fees, online purchases and fees for service. Many nonprofits use QuickBooks to provide an overall picture of revenue and expenses; however, QuickBooks doesn't offer the freedom to manage relationships the way CiviCRM does.  The need arises for income captured in CiviCRM to flow to Quickbooks. Currently this can only be done with a manual process that is time consuming and error-prone.

The Goal

To write a module that allows CiviCRM contributions and contact information to be inserted into QuickBooks (2009 Premier Non-Profit, since that's what we use) eliminating the manual process. At the very least CiviCRM should be able to communicate with QuickBooks in the following ways:

  • Map sources of income in CiviCRM with accounts in QuickBooks.
  • Handle Donations, Deposits and Payments.
  • CRUD contacts/customers.
  • A seamless process that requires little management from the staff.

The Choices

Intuit provides two mechanisms for communicating with QuickBooks:

  1. RDS (Remote Data Sharing) client/server.
  2. QBWC (QuickBooks Web Connecter).

QBWC seems to be logical choice, since it works across the network, doesn't require client software, and the connector is installed as part of a normal QuickBooks installation. In addition, QBWC uses XML and the schema can be validated against all versions of QuickBooks.

The Solution

Since CiviCRM and Drupal are both written in PHP, it would stand to reason that any integration with QuickBooks should also be in PHP.  Not really a requirement, but it sure makes things easier.

Keith Palmer (Keith57 on IDN) wrote a PHP/QBWC SOAP server that implements most of the functionality QBWC.  His code is open source, actively developed and supported.  He responds quickly to questions via e-mail/chat/forums and he "eats his own dog food" by supporting four production sites who use his framework. The advantage to using his framework, is that he's simplified the process of error handling, creating/destroying the server, authentication, messaging, objects that map to QuickBooks resources, etc.

QBWC is a thin SOAP client (QuickBooks) configured by an XML file to connect manually, or at defined intervals, to a SOAP server (Keith's framework/CiviCRM).

The implemented SOAP server (a single PHP file ~100 lines) grabs items that are on the queue, prioritizes them and passes them to the SOAP client once it connects (a REQUEST).  The SOAP client processes the request and passes a response back to the SOAP server (a RESPONSE).

So, you're asking, "If Keith's framework is so great, why isn't the CiviCRM/QuickBooks integration already done?"

The framework only provides the structure to create the server, add items to the queue, authenticate a client and build valid (and sometimes invalid) XML messages.  These "hooks" need to be customized to work with CiviCRM data; additionally some code needs to be written that implements this framework within CiviCRM either as a module or as part of core.

Next Steps

PHPUnit is being used to help flush out the capabilities of the framework and find bugs. Our first task was to write some unit tests that exercise his framework and work with QB objects. We contributed those tests (over 1800) back to and they are now included in nightly builds. This process proved invaluable since it uncovered several bugs and landmines.

At this point, we've spent ~40 hours in R&D and testing and countless talking QuickBooks with other nonprofit CiviCRM users. We are looking for funding to prototype, test, solicit community feedback and turn it into a CiviCRM module.

Why does Dharmatech care so much about CiviCRM and QuickBooks?

We are a nonprofit, we're developers and we "eat our own dog food." We use Drupal/CiviCRM and QuickBooks Premier 2009 to manage our organization and outreach.  In CiviCRM, we store grant income, fees for service, and income collected online from donations.

Double data entry is not in our blood and we want to avoid the manual process of exporting from CiviCRM and importing into QuickBooks. Staff time is our most treasured resource.  Since we are preaching enterprise-level open source systems for nonprofits, we feel that we should embody that value and philosophy.

Comments

I have long felt that this is

I have long felt that this is an important step forward for CiviCRM. I wish you every success in this development!

two way (show qb data in civicrm) / track "contribution" usage.

Yes, this would be extremely valuable...

You should also consider this a feature for "true non profit transparency"... features that would allow us to display online information FROM quickbooks (in addition to exporting data INTO quickbooks).

I have long envisioned a website that kept the public abreast of finances, and allowed members access to dig even further... following up on their donations to track "how their money was used"....

Amen

Just want to support pursuitofliberty's suggestion, but for a different reason. We get many more contributions by paper cheque than on the web site. The paper cheques are manually entered into quickbooks, and then exported via CSV file to CiviCRM so that those individuals get the newsletter etc. People tend to use a formal name on a cheque but use an informal name on the website, so there tend to be mismatches and duplicates. Support on this is a real chore. We would really like the data flow to be two-way to keep the systems in synch.

Nightly build link not working...

Nightly build link not working...

I just checked and it's

I just checked and it's working. Hope it works for you now: http://consolibyte.com/build/

Any update or progress?

Any news on this integration effort?

Sadly we've been unable to

Sadly we've been unable to commit any additional development time toward QB integration. We're still interested in pursuing this idea but it would require funding from potential users.

out of curiosity

How much money would it take to make this happen? Alternatively, would you be willing to accept help from an outside developer? What skills would they need to contribute to this?

$2500

We initially hoped to raise $2500 to fund the project. Yes, we're open to community support and contributions whether it's code, ideas, or fiscal. :) Unfortunately this project has been sitting idle for a few different reasons so before accepting any additional help we would need to reevaluate the requirements, code base, and possibly the approach.

Feel free to contact us if you're interested in helping.

any discussion of payment processor integration

Curious if your initial investigation and work included development of a plugin to integrate with the Quickbooks merchant gateway services.

No, we were trying to scratch

No, we were trying to scratch our own itch which at the time was QuickBooks 2009 Premier Non-Profit (client software). Interesting to note, Keith was successful in getting his framework adopted by Intuit into their code.intuit.com realm. The new name is 'QuickBooks PHP Dev Kit.'

Great to see Keith's efforts continuing to gain momentum.

QB merchant gateway payment processor

How much would it cost to get the QB merchant gateway payment processor integrated into CiviCRM 3.1? We are a non-profit (of course) and have a limited budget available for this.

We haven't looked at trying

We haven't looked at trying to integrate the QB Merchant Gateway with CiviCRM. The cost depends on functionality, complexity of the gateway and whether or not previous payment processor code can be re-used.

What's the name of your nonprofit?

If you are interested in hiring us, send an e-mail to sales@dharmatech.org and we can discuss pricing.

Hi, Is this still a live

Hi,

Is this still a live project? I'd be interested to know where you're up to and how much more resource is needed to push it forward to completion?

Cheers,
Mark

Mark, *Live* is a relative

Mark,

*Live* is a relative term. :) We haven't actively contributed to this project since late 2009. It's been low on our priority stack since we began seeking community support to help further development. The last bit of code checked in uses the QB PHP framework to talk to a local install of QuickBooks from CiviCRM. The remaining piece would be to figure out the best approach to store the state of the transaction so that CiviCRM knows a transaction has been processed. Future development could include integration with QB Online and QB Merchant Accounts. Best estimate for finishing up the work with QB Pro/Nonprofit/Premier would be 20 - 30 hours.

If you're a developer and would like to discuss project goals, code base and defining some deliverables, please e-mail oss "at sign" dharmatech.org.

If you're a funder and would like to contribute to this project, we're happy to outline our priorities and provide a roadmap for how your funding dollars will be used.

  • Showing 1-15 of 15

Post new comment

Image CAPTCHA
Enter the characters shown in the image.