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

# Delete multiple transactions independently.

> Exclusão em lote é **parcial**: cada item é processado independentemente.
A resposta é sempre 200 quando o envelope é válido; o resultado é reportado por item em `results`.
Cada item é soft-deletado (`deleted_at`). Item pago exige `reason`; sem ele o item falha com `reason_required` e permanece íntegro.
Compra de cartão de crédito com parcela paga exige `confirm = true`; sem ele o item falha com 409 (como na rota unitária) e permanece íntegro.
Pagamentos ativos em lançamentos deletados são estornados na conta do próprio pagamento, com data de hoje e audit log.
Item de outra empresa falha com 404 naquele item sem expor dados.
Item não tentado por prazo do lote esgotado ou cancelamento falha com `not_processed` (503).
Envelope inválido devolve 422 `ErrorResponseDTO` sem processar nada: `invalid_envelope` (ids vazio ou acima de 100), `invalid_id` (UUID inválido) ou `duplicate_ids` (ids repetidos). Limite: 1..100 ids.



## OpenAPI

````yaml /openapi/extat-openapi.json post /companies/transactions/batch-delete
openapi: 3.0.0
info:
  contact:
    email: contato@cernedigital.io
    name: Cerne Digital
    url: https://cernedigital.io
  description: >-
    API REST da Extat Plataforma usada pelo painel web. Artefato OpenAPI 3.0
    para a documentação Mintlify (tags em PT-BR).
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  termsOfService: http://swagger.io/terms/
  title: Extat Plataforma - API REST
  version: '1.0'
servers:
  - url: https://golang-api-vgnqx.ondigitalocean.app/v1
security: []
tags:
  - name: Autenticação
  - name: Bancos
  - name: Contas Bancárias
  - name: Plano e Assinaturas
  - name: Empresa
  - name: Centros de Custo
  - name: Painel
  - name: Demonstrativos
  - name: Saúde
  - name: Convites
  - name: Membros
  - name: Onboarding
  - name: Fornecedores
  - name: Usuário
  - name: DangerZone
paths:
  /companies/transactions/batch-delete:
    post:
      tags:
        - Empresa
      summary: Delete multiple transactions independently.
      description: >-
        Exclusão em lote é **parcial**: cada item é processado
        independentemente.

        A resposta é sempre 200 quando o envelope é válido; o resultado é
        reportado por item em `results`.

        Cada item é soft-deletado (`deleted_at`). Item pago exige `reason`; sem
        ele o item falha com `reason_required` e permanece íntegro.

        Compra de cartão de crédito com parcela paga exige `confirm = true`; sem
        ele o item falha com 409 (como na rota unitária) e permanece íntegro.

        Pagamentos ativos em lançamentos deletados são estornados na conta do
        próprio pagamento, com data de hoje e audit log.

        Item de outra empresa falha com 404 naquele item sem expor dados.

        Item não tentado por prazo do lote esgotado ou cancelamento falha com
        `not_processed` (503).

        Envelope inválido devolve 422 `ErrorResponseDTO` sem processar nada:
        `invalid_envelope` (ids vazio ou acima de 100), `invalid_id` (UUID
        inválido) ou `duplicate_ids` (ids repetidos). Limite: 1..100 ids.
      parameters:
        - description: Company ID (UUID)
          in: header
          name: x-company-id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/transaction.BatchDeleteRequestDTO'
        description: Batch delete request
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/transaction.BatchResponseDTO'
          description: >-
            Processamento completado. Cada item em `results` traz seu status.
            `summary` mostra total, sucessos e falhas.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handler.ErrorResponseDTO'
          description: JSON malformado, `x-company-id` ausente ou inválido.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handler.ErrorResponseDTO'
          description: JWT ausente ou inválido.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handler.ErrorResponseDTO'
          description: Usuário não é membro ativo da empresa do header.
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handler.ErrorResponseDTO'
          description: >-
            Envelope inválido: `invalid_envelope`, `invalid_id` ou
            `duplicate_ids`. Nada é processado.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/handler.ErrorResponseDTO'
          description: Erro interno do servidor.
      security:
        - ApiKeyAuth: []
components:
  schemas:
    transaction.BatchDeleteRequestDTO:
      properties:
        confirm:
          description: >-
            Confirmação de cancelamento de compra de cartão (opcional).

            Obrigatório quando a exclusão afeta uma compra no cartão com parcela
            paga.
          type: boolean
        ids:
          description: >-
            Lista de IDs a excluir (UUIDs). Limite: 1..100, sem duplicatas.

            Ids de outra empresa falham com 404 naquele item.

            swagger:example ["550e8400-e29b-41d4-a716-446655440000",
            "550e8400-e29b-41d4-a716-446655440001"]
          items:
            type: string
          maxItems: 100
          minItems: 1
          type: array
        reason:
          description: |-
            Motivo da exclusão (opcional).
            Obrigatório quando a exclusão afeta uma transação paga.
          type: string
      required:
        - ids
      type: object
    transaction.BatchResponseDTO:
      properties:
        replayed:
          description: >-
            Indica se a resposta é um replay de uma request anterior
            (idempotência).

            True: mesma chave de idempotência foi processada antes, nenhum
            efeito novo.

            False: request foi processada normalmente.

            Omitido em PATCH e DELETE.
          type: boolean
        results:
          description: Resultados por item, na ordem da request original.
          items:
            $ref: '#/components/schemas/transaction.BatchResultDTO'
          type: array
        series_id:
          description: >-
            Identificador da série criada (somente em POST /batch com status
            201).

            Omitido em caso de erro no nível da request.
          type: string
        summary:
          allOf:
            - $ref: '#/components/schemas/transaction.BatchSummaryDTO'
          description: Resumo agregado dos resultados.
      type: object
    handler.ErrorResponseDTO:
      properties:
        error:
          type: string
        message:
          type: string
      type: object
    transaction.BatchResultDTO:
      properties:
        code:
          description: >-
            Código do erro (ex.: "invalid_request", "not_found",
            "reason_required").

            Omitido quando status é "ok".
          type: string
        http_status:
          description: >-
            Status HTTP que seria retornado isoladamente (ex.: 400, 404, 422,
            409).

            Omitido quando status é "ok".
          type: integer
        id:
          description: >-
            Identificador da transação criada, alterada ou excluída (ou a
            solicitada).

            Omitido em caso de erro de validação antes da criação.
          type: string
        index:
          description: Posição do item na request original (base zero).
          type: integer
        message:
          description: |-
            Mensagem de erro em português.
            Omitida quando status é "ok".
          type: string
        status:
          description: |-
            Status do processamento: "ok" ou "error".
            swagger:enum "ok","error"
          type: string
      type: object
    transaction.BatchSummaryDTO:
      properties:
        failed:
          description: Itens que falharam.
          type: integer
        succeeded:
          description: Itens processados com sucesso.
          type: integer
        total:
          description: Total de itens processados.
          type: integer
      type: object
  securitySchemes:
    ApiKeyAuth:
      description: >-
        Token da sessão no cabeçalho Authorization, no formato Bearer (mesmo
        esquema ApiKeyAuth do contrato).
      in: header
      name: Authorization
      type: apiKey

````

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