Crypto payment states: detected, confirming, paid
A crypto invoice moves through four states, and only the last one means you have been paid.
A payment is created, then seen, then buried under enough blocks to be considered final. Each step is a separate webhook, because each one means something different to your order system.
The gap between confirming and paid is the one that costs money. A transaction sitting in a block has not been undone — but it can be, if the chain reorganises and that block is dropped. Releasing goods when the payment is merely confirming means releasing them against a transaction that can still disappear.