> ## Documentation Index
> Fetch the complete documentation index at: https://entendre.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Disconnect connection

> Disconnects a provider account.

Requires a user-scoped API key, and `write:gl` for a general-ledger connection or `write:connections` for other connections.

Cleanup and retained data depend on the provider. Imported accounting data is cleaned up in the same way as a disconnect in the Entendre app. If remote revocation fails after the local cleanup, the response shows the state and the revocation error. NetSuite rejects an ambiguous credential configuration with HTTP 409.

Exchange, bank and card connections accept the optional `If-Match` check that [Update connection](/docs/api-reference/integrations/connections/update-connection) describes.


## OpenAPI

````yaml openapi-public-preview.json DELETE /v1/connections/{connection_id}
openapi: 3.1.0
info:
  title: Entendre API
  version: 1.0.0
  description: Programmatic access to crypto-native accounting and treasury operations.
servers:
  - url: https://api.entendre.finance
    description: Production API.
security:
  - ApiKey: []
tags:
  - name: Organization
    description: Read your organization profile and find members for agent assignments.
  - name: Transactions
    description: Find transactions, inspect their details and create manual records.
  - name: Sources
    description: >-
      Manage wallets, exchange accounts, bank accounts and other transaction
      sources.
  - name: Assets
    description: Inspect asset acquisitions, remaining quantities and cost basis.
  - name: Journals
    description: >-
      Create and post journal entries, correct eligible entries and sync posted
      journals to a connected general ledger.
  - name: Documents
    description: >-
      Upload documents, check processing status and link supporting evidence to
      transactions.
  - name: Legal Entities
    description: Manage the legal entities used in your accounting records.
  - name: Ledger Accounts
    description: Manage your chart of accounts and find accounts for journal entries.
  - name: Tags
    description: Create and manage tags to classify your records.
  - name: Accruals
    description: >-
      Create and post accruals, inspect their status and reverse eligible
      entries.
  - name: Cash Application
    description: Match deposits to invoices and manage the resulting cash applications.
  - name: Classification
    description: >-
      Classify transactions in a batch, post eligible entries and inspect the
      results.
  - name: Revaluation
    description: Run asset revaluations for an accounting period and check their results.
  - name: Accounting Periods
    description: Check whether a period is ready to close, then close or reopen it.
  - name: Income Statement
    description: View revenue, expenses and net income for a reporting period.
  - name: Balance Sheet
    description: View assets, liabilities and equity as of a reporting date.
  - name: Trial Balance
    description: Review ledger account balances and debit and credit totals.
  - name: Closing Positions
    description: View asset positions at the end of a reporting period.
  - name: Treasury Balances
    description: Review treasury balances by asset and source.
  - name: Realized Gains & Losses
    description: Review realized gains and losses from asset dispositions.
  - name: Asset Tax Lots
    description: Inspect asset tax lots, remaining quantities and cost basis.
  - name: Schedule of Dispositions
    description: >-
      Review asset dispositions and their proceeds, cost basis and gains or
      losses.
  - name: Financial Insights
    description: Review financial insights for your selected reporting context.
  - name: Agents
    description: Create agents, schedule their work and inspect their runs.
  - name: Memory
    description: Read, search and maintain the memory files your agents use.
  - name: Connections
    description: Connect providers, manage authorization and disconnect.
  - name: GL Mapping
    description: >-
      Map ledger accounts and legal entities to your ERP. Import legal entities,
      tags and chart of accounts.
  - name: Request
    description: Request information, documents or connections from a client.
  - name: Client
    description: Manage your firm’s client relationships.
  - name: Team
    description: Invite team members and manage their access to your firm.
  - name: Settings
    description: Read and update your firm settings.
paths:
  /v1/connections/{connection_id}:
    delete:
      tags:
        - Connections
      summary: Disconnect provider
      description: >-
        Disconnect the provider and stop future imports. Cleanup depends on the
        provider. Plaid soft-deletes linked accounts and transactions; journal
        entries remain. A successful local cleanup does not by itself establish
        remote credential revocation.
      operationId: disconnect_provider
      parameters:
        - name: connection_id
          in: path
          required: true
          description: ID of the connection.
          schema:
            type: string
            minLength: 1
          example: con_507f1f77bcf86cd799439011
        - name: If-Match
          in: header
          required: true
          description: >-
            Optional. The `etag` from List connections. A stale value returns
            HTTP 412.
          schema:
            type: string
          example: '"v_example"'
      responses:
        '200':
          description: >-
            The connection is disconnected. The response shows its state, the
            cleanup and any revocation error.
          headers:
            X-Request-Id:
              description: Support correlation ID.
              schema:
                type: string
            ETag:
              description: Version tag of the returned resource.
              schema:
                type: string
              example: '"v_example"'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Connection'
                required:
                  - data
                additionalProperties: false
              example:
                data:
                  id: con_507f1f77bcf86cd799439011
                  organization_id: org_507f1f77bcf86cd799439011
                  provider: quickbooks
                  auth_method: oauth
                  name: Operating bank connection
                  status: disconnected
                  external_account_id: null
                  legal_entity_ids:
                    - le_507f1f77bcf86cd799439011
                  source_ids: []
                  capabilities:
                    - import_transactions
                  created_at: '2026-08-31T12:00:00Z'
                  guidance:
                    allowed_actions: []
                    warnings: []
                    version: v_example
                  revocation_error: null
                  retained_resources:
                    - transactions
                  authorization_attempt:
                    id: auth_507f1f77bcf86cd799439011
                    status: succeeded
                    setup_url: null
                    expires_at: null
                    error: null
                  etag: '"v_example"'
        '400':
          description: >-
            The request is invalid. `error.fields` lists the fields to correct.
            Nothing was changed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: VALIDATION_ERROR
                  message: Invalid path, query or request body.
                  request_id: req_example
        '401':
          description: The API key is missing, invalid or expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: UNAUTHORIZED
                  message: Authentication is required.
                  request_id: req_example
        '403':
          description: >-
            The API key does not have the required scope or is not associated
            with a user, or the action needs a review in the dashboard.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: FORBIDDEN
                  message: Insufficient access to organization
                  request_id: req_example
        '404':
          description: The resource does not exist, or your organization cannot access it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: RESOURCE_NOT_FOUND
                  message: Resource not found
                  request_id: req_example
        '409':
          description: >-
            The current state of the resource or an accounting rule prevents
            this operation. Read the resource again before you choose another
            action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: CONFLICT
                  message: The resource state does not allow this operation.
                  request_id: req_example
        '412':
          description: >-
            `If-Match` is missing, or the resource changed after you read it.
            Read it again, then decide whether to retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: PRECONDITION_FAILED
                  message: The resource changed. Read it again before you update it.
                  request_id: req_example
        '429':
          description: >-
            Too many requests. If the response has a `Retry-After` header, wait
            that many seconds before you retry. Otherwise, read `error.message`.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
                minimum: 1
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: RATE_LIMITED
                  message: Rate limit exceeded. Retry after 30s.
                  request_id: req_example
        '500':
          description: >-
            An unexpected error occurred. A write can still have taken effect;
            check the resource before you retry. Give the `request_id` to
            support.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: INTERNAL_ERROR
                  message: Internal server error
                  request_id: req_example
        '503':
          description: >-
            A service that this operation needs is unavailable. If the response
            has a `Retry-After` header, wait that many seconds. Check for
            earlier accepted work before you send the request again.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
                minimum: 1
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: SERVICE_UNAVAILABLE
                  message: Service unavailable.
                  request_id: req_example
components:
  schemas:
    Connection:
      type: object
      properties:
        id:
          type: string
          description: Connection ID (`con_…`).
          example: con_507f1f77bcf86cd799439011
        organization_id:
          type: string
          description: Organization ID (`org_…`).
          example: org_507f1f77bcf86cd799439011
        provider:
          type: string
          description: Provider identifier.
          example: quickbooks
        auth_method:
          type: string
          description: Setup method.
          enum:
            - oauth
            - api_key
        name:
          type: string
          description: Connection display name.
        status:
          type: string
          description: Connection status.
          enum:
            - pending_setup
            - active
            - expired
            - disconnecting
            - disconnected
            - failed
        external_account_id:
          type:
            - string
            - 'null'
          description: Account ID at the provider.
        legal_entity_ids:
          type: array
          items:
            type: string
            description: Legal entity ID (`le_…`).
            example: le_507f1f77bcf86cd799439011
          description: Legal entities of the connection (`le_…`).
        source_ids:
          type: array
          items:
            type: string
            description: Source ID (`src_…`).
            example: src_507f1f77bcf86cd799439011
          description: Sources created from the connection.
        capabilities:
          type: array
          items:
            type: string
            description: Supported action.
          description: Actions that the connection supports.
        authorization_attempt:
          type: object
          properties:
            id:
              type: string
              description: Authorization attempt ID (`auth_…`).
              example: auth_507f1f77bcf86cd799439011
            status:
              type: string
              description: Status of the setup attempt.
              enum:
                - pending
                - succeeded
                - expired
                - failed
            setup_url:
              type:
                - string
                - 'null'
              description: Setup URL for the user. It expires and is not a credential.
            expires_at:
              type:
                - string
                - 'null'
              description: Expiry time (ISO 8601).
            error:
              type:
                - string
                - 'null'
              description: Why the setup failed.
          required:
            - id
            - status
          additionalProperties: false
          description: The latest setup attempt.
        created_at:
          type: string
          description: ISO 8601 UTC timestamp.
          format: date-time
          example: '2026-08-31T12:00:00Z'
        guidance:
          $ref: '#/components/schemas/Guidance'
        revocation_error:
          type:
            - string
            - 'null'
          description: >-
            Why the provider did not revoke access. A disabled connection in
            Entendre does not prove that the provider revoked access.
        retained_resources:
          type: array
          items:
            type: string
            description: Resource types retained after disconnect.
          description: Resource types that stay after a disconnect.
        etag:
          type: string
          readOnly: true
          pattern: ^"[^"\r\n]+"$
          description: >-
            Strong version of this resource. Send this value, including its
            quotes, in If-Match when updating it.
          examples:
            - '"v_example"'
        cleanup:
          type: object
          description: >-
            Present after bank disconnect. Counts rows removed by this call.
            Zero is valid for empty or already-cleaned connections.
          properties:
            accounts_deleted:
              type: integer
              minimum: 0
              description: Bank accounts deleted.
            transactions_deleted:
              type: integer
              minimum: 0
              description: Transactions deleted.
          required:
            - accounts_deleted
            - transactions_deleted
        importable_resources:
          type: array
          items:
            type: string
          description: >-
            General-ledger connections only: the resource types that the
            connection can import.
      required:
        - id
        - organization_id
        - provider
        - auth_method
        - name
        - status
        - external_account_id
        - legal_entity_ids
        - source_ids
        - capabilities
        - created_at
        - guidance
        - etag
      additionalProperties: false
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - request_id
          properties:
            code:
              type: string
              description: Machine-readable error code.
            message:
              type: string
              description: Technical description for developers.
            fields:
              type: object
              additionalProperties:
                type: string
              description: >-
                Present only on VALIDATION_ERROR. Maps failing field paths to
                reason strings.
            details:
              type: object
              additionalProperties: true
              description: >-
                Optional redacted diagnostic details. Request validation uses
                fields or field_errors.
            suggested_action:
              type: string
              description: A suggested next step.
            documentation_url:
              type: string
              format: uri
              description: Link to documentation about this error.
            request_id:
              type: string
              description: Unique request ID for support escalation.
          description: Error details.
    Guidance:
      type: object
      properties:
        allowed_actions:
          type: array
          items:
            $ref: '#/components/schemas/ActionHint'
          description: Actions that you can take now.
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/Warning'
          description: Warnings about the resource.
        version:
          type: string
          description: >-
            Version of the resource. Use it only when an operation asks for
            `expected_version`.
      required:
        - allowed_actions
        - warnings
        - version
      additionalProperties: false
    ActionHint:
      type: object
      properties:
        action:
          type: string
          description: Stable operation name.
        available:
          type: boolean
          description: Whether the action is currently available.
        reason:
          type:
            - string
            - 'null'
          description: Why unavailable, or null.
        url:
          type:
            - string
            - 'null'
          description: Authorized relative API or dashboard URL, or null.
      required:
        - action
        - available
        - reason
        - url
      additionalProperties: false
    Warning:
      type: object
      properties:
        code:
          type: string
          description: Stable warning code.
        message:
          type: string
          description: Actionable explanation.
        field:
          type:
            - string
            - 'null'
          description: Affected field, if known.
      required:
        - code
        - message
      additionalProperties: false
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        Your organization API key. Some operations also need a key that is
        associated with a user; their pages say so.

````