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

# Terminate a Card

> Terminates an active or frozen card. The card immediately moves to `status: cancelling` (no more top-ups) and a
`card.termination_pending` webhook is sent.

Once the card provider has closed the card, its remaining balance, minus the card termination fee of your plan
(see [Plans](/getting-started/plans)), is returned to your `cards_visa` or `cards_mastercard` balance and you
receive `card.terminated` with the amount refunded. Termination cannot be undone.




## OpenAPI

````yaml POST /cards/{code}/terminate
openapi: 3.1.0
info:
  title: KemyCard API
  version: '1.0'
  description: >
    KemyCard API allows you to issue virtual and physical cards, manage KYC/POA
    verification,

    create crypto wallets, virtual bank accounts, purchase gift cards and send
    payouts to bank accounts (SEPA Instant

    in EUR, ACH in USD to the United States).


    Access depends on your plan (see [Plans and
    Pricing](/getting-started/plans)). The free Découverte plan gives

    access to virtual cards with the KYC and POA endpoints and to payouts (SEPA
    and ACH), within monthly limits (25 cards

    created and 5,000 USD loaded on cards per calendar month, 5,000 USD of
    payouts per calendar month), 30 requests

    per minute per API key, 2 allowed IP addresses and 1 active webhook
    endpoint. Starter, Business and Premium give access to every product with no
    monthly limit,

    100 requests per minute per API key, 10 allowed IP addresses and 10 active
    webhook endpoints.


    Plan errors: `402 PLAN_UPGRADE_REQUIRED` (product not included in your
    plan), `403 PLAN_LIMIT_REACHED`

    (limit of your plan reached). While one of your ops balances is negative,
    every request other than `GET`

    returns `403 ACCOUNT_SUSPENDED_NEGATIVE_BALANCE`.
  contact:
    name: KemyCard API Support
    email: hi@kemycard.com
servers:
  - url: https://api.kemycard.com/v1
    description: Development (tests internes)
  - url: https://api.kemycard.com/v1
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Customers
    description: Manage your customers
  - name: Card Products
    description: Browse the card product catalog
  - name: Cards
    description: Issue and manage cards
  - name: KYC
    description: Identity verification
  - name: POA
    description: Proof of address verification
  - name: Wallets
    description: Crypto wallets
  - name: Virtual Accounts
    description: Virtual bank accounts
  - name: Gift Cards
    description: Gift card catalog and purchases
  - name: Payouts
    description: >
      Payouts to bank accounts: SEPA Instant in EUR (paid from your Payout SEPA
      balance) and ACH in USD to bank

      accounts in the United States (paid from your Ops Others balance)
  - name: Balance
    description: Operational balances and transaction history
  - name: Webhooks
    description: Webhook endpoints and delivery management
paths:
  /cards/{code}/terminate:
    post:
      tags:
        - Cards
      summary: Terminate a card
      description: >
        Terminates an active or frozen card. The card immediately moves to
        `status: cancelling` (no more top-ups) and a

        `card.termination_pending` webhook is sent.


        Once the card provider has closed the card, its remaining balance, minus
        the card termination fee of your plan

        (see [Plans](/getting-started/plans)), is returned to your `cards_visa`
        or `cards_mastercard` balance and you

        receive `card.terminated` with the amount refunded. Termination cannot
        be undone.
      operationId: terminateCard
      parameters:
        - name: code
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: >-
            Code of the card: the `code` returned when the card is created
            (`POST /cards`).
      responses:
        '202':
          description: Termination requested; the card is now `cancelling`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardSuccessResponse'
        '403':
          $ref: '#/components/responses/AccountSuspended'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationError'
components:
  schemas:
    CardSuccessResponse:
      type: object
      properties:
        success:
          type: boolean
          example: true
        data:
          $ref: '#/components/schemas/Card'
        meta:
          $ref: '#/components/schemas/Meta'
    Card:
      type: object
      properties:
        code:
          type: string
          format: uuid
        customer_code:
          type: string
          format: uuid
        product_code:
          type: string
          format: uuid
        brand:
          type: string
          enum:
            - MASTERCARD
            - VISA
        name_on_card:
          type: string
          description: >
            Name carried by the card. Set by KemyCard from the customer's
            identity (the identity verified

            by KYC when available, the declared one otherwise), shortened to 20
            characters when needed.
          example: John Doe
        status:
          type: string
          enum:
            - pending
            - active
            - frozen
            - cancelled
            - failed
          description: >
            `pending` — being issued. `active` — usable. `frozen` — payments
            declined until unfrozen.

            `cancelled` — terminated, the remaining balance was returned to your
            ops balance.

            `failed` — could not be issued, the amount was refunded.
        balance:
          type: number
        currency:
          type: string
        last_four:
          type: string
          nullable: true
          description: Null until the card is issued
        expiry:
          type: string
          nullable: true
          description: Expiry date, MM/YY. Null until the card is issued
          example: 12/29
        fees:
          type: object
          description: >-
            What was debited from your `cards_visa` or `cards_mastercard`
            balance when the card was created
          properties:
            card_fee:
              type: number
              description: >-
                The `creation_fee` of your plan. For the 493 ATM card, it also
                includes the first year of `annual_fee`
              example: 5
            service_fee:
              type: number
              description: The `reload_fee` of your plan applied to the initial load
              example: 3.5
            total_charged:
              type: number
              description: Initial load + card_fee + service_fee
              example: 108.5
        created_at:
          type: string
          format: date-time
    Meta:
      type: object
      properties:
        request_id:
          type: string
          example: a4f8e2c1b3d97056
        mode:
          type: string
          enum:
            - test
            - live
          example: test
        timestamp:
          type: string
          format: date-time
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            code:
              type: string
              description: >
                Error code, for example `AUTHENTICATION_REQUIRED`,
                `AUTHENTICATION_FAILED`, `ACCOUNT_RESTRICTED`,

                `IP_NOT_ALLOWED`, `PLAN_UPGRADE_REQUIRED`, `PLAN_LIMIT_REACHED`,
                `ACCOUNT_SUSPENDED_NEGATIVE_BALANCE`,

                `INSUFFICIENT_BALANCE`, `OPERATION_FAILED`, `FORBIDDEN`,
                `RESOURCE_NOT_FOUND`, `VALIDATION_ERROR`,

                `RATE_LIMIT_EXCEEDED`, `INTERNAL_ERROR`, `wrong_api_host`. See
                [Error Handling](/guides/error-handling).
              example: VALIDATION_ERROR
            message:
              type: string
              example: Missing required fields.
            details:
              type: object
              nullable: true
        meta:
          $ref: '#/components/schemas/Meta'
  responses:
    AccountSuspended:
      description: >-
        One of your ops balances is negative; every request other than `GET` is
        refused until it is topped up
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error:
              code: ACCOUNT_SUSPENDED_NEGATIVE_BALANCE
              message: >-
                Your account is suspended because one of your ops balances is
                negative. Top up the negative balance to restore access.
                Read-only requests (GET) remain available.
              details:
                negative_balance_since: '2026-10-15T08:00:00+00:00'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error:
              code: RESOURCE_NOT_FOUND
              message: Resource not found.
              details: null
    ValidationError:
      description: Validation error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: API key (sk_test_... or sk_live_...)

````

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