How can I use Stripe to delay charging a customer until a physical item is shipped?

After further research, it seems there's no way to delay capturing a charge past the 7 day authorization window.

But here's one way to delay a charge:

  1. Tokenize a credit card using the stripe.js library
  2. Create a new stripe customer passing in the token as the "card" param

An example from the Stripe FAQ: https://support.stripe.com/questions/can-i-save-a-card-and-charge-it-later

Note that the longer you wait between tokenizing a card and actually charging it, the more likely your charge will be declined for various reasons (expired card, lack of funds, fraud, etc). This also adds a layer of complexity (and lost sales) since you'll need to ask a buyer to resubmit payment info.

I'd still like to confirm that a certain amount can be charged (like a "preauthorization"), but this lets me at least charge the card at a later date.