POST /v1/issuing/cards with type=physical and include the shipping object with name, address (full postal address), and optionally service (standard, express, priority) and carrier
The card enters status=inactive and shipping.status=pending until Stripe ships it; poll or listen for the issuing_card.updated webhook where shipping.status transitions to shipped
When shipping.status=shipped, the shipping.tracking_number and shipping.carrier fields are populated; surface these to the cardholder
The card remains status=inactive until activated; activate by calling POST /v1/issuing/cards/<id> with status=active, typically after cardholder receives and confirms the card
For replacement cards (lost/stolen), create a new card with replacement_for=<original_card_id> and replacement_reason; the original card should be canceled first
Known gotchas
Physical card shipping is only available in supported regions; check Stripe Issuing country support before relying on physical cards
Card personalization (custom logo, design) requires a separate card design configuration in the Stripe Dashboard and can add to production timelines
Shipping times vary by carrier and service level; do not expose carrier commitments to end users without checking current Stripe-supported SLAs
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