Quickbook Desktop Development Basics - quickbooks

I've been asked to develop some software for a friend who has a business that he manages using Quickbooks Desktop. I don't have Quickbooks Desktop, and I'm not quite sure how to get started. I've read the docs for about a week now and can't seem to figure out the first step.
From what I've read, it seems like maybe the Quickbooks application starts a web server and mine application will be issuing HTTP requests against that web server ? It would be nice if I didn't have to have the Quickbooks application to do this development; is there a way to read the data file itself ? Does it cost money to develop software that uses this API ?
It looks like I would probably like to use the V2 XML protocol for what I'm trying to do which is: retrieve checks and deposits, make a monthly summary, format that summary according to his specifications, and create a PDF of the statement.

From what I've read, it seems like maybe the Quickbooks application
starts a web server and mine application will be issuing HTTP requests
against that web server ?
That's one possible way to implement things.
If you give more detail about specifically what you're trying to do (what programming language? what version of QuickBooks?) you'll probably get better recommendations than that route.
It would be nice if I didn't have to have the Quickbooks application
to do this development; is there a way to read the data file itself ?
You will have to have QuickBooks, there's no way to read the raw datafile.
It's cheap on Amazon - buy it there.
Does it cost money to develop software that uses this API ?
There are no charges while developing, and for one-off/custom/in-house integrations like you're talking about, there are no charges at all.
It looks like I would probably like to use the V2 XML protocol for what I'm trying to do which is:
Be aware that v2 and v3 is technically only for SaaS applications (e.g. you have to be reselling this as an app, and allowing many people to connect their QuickBooks to your app).
According to Intuit, you should be using the SDK.

Related

Integrate quickbooks with rails and angularjs application

I am developing internal CRM for a client, in which it is required to synchronize with quickbooks for all financial transactions.
I am stuck here. I do not know where to start? Someone asked me to start with webconnector. The CRM application is on AngularJs and rails. I searched but couldnot find anything specific to integration of quickbooks desktop with Angularjs and rails.
So Please please can any one there help me out? I want to to know the full process and if any sample code available for the same in rails and angularjs would be great help.
Thanks
Start by downloading the QuickBooks SDK:
https://developer.intuit.com/docs/0250_qb/0020_get_set_up/sdk_downloads
Install it, and look at the file named:
QuickBooks Web Connector Programmers Guide, QBWC_proguide.pdf
It's about 100 pages, and a spec/guide of what you'll need to implement since there's not much else out there pre-built for RoR.
At a (very) high level, you're going to create a SOAP service which listens for HTTP requests. There's a number of methods you'll need to implement:
authenticate(...) - QuickBooks will call this to authenticate to your service
sendRequestXML(...) - QuickBooks will call this to ask "What data do you want to exchange?" at which time you respond with a qbXML request telling to add an invoice, or add a customer, or give you a list of customers, or etc. etc. etc.
receiveResponseXML(...) - When QuickBooks has finished doing whatever it is you told it to do in the previous step, it will call this method to let you know what happened (e.g. was whatever you told it to do successful or not).
There's more details here that you should read:
http://wiki.consolibyte.com/wiki/doku.php/quickbooks_web_connector
The QuickBooks SDK also includes examples in C# and Java for this. Look for the Web Connector-specific ones, not the COM/QBFC examples (those aren't relevent to you).
You might also look at this for reference/ideas (it's in PHP, but might still serve as a reference):
https://github.com/consolibyte/quickbooks-php
https://github.com/consolibyte/quickbooks-php/blob/master/docs/web_connector/example_web_connector.php

QuickBooks Online from Desktop application

I am new to QuickBooks and all my searching has been leading to conflicting answers. I really need to know this to move forward.
We have an on-premise application (legacy MFC app if that matters). Some of our customers use QuickBooks Online and we can send information up to it. In the past we have used QBXML which I believe is not supported for online anymore.
Everything I read at intuit.com talks about web applications. I think I have to have OAuth security and I do not see how intuit is supporting that from a non-browser based application.
I cannot believe that intuit would not have an answer for this situation so I must be confused.
So, can I send data to QuickBooks Online from a desktop application?
If yes, which API/SDK should I be using?
If I need OAuth how exactly do I implement this?
Does any of this require an independent security review?
I think I just need a little help getting pointed in the right direction.
Thanks
Unfortunately I think you have the most difficult scenario in the QB ecosystem.
I've used the DevDefined OAuth library with some success:
https://github.com/bittercoder/DevDefined.OAuth
You can get this to work on the desktop if you have a localhost server that the browser can redirect to on the OAuth callback.
Anything that talks to QBO needs to use the QBO API v3 now.
For a custom app that talks to QBO, you would need to set up your app # Intuit to run in development mode, so it wouldn't have to go through their security review, etc. But that limits the number of connections you can have (I think it's 10). So it might not work in your case. Also, if you're distributing your app to "normal" customers it may not be the best user experience, and probably isn't practical, to set it up so OAuth will work on the desktop.
You might just have to bite the bullet and create an intermediate web service on something like Azure or Heroku, then go through the whole process of getting Intuit to bless your app for production.

How should I import data into QuickBooks from my Rails application?

I'm working on a Rails project that needs to be able to import/export (mostly import) invoice data to/from QuickBooks. In Googling, the QuickBooks SDK and Web Connector come up often. However, both seem to only be for the Windows desktop versions. This QuickBooks instance is on a Mac.
The import can either be via an API or, if possible, a file could be generated from within the web app that could later be imported manually.
Currently, QuickBooks 2009 is what's being used. However, assume we can use nearly any version of QuickBooks. Online or desktop (Mac).
What would the best route be to get invoice data to/from the Rails application to QuickBooks?
Unfortunately, QuickBooks for Mac does not support any real method of integration. It's definitely the "black sheep" of the Intuit family.
The closest you can get is IIF file imports/exports.
There is detailed information on this (deprecated, and very limited) file format over here:
http://support.quickbooks.intuit.com/support/articles/HOW12778
You would be so, so, sooo much better off moving off of QuickBooks for Mac through, as the APIs for both QuickBooks for Windows (Web Connector/SDK/COM) and QuickBooks Online (REST v3 APIs) are much, much better than IIF imports/exports.

How to create a server accessible by an iphone app

I a thinking of creating an iPhone/iOS app that would include a feature where one user could create a list of words and then save them to their account on a server. Also (and this is very important), the user could share their list with other users by giving them permission.
So my question is, how can I go about creating such a server? For right now, I have a home computer (running Windows XP that just stores data for my music system) which I can use to host the server. I am also open to the use of other online storage services like Google Drive or Dropbox (I can't remember if Amazon does anything like that). However (and I know this may complicate things a bit), but at least for now, I want/need to stick with free services/options.
Just to recap, the key features that I am looking for are:
create users/accounts (on the server)
eventually I may [try] to incorporate the use of other services to log users in like with their email account, OpenId, etc.
the ability to access (log in to) the server (with credentials) from my app
the ability to send/receive data between the server and my app
the ability to share data between users
I know this is a lot to ask for, but if anyone has any suggestions or can get me going in the right direction, it would be much appreciated.
The basic setup would be as follows:
Backend: Database (MySQL), Web server (Apache), with server side scripting (PHP).
Client: iOS device with developed app.
Communication: use HTTP client/server model, communicating with something like JSON.
This is much the same setup as a web server, but instead of serving html/css/javascript etc the results will be JSON.
As far as implementing specifics such as login in, and sharing data between users, this is purely dependent on your implementation. This is not trivial, and not something that can be easily stated in a single post.
Hope this helps.
You could build your own webservice in PHP, Ruby or Python. If you do so I would recommend building a RESTful webservice (http://en.wikipedia.org/wiki/Representational_state_transfer) and then use RestKit (http://restkit.org/) to handle the data in the iOS app. Especially RestKit's CoreData integration is nice in my opinion.
Another solution would be using a service like Parse (https://parse.com/products/data). The first million or so requests per month are free but after that it could get pricy. I personally have not tried it so I couldn't tell you if it is any good.

Using QBWC 2.0 to sync QB files

I've just begun to read the QB Developer documentation and have come to the conclusion that to write a web-enabled application that will sync/remote backup QB files between two machines over the Internet, that the QBWC is the 'approved' way to accomplish this task. The .NET application samples in the QB SDK (V12) are not using WCF but WSDL and SOAP.
But before I commit to going that route, I am asking if anyone has a better approach. I'd prefer to use WCF and MS Sync Framework, but I don't want to head down that road if it will mean using a cannon to kill a mosquito.
Thanks
You really hinted at two separate goals here, so I'll address each specifically:
... remote backup QB files between two machines ...
If your goal is BACKUP then the Web Connector is certainly not the answer. The purpose of the Web Connector is to enable integration between QuickBooks and web applications, via the QuickBooks API/SDK. Since not all data stored within QuickBooks is accessible via the API, the Web Connector is not appropriate for backup. It is impossible to get a complete, accurate backup of the entire QuickBooks data set via the Web Connector.
On the other hand...
... web-enabled application that will sync ...
If your goal is to allow integration/sync of data between your web app and QuickBooks, the Web Connector is a decent solution. Yes, it uses SOAP (with a grand total of only about 5 very simple methods). No, you can't use WCF/anything else without writing your own version of the Web Connector.
If you add more details about specifically what you're looking to do with specifically what data, you'll probably get some better answers and suggestions about approach.

Resources