Stripe: customers cannot pay an invoice with credit card - stripe-payments

When I send an Invoice to a Customer by email, customer is able open an Invoice, but it's not possible to pay with credit card, so, this invoice seems like useless at all, because there is no option to pay it.
Some our customers can connect bank account, but by default all customers have to be able to pay with credit card.
We don't need to store customers' cards on our side, just allow to use cards.
What is easiest way to allow using credit cards for a customer? I see different options in Stripe doc:
Create PaymentMethod, then set invoice_settings.default_payment_method for a Customer
Create Sources, then set it to Customer.default_source.
But I'm not sure if it's possible to create payment method or source without card details.
There is a chance that our Stripe account is configured incorrectly, not sure what exactly I have to check.

Related

Taking fee and payment reservation Stripe

Pretty new to Stripe, we're building an online marketplace. Each user can buy assets from any other user. We also take fees for each payment.
We go with connected accounts. Seller goes through the onboarding flow (create connected account, create account link etc), while buyer is registered as a customer of our platform on Stripe.
Now, whenever buyer makes a payment we create a payment intent to pay to us (amount + 20% fee via):
stripe.paymentIntents.create(params)
Then we create new payout to seller (amount) using source transaction from payment intent above:
await stripe.transfers.create({
amount: payment.amount * 100,
currency: payment.currency,
destination: seller.stripeAccountId,
source_transaction: sourceTransaction,
});
Is this the preferred and best way of handling this? In terms of time, we need first to wait for payment to settle to our bank account to be able to payout seller?
Is there any better way of doing this instead of manual payouts?
Is there a way to make direct transfer to connected account when user does payment?
I tried with payment intent, specifying connected account id in request, but API is complaining that customer id is on our platform but account id is specified, so it's not possible obviously.
Also, manual payouts would come handy to simulate payment escrow/deposit. When user create a request for some asset, we would immediately transfer certain amount to our account, like reserving that amount. And if the seller accepts the offer, we would do a payout. If seller rejects the offer, we would do payout to the buyer, giving him back his money.
Does this make sense?
Thanks in advance
You don't need Payout (yet) in your use case. You are doing Separate Charges and Transfers, and fund simply moves from your Account's balance to Connected Account's balance. It hasn't been out of your Connected Account's balance to your Connected Account's bank account yet, which is called "Payout".
In another word, Payout is separated process than Charges and Transfers. Charges and Transfers can happen immediately, and Payouts normally happen later on a daily basis or manually.
Find more explanation on Connect Balance.
There is also Destination Charge which is simpler than Separate Charges and Transfers. I recommend Destination Charge unless you have specific reason to use Separate Charges and Transfers, ie. you need to transfer to multiple Connected Accounts on one payment.

How to use customer credit balance without invoice in stripe?

I want to create a system in bubble.io app with stripe, in which:
the customer while purchasing products will pay though their credit balance but the invoice should not generate (or without invoice).
if it possible, then how? and if not then:
customer should transfer money to stripe platform balance and whenever they make a purchase the money should transfer from stripe platform balance to the seller.
any solution?
The customer's credit balance automatically applies toward the next invoice of the customer. So if you are not using invoices, it won't work. The alternative is to keep track of the customer's balance on your end, and change the amount they need to pay accordingly.
If you want the platform account to charge the customer, and then later send the funds to the connected account(s), then you should use separate charges & transfers.

Stripe - How to get purchaser's information for a charge with Connect (Express)?

I've set up a test charge using stripe.Charge.create() and it is working, i.e. I can see the dollar amounts processed in the Connect test dashboard. It appears to be money going from the tok_visa to a dummy Stripe account I set up.
charge = stripe.Charge.create(
amount=1000,
currency="usd",
source="tok_visa",
application_fee_amount=123,
transfer_data={
"destination": "{{CONNECTED_STRIPE_ACCOUNT_ID}}",
}
)
For a marketplace type platform, I need to be able to send funds from the purchasing user to the selling user, however.
Would I need to get the purchaser's account (or some other object?) to use as the "source" in the charge?
How do I get that to put it into the "source" field?
I feel a little lost in Stripe's docs, so I could be missing something. Thank you for any tips.
I need to be able to send funds from the purchasing user to the
selling user, however
If by 'purchasing user' you mean a cardholder customer of your marketplace, this is exactly what you have. tok_visa here represents a credit card, that you accept through a payment page.
If instead you mean, the purchasing user is another connected account in the marketplace, you can either :
use an account debit to debit one account, and then transfer to
another.
collect a card from users when they sign up and create a
Customer object for them. You can then charge that customer as needed
like in your example code. You need to maintain a link in your system that
'customer cus_xxx is also my marketplace user acct_xxx'

Can Stripe support Offline Payments?

I am using Stripe for online payments but also users can pay offline (cash or check). I want to centralize all my invoices/charges in one place (Stripe).
I am not sure if I can add offline payments (cash or check) to stripe or not. I guess I can if I created customers, invoices, charges with livemode=false for my live keys.
Is this feasible and will Stripe accept having some (customers, invoices and charges) with livemode=false and others with livemode=true?
If yes, should I fill fake credit card info or should I set it as nil?
Stripe does not allow you to create a Subscription on a Customer if you don't have a credit card setup. More accurately, it does not allow you to create a subscription if a customer does not have a way to pay for the next invoice. So for offline payments, you could update the 'account_balance' on the customer to have a negative value equal to the amount the customer wired (credits). Stripe will then allow you to create a subscription for the customer because it knows that the customer has enough account balance to pay for the next invoice. This post has more details.
We don't currently support offline payments, so you'll want to look at a separate accounting system for those payments.
That said, it's totally understandable that you'd want to keep this data in one place. You might be interested in using our webhooks system to offer live updates to your accounting system without directly touching the code that creates the charge in Stripe.

Authorize.net credit card payment for non US customers

I have a website which gives the posibility to our clients to publish some adds on it. The add is first received and checked internaly by an add editor. Then, we are asking the client for the payement and when the payement is received, the add is published.
My goal is to give the possibility to our clients to pay with their credit card. For example, send them the invoice by email with the link (or button) to a webpage where they could introduce their Credit Card number etc.
The company is situated in switzerland and our Bank too.
I am reading actually a lot about the Authorize.net but apparantly, we shuld have a bank in US ? Our clients are based worldwide, can this be a problem and reason for extra fees.
Can we easly send invoices by email with the link for credit card payment?
Thank you very much.
I am reading actually a lot about the Authorize.net but apparantly, we shuld have a bank in US? Our clients are based worldwide, can this be a problem and reason for extra fees.
Authorize.Net is currently only available in the US so you must have a US merchant account to use their services.
Can we easly send invoices by email with the link for credit card payment?
Yes.

Resources