What “confirmed” means for a USDC payment.
From wallet approval to a paid order: the checks behind a clear payment status.

A transaction hash is the beginning
When a wallet submits a transaction, the network may still be processing it. A checkout that immediately says “paid” turns a pending action into a promise it has not verified.
OurPay shows confirmation progress while it checks the transaction. A paid order should follow the verified receipt and the required network confirmations.
Check the transfer, not just the token symbol
A receipt needs to match the expected network, token contract, recipient and amount. Token names are not unique, and different assets can share the USDC label. The configured token address is part of the payment’s identity.
The same transaction must not fulfill multiple orders. Pending, failed, expired and mismatched transfers need their own handling so that uncertainty does not become an accidental sale.
Make the waiting state useful
The buyer should be able to see that a transaction was submitted and that confirmation is in progress. If a network is slow, the page should explain the current state without asking for another payment unnecessarily.
A completed order and its receipt should remain available after the waiting screen is gone. That makes support easier for both the buyer and the seller.
Test the failure paths too
A successful small payment validates one path. It does not prove that every supported network, wallet, retry and cancellation behaves identically. We treat network activation and live verification as separate steps in the rollout.
The product should be just as clear when a payment cannot complete as it is when one succeeds.