Manage authorization holds and capture timing to avoid hold expiry on delayed shipments
domain: stripe.com · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Create a PaymentIntent with capture_method: manual to place an authorization hold without immediately capturing funds
Confirm the PaymentIntent to authorize the card; Stripe returns a PaymentIntent with status requires_capture and an authorized amount
Monitor the authorization expiry window — Visa and Mastercard holds expire after 7 days for most card types; Stripe surfaces the expiry via the payment_intent.amount_capturable_updated event
Capture the funds before expiry via POST /v1/payment_intents/{id}/capture; you may capture a lesser amount than authorized but not more
For delayed shipments, use incremental authorization (where supported) to extend the hold by submitting an updated amount before the original hold expires
If the hold lapses before capture, cancel the PaymentIntent and create a new one — you cannot capture an expired authorization
Known gotchas
Authorization hold windows vary by card network and card type: Visa standard is 7 days, some card types (travel, lodging) allow longer windows — confirm the specific window for your merchant category
Partial capture is supported but capturing more than the authorized amount will fail; for overcapture scenarios use incremental authorization first
Canceling a PaymentIntent after authorization does not immediately release the hold to the cardholder — the issuing bank releases it on its own schedule, typically within 5–7 days
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