How to connect to QuickBooks online from a desktop application - quickbooks

OK. This question has been asked a number of times and answered. However, it seems Intuit changed things on their part so:
Their own latest documentation is no longer correct
All the answers I found so far on the Internet no longer work
Therefore, the only option left is to ask the same question again.
I'm building a console application in C# that need to import data (invoices, customers, etc.) to QB online. It is an internal integration application that will be used by only one company. I definitely do not want to go on the SaaS route.
By all accounts it seems that I should the QuickBooks QBXML SDK v12 and should registered the application in QBOE at "www.appreg.intuit.com". However, this address no longer exists and the registration procedure has changed. QBOE currently support three types of applications:
QuickBooks API - SaaS
Customer Account Data API
Payments (QBMS) App
By considering the functionality I need (create invoices etc.) I should probably create a "QuickBooks API" application. However, this is a SaaS application which is unusable to me.
The "Customer Account Data API" is definitely not what I need.
The only option left is the "Payments (QBMS) App" which does not seem to be the right choice either. However, this is the only one of the three application types that can be either hosted or desktop and have "AppID" and "AppLogin" attributes described in various integration articles on the Internet when using the traditional SDK.
Therefore, I created a "Payments (QBMS) App" (Desktop, Production), followed documentation and articles, did all required settings and used the traditional SDK COM objects to connect to QuickBooks.
During the first connection attempt I approved the application in my QBOE account and set the connection token. Gave all permissions to the connection with no user authentication required.
In the end all I got is the following uninformative exception thrown by the QBSessionManager.BeginSession method:
System.Runtime.InteropServices.COMException (0x80040403): Problem communicating with QuickBooks Online Edition
If I turn on log-in security a dialog appears prompting me to log-in and paste a ticket. Upon opening the log-in URL
https://login.quickbooks.com/j/qbn/sdkapp/sessionauth2?serviceid=2004&appid=[AppID]
the following message appears
There is a problem with sharing your financial data between applications.
Error Message: Application [AppLogin] is not designed to work with service 2004
I also tried using qbXML directly which resulted in a "400 Bad request" error.
Is connecting to QBOE via the SDK still supported and what I'm supposed to do to achieve that?

Go here to create a QBOE application - http://developer.intuit.com/Application/Create/QBOE.

You should use traditional QBSDK.
Please refer this link - https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/0250_qb
Thanks

Related

Gmail API OAUTH2 verify Desktop application

At work we have developed an individual customer specific software application that is in use for a long time. We have a new requirement in this same program to implement an option for sending emails directly from the program.
The user is able to add his own email account with the credentials and login through our program. For Microsoft and Gmail accounts OAUTH is implemented and something here is not very clear.
For Gmail-API we have made an OAUTH Client and Consent screen on Google Cloud Console which we need to publish and verify and here is where the problems start. I am not very clear with the whole process of verifying the app.
In the steps for verifying is stated that we should verify a domain for the app, but this software is not hosted anywhere on internet and is not publicly available, it is available to a number of specific users (2000-3000).
Also Google requires a YouTube video of the software to be available publicly, which we are not able to upload because of customer requirements. Also here is required a Data Protection Policy page for the application which we as a developers don't have because we are only developing the software.
Other thing that is not clear to me, how is this type of software rated by Google, internal or public?
Have anyone experience with this or something similar?
Verifying an app for one of the Gmail scopes is a very complicated process. This process depends upon which scope of authorization you are requesting of the users.
In your case you are trying to send an email so you are using the users.messages.send method from the Gmail api. This uses a restricted scope. Which means you will need to go though the full process.
First of it doesn't matter if your application is hosted or not. It also doesn't matter that you give this app to a limited number of users. What matters is the scopes you are using.
You will need to ensure that your domain has been registered via google search console. So this app will need a domain
Once that is done you will be able to host your website, and the privacy policy on that domain.
You will need to create a YouTube video showing your application running, and how authorization is used.
You will also need to submit to a third party security checkup of your application which is not free and will need to be done once a year.
All of this is needed because of your consent screen it doesn't matter if its hosted any where, It also doesn't matter if this is only available to specific number of users.
If all of the users are part of a single google workspace account, that has created your client id and client secrete then you can set the app to internal and you wont need to be verified. This only works for google workspace domain accounts.

Granting administrative consent

I'm exploring accessing mail (and sending mail) on behalf of other users. I have read about the graph api which would allow me also to handle chat messages later on.
I wanted to start implementing this with my personal account (#outlook.com) and followed basically this tutorial: https://cmatskas.com/create-a-net-core-deamon-app-that-calls-msgraph-with-a-certificate/ (this seems to be the same as the walkthrough in the portal)
I found questions and answers (like Microsoft Graph to send mail with Client Credential Flow (application permission) and personal account) but I do want to create a daemon app which seems not to work with a personal account (which makes sense because I could read Microsoft's end user customers data).
Furthermore, when trying to create such an app there is the following warning:
If I would create a development env for this I am still now working at a verified publisher, so I cannot develop an application to see if it fits our needs?
It is possible to have a developer sandbox from Microsoft for that purpose.
See https://learn.microsoft.com/en-us/office/developer-program/microsoft-365-developer-program-get-started for information on this

QBO, QBD, API and app authorization

It drives me crazy, please help.
I want to integrate QuickBooks Enterprise 2014 with my website.
I managed to create app via developer center.
I managed to sync data using Sync Manager.
I managed to see synced data i my appcenter account (company file).
I managed to implement OAuth authorization with QuickBooks connect button
I managed to use api explorer V3QBD (even though they say it's deprecated) to access synced data
now...
there is no option to choose desktop company file when authorizing... there is only a message saying I need QuickBooks Online subscription.
I don't want to subscribe to QBO, I want to access a company file synced via SyncManager.
Is it still possible ?
I read that you need to set your app to use desktop data source, but this option is not available anymore?
After one week of investigation I couldn't find answers to that, but one "you need to use web connector", is this true ?
please, confirm
thanks ahead
Unless you have been grandfathered in, you can not use sync manager and access QBD data through the API's. You will need to use the QBXML SDK and web connector for accessing desktop data.

Rails, QBOE, qbXML and integrating them all together

I am currently developing a Ruby/Rails app that will be used in-house as a sort of Enterprise application to support our business.
Our company uses Quickbooks Online to do almost all of our accounting, most importantly for invoicing.
I am looking for a way to automatically generate invoices from our Rails app into Quickbooks, as well as be able to pull customer balances and some other "basic" information into the Rails app to display on a customer information screen.
I have done a lot of research on the topic, and have yet to find an acceptable solution to what we're trying to accomplish.
Quickbooks Web Connector - Not applicable since are not running Quickbooks Pro
Intuit Anywhere app - The app we are using is certainly not a SaaS App, as it is specifically designed for our business, and the only Quickbooks file/account it will ever see is our own
Quickbooks Online/qbXML Gateway application - This seems to be the best fit
So I have spent considerable time with Keith Palmer's Consolibytes wiki, and Intuit's Official Documentation (which is great to get started, but doesn't really provide much help for the details), and have been unable to even link my application to quickbooks using the https://qbo.intuit.com/redir/addsdkapp?appid=YOUR-ID-HERE&appreferer=&appdata=1 link.
My server does have a GoDaddy generated SSL certificate, and I have visited the connection callback URL and have confirmed that everything is in working order there. However, I keep getting a "Failed to notify third party application about this connection" error. There is no evidence of a request from QB to my server in any of my logs.
So what I'm getting at here is this:
Is what I'm trying to do possible and/or practical?
Am I going the right way about it?
I'd really love to find someone out there who has done something like this before and maybe shed some light on the whole process.
Thanks!
So what I'm getting at here is this: Is what I'm trying to do possible and/or practical?
Yes.
Am I going the right way about it?
Almost. :-)
From what you posted:
My server does have a GoDaddy generated SSL certificate, and I have visited the connection callback URL and have confirmed that everything is in working order there.
It sounds like you registered in HOSTED mode.
Unfortunately, the Intuit servers don't consider GoDaddy certificates valid, and thus won't be able to HTTP POST your connection ticket to those servers. That's why you're seeing this:
Failed to notify third party application about this connection
Additionally, I believe they do reverse DNS checks, which will most likely fail because GoDaddy generally doesn't set up rDNS entries.
The solution is:
Do not register in HOSTED mode
Instead, register in DESKTOP mode.
Once you've registered, use this URL to register get your connection ticket:
https://login.quickbooks.com/j/qbn/sdkapp/confirm?appid=YOUR-APPLICATION-ID-HERE&serviceid=2004&appdata=1
(make sure to plug your actual application ID into the URL)
Instead of Intuit HTTP POSTing the connection ticket to you, the connection ticket will be displayed and you can copy/paste it. From there on in, it's as simple as HTTP POSTing additional HTTP requests to Intuit's servers.
Sample XML requests can be found on our QuickBooks integration wiki - make sure you use the DESKTOP mode examples.
Hope that helps clear things up!

Quickbooks Online Edition - Fetching data to display on website

I want to fetch real-time data from my Quickbooks Online edition's (India) account to display customer details like Open Balance, address etc. on my PHP website.
What is the best way to go about fetching data from Quickbooks Online Edition -
Do I follow the instructions in http://wiki.consolibyte.com/wiki/doku.php/quickbooks_online_edition#connecting_with_the_hosted_model_of_communication ? But this requires a website with SSL certificate.
Do I create a Intuit Anywhere app ( https://ipp.developer.intuit.com/0010_Intuit_Partner_Platform/0025_Intuit_Anywhere/1000_Getting_Started_With_IA ) and then use IDS (Intuit Data Services) to fetch the required data using the API?
Can I use the PHP devkit ( https://code.intuit.com/sf/frs/do/viewSummary/projects.php_devkit/frs ) and feed my credentials directly to the code and access my Quickbooks account's data?
Do I use qbXML (which however does not seem to be the recommended method)?
Or is there a better solution?
Thanks in advance.
First, a disclaimer - if you're using the India version of QuickBooks Online (http://www.quickbooksonline.in/) you'll likely find that nothing works at all. Currently, Intuit does not officially support ANY non-US version of QuickBooks Online (QuickBooks for Windows non-US is supported via qbXML) for integration, regardless of which method you go with. It might work... but I doubt it.
With that said... generally speaking:
If you're building a SaaS application and trying to allow your
end-users to connect their QuickBooks accounts to your app, use
Intuit Anywhere.
Otherwise, if it's a custom/one-off/internal application, and you hate your life, use HOSTED mode via https://appreg.intuit.com and the HOSTED instructions on our QuickBooks integration wiki (HOSTED mode is notoriously unreliable and difficult to get going due to reverse DNS checks, a very specific certificate format, lack of working example code, bugs on Intuit's end, some serious nasty-ness hooking the certificate up to your .NET HTTPS request, etc.).
Otherwise, if it's a custom/one-off/internal application, and you DON'T hate your life, use DESKTOP mode via https://appreg.intuit.com and the DESKTOP instructions on our QuickBooks integration wiki.
None of the APIs allow you to just pass your credentials in and get access - you'll always have some sort of API token to deal with (a "connection ticket" for qbXML, or OAuth for Intuit Anywhere).
If you build for Intuit Anywhere, you'll use IDS XML. Otherwise, you'll use qbXML.

Resources