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

hberg picture hberg · Feb 24, 2014 · Viewed 16k times · Source

I'm in the process of building an online marketplace which sells shippable goods. The site will be similar to Etsy, which will connect merchants with buyers.

I'd like to be able to charge a customer's card ONLY when an item is shipped by a merchant to avoid chargebacks and provide an Amazon-like payment experience. This will also help us avoid chargebacks and payment disputes in case a merchant is slow to ship or flakes out. In some cases, the goods will take more than 7 days to be custom manufactured and shipped out

Here's an example timeline:

  • 1/1/2014 - Customer adds $75 worth of items to their cart and clicks "buy". Enters credit card info.
  • 1/1/2014 - Customer's card is verified and a $75 temporary hold is placed on their card. Order is sent to merchant for fulfillment.
  • 1/14/2014 - Merchant ships goods to customer and adds shipping tracking info
  • 1/14/2014 - Customer's card is charged for the full amount and merchant receives $75 minus fees.

I plan to use Stripe Connect for payment processing, but am not sure how to delay capturing a payment for more than 7 days. Any thoughts? I don't want to aggregate the funds under my own account and use payouts since this will likely run afoul of money transmission laws. Any help would be appreciated!

EDIT: It looks like Quora has a similar question here , but the answers don't seem to deal with the case where a merchant ships out the item but the payment fails.

Answer

hberg picture hberg · Mar 27, 2014

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.