1. Payment processor (Coinbase Commerce, NOWPayments) — handles everything but takes 0.5-1% per transaction. On a $10k payment that's $50-100 just for confirmation.
2. DIY with Alchemy/Infura webhooks — poll for Transfer events, match amounts, track confirmations, handle reorgs, build retry logic. Took me ~2 weeks and it's still brittle.
Is there a middle ground? Something that just does the verification part — "tell me when X amount arrived at Y address" — without the custody/checkout/fee overhead? Curious how others are handling this, especially on L2s like Base where tx costs are negligible but verification infra is the same complexity as mainnet.
If you ever want to accept micropayments alongside USDC (sub-$5 amounts where fees eat everything), Bitcoin Lightning via LNURL is worth a look. Zero fees, instant, no KYC. coinos.io provides free Lightning addresses. I use it for a small API service — cvscanner@coinos.io works as a payment address. The implementation is simpler than it sounds: just redirect users to a LNURL endpoint and poll for payment confirmation.
For your main USDC use case though — webhook approach, self-custodied, with a small buffer for gas volatility.