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

# Expirar sessão de checkout

> Encerra uma sessão de checkout para que o link deixe de aceitar pagamento.
A resposta é a própria sessão, já com `status` em `expired`.

O prazo em `expires_at` não muda. Ele é o que o comprador viu, e uma sessão
encerrada antes da hora carrega `status` `expired` com um `expires_at`
ainda no futuro.

Uma sessão cujo prazo já venceu também pode ser encerrada por aqui, e é
isso que grava o evento `checkout_session.expired` quando a varredura
automática ainda não passou pela sessão.

Uma sessão paga não pode ser encerrada: o dinheiro já se moveu e a sessão
permanece `complete`. Uma sessão já encerrada é recusada, porque o evento
correspondente já saiu.

**Limite de taxa:** 10 requisições por minuto por chave de API.




## OpenAPI

````yaml /api-reference/openapi.yml post /api/v1/checkout/sessions/{id}/expire
openapi: 3.1.0
info:
  title: API - Simplo
  version: 1.0.0
  description: API para cobrança e assinaturas para contas Simplo
  contact:
    name: Simplo
    url: https://besimplo.com
    email: team@besimplo.com
servers:
  - url: https://besimplo.com
    description: Produção
security:
  - apiKeyAuth: []
tags:
  - name: Clientes
    description: Clientes são as pessoas que pagarão pelos produtos da sua conta
  - name: Produtos
    description: Produtos representam os bens ou serviços que você vende
  - name: Preços
    description: Preços definem quanto cobrar e a frequência de cobrança de um Produto
  - name: Assinaturas
    description: Assinaturas conectam clientes aos seus planos para cobrança recorrente
  - name: Checkout
    description: >-
      Sessões de checkout permitem que clientes completem pagamentos e
      assinaturas através de uma interface web
  - name: Faturas
    description: Faturas representam cobranças geradas para clientes
  - name: Tentativas de cobrança
    description: >-
      Cada tentativa de receber o valor de uma fatura, com vencimento próprio e
      limite de tentativas
  - name: Eventos
    description: >
      O registro do que aconteceu na conta, com o corpo congelado no instante do
      fato. O evento existe tenha ele sido entregue ou não: a entrega por
      webhook é um consumidor dele. Consulte, filtre pelo resultado da entrega e
      reenvie o que não chegou.
  - name: Webhooks
    description: >
      Os eventos do catálogo, enviados por HTTP POST para os endpoints

      cadastrados na sua conta. Cada conta registra até 5 endpoints, cada um com

      a sua URL, o seu filtro de eventos e o seu segredo.


      O corpo é o próprio evento: `"object": "event"` no topo, e `data.object`

      com o recurso a que ele se refere, no mesmo formato em que

      `GET /api/v1/<recurso>/{id}` o devolve.


      Toda entrega vai assinada, no padrão

      [Standard
      Webhooks](https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md).

      São três cabeçalhos — `webhook-id`, `webhook-timestamp` e

      `webhook-signature` — e a chave é o segredo `whsec_` daquele endpoint,

      visível no painel em **Configurações → Webhooks**.


      Responda 2xx rápido e processe depois. Uma entrega que falha é retentada

      até 10 vezes ao longo de 93 horas, então o mesmo evento pode chegar duas

      vezes: use o `evt_` do cabeçalho `webhook-id` como chave de idempotência.


      O que não chegou continua consultável por 30 dias em `GET /api/v1/events`,

      e `POST /api/v1/events/{id}/resend` manda de novo.
paths:
  /api/v1/checkout/sessions/{id}/expire:
    post:
      tags:
        - Checkout
      summary: Expirar sessão de checkout
      description: >
        Encerra uma sessão de checkout para que o link deixe de aceitar
        pagamento.

        A resposta é a própria sessão, já com `status` em `expired`.


        O prazo em `expires_at` não muda. Ele é o que o comprador viu, e uma
        sessão

        encerrada antes da hora carrega `status` `expired` com um `expires_at`

        ainda no futuro.


        Uma sessão cujo prazo já venceu também pode ser encerrada por aqui, e é

        isso que grava o evento `checkout_session.expired` quando a varredura

        automática ainda não passou pela sessão.


        Uma sessão paga não pode ser encerrada: o dinheiro já se moveu e a
        sessão

        permanece `complete`. Uma sessão já encerrada é recusada, porque o
        evento

        correspondente já saiu.


        **Limite de taxa:** 10 requisições por minuto por chave de API.
      operationId: expireCheckoutSession
      parameters:
        - name: id
          in: path
          description: ID da sessão de checkout, no formato TypeID com prefixo `cs_`.
          required: true
          schema:
            type: string
            pattern: ^cs_[0-9a-z]{26}$
            example: cs_01h455vb4pex5vsknk084sn02c
      responses:
        '200':
          description: Sessão expirada
          content:
            application/json:
              schema:
                unevaluatedProperties: false
                allOf:
                  - type: object
                    required:
                      - id
                      - object
                      - amount
                      - created
                      - currency
                      - customer
                      - expires_at
                      - invoice
                      - line_items
                      - live_mode
                      - mode
                      - status
                      - success_url
                      - url
                    properties:
                      id:
                        type: string
                        pattern: ^cs_[0-9a-z]{26}$
                        readOnly: true
                        description: >-
                          ID único da sessão de checkout, no formato TypeID com
                          prefixo `cs_`.
                        example: cs_01h455vb4pex5vsknk084sn02c
                      object:
                        type: string
                        description: Tipo do objeto. Sempre 'checkout_session'.
                        enum:
                          - checkout_session
                        example: checkout_session
                      amount:
                        type:
                          - integer
                          - 'null'
                        nullable: true
                        description: >
                          Valor total em centavos. `null` quando o cliente ainda
                          não foi informado e

                          a fatura não foi gerada.
                        example: 9990
                      created:
                        type: integer
                        format: int64
                        readOnly: true
                        description: Timestamp Unix da criação da sessão.
                        example: 1704672000
                      currency:
                        type: string
                        description: >-
                          Código da moeda (ISO 4217). Sempre 'brl' (Real
                          brasileiro).
                        enum:
                          - brl
                        example: brl
                      customer:
                        type:
                          - string
                          - 'null'
                        nullable: true
                        pattern: ^cus_[0-9a-z]{26}$
                        description: >
                          ID do cliente vinculado à sessão, no formato TypeID
                          com prefixo `cus_`.

                          `null` quando `customer_id`/`customer` não foram
                          enviados na criação — o

                          comprador preenche os dados na página de checkout e o
                          cliente é criado

                          nesse momento.
                        example: cus_01h455vb4pex5vsknk084sn02p
                      discounts:
                        type: object
                        description: >-
                          Descontos aplicados à sessão. Ausente quando a sessão
                          não tem desconto.
                        unevaluatedProperties: false
                        required:
                          - object
                          - data
                        properties:
                          object:
                            type: string
                            enum:
                              - list
                            example: list
                          data:
                            type: array
                            items:
                              type: object
                              unevaluatedProperties: false
                              required:
                                - type
                              properties:
                                type:
                                  type: string
                                  description: >-
                                    Tipo de desconto aplicado (`percentage` ou
                                    `fixed`).
                                  enum:
                                    - percentage
                                    - fixed
                                  example: percentage
                                percentage:
                                  type:
                                    - integer
                                    - 'null'
                                  nullable: true
                                  description: >-
                                    Percentual do desconto. Presente apenas
                                    quando `type` é `percentage`.
                                  example: 20
                                amount_cents:
                                  type:
                                    - integer
                                    - 'null'
                                  nullable: true
                                  description: >-
                                    Valor fixo do desconto em centavos. Presente
                                    apenas quando `type` é `fixed`.
                                  example: 5000
                                cycles:
                                  type:
                                    - integer
                                    - 'null'
                                  nullable: true
                                  description: >-
                                    Número de ciclos de cobrança em que o
                                    desconto será aplicado. `0` significa
                                    ilimitado. Sempre `0` no modo `payment`.
                                  example: 3
                                description:
                                  type:
                                    - string
                                    - 'null'
                                  nullable: true
                                  description: >-
                                    Descrição livre do desconto, exibida na
                                    fatura.
                                  example: Promo Q2
                      expires_at:
                        type: integer
                        format: int64
                        description: >
                          Timestamp Unix do prazo que a sessão publicou. Uma
                          sessão nasce com uma

                          hora de validade. Este campo não muda quando a sessão
                          é encerrada, então

                          uma sessão encerrada com

                          `POST /api/v1/checkout/sessions/{id}/expire` carrega
                          `status` `expired`

                          com um `expires_at` ainda no futuro. Leia `status`
                          para saber se a

                          sessão aceita pagamento.
                        example: 1704675600
                      external_code:
                        type:
                          - string
                          - 'null'
                        nullable: true
                        description: >-
                          Código externo para integração com outros sistemas.
                          Único por conta.
                        example: CHECKOUT-SESSION-XYZ
                      invoice:
                        type:
                          - string
                          - 'null'
                        nullable: true
                        pattern: ^in_[0-9a-z]{26}$
                        description: >
                          ID da fatura gerada para a sessão, no formato TypeID
                          com prefixo `in_`.

                          `null` enquanto o cliente não foi informado — a fatura
                          é criada depois que

                          o comprador preenche os dados na página de checkout.
                        example: in_01h455vb4pex5vsknk084sn02q
                      line_items:
                        type: object
                        description: >
                          Itens da sessão, como foram registrados na criação. O
                          preço aparece como

                          ID; o valor cobrado está em `amount`.
                        unevaluatedProperties: false
                        required:
                          - object
                          - data
                        properties:
                          object:
                            type: string
                            enum:
                              - list
                            example: list
                          data:
                            type: array
                            items:
                              type: object
                              unevaluatedProperties: false
                              required:
                                - object
                                - price
                                - quantity
                              properties:
                                object:
                                  type: string
                                  enum:
                                    - item
                                  example: item
                                price:
                                  type: string
                                  pattern: ^price_[0-9a-z]{26}$
                                  description: >-
                                    ID do preço cobrado, no formato TypeID com
                                    prefixo `price_`.
                                  example: price_01h455vb4pex5vsknk084sn02q
                                quantity:
                                  type: integer
                                  description: Quantidade de unidades cobradas.
                                  example: 1
                      live_mode:
                        type: boolean
                        description: >-
                          Indica ambiente de produção (true) ou sandbox (false).
                          Dados de sandbox são limpos periodicamente.
                        example: true
                      metadata:
                        type:
                          - array
                          - object
                        description: >
                          Metadados enviados na criação, devolvidos como foram
                          armazenados. A API

                          aceita uma lista de objetos livres; uma sessão criada
                          sem metadados

                          devolve um objeto vazio.
                        example: []
                      mode:
                        type: string
                        description: |
                          Modo da sessão.
                          - payment: Cobrança avulsa.
                          - subscription: Assinatura recorrente.
                        enum:
                          - payment
                          - subscription
                        example: subscription
                      payment_intent:
                        type:
                          - string
                          - 'null'
                        nullable: true
                        pattern: ^pi_[0-9a-z]{26}$
                        description: >
                          ID da cobrança vinculada à sessão, no formato TypeID
                          com prefixo `pi_`.

                          `null` enquanto nenhuma cobrança foi gerada.
                        example: pi_01h455vb4pex5vsknk084sn02r
                      return_url:
                        type:
                          - string
                          - 'null'
                        nullable: true
                        format: uri
                        description: >-
                          URL para onde o comprador volta se cancelar o
                          checkout.
                        example: https://example.com/return
                      status:
                        type: string
                        description: >
                          Situação da sessão, derivada do prazo de validade, do
                          encerramento e da

                          conclusão.

                          - open: Aceita pagamento.

                          - complete: Paga; permanece assim mesmo depois do
                          prazo.

                          - expired: Encerrada sem pagamento, pelo prazo vencido
                          ou pelo merchant.
                        enum:
                          - open
                          - complete
                          - expired
                        example: open
                      subscription:
                        type:
                          - string
                          - 'null'
                        nullable: true
                        pattern: ^sub_[0-9a-z]{26}$
                        description: >
                          ID da assinatura criada pela sessão, no formato TypeID
                          com prefixo `sub_`.

                          Presente apenas no modo `subscription` e depois que a
                          fatura foi criada.
                        example: sub_01h455vb4pex5vsknk084sn02s
                      success_url:
                        type: string
                        format: uri
                        description: URL para onde o comprador vai depois de pagar.
                        example: https://example.com/success
                      url:
                        type: string
                        format: uri
                        description: URL da sessão de checkout para redirecionar o cliente.
                        example: >-
                          https://besimplo.com/checkout/sessions/cs_01h455vb4pex5vsknk084sn02c
              example:
                id: cs_01h455vb4pex5vsknk084sn02c
                object: checkout_session
                amount: 9990
                created: 1764040287
                currency: brl
                customer: cus_01h455vb4pex5vsknk084sn02p
                expires_at: 1764040300
                external_code: null
                invoice: in_01h455vb4pex5vsknk084sn02q
                line_items:
                  object: list
                  data:
                    - object: item
                      price: price_01h455vb4pex5vsknk084sn02q
                      quantity: 1
                live_mode: true
                metadata: []
                mode: subscription
                payment_intent: null
                return_url: null
                status: expired
                subscription: sub_01h455vb4pex5vsknk084sn02s
                success_url: https://example.com/success
                url: >-
                  https://besimplo.com/checkout/sessions/cs_01h455vb4pex5vsknk084sn02c
        '404':
          description: Não encontrado
          content:
            application/problem+json:
              schema:
                type: object
                required:
                  - type
                  - status
                  - title
                  - detail
                  - code
                properties:
                  type:
                    type: string
                    description: URI que identifica o tipo de problema
                    format: uri
                    enum:
                      - https://problems-registry.smartbear.com/not-found
                  status:
                    type: integer
                    description: O código de status HTTP
                    format: int32
                    enum:
                      - 404
                  title:
                    type: string
                    description: O nome do status HTTP
                    enum:
                      - Not Found
                  detail:
                    type: string
                    description: Mensagem descritiva do erro
                  code:
                    type: string
                    description: Código de erro interno da API
                    enum:
                      - NOT_FOUND
                      - RESOURCE_MISSING
              examples:
                not_found:
                  summary: Recurso não encontrado
                  value:
                    type: https://problems-registry.smartbear.com/not-found
                    status: 404
                    title: Not Found
                    detail: The requested resource was not found
                    code: NOT_FOUND
                customer_not_found:
                  summary: Cliente não encontrado
                  value:
                    type: https://problems-registry.smartbear.com/not-found
                    status: 404
                    title: Not Found
                    detail: 'No such customer: ''019abc12-3456-7890-abcd-ef1234567890'''
                    code: RESOURCE_MISSING
        '422':
          description: A sessão não pode ser expirada
          content:
            application/problem+json:
              schema:
                type: object
                required:
                  - type
                  - status
                  - title
                  - detail
                  - code
                properties:
                  type:
                    type: string
                    description: >-
                      URL que identifica o tipo de erro ocorrido. Útil para
                      tratamento programático de erros.
                    example: https://problems-registry.smartbear.com/validation-error
                    format: uri
                    maxLength: 1024
                  status:
                    type: integer
                    description: >-
                      Código de status HTTP da resposta. Corresponde ao status
                      code retornado na requisição.
                    example: 400
                    format: int32
                    minimum: 100
                    maximum: 599
                  title:
                    type: string
                    description: >-
                      Título curto e descritivo do erro. Ideal para exibir em
                      logs ou mensagens de erro genéricas.
                    example: Bad Request
                    maxLength: 1024
                  detail:
                    type: string
                    description: >-
                      Mensagem detalhada do erro específico para esta
                      requisição. Use esta mensagem para entender o que deu
                      errado.
                    example: O campo email é obrigatório e não foi informado.
                    maxLength: 4096
                  instance:
                    type: string
                    description: >-
                      Identificador único desta ocorrência de erro. Forneça este
                      valor ao solicitar suporte para facilitar o debug.
                    example: req_abc123def456
                    maxLength: 1024
                  code:
                    type: string
                    description: >-
                      Código de erro interno da API. Útil para mapear tipos
                      específicos de erros no seu código.
                    example: VALIDATION_ERROR
                    maxLength: 50
                  errors:
                    type: array
                    description: >-
                      Lista de erros de validação específicos. Presente quando
                      múltiplos campos falham na validação.
                    maxItems: 1000
                    items:
                      type: object
                      description: >-
                        Detalhes sobre um erro específico de validação. Ajuda a
                        identificar qual campo e valor causaram o erro.
                      required:
                        - detail
                      properties:
                        detail:
                          type: string
                          description: >-
                            Mensagem específica sobre o erro de validação deste
                            campo.
                          example: O campo email não é um endereço de e-mail válido.
                          maxLength: 4096
                        pointer:
                          type: string
                          description: >-
                            Caminho JSON para o campo no corpo da requisição que
                            causou o erro.
                          example: /customer/email
                          maxLength: 1024
                        parameter:
                          type: string
                          description: Nome do parâmetro (query ou path) que causou o erro.
                          example: customer_id
                          maxLength: 1024
                        header:
                          type: string
                          description: Nome do cabeçalho HTTP que causou o erro.
                          example: Authorization
                          maxLength: 1024
                        code:
                          type: string
                          description: >-
                            Código adicional para identificar o contexto
                            específico do erro.
                          example: INVALID_FORMAT
                          maxLength: 50
              examples:
                already_completed:
                  summary: Sessão já concluída
                  value:
                    type: >-
                      https://problems-registry.smartbear.com/business-rule-violation
                    status: 422
                    title: Unprocessable Entity
                    detail: Esta sessão de checkout já foi concluída
                    code: SESSION_ALREADY_COMPLETED
                already_expired:
                  summary: Sessão já encerrada
                  value:
                    type: >-
                      https://problems-registry.smartbear.com/business-rule-violation
                    status: 422
                    title: Unprocessable Entity
                    detail: Esta sessão de checkout já expirou
                    code: SESSION_ALREADY_EXPIRED
      security:
        - apiKeyAuth: []
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >
        A chave de API usada para autenticar a requisição e identificar a sua
        conta.


        **Exemplo:** `Authorization: ApiKey my-secure-key`

````