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

# Arquivar item do plano

> Retira o item do catálogo. Quem já assinou continua sendo cobrado por ele.

`DELETE /plans/:id/items/:itemId`

Faz parte do recurso [Planos e Preços](/pt-BR/subscriptions/plans) — o item, o preço versionado e
os status estão lá.

Tira o item do plano. Ele deixa de aparecer em [`GET /plans/{id}`](/pt-BR/subscriptions/plans/get) e
não entra em nenhuma assinatura nova. A resposta é o item, já com `deletedAt` preenchido.

<Warning>
  **Isto não interrompe cobrança nenhuma.** As assinaturas que já incluíam o item continuam sendo
  faturadas por ele, no preço que contrataram — a rota mexe no catálogo, não nos contratos. Não há
  aviso nem bloqueio se existirem assinaturas ativas cobrando o item: para parar de cobrar alguém, o
  caminho é a própria assinatura.
</Warning>

<Note>
  **O item `default` não pode ser arquivado.** É o item que sustenta o plano; sem ele não sobraria o
  que cobrar. A rota responde `409`.
</Note>

<Note>
  **Plano arquivado não aceita a operação.** Responde `409` — no plano arquivado nada mais muda,
  nem os itens.
</Note>

<Note>
  **A `key` volta a ficar livre.** Arquivar é remoção lógica, e um item novo pode reusar a mesma
  `key` depois. Ver [Adicionar item](/pt-BR/subscriptions/plans/items).
</Note>

## Exemplo

```bash theme={null}
curl -X DELETE https://api.sandbox.z2pay.com/v1/plans/plan_lhutpqeq2ml3stia4vn90xars/items/pli_x0hn9c2eqp7wl4tzka8m3vgdi \
  -H "x-api-key: SUA_CHAVE_DE_SANDBOX"
```

```json Resposta 200 theme={null}
{
  "id": "pli_x0hn9c2eqp7wl4tzka8m3vgdi",
  "planId": "plan_lhutpqeq2ml3stia4vn90xars",
  "key": "suporte-premium",
  "name": "Suporte premium 24/7",
  "kind": "recurring",
  "quantityDefault": 1,
  "displayOrder": 1,
  "description": null,
  "metadata": {},
  "createdAt": "2026-08-10T15:10:00.000Z",
  "updatedAt": "2026-08-10T15:48:12.000Z"
}
```


## OpenAPI

````yaml openapi/billing.json DELETE /plans/{id}/items/{itemId}
openapi: 3.0.3
info:
  title: Z2Pay Billing API
  version: 1.0.0
  description: Cobrança recorrente da Z2Pay — planos, assinaturas e faturas
servers:
  - url: https://api.sandbox.z2pay.com/v1
    description: Sandbox
  - url: https://api.z2pay.com/v1
    description: Produção
security: []
tags:
  - name: Invoices
    description: Faturas emitidas pelas assinaturas
  - name: Plans
    description: Planos de cobrança e versões de preço
  - name: Subscriptions
    description: Assinaturas recorrentes
paths:
  /plans/{id}/items/{itemId}:
    delete:
      tags:
        - Plans
      summary: Arquivar item do plano
      description: >-
        Remove o item das próximas assinaturas criadas a partir do plano. As
        assinaturas em curso não são afetadas — elas já instanciaram o item. O
        item `default` não pode ser arquivado.
      operationId: PlanController_archiveItem
      parameters:
        - name: itemId
          in: path
          required: true
          description: ID do item do plano
          schema:
            type: string
        - name: id
          in: path
          required: true
          description: ID do plano
          schema:
            type: string
      responses:
        '200':
          description: Item arquivado
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Identificador único do registro.
                  planId:
                    type: string
                    description: ID do plano ao qual o registro pertence.
                  key:
                    type: string
                    description: >-
                      Chave única e legível (slug) do componente dentro do
                      plano.
                  name:
                    type: string
                    description: Nome de exibição do plano ou do componente.
                  kind:
                    type: string
                    enum:
                      - recurring
                      - activation
                    description: >-
                      Natureza da cobrança: `recurring` cobra a cada ciclo;
                      `activation` cobra uma única vez, na fatura de adesão.
                  quantityDefault:
                    type: integer
                    description: >-
                      Quantidade padrão do componente ao instanciar a
                      assinatura.
                  displayOrder:
                    type: integer
                    description: Ordem de exibição do componente na listagem do plano.
                  description:
                    type: string
                    nullable: true
                    description: Descrição do item (item do plano ou linha da fatura).
                  metadata:
                    type: object
                    description: >-
                      Metadados livres (pares chave-valor) para uso do
                      integrador; não afeta o processamento.
                  createdAt:
                    type: string
                    format: date-time
                    description: Data e hora de criação do registro (ISO 8601).
                  updatedAt:
                    type: string
                    format: date-time
                    description: Data e hora da última atualização do registro (ISO 8601).
                  deletedAt:
                    type: string
                    format: date-time
                    nullable: true
                    description: Data e hora de exclusão (soft delete); nulo se ativo.
              example:
                id: pli_lggs2vulsryis0t35qbqfpjyg
                planId: plan_lhutpqeq2ml3stia4vn90xars
                key: welcome-kit
                name: Welcome Kit
                kind: recurring
                quantityDefault: 1
                displayOrder: 1
                description: One-time onboarding kit
                metadata: {}
                createdAt: '2025-06-29T14:30:00.000Z'
                updatedAt: '2025-06-29T15:10:00.000Z'
                deletedAt: '2025-06-29T15:10:00.000Z'
        '401':
          description: Chave de API ausente, malformada ou inválida
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: >-
                          Identificador estável do erro. É por ele que você deve
                          ramificar, não pela mensagem.
                      message:
                        type: string
                        description: >-
                          Descrição legível. Pode mudar sem aviso e não deve ser
                          usada em condicional.
              example:
                error:
                  code: UNAUTHORIZED
                  message: Invalid API key
        '404':
          description: Plano ou item não encontrado
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: >-
                          Identificador estável do erro. É por ele que você deve
                          ramificar, não pela mensagem.
                      message:
                        type: string
                        description: >-
                          Descrição legível. Pode mudar sem aviso e não deve ser
                          usada em condicional.
              example:
                error:
                  code: NOT_FOUND
                  message: Item not found
        '409':
          description: O item default não pode ser arquivado
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        description: >-
                          Identificador estável do erro. É por ele que você deve
                          ramificar, não pela mensagem.
                      message:
                        type: string
                        description: >-
                          Descrição legível. Pode mudar sem aviso e não deve ser
                          usada em condicional.
              example:
                error:
                  code: CONFLICT
                  message: No refundable payment found
        '422':
          description: >-
            Idempotency-Key já usada com um corpo diferente. Use uma chave nova
            para uma operação diferente
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: >-
                      Mensagem do conflito de idempotência. Aqui `error` é
                      texto, não objeto — ramifique pelo status HTTP.
              example:
                error: Idempotency key already used with a different request body
      security:
        - apiKey: []
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: API Key da Credential (gerada no Backoffice)

````