maesn

QuickBooks API Integration

QuickBooks Online is Intuit's cloud accounting platform, used by small businesses and their accountants across the United States, Canada, the United Kingdom and Australia. It covers invoicing, expenses, bank reconciliation and tax reporting. Connect it through Maesn and you reach it with the same REST API and the same data model as every other supported system.

YOUR PRODUCT+26
Trusted by winning software teams
HubSpotTipaltiPaywiseRallyQredNordhealthFindityFintoClockinHEROHolviLanes & PlanesAgicapHubSpotTipaltiPaywiseRallyQredNordhealthFindityFintoClockinHEROHolviLanes & PlanesAgicap
Why it is fast

A QuickBooks integration in days

QuickBooks is a large, well travelled API, and getting the first call answered is the easy part. The work sits in three places where Intuit does things its own way. Here is what those are, and what Maesn takes off the table.

QuickBooks: Updates need a current SyncToken

The read comes before the write

QuickBooks versions every record with a SyncToken and rejects an update that carries an outdated one. It takes two shapes of update, a full one that clears every field you leave out and a sparse one that does not. Maesn fetches the current record, applies the fields you sent and returns the complete entity with the token QuickBooks expects, so you send the change without blanking what you never touched.

QuickBooks: The webhook envelope changed

The change stayed below the line

In 2026 QuickBooks webhooks moved to the CloudEvents format, and every integration parsing Intuit's payload directly had to rebuild how it reads and routes an event. What Maesn hands you is its own event shape, so the envelope underneath is free to change.

QuickBooks: The sandbox is a separate system

Both sides, one implementation

QuickBooks issues its own credentials for the sandbox, and Maesn exposes it as a target system of its own with a callback URL of its own. A test connection and a live one are two account keys against code you only wrote once.

What reaches your code is a REST call and an account key. Teams go live in days, and the system after QuickBooks is a configuration step rather than a second project.

A short call is usually enough to tell whether Maesn fits your use case.

Customer voice

Paywise replaced manual invoice imports with integrations

Paywise recovers unpaid invoices for businesses, from the first reminder through to legal enforcement. Their customers used to upload those invoices by hand, and the overdue list now comes out of whichever accounting system each of them already runs.

Our customers can connect their existing tools instantly, which drives engagement and makes Maesn a key part of our success strategy.
Felix Pieper
CIO, Paywise
Why companies choose Maesn

Three reasons to reach the QuickBooks API through Maesn

Connecting QuickBooks directly is a project you can finish. Keeping it running through Intuit's release schedule, and then adding the next system, is the part that decides your roadmap.

01

The QuickBooks work stays here

The realm ID on every request, the SyncToken behind every update and the app-level webhook configuration are what every QuickBooks integration has to solve. They are solved once, here, for every customer you connect.

02

Depth you can verify

Most of what you can read here also announces its own change, so the bulk of the sync work is a subscription rather than a schedule you maintain. What is not enabled today is available on request.

03

The next system costs nothing

Once QuickBooks runs, every other supported accounting and ERP system answers on the same interface. Your second integration is a configuration step.

App Store and partnership

QuickBooks production access runs through the partner programme

Most providers stop at the API. Maesn does the technical enablement and the relationship, and on QuickBooks the second one is not a finishing touch: an app reaches production data once it has been through the App Partner Program, and before that it has the development environment.

Technical enablement

One integration against the Unified API and one data model, identical to every other system Maesn supports. Your engineers meet the same interface here as they will for the next system.

Partnership support

Maesn takes you through the assessment, the tier your usage actually needs and the marketplace listing, and runs it alongside the build rather than after it.

Four QuickBooks App Partner tiers
  1. Builder
  2. Silver
  3. Gold
  4. Platinum

What separates the tiers

The volume of included CorePlus calls and the monthly fee, plus whether a marketplace listing is optional or required. Gold and Platinum also carry a minimum number of active connections. Builder is the free entry tier, and an approved assessment is the prerequisite for all four.

Core against CorePlus

Intuit classifies a call by endpoint and method. Core covers data going in, creating and updating records, and is unmetered. CorePlus covers data coming out, and is metered against your tier. Only successful calls count and sandbox calls do not. Those fees are Intuit's and are charged independently of Maesn.

The app stays registered under your company, so the assessment, the listing and the tier are yours. Maesn is the layer behind them rather than the name on the consent screen.

Maesn runs the QuickBooks assessment and the tier choice alongside your integration.

Authentication

The QuickBooks realm arrives with the connection, and stays here

QuickBooks authenticates with OAuth, and the app your customers authorise is yours rather than Maesn's. The part worth knowing is what the flow has to come back with: QuickBooks addresses a company by its realm ID, which belongs in the request URL, and it is also the unit Intuit counts rate limits against.

Auth method
OAuth
Your own QuickBooks app

One app, every customer. Maesn holds the credentials and keeps the realm and the tokens behind it.

What Maesn holds for you
Your app credentials
The client id and secret are submitted once and used for every connection. QuickBooks issues a second pair for its sandbox, and Maesn keeps the two apart as separate target systems rather than as one connection with a switch.
The realm and the token cycle
The realm ID of the company your customer connected is resolved during authentication, stored with the connection and added to every request. The access token behind it is refreshed here too, per connection.

An account key is unique to one end user and one target system, which is why a sandbox connection and a production connection are two keys rather than one with a flag. Where the key reaches you is configurable: the standard redirect to your callback URL, a signed callback you can verify server-side, or a webhook event instead of a redirect.

How your customer connects
  1. 1

    Your customer starts in your product

    You send them into the flow and Maesn opens Intuit's consent screen. It carries your app name, because the app is registered under your company, so the connection reads as yours rather than as a third party's.

  2. 2

    QuickBooks returns to Maesn

    The redirect URI on your app points at Maesn's callback, so the code exchange and the first token happen here instead of in your backend. The realm of the company they chose comes back with it and stays on the connection.

  3. 3

    You work with one account key

    Maesn stores the connection and returns an account key. From there every request carries your API key plus that account key, the same two headers you already send for every other system in the catalogue.

Every system in the catalogue authenticates differently, and QuickBooks is the case where the protocol is the ordinary half and what the flow has to bring back with it is not. Unified authentication is what keeps that off your side: the redirect, the token lifecycle and the way the account key is handed back to you are all configurable there, and identical no matter which system a customer connects.

Staying in sync

Nine QuickBooks resources, and six things that can happen to them

QuickBooks sends native events, and nine of its objects reach you through Maesn carrying six different things that can happen to them, which is the widest event vocabulary of any system in the catalogue. Maesn registers the subscription per connected customer and normalises the payloads, so the shape you handle is identical to every other system you integrate.

Resources9 available
AccountsBillsCustomersExpensesInvoicesItemsJournal entriesPaymentsSuppliers
Event types6 available
CreatedUpdatedDeletedMergedVoidedEmailed

Which resources and which of these types are active is set inside your QuickBooks app, and that setting applies to everyone who has connected it.

The setup happens in two places, and only one of them is per customer. In your QuickBooks app you pick the resources and event types, pointed at a callback URL we issue, and that covers every user of the app at once. Maesn then registers a subscription per authenticated connection, so a callback carries one customer's events and nothing else. They arrive as an array, and each entry names the record it concerns, so nothing has to be looked up before it can be routed.

Six types is the widest vocabulary in the catalogue, where the next system along publishes four and most stop at created, updated and deleted. It is still one vocabulary among many, which is why one event model runs across the whole catalogue: the handler you write for a QuickBooks invoice keeps working for a system that pushes nothing and needs polling underneath. It is also where Intuit’s move to the CloudEvents envelope lands: on what Maesn parses, rather than on what your handler reads.

Before you start

What QuickBooks expects up front

QuickBooks puts four things in front of an integration, and all of them are easier to plan for than to discover halfway through a build.

A QuickBooks account with administrator rights
A free trial account is enough, and it does not have to be an account you otherwise use. It exists to manage your app and, later, your partnership.
Your own QuickBooks app, registered by you
You create it in Intuit's developer portal under the QuickBooks Online and Payments option, in your product's name, which is the name your customers read when they link their account. Select the accounting scope, add Maesn's callback as a redirect URI, then send us the client id and secret.
An approved assessment before production
Until you are a QuickBooks app partner you have Intuit's development environment and nothing beyond it. The assessment is the prerequisite for every tier: an Intuit-approved questionnaire, the Developer Terms of Service and the App Partner Program requirements.
A callback URL from us before the first webhook
Resources and event types are configured inside your QuickBooks app, and the callback URL that configuration points at is issued by Maesn. Ask for it while the app is being set up, rather than on the day you wire the first subscription.

We walk through the app setup and the assessment with you.

The data model

One shape for QuickBooks, and for the system after it

QuickBooks is the widest event surface in this catalogue and its own query language is deliberately narrow. What a shared shape does is keep both of those out of the code you write.

Updates stop at two objects

Six objects can be created, and updates in place cover customers and suppliers only. Everything else is a create, so a product that edits records rather than posting new ones should check that line before anything else.

Bills send events before they are readable

A bill event arrives natively, while reading bills is one of the 108 combinations marked on demand in the matrix. On demand means not enabled by default rather than unavailable, so ask for the read at the same time as the event.

No object deletes by default

No object has delete enabled. Accounting practice expects corrections and cancellations as new documents anyway, so plan them that way rather than around a delete you would have to request.

Whatever you read comes back in the shared common data model, so an invoice from QuickBooks has the same shape as an invoice from a European accounting system, and the code you write here is the code you reuse for the next one.

Tell us which objects your use case needs and we will confirm what is possible.

QuickBooks FAQ

QuickBooks API questions

What is QuickBooks Online?

QuickBooks Online is Intuit's cloud accounting platform for small businesses and the accountants who work with them, used across the United States, Canada, the United Kingdom and Australia. It covers invoicing, expenses, bank reconciliation and tax reporting. For a software team the relevant part is how it is addressed: every request is scoped to one company, identified by its realm ID.

Do I need my own QuickBooks app?

Yes. You register it in Intuit's developer portal under the QuickBooks Online and Payments option, select the accounting scope and add Maesn's callback as a redirect URI, then submit the client id and secret once. Registering it under your own company is what puts your product's name in front of customers when they connect. Maesn runs the flow for every customer from there.

What is the QuickBooks realm ID and do I have to handle it?

The realm ID identifies the QuickBooks company a request belongs to, and it has to be in the request URL. Maesn resolves it while your customer connects, stores it with the connection and adds it to every call, so no QuickBooks specific routing stays in your code. It is also the unit Intuit counts rate limits against, which is why it is worth knowing about even when you never touch it.

Does QuickBooks rate limit its API?

Yes, and it counts per realm ID: 500 requests a minute and 10 concurrent requests per realm and app, with batch endpoints throttled at 40 requests a minute and a recommended maximum of 30 payloads per batch. Because a realm is one connected company, the budget scales with the number of customers you connect rather than being shared across all of them.

Does QuickBooks support webhooks?

Yes, for nine objects: accounts, bills, customers, expenses, invoices, items, journal entries, payments and suppliers. QuickBooks reports six event types, the widest vocabulary of any system in the catalogue, adding merged, voided and emailed to created, updated and deleted. Which resources and types are active is configured inside your QuickBooks app and applies to every user of it, and Maesn registers the subscription per connected customer and normalises the payloads.

What changed with the QuickBooks CloudEvents migration?

Intuit moved QuickBooks webhook payloads onto the CloudEvents format in 2026, which changed where the company, the entity type and the operation sit in an event. Anyone parsing Intuit's payload directly had to rebuild their deserialization and routing for it. Through Maesn you consume a normalised event instead, so a change to Intuit's envelope happens below the interface your handler reads.

What is the QuickBooks SyncToken and does it affect my updates?

QuickBooks gives every record a SyncToken and rejects an update that carries an outdated one, which is how it prevents two systems from overwriting each other. Maesn handles that cycle: it retrieves the current record, applies the fields you sent and submits the complete entity with the token QuickBooks expects, then returns the updated record to you.

Is there a QuickBooks sandbox?

Yes, and it is treated as its own target system rather than as a mode. QuickBooks issues separate sandbox credentials, the sandbox has its own callback URL, and an account key is unique to one end user and one target system, so a test connection and a live connection are two keys. The code you write against one is the code you run against the other.

What is the QuickBooks App Partner Program?

It is Intuit's programme for software vendors integrating with QuickBooks, and it is what production access and a marketplace listing follow from. There are four tiers, Builder, Silver, Gold and Platinum, and an approved assessment is the prerequisite for all of them. Intuit also classifies API calls as Core, which covers data going in and is unmetered, or CorePlus, which covers data coming out and is metered against your tier. Those fees are charged by Intuit independently of Maesn, and Maesn helps you land on the tier your usage needs.

Which data can I read and write in QuickBooks?

Accounts, customers, suppliers, expenses, invoices, items, journal entries, payments, tax rates and users are readable today, six of them writable, and updates in place cover customers and suppliers. The 108 combinations marked on demand are available on request.

Why integrate QuickBooks through Maesn instead of directly?

Because the work does not stop at QuickBooks. Direct means owning the OAuth app, the realm ID on every request, the SyncToken cycle behind every update, an app-level webhook configuration and every change Intuit makes to it, for one system. Through Maesn you build once against one data model, and every other supported accounting and ERP system is then reachable on the same interface.
Ship your ERP and accounting integrations. Connect once.
Book a demo