QuickBooks Desktop,
as a normal API
REST, typed TypeScript and Python SDKs, and a connect flow your customers can finish alone. $24.99 per company file.
No card. Unlimited sample company files.
Conductor lists $49 per company file per month (conductor.is, checked 3 Nov 2026). Wirebook by BufferSol charges $24.99. Every price is published.
const invoice = await wirebook.invoices.create({
customerId: "cust_8F2A", refNumber: "INV-1042",
lines: [{ item: "Framing labour", qty: 12, rate: 107.04 }]
}, { idempotencyKey: "acme-inv-1042" }) // 201 in 2.1 s| Request | Operation | Amount | State | Time |
|---|---|---|---|---|
| req_01JC9Q4 | POST invoices | 1,284.48 | succeeded | 2.1 s |
| req_01JC9Q3 | GET customers | n/a | succeeded | 1.4 s |
| req_01JC9Q1 | POST bills | 3,907.15 | succeeded | 3.0 s |
| req_01JC9P8 | POST invoices | 612.00 | failed3140 Invalid reference. Guide: /errors/3140 | 1.9 s |
| req_01JC9P5 | POST payments | 2,450.60 | outcome unknown | timed out |
| req_01JC9P2 | POST invoices | 918.33 | queued | waiting |
6 requests3 succeeded1 failed1 outcome unknown1 queued
QuickBooks Desktop has no cloud API
To read one invoice you host a SOAP server for the Windows only Web Connector, speak order sensitive qbXML, decode errors like 0x80040400, and support your customers' Windows machines.
- QBWC1085The Web Connector could not write its log file, so the update stopped. Fix the log path permissions, then run it again.
- 0x80040408QuickBooks could not open the company file. Open the file on the PC and leave it open.
- 3140A reference does not match a record in this company file. Fix the name or pass the ListID.
- 3100The name is already in use by another record. Use the existing record or pick a new name.
Your app makes a normal API call. Wirebook by BufferSol handles the Web Connector.
What you get
Coming in v1: a C# SDK and a hosted MCP server with read only mode.
POST invoices · acme-inv-1042succeeded
POST invoices · acme-inv-1042replayed
Sample data. Same key, same body: one invoice.
One call, one invoice, never two
Send an Idempotency-Key on every write. We replay it for 7 days. A different body with the same key returns 409.
{ "type": "invalid_reference", "code": "3140", "userFacingMessage": "CustomerRef does not match a customer.", "guideUrl": "/errors/3140", "retryable": false, "requestId": "req_01JC9P8" }Errors that say what to do
One error object: type, code, userFacingMessage, guideUrl, retryable, requestId. Thirty guides at launch. Same input, same message, no AI model.
- 00:00.0Queued for Harlan Mechanical
- 00:00.4Sent on Web Connector poll
- 00:01.7QuickBooks replied, status 0
A request log with lifecycle states
queued, sent, succeeded, failed, outcome_unknown. If a request was sent but no answer came back, it is marked outcome_unknown and never retried for you.
- Download the connector file
- Allow access in QuickBooks
- Paste the password
- Connected
- Mockup. Each step turns green only when our server saw it.
A connect flow your customer finishes alone
Four steps, and each one turns green only when our server saw it. The link is valid for 24 hours.
TypeScript await wirebook.customers.list()
Python wirebook.customers.list()
cURL curl -H "Authorization: Bearer sk_test_…" /v1/qbd/customers
Typed SDKs and a raw escape hatch
TypeScript with async iterators and retries, and Python with sync and async clients, both generated from OpenAPI 3.1. Any valid qbXML works through passthrough.
sk_test_••••••••••••Test
sk_live_••••••••••••Production
Mockup. Shown once, stored as a SHA-256 hash.
Test and Production keys, kept apart
Keys are shown once, stored as SHA-256 hashes and revocable within 5 seconds.
From sign up to first request
Step 1: Create a key and an end user
Sign up, create an sk_test_ key, add your customer and get a connect link valid for 24 hours.
POST /v1/connect-links
{ "externalId": "acme-42" }
connect link: valid 24 hours (sample)Step 2: Your customer connects
They open the link on the QuickBooks PC, download a .qwc file, choose Yes, always allow access even if QuickBooks isn't running, and paste the password. The status turns Connected.
- Download the connector file
- Allow access in QuickBooks
- Paste the password
- Connected
- Mockup. Each step turns green only when our server saw it.
Step 3: Call the API
POST /v1/qbd/invoices. Wirebook validates, translates to ordered qbXML, queues it per company file and returns JSON on the next Web Connector poll.Requests run when QuickBooks next checks in, so this is polling, not real time. If the connector is not running you get a 202 queued, and a guide after 30 seconds.curl -X POST /v1/qbd/invoices \ -H "Idempotency-Key: acme-inv-1042" \ -d @invoice.json 202 queued (sample) 201 succeeded in 2.1 s
Same job. Half the price. Every price on this page.
A file counts only if a data request succeeded that month. Sample files never count.
| Developer | $0 | Unlimited sample company files |
|---|---|---|
| Production | $24.99 | per active file, per month |
| Production, billed yearly | $19.99 | per file, per month |
| Starter Pack, 4 files | $97.99 | per month |
| Volume | $16.99 | per file at 50+ files |
| Enterprise | Custom |
10 files: 10 × $24.99 = $249.90 per month
The same 10 files at $49 = $490 (Conductor, checked 3 Nov 2026)
What the alternatives charge, and what you take on
| Option | Published price | Source |
|---|---|---|
| Conductor | $49 per company file per month | conductor.is, checked 3 Nov 2026 |
| Desktop Accounting API | $49 per active file per month, 30 day trial | desktopaccountingapi.com, checked 3 Nov 2026 |
| Apideck Launch | $599 per month for 25 consumers; QuickBooks Desktop in beta | apideck.com/pricing, checked 3 Nov 2026 |
| Do it yourself | Free code. You own SOAP, sessions, qbXML order and retries. | qbwc-kit and QuickBooks-PHP, open source |
| Wirebook by BufferSol | $24.99 per active file per month | This site |
Need one schema across QuickBooks Online, Xero and NetSuite? Use a unified API such as Apideck. We only do QuickBooks Desktop, and we do it for half the price.
Who it is for, and who it is not
A good fit
Not a fit
Questions, answered
Is half price a sign of half quality?
We cannot prove quality with a price, so we publish what we do: the request lifecycle, the error object, the idempotency rules and the roadmap. We only claim what we have tested, and the first acceptance run against a real QuickBooks is still ahead of us.
Will a two person vendor be around in three years?
We cannot promise that. What we can do is keep you unlocked: any valid qbXML works through passthrough, every price is published, and your request history is yours to export.
Is it real time?
No. QuickBooks Desktop only talks to the Web Connector when it polls. Requests run when QuickBooks next checks in. If the connector is not running you get a 202 queued, and a guide after 30 seconds.
What counts as an active file?
A company file counts in a month only if a data request succeeded for it that month. Sample files never count.
How do you stop duplicate writes?
Send an Idempotency-Key on every write. We replay the first result for 7 days. The same key with a different body returns 409. If a request was sent but no answer came back, it is marked outcome_unknown and never retried for you: look it up by RefNumber before you send it again.
What do you log, and who sees it?
Request and response bodies are deleted after 14 days, sooner if you set it, and request metadata after 90. No email API, analytics service or AI model is in the data path.
Do you have SOC 2?
No, not at launch. We offer a self attested security pack and a DPA.
Which QuickBooks versions work?
QuickBooks Desktop 2024 is our target version, so far validated against a Web Connector simulator; the run on a real install is pending. Version 2023 and older is best effort. Pro, Premier and Enterprise on Windows are supported.
Does it work with QuickBooks for Mac or UK QuickBooks Desktop?
No. The Web Connector runs on Windows, and we do not support the UK edition.
Can I try it without buying QuickBooks?
Yes. Sample company files are unlimited on the free Developer tier. No card.
What does migration cost?
Moving from another QuickBooks Desktop API or a home grown Web Connector server? Write to us and we will agree a free migration period.
Is Intuit involved?
QuickBooks is a trademark of Intuit Inc. Wirebook by BufferSol is a product of BufferSol Technologies and is not affiliated with or endorsed by Intuit.
Your first request in about 15 minutes
That is our target for a developer with a sample company file, not a promise.
No card. Unlimited sample files.