# QuickBooks setup for PopMCP

You paste your Intuit app's OAuth 2.0 Client ID and Client Secret into PopMCP, plus the word "sandbox" in Environment if you are connecting an Intuit sandbox company instead of a live one.

- Auth: OAuth authorization
- Setup time: 15 min for sandbox. Production keys wait on Intuit's app assessment review.
- API base URL: https://quickbooks.api.intuit.com/v3/company/{realmId} (sandbox: https://sandbox-quickbooks.api.intuit.com/v3/company/{realmId})
- Credentials screen: https://developer.intuit.com/app/developer/dashboard
- Provider docs: https://developer.intuit.com/app/developer/qbo/docs/get-started

## Approval required before this works

Intuit blocks an app's QuickBooks Online production keys until you complete the app assessment questionnaire in the developer portal and Intuit reviews the answers.

- Typical wait: Intuit publishes no review SLA. Developers commonly report anything from a few business days to about two weeks, and any follow-up question from the reviewer restarts the clock.
- Cost: Free
- Blocked until approved: Production OAuth client ID and secret stay hidden, so you cannot connect a real QuickBooks Online company. Everything you build against sandbox authenticates only against fake sandbox companies - no live customer, invoice, payment or ledger data until the keys are unblocked.
- Works meanwhile: Create the app and use development keys against a sandbox company immediately: full OAuth 2.0 flow, all Accounting API endpoints, webhooks and the API Explorer work on day one.

## Before you begin

- Free Intuit Developer account at developer.intuit.com
- A QuickBooks Online company you administer. A free sandbox company is created for your developer account automatically.
- For live company data you must submit Intuit's app assessment questionnaire and wait for review before production keys unlock
- Sandbox keys work immediately and only against Intuit sandbox companies

## Get your credentials

### 1. Create an app in the Intuit Developer portal

Sign in at developer.intuit.com and open My Hub, then Workspaces. Click Create an app, choose QuickBooks Online and Payments, name it, and tick the com.intuit.quickbooks.accounting scope.

Screen: https://developer.intuit.com/app/developer/dashboard

### 2. Add PopMCP's callback URL as a Redirect URI

Open the app and click Settings in the left menu, then open the Redirect URIs tab with Development selected. Click Add URI, paste the callback URL PopMCP shows on the connect form, and click Save.

Screen: https://developer.intuit.com/app/developer/dashboard

### 3. Copy the development Client ID and Client Secret

Click Keys & credentials in the left menu with Development selected, toggle Show credentials, and copy Client ID and Client Secret. Type `sandbox` in PopMCP's Environment field when you use these keys.

Screen: https://developer.intuit.com/app/developer/dashboard

### 4. Unlock production keys

Switch to the Production tab and complete App details, covering host domain, launch URL and disconnect URL. Click Start Questionnaire, answer every section, submit it, and wait for Intuit's review.

Screen: https://developer.intuit.com/app/developer/dashboard

### 5. Copy the production keys once approved

After approval, copy Client ID and Client Secret from the Production tab on Keys & credentials. Open Settings, then Redirect URIs, switch to Production, add the same PopMCP callback URL and click Save.

### 6. Paste into PopMCP and pick the company

Enter the Client ID and Client Secret, leave Environment blank for a live company, and click connect. Sign in on Intuit's page and choose the QuickBooks company to authorize.

## Fields PopMCP asks for

- Auth type (connectionType): Create an app at developer.intuit.com (Accounting scope). The OAuth flow keeps your QuickBooks login on Intuit's side.
- Client ID (clientId) [required]: Your app's "Client ID" from the Keys & OAuth tab on developer.intuit.com.
- Client secret (clientSecret) [required]: Your app's "Client Secret". Stored encrypted; used server-side only and never shown again.
- Environment (environment): Leave blank for a live company (Production). Enter "sandbox" only if you're connecting an Intuit sandbox/development company using your app's Development keys.

## Callback URL to register

https://app.popmcp.com/api/providers/quickbooks/callback

## Scopes requested

- com.intuit.quickbooks.accounting

## Verify

PopMCP shows the QuickBooks connection as Connected with the company name Intuit returned. A company-info or chart-of-accounts call returns your real accounts.

## Troubleshooting

### invalid_redirect_uri on the Intuit consent screen

Cause: The callback URL is missing from this environment's Redirect URIs, or differs by a character such as a trailing slash or http instead of https.

Fix: Paste PopMCP's callback URL into the Redirect URIs tab on the app's Settings page under the matching Development or Production tab, then Save.

### 401 Unauthorized on every API call

Cause: Development keys used against a live company, or production keys against a sandbox company.

Fix: Match the keys to the Environment field. Leave it blank for production, type sandbox for development keys.

### Production keys are greyed out

Cause: The app assessment questionnaire has not been submitted or approved.

Fix: Complete App details and submit the questionnaire under the Production tab, then wait for Intuit's review.

### 429 Too Many Requests

Cause: Over 500 calls in a minute for that company, or more than 10 concurrent calls.

Fix: Back off and honour the Retry-After header. The batch endpoint carries its own lower limit, so spread batch calls out too.

---

Source: https://www.docs.popmcp.com/docs/integrations/quickbooks/