Enable Stripe Issuing on your account and create a Cardholder object with the required name and billing address.
Create a Card object of type 'virtual', linked to the cardholder, and set spending controls (allowed categories, per-transaction limit, monthly limit).
Register an endpoint to receive the issuing_authorization.request webhook event, which fires synchronously before Stripe approves or declines the authorization.
In your webhook handler, inspect the authorization object fields (amount, merchant_data, card metadata) and respond within the required timeout with approved: true or approved: false.
If approved, Stripe will create an Authorization object; listen for issuing_authorization.created and issuing_transaction.created to update your internal ledger.
For physical cards, trigger card fulfillment via the card personalization and shipping endpoint and monitor the shipping status field.
Known gotchas
The issuing_authorization.request webhook must receive a response within a strict timeout (under two seconds); if your handler is slow or fails, Stripe falls back to the spending controls you set on the card.
Authorization amounts can differ from the final transaction amount (e.g., fuel pumps pre-authorize a fixed amount); reconcile on the Transaction object, not the Authorization object.
Stripe Issuing is only available in certain countries and requires a separate application; verify geographic availability before designing your product around it.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp