Onde é obrigatória
Em toda requisição que cria operação financeira:POST /transactions(cobrança Pix)POST /transfers(transferência Pix)
400 com idempotency_key_required.
Como enviar a chave
Escolha uma das duas formas:
Nas duas formas o valor é salvo como o
externalId da transação. Por isso você consulta a operação depois com GET /transactions/{id} usando a própria chave.
A chave tem até 100 caracteres e aceita letras, números e . _ : / -. Fora disso, 400 com invalid_idempotency_key.
O que a API faz
O que conta como “mesmo corpo”
A comparação usa os campos que definem a operação. Mudar qualquer um deles com a mesma chave dá409.
webhookUrl não entra na comparação. Trocar a URL do webhook numa repetição não gera conflito.
A regra de ouro: mesma chave para repetir, chave nova para refazer
Existem dois casos que parecem iguais e são opostos.- Resultado incerto: MESMA chave
- Operação terminou: chave NOVA
A requisição pode ou não ter chegado: timeout, erro de rede,
5xx, 202.Reenvie igual, com a mesma chave. Se a primeira chegou, você recebe a original (200). Se não chegou, ela é criada (201).Nunca troque a chave aqui. Uma chave nova cria uma segunda operação.A chave não expira. Ela vale, na sua conta, enquanto a transação existir. Por isso o ideal é derivá-la do identificador do negócio mais o número da tentativa:
PEDIDO-1042-t1, PEDIDO-1042-t2.Exemplo: reenviar com segurança
Boas práticas
1
Derive a chave do negócio
PEDIDO-1042-t1, não um UUID aleatório por requisição. Um UUID novo a cada retry anula a proteção.2
Persista antes de enviar
Grave a chave no seu banco antes de chamar a API. Se o processo cair no meio, o retry usa a chave gravada.
3
Trate 200 e 201 como sucesso
201 criou agora, 200 já existia. O restante do tratamento é igual.4
Em 409, não troque a chave
Trocar para “fazer passar” cria uma operação nova. Descubra o que mudou no corpo, ou consulte a original com
GET /transactions/{id}.5
Nunca reutilize entre operações diferentes
Duas cobranças distintas precisam de chaves distintas. Mesma chave com corpo diferente é
409.Erros
Todos os códigos e a estratégia de retry.
Acompanhar transações
Consulte a original pelo
externalId.
