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

# Ambientes e como testar sem sandbox

> A NyxPag tem um único ambiente, o de produção. Veja como testar com segurança com valores baixos e como validar o seu webhook sem gastar dinheiro.

A NyxPag tem **um único ambiente: produção**. Não existe sandbox, e toda API Key opera nesse mesmo ambiente. Cobrança criada é real, Pix pago é dinheiro real e transferência enviada não volta.

| Propriedade | Valor |
| - | - |
| Base URL | `https://api.nyxpag.com.br/v1` |
| Prefixo da chave | `nyx_live_` |
| Dinheiro | Real |
| Sandbox | Não existe |

<Warning>
  Não existe simulador de pagamento. Para um Pix virar `approved`, alguém precisa pagar de verdade. Planeje os testes em volta disso.
</Warning>

## Testar com segurança em produção

<Steps>
  <Step title="Crie uma chave só para teste">
    Em [Dashboard → Chaves de API](https://nyxpag.com.br/dashboard/credentials), crie `teste-integracao` com `payments:write` e `transactions:read`. **Sem** `transfers:write`: uma chave de teste não deve conseguir enviar dinheiro.
  </Step>

  <Step title="Use o menor valor">
    O mínimo de uma cobrança é R\$ 1,00. Pague pelo seu próprio banco, a partir da sua própria conta.
  </Step>

  <Step title="Marque o que é teste">
    Use `externalId` com prefixo claro, como `teste-0001`. Assim você acha no extrato e nunca colide com um pedido real.
  </Step>

  <Step title="Revogue ao terminar">
    Terminou? Revogue a chave de teste. Para produção, crie outra.
  </Step>
</Steps>

<Note>
  O pagador informado na cobrança precisa de um **CPF válido**, mas não precisa ser o de quem paga o Pix. Em teste, use o seu.
</Note>

## Testar o webhook sem pagar nada

Você não precisa de um Pix real para testar o receptor. Assine um evento com um segredo seu e envie para o seu servidor local. Isso valida o parse, a checagem de assinatura, a deduplicação e a regra de negócio.

```bash theme={"dark"}
SECRET="segredo_de_teste_local"
T=$(date +%s)
BODY='{"id":"evt_txn_teste_approved","event":"transaction.approved","createdAt":"2026-10-03T14:01:32.000Z","data":{"id":"txn_teste","externalId":"teste-0001","type":"payment","status":"approved"}}'
SIG=$(printf '%s' "${T}.${BODY}" | openssl dgst -sha256 -hmac "$SECRET" -hex | awk '{print $NF}')

curl -X POST http://localhost:3000/webhooks/nyxpag \
  -H "Content-Type: application/json" \
  -H "X-NyxPag-Event: transaction.approved" \
  -H "X-NyxPag-Delivery: teste-001" \
  -H "X-NyxPag-Signature: t=${T},v1=${SIG}" \
  -d "$BODY"
```

Rode duas vezes com o mesmo `X-NyxPag-Delivery` e confira que a segunda **não** processa de novo. Depois altere um caractere do `BODY` sem refazer a assinatura e confira que o seu receptor responde `401`.

<CardGroup cols={2}>
  <Card title="Validando a assinatura" icon="shield-check" href="/webhooks/assinatura">
    O vetor de teste com resultado conhecido e o código completo.
  </Card>

  <Card title="Eventos de transação" icon="receipt" href="/webhooks/transacoes">
    Payloads de exemplo para montar seus testes.
  </Card>
</CardGroup>

## O que não dá para simular

Alguns cenários só acontecem em produção. Cubra com testes automatizados usando os payloads de exemplo da documentação:

| Cenário | Como testar |
| - | - |
| Cobrança expirada | Crie e não pague. Em 15 minutos chega `transaction.cancelled` com `expired: true` |
| Pagamento aprovado | Pague uma cobrança de R\$ 1,00 pelo seu banco |
| Falha de transferência | Use os payloads de [transaction.\*](/webhooks/transacoes) no seu receptor |
| Contestação MED | Use os payloads de [med.\*](/webhooks/med) no seu receptor |
| Limite de requisições | Veja [Limites](/guides/confiabilidade/limites) e simule o `429` no seu cliente |

## Antes de escalar

<CardGroup cols={2}>
  <Card title="Antes de ir para produção" icon="list-checks" href="/guides/confiabilidade/checklist-producao">
    Chaves, idempotência, webhook, reconciliação e observabilidade.
  </Card>

  <Card title="Roteiro de integração" icon="map" href="/guides/comece-aqui/primeira-integracao">
    O passo a passo completo, da chave ao primeiro webhook.
  </Card>
</CardGroup>


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