# Retries e idempotência

Evite efeitos duplicados ao receber novamente um evento.

## Deduplicação

Use `data.id` + `event` como chave. Guarde corpo e assinatura. Depois da primeira persistência, trate repetição como no-op.

## Ordem dos eventos

O evento nomeia a transição emitida, não um snapshot do status numérico.

O `timestamp` é o da montagem do payload e se repete nos retries.

## Checkout não é idempotente

A criação do checkout não é idempotente. Detalhe no [guia PIX ponta a ponta](https://www.grandepay.com.br/docs/guides/pix-checkout).
