# Desktop Accounting API > REST API and SDKs (TypeScript, Python, C#/.NET, Java) for QuickBooks Desktop through the QuickBooks Web Connector. Base URL https://api.desktopaccountingapi.com/v1, bearer secret keys, end user selected with the Daapi-End-User-Id header. Every page below links its Markdown version. The full text of all guides in one file: https://www.desktopaccountingapi.com/docs/llms-full.txt The complete endpoint and field reference is the OpenAPI 3.1 document: https://www.desktopaccountingapi.com/docs/openapi.json - [Desktop Accounting API documentation](https://www.desktopaccountingapi.com/docs/index.md): Read and write QuickBooks Desktop data from your application with a REST API and SDKs for TypeScript, Python, C# and Java. ## Get started - [Authentication and API keys](https://www.desktopaccountingapi.com/docs/get-started/authentication.md): Secret keys, the publishable key, the Daapi-End-User-Id header, test and production projects, and key rotation. - [Core concepts](https://www.desktopaccountingapi.com/docs/get-started/concepts.md): Organizations, projects, keys, end users, connections, connectors and requests, and how a call reaches QuickBooks Desktop. - [Developer FAQ](https://www.desktopaccountingapi.com/docs/get-started/faq.md): Short answers to common questions about how the Desktop Accounting API works, its limits, data handling, pricing and QuickBooks compatibility. - [Migrating from Conductor](https://www.desktopaccountingapi.com/docs/get-started/migrating-from-conductor.md): Move a Conductor integration to Desktop Accounting API. Same paths, field names and headers; change the base URL and key, then reconnect each customer. - [Quickstart](https://www.desktopaccountingapi.com/docs/get-started/quickstart.md): Create an API key, connect a QuickBooks Desktop company file and list its invoices from your code. ## Connect your customers - [Connection status and health checks](https://www.desktopaccountingapi.com/docs/connect/connection-status.md): What each connection status means, how to run a health check before a sync, and how to show connection problems to your customers. - [End users and connections](https://www.desktopaccountingapi.com/docs/connect/end-users.md): Create, find, update and delete end users, read their connection details, and decide how to map your customers to QuickBooks company files. - [Connect an end user](https://www.desktopaccountingapi.com/docs/connect/setup-flow.md): Create setup links with auth sessions, show them as a link, a shared URL or an iframe, and handle the redirect when your customer finishes. ## Build - [Error handling](https://www.desktopaccountingapi.com/docs/guides/error-handling.md): The error object, the nine error types, when to retry, what to show your customer, and typed SDK errors in TypeScript, Python, C# and Java. - [Idempotency and safe retries](https://www.desktopaccountingapi.com/docs/guides/idempotency.md): Use Idempotency-Key so a retried write never runs twice, understand write outcomes, and handle a write whose result is unknown. - [Incremental sync](https://www.desktopaccountingapi.com/docs/guides/incremental-sync.md): Keep your copy of QuickBooks data current with updatedAfter watermarks, deleted-object lists, and time windows for large files. - [AI tools and MCP](https://www.desktopaccountingapi.com/docs/guides/mcp.md): Connect Claude, Cursor, VS Code, Codex and other AI tools to QuickBooks Desktop through the hosted MCP server or the local npm package, with read-only keys enforced by the API. - [Pagination](https://www.desktopaccountingapi.com/docs/guides/pagination.md): Page through large QuickBooks lists with cursors, understand cursor expiry, use SDK auto-pagination, and recover from CURSOR_EXPIRED without losing records. - [Rate limits and throughput](https://www.desktopaccountingapi.com/docs/guides/rate-limits.md): Project rate limits, per-connection queue limits, how QuickBooks itself limits throughput, and how to handle 429 responses. - [Request lifecycle and status](https://www.desktopaccountingapi.com/docs/guides/request-lifecycle.md): How a QuickBooks request is queued, sent and answered, sync and async modes, timeouts, the per-connection queue, and how to read a request's status. - [Webhooks](https://www.desktopaccountingapi.com/docs/guides/webhooks.md): Receive signed events when requests finish and connections change, verify them with Standard Webhooks, and handle retries and duplicates. ## Errors - [Error codes](https://www.desktopaccountingapi.com/docs/errors.md): Every error code the Desktop Accounting API returns, with its HTTP status, cause, fixes, retry rule and an example body. ## QuickBooks Desktop - [Money, dates and data conventions](https://www.desktopaccountingapi.com/docs/quickbooks/conventions.md): How the API represents amounts, prices, quantities, dates, timestamps, text, IDs and references, and the validation rules that protect your data. - [Custom fields](https://www.desktopaccountingapi.com/docs/quickbooks/custom-fields.md): Read QuickBooks custom fields on records and lines, set them on new transaction lines, and change them through passthrough. - [A developer's guide to QuickBooks Desktop](https://www.desktopaccountingapi.com/docs/quickbooks/developer-intro.md): What makes QuickBooks Desktop different from cloud accounting APIs, and how to design an integration that works with customers' real computers. - [Editions, versions and features](https://www.desktopaccountingapi.com/docs/quickbooks/editions-and-features.md): How QuickBooks editions, versions and company settings such as Advanced Inventory, multicurrency, units of measure and payroll affect API calls. - [Mapping your objects to QuickBooks](https://www.desktopaccountingapi.com/docs/quickbooks/mapping-objects.md): Decide which QuickBooks records your customers, products, orders and payments become, and match existing records without creating duplicates. - [Passthrough and raw qbXML](https://www.desktopaccountingapi.com/docs/quickbooks/passthrough.md): Send qbXML requests directly to QuickBooks Desktop as JSON or XML for anything the typed operations do not cover. - [Reports](https://www.desktopaccountingapi.com/docs/quickbooks/reports.md): Run QuickBooks Desktop reports such as profit and loss, balance sheet and aging, and read their rows, columns and subtotals as JSON. - [Set up a test environment](https://www.desktopaccountingapi.com/docs/quickbooks/test-environment.md): Run QuickBooks Desktop with a sample company file on a Windows machine or virtual desktop to develop and test your integration for free. - [Updates and line items](https://www.desktopaccountingapi.com/docs/quickbooks/updates-and-line-items.md): Update QuickBooks records safely with revisionNumber, clear fields with null, and add, keep, change or remove line items. ## SDKs - [SDKs](https://www.desktopaccountingapi.com/docs/sdks.md): Official Desktop Accounting API SDKs for TypeScript, Python, C# / .NET and Java, and what each one handles for you. - [C# and .NET](https://www.desktopaccountingapi.com/docs/sdks/dotnet.md): Install and use the Desktop Accounting API .NET SDK, with async methods, decimal money, IAsyncEnumerable pagination and typed exceptions. - [Java](https://www.desktopaccountingapi.com/docs/sdks/java.md): Install and use the Desktop Accounting API Java SDK, with BigDecimal money, Iterable pagination, typed exceptions and safe retries. - [Python](https://www.desktopaccountingapi.com/docs/sdks/python.md): Install and use the Desktop Accounting API Python SDK, with typed models, Decimal money, auto-pagination, typed errors and safe retries. - [TypeScript and Node.js](https://www.desktopaccountingapi.com/docs/sdks/typescript.md): Install and use the Desktop Accounting API TypeScript SDK, with typed resources, auto-pagination, typed errors and safe retries. ## API - [Using the API](https://www.desktopaccountingapi.com/docs/api.md): Base URL, versioning, headers, request IDs, response formats and the OpenAPI document behind the Desktop Accounting API reference. ## Platform - [Billing and pricing](https://www.desktopaccountingapi.com/docs/platform/billing.md): How Desktop Accounting API bills per active production company file, the free trial, what counts, what stays free, and what happens if a payment fails. - [Changelog](https://www.desktopaccountingapi.com/docs/platform/changelog.md): Changes to the Desktop Accounting API, SDKs, setup flow, dashboard and documentation, newest first. - [Dashboard guide](https://www.desktopaccountingapi.com/docs/platform/dashboard.md): Manage projects, keys, end users, setup links, the request log, webhooks, team members, billing and settings in the dashboard. - [Security and data retention](https://www.desktopaccountingapi.com/docs/platform/security.md): How keys, Web Connector passwords and setup links are protected, what data we store about requests, how long we keep it, and how to delete it. - [Supported environments](https://www.desktopaccountingapi.com/docs/platform/supported-environments.md): Supported QuickBooks Desktop editions and versions, Windows and Web Connector requirements, hosting, network needs, and documented incompatibilities. ## Help center for end users - [Help center](https://www.desktopaccountingapi.com/docs/help.md): Set up and fix the connection between QuickBooks Desktop and the app that sent you a setup link. - [QuickBooks denied access to the app](https://www.desktopaccountingapi.com/docs/help/connection-errors/access-denied.md): Fix errors 0x80040420, 0x8004041A and 0x8004041D by allowing the app again in QuickBooks Integrated Applications preferences. - [QBWC1039: Only the Admin can grant first access](https://www.desktopaccountingapi.com/docs/help/connection-errors/admin-required.md): Fix QBWC1039 "This application has not accessed this QuickBooks company data file before" and error 0x80040418 by approving the app as Admin in single-user mode. - [Another update is in progress](https://www.desktopaccountingapi.com/docs/help/connection-errors/another-update-in-progress.md): What the Web Connector message "Another update is in progress" means, and how to fix it when it does not clear. - [QuickBooks could not be started](https://www.desktopaccountingapi.com/docs/help/connection-errors/cannot-start-quickbooks.md): Fix errors 0x80040408, 0x80040401, 0x80040424 and 0x8004042D when the Web Connector cannot start or reach QuickBooks Desktop. - [Unable to cast COM object](https://www.desktopaccountingapi.com/docs/help/connection-errors/com-object-error.md): Fix the Web Connector error "Unable to cast COM object" by repairing QuickBooks components and running both programs at the same permission level. - [QuickBooks says the company file is being used by another application](https://www.desktopaccountingapi.com/docs/help/connection-errors/company-file-in-use.md): Fix "The company file cannot be closed at this time because there is another application (… via Desktop Accounting API) which is using it" when you close the company, exit QuickBooks or restore a backup. - [The company file cannot be found](https://www.desktopaccountingapi.com/docs/help/connection-errors/company-file-not-found.md): Fix errors 0x80040403, 0x80040416 and 0x80040417 when QuickBooks cannot open the connected company file at its saved location. - [Connection not active](https://www.desktopaccountingapi.com/docs/help/connection-errors/connection-not-active.md): Fix a QuickBooks Desktop connection when the Web Connector has stopped checking in. - [The QuickBooks user lacks permission](https://www.desktopaccountingapi.com/docs/help/connection-errors/insufficient-permission.md): Fix QuickBooks status 3260 "Insufficient permission level" and status 3261 "no permission to access personal data" by giving the connection the access the app needs. - [A QuickBooks window is blocking the connection](https://www.desktopaccountingapi.com/docs/help/connection-errors/modal-dialog-open.md): Fix error 0x80040414 and QBWC1053 by closing the QuickBooks pop-up window that blocks integrated apps. - [QBWC1012: Authentication failed](https://www.desktopaccountingapi.com/docs/help/connection-errors/qbwc1012-authentication-failed.md): Fix QBWC1012 when the Web Connector cannot complete its sign-in call to the server, usually because of TLS, a proxy or antivirus, or the network. - [QBWC1048: Could not verify the server certificate](https://www.desktopaccountingapi.com/docs/help/connection-errors/qbwc1048-certificate.md): Fix QBWC1048 when the Web Connector cannot verify our server's HTTPS certificate, usually because of the system clock, HTTPS inspection or missing root certificates. - [QBWC1085: Problem with the log file](https://www.desktopaccountingapi.com/docs/help/connection-errors/qbwc1085-log-file.md): Fix QBWC1085 by resetting the damaged or missing Web Connector log file, QWCLog.txt. - [This QuickBooks version is not supported](https://www.desktopaccountingapi.com/docs/help/connection-errors/quickbooks-version-unsupported.md): Fix errors 0x80040404, 0x80040423 and 0x80040428 when QuickBooks Desktop is too old or is a non-US edition. - [A record is open or locked by another user](https://www.desktopaccountingapi.com/docs/help/connection-errors/record-in-use.md): Fix QuickBooks status 3175 and 3176 when the record the app wants to change is open in QuickBooks or locked by another user. - [Requests stop working after restoring a backup](https://www.desktopaccountingapi.com/docs/help/connection-errors/restored-backup.md): Fix a connection that looks online but times out after you restored a QuickBooks backup made before the app was connected (QBWC1079 in the Web Connector log). - [Single-user or multi-user mode conflict](https://www.desktopaccountingapi.com/docs/help/connection-errors/single-user-multi-user.md): Fix errors 0x80040410 and 0x80040422 when the company file is open in a mode that blocks the connection. - [QBWC1039: Unique OwnerID/FileID pair value required](https://www.desktopaccountingapi.com/docs/help/connection-errors/unique-ownerid-fileid.md): Fix the QBWC1039 Unique OwnerID/FileID pair value required error by removing the old Web Connector entry and running a fresh setup link. - [Web Connector password problems](https://www.desktopaccountingapi.com/docs/help/connection-errors/web-connector-password.md): Fix a Web Connector password that is not set, rejected (QBWC1040), lost, or asked for every time the Web Connector starts. - [The Web Connector shows an unhandled error](https://www.desktopaccountingapi.com/docs/help/connection-errors/web-connector-unhandled-error.md): Fix a Microsoft .NET error window in the QuickBooks Web Connector, such as "Index (zero based) must be greater than or equal to zero", when you add a connector file or close the Web Connector. - [Windows asks to allow this app to make changes](https://www.desktopaccountingapi.com/docs/help/connection-errors/windows-permission-prompt.md): Stop the Windows "Do you want to allow this app to make changes to your device?" prompt from blocking the Web Connector or QuickBooks. - [A different company file is open](https://www.desktopaccountingapi.com/docs/help/connection-errors/wrong-company-file.md): Fix error 0x8004040A and a company file mismatch when QuickBooks has a different company file open than the one you connected. - [End-user FAQ](https://www.desktopaccountingapi.com/docs/help/faq.md): Answers to common questions about connecting QuickBooks Desktop to an app through the QuickBooks Web Connector. - [Web Connector settings to keep](https://www.desktopaccountingapi.com/docs/help/guides/change-connection-settings.md): The Web Connector and QuickBooks settings the connection depends on, and what breaks when they change. - [Change the QuickBooks user the connection uses](https://www.desktopaccountingapi.com/docs/help/guides/change-quickbooks-user.md): Pick a different QuickBooks user for the connection without running setup again. - [Create a dedicated QuickBooks user for the connection](https://www.desktopaccountingapi.com/docs/help/guides/dedicated-quickbooks-user.md): Give the connection its own QuickBooks user so it never collides with a person's sign-in. - [Hosted QuickBooks (Rightworks and others)](https://www.desktopaccountingapi.com/docs/help/guides/hosted-quickbooks.md): Connect QuickBooks Desktop that runs on a hosting service, and keep the connection running in your hosted session. - [Move the connection to a new computer](https://www.desktopaccountingapi.com/docs/help/guides/move-to-new-computer.md): Connect the same QuickBooks company file from a different Windows computer and retire the old one. - [Fix a moved, renamed or restored company file](https://www.desktopaccountingapi.com/docs/help/guides/moved-or-renamed-file.md): What to do when the app cannot find your QuickBooks company file after you moved, renamed or restored it. - [Use the connection in a multi-user office](https://www.desktopaccountingapi.com/docs/help/guides/multi-user-mode.md): Pick the right computer for the Web Connector when several people share a QuickBooks company file. - [Connect several company files](https://www.desktopaccountingapi.com/docs/help/guides/multiple-company-files.md): Connect more than one QuickBooks company file to the same app, and avoid conflicts when they share a computer. - [Keep one QuickBooks version installed](https://www.desktopaccountingapi.com/docs/help/guides/one-quickbooks-version.md): Remove older QuickBooks Desktop versions so the Web Connector always starts the right one. - [Remove the connection](https://www.desktopaccountingapi.com/docs/help/guides/remove-connection.md): Stop an app from reaching your QuickBooks company file, on the computer and in QuickBooks. - [Repair a damaged company file](https://www.desktopaccountingapi.com/docs/help/guides/repair-company-file.md): Use QuickBooks Verify Data and Rebuild Data when one kind of record keeps failing while the rest of the connection works. - [Run QuickBooks and the Web Connector at the same permission level](https://www.desktopaccountingapi.com/docs/help/guides/run-as-administrator.md): Fix connection failures caused by running only QuickBooks or only the Web Connector as administrator. - [Start QuickBooks and the Web Connector at sign-in](https://www.desktopaccountingapi.com/docs/help/guides/start-automatically.md): Make the Web Connector, and optionally QuickBooks, start by themselves after the computer restarts. - [Upgrade QuickBooks Desktop](https://www.desktopaccountingapi.com/docs/help/guides/upgrade-quickbooks.md): Keep the connection working when you install a new year's version of QuickBooks Desktop. - [Upgrade the Web Connector](https://www.desktopaccountingapi.com/docs/help/guides/upgrade-web-connector.md): Check your QuickBooks Web Connector version and install a newer one if it is older than 2.2.0.34. - [Requirements](https://www.desktopaccountingapi.com/docs/help/requirements.md): The QuickBooks Desktop editions, Windows setup, user access and network access the connection needs. - [Connect QuickBooks Desktop](https://www.desktopaccountingapi.com/docs/help/setup.md): Follow the setup link from your app to connect a QuickBooks Desktop company file through the QuickBooks Web Connector. ## Optional - [API reference](https://www.desktopaccountingapi.com/docs/api/reference.md): every operation, grouped by resource, each linking a Markdown page with its parameters, request body and responses