Documentation Index
Fetch the complete documentation index at: https://docs.pagamentos.dev/llms.txt
Use this file to discover all available pages before exploring further.
O que é idempotência?
Idempotência garante que uma operação produza o mesmo resultado independentemente de quantas vezes seja executada, desde que os mesmos parâmetros sejam usados. Em pagamentos, isso é essencial para evitar cobranças duplicadas em cenários como:- Timeouts — a requisição foi enviada mas a resposta não chegou
- Retries automáticos — o SDK ou seu cliente tentou novamente após um erro
- Falhas de rede — a conexão caiu antes de receber a confirmação
- Double-submit — o usuário clicou duas vezes no botão “Pagar”
idempotencyKey como cidadão de primeira classe
No pagamentos.dev, a idempotencyKey é um campo obrigatório em todas as
operações de mutação — criar, atualizar e cancelar. Ela é passada diretamente
no payload da requisição, junto com valor e metodoPagamento:
idempotencyKey é repassada ao provedor de pagamento de acordo com o
mecanismo suportado por cada um:
| Provedor | Mecanismo | Suporte |
|---|---|---|
| Mercado Pago | Header X-Idempotency-Key | ✅ Completo |
| Woovi | Campo correlationID no body | ✅ Completo |
| AbacatePay | PIX é assíncrono, chave é ignorada | ⚠️ Sem suporte |
Como funciona na prática
Gere a chave antes de chamar a API
A chave deve ser gerada no cliente (frontend ou serviço que inicia a requisição) e armazenada para uso em retentativas:Em operações de update e cancel
Boas práticas
1. Sempre gere uma chave única por operação
Usecrypto.randomUUID() (disponível em Node.js, Bun e navegadores modernos)
para gerar chaves. Nunca reutilize a mesma chave para operações diferentes.
2. Armazene a chave para retentativas
Salve aidempotencyKey no seu banco de dados junto com a transação. Se a
requisição falhar por timeout, você pode retentar com a mesma chave com
segurança.
3. Trate erros de forma idempotente
Em caso de timeout ou erro de rede, retente a operação com a mesma chave. O provedor (Woovi/Mercado Pago) detectará a chave repetida e retornará o resultado original.Referência
AidempotencyKey está disponível nos seguintes tipos de input:
| Tipo | Campo |
|---|---|
ClienteCreateInput | idempotencyKey?: string |
ClienteUpdateInput | idempotencyKey?: string (via Partial) |
CobrancaCreateInput | idempotencyKey?: string |
CobrancaUpdateInput | idempotencyKey?: string |
CobrancaCancelInput | idempotencyKey?: string |
CheckoutCreateInput | idempotencyKey?: string |
A
idempotencyKey é opcional em todos os tipos, mas fortemente recomendada
para operações de criação e atualização. Sem ela, retentativas podem gerar
duplicatas.