GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together. If nothing happens, download GitHub Desktop and try again.
If nothing happens, download Xcode and try again. If nothing happens, download the GitHub extension for Visual Studio and try again. This project is a open source api client library to interact with the QuickBooks API built for dotnet core.
Net is be available on NuGet. We welcome anyone to submit pull requests and issues for this project. It is a work in progress, so currently we have built the pieces we needed for our use case, but would love to make it more robust and useful for more people. We will try to respond to issues as quickly as we can get to them.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. This work is public domain. Licensed under the Apache License, Version 2. You may obtain a copy of the License at. See the License for the specific language governing permissions and limitations under the License.
For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link or bind by name to the interfaces of, the Work and Derivative Works thereof. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution.
Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable except as stated in this section patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution s alone or by combination of their Contribution s with the Work to which such Contribution s was submitted.
If You institute patent litigation against any entity including a cross-claim or counterclaim in a lawsuit alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:.
You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions.
The dark mode beta is finally here. Change your preferences any time. Stack Overflow for Teams is a private, secure spot for you and your coworkers to find and share information.
All I want to do is take someone's credit card information and charge them. I am not accessing other people's QuickBooks accounts only my own and I am not trying to access any other personal information other than what they input into my form.
For this reason it seems absolutely asinine to think that I'd have to redirect them to intuit. They probably don't have a QuickBooks account. I've spent the last hour reading through QuickBook's API documentation and I've run in circles and found the whole thing utterly confusing.
Every page which references a particular API endpoint makes no mention of authentication -- only the headers, query parameters, and request body that are expected. The API explorer does not show any form of authentication in their examples:. Checking the console while hitting submit isn't any more helpful. The request gets sent to their back-end server where it does the real request:.
It even includes "apikey", "apisecret", and "oauth" attributes in the body which are all empty -- it acts like the endpoint doesn't even NEED authentication. Out of dumb curiosity I tried making the request with no authentication to see what would happen:.
So some authentication is needed.
I continued to scour the docs and turned up nothing but page after page linking me back to OAuth and saying that I need to set up OAuth. Why do I need to set up OAuth to take a credit card number that was given to me and hand it to QuickBooks? I even tried looking at their sample app. It only gave me some pseudo-code with zero idea for how to handle authentication:.
I even looked at the actual code and don't see anywhere that they provide an API key or secret key. I'm pretty much ripping my hair out at this point, so I think I need someone with experience to point me in the right direction. Learn more. Asked 4 years ago. Active 3 years, 11 months ago. Viewed 1k times. They probably don't have a QuickBooks account I've spent the last hour reading through QuickBook's API documentation and I've run in circles and found the whole thing utterly confusing.
The API explorer does not show any form of authentication in their examples: No basic auth header, nothing in the request body with an API token. The request gets sent to their back-end server where it does the real request: It even includes "apikey", "apisecret", and "oauth" attributes in the body which are all empty -- it acts like the endpoint doesn't even NEED authentication. Out of dumb curiosity I tried making the request with no authentication to see what would happen: Not Authorized.
It only gave me some pseudo-code with zero idea for how to handle authentication: I even looked at the actual code and don't see anywhere that they provide an API key or secret key.
Build your first app
Active Oldest Votes. I don't believe I need OAuth You do.GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together. If nothing happens, download GitHub Desktop and try again. If nothing happens, download Xcode and try again. If nothing happens, download the GitHub extension for Visual Studio and try again. Support: Documentation: License: Binaries:.
The QuickBooks Online. It supports. Net Core 2. Net Full Framework 4. Some of the features included in this SDK are:. Retry logic now have been moved to Intuit. So, if you see Retry not found issues while updating your code, just remove that Using Intuit. Retry statement and add Using Intuit. Core if not already present. Net 4. New logging support added which includes support for reporting headers and multiple logging sinks available from Serilog.
You can chooise to have either one or more of these logging sinks enabled. Download Fiddler from Google and run it alongside your code to log raw requests and responses along with URL and headers. No other setting is required. NET localhost is by default captured in Fiddler, so after you have enabled https traffic in Fiddler just run your code. Fiddler should be open. You will see requests and responses logged in Fiddler.
You should set 'decode the raw request body' by clicking on the yellow bar in Fiddler. Refer to the following steps to generate all the keys required to run tests using OAuth Playground. For OAuth2 apps, you will get a set of Development keys, including client key and client secret.
This can be used to get OAuth access token and refresh token for sandbox companies. Then get the prod keys from Keys tab under Prod section. Access tokens are valid for 1 hour which can be refreshed using refesh token.
When you request a fresh access token, always use the refresh token returned in the most recent refreshing access token API response. A refresh token expires 24 hours after you receive it. More info can be found at: Refreshing the access token. To 'renew tokens', you can call Reconnect api after days or do Connect to Quickbooks after days to get new tokens.
Then get the prod keys from Keys tab under Prod tab of the app. Please refer. Blog 1. Blog 2. Unit Tests. Integration Tests.It is assuming developers have obtained OAuth 1. If not, please refer to the Authorization part and Configuration part. We use Invoice as our example here Other API entities have very similar data structure compared with Invoice, developers should have no difficulty replacing Invoice with other entities by using our API reference page.
Last week, we provide a sewing service to our Customer Alex. How can we record this in QuickBooks Online? Record them in an array format:. An Line item represents a transaction. Each Line type has a specific usage. The fields that are labelled as required is what we need to provide. Under the SalesItemLineDetailwe also need to specify the Item we sell as well The docs said it is optional, however, for Invoice creation with Service, it is required.
In QuickBooks Online, an Item is a thing that your company buys, sells, or re-sells, such as products and services. An item is shown as a line on an invoice or other sales form. Since Item is located under Name list resourcesit will be a Reference type. We use this Services item to represent our sewing service.
Again, we store these information in an associate array, adding description to make it clear. This associate array contains all the information we want to store in the Invoice. To actually use this array to construct an Invoice Object with this information, we will import our Invoice Facade class:.
Many QuickBooks Online users need to create entities with Tax. TaxCodeRef when creating entities. US Company do not have a numeric value for TaxCode. TotalTax attribute of the transaction based on the TaxCode assigned to each line. If you already possess the object contains the Idyou can use the FindById method directly:.
Similarly, for getting CompanyPreference, you can use getCompanyPreferences :.
Bookkeeping and beyond
The query operation is the method for creating a guided query against an entity. The select statement in the request enables you to specify the selection criteria, entity properties, sort order, and pagination. For example, to find all invoices from a QuickBooks Online Company, the query method would look like this:.
The following are query operation limitations:. For query operation, the returned result would always be array.
Method:CRM API for developers
The maximum number of entities that can be returned in a response is GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together. If nothing happens, download GitHub Desktop and try again. If nothing happens, download Xcode and try again. If nothing happens, download the GitHub extension for Visual Studio and try again. All query functions take an optional first argument object which will be converted to a where clause by means of the keys and values of the object used as column names and parameter values of the where clause.
Alternatively, the object can be an array of objects, each specifying a fieldvalue and operator optional keys. Basic ordering is achieved via the optional first argument object as well. Include asc or desc keys in the object whose values are the columns you wish to sort on. For example:. Pagination is achieved via the optional first argument object as well. The default and max limit is records returned in a single request.
Adding a boolean fetchAll parameter will return all available records, transparently issuing as many requests as necessary to fetch them. So in the first example below, if your Quickbooks business contains 5, customers, 5 http requests will be issued behind the scenes and finally your callback will be invoked with an array of those 5, customers passed to it.
Row counts rather than full result sets can be obtained by passing the count key in the optional first argument object with a boolean true value. The example directory contains a barebones Express application that demonstrates the OAuth workflow. First navigate to the example directory and install the required dependencies from NPM. Clicking on this kicks off the OAuth exchange.
Once you've filled in the missing credentials in config. EmailAddress or the specified 'sendTo' address. Batch operation to enable an application to perform multiple operations in a single request. The following batch items are supported:. The change data capture CDC operation returns a list of entities that have changed since a specified time.
Enter a name for the integration. Note : Schema names cannot be changed after you save the integration. This means that data equal to or newer than this date will be replicated to your data warehouse. For a detailed look at historical replication jobs, check out the Syncing Historical SaaS Data guide. Replication Frequency. To keep your row usage low, consider setting the integration to replicate less frequently. For a new integration, a Pending status indicates that Stitch is in the process of scheduling the initial replication job for the integration.
This may take some time to complete. Initial replication jobs with Anchor Scheduling. If using Anchor Scheduling, an initial replication job may not kick off immediately. This depends on the selected Replication Frequency and Anchor Time. Refer to the Anchor Scheduling documentation for more information. The first seven days of replication, beginning when data is first replicated, are free. The schema and info displayed below is for version of this integration.
To account for deleted accounts, look for false values in the active column. While we try to include everything QuickBooks has here, this may not be a full list of attributes. Refer to QuickBooks's documentation for a full list and description of each attribute. This table contains nested structures. If you use a data warehouse that doesn't natively support nested structures, some of the attributes listed below may be in a subtable.
Also: in addition to the attributes listed below, our QuickBooks integration will replicate any custom fields. Did this article help? If you have questions or feedback, feel free to submit a pull request with your suggestions, open an issue on GitHubor reach out to us. Stitch Docs. QuickBooks is supported by Stitch This integration is certified by Stitch. For support, contact Stitch support.
I need some guidelines here. I am creating an online booking system for my client that interfaces with QuickBooks on their internal network desktop QuickBooks, not online. Do I need to go the full "publish app" route? I do not wish to sell this app in the marketplace.
Subscribe to RSS
This is merely a custom booking system designed and paid for by the client. It seems like I need to "publish" the app in the marketplace for them to be able to use it. Just build the solution, and connector your client.
There's a pretty good overview of how the QuickBooks web connector works on our QuickBooks wiki. Learn more. Asked 6 years, 11 months ago. Active 4 years, 9 months ago. Viewed 30k times.Sample App for eCommerce use case using QuickBooks Accounting & Payments API
Are there ways around this? JohnB 1, 1 1 gold badge 17 17 silver badges 31 31 bronze badges. Louis van Tonder Louis van Tonder 3, 3 3 gold badges 22 22 silver badges 55 55 bronze badges.
Sorry, just for more clarification: Client is running quickbooks enterprise 13 on their local pc's Terminal Server. I am creating an online www booking system Asp. What is the best way to achieve this? I have started looking at the quickbooks API, but as mentioned above, I do not wish to "publish" this solution as an accessible App in your market place. Thanks in advance. Active Oldest Votes. Keith Palmer Jr. Thanks Keith. That answers my question and confirms what I thought.
The one problem I see myself experiencing using the web connector and the SDK to this I cant find a clear answer on in your docsis the fact that the web connector issues the connection to the web app hence no firewall ports.
This does however imply that I cant "push" to quickbooks from the web app, only "accept" request originating from quickbooks? I cant see how this will work for a booking system, that needs to "feed" instructions to quickbooks, not the other way around? The Web Connector will reach out every X minutes and ask your application for a list of things to do - you can then send it requests like "add a customer", "add an invoice", etc.
They are part of the same system. May 9 '13 at HI Keith. Sorry, one more thing. I have read in the forums someone making the statement that you can give the web connector as much work as you want, for as long as you want? Can this in "theory" mean that I can keep the connection "open", by not calling the complete event?