Technical requirements

Apps must meet these requirements before they will be published. You must use the QuickBooks Online domain to meet these requirements, so be sure to include it when you create your app.

Apps published on the QuickBooks app store must not only meet these requirements at the time of publication, but continuously after publishing. Intuit checks all apps annually to ensure that they still meet the technical and security standards required.

Note

The average estimated time it should take for your app to complete technical review is about 3 days. This can vary if issues are found in your app during the review process.

UI components

These requirements involve parts of your app that are displayed to users.

  1. 1: To allow the customer to connect to their QuickBooks company from within your app, present the Connect to QuickBooks button in an area where users can manage their accounting software connections, as shown in the images below. This button shows in the app prior to connection, and is hidden once a connection has been established.
        Note:  If your application supports OAuth2, your production Redirect URI callback must be a valid SaaS domain. See here for more details.

    Prior to connection, Connect to QuickBooks button is visible:C2QBExample.jpg
    Once connection is established, the Connect to QuickBooks button is hidden and disconnect link is now visible:C2QBConnected.jpg

 

  1. 2: Widgets/Buttons/Workflows work in Internet Explorer 11 (or later), as well as Firefox and Chrome (current versions).
  1. 3: Only approved QuickBooks app store, QuickBooks, and Intuit images are used.
  1. 4: QuickBooks is spelled properly (including capitalization); no abbreviations are permitted.

QuickBooks data connection

These requirements detail how your app must initiate, maintain, and re-establish connection with QuickBooks.

  1. 1: The API successfully passes data between your app and QuickBooks Online. Only QuickBooks Online API calls are used to move data.
Details and test steps
  1. Read data from QuickBooks Online: Data should successfully appear in the app.
  2. Write data to QuickBooks Online: Data successfully appears in QuickBooks Online.

To speed your review, submit a support ticket outlining the steps you follow to test this requirement. For example:

  • Link to a video which shows how to use your app
  • Link to a Knowledge Base article on support information
  • Keys needed to install the app (if applicable)
  • Account credentials to login to the app
  • Step by step guide on how to test the app’s integration with QuickBooks
  • Any additional caveats and tips
  1. 2: Once connected through OAuth, the connection is maintained until the user disconnects from QuickBooks. Signing out of an app does not disconnect a company.
Details and test steps
  1. Create an account in your app and connect it to a QuickBooks company.
  2. Launch a different browser.
  3. Sign in to your app.
    Your app opens with the QuickBooks connection maintained. The Connect to QuickBooks button is hidden and data service calls work.
  1. 3: A user can disconnect the app from QuickBooks from within your app.
    There is no mandated Disconnect button or link to use as long as it calls our Disconnect API (OAuth 1.0a) or revoke endpoint (OAuth 2.0) properly. Label that button so it clearly indicates disconnect from QuickBooks; for example Disconnect from QuickBooks.
    C2QBConnected.jpg

Sign in with Intuit Button (OpenID)

These requirements detail how your app must use OpenID to implement the Sign in with Intuit button.

This section is not required for apps that don't use Intuit Single Sign-On.

  1. 1: The Sign in with Intuit button appears on all app sign-in pages and is displayed properly. When clicked, it launches the Intuit OpenID sign-in page.
    Here is an example where the button appears on the app sign-in page.:
    SIWI.jpg
Details and test steps
  1. Go to the home page for your app.
    The sign-in screen appears and the Sign in with Intuit button is easy to find.
  2. Locate the Sign In or Login button/link and click it.
    The Sign in with Intuit button should appear on all sign-in pages offered by your app. The Sign In with Intuit button is rendered using either JavaScript or approved graphics.
  1. 2: A new unknown user who clicks Sign in with Intuit signs in only to the app, without executing OAuth.
    Tip

    Have a workflow/wizard to recognize this customer and offer the ability to either link an existing account or create a new account for your app. Then inform user that the app is not connected to their QuickBooks data and show the Connect to QuickBooks button.

Details and test steps
  1. Click the Sign in with Intuit button.
  2. Type the User ID and password for an existing Intuit account that is NOT currently connected to the app and click Sign In.
    The Intuit OpenID authorization screen appears. Your app should not interfere with or change the OpenID flow.
  3. Click the Authorize button.
    The authorization screen closes and the user is returned to your app in a signed-in state.
  1. 3: An existing connected user who clicks Sign in with Intuit is taken into the app and data service calls work.
Details and test steps
  1. Click the Sign in with Intuit button.
  2. Type the user ID and password for an Intuit account that is currently connected to the app.
  3. Click the Sign in button.
    The user goes in to your app without entering more credentials. The Connect to QuickBooks button is hidden and all data service calls work.

Caution: If the user already exists in your database but it’s Intuit identity has not be established before, initiate an application session for that user only after prompting the user to enter their password prior to linking the Intuit identity to their existing account

Interaction with the QuickBooks app store

These steps define how your app experience allows the user to navigate the QuickBooks app store. 

To interact with your app once connected with QuickBooks, a user finds it on authorized app lists: on the My apps tab in the QuickBooks app store and on the Apps tab on the QuickBooks Online UI.

My apps tab in QuickBooks app storeApps tab in QuickBooks Online
MyAppsAppStore MyAppsQBO 

There are four actions available:

  • Launch: Your app's Launch URL as defined in your app's settings. This is your app's dashboard and, for apps published on the QuickBooks app store, the page that implements single sign-on that allows the user to sign in automatically.
  • Support: Enabled on your behalf once app is published on the app store. No action required.
  • Disconnect: Your app's Disconnect URL as defined in your app's settings. Your user lands on this page after the app disconnects from your user's QuickBooks company. This page implements implements single sign-on that allows the user to sign in automatically, and implements the Connect to QuickBooks button so users can reconnect as needed.
  • Write a review: Enabled on your behalf once app is published on the app store. No action required.

This section is not required for apps that don't use Intuit Single Sign-On.

  1. 1: On the QuickBooks app store, a new user can sign up for a free trial of your app by clicking the Get app now button.
Details and test steps
  1. Make sure you're not currently signed in to the QuickBooks app store:
    1. Log out of your app.
    2. Log out of the QuickBooks app store.
    3. Close your browser.
    4. Open a new browser session.
  2. Test the Get app now link for your app via your app's dashboard. Navigate to the dashboard and test the following links:
    • Try app in Production (App Store flow)
    • Try app in Sandbox (App Store flow)
  3. On the Intuit OpenID sign-in page, type the user name and password for an existing Intuit account that is NOT currently connected to your app.
  4. If prompted, choose QuickBooks Desktop or QuickBooks Online.
  5. If prompted, choose a company.
  6. Click the Authorize button.
    The user starts their free trial and lands on the page of your app that shows their integrated QuickBooks data, or a message about the integration.
    Detailed requirements:

    • Your app automatically provisions user's account.
    • Page doesn't prompt create/enter a password (unless your app is not implementing Intuit Single Sign-On).
    • Page doesn't ask for any information that OpenID provides (name, email, realm ID) or the QuickBooks Online API provides (company name, address, phone number, and so on).
    • Don't ask user to select a plan or enter payment info.
    • Don't show the Connect to QuickBooks button because the user's already connected.
  1. 2: If a user is signed in to the QuickBooks app store but not signed in to your app, the user can sign in to your app without being asked for credentials.
Details and test steps
  1. Make sure you're NOT currently signed in to your app:
    1. Log out of your app.
    2. Log out of the QuickBooks app store.
    3. Close your browser.
    4. Open a new browser session.
  2. Go to https://appcenter.intuit.com/Home/MyApps/.
  3. Sign in to the QuickBooks app store with a QuickBooks account that is connected to your application.
  4. Locate and launch your app. It should open without prompting for credentials.
  1. 3: If the user has not signed out of your app or the QuickBooks app store, your app should launch from the QuickBooks app store without asking for credentials.
Details and test steps
  1. Make sure you're currently signed in to your app.
  2. Go to https://appcenter.intuit.com/Home/MyApps/.
  3. Sign in to the QuickBooks app store.
  4. Locate and launch your app. It should open without prompting for credentials.
  1. 4: A user can disconnect your app's access to their QuickBooks account from the QuickBooks app store.
Details and test steps
  1. Make sure you're NOT currently signed in to your app:
    1. Log out of your app.
    2. Log out of the QuickBooks app store.
    3. Close your browser.
    4. Open a new browser session.
  2. Go to https://appcenter.intuit.com/Home/MyApps/.
  3. From the Manage My Apps tab, locate your app and click the Disconnect link.
  4. From the Confirm Disconnect dialog, click the Yes, Disconnect App button.
  5. On the Confirm Disconnect dialog, click Next or Close.
    The app disconnects from the user's QuickBooks data. The UI refreshes so the user can re-connect if necessary.

    What happens next:

    • Your app no longer appears in the My Apps section of the QuickBooks app store:https://appcenter.intuit.com/Home/MyApps/.
    • The user is redirected to a disconnect landing page within your app.
      • The disconnect landing page is OpenID-enabled
    • The OAuth tokens are invalidated and data service calls cannot be made.

    What your app needs to do:

    • The Connect to QuickBooks button appears.
    • The Disconnect link is hidden.
    Warning

    If you're using your development environment to test the disconnect, you see a Close button instead of Next. Click the Close button and wait for the App listing page to refresh (removing your application). Then manually navigate to the disconnect URL you specified for the development instance of your application.

Apps without single sign-on

This section applies only to apps that do not implement Intuit single sign-on.

  1. 1: Implement the Learn More button in place of Get app now on your app's settings page.

Accountant-ready apps

This section applies only to apps that are intended for use with the QuickBooks Online Accountant apps tab. See here for additional details.

You don't need to have QuickBooks Online Accountant in order to create and test apps intended for it. To be accepted, your app needs to support three use cases:

  • One user can subscribe two separate QuickBooks Online companies to your app successfully. You can use any production QuickBooks Online company (including free trials). These companies must belong to the same admin user. Sandbox companies will work for this.
  • The user can launch your app from either or both companies.
  • The user can disconnect your app from either or both companies. In this case, the user lands in the right context in your app.
Note

Your app must support Intuit single sign-on in order to appear in the QuickBooks Online Accountant apps tab.

    To create the testing environment, create two QuickBooks Online companies (Company A and Company B) using the same Intuit user account. (If you create a trial company, please select “Sign in” instead of “Create account” on the first page.) Then test with the following steps.

    1. 1: Test GetAppNow for Company A
      Details and test steps
      1. Log into Company A.
      2. Subscribe to your app from the apps tab. If your app is not already published, you can use one of following links for this test:
        https://appcenter.intuit.com/app-appID/subscribe (where appID is your production appID), or
        https://appcenter.intuit.com/Permalink/subscribe (if your app implements a permalink).
        The user lands in your app under the context of Company A with QuickBooks Online connection established.
      3. Log out.
    1. 2: Test launching from Company A
      Details and test steps
      1. Log into Company A.
      2. Launch your app from the apps tab.
        The user lands in your app under the context of Company A.
      3. Log out.
    1. 3: Test disconnecting from Company A
      Details and test steps
      1. Log into Company A.
      2. Disconnect your app from the apps tab.
        The user lands in your app under the context of Company A.
      3. Log out.
    1. 4: Test GetAppNow for Company B
      Details and test steps
      1. Log into Company B.
      2. Subscribe to your app from the apps tab. If your app is not already published, you can use the following link for this test: https://appcenter.intuit.com/app-appID/subscribe (where appID is your production appID), or
        https://appcenter.intuit.com/Permalink/subscribe (if your app implements a permalink).
        The user lands in your app under the context of Company B with QuickBooks Online connection established.
      3. Log out.
    1. 5: Test launching from Company B
      Details and test steps
      1. Log into Company B.
      2. Launch your app from the apps tab.
        The user lands in your app under the context of Company B.
      3. Log out.
    1. 6: Test disconnecting from Company B
      Details and test steps
      1. Log into Company B.
      2. Disconnect your app from the apps tab.
        The user lands in your app under the context of Company B.

    Recommended: provide a page listing all companies that a given user has connected to your app. This enhances your user's experience and provides them a convenient way to manage their connections.

    Click here for details
    1. Provide a disconnect button for each company listing so the user can easily disconnect companies as needed.
    2. At the bottom of the page, provide a Add new company button, which allows the user to connect additional companies if required. Clicking this button opens the Connect to QuickBooks button:
      Screen Shot 2017-12-12 at 11.28.02 AM.png
    3. After connecting the new company, it appears in the listing and the interface refreshes:
      Screen Shot 2017-12-12 at 11.29.19 AM.png

    Did you find this page helpful?
    Your feedback helps us make our docs better. Please let us know if this page helped you, or if it needs improvement.

     Got Questions? Get Answers in our developer forums.