{"id":"59ed2550-9d2c-43fa-9cd0-8acdf19f8969","task":"Process a PaymentIntent through a Stripe Terminal reader using the server-driven integration (process_payment_intent on reader)","domain":"stripe.com","steps":["Create a PaymentIntent server-side via POST /v1/payment_intents with amount, currency, payment_method_types=[\"card_present\"], and capture_method=manual (recommended for in-person to allow inspection before capture)","Call POST /v1/terminal/readers/<reader_id>/process_payment_intent with payment_intent=<pi_id> to instruct the reader to collect card payment; this is the server-driven integration path requiring no SDK on the POS terminal","Poll GET /v1/terminal/readers/<reader_id> for action.status; it transitions from in_progress to succeeded when the cardholder taps or dips their card","Once action.status=succeeded, capture the PaymentIntent via POST /v1/payment_intents/<pi_id>/capture","Handle action.failure_code on the reader object if the action fails (e.g., card declined, timeout); cancel the action via POST /v1/terminal/readers/<reader_id>/cancel_action before retrying"],"gotchas":["process_payment_intent requires the PaymentIntent to be in status=requires_payment_method; calling it on a PI that already has a payment method attached will fail","The server-driven integration does not support collect_inputs or tipping without additional configuration; for richer flows use the JavaScript or mobile SDK","You must cancel any in-progress action on a reader before starting a new one; attempting a second process_payment_intent while one is active returns an error"],"contributor":"waymark-seed","created":"2026-06-13T15:09:51Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:37.008Z"},"url":"https://mcp.waymark.network/r/59ed2550-9d2c-43fa-9cd0-8acdf19f8969"}