How Much Does the QuickBooks API Cost? (2026 Pricing & Rate Limits)
QuickBooks API pricing now ranges from $0 to $4,500/month under Intuit's App Partner Program. Learn the tier breakdown, rate limits, and hidden engineering costs.
If your product manager just promised a native accounting sync to land a key enterprise deal, or you're an engineering lead evaluating QuickBooks Online as an integration target, you need to understand the financial and technical realities before writing a single line of code. The QuickBooks API is no longer free for data retrieval.
On May 15, 2025, Intuit announced the App Partner Program, which introduces platform service fees for developers based on a tiered model. It went live on July 28, 2025, marking a departure from Intuit's traditionally open-access approach to its developer ecosystem. Writing data to QuickBooks remains free, but reading data is now strictly metered. The free Builder tier gives you 500,000 read operations per month before blocking further requests. Paid tiers range from $300/month to $4,500/month, with overage fees on top. Combined with strict rate limits (500 requests/minute, 10 concurrent), a 1-hour access token expiry, and the engineering effort to handle it all, the real cost of a QuickBooks integration goes well beyond what's on Intuit's pricing page.
This guide breaks down the direct API fees, the rate limit constraints you'll actually hit in production, the hidden engineering costs that make up the true total cost of ownership, and the architectural decisions you must make when deciding whether to build in-house or use a unified accounting API. For the full technical walkthrough on building the integration itself, see our QuickBooks Online API integration guide.
The End of the Free Era: QuickBooks API Pricing in 2026
For decades, Intuit provided free or low-cost access to its development tools, APIs, and app marketplaces, encouraging third-party innovation. B2B SaaS companies treated the QuickBooks API as a free utility — you built your OAuth flow, mapped your data models, and pulled as much data as you needed. That era is over.
The new pricing model hinges on a distinction between two API call classifications:
- Core API calls cover most data-in operations such as creating or updating invoices, bills, customers, vendors, etc. Core API calls are unmetered and uncharged. Intuit wants to encourage third-party applications to push data into their ecosystem, so writes remain completely free.
- CorePlus API calls cover most data-out operations such as reading accounts, querying company information, and fetching reports. These are metered and subject to monthly caps or overage fees.
The classification is determined by the combination of endpoint and HTTP method. Only successful API calls — specifically those returning a 2xx HTTP status code — are counted toward metered usage. API calls executed within the sandbox environment are not included in the new fee structure.
Put bluntly: if your integration primarily reads data from QuickBooks (syncing invoices to your dashboard, pulling chart of accounts, generating reports), you're now paying for it. If you primarily write data (creating invoices, updating customer records), you can stay on the free tier indefinitely.
This shift forces engineering teams to rethink their synchronization architectures. You can no longer rely on aggressive polling or full daily backfills without incurring significant costs. Every GET request now carries a direct financial cost.
The Intuit App Partner Program and its associated pricing structure only applies to QuickBooks Online (QBO) integrations. If you're building integrations with the QuickBooks Desktop API, this pricing model does not apply to you. For QuickBooks Desktop specifics, see our QuickBooks Desktop integration guide.
Breaking Down the Intuit App Partner Program Tiers
Intuit's pricing is tiered based on your CorePlus usage. The more data your customers generate, the more you pay to access it. This usage-based model effectively acts as a tax on your product's success — as your user base scales, your integration bill scales linearly alongside it.
Here's what each tier actually costs. All figures in USD.
| Tier | Monthly Fee | CorePlus Credits/Month | Overage Rate (per 1,000 calls) | Core API Calls | Min. Active Connections |
|---|---|---|---|---|---|
| Builder | $0 | 500,000 | Blocked (hard cap) | Unlimited | None |
| Silver | $300 | 1,000,000 | $3.50 | Unlimited | None |
| Gold | $1,700 | 10,000,000 | Lower than Silver | Unlimited | 500 |
| Platinum | $4,500 | 75,000,000 | $0.25 | Unlimited | 3,000 |
Some details that matter for budgeting:
- The Builder Tier includes 500,000 CorePlus API Credits per month. Any CorePlus API calls made above the included monthly Credit will be blocked. Not throttled. Not queued. Blocked. Your integration stops working until next month.
- The Silver Tier provides 1 million CorePlus API Credits. Any CorePlus calls made above the included monthly Credit will be subject to variable API Fees, which will be metered and charged according to the applicable rate card.
- To be eligible for the Gold Tier, you'll need to have a minimum of 500 Minimum Active Connections; for the Platinum Tier, you'll need to have a minimum of 3,000 Minimum Active Connections. You can't just buy your way into Gold or Platinum — you need the customer base to qualify.
- The variable API Fee operates on a tiered volume structure. API calls are charged at the given rate within the volume Tier. API calls that go beyond one volume Tier will be charged at the rate of the next volume Tier.
What Does This Mean in Practice?
Let's say you're a B2B SaaS product that syncs invoices and expense data from your customers' QuickBooks accounts. A typical sync cycle for one customer might involve:
- 1 query to list recent invoices (CorePlus)
- 1 query to list recent bills (CorePlus)
- 1 query to fetch the chart of accounts (CorePlus)
- 1 query to pull company info (CorePlus)
- Several paginated follow-up requests for large datasets
With 100 connected customers syncing every hour, you're looking at roughly 50,000–100,000 CorePlus calls per day — which puts you past the Builder tier's 500K monthly cap in under two weeks. At 500 customers, you'll burn through the Silver tier's 1 million credits in days.
The Hard Cap: The Builder tier enforces a strict hard cap. Once you hit 500,000 CorePlus calls in a month, Intuit instantly blocks all subsequent data retrieval requests. Your integration will fail silently or throw errors until the next billing cycle unless you upgrade.
This is exactly the kind of usage-based pricing trap that penalizes SaaS growth. Your Intuit API bill scales linearly with customer acquisition, not with the value you deliver.
The Hidden Cost of QuickBooks API Rate Limits
Intuit's pricing tiers aren't the only constraint. The rate limits impose a hard ceiling on how fast your integration can operate, and navigating them requires non-trivial engineering investment.
QuickBooks Online enforces 500 requests per minute per company (realm ID) with a maximum of 10 concurrent requests per app. Batch operations are limited to 40 requests per minute, while resource-intensive endpoints drop to 200 requests per minute.
Exceeding these limits results in HTTP 429 "Too Many Requests" errors.
| Limit Type | Threshold | Scope |
|---|---|---|
| Standard requests | 500/minute | Per realm ID |
| Concurrent requests | 10 | Per app, per company |
| Batch operations | 40/minute | Per realm ID |
| Resource-intensive endpoints | 200/minute | Per realm ID |
Why 500 req/min Sounds Generous But Isn't
500 requests per minute per company seems generous until you realize it's per realm ID, not per your app globally. If one enterprise customer has a massive QuickBooks account with tens of thousands of invoices, you'll burn through the per-minute limit during a single paginated sync.
The 10-concurrent-request ceiling is even more painful. Accounting teams pulling profit & loss statements, balance sheets, and transaction details simultaneously often exceed the 10 concurrent request limit, causing 429 errors. If your worker queues process jobs in parallel, you must implement a locking mechanism to ensure you never exceed 10 active connections per realmID.
When you exceed the rate limit, QuickBooks returns an HTTP 429 response. Your application must catch this error, read the Retry-After header (if provided), and implement exponential backoff with jitter before retrying.
sequenceDiagram
participant App as Your SaaS App
participant QBO as QuickBooks API
App->>QBO: GET /v3/company/{realmID}/query (Page 1)
QBO-->>App: 200 OK (Data)
App->>QBO: GET /v3/company/{realmID}/query (Page 2)
Note right of QBO: Rate limit exceeded<br>(>500 req/min)
QBO-->>App: 429 Too Many Requests
Note left of App: Wait (Exponential Backoff)<br>Delay = 2^retries * 100ms
App->>QBO: GET /v3/company/{realmID}/query (Page 2)
QBO-->>App: 200 OK (Data)Handling 429 errors properly means building exponential backoff with jitter, request queuing, and rate-limit-aware scheduling per customer. This isn't optional — it's table-stakes infrastructure:
import time
import random
import requests
def qbo_request_with_backoff(url, headers, max_retries=5):
for attempt in range(max_retries):
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.json()
elif response.status_code == 429:
# Exponential backoff with jitter
base_delay = min(2 ** attempt, 60)
jitter = random.uniform(0, base_delay * 0.5)
wait_time = base_delay + jitter
time.sleep(wait_time)
else:
response.raise_for_status()
raise Exception("Max retries exceeded for QuickBooks API")This is the kind of boilerplate every engineering team writes, tests, and maintains for a single provider. Multiply it by Xero, NetSuite, and Zoho Books — each with their own rate limit schemes — and integration maintenance becomes a full-time job. For a deep dive on handling this across multiple providers, see our guide to API rate limits and retries.
QuickBooks also enforces subscription-based restrictions beyond simple rate limiting: report cell limits capped at 400,000 cells, maximum active users determined by subscription tier, and account creation limits that vary by plan. These aren't documented in the obvious places, and they'll bite you in production.
Engineering Costs: OAuth, Webhooks, and Pagination
Direct API fees and rate limits are the visible costs. The engineering overhead to keep a QuickBooks integration running in production is the iceberg below the waterline.
OAuth Token Lifecycle Management
QuickBooks Online designs the access token to be valid for only one hour. The refresh token expires after 101 days.
Your system needs to:
- Refresh access tokens proactively — not after a 401 failure. If you wait for a 401 and then refresh, you've already failed a request and need retry logic on top of your refresh logic.
- Persist refresh tokens securely across server restarts, deployments, and failovers.
- Handle refresh token rotation — every time you use a refresh token, QuickBooks issues a new one. If your application refreshes a token, receives a new refresh token, but fails to save it due to a transient network error, that customer's connection is permanently broken. They'll need to re-authorize manually.
- Monitor the 101-day expiry window — if a customer doesn't use your integration for ~3 months, the refresh token expires silently. You need proactive alerting and re-authorization flows.
The QuickBooks connector fails after the refresh token expires, as the refresh token expires after 1 hour. This is a real Airbyte issue (#44471) that demonstrates how even well-resourced open-source projects get tripped up by QuickBooks' token lifecycle.
Building a production-grade OAuth state machine is easily 2–4 weeks of engineering time if you're doing it right, including edge cases like concurrent refresh races, storage encryption, and multi-tenant isolation. For a broader look at this problem, see our OAuth token management architecture guide.
Webhook Limitations
To avoid polling and burning through CorePlus credits, you might consider webhooks. QuickBooks does support them, but they come with significant caveats. They don't guarantee immediate delivery — events are batched and can be delayed by several minutes. More importantly, webhooks only provide the entity ID and operation type that changed. They do not include the actual data payload.
When your application receives a webhook notifying you that Invoice #1234 changed, you must still make a CorePlus API call to fetch the updated invoice details. The webhook saves you from blind polling, but it doesn't eliminate metered reads.
Webhooks are only sent for events occurring after an app is connected to a QuickBooks company. To handle potential missed events, it's recommended to also use the ChangeDataCapture API periodically. So webhooks alone aren't sufficient — you need a fallback polling mechanism, which means even more CorePlus API calls.
Pagination and Query Syntax
QuickBooks uses a proprietary SQL-like query language for reads, not standard REST query parameters. Responses are limited to 1,000 records per page, and you must implement offset-based pagination:
-- Example QuickBooks API Query requiring pagination
SELECT * FROM Invoice STARTPOSITION 1 MAXRESULTS 1000If a customer has 50,000 invoices, you must make 50 sequential API calls just to read the data. Under the App Partner Program, those 50 calls directly consume your CorePlus quota. Your engineering team must design a sync engine that only queries records modified since the last successful sync using the MetaData.LastUpdatedTime field, rather than performing full table scans.
If you're syncing data across QuickBooks, Xero, NetSuite, and Zoho Books, you're dealing with four completely different pagination schemes, query syntaxes, and response shapes. This is where pagination normalization across APIs becomes a significant engineering investment.
Build vs. Buy: Calculating the True Cost of a QuickBooks Integration
Let's put real numbers on the total cost of ownership, broken into three buckets.
1. Direct Intuit API Costs (Annual)
| Scenario | Likely Tier | Annual API Cost |
|---|---|---|
| Early-stage, <100 customers, light reads | Builder (Free) | $0 |
| Growth-stage, 100–500 customers, regular syncs | Silver | $3,600 + overage |
| Scale, 500+ customers, heavy reads/reports | Gold | $20,400 + overage |
| Enterprise, 3,000+ connections, high volume | Platinum | $54,000 + overage |
2. Engineering Build Cost (One-Time)
| Component | Estimated Effort | Cost at $150K/yr ($72/hr) |
|---|---|---|
| OAuth 2.0 flow + token state machine | 2–4 weeks | $5,760 – $11,520 |
| Entity CRUD + query builder | 3–4 weeks | $8,640 – $11,520 |
| Rate limit handling + retry logic | 1–2 weeks | $2,880 – $5,760 |
| Webhook consumer + CDC fallback | 1–2 weeks | $2,880 – $5,760 |
| Pagination + error normalization | 1–2 weeks | $2,880 – $5,760 |
| Testing, QA, edge cases | 2–3 weeks | $5,760 – $8,640 |
| Total initial build | 10–17 weeks | $28,800 – $48,960 |
Engineering costs add up faster when skilled engineers earn about $150,000 yearly ($72.10 per hour). And that $29K–$49K estimate is for QuickBooks alone. If your customers also use Xero (which recently introduced its own API pricing and egress fees), NetSuite, or Zoho Books, multiply accordingly.
3. Ongoing Maintenance (Annual)
- API deprecation monitoring and updates: ~2–4 weeks/year
- OAuth token failure debugging: ~1–2 weeks/year
- Rate limit tuning as customer base grows: ~1–2 weeks/year
- On-call support for production integration failures: ongoing
Conservative estimate: $15,000–$30,000/year in maintenance engineering time, per accounting provider.
The Unified API Alternative
Instead of absorbing these costs directly, many B2B SaaS companies are shifting to unified accounting APIs. A unified API sits between your application and QuickBooks. You write code once against a single, standardized data model, and the platform handles the translation to QuickBooks, Xero, NetSuite, and Zoho Books simultaneously.
flowchart LR
A[Your App] -->|Single API| B[Unified<br>Accounting API]
B -->|Handles OAuth,<br>rate limits,<br>pagination| C[QuickBooks]
B --> D[Xero]
B --> E[NetSuite]
B --> F[Zoho Books]When evaluating unified APIs, watch the pricing model carefully. Many providers charge usage-based fees per API call. If you use a usage-based provider to connect to QuickBooks, you'll pay Intuit's CorePlus fees AND the provider's usage fees — effectively double-taxing your infrastructure.
Truto takes a fundamentally different approach with flat, predictable pricing per connector — not per customer connection. Your integration cost doesn't spike when you close 50 new deals in a quarter. From a technical perspective, Truto abstracts away the operational complexity entirely:
- Automatic Rate Limiting: The platform handles QuickBooks' 500 req/min limits and 10-concurrent-request ceiling using built-in exponential backoff and retry logic. Your application never sees a 429 error.
- OAuth Lifecycle Management: Truto manages the entire OAuth token lifecycle securely, refreshing tokens shortly before they expire so your connections never drop.
- Pagination Normalization: Consistent cursor-based pagination regardless of the underlying provider's scheme.
- CorePlus Credit Optimization: Intelligent request batching and incremental sync strategies to minimize metered API calls.
That said, unified APIs come with their own trade-offs. You're adding a dependency on a third-party platform. The normalized data model may not cover every niche QuickBooks field your specific use case requires (though Truto supports passthrough for provider-specific fields). And if Intuit makes a breaking change, you're relying on the unified API provider to ship a fix — though that's arguably better than maintaining the fix yourself.
For a comparison of unified accounting APIs, see our 2026 guide to the best unified accounting API.
How to Decide: A Decision Framework
The right choice depends on where you are and what you're building.
Build in-house if:
- QuickBooks is the only accounting provider you'll ever support
- You need deep access to QuickBooks-specific features (custom reports, payroll APIs, project management APIs) that require Platinum-tier Premium API access
- Your team has spare engineering capacity and existing OAuth infrastructure
Use a unified API if:
- You need to support 2+ accounting providers (QuickBooks + Xero is the most common combination)
- Your engineering team is small and needs to ship integrations fast to unblock sales
- You want predictable integration costs that don't scale with your customer count
- You'd rather spend engineering time on your core product, not on rate limit plumbing and token refresh state machines
For most B2B SaaS teams — especially at the growth stage where every sprint counts — the math points toward buying the abstraction. The $29K–$49K initial build cost plus $15K–$30K/year in maintenance for a single accounting provider is hard to justify when you can get four providers covered for a fraction of that investment. For teams with limited runway, our startup pricing guide breaks down the specific math.
FAQ
- Is the QuickBooks API free?
- Partially. Data write operations (Core API calls) are free and unlimited. Data read operations (CorePlus API calls) are capped at 500,000/month on the free Builder tier. Exceeding that cap blocks further requests until you upgrade to a paid tier starting at $300/month.
- What are the QuickBooks API rate limits?
- QuickBooks Online enforces 500 requests per minute per company (realm ID), a maximum of 10 concurrent requests per app, 40 requests per minute for batch operations, and 200 requests per minute for resource-intensive endpoints. Exceeding these limits returns HTTP 429 errors.
- How much does a QuickBooks developer account cost?
- A QuickBooks developer account is free. You can sign up at the Intuit Developer Portal and get immediate sandbox access. Costs only apply when your app reaches production and starts making CorePlus (data retrieval) API calls beyond the free 500,000/month Builder tier limit.
- What is the difference between Core and CorePlus API calls in QuickBooks?
- Core API calls cover data-in operations like creating invoices, bills, and customers — these are free and unlimited. CorePlus API calls cover data-out operations like reading accounts, querying data, and fetching reports — these are metered and count against your monthly credit allotment.
- How long do QuickBooks OAuth tokens last?
- QuickBooks access tokens expire after 1 hour. Refresh tokens expire after 101 days. Your application must proactively refresh access tokens before they expire and securely persist the new refresh token issued with each refresh cycle.