#uesteibar - pending payments

1 messages ยท Page 1 of 1 (latest)

woeful agate
#

Can you send me the ID of a payment that you saw this for?

lime cedar
woeful agate
#

Thank you, checking in to those

placid hornet
#

Hi ๐Ÿ‘‹ jumping in to assist. When a Payment Intent fails to collect a payment, it transitions into a state of requires_payment_method as shown in the diagram here that shows the lifecycle of a Payment Intent:
https://stripe.com/docs/payments/intents

Learn about the status and lifecycle of PaymentIntents and SetupIntents.

lime cedar
#

this one isn't in that state right? this one has status requires_confirmation

#

however the stripe dashboard says "The bank returned the decline code transaction_not_allowed"

placid hornet
#

That's because additional requests have been made to update that Payment Intent since the decline was encountered. If a decline occurs, it occurs during the confirmation step of an intent's flow. If you review the response from a confirmation request for that intent that encountered the decline, you'll notice that in that response the Payment Intent had a status of requires_payment_method:
https://dashboard.stripe.com/logs/req_QD9E30Gp4tQgA2

lime cedar
#

that request is done from the Stripe's own "direct link payment" site tho, I have no control over it

#

That's because additional requests have been made to update that Payment Intent since the decline was encountered
which request are you referring to specifically? maybe that can help us pinpoint the problem

placid hornet
#

I'm seeing multiple requests like this one to alter the setup_future_usage parameter:
https://dashboard.stripe.com/logs/req_a9Z8bpOae8uwgt

And then this one that updated the payment method and attempted another confirmation:
https://dashboard.stripe.com/logs/req_8ne0sVxP1hujDW

lime cedar
#

the ones to alter setup_future_usage we do because you folks told us we needed to do that in order to handle indian payments iirc

#

I do see we're making a bunch of them tho, I think only the first one would suffice? Would that prevent these payments from getting stuck in "pending"?

placid hornet
#

Is the pending status that you're referring to something that you're seeing in the dashboard?

lime cedar
#

it says "incomplete" actually sorry

placid hornet
#

Gotcha, and apologies, we aren't as familiar with the dashboard side of things as we primarily focus on the API-side of things in this forum.

lime cedar
#

ah no worrries! same here, this was reported by the accountants in the team

placid hornet
#

So looking at this Payment Intent, it seems to be associated with an Invoice that was created for a Subscription, is that correct?

lime cedar
#

yes that's correct, however since those are indian customers that didn't manage to pay with their stored CCs, our account managers are sending "direct payment links" to them so they can pay there

#

and that last one is the payment that is ending up in "incomplete" status

#

there's no way we can move those "incomplete" ones to "failed" so that the customer can attempt to pay again?

placid hornet
#

I'm not familiar with the India-specific requirements, so please let me know if it feels like I'm overlooking a detail about those restrictions, but I believe you could use the Payment Intent to attempt another payment.

You won't be able to cancel the Payment Intent due to the it belonging to an open Invoice, you would have to void the Invoice instead, which I believe would impact the Subscription that generated the Invoice.

lime cedar
#

I think you can't attempt another payment with the same payment intent if it's in "incomplete"

#

that's actually what's blocking our account managers

#

apparently stripe support folks told them that we'd need to set error_on_requires_action: true on the payment intent, however that means that cards that require authentication wouldn't work, so it's a no-go for us

crude parcel
#

๐Ÿ‘‹ stepping in here as Toby needs to step away. Let me catch up

lime cedar
#

thanks for your help @placid hornet! ๐Ÿ™‡

crude parcel
#

Okay so am I understanding correctly that you are seeing an issue with attempting to charge a PaymentIntent again that requires 3DS?

lime cedar
#

nope, our issue that those PaymentIntents get stuck in "incomplete" status after an attempted charge for which the bank returned transaction_not_allowed

#

and that blocks the customer from attempting paying again

crude parcel
#

The "incomplete" status is merely a Dashboard status though

#

That shouldn't stop a customer from paying. How is the payment being attempted?

#

Like when you say "it blocks the customer from paying"... where are they blocked exactly?

lime cedar
#

let me check with our account managers ๐Ÿ‘

crude parcel
#

Sounds good! Let me know

lime cedar
#

apparently the problem is that the invoice is stuck in "pending", and they can't retry charge or anything else

crude parcel
#

Got it, and they are attempting to retry the charge via the Dashboard?

lime cedar
#

yes, but it doesn't show any option to do so in the pending invoice

crude parcel
#

Got it, yeah I don't think we allow you to attempt to trigger a new charge via the Dashboard if 3DS has been triggered since it would just hit the same state (requiring 3DS to be completed).

#

If an invoice's payment requires 3DS then the customer has to be brought on-session to complete 3DS.

lime cedar
#

how can we do that? we were advised to set "setup_future_usage: off_session"

crude parcel
#

Hmm no that won't make any difference for the payment once it requires 3DS. You would use that when collecting cards, however Indian cards have specific regulations where they need to complete 3DS each time. Have you given a read through https://stripe.com/docs/india-recurring-payments?

#

If not, recommend looking at that. However for this specific situation, the easiest way to fix this specific invoice is to send the Hosted Invoice Page to the customer for them to complete 3DS.

#

Ah you do already have your settings enabled to send emails to your customers when 3DS is required

#

So that is another way for this to be handled automatically.

lime cedar
#

yeah we do that already, but I think the issue in this case is that our account managers can't manually go and cancel that payment attempt (the one that is incomplete)

#

so the invoice is stuck in "pending" forever

#

in this case the UI says "The bank returned the decline code transaction_not_allowed", wouldn't it make sense in that case that the payment is deemed failed?

#

why does it stay in "incomplete"? I don't think the customer can take any action to complete the payment at this point

crude parcel
#

They can take action... you can bring them on-session and have them complete 3DS.

#

So for instance if you don't want to use the Hosted Invoice Page, you would give them a link to your website where you would use confirmCardPayment to use the Stripe.JS SDK to handle 3DS for that PaymentIntent

#

So the payment is still technically pending because it is waiting for 3DS

lime cedar
#

hosted invoice page is fine, that's where they attempted that payment from actually

#

however what they're trying to do is to mark the payment as failed so that the invoice goes to "unpaid"

crude parcel
#

Gotcha. Do you want to allow payment to be attempted again in the future? Or do you want to cancel the PaymentIntent?

lime cedar
#

trying to get hold of them, brb ๐Ÿ˜„

crude parcel
#

๐Ÿ‘

lime cedar
#

I'll probably come back in the morning since everyone is off now, is it fine if I just bump this thread then?

crude parcel
#

We will archive the thread but someone will be around to help! Just mention the thread and that you would like to continue discussing.

lime cedar
#

will do that, thanks!

#

ah, managed to talk to someone

#

what they want at this point is to move the invoice back to "open", instead of "pending"

crude parcel
#

Why?

lime cedar
#

because sometimes they manage to charge the customer in a different way, so they want to then sometimes mark it as "paid outside of stripe"

#

other times, they'll want to mark the invoice as unpaid

crude parcel
#

Got it

#

Hmm okay yeah I don't think you can do this via the Dashboard. I believe this requires changing the status of the PaymentIntent (either canceling it or attempting to confirm it again which should move it back to requires_payment_method) which requires the API

#

This feels like a Dashboard gap to me at the moment so I'll follow up with a ticket internally about this.

#

To request we get that added.

#

But for now, I think you will need to action it via the API

lime cedar
#

hm, is there an API endpoint I can hit to cancel a payment intent?

crude parcel
#

So you would only want to do that if you were going to mark it as paid out of band for instance

lime cedar
#

aham, I see

#

if we go and try to "confirm" instead, then what happens?

crude parcel
#

Yeah I believe if you confirm then the request should error and the PaymentIntent should move back to requires_payment_method. Not positive though. I will need to test this real quick to be sure.

lime cedar
#

let me also check if the "cancel" option works for us ๐Ÿ‘

crude parcel
#

Hmm actually this is strange... your PaymentIntent should be in requires_action not requires_confirmation

#

I think this may just be an India-specific edge case here that throws it into a tricky state

lime cedar
#

oh, interesting

crude parcel
#

Checking with a colleague for the best way to handle this.

lime cedar
#

I'm taking off now, but I'll read the responses here ๐Ÿ™Œ thanks!

scenic ginkgo
#

HI ๐Ÿ‘‹ I stepped in for Bismark.
If you want to collect payment for this some Stripe support staff may be able to help you unblock this Invoice. If you do not mind, you can mark this invoice as void through the API.
https://support.stripe.com/contact/email

bronze tangle
#

@lime cedar I've unarchived this thread

#

Do you have any follow up question?

lime cedar
#

thanks!

stray totem
#

Hi! I'm taking over this thread. Could you try to sumarize your question?

lime cedar
#

we have this invoice (https://dashboard.stripe.com/invoices/in_1L699ZIYOry9WQXwvvPOUruH) stuck in "pending" state and we can't do anything with it on the Stripe dashboard. How can we move it back to "open" for example?

We end up with invoices in this state sometimes when indian customers try to pay via the hosted invoice page. Your colleague was surprised that the payment intent was in requires_confirmation and not in requires_action

stray totem
#

Thanks! Give me a few minutes to look into this.

#

Yes I confirm I see requires_confirmation for the payment intent. Did this always happen for indian customers?

lime cedar
#

it only happens sometimes

stray totem
#

That's odd. Have you tried what my colleague suggested earlier:

If you want to collect payment for this some Stripe support staff may be able to help you unblock this Invoice. https://support.stripe.com/contact/email
I think they will be best equipped to help with this type of issue.

elder grove
#

it's our policy to archive threads so the handover is smoother

lime cedar
#

I didn't even get a change to explain that we did try with Stripe support before coming to this chat, and they didn't provide any solution either. They said this: #984461937838522390 message

elder grove
#

the thread was quite for some time before my colleague archived it

#

what can I do to help you now? could you please summarize the issue

lime cedar
elder grove
#

I'm terribly sorry @lime cedar but I can't read two day's worth of messages in the thread. thank you for pointing me out to the summary I will take a look and try to bring you as much information as possible

velvet narwhal
#

yep I remember my colleague asking about this internally yesterday

#

we concluded there's likely something wrong with that invoice and you need to write in to our support team so they can escalate it to the product team since we have ways to manually update the invoice state to the correct one

#

unfortunately that might mean pushing through the first line of support to get escalated to the right people, let me see if I can help with that...

lime cedar
#

I'll reach out to them again then ๐Ÿ‘

velvet narwhal
#

I can't find any support case from you since last week I'm afraid. If you write in an email on https://support.stripe.com/?contact=true and mention my name (karllekko) I'll find the email and move it around