#dtfk
1 messages · Page 1 of 1 (latest)
Hi
Could you please give more details about what you want to achieve ?
In order to save ACH debit, you can follow this guide:
https://stripe.com/docs/payments/ach-debit/set-up-payment
Our business model is like this that we collect & save bank account details like acc number, routing etc. And then capture the amount later. So we were using another payment provider.
Now we want to integrate stripe ACH also
The link I shared is how to collect ACH PaymentMethod using Stripe,
is it what you are looking for ?
That link is to save acc details for future usage using Stripe. But we already have the saved details outside of stripe.
Now we want to build ACH functionality using Stripe so that we can capture amount from those saved accounts
building the ACH functionnality, requires you to use Stripe for collecting the details of these bank accounts
If you have the details and you are PCI compliant, you need to create the PaymentMethods by customer using this API
https://stripe.com/docs/api/payment_methods/create#create_payment_method-us_bank_account
And then charge them later
Yes we are PCI compliant
Ok so we need to create
- Payment intent
2 Payment method using those saved details
Correct?
create the PayemntMehtod, then create the PaymentIntent yes
You accept payment like mentioned in this step:
https://stripe.com/docs/payments/ach-debit/set-up-payment?platform=web#web-future-payments
So our business model is like this, like I told you that we r PCI compliant and we have saved bank account details.
Now we have one Approve button that is used to charge from those customer accounts. So as soon as the authorized personnel clicks the that button, it will make a capture request
yes I totally understand you, now when the customer click on Approve buttin, you create a PaymentIntent with the PaymentMehtod you created
You create a PaymentIntent like this:
const intent = await stripe.paymentIntents.create({
payment_method_types: ['us_bank_account'],
payment_method: // The PaymentMethod Id you created using this API https://stripe.com/docs/api/payment_methods/create#create_payment_method-us_bank_account with the bank details you have,
customer: // your customerId,
confirm: true,
amount: 100,
currency: 'usd',
});
Actually customer won't click the approve button. It is an authorized personnel that will click the button from backend.
And it will be all server side calls. No js request
yes, the creation of the PaymentIntent is done in the backend too
Ok please clarify the flow :
- Create Customer
- Create Payment method -- us_bank_account
- Create Payment Intent with attached customer & payment method
yes like that
While creating payment Intent below parameters value are correct:
-
we don't need to provide "confirm" , "off_session" & "capture_method" parameter, I believe?
-
Setup_future_usage: off_session
you need to create the PaymentIntent with just these parameters
Ok , just with the parameters which are mentioned in js script payment Intent
yes, that's nodesJs script
Do we need to provide mandate data as well in payment intent?
Hi there 👋 I'm jumping in as my teammate needs to step away. Yes, if the customer is not the one actively completing the checkout process then it is not possible for us to collect mandate acceptance from them and so you must provide it.
Hi @waxen briar , there is one mandate parameter also, which asks for id, what can be provided over there?
I don't believe you want to use the mandate field because you don't have a Mandate object already created to reference by its id. instead I think you'll want to use mandate_data.customer_acceptance to provide the details you logged when you were collecting mandate acceptance from your customer:
https://stripe.com/docs/api/payment_intents/confirm#confirm_payment_intent-mandate_data-customer_acceptance
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
Ohh ok
Mandate field is for those who have collected mandate using Stripe from customers?
Mandate_data.customer_acceptance is for those who have collected mandate using their own custom way
Correct?
Correct, mandate is for referencing an already created Mandate object by its ID:
https://stripe.com/docs/api/mandates
mandate_data.customer_acceptance is for providing the details necessary to create a Mandate because the customer is not present to provide those details.
Complete reference documentation for the Stripe API. Includes code snippets and examples for our Python, Java, PHP, Node.js, Go, Ruby, and .NET libraries.
So we are PCI compliant and we save the customer bank details through online form and during that process we show them a custom form that list out mandate terms and a checkbox for acceptance
So I believe we can provide all these details in mandate_data.customer_acceptance
Correct?
Sorry, compliance isn't our area of focus so I'm not sure my understanding of this is correct, but isn't PCI compliance for card payments, whereas ACH payments are subject to the rules and regulations put forth by Nacha?
https://support.stripe.com/questions/nacha-bank-account-validation-rule
https://www.nacha.org/content/ach-rules-compliance
Find help and support for Stripe. Our support center provides answers on all types of situations, including account information, charges and refunds, and subscriptions information. Get your questions answered and find international support for Stripe.
I do believe mandate_data.customer_acceptance is the field you're looking for, but I'm not able to speak to whether your approach meets compliance requirements.
Yes we are compliant to save those details
But just wanted to know that do we need to provide that custom online mandate details in mandate_data.customer_acceptance field
Yes, you need to provide mandate details.
So we can provide the type :online, IP address, user agent etc details
Whether you provide offline or online depends on how you collected the mandate acceptance from your customer. If you collected it via a website, then you provide the details your site collected from your customer while they were providing consent for you to debit their account via the online hash, if it wasn't done online (such as an in person/writing agreement) then you use offline.
By hash u mean all those details like IP, user agent, accepted at date time
Correct?
Yes, by hash I was referring to the object structure that the online parameter is expecting to be provided if it is used.
Ok thank you so much @waxen briar @dusk thicket
It's really helpful
Happy to help!