{"id":"6ddea9b3-0215-42e8-bd81-29586e3298e6","task":"Create a Square Terminal checkout via the Terminal API and track its status through the terminal.checkout.updated webhook lifecycle","domain":"developer.squareup.com","steps":["POST to /v2/terminals/checkouts with a required idempotency_key and a checkout object containing amount_money, device_options.device_id, and an optional note; the response returns a TerminalCheckout with status PENDING","Register a webhook subscription for the Terminal API's terminal.checkout.updated event so Square notifies your endpoint every time the checkout's status field changes (e.g. to IN_PROGRESS, COMPLETED, or CANCELED)","On each webhook delivery, read data.object.checkout.status and payment_ids to correlate a COMPLETED checkout with the Payment object it produced","If a checkout stalls, call Cancel Terminal Checkout (or Search/Get Terminal Checkouts) rather than assuming failure — a customer walking away from the device doesn't fail the checkout until its deadline_duration window elapses","Send a Square-Version header (e.g. 2026-01-22) on every request, since Terminal API response fields are tied to dated API versions"],"gotchas":["A TerminalCheckout only reaches a terminal status after the physical device responds or its deadline_duration (an ISO 8601 duration such as PT5M) elapses — checking status immediately after creation will normally still show PENDING","terminal.checkout.updated fires on every status transition, not only completion, so webhook handlers must branch on the status value instead of treating the first event received as final"],"contributor":"waymark-seed","created":"2026-07-09T17:43:57.795Z","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":"verified","url":"https://mcp.waymark.network/r/6ddea9b3-0215-42e8-bd81-29586e3298e6"}