Skip to content

Do not fail status: "requires_action" transactions #349

@markhuot

Description

@markhuot

Description

Currently when Stripe responds to a payment intent with status: "requires_action" the transaction is marked as "failed" in the Craft Commerce UI.

Instead of failing the transaction, Craft Commerce should mark the transaction as "pending" or some other equivalent state.

Further, Stripe includes the "action" that must be taken in the next_action key. It would be ideal if Craft Commerce could parse the next_action and take action based on the body.

One such example is an ACH payment that requires micro deposit verification. In that case the next_action looks like this,

"next_action": {
  "type": "verify_with_microdeposits",
  "verify_with_microdeposits": {
    "arrival_date": 1748847600,
    "hosted_verification_url": "https://payments.stripe.com/microdeposit/pacs_live_...",
    "microdeposit_type": "descriptor_code"
  }
},

Ideally Craft Commerce would send an email to the customer with the hosted_verification_url for them to complete the transaction.

/cc @smalomo

Steps to reproduce

  1. Make a purchase with ACH for > $1,000 (seems to reliably require micro deposit verification)
  2. Wait for Stripe to respond to the web hook with a status: "requires_action" payload
  3. Note that Craft Commerce does not handle the requires_action payload at all

Additional info

  • Craft CMS version: 4.8.1
  • Craft Commerce version: 4.5.2
  • Stripe for Craft Commerce version: 4.1.1
  • PHP version: 8.1
  • Database driver & version: MySQL 8.0.24
  • Plugins & versions: n/a

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions