Skip to main content
Rede cai. Timeout acontece. Você manda uma cobrança, não recebe resposta e não sabe se ela foi criada. Sem idempotência, reenviar pode cobrar duas vezes, ou pior, transferir duas vezes. Com idempotência, você reenvia a mesma requisição com a mesma chave e a NyxPag devolve a operação original, sem duplicar.

Onde é obrigatória

Em toda requisição que cria operação financeira:
  • POST /transactions (cobrança Pix)
  • POST /transfers (transferência Pix)
Sem chave, a API responde 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.
Se enviar as duas, os valores precisam ser iguais. Valores diferentes retornam 409 idempotency_conflict.

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.
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.