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

# Como testar

> A Ephra não tem sandbox. Veja como validar a sua integração com segurança: leitura primeiro, evento de teste no webhook e venda real de baixo valor.

Toda chamada atinge a sua empresa de verdade. Isso não impede testar: impede testar de qualquer jeito. Siga esta ordem.

**1. Leia antes de escrever**

Rotas `GET` não mudam nada. Valide autenticação, paginação e o formato das respostas com elas: `GET /v1/company`, `GET /v1/products`, `GET /v1/transactions`, `GET /v1/balance`.

**2. Teste o webhook sem venda**

`POST /v1/webhooks/{webhookId}/test` manda um evento completo para o seu endpoint, com `scope: "test"` e IDs de teste como `test_transaction_id`. Teste quantos eventos quiser, sem cobrar ninguém.

```bash cURL theme={"system"}
curl -s -X POST https://api.ephra.io/v1/webhooks/31/test \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"events": ["transaction_paid", "transaction_refunded"]}'
```

```javascript Node theme={"system"}
const res = await fetch("https://api.ephra.io/v1/webhooks/31/test", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${token}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "events": [
      "transaction_paid",
      "transaction_refunded"
    ]
  }),
});
const json = await res.json();
```

```python Python theme={"system"}
import requests

res = requests.post(
    "https://api.ephra.io/v1/webhooks/31/test",
    headers={
        "Authorization": f"Bearer {token}",
    },
    json={
        "events": [
            "transaction_paid",
            "transaction_refunded"
        ]
    },
)
data = res.json()
```

> [!WARNING]
>
> Descarte `scope: "test"` antes de liberar acesso ou dar baixa em pedido. Um teste que libera acesso de verdade é um bug caro.

**3. Faça uma venda de verdade, pequena**

Para ver o fluxo de ponta a ponta, crie no painel um produto de teste com uma **oferta gratuita** ou de valor baixo e compre você mesmo pelo checkout. A oferta gratuita gera venda aprovada, com todos os webhooks, sem passar pelo cartão.

**4. Desfaça o que criou**

Exclua o produto de teste e estorne a venda paga por `POST /v1/transactions/{transactionId}/refund`. Venda gratuita não tem estorno e fica fora das métricas.

## Boas práticas

* Use uma chave de API só para testes e revogue no fim.
* Registre o `id` de cada evento recebido e processe uma vez só. O mesmo evento pode chegar mais de uma vez.
* Antes de escrever em massa, rode a operação em um item e confira o resultado.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.