#camiloa17 - mandates

1 messages ยท Page 1 of 1 (latest)

gentle cryptBOT
full onyx
#

Hi ๐Ÿ‘‹

shrewd plank
#

Hello Snufkin ๐Ÿ™‚

full onyx
shrewd plank
#

Yeah the documentation is not as straightforward on this part ๐Ÿ˜ฆ

#

for BACS and ACSS is the same?

full onyx
shrewd plank
#

Right now we are moving to the new payment element but I still have to maintain the old implementation.

full onyx
#

But I'm not seeing mandates mentioned

shrewd plank
#

Exactly but still we need mandates hehe

full onyx
shrewd plank
#

Snufkin but do you have like a flow? for example ACH -> Show the input -> connect the bank account -> accept mandate.

full onyx
#

Not that clearly but, at least for ACH, we do show the JS functions you need to call

shrewd plank
#

But the thing is the documentation doesnt mention what to do with expired mandates or mandates that were accepted.

#

For example recently we got an error for an expired mandate.

#

And another for passing a mandate id when confirming a payment.

full onyx
#

While we don't have clear docs for Bacs and ACSS I can see in the JS reference doc that Stripe.js has confirmation methods for each of those payment methods.

shrewd plank
#

yeah that is true.

full onyx
#

But I just built a test ACH DD integration myself and the bit about the mandates did feel kind of tacked on and not as fleshed out as I would like.

shrewd plank
#

That is true, BTW I work for Samsara. I don't know if we can have a call to tackle some of the questions per payment method. Would love to be able to showcase it.

full onyx
#

Unfortunately we don't offer calls here. It isn't one of our integration engineer workstreams.

shrewd plank
#

ahhh ok good to know.

full onyx
#

But reviewing the Payment Method specific docs and their child pages seems to have a decent amount of information to get started testing some integration approaches

shrewd plank
#

yeah we already have them running the only thing is testing out mandates. How can we test a revoked mandate.

full onyx
#

Ah, in that case the best way to simulate that is to create a dispute on a payment method with an active mandate

#

The dispute revokes the mandate in Stripe

shrewd plank
#

will this work even when the tests account numbers or it needs to be a real account.

full onyx
#

Well, gimme a sec I'll test this

shrewd plank
#

Thanks a lot

#

๐Ÿ™‚

full onyx
#

Specifically:

{
  "error": {
    "message": "This PaymentIntent requires a mandate, but no existing mandate was found. Collect mandate acceptance from the customer and try again, providing acceptance data in the mandate_data parameter.",
    "payment_intent": {
      ...
    }
    "type": "invalid_request_error"
  }
}
shrewd plank
#

ok, thanks but to test it is the way you say, to dispute a transaction.

full onyx
#

Unfortunately that is how it works with live transactions but our test data for Disputes does not include ACH payment methods

shrewd plank
#

So is this like an asynchronous action? They client gives the information, we show the mandate and the client accepts and confirms the payment, so for this we need a webhook?

full onyx
#

No, you can confirm synchronously since it's literally the customer looking at some text and saying "I agree"

#

The dispute part involved a webhook because of how async a customer can dispute a charge

shrewd plank
#

when they agree we need to like create the mandate on stripe? or is a mandate that stripe shows the customer and is just passed to the confirmation method.

full onyx
#

They have up to 60 days to do so

#

Using the specific confirmation method with Stripe.js, stripe.confirmUsBankAccountPayment for ACH, creates the mandate

shrewd plank
#

so when we confirm we dont need to pass a mandate id since the confirmation creates the id, right?

full onyx
#

Correct

shrewd plank
#

Ok so I guess for expired mandates we just dont pass the mandate id.

full onyx
#

Yeah, you just collect a new one

shrewd plank
#

And for payment methods that have a mandate we just confirm without passing the mandate id, we got an error on that on France in BACS but I dont know if we need to pass it for the ACH.

full onyx
#

Where are you attempting to pass a mandate ID? Is this using Stripe.js? Server-side?

#

camiloa17 - mandates

shrewd plank
#

Sorry had to check some things here

full onyx
#

No worries

shrewd plank
#

I see the mandate key is optional

#

Ok so this is on the payment intent level, but on stripe.js confirmation level

full onyx
#

Ah, right. Sorry I looked right past it.

shrewd plank
#

yes we are using stripe.js to confirm the payment.

full onyx
#

Once again, not super well covered but we state at the top that you can refer to the Payment Intent API reference doc for the full list of parameters

#

One of which is the mandate you pointed out

shrewd plank
#

O I forgot to mention SEPA

#

For example, this is what happend to one of our customers on friday.

full onyx
shrewd plank
#

Ok so when a mandate is new we pass the id, but I think stripe takes care of that, when is expired we dont pass anything and when is expired we also dont need to pass it so it creates a new one. I am right?

full onyx
#

Correct. If it's expired you just create a new one when confirming a Payment Intent or Setup Intent

shrewd plank
#

So we dont need to pass mandates when confirming basically?

full onyx
#

As long as the payment method has a corresponding mandate record in Stripe

shrewd plank
#

Sorry english is not my first language, I just need to confirm my wording was fine.

#

Ok so stripe handles mandates by itself just that we need to display it to the customer when it is new or expired so they can accept them

full onyx
#

No worries. Yes once you collect mandates and we store them as a record of the customer acceptance then you don't need to provide them again

shrewd plank
#

Awesome thanks Snufkin. Mandates are such a elusive topic.

full onyx
#

I think so too ๐Ÿ˜…

shrewd plank
#

hehehe Oh well we will see how it goes ๐Ÿ™‚ Again thanks for the help