Your application.
Their QuickBooks. Connected.
A modern API on your side. A guided connection on theirs.
Read and write QuickBooks Desktop and Enterprise data from your application.
Your application
SDK or REST request
Desktop Accounting API
Requests, types, and errors
Web Connector
On your customer’s Windows computer
QuickBooks company file
Your customer’s accounting data
GET /invoicesWeb Connector checks in for work. QuickBooks processes it.200 OK JSON responseGive each customer
the right connection.
Create a customer connection and keep its identifier with the matching customer in your app. Generate a setup link and open it on the Windows computer that runs their QuickBooks.
Talk through your integrationcompany_01company_02Separate connections. The right books for every request.
Easy for your customers.
Clear for your team.
Turn desktop setup into a guided experience. Your customers connect QuickBooks. Your team gets a connection it can work with.
Let’s connect your company file.
Follow the steps to give your application access to QuickBooks Desktop.
desktop-accounting.qwcQWCYour company. Your permission.
Approve the application in QuickBooks to authorize access to the selected company file.
Connected. Ready for your app.
Your connection brings a modern API to the company file your customer already uses.
/invoices200 OKInteractive walkthrough with sample company data.
Your code speaks JSON.
QuickBooks does the accounting.
Send an SDK or REST request with the customer’s connection identifier. We handle the Web Connector exchange, translate the accounting request, and return a JSON response.
- Use the language you already work in.TypeScript, Python, C# / .NET, Java, or direct HTTP with curl.
- Read and write through one interface.Work with customers, invoices, payments, and other QuickBooks accounting objects.
- Keep legacy protocols out of your app.Request handling, pagination, and consistent errors sit behind a modern interface.
// Fetch invoices from a connected company file.
// Illustrative SDK interface.
const invoices = await client.invoices.list({
companyId: "company_example",
limit: 25,
});
for (const invoice of invoices.data) {
console.log(invoice.id, invoice.totalAmount);
}
# Fetch invoices from a connected company file.
# Illustrative SDK interface.
invoices = await client.invoices.list(
company_id="company_example",
limit=25,
)
for invoice in invoices.data:
print(invoice.id, invoice.total_amount)
// Fetch invoices from a connected company file.
// Illustrative SDK interface.
var invoices = await client.Invoices.ListAsync(
new InvoiceListOptions {
CompanyId = "company_example",
Limit = 25
});
foreach (var invoice in invoices.Data) {
Console.WriteLine(invoice.Id);
}
// Fetch invoices from a connected company file.
// Illustrative SDK interface.
var invoices = client.invoices().list(
InvoiceListOptions.builder()
.companyId("company_example")
.limit(25)
.build()
);
for (var invoice : invoices.data()) {
System.out.println(invoice.id());
}
# The same operation over HTTP.
# Illustrative REST interface.
curl --request GET \
"$API_BASE_URL/invoices?companyId=company_example" \
--header "Authorization: Bearer $API_KEY" \
--header "Accept: application/json"
{
"data": [
{
"id": "INV-1042",
"customerId": "CUS-0281",
"totalAmount": "1250.00",
"currency": "USD"
}
]
}
Built around
desktop reality.
QuickBooks runs on your customer’s machine. Give them a clear way to sync, and give your team the context to help when a connection needs attention.
Have a setup question? Talk to us What runs on the customer’s computer?
QuickBooks Desktop and QuickBooks Web Connector run in the customer’s Windows environment. Web Connector checks in with our service for work and exchanges requests with the authorized company file. Your application uses our API from its own backend.
What happens if the computer is offline?
A request cannot complete while the Windows computer or company file is inaccessible. Your application receives a connection error with a next step for the customer. Restore access, check the connection, and run the operation again.
Does a connected status mean a sync will succeed?
A connection being set up is different from QuickBooks being ready to process a request. A real request checks the full path to the company file. A wrong file, a blocking dialog, or unavailable QuickBooks can still require the customer’s attention.
How do multiple company files work?
Each connection identifies a specific company file. Keep the connection identifier with the corresponding customer in your application and use it to direct requests to the right set of books.
Start with a sample file.
Then connect your customers.
Test the connection flow and API with QuickBooks sample company files or trial installations. Production is $49 per active company file per month, with unlimited API usage.
Bring QuickBooks Desktop
into your product.
Your customers’ accounting. Your application’s next capability.