QBO, QBD, API and app authorization - quickbooks

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.

Related

Microsoft Exchange Server support in my iOS app

I want to read calendar events in my app from on-premise Exchange server. For exchange online, Office 365, I could use Microsoft's SDK for iOS. I want to know
Is there any SDK from Microsoft to support on-prem exchange server in iOS app
Is there any extension/plug in that enables my app to read calendar events from exchange server
Is there framework/service offered by Apple that can be used in custom apps to read calendar events?
Any link/info would be greatly appreciated.
As written in the comment. I personally would never ever enter my Exchange password in a strange app, which then access my Exchange mailbox (which also would explain the downvote). The app would then be able to write emails, read all emails ... means access everything in my mailbox.
So I think the best way to access the calendar in your app would be that your app access the user’s Calendar database using the EKEventStore class. However this has some limitations so normally not the whole calendar is visible here and most users sync only a subset. But for most apps this might be enough.
Via this approach your app also becomes more "universal" and can also work with WebDAV/CalDav calendars (e.g. Shared Calendars like google calendar).
Additional via that way you do not need to deal with:
bad network connections
Different authentication methods (e.g. two factor authentication)
SSL encryption (cipher vs. protocols vs. ...)

Create customer in QuickBooks offline

I have created a sample .NET web app that connects to QuickBooks Online and using pages/forms in the app I can create/update customer records in QB. I would like to know how customer records in my database can be migrated to QB Online so that user does not have to explicitly logon to QB online. I read about WebConnector but it works with desktop version of QB. So I need to have ability to be able to create/update records in QB Online (using a background process) whenever customer records are added or updated in my SQL Server database without connecting to QB Online.
I am thinking of writing a WCF windows service that will call QBOnline API to do this work periodically but not sure how I will connect that service to QB Online. Please suggest if QB supports this (and how) or I have to force users to logon to QB to create/update customers.
I would like to know how customer records in my database can be migrated to QB Online so that user does not have to explicitly logon to QB online.
The very first time you establish a connection to QuickBooks Online, the user must login.
That only needs to be done ONCE. After that very first time, you should be storing your OAuth tokens, and you can send data over anytime you want without any user interaction what-so-ever.
If that's not the behavior you're seeing, it's probably because you're not storing the OAuth tokens like you should be.
I read about WebConnector but it works with desktop version of QB.
Do not use the Web Connector. If you've already implemented a sample .NET web app that connects to QuickBooks Online, then you're on the right path.
I am thinking of writing a WCF windows service that will call QBOnline API
Why would you do this? This is making things so much harder than they have to be... you already implemented a sample .NET web app, keep doing what you're doing.
Please suggest if QB supports this (and how)
It does.
You already implemented a sample app, which means you've already done what you're asking to do. Just make sure you're storing the OAuth tokens so you don't have to keep reconnecting all the time. The connection process by the user should happen ONLY ONCE. If it's happening more than once, you're not storing the tokens like you should be.

How to get company listing in QB desktop and some other questions

I have to create an integration app for Quickbooks Desktop (first) and Quickbooks online (later). App is to only read and save data in local mssql DB, which is gonna be accessed from a web site. Data of interest are : list of companies, list of each company accounts and ledger info.
Since this is a web app - integration app (asp.net/c#) I plan to create a web service to be called by QB's Web Connector app.
I installed / run WCWebService from SDK samples, authenticate web method returns path to QB db file or empty string to use currently opened db file.
Is there a way to get list of company files out of quickbooks,
Also then my app has to enumerate company list, open each file and read required set of data from it, is it possible at all ?
Do I understand correct: there is no single web api to access both QB desktop and online ?
(I read a couple of artiles on it and people said that: QB Desktop -> QBSDK/Web Connector, QB Online -> IPP REST api. However I see that quickbooks desktop allows to upload it's local DB file to be accessed from web.)
Thanks,
Vlad
Is there a way to get list of company files out of quickbooks
No.
Also then my app has to enumerate company list, open each file and read required set of data from it, is it possible at all ?
You can certainly read data from them, yes. You won't be able to get a list of company files though without some end-user interaction (the end-user needs to go through a connection process for each file).
there is no single web api to access both QB desktop and online ?
Correct.
(I read a couple of artiles on it and people said that: QB Desktop -> QBSDK/Web Connector, QB Online -> IPP REST api.
This is correct.
SDK/Web Connector for QuickBooks DESKTOP
REST v3 API for QuickBooks ONLINE

How to connect to QuickBooks online from a desktop application

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

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