Pular para o conteúdo

8. Checklist de go-live

  • Chave SECRET só no servidor, em cofre de segredos; nunca em app, navegador ou repositório.
  • Cada chave com só os scopes que usa.
  • Assinatura de todo webhook validada com o corpo cru e o signingSecret (Assinatura).
  • URL do webhook em HTTPS público.
OperaçãoComoRegra
Cobrança PixidempotencyKey no corpoUse o id do pedido. Reenvio devolve a mesma cobrança.
Saque PixidempotencyKey no corpoUse o id do saque no seu sistema.
Reembolsoheader Idempotency-KeyUma chave por reembolso.
Pagar cliente / sacar saldo criptoheader Idempotency-KeyMesma chave + mesmo corpo = mesmo saque; corpo diferente = 409 idempotency_conflict.
  • Em timeout ou 5xx, repita com a mesma chave. Só gere chave nova para uma operação nova.
  • Depois de FAILED, uma nova tentativa é uma operação nova: chave nova.
  • Responde 2xx em até 5 segundos e processa em fila.
  • Idempotente: o mesmo evento pode chegar mais de uma vez. Deduplique por id do recurso + event (subTransactionId, withdrawId, refundId, depositId, payoutId, withdrawalId, customerId).
  • Não depende da ordem de chegada: confira o status atual antes de mudar o seu.
  • Inscrito em todos os eventos dos fluxos que você usa (Eventos).

O webhook é a fonte principal; a consulta é a rede de segurança.

Recurso pendenteConsultaFrequência sugerida
Cobrança Pix PENDINGGET /payments/merchant/transaction/:subTransactionIdQuando o cliente disser que pagou, ou a cada poucos minutos até expirar
Saque PixGET /withdraws/merchant/:idA cada minuto até COMPLETED/FAILED
Cliente cripto PENDING/IN_REVIEWGET /crypto/customers/:idA cada algumas horas
Depósito criptoGET /crypto/deposits?from=…Diariamente, para conciliar
Pagamento/saque cripto PROCESSINGGET /crypto/payouts/:id, GET /crypto/withdrawals/:idA cada minuto
  • Rotina diária comparando os seus registros com as listagens (/merchant/transactions, /withdraws/merchant, /crypto/deposits, /crypto/withdrawals).
HTTPSignificadoAção
400Corpo ou header inválidoCorrigir; não repetir igual.
401Chave inválidaAlarme: credencial errada ou revogada.
403Sem scope, cripto desligado ou cliente sem KYC (kyc_required)Corrigir configuração ou aguardar o cliente.
404Recurso não existe na sua empresaConferir o id.
409Conflito de estado (idempotency_conflict, identity_mismatch, merchant_not_ready, merchant_wallet_not_ready)Ler o error e agir; não repetir às cegas.
422Regra de negócio (insufficient_balance, limit_exceeded, amount_below_minimum, provider_cost_exceeds_fee, pix_key_not_owned…)Mostrar ao usuário ou ajustar o valor. Nada foi reservado.
429Rate limitEsperar e repetir com backoff (Erros e rate limit).
503Provedor ou cotação indisponívelRepetir com backoff e a mesma chave de idempotência.
  • Cobrança Pix paga de ponta a ponta, com transaction.paid recebido e validado.
  • Reembolso parcial com transaction.refunded.
  • Saque Pix com withdraw.completed.
  • Cripto: cliente de teste aprovado, depósito com crypto.deposit.paid, pagamento de R$ 10,00 + taxa com crypto.payout.paid e o valor conferido no extrato.
  • Cripto (se for sacar o saldo da loja): cadastro cripto da loja aprovado e saque com crypto.withdrawal.paid.
  • Simulação de timeout: repetir a chamada com a mesma chave não duplica a operação.