Create a PaymentIntent with 'capture_method: manual' so the authorization is held open without immediate capture.
Enable multicapture on the PaymentIntent using the relevant parameter (check current Stripe docs for the exact field name, as this feature was in limited availability).
When the first shipment is ready, capture a partial amount by specifying 'amount_to_capture' in the capture call; Stripe submits a partial capture to the network.
Repeat partial captures for subsequent shipments, each time specifying the amount for that shipment, until the full authorized amount is captured or the authorization expires.
If the total of all captures will be less than the authorized amount, release the remainder with a cancel call (amount_to_cancel) to free the hold on the cardholder's account.
Monitor the authorization expiry window — uncaptured holds typically expire within 7 days for most card types, though travel MCCs may have longer windows.
Known gotchas
Not all card networks and issuers support multicapture equally; a partial capture on a card that does not support it may result in the authorization being fully closed after the first capture.
Each partial capture generates a separate settlement record and may appear as a distinct line item on the cardholder's statement, which can trigger confusion or friendly fraud disputes.
Authorization holds that linger past network expiry windows result in the issuer releasing the hold even if your system still considers it open — always reconcile authorization age against capture timestamps.
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