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

# Get a Checkout Session

> Consulta uma checkout session pelo ID ou pelo client_secret público.

Use a consulta autenticada por ID no seu servidor ou painel administrativo. Use
a consulta pública por `client_secret` somente no browser do comprador, quando
não pode existir API key no frontend.

| Leitura             | Endpoint                                           | Autenticação                                  | Uso típico                                     |
| ------------------- | -------------------------------------------------- | --------------------------------------------- | ---------------------------------------------- |
| Por ID              | `GET /v1/checkout-sessions/{id}`                   | API key com escopo `read`                     | servidor, painel administrativo, reconciliação |
| Por `client_secret` | `GET /v1/checkout-sessions/public/{client_secret}` | nenhuma; o `client_secret` autentica a sessão | hosted page ou checkout frontend custom        |

## Consulta por ID

Retorna o objeto `checkout.session` completo pelo ID da sessão. A API key da
própria organização atua diretamente. A API key de plataforma exige o header
`Organization: <organization_id>` apontando para uma organização conectada ativa.

### Parâmetros de caminho

<ParamField path="id" type="string" required>
  ID da checkout session (`cs_*`).
</ParamField>

<RequestExample>
  ```bash cURL theme={}
  curl -X GET "https://api.chargefy.io/v1/checkout-sessions/cs_123" \
    -H "Authorization: Bearer {{API_KEY}}"
  ```
</RequestExample>

### Resposta

Retorna o mesmo DTO de [`POST /v1/checkout-sessions`](/api-reference/checkout-sessions/create#resposta).
O campo `payment_data` fica `null` antes da confirmação e aparece preenchido
quando a sessão já foi confirmada.

<ResponseExample>
  ```json 200 theme={}
  {
    "id": "cs_123",
    "object": "checkout.session",
    "allow_discount_codes": true,
    "amount_discount": 0,
    "amount_subtotal": 19990,
    "amount_tax": 0,
    "amount_total": 19990,
    "branding_settings": null,
    "cancel_url": null,
    "client_secret": "9f4c2a1b8e3d7f06a5c4b2e1d8f3a6b09c5e2a1f4b7d8c3e6a9f1d2c4b5e8a0f",
    "created_at": "2026-05-19T18:31:00Z",
    "currency": "brl",
    "customer": "cus_123",
    "customer_document": "12345678901",
    "customer_document_type": "cpf",
    "customer_email": "ada@example.com",
    "customer_name": "Ada Lovelace",
    "discount": null,
    "expires_at": "2026-05-20T18:31:00Z",
    "invoice_creation": false,
    "line_items": [
      {
        "id": "li_123",
        "amount_discount": 0,
        "amount_subtotal": 19990,
        "amount_tax": 0,
        "amount_total": 19990,
        "currency": "brl",
        "description": "Plano Pro mensal",
        "metadata": {},
        "position": 0,
        "price": "price_123",
        "price_data": null,
        "product": "prod_123",
        "quantity": 1,
        "recurring_interval": null,
        "recurring_interval_count": null,
        "unit_amount": 19990
      }
    ],
    "livemode": true,
    "metadata": {
      "order_id": "ord_123"
    },
    "mode": "payment",
    "payment_data": null,
    "payment_method_collection": "always",
    "payment_method_options": {
      "credit_card": {
        "installments": {
          "has_interest": true,
          "max_count": 12
        }
      }
    },
    "payment_method_types": [
      "credit_card",
      "pix",
      "boleto"
    ],
    "payment_status": "unpaid",
    "require_billing_address": false,
    "require_document": true,
    "require_phone": false,
    "status": "open",
    "submit_type": "auto",
    "subscription": null,
    "success_url": "https://example.com/success",
    "template": null,
    "url": "https://pay.chargefy.io/session/9f4c2a1b8e3d7f06a5c4b2e1d8f3a6b09c5e2a1f4b7d8c3e6a9f1d2c4b5e8a0f"
  }
  ```
</ResponseExample>

## Consulta pública por client\_secret

Endpoint de leitura para o browser do comprador. Não envie `Authorization`;
o `client_secret` na URL é a credencial da sessão.

### Parâmetros de caminho

<ParamField path="client_secret" type="string" required>
  Secret opaco da checkout session, retornado no campo `client_secret` do
  create.
</ParamField>

<RequestExample>
  ```bash cURL theme={}
  curl -X GET "https://api.chargefy.io/v1/checkout-sessions/public/{{CLIENT_SECRET}}"
  ```
</RequestExample>

<Tip>
  Não exponha o `Authorization` da sua API key no browser. A rota pública por
  `client_secret` existe para carregar e acompanhar a sessão sem credencial de
  servidor.
</Tip>

### Resposta pública

Retorna o mesmo objeto `checkout.session` da leitura por ID. Por alimentar a
página hospedada, a leitura pública também inclui campos de renderização
resolvidos no servidor.

<ResponseField name="branding" type="object">
  Identidade visual + identidade do lojista, resolvidas para a página hospedada.
  É a mescla entre os defaults da organização, o `branding_settings` da sessão e
  o fallback do sistema. Inclui as cores (`brand_color`, `accent_color`),
  `theme`, `border_style`, `font_family`, além de `logo_url` (logo do lojista no
  header) e `business_name` (nome exibido no header e no texto de autorização).
</ResponseField>

<ResponseField name="due_date" type="string | null">
  Alias público de `expires_at`, usado pela hosted page.
</ResponseField>

<ResponseField name="installment_options" type="object | null">
  Opções de parcelamento calculadas para o valor atual da sessão. Objeto com
  `max` (número máximo de parcelas permitido) e `options` (mapa por bandeira,
  cada item com `installments`, `per_installment`, `total` e `fee_bps`).
</ResponseField>

<ResponseField name="next_action" type="object | null">
  Detalhes de próxima ação quando a resposta tiver dados de exibição para um
  método assíncrono. Na leitura antes do `confirm`, normalmente é `null`.
</ResponseField>

<ResponseField name="template" type="string | null">
  Template visual resolvido para renderização da hosted page.
</ResponseField>

<Info>
  `branding` não substitui `branding_settings`: `branding_settings` é o override
  cru salvo na sessão; `branding` é o resultado já resolvido para renderização.
  A leitura autenticada por ID não inclui esses campos de renderer.
</Info>

Para PIX e boleto, `status: "complete"` significa que o comprador submeteu o
formulário, não que o pagamento foi compensado. Acompanhe `payment_status`
(`unpaid` -> `paid`) ou ouça o webhook
[`checkout.session.async.payment.succeeded`](/api-reference/webhooks/checkout.session.async.payment.succeeded).

## Erros

| HTTP | Razão                                                                         |
| ---- | ----------------------------------------------------------------------------- |
| 400  | `client_secret` ausente ou corpo inválido na rota pública                     |
| 401  | API key ausente, mal formada ou inválida na rota por ID                       |
| 403  | API key de plataforma sem `Organization`, ou `Organization` sem vínculo ativo |
| 404  | Checkout session não encontrada                                               |

<ResponseExample>
  ```json 404 theme={}
  {
    "error": {
      "code": "resource_missing",
      "message": "Checkout session not found",
      "type": "invalid_request_error"
    }
  }
  ```
</ResponseExample>
