Register a webhook endpoint in your Stripe dashboard or via the API and subscribe to the issuing_authorization.request event.
Stripe sends the authorization payload synchronously when a cardholder swipes or taps; your endpoint must respond within ~2 seconds.
Parse the authorization object to extract card ID, merchant data (MCC, name, country), amount, and currency.
Apply your approval logic: check balance, merchant allowlist, per-transaction limits, or any domain-specific rule.
Respond with HTTP 200 and a JSON body containing approved: true or approved: false; optionally include amount to override the authorized amount.
If your endpoint does not respond in time, Stripe falls back to the card's spending controls — ensure a fast response path and alert on latency spikes.
Known gotchas
Authorization webhooks are synchronous and blocking — Stripe holds the authorization open waiting for your response; a slow or failed handler defaults to your card-level settings, which may be more or less permissive than intended.
Test authorization webhooks using Stripe's test issuing simulator to trigger synthetic authorizations before going to production.
Approved amount overrides must not exceed the merchant's requested amount; attempting to approve more than requested will be rejected by the network.
Give your agent this knowledge — and 15,800+ more routes
One MCP install gives any agent live access to the full route map across 5,800+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?