Accounts with a requirements that are eventually due cannot use IPP
Describe the bug When a WooPayments account has requirements that are eventually due, they will be required to provide more information to prevent the account from becoming restricted once it reaches a certain threshold for volume. Their account will still be enabled, but the requirements do not currently have a due date.
This will show up on the Stripe dashboard like the following:
This account has provided enough information to process payments and receive payouts. More information will eventually be required when they process enough volume.
INFORMATION EVENTUALLY NEEDED
Owner's SSN – Last 4
Owner's address
Owner's date of birth
Owner's phone number
If an account is in this state, they are unable to use IPP. The following shows up in the application logs:
In-Person Payments not available. Stripe has pending requirements without known deadline
This likely means that the app considers the account to be in an account_pending_requirements state (ref), but because there are no action items for them to take, there is no way for them to move from the Enabled state to the Complete state unless they accept more payments. But they can't accept payments in-person unless the card reader works.
To Reproduce
I'm unable to reproduce this as I do not currently have an account in this state. I'm also not 100% confident I know how to create an account in this state, but here is my estimation:
- Create live Business account in the US.
- Once an account is created and onboarded, submit enough information to enable WooPayments as a gateway on the site.
- Don't process any live or test transactions.
- Ensure that the account has
Eventually duerequirements. - Attempt to connect a card reader.
Expected behavior
If an account is in this sort of in-between state should be an exception to the account_pending_requirements state so that they can process payments via IPP.
Isolating the problem (mark completed items with an [x]):
- [ ] I have deactivated other plugins and confirmed this bug occurs when only WooCommerce plugin is active.
- [ ] This bug happens with a default WordPress theme active, or Storefront.
- [ ] I can reproduce this bug consistently using the steps above.
Notes: This might also affect the Apple app, but the two interactions we've seen about this have been related to Android.
Interactions: 6551142-zen 6521404-zen
| Fails | |
|---|---|
| :no_entry_sign: | Please add a type label to this issue. e.g. 'type: enhancement' |
| :no_entry_sign: | Please add a feature label to this issue. e.g. 'feature: stats' |
Generated by :no_entry_sign: dangerJS
8209063-zen and 8209663-zen are new, current tickets with the same issue. Both are using iOS.
AnyHashable("plugin_slug"): "woocommerce-stripe", AnyHashable("blog_id"): 205736212, AnyHashable("site_url"): "https://-redacted-.com", AnyHashable("store_id"): "acb638e9-1bcd-476b-b701-f136421e7320", AnyHashable("is_wpcom_store"): false, AnyHashable("reason"): "account_pending_requirements", AnyHashable("country"): "US", AnyHashable("plan"): "jetpack_free"]
2024/05/18 14:37:09:309 In-Person Payments not available. Stripe has pending requirements without known deadline
AnyHashable("plugin_slug"): "woocommerce-stripe"]
2024/05/18 18:15:16:281 In-Person Payments not available. Stripe has pending requirements without known deadline
I've checked Android and commented here: p91TBi-bje-p2#comment-12315 - the logic seems to be implemented as intended. Having said that, perhaps we misunderstood the flags during the initial implementation. @iamgabrielma will check iOS, perhaps it's a inconsistency between platforms.
I looked into this with @iamgabrielma last week: p1717617666065079-slack-C6H8C3G23
I cannot reproduce this on iOS using a GB WooPayments account with eventually due requirements. It's possible that there might be some edge cases, such as:
- A standard Stripe account is unable to use IPP on iOS if it has requirements that are eventually due (this is what was reported here).
- A WooPayments account is unable to use IPP on Android if it has requirements that are eventually due (this is what was originally reported).
8327008-zen
- iOS
- Standard Stripe account is the likely source
- WooPayments is installed but deactivated
- On version 18.8.0.1 of the app
AnyHashable("plugin_slug"): "woocommerce-stripe"]
2024/06/13 19:14:42:606 In-Person Payments not available. Stripe has pending requirements without known deadline
Let's gather more data - but this is starting to look like a bug in the Stripe Extension => it might not be sending the restricted_soon state but instead sends restricted state with hasPendingRequirement set to true, but empty date (which is correctly evaluated as IPP not available on the client).
@iamgabrielma How much effort would be to log whether the state we received was restricted or restricted_soon and log status of hasPendingRequirements as well as dueDate?
@iamgabrielma How much effort would be to log whether the state we received was restricted or restricted_soon and log status of hasPendingRequirements as well as dueDate?
Adding additional logs for that data should be mostly straight-forward, I can raise a PR this week to target the nearest next release.