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

# Quickstart

> Faça sua primeira cobrança Pix com a API da TroqPay.

# Seu primeiro checkout em 4 passos

Se você quer validar a integração o mais rápido possível, este é o caminho.

<Info>
  Ao final desta página, você terá criado um checkout Pix, exibido os dados do
  pagamento e entendido como receber o evento `checkout.paid`.
</Info>

## Antes de começar

Antes de começar, você precisa de:

* uma conta em `app.troqpay.com`
* uma chave `trq_test_`
* um backend capaz de enviar HTTP com JSON

## Passo 1: gere uma chave de teste no app

Acesse o [app.troqpay.com](https://app.troqpay.com), abra a área de API da sua
conta e gere uma chave com prefixo `trq_test_`.

<Tip>
  A TroqPay usa a mesma URL-base para teste e produção. O ambiente é definido
  pela chave usada na requisição.
</Tip>

## Passo 2: crie um checkout Pix

Com o SDK JavaScript:

```ts theme={null}
import { Troqpay } from "@troqpay/sdk";

const troqpay = new Troqpay({
  apiKey: process.env.TROQPAY_API_KEY!,
});

const checkout = await troqpay.checkouts.create(
  {
    amount: 12990,
    description: "Plano Pro",
    externalId: "order_1001",
    expiresIn: 1800,
    customer: {
      name: "Maria Silva",
      email: "maria@example.com",
    },
    metadata: {
      plan: "pro",
    },
  },
  {
    idempotencyKey: "order_1001",
  }
);
```

Ou com HTTP direto:

```bash theme={null}
curl -X POST https://api.troqpay.com/v1/checkouts \
  -H "Authorization: Bearer trq_test_xxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order_1001" \
  -d '{
    "amount": 12990,
    "description": "Plano Pro",
    "externalId": "order_1001",
    "expiresIn": 1800,
    "customer": {
      "name": "Maria Silva",
      "email": "maria@example.com"
    },
    "metadata": {
      "plan": "pro"
    }
  }'
```

Exemplo de resposta:

```json theme={null}
{
  "id": "chk_4a8b3c1d5e6f2a9b0c1d",
  "livemode": false,
  "status": "PENDING",
  "amount": 12990,
  "currency": "BRL",
  "description": "Plano Pro",
  "externalId": "order_1001",
  "checkoutUrl": "https://pay.troqpay.com/pay/chk_4a8b3c1d5e6f2a9b0c1d",
  "createdAt": "2026-04-25T14:00:00.000Z",
  "expiresAt": "2026-04-25T14:30:00.000Z",
  "paidAt": null,
  "customer": {
    "name": "Maria Silva",
    "email": "maria@example.com",
    "document": null
  },
  "pix": {
    "copyPaste": "00020101021226840014br.gov.bcb.pix...",
    "qrCodeUrl": "data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D..."
  },
  "settlement": {
    "currency": "BRL",
    "status": "PENDING",
    "amount": null
  },
  "metadata": {
    "plan": "pro"
  }
}
```

### O que você deve esperar da resposta

<CardGroup cols={2}>
  <Card title="Checkout criado">
    `status` deve começar em `PENDING` e `livemode` deve vir como `false` quando
    você estiver usando `trq_test_`.
  </Card>

  <Card title="Pix pronto para exibição">
    Você recebe `pix.copyPaste`, `pix.qrCodeUrl` e `checkoutUrl` para escolher
    como quer cobrar.
  </Card>

  <Card title="Identificação do pedido">
    `id` e `externalId` te ajudam a ligar o checkout ao seu próprio sistema.
  </Card>

  <Card title="Liquidação em BRL">
    `settlement.currency` é sempre `BRL`. `settlement.status` começa em `PENDING` e avança para `AVAILABLE` ou `COMPLETED` conforme o saldo se concretiza.
  </Card>
</CardGroup>

## Passo 3: exiba o Pix para o comprador

Você pode usar qualquer um destes campos:

* `pix.copyPaste` para o botão de copia e cola
* `pix.qrCodeUrl` para renderizar o QR Code
* `checkoutUrl` se quiser levar o cliente para um fluxo hospedado

<Note>
  `pix.qrCodeUrl` já é a imagem do QR Code pronta para exibir — basta usá-la
  como `src` de um `<img>`. No sandbox ela vem como uma `data:` URI (imagem
  embutida na própria resposta); em produção, é a URL da imagem gerada pelo
  provedor de pagamento.
</Note>

<Card title="O que salvar no seu sistema" horizontal>
  Salve pelo menos `checkout.id`, `externalId`, `amount` e `livemode`. Esses
  quatro campos já resolvem boa parte da sua conciliação e do seu suporte.
</Card>

## Passo 4: receba o evento de pagamento por webhook

Quando o checkout for pago, você vai receber um webhook parecido com este:

```json theme={null}
{
  "id": "evt_4a8b3c1d5e6f2a9b0c1d2e3f",
  "type": "checkout.paid",
  "createdAt": "2026-04-25T14:02:10.000Z",
  "livemode": false,
  "data": {
    "checkout": {
      "id": "chk_4a8b3c1d5e6f2a9b0c1d",
      "livemode": false,
      "status": "PAID",
      "amount": 12990,
      "currency": "BRL",
      "externalId": "order_1001",
      "checkoutUrl": "https://pay.troqpay.com/pay/chk_4a8b3c1d5e6f2a9b0c1d",
      "paidAt": "2026-04-25T14:02:10.000Z",
      "settlement": {
        "currency": "BRL",
        "status": "AVAILABLE",
        "amount": "129.90"
      }
    }
  }
}
```

O objeto `data.checkout` é o checkout completo — a mesma forma retornada por `GET /v1/checkouts/{checkoutId}`. Veja [Webhooks](/flows/webhooks) para todos os campos.

<Tip>
  Use `externalId` para ligar o checkout ao pedido do seu sistema e
  `Idempotency-Key` para evitar cobranças duplicadas em caso de retry.
</Tip>

<Tip>
  Se algum campo não bater com o esperado, abra a página [Erros](/flows/errors).
  Cada `code` lá tem uma dica de próximo passo.
</Tip>

## Fluxo resumido

<CardGroup cols={4}>
  <Card title="1. Chave">
    Gere uma `trq_test_` no app.
  </Card>

  <Card title="2. Checkout">
    Crie o checkout pelo backend.
  </Card>

  <Card title="3. Pix">
    Mostre o QR Code ou o copia e cola para o comprador.
  </Card>

  <Card title="4. Webhook">
    Marque o pedido como pago quando `checkout.paid` chegar.
  </Card>
</CardGroup>

## Próximos passos

<CardGroup cols={2}>
  <Card title="Autenticação" href="/authentication">
    Entenda como funcionam chaves, ambiente e idempotência.
  </Card>

  <Card title="SDK JavaScript" href="/sdks/javascript">
    Use o pacote `@troqpay/sdk` para integrar pelo backend.
  </Card>

  <Card title="Webhooks" href="/flows/webhooks">
    Veja como validar assinatura, processar eventos e lidar com reentregas.
  </Card>

  <Card title="Checkouts Pix" href="/flows/checkouts-pix">
    Aprofunde o ciclo de vida da cobrança e os campos mais importantes do recurso.
  </Card>

  <Card title="Produção" href="/production">
    Veja o que revisar antes de usar a integração com clientes reais.
  </Card>
</CardGroup>

## Precisa de ajuda para seguir?

<CardGroup cols={3}>
  <Card title="Validar no sandbox" href="/sandbox">
    Confira o comportamento do checkout e dos webhooks antes de subir tráfego real.
  </Card>

  <Card title="Revisar erros" href="/flows/errors">
    Entenda o que fazer se o payload for rejeitado ou a autenticação falhar.
  </Card>

  <Card title="Abrir o app" href="https://app.troqpay.com">
    Gere chaves e revise a configuração da sua conta sem sair da docs.
  </Card>
</CardGroup>
