'Stripe Offline Payments

I am trying to do offline payments using stripe, for which I need to authorize SetupIntent for future payments. I am creating SetupIntent in Node js as below -

const setupIntent = await stripe.setupIntents.create({
    customer: customer.id,
    payment_method_types: ['card'],
    usage: 'off_session',    
});

And I am confirming SetupIntent in React as below -

stripe.confirmCardSetup(setupResponse.clientSecret, {
    payment_method: {
        card: elements.getElement(CardElement),
        billing_details: {
          name: name,
          email: email
        },
    }
})
.then(async function (result) {
});

As mentioned in stripe documentation, to do offline payments we need to create mandate_data object. But for it payment method is required and confirm should be true. Since I am attaching payment method to SetupIntent from React frontend, after SetupIntent is created, so, I am unable to use mandate_data.

I have also followed https://stripe.com/docs/payments/save-and-reuse this documentation. But it gives me authentication required error every time for offline payments.

Any pointers please.



Solution 1:[1]

In general, cards set up for future offline usage are subject to re-authentication at the discretion of the bank/issuer.

If you're using Indian-issued cards in particular, then it is currently expected that every payment will require authentication. See docs here: https://support.stripe.com/questions/rbi-regulations-guide-for-direct-payments-users

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Nolan H