Cash-in (recebimento)
Estados:
Cash-out (pagamento)
Estados:
Idempotência
Use external_id como identificador único da sua transação. Se você enviar a mesma cobrança 2x com o mesmo external_id:
- Se a primeira ainda está
pending/processing/paid → retornamos erro 409 Conflict (ou 401 com mensagem específica em endpoints legados).
- Se a primeira está
failed → permitimos retentar com mesmo external_id.
Use UUIDs ou IDs únicos do seu sistema (pedido-001, withdrawal-abc123) — nunca timestamps puros (que podem colidir em alta concorrência).