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

# Update insurance claims

> Sets the clearinghouse claim number on a claim. TeamCare stores it as `clearinghouse_claim_id`; PMS syncs never overwrite it.

Set this before posting a claim payment: `POST /locations/{location_id}/claim_payments` finds each claim by matching the Stedi `clearingHouseClaimNumber` to this value.

Only `clearinghouse_claim_id` can be changed. Send `null` or an empty string to clear it.

Requires an API key with **RCM enabled**. Keys without it receive `401` with `{"errors": "RCM is not enabled for this API key"}`; contact TeamCare support to enable it.



## OpenAPI

````yaml https://app.teamcaredental.com/openapi-vendors.json patch /locations/{location_id}/insurance_claims/{insurance_claim_id}
openapi: 3.1.0
info:
  title: TeamCare Vendor API
  version: 1.0.0
  description: >-
    > ⚠️ **Deprecation notice:** Support for the v1 Vendor API ends on
    **November 7, 2026** (end of the first week of November). Please migrate to
    **v2**, which moves to `https://api.teamcaredental.com/api/v2/vendors` and
    replaces the per-request `location_id` in the URL with a slot-based model:
    request a location's slot once, then pull all of its data using the
    `X-Vendor-Request-Key` header. See the
    [changelog](https://docs.teamcaredental.com/changelog) for the full
    migration guide.


    Vendor APIs for integrating dental office data. HIPAA-compliant and opt-in.
servers:
  - url: https://app.teamcaredental.com/api/v1/vendors
security:
  - bearerAuth: []
paths:
  /locations/{location_id}/insurance_claims/{insurance_claim_id}:
    patch:
      tags:
        - Insurance Claims
      summary: Update insurance claims
      description: >-
        Sets the clearinghouse claim number on a claim. TeamCare stores it as
        `clearinghouse_claim_id`; PMS syncs never overwrite it.


        Set this before posting a claim payment: `POST
        /locations/{location_id}/claim_payments` finds each claim by matching
        the Stedi `clearingHouseClaimNumber` to this value.


        Only `clearinghouse_claim_id` can be changed. Send `null` or an empty
        string to clear it.


        Requires an API key with **RCM enabled**. Keys without it receive `401`
        with `{"errors": "RCM is not enabled for this API key"}`; contact
        TeamCare support to enable it.
      operationId: locations_resources_insurance_claims_update
      parameters:
        - name: location_id
          in: path
          required: true
          description: The ID of the location for which the claim is updated.
          schema:
            type: string
            example: '58'
        - name: insurance_claim_id
          in: path
          required: true
          description: >-
            The TeamCare ID of the insurance claim, from `GET
            /locations/{location_id}/insurance_claims`.
          schema:
            type: string
            example: '91422'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - insurance_claim
              properties:
                insurance_claim:
                  type: object
                  properties:
                    clearinghouse_claim_id:
                      type:
                        - string
                        - 'null'
                      example: CH-0098431
            example:
              insurance_claim:
                clearinghouse_claim_id: CH-0098431
      responses:
        '200':
          description: The updated claim.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                      type:
                        type: string
                        example: insurance_claim
                      attributes:
                        type: object
                        properties:
                          deleted:
                            type: boolean
                          patient_id:
                            type: number
                          provider_id:
                            type: number
                          insurance_carrier_id:
                            type: number
                          insurance_carrier_name:
                            type:
                              - string
                              - 'null'
                            description: >-
                              Carrier name, joined from the claim's insurance
                              carrier. Null if the claim has no carrier or the
                              carrier has been deleted.
                          claim_type:
                            type: string
                            enum:
                              - preauthorization
                              - claim
                          insurance_type:
                            type: string
                            enum:
                              - primary
                              - secondary
                              - medical
                              - other
                          status:
                            type: string
                            enum:
                              - created
                              - sent
                              - received
                          claim_date:
                            type: string
                            format: date-time
                          total_amount:
                            type: number
                          sent_at:
                            type: string
                            format: date-time
                          estimated_insurance_payment:
                            type: number
                          received_at:
                            type: string
                            format: date-time
                          actual_insurance_payment:
                            type: number
                          service_date:
                            type:
                              - string
                              - 'null'
                            format: date-time
                            description: Date of service of the claim.
                          claim_identifier:
                            type:
                              - string
                              - 'null'
                            description: >-
                              The PMS claim identifier sent on the claim (X12
                              CLM01). For Open Dental this is `ClaimIdentifier`,
                              `PatNum/ClaimNum` by default.
                          clearinghouse_claim_id:
                            type:
                              - string
                              - 'null'
                            description: >-
                              Clearinghouse claim number, set by the vendor with
                              `PATCH
                              /locations/{location_id}/insurance_claims/{insurance_claim_id}`.
                              Never overwritten by PMS syncs. Claim payments are
                              matched to claims by this value.
                          updated_at:
                            type: string
                            format: date-time
              example:
                data:
                  id: '91422'
                  type: insurance_claim
                  attributes:
                    deleted: false
                    patient_id: 48219
                    provider_id: 312
                    insurance_carrier_id: 1044
                    insurance_carrier_name: Delta Dental
                    claim_type: claim
                    insurance_type: primary
                    status: received
                    claim_date: '2026-08-14T00:00:00.000Z'
                    total_amount: 1240
                    sent_at: '2026-08-15T00:00:00.000Z'
                    estimated_insurance_payment: 812
                    received_at: '2026-08-29T00:00:00.000Z'
                    actual_insurance_payment: 790.5
                    service_date: '2026-08-14T00:00:00.000Z'
                    claim_identifier: 48219/91422
                    clearinghouse_claim_id: CH-0098431
                    updated_at: '2026-08-29T10:12:44.000Z'
        '401':
          description: >-
            Missing, invalid or expired token, or the API key does not have RCM
            enabled.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: string
              examples:
                not_authorized:
                  value:
                    errors: not authorized
                rcm_not_enabled:
                  value:
                    errors: RCM is not enabled for this API key
        '403':
          description: The credential may not access this resource.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: string
              example:
                errors: access Denied
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: string
              example:
                errors: resource not found
        '422':
          description: The request could not be processed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: string
              example:
                errors: ...
        '429':
          description: >-
            Concurrency limit exceeded. The request was not executed; retry is
            safe.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: string
                  sync_type:
                    type: string
                    enum:
                      - initial
                      - incremental
                  max_concurrent_locations:
                    type: integer
                  active_location_ids:
                    type: array
                    items:
                      type: integer
                  retry_after_seconds:
                    type: integer
              example:
                errors: >-
                  Too many locations syncing concurrently. At most 5 locations
                  may have initial sync requests in flight at a time.
                sync_type: initial
                max_concurrent_locations: 5
                active_location_ids:
                  - 101
                  - 102
                  - 103
                  - 104
                  - 105
                retry_after_seconds: 1
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT returned by POST /auth/token. Valid for six hours.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.