'Just send a webhook' is the four most underestimated words in API design.
Retries mean the receiver must be idempotent.
At-least-once delivery means duplicates are normal, not a bug.
Signatures aren't optional the moment money is involved.
Ship the signing secret and an idempotency key from day one. Retrofitting them is a migration nobody enjoys.