> ## 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.

# Criar seu primeiro pagamento com SDK

> Rode um projeto com o SDK da Bob e faça seu primeiro pagamento PIX no sandbox em poucos minutos.

Este guia de \~5 minutos usa o SDK de servidor da Bob para criar uma cobrança **PIX** e confirmar seu primeiro pagamento no sandbox.

<Note>
  Você precisa de uma chave `sk_test_`. Se ainda não tem, veja [Configurar sua conta](/pages/setup-account).
</Note>

<Steps>
  <Step title="Instale os pré-requisitos">
    Você precisa de [Node.js](https://nodejs.org/) **20 ou 22 (LTS)**.

    ```bash theme={"system"}
    node --version   # v20.x ou v22.x
    ```
  </Step>

  <Step title="Crie o projeto e instale o SDK">
    ```bash theme={"system"}
    mkdir bob-primeiro-pagamento && cd bob-primeiro-pagamento
    npm init -y
    npm install @bobpayments/sdk
    ```
  </Step>

  <Step title="Configure a chave de API">
    Crie um arquivo `.env` na raiz com a sua chave de sandbox:

    ```bash theme={"system"}
    BOB_API_KEY=sk_test_sua_chave
    ```

    <Warning>
      A chave `sk_test_` é secreta e só existe no **backend**. Nunca envie ao navegador.
    </Warning>
  </Step>

  <Step title="Crie a cobrança PIX">
    Crie uma sessão de checkout com PIX. A resposta traz a `checkoutUrl`, para onde você redireciona o comprador:

    ```typescript theme={"system"}
    import { BobPayments } from '@bobpayments/sdk';

    const bob = new BobPayments({ apiKey: process.env.BOB_API_KEY! });

    const session = await bob.checkoutSessions.create({
      amountCents: 10_000, // R$100,00 — no sandbox, final .00 é pago automaticamente
      items: [{ name: 'Plano Premium', quantity: 1, unitAmountCents: 10_000 }],
      paymentMethods: ['pix'],
      successUrl: 'https://loja.example.com/pedido/sucesso',
      webhookUrl: 'https://loja.example.com/webhooks/bob',
    });

    console.log(session.checkoutUrl); // redirecione o comprador para cá
    ```
  </Step>

  <Step title="Faça seu primeiro pagamento">
    No sandbox, o desfecho é controlado pelos **dois últimos dígitos do valor** — sem PIX real:

    | Centavos do valor    | Desfecho                               |
    | -------------------- | -------------------------------------- |
    | `.00` (ex.: `10000`) | Pago em \~5s (`transaction.paid`)      |
    | `.01` (ex.: `10001`) | Expira em \~5s (`transaction.expired`) |
    | `.02` (ex.: `10002`) | Fica pendente até expirar              |

    Como a sessão acima usa `10_000`, o pagamento é confirmado em segundos e dispara o webhook `transaction.paid`.
  </Step>

  <Step title="Confira o pagamento no Dashboard">
    Acesse **Transações** em [app.payments.bob.company](https://app.payments.bob.company) e veja a cobrança recém-paga, com o campo `isSandbox: true`.
  </Step>
</Steps>

## Próximos passos

<CardGroup cols={2}>
  <Card title="Entender o fluxo" icon="diagram-project" href="/pages/concepts/payment-flow">
    Veja como sessão, transação, checkout e webhook se conectam.
  </Card>

  <Card title="Configurar webhooks" icon="bell" href="/pages/webhooks">
    Implemente a confirmação assíncrona no seu servidor.
  </Card>

  <Card title="Testar no sandbox" icon="flask" href="/pages/sandbox">
    Simule os estados do pagamento sem movimentar dinheiro real.
  </Card>

  <Card title="Ver todos os caminhos" icon="signs-post" href="/pages/payments">
    Compare checkout hospedado, SDK Checkout e API direta.
  </Card>
</CardGroup>
