---
title: "Qbo Intuit Disconnect"
method: GET
path: "/auth/qbo/intuit-disconnect"
tags: ["auth"]
---

# Qbo Intuit Disconnect

`GET /auth/qbo/intuit-disconnect`

## Request

- Base URL: `https://api.claimkit.co` (the document declares no server; this is the origin it was published from)
- URL: `https://api.claimkit.co/auth/qbo/intuit-disconnect`
- Auth: none declared

Handle Intuit-initiated disconnect (user disconnected from inside QuickBooks).

Production URL: https://api.claimkit.co/auth/qbo/intuit-disconnect
Register this in Intuit Developer -> Keys & Credentials -> Production tab -> Disconnect URL.

Intuit calls this as a GET with ?realmId=... in the query string when a user clicks
"Disconnect" on the "My Apps" page inside QuickBooks Online. There is no signed header
or shared secret — verification relies on the realmId being non-public and the endpoint
being idempotent (cleanup only; always 200).

Unlike ``DELETE /auth/qbo/disconnect`` (user-initiated from our side, requires ClaimKit
auth), this endpoint is unauthenticated — it is Intuit notifying us server-to-server.

Because ``realm_id`` is not unique across ``QBOIntegration`` rows (two ClaimKit users
could connect the same QBO company), we clean up EVERY row matching the realm.

## Query parameters

- `realmId` string, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/claimkit/apis/claimkit-api.md) - [All operations](https://skmtc.dev/claimkit/apis/claimkit-api/llms.txt) - [OpenAPI document](https://skmtc.dev/claimkit/apis/claimkit-api/revisions/94dc85ba5326?raw)
