externalId (sua chave de negócio)
- Deve ser único por operação quando a regra de criação assim exigir. Duplicidade costuma resultar em
409Conflito (conforme convenções gerais do documento). - Use o mesmo
externalIdenquanto quiser mapear 1:1 com pedido, saque, estorno, etc. — mas não reutilize o mesmoexternalIdpara operações financeiras distintas que a API considera conflitantes. - Não confunda com
id(UUID da plataforma). Refund: path usa oiddo cash-in; a consulta de refund usa oiddo refund-in.
TODO: regra formal de unicidade — tamanho máximo, charset e escopo (global vs. organização) se precisar para certificação.
X-Correlation-ID
- Envie em toda chamada (recomendado): UUID ou string rastreável.
- Deve ser ecoado na resposta quando aplicável, facilitando rastreio com suporte e logs cruzados.
Deduplicação de webhooks (comerciante)
Após verificar a assinatura, considere idempotente por combinação mínima coerente com o evento, por exemplo:- Base geral:
event_type+event.id+ transição lógica de status (o mesmo “evento de negócio” pode replicar o mesmostatusem reentregas). pix_cash_in_reversal: a documentação de origem recomenda compor comtransaction_ideend_to_end_iddo estorno, porémevent.idnesse evento aponta para o UUID do cash-in original; veja tabela em Referência de eventos.
Estratégia de armazenamento (integrador)
- Tabela/ledger de entregas processadas com chave de idempotência (hash do body canônico ou chave composta acordada, além da assinatura).
- Resposta HTTP 2xx rápida; processamento longo em fila interna.
- Correlação de logs com
X-Correlation-ID(suas saídas) eevent.correlation_id(quando presente no webhook de saída). - Para refund parcial, persistir o
iddo refund-in retornado no201e reconciliar comGET /api/pix/refund/{id}.
O que a API não documenta formalmente
TODO: header de idempotência — ex.: Idempotency-Key em criação — o documento de origem não descreve header HTTP de idempotência além de externalId e boas práticas; confirme com a equipe se existir suporte a Idempotency-Key no gateway.