## Problem Transaction status changes not broadcast to webhooks. ## Task Implement event fan-out. ## Acceptance Criteria - [ ] Events: payment.initiated, settled, failed, refunded - [ ] Fan-out filtered by event type - [ ] Retry with backoff - [ ] DLQ for failures - [ ] Background via JobQueueModule - [ ] Deduplicated by eventId
Problem
Transaction status changes not broadcast to webhooks.
Task
Implement event fan-out.
Acceptance Criteria