e-commercestripe-payments

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


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:

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.


Solution

  • 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.