Skip to main content
Use este checklist antes de submeter a integração para revisão ou de solicitar acesso ao ambiente de produção.

Credenciais e ambiente

Token Bearer gerado via POST /api-key/generate e armazenado em variável de ambiente (não no repositório).
Base URL configurada corretamente: https://api.clearpago.com.br.
Header Authorization: Bearer <token> presente em todas as chamadas autenticadas.
Header Content-Type: application/json presente em todos os POST com corpo.
X-Correlation-ID sendo gerado e enviado em cada requisição para rastreabilidade.

Cash-in

Criação de cash-in retorna 201 com id (UUID) e status: PENDING.
UUID do cash-in persistido na base do seu sistema imediatamente após o 201.
externalId único por cobrança; colisões retornam 409 e estão sendo tratadas.
QR Code EMV (pixCode) presente na resposta quando generateQrCode: true.
expirationDate lido e exibido corretamente ao usuário/sistema.
GET /api/pix/cash-in/{id} funcionando e retornando o status atual.

Webhook do comerciante

Endpoint POST público configurado e acessível via HTTPS.
URL registrada via POST /webhook com os eventos pix_cash_in, pix_cash_out, pix_cash_in_reversal, pix_cash_out_reversal.
Chave pública obtida de GET /public-key e armazenada (com TTL de cache definido).
Verificação de Digital-Signature implementada: ECDSA P-256 + SHA-256 sobre o corpo bruto.
Handler de webhook retorna 2xx em menos de 5 segundos.
Lógica de negócio executada após a resposta HTTP (fila ou processamento assíncrono).
Handler idempotente: o mesmo evento entregue duas vezes não duplica efeito colateral.
Chave de idempotência definida: pelo menos event_type + event.id + transição de status.

Cash-out (se aplicável)

POST /api/pix/cash-out retorna 201 com id e estado de reserva.
UUID do cash-out persistido imediatamente.
Webhook pix_cash_out processado corretamente ao receber status CONFIRMED.
Estado PROVIDER_RESULT_UNKNOWN e RECONCILIATION_REQUIRED não tratados como terminais.

Refund-in (se aplicável)

POST /api/pix/refund-in/{id} usando o UUID do cash-in (não o transactionId do parceiro).
refundValue em BRL (não em centavos) no request.
UUID do refund-in retornado no 201 persistido para auditoria.
Webhook pix_cash_in_reversal deduplicando por transaction_id + end_to_end_id do estorno (não só por event.id).

Valores monetários

Requests enviados com valores em BRL (ex.: 150.75).
Responses com campos *_cents convertidos corretamente antes de comparação ou exibição.
Nenhuma comparação direta entre campo BRL e campo centavos no seu código.

Estados e erros

HTTP 4xx com corpo de erro lido e logado (nunca silenciado).
409 em externalId duplicado capturado e tratado (não gera novo recurso sem intenção).
PROVIDER_RESULT_UNKNOWN e RECONCILIATION_REQUIRED monitorados e não marcados como sucesso/falha prematuramente.

Próximo passo

Após validar todos os itens, revise o Checklist de produção para a virada de ambiente.