Idempotência
Toda rota desta API é leitura. Repetir uma chamada não cria, não altera e não apaga nada — retentar é sempre seguro do ponto de vista dos seus dados.
Do nosso lado
Gateways reenviam o mesmo evento — é comportamento normal de entrega "pelo menos uma vez". O PassKey deduplica na entrada, então um pagamento reenviado três vezes é uma venda só na sua leitura.
Reenvio identificado aparece com status DUPLICATE e não é contado duas vezes no faturamento.
Do seu lado
Use o id da venda como chave única no seu banco. Ele é estável: a mesma venda devolve o mesmo id para sempre, o que torna o seu upsert idempotente sem você precisar comparar campo a campo.
Uma venda pode mudar de estado depois de você a ter lido — um pagamento vira estorno, um disparo pendente conclui. Reler a janela e fazer upsert pelo id é o padrão certo.