• Resolved eddypiv

    (@eddypiv)


    Hi,

    What I like about your plugin is that one can configure EU payment methods per country. Very good, it makes it nice and to-the-point.

    I’m starting using it now together with WooCommerce Subscriptions. For subscriptions I see no local EU payment methods, they don’t appear for subscriptions. I can understand that, as they are actually the implementation of the SEPA credit transfer.

    If I activate SEPA, then it does show up on the checkout of subscriptions, but also of the single/one off payments.
    I don’t think SEPA in itself is a payment method. SEPA contains 2 “cashless payment instructions”: credit transfers and direct debits. (https://www.ecb.europa.eu/paym/integration/retail/sepa/html/index.en.html)
    The credit transfer is nicely available in the various local payment methods. But where is the direct debit?

    My observations:
    When I pay with the plugin for a subscription using the SEPA payment method, I just have to fill in my IBAN number, and that’s it. I don’t need to sign/authenticate that I am the accountholder?? And the status of the order is Completed.
    I would expect that the local payment methods (iDEAL, Banconctact, Sofort etc) would be used to sign the direct debit. But it’s not. No signature at all, and the order is marked as Completed.
    Pls explain.

    But it gets worse, I’m afraid. Now SEPA is activated, also for the on off / single payments the client can pay without signing, by choosing SEPA in stead of iDEAL etc.

    Am I missing something / not understanding it correctly? I hope so. Pls explain.

    If my observation is correct, than I guess the correct things to do are:
    – Change SEPA to SEPA Direct Debit, and make it only available to subscriptions
    – Have SEPA Direct Debit signed with one of the local payment methods.

    Looking forward to your advise.

Viewing 10 replies - 1 through 10 (of 10 total)
  • Plugin Author Clayton R

    (@mrclayton)

    Hi @eddypiv

    I’m starting using it now together with WooCommerce Subscriptions. For subscriptions I see no local EU payment methods, they don’t appear for subscriptions. I can understand that, as they are actually the implementation of the SEPA credit transfer.

    Most of the local payment methods do not currently support automatic renewal of subscription payments. You can use the manual renewal option that WooCommerce Subscriptions offers for those payment methods.

    If I activate SEPA, then it does show up on the checkout of subscriptions, but also of the single/one off payments.

    That’s because SEPA supports subscriptions and one-time payments. You can read more about Stripe’s integration with SEPA here.

    Am I missing something / not understanding it correctly? I hope so. Pls explain.

    If you believe this integration is not sure, I’d recommend you express your concerns to the Stripe team. We have integrated SEPA per the documentation that Stripe provides. There is not additional step or security that our plugin is bypassing. Any change would have to come from Stripe’s end since we have used the tools and functionality they provide.

    Kind Regards

    Thread Starter eddypiv

    (@eddypiv)

    Well, I spoke with the Stripe team before. They are speaking about SEPA Direct Debit – you actually refer to that page yourself -, but I simply cannot find that in your plugin. Pls correct me if I’m wrong.

    So pls tell me how I can add SEPA Direct Debit with your plugin.

    I did a SEPA Payment through your plugin. The only thing I was asked was the IBAN number and my name. There was not any authentication that I was the accountholder.
    Instead of immediately pointing to the Stripe team: it’s your plugin, not from Stripe. You may be a partner, but it’s your plugin so I am asking you to think along with me and explain to me how this can be a secure debit, if there is no other checking then IBAN number and name.

    I don’t want to be negative or critical, I actually would prefer your plugin over the one from the WooCommerce team. But I need to understand how to configure it correctly. So expecting your help.

    Thanks, kind regards,
    Eddy

    Plugin Author Clayton R

    (@mrclayton)

    Well, I spoke with the Stripe team before. They are speaking about SEPA Direct Debit – you actually refer to that page yourself -, but I simply cannot find that in your plugin. Pls correct me if I’m wrong.

    I am not understanding what it is that you’re asking exactly. SEPA is a direct debit payment method because the customer provides their account info and the payment amount is debited from their account. If you read the documentation that I linked to, it refers to the process by which a payment can be collected and that’s the process we have implemented in this plugin.

    So pls tell me how I can add SEPA Direct Debit with your plugin.

    What is your definition of SEPA direct debit? Do you have some link to Stripe that defines it differently then the link I provided to you in my previous response? If so please share it so we can review.

    I did a SEPA Payment through your plugin. The only thing I was asked was the IBAN number and my name. There was not any authentication that I was the accountholder.

    That is how Stripe coded their integration. We as the plugin developers must adhere to the API’s that Stripe provides us and that is what we have done. There is no additional authentication required, unless you test in production mode and observe something different. It could be a slightly different process in test mode compared to live mode.

    Instead of immediately pointing to the Stripe team: it’s your plugin, not from Stripe. You may be a partner, but it’s your plugin so I am asking you to think along with me and explain to me how this can be a secure debit, if there is no other checking then IBAN number and name.

    What I hope you understand is that we can’t force Stripe to create API’s or payment flows that don’t exist. We must follow the payment flow that Stripe has created for their payment methods. The payment flow that exists is the one that Stripe has created and we code the plugin to that specification. If you believe there is some additional authentication step that’s missing, you need to express that to Stripe so they can implement that in their SEPA payment flow.

    Kind Regards,

    Thread Starter eddypiv

    (@eddypiv)

    In SEPA there is a fundamental difference between a credit transfer and a direct debit.
    A credit transfer is initiated by the accountholder and cannot be revoked by the him, as he himself intiated and signed the payment. The credit transfer is a guaranteed payment: when the beneficiary (shop owner) is advised of the credit, he can be sure he is paid.

    A direct debit is initiated by the beneficiary. For collecting the money, he needs a SIGNED mandate from the accountholder. Every time he collects the funds, he needs to advise the accountholder, the funds takes 2-3 days to arrive (if there is sufficient balance on the account) and the accountholder can revoke the collection (I believe within 8 weeks).
    So with a direct debit, the beneficiary is uncertain about the credit for at least the initial 2-3 days.

    If I sell products in a webshop (not subscriptions!), my client’s payment through the local EU payment methods like iDEAL, Sofort and Bancontact are credit transfers, and are guaranteed payments. I can release the products upon payment.
    I sell downloadable products, my client expects he can download immediately after the payment. With iDEAL and others this can be done.

    If I sell a membership (subscription) with renewal option, that’s a direct debit. One may argue that the 1st payment should be considered a sort of credit transfer with a check of sufficient balance, but definitely the renewals are initiated by the shop owner and he’s unsure for 2-3 days if funds will arrive.
    As I said: for the collection I need a signed mandate.

    Both credit transfer and direct debit are SEPA payments.
    Stripe Documentation handles STRIPE Direct Debit, your plugin does not make this difference, it’s just SEPA.
    So there is a difference between the Stripe documentation and your plugin!!

    SEPA direct debits are to be used for collections, SEPA credit transfers for payment products, not being renewable subscriptions/memberships.

    With your plugin, how can I activate SEPA direct debits for subscriptions only, and not for (downloadable) products??

    I activated SEPA in your plugin in LIVE environment. It opened the option for the client to pay for (my downloadable) products that I only want to deliver when I have received the funds. I was able to pay for a product by just filling out the IBAN number, the name and the email address, and the order was marked as complete and I had access to the product. Not in test, in LIVE!
    There was no authentication whatsoever.

    If I use your plugin for SEPA direct debit, then how do I get a SIGNED mandate without any authentication? The only solution I can think of is by making the client authenticate it through iDEAL, Sofort or Bancontact. I.e. the same payment methods used for the credit tranfer.
    But that’s not what’s happening.

    That’s why I am trying to understand how I can safely use your plugin for SEPA direct debits as well.

    I hope I made my concerns clear.
    Again: I’m not criticizing your plugin, don’t get me wrong. Just trying to understand that I as shop owner am not opening risks.

    Thanks, regards.

    I did a payment in live environment, and I was not asked to authenticate anything

    Thread Starter eddypiv

    (@eddypiv)

    Just ignore the last line pls…

    Thread Starter eddypiv

    (@eddypiv)

    Pointing to the Stripe documentation:
    “In order to debit an account, businesses must collect their customer’s name and bank account number in IBAN format. During the payment flow, customers must accept a mandate that gives the business an authorization to debit the account. Stripe is able to generate this mandate for businesses to present to their customers.”

    Customer must accept… That’s not by just entering an IBAN number and a name, one needs a signature!

    And pls, pls, pls, mind the difference: Stripe talks about SEPA Direct Debit, your plugin opens SEPA for both direct debits and credit tansfers.

    Plugin Author Clayton R

    (@mrclayton)

    There was no authentication whatsoever.

    Again, if there is any authentication, that’s going to be handled by Stripe during the stripe.confirmSepaDebitPayment client side function call that Stripe’s SDK provides. We cannot force some authentication mechanism that doesn’t exist.

    That’s not by just entering an IBAN number and a name, one needs a signature!

    Our plugin provides a mandate on the checkout page which acts as the customer’s acknowledgement and authorization. You should see that mandate when you select the SEPA payment method. It is an implicit signature.

    I was able to pay for a product by just filling out the IBAN number, the name and the email address, and the order was marked as complete and I had access to the product. 

    That’s not how it’s coded so it sounds like there might be something affecting the order status, most likely a 3rd party plugin. When a product is purchased using SEPA, the Stripe plugin sets the order’s status to on-hold. Not until the payment_intent.succeeded event is triggered will the order’s status be marked as processing/completed. That can take several days in live mode since SEPA is an asynchronous payment method. In test mode, that will happen within seconds since Stripe triggers the payment_intent.succeeded event rapidly.

    Kind Regards,

    Thread Starter eddypiv

    (@eddypiv)

    To start with the last part: you’re right, the marking as Completed is forced by my functions.php. My mistake.

    The mandate that I see is a line on screen, and a statement “that I accept the mandate by proceeding”. That’s in no way a legal signature, not any proof that I’m the owner of the account.

    If I happen to know your account number I can enter it and get instant access – on your expenses. It may be wrong from me as shop owner to grant immediate access, but if the product is a virtual product, then the client expects instant access, not after x days when funds are confirmed.

    Instead of immediately pointing to the Stripe docs and function calls, I would like to get your view whether or not my observation is valid. Just think along with me.
    If my observation is not valid, pls tell me so – and explain, so I’ll understand and can rest in peace.
    If my observation is valid, I expect you as partner of Stripe to be in a position to get a legal acceptable response here.

    I hope you understand.

    Thanks, kind regards

    Plugin Author Clayton R

    (@mrclayton)

    If I happen to know your account number I can enter it and get instant access – on your expenses. 

    How is knowing someone’s credit card number or social security number for identity theft much different than that?

    but if the product is a virtual product, then the client expects instant access, not after x days when funds are confirmed.

    Then you as the merchant must make a decision on whether you want to offer SEPA for digital products or not. SEPA is an asynchronous payment method, meaning it can take days for Stripe to complete the payment. If you want to offer instant access to a product, then perhaps SEPA isn’t the correct payment method to offer for your given scenario.

    Instead of immediately pointing to the Stripe docs and function calls, I would like to get your view whether or not my observation is valid. 

    I keep pointing to the docs because they act as a citation for the information I am providing you. Stripe’s documentation is the definitive guide on how to execute the payment flows.

    If my observation is valid, I expect you as partner of Stripe to be in a position to get a legal acceptable response here.

    Yes, it’s possible that someone could use a compromised IBAN to perform a SEPA payment fraudulently. That can happen with pretty much any payment method though, including a credit card. While 3DS does mitigate that possibility with cards, it’s still possible. It’s up to you as the merchant to determine if that risk is acceptable.

    Stripe does not offer an authentication mechanism like 3DS for SEPA. If they did, we would implement it.

    Thanks

    Thread Starter eddypiv

    (@eddypiv)

    So you implemented an insecure SEPA Direct Debit solution, because Stripe doesn’t offer the authentication mechanism? Did you discuss it with them? Or you didn’t see the legal gap?

    To me it seems you don’t understand the SEPA payment instruments. I’ve tried to explain, but looks like I didn’t succeed.
    You still say “SEPA is an asynchronous payment method, meaning it can take days for Stripe to complete the payment.” No, it’s not. SEPA DIRECT DEBIT is that. But SEPA is also a credit transfer, a guaranteed payment instrument that merchants can act on instantly. Because you are continuously mixing them together, you’ve opened a gap for paying for products in WooCommerce. SEPA Direct Debit is an instrument for subscriptions, not for products.
    For products there are the iDEAL, Bancontact Sofort a.o. as implementations of the credit transfers.

    “How is knowing someone’s credit card number or social security number for identity theft much different than that?” It’s totally different. As merchant I publish my IBAN, as I want to get paid. It’s on all my invoices. When I see my bank statement, I see the IBANs of those who paid me. IBAN bank account numbers are not secret.
    Even if it would be secret, that doesn’t mean you don’t have to obtain a signature. But you don’t, you’ve left the door open.
    What do you think the police will say when you tell them that things are stolen out of your house, and you left the door open?

    Authentication can be done by the payment instruments that are implemented for the SEPA credit transfer: iDEAL, Bancontact etc. It’s all there. A matter of using it.
    Perhaps you need Stripe to help implementing it? Go talk to them.

    I am expecting from a Stripe partner that he’s open to discuss issues with Stripe, but I don’t see that in your responses. Disappointing.

    I’ve tried to get this sorted out with you, but I didn’t succeed. A pity, because – as I said couple of times – I like your solution for the credit transfer more than the one from the WooCommerce team. But they are more open and understanding, so I’ll proceed with them.

    Thanks for your time, all the best.

Viewing 10 replies - 1 through 10 (of 10 total)

The topic ‘Subscriptions within EU’ is closed to new replies.