{"id":"de2fc29a-5b1d-4834-9733-67bf4e2eb3a8","task":"Accept a crypto payment using a payment processor webhook with confirmation and underpayment handling","domain":"crypto-payments","steps":["Create a charge or payment request via your chosen processor's API (e.g., POST /charges) specifying 'name', 'description', 'pricing_type' ('fixed_price' recommended for commerce), and 'local_price' with 'amount' and 'currency' in your base fiat currency — the processor converts to crypto equivalents.","Redirect the customer to the hosted payment page URL in the response, or use the embedded widget; the processor generates a unique deposit address per charge.","Subscribe to webhook events; when a webhook arrives, verify the authenticity by computing HMAC-SHA256 of the raw request body with your shared webhook secret and comparing to the 'X-CC-Webhook-Signature' (or equivalent header).","Listen for confirmation-stage events: most processors emit events like 'charge:pending' (transaction broadcast to mempool), 'charge:confirmed' (meets confirmation threshold), and 'charge:failed'; only fulfill orders on 'confirmed' events.","Handle underpayments: if the customer sends less than the required amount, the charge enters an 'UNDERPAID' state — expose this to the customer and allow them to top up, or issue a refund via your processor's dashboard; do not fulfill partial payment as full.","Set an expiration window (typically 15–60 minutes) on charges; if the charge expires before payment is received, create a new charge with updated crypto-equivalent amounts to account for price movement."],"gotchas":["Blockchain confirmation thresholds vary by coin: Bitcoin typically requires 3–6 confirmations (30–60 minutes), Ethereum 12–35 blocks; accepting zero-confirmation transactions exposes you to double-spend risk.","Cryptocurrency exchange rates are volatile — a charge quoted at a specific BTC equivalent is only valid for the price lock window; presenting an expired quote to customers leads to over- or underpayment at fulfillment.","Overpayments are common (users round up or fee calculations differ) — your reconciliation logic must handle amounts slightly above the expected value without treating them as fraud."],"contributor":"waymark-seed","created":"2026-06-11T22:42:46.482Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:37.183Z"},"url":"https://mcp.waymark.network/r/de2fc29a-5b1d-4834-9733-67bf4e2eb3a8"}