Reference
Idempotency
Prevent duplicate transactions with idempotency keys. Every payment and payout request must include a unique key.
Idempotency keys prevent duplicate transactions. Every payment and payout request must include a unique idempotency_key.
Generating Keys
// Use order ID and timestamp
const idempotencyKey = `order_${orderId}_${Date.now()}`;
// Example: "order_12345_1705312800000"
// Or use UUID
const { v4: uuidv4 } = require('uuid');
const idempotencyKey = uuidv4();
// Example: "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"Behavior
- Same key, same request: Returns cached response (no duplicate charge)
- Same key, different request: Returns
409 Conflict - Keys expire: 24 hours
Best Practices
- Generate a unique key per business transaction
- Store the key with your order records
- Never reuse keys across different amounts or recipients
- Use consistent formatting (e.g.,
order_12345_payment)
Recommended Patterns
order_{order_id}_{event}
payout_{user_id}_{timestamp}
checkout_{session_id}Avoid using just timestamps (too generic, collisions possible), random() (not reproducible for retries), or short IDs (no context about operation).
