I'm building ChainPay, a stablecoin checkout for WooCommerce, SaaS products, Telegram sellers, and agent workflows.
The wallet UI is only one part of the problem. The part I keep coming back to is payment state: webhook retries, late payments, partial payments, duplicated events, and what happens when the customer closes the checkout tab.
Here is the checklist I am using right now:
- exact payment within the expiry window
- payment after expiry
- partial payment
- overpayment
- duplicate webhook delivery
- webhook delivered before the customer returns to the merchant site
- order cancelled before payment confirmation
- chain confirmation delay
- customer pays from an exchange and cannot control the exact timing
For state, I am leaning toward:
pending -> confirming -> paid
with separate terminal states for expired, underpaid, overpaid, and cancelled.
I wrote a short implementation note here for context: https://chainpay.hashnode.dev/webhook-idempotency-for-stablecoin-checkout
If you have built crypto checkout, marketplace payments, billing webhooks, or webhook-heavy SaaS integrations: what edge cases would you add before calling this production-ready?
Top comments (0)