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

# Checkout hospedado

> A Bob cuida da tela de pagamento — você só cria a sessão e redireciona.

Se você não quer montar a tela de pagamento, use o **checkout hospedado**: sua aplicação cria uma sessão via API e redireciona o comprador para uma página da Bob. Quando pagar, você recebe o webhook e o comprador volta pra sua `successUrl`.

<Note>
  Hoje o checkout hospedado opera com **PIX** e **cripto**. **Cartão de crédito está em breve** — as referências a `credit_card` abaixo valem para quando o cartão for lançado.
</Note>

## Quando usar cada modo

|                       | **Checkout hospedado**            | **SDK embutível**                        | **API direta**                  |
| --------------------- | --------------------------------- | ---------------------------------------- | ------------------------------- |
| Tela de pagamento     | Pronta, hospedada pela Bob        | Montada no seu site pelo SDK Bob         | Você constrói                   |
| Cartão                | Bob cuida de tokenização e 3DS    | SDK cuida de tokenização e 3DS           | Você cuida de tokenização e 3DS |
| Esforço de integração | Uma chamada + redirect            | `sessionToken` + componente/elemento DOM | Maior                           |
| Confirmação           | Webhook por sessão + `successUrl` | Callback + webhook                       | Webhook do projeto              |

## O fluxo completo

<Steps>
  <Step title="Crie a sessão">
    `POST /api/v1/checkout-sessions/` com o valor e (opcionalmente) métodos aceitos, itens, dados do comprador e `webhookUrl`:

    ```bash theme={"system"}
    curl -X POST https://api.payments.bob.company/api/v1/checkout-sessions/ \
      -H "Authorization: Bearer $BOB_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "amountCents": 25000,
        "items": [{ "name": "Curso de Violão", "quantity": 1, "unitAmountCents": 25000 }],
        "paymentMethods": ["pix"],
        "successUrl": "https://loja.example.com/obrigado",
        "webhookUrl": "https://loja.example.com/webhooks/bob",
        "webhookVersion": "v2"
      }'
    ```

    A resposta traz `checkoutUrl`, `checkoutToken` e — se você enviou `webhookUrl` — o `webhookSecret` para [verificar as assinaturas](/pages/webhooks). **O secret aparece só nesta resposta**; guarde-o.
  </Step>

  <Step title="Redirecione o comprador">
    Mande o comprador para a `checkoutUrl`. Ele conclui o pagamento pelo método disponível (PIX ou cripto).
  </Step>

  <Step title="Receba a confirmação">
    Ao pagar, sua `webhookUrl` recebe `transaction.paid` (assinado — [verifique sempre](/pages/webhooks#verificando-a-assinatura)) e o comprador é levado à `successUrl`.
  </Step>

  <Step title="(Opcional) Faça polling">
    Sem webhook, consulte `GET /api/v1/checkout-sessions/{token}/status` — público, com rate limit por IP. Use como complemento, não como substituto do webhook.
  </Step>
</Steps>

## Bom saber

* **`items` é metadado de exibição** — o catálogo é seu; a Bob só renderiza o resumo do pedido. O valor cobrado é sempre o `amountCents` da sessão.
* **`expiresAt` é do link, não do PIX** — a sessão dura 24h por padrão; o PIX gerado dentro dela segue a expiração configurada no projeto.
* **`paymentMethods` controla as opções exibidas** — use `["pix"]` (o padrão) ou `["crypto"]` para pagamento em criptomoeda; combine-os em uma mesma sessão se quiser oferecer os dois. O suporte a `["credit_card"]` entra quando o cartão for lançado.
* **Método não disponível** — a criação da sessão informa quando um método solicitado não está habilitado no projeto.
* **Cripto** — informe `crypto` em `paymentMethods`. O comprador é levado à página hospedada de criptomoeda pela mesma `checkoutUrl`; a confirmação chega por `transaction.paid` como nos outros métodos.
* **Cartão de crédito (em breve)** — quando lançar, você informará `credit_card` em `paymentMethods`. Veja [Cartão de crédito](/pages/credit-card/overview).
* **Quer manter o comprador no seu site?** Use o [SDK Checkout](/pages/sdk/checkout). Ele embute o checkout da Bob sem expor os dados brutos do cartão à sua aplicação.
* **Sandbox funciona igual** — crie a sessão com `sk_test_` e o fluxo roda de ponta a ponta no ambiente de teste. Veja [Sandbox](/pages/sandbox).
* **Com o SDK**: `bob.checkoutSessions.create(...)` já envia `webhookVersion: "v2"` por padrão. Veja [SDK Node.js](/pages/sdk/node).

## Próximos passos

<CardGroup cols={2}>
  <Card title="Criar sessão de checkout" icon="code" href="/pages/checkout/create">
    Todos os campos de criação, com playground interativo.
  </Card>

  <Card title="SDK Checkout" icon="browser" href="/pages/sdk/checkout">
    Embuta o checkout no seu site em vez de redirecionar.
  </Card>
</CardGroup>
