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

# Remove a customer

> Ends your integration's access to the user's chargers in their own Plugchoice account (they keep them),
releases the chargers at sites your team owns for them (as `deleteCharger` does), deletes a site that was
theirs alone, and forgets the `external_user_id`. The same answer for a customer that's gone already, so
retrying is safe.




## OpenAPI

````yaml api-reference/sdk/sdk-v1.openapi.yaml DELETE /customers/{external_user_id}
openapi: 3.1.0
info:
  title: Plugchoice SDK API
  version: '2026-10-07'
  summary: Connect EV chargers to Plugchoice from your own app.
  description: >
    The API of the Plugchoice SDK. Your server creates client sessions, which
    say who Link (the SDK's

    onboarding feature) acts for and what it may reach; it reads the link
    sessions Link opened with them, and

    the chargers and what each can do. The `/session` endpoints are used only by
    Link's hosted flow at

    `connect.plugchoice.com`.


    Errors are RFC 9457 problem details; times are RFC 3339 UTC; ids are UUIDs.


    **Versions** are dates. Pin one with the `Plugchoice-Version` request
    header; without it you get the newest.

    Every response says which version answered in the same header. An unknown
    version is

    `400 unknown-version`. The only version is `2026-10-07`.
  contact:
    name: Plugchoice
    url: https://developer.plugchoice.com/sdk
    email: support@plugchoice.com
servers:
  - url: https://api.plugchoice.com/sdk/v1
    description: Production
security: []
tags:
  - name: Client sessions
    description: >-
      Say who Link acts for, and what it may reach, for an hour. Integrations
      and Plugchoice users.
  - name: Link sessions
    description: >-
      Read the outcome of a link session, one time through Link. Integrations
      and Plugchoice users.
  - name: Chargers
    description: >-
      Read chargers and what they can do (`capabilities`). Integrations and
      Plugchoice users.
  - name: Transactions
    description: >-
      Read the charging sessions of your chargers, and of your users' chargers
      they let you read. Integrations only.
  - name: Session
    description: Link's hosted flow only. Opens and runs one link session.
paths:
  /customers/{external_user_id}:
    delete:
      tags:
        - Chargers
      summary: Remove a customer
      description: >
        Ends your integration's access to the user's chargers in their own
        Plugchoice account (they keep them),

        releases the chargers at sites your team owns for them (as
        `deleteCharger` does), deletes a site that was

        theirs alone, and forgets the `external_user_id`. The same answer for a
        customer that's gone already, so

        retrying is safe.
      operationId: deleteCustomer
      parameters:
        - $ref: '#/components/parameters/PlugchoiceVersion'
        - name: external_user_id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/ExternalUserId'
      responses:
        '204':
          description: Removed
        '401':
          $ref: '#/components/responses/Unauthenticated'
      security:
        - integrationToken: []
components:
  parameters:
    PlugchoiceVersion:
      name: Plugchoice-Version
      in: header
      required: false
      description: >-
        The API version to answer with (`400 unknown-version` for one this API
        does not know). Every response carries the version that answered in the
        same header.
      schema:
        type: string
        enum:
          - '2026-10-07'
  schemas:
    ExternalUserId:
      type: string
      description: Your own id for one of your users.
      minLength: 1
      maxLength: 200
      pattern: ^[A-Za-z0-9._:@-]+$
    Problem:
      type: object
      description: RFC 9457 problem details.
      required:
        - type
        - title
        - status
      properties:
        type:
          type: string
          format: uri
          description: >-
            Stable identifier,
            `https://developer.plugchoice.com/sdk/errors/{code}`.
          examples:
            - https://developer.plugchoice.com/sdk/errors/identity-taken
        title:
          type: string
          examples:
            - Identity already registered
        status:
          type: integer
        detail:
          type: string
        code:
          $ref: '#/components/schemas/ErrorCode'
        errors:
          type: object
          description: Only for `validation-failed`. Field path → messages.
          additionalProperties:
            type: array
            items:
              type: string
        site:
          $ref: '#/components/schemas/SiteSummary'
          description: Only for `charger-at-other-site`.
        claimable:
          type: boolean
          description: >-
            Only for `identity-taken`. Whether `POST /session/claims` can be
            tried.
        sign_in_to_share:
          type: boolean
          description: >
            Only for `identity-taken`, in a link session for your user's own
            account before they signed in. The

            charger may already be in their account: once signed in, they share
            it (`POST /session/chargers/{charger_id}/share`).
        vendor_charger:
          type: object
          description: >-
            Only for problems connecting a Zaptec installation's chargers in the
            hosted flow. Which charger of the installation it is about.
          required:
            - id
            - serial
          properties:
            id:
              type: string
              description: The brand's id (`ZaptecCharger.id`).
            serial:
              type: string
    ErrorCode:
      type: string
      description: >-
        The last path segment of `type`, for switch statements. New codes may be
        added.
      enum:
        - unauthenticated
        - forbidden
        - scope-missing
        - sdk-access-required
        - profile-incomplete
        - sign-in-not-needed
        - sign-in-required
        - site-not-saved
        - sign-in-code-required
        - code-invalid
        - two-factor-not-needed
        - two-factor-invalid
        - two-factor-locked
        - not-found
        - validation-failed
        - rate-limited
        - unknown-version
        - unsupported-device-type
        - scope-required
        - client-session-expired
        - site-required
        - start-code-invalid
        - session-ended
        - consent-required
        - consent-not-needed
        - location-required
        - location-already-set
        - method-not-allowed
        - identity-taken
        - identity-busy
        - identity-not-taken
        - charger-at-other-site
        - handover-not-offered
        - control-held
        - pincode-invalid
        - claim-exists
        - claim-closed
        - charger-offline
        - plug-in-not-available
        - nothing-to-complete
        - vendor-sign-in-failed
        - vendor-sign-in-required
        - vendor-not-permitted
        - vendor-charger-offline
        - vendor-rate-limited
        - vendor-unavailable
        - vendor-error
        - bad-request
        - server-error
    SiteSummary:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
  responses:
    Unauthenticated:
      description: Missing, invalid or expired token (`unauthenticated`).
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
  securitySchemes:
    integrationToken:
      type: oauth2
      description: >
        Your integration's client credentials (test or live). The token acts as
        your integration's team and

        lasts 1 hour; request a new one when it expires. Send `client_id`,
        `client_secret` and

        `grant_type=client_credentials`. No OAuth scopes are needed.
      flows:
        clientCredentials:
          tokenUrl: https://app.plugchoice.com/oauth/token
          scopes: {}

````

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