Configure a dedicated synchronous webhook endpoint in Issuing settings, separate from the regular webhook endpoint, to receive issuing_authorization.request events
Respond directly to the issuing_authorization.request event with HTTP 200, a valid Stripe-Version header, and a JSON body containing the required boolean approved field
Optionally include an amount in the response when pending_request.is_amount_controllable is true, to control how much is held for a partial approval
Respond within 2 seconds; Stripe applies the account's configured timeout or Autopilot behavior to auto-approve or auto-decline if it does not receive a response in time
Subscribe to issuing_authorization.created and issuing_authorization.updated on the regular webhook to monitor request_history.reason for webhook_error or webhook_timeout, since Autopilot can approve on your behalf during an outage
Test locally with the Stripe CLI (stripe listen plus stripe trigger issuing_authorization.request) before relying on dashboard-configured timeout behavior in production
Known gotchas
Do not treat approved: true as proof your own logic ran; check request_history.reason, since Autopilot-approved authorizations also report approved: true
If the Issuing balance has insufficient funds, Stripe denies the authorization and never sends the issuing_authorization.request event at all, so there is no chance to intervene
The direct approve/decline API methods are deprecated in favor of responding to the webhook itself; new integrations should not be built around the old approve/decline API calls
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ 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?