#jason_ach-deprecation

1 messages ยท Page 1 of 1 (latest)

runic vergeBOT
#

๐Ÿ‘‹ Welcome to your new thread!

โฒ๏ธ We'll be here soon! Typically we respond in a few minutes, but sometimes we might take a bit longer if the server is busy or if you have a particularly tricky question.

โฑ๏ธ We close idle threads, which makes them read-only. Once a thread is closed it won't be reopened, but you can always start a new thread if you have another question.

๐Ÿ”— This thread will always be available, even after it's closed. You can find it again using Discord's search, or you can save this link: https://discord.com/channels/841573134531821608/1468299771146932255

๐Ÿ“ Have more to share? Add more details, code, screenshots, videos, etc. below.

Below are links to other discussions we've had with you in the past week in case you want to review that information. If your question is related to one of these previous discussions, please provide a comprehensive summary of the current state and what you need help with now. We help many users simultaneously, so a summary allows us to resolve your issue as soon as possible.

formal hatch
#

Hi there, I'll be right with you

wheat bridge
#

thank you

formal hatch
#

Okay so

#

If we never collected a mandate from the customer, does that mean we have to email them letting them know we intend to use their ACH account for offline payments? Or do we need to get explicit permission?

I don't know - I can help with the technical aspects of this migration; what you're doing in the API and so forth

#

When you say you didn't collect a mandate; do you mean that you didn't collect any sort of agreement to charge them in the future when they gave you their bank details (via Stripe)?

wheat bridge
#

correct

formal hatch
#

Okay, I don't know what the proper remediation for that is. We have a support team that are trained on questions related to this topic specifically and I think you need to reach out to them.

I suspect the answer may be that you need to bring them online and collect a mandate from them and recollect payment instrument details but I am not certain.

#

Or, just collect the mandate, rather

wheat bridge
#

at the end of this conversation, if you could share that with me, that would be awesome! Some more technical questions....I noticed when you create the mandate via the /setup_intents endpoint, it creates it in an active state. I'm guessing we need to save the mandate ID of this active mandate so that when we process the offline payments, we pass the active mandate ID along wit the payment intent?

formal hatch
#

No, it isn't necessary to pass the mandate when creating a new payment; it is associated with the Payment Method.

For reasons I still don't understand, we don't expose the mandate on the Payment Method object, though; it is only exposed on the SetupIntent. However, later, if the mandate changes, we emit a webhook event mandate.updated that tells you what changed

#

This usually happens when a mandate is deactivated, in which case the Payment Method is useless and you need to bring the customer online and recollect payment method details

wheat bridge
#

so, when you say payment method, you're referring to objects that have an ID of pm_, correct? Would this still hold true for legacy payment sources, with an ID of ba_?

formal hatch
#

I am not certain but I suspect so because in that case the ba_123 is being used as a Payment Method, and you have to provide mandate data to confirm a PaymentIntent with the ba_123 in the first place

wheat bridge
#

I could be mistaken, but in testing, when I performed the mandate migration, it created a mandate attached to the legacy payment source ba_ and the mandate had an active state with an id of 123, then, I attempted to process an offline payment without attaching the mandate ID, and the mandate on the charge.pending event showed a different mandate ID 456, and this mandate had a status of inactive. If it was attached to the payment method, I would have expected to see the mandate with the id of 123

#

I'm searching the logs now so I can provide some IDs

formal hatch
#

Sure thing

runic vergeBOT
wheat bridge
#

Setup Intent ID creating the active mandate: seti_1SwmBJFh7O2P26Tz9s6dbBsP
Mandate that was created in the active state: mandate_1SwmBJFh7O2P26Tze7n9FG5n
ACH account ID the mandate should be associated with: ba_1SwluYFh7O2P26TznSkTrDcN
Payment Intent ID for offline payment: pi_3SwmDtFh7O2P26Tz0DNDxnwV
Mandate that was created in the inactive state for the offline payment: mandate_1SwmDtFh7O2P26Tzx62myKFC

blazing ember
#

jason_ach-deprecation

#

๐Ÿ‘‹ Taking over! Let me try and catch up

wheat bridge
#

Hi koopajah!

blazing ember
#

hmmm no it's the 6789 so likely not a failure. Looking further

wheat bridge
#

I do see that it started as active and became inactive. I created the payment source using the /sources API endpoint to reproduce an account we'd have in production. The mandate ending in KFC was created on the offline payment intent. I thought it was because I did not pass the mandate ID for the G5n one, which was active

blazing ember
#

ahhhhh

#

yeah if you pass mandate_data: { customer_acceptance: { type: "offline", }, }, on PaymentIntent creation/confirmation it will create a new Mandate.
And that one was single use so it's expected it becomes inactive

#

If you already have a Mandate, don't pass mandate_data at all

wheat bridge
#

ahhh, so we do the mandate migration, get the ID of the active mandate, store this value so that when the customer processes an offline payment, we pass the mandate ID, and leave off the mandate_data?

#

or, as palamedes said, once the mandate is associated with the payment source, don't pass the mandate ID and just leave off the mandate_data section on the payment intent?

#

I'm about to hop in a meeting, I may be slow to respond

blazing ember
#

yeah you don't need to pass anything and it will just work and pick the active Mandate

#

you "just" need to keep track of having an active Mandate and listen for mandate.updated Event to know if one becomes inactive and you have none left

wheat bridge
#

excellent! last question, earlier, I was asking palamedes about how to proceed because prior to the payment intent upgrade, we did not collect a written or formal communication from the customer asking for their permission to use their account for offline payments. palamedes said there was a special Stripe team we would need to contact to remedy this situation?

blazing ember
wheat bridge
#

thanks again koopajah!