How can I use Stripe to delay charging a client before sending physical goods?

I am creating an online marketplace that sells shipping products. The site will be similar to Etsy, which will connect merchants with buyers.

I would like to be able to charge the customer card ONLY when the goods are shipped by the seller in order to avoid chargebacks and provide a payment method similar to Amazon. It will also help us avoid refunds and payment disputes if the merchant slowly sends or removes from it. In some cases, the goods will take more than 7 days to make to order and shipped

Here is an example timeline:

  • 1/1/2014 - The customer adds $ 75 items to the basket and clicks “buy”. Enters credit card information.
  • 1/1/2014 - The customer card is verified and a temporary deduction of $ 75 is placed on their card. The order is sent to the merchant for execution.
  • 1/14/2014 - A merchant ship of goods for customers and adds delivery tracking information
  • 1/14/2014 - A customer fee is charged for the full amount, and the seller receives a commission of $ 75.

I plan to use Stripe Connect to process payments, but I don’t know how to postpone a payment fix for more than 7 days. Any thoughts? I do not want to raise funds under my own account and use payments, as this is likely to be contrary to the laws on the transfer of money. Any help would be appreciated!

EDIT: Quora seems to have a similar question here, but the answers don't seem to concern the case where merchant ships, but the payment failed.

+7
stripe-payments e-commerce
source share
4 answers

After further research, it seems that there is no way to postpone the charge capture for the 7-day login window.

But here is one way to delay the board:

  • Identify a credit card using the stripe.js library.
  • Create a new client strip passing in the token as the "card" parameter

Frequently Asked Questions Example: https://support.stripe.com/questions/can-i-save-a-card-and-charge-it-later

Please note that the longer you wait between the subscription to the card and its actual collection, the more likely it is that your payment will be rejected for various reasons (expired card, lack of funds, fraud, etc.). It also adds a level of complexity (and lost sales), since you need to ask the buyer to resend the payment information.

Nevertheless, I would like to confirm that a certain amount can be withdrawn (for example, “preliminary authorization”), but this allows me to at least charge the card later.

+5
source share

Celery has built a service to help you do this with Stripe. They are very easy to use, but note that they charge 2% per transaction.

0
source share

in fact, you can save the user token and pay later with tracking information

# get the credit card details submitted by the form or app token = params[:stripeToken] # create a Customer customer = Stripe::Customer.create( card: token, description: 'description for payinguser@example.com ', email: ' payinguser@example.com ' ) # charge the Customer instead of the card Stripe::Charge.create( amount: 1000, # in cents currency: 'usd', customer: customer.id ) # save the customer ID in your database so you can use it later save_stripe_customer_id(user, customer.id) # later customer_id = get_stripe_customer_id(user) Stripe::Charge.create( amount: 1500, # $15.00 this time currency: 'usd', customer: customer_id ) 
0
source share

 <?php require_once('stripe-php/init.php'); \Stripe\Stripe::setApiKey('your stripe key'); $token = $_POST['stripeToken']; $stripeinfo = \Stripe\Token::retrieve($token); $email = $stripeinfo->email; $customer = \Stripe\Customer::create(array( "source" => $token, "email" => $email) ); ?> 
-3
source share

All Articles