S2member API cancelled subscriber?

I had an issue where a member’s subscription was mysteriously cancelled.

I confirmed with them that they did not cancel.

I spoke with stripe cs and they found that what cancelled was a s2member api.

Would love any help, or a point in the right direction on what may have caused this?

Here is some of the calls, and info they provided.

I’ve provided the event and the delete log below.

Lastly - here was the the last thing stripe cs mentioned.

"“As mentioned on our I’ve checked with my team and seems that the plugin may have done the cancellation. The cancellation request came from your API bindings. You can see that the source of this call was Stripe/v1 PhpBindings/7.1.0 WordPress s2Member Pro/210526 (“


HERE’S THE EVENT LOG:

{
“object”: {
“id”: “sub_K0T65CfJ0peykj”,
“object”: “subscription”,
“application_fee_percent”: null,
“automatic_tax”: {
“enabled”: false
},
“billing”: “charge_automatically”,
“billing_cycle_anchor”: 1628491279,
“billing_thresholds”: null,
“cancel_at”: null,
“cancel_at_period_end”: false,
“canceled_at”: 1628530517,
“collection_method”: “charge_automatically”,
“created”: 1628491279,
“current_period_end”: 1631083279,
“current_period_start”: 1628491279,
“customer”: “cus_K0T60rmQAHAsZk”,
“days_until_due”: null,
“default_payment_method”: “pm_1JMSAhCyhtzWPa3mhBnirvmq”,
“default_source”: null,
“default_tax_rates”: [
],
“discount”: null,
“ended_at”: 1628530517,
“invoice_customer_balance_settings”: {
“consume_applied_balance_on_void”: true
},
“items”: {
“object”: “list”,
“data”: [
{
“id”: “si_K0T6oRJ0Kx44HK”,
“object”: “subscription_item”,
“billing_thresholds”: null,
“created”: 1628491279,
“metadata”: {
},
“plan”: {
“id”: “s2_plan_4df75009c5c8e8f93611d02734b61b87”,
“object”: “plan”,
“active”: true,
“aggregate_usage”: null,
“amount”: 997,
“amount_decimal”: “997”,
“billing_scheme”: “per_unit”,
“created”: 1585643640,
“currency”: “usd”,
“interval”: “day”,
“interval_count”: 30,
“livemode”: true,
“metadata”: {
“recurring”: “true”,
“recurring_times”: “-1”
},
“name”: “$9.97 USD / Monthly (recurring charge, for ongoing access)”,
“nickname”: null,
“product”: “s2_prod_f6fc603108388c0b28de07087010c391”,
“statement_descriptor”: “AppliedVisionBB”,
“tiers”: null,
“tiers_mode”: null,
“transform_usage”: null,
“trial_period_days”: null,
“usage_type”: “licensed”
},
“price”: {
“id”: “s2_plan_4df75009c5c8e8f93611d02734b61b87”,
“object”: “price”,
“active”: true,
“billing_scheme”: “per_unit”,
“created”: 1585643640,
“currency”: “usd”,
“livemode”: true,
“lookup_key”: null,
“metadata”: {
“recurring”: “true”,
“recurring_times”: “-1”
},
“nickname”: null,
“product”: “s2_prod_f6fc603108388c0b28de07087010c391”,
“recurring”: {
“aggregate_usage”: null,
“interval”: “day”,
“interval_count”: 30,
“trial_period_days”: null,
“usage_type”: “licensed”
},
“tax_behavior”: “unspecified”,
“tiers_mode”: null,
“transform_quantity”: null,
“type”: “recurring”,
“unit_amount”: 997,
“unit_amount_decimal”: “997”
},
“quantity”: 1,
“subscription”: “sub_K0T65CfJ0peykj”,
“tax_rates”: [
]
}
],
“has_more”: false,
“total_count”: 1,
“url”: “/v1/subscription_items?subscription=sub_K0T65CfJ0peykj”
},
“latest_invoice”: “in_1JMSAlCyhtzWPa3muaiJ6cTN”,
“livemode”: true,
“metadata”: {
“tax_info”: “{“tax”:“0.00”,“tax_per”:“0%”}”
},
“next_pending_invoice_item_invoice”: null,
“pause_collection”: null,
“payment_settings”: {
“payment_method_options”: null,
“payment_method_types”: null
},
“pending_invoice_item_interval”: null,
“pending_setup_intent”: null,
“pending_update”: null,
“plan”: {
“id”: “s2_plan_4df75009c5c8e8f93611d02734b61b87”,
“object”: “plan”,
“active”: true,
“aggregate_usage”: null,
“amount”: 997,
“amount_decimal”: “997”,
“billing_scheme”: “per_unit”,
“created”: 1585643640,
“currency”: “usd”,
“interval”: “day”,
“interval_count”: 30,
“livemode”: true,
“metadata”: {
“recurring”: “true”,
“recurring_times”: “-1”
},
“name”: “$9.97 USD / Monthly (recurring charge, for ongoing access)”,
“nickname”: null,
“product”: “s2_prod_f6fc603108388c0b28de07087010c391”,
“statement_descriptor”: “AppliedVisionBB”,
“tiers”: null,
“tiers_mode”: null,
“transform_usage”: null,
“trial_period_days”: null,
“usage_type”: “licensed”
},
“quantity”: 1,
“schedule”: null,
“start”: 1628491279,
“start_date”: 1628491279,
“status”: “canceled”,
“tax_percent”: null,
“transfer_data”: null,
“trial_end”: null,
“trial_start”: null
}
}

HERE’S THE DELETE LOG:

{

“id”: “sub_K0T65CfJ0peykj”,

“object”: “subscription”,

“application_fee_percent”: null,

“automatic_tax”: {

“enabled”: false

},

“billing”: “charge_automatically”,

“billing_cycle_anchor”: 1628491279,

“billing_thresholds”: null,

“cancel_at”: null,

“cancel_at_period_end”: false,

“canceled_at”: 1628530517,

“collection_method”: “charge_automatically”,

“created”: 1628491279,

“current_period_end”: 1631083279,

“current_period_start”: 1628491279,

“customer”: “cus_K0T60rmQAHAsZk”,

“days_until_due”: null,

“default_payment_method”: “pm_1JMSAhCyhtzWPa3mhBnirvmq”,

“default_source”: null,

“default_tax_rates”: [

],

“discount”: null,

“ended_at”: 1628530517,

“invoice_customer_balance_settings”: {

“consume_applied_balance_on_void”: true

},

“items”: {

“object”: “list”,

“data”: [

{

“id”: “si_K0T6oRJ0Kx44HK”,

“object”: “subscription_item”,

“billing_thresholds”: null,

“created”: 1628491279,

“metadata”: {

},

“plan”: {

“id”: “s2_plan_4df75009c5c8e8f93611d02734b61b87”,

“object”: “plan”,

“active”: true,

“aggregate_usage”: null,

“amount”: 997,

“amount_decimal”: “997”,

“billing_scheme”: “per_unit”,

“created”: 1585643640,

“currency”: “usd”,

“interval”: “day”,

“interval_count”: 30,

“livemode”: true,

“metadata”: {

“recurring”: “true”,

“recurring_times”: “-1”

},

“nickname”: null,

“product”: “s2_prod_f6fc603108388c0b28de07087010c391”,

“tiers”: null,

“tiers_mode”: null,

“transform_usage”: null,

“trial_period_days”: null,

“usage_type”: “licensed”

},

“price”: {

“id”: “s2_plan_4df75009c5c8e8f93611d02734b61b87”,

“object”: “price”,

“active”: true,

“billing_scheme”: “per_unit”,

“created”: 1585643640,

“currency”: “usd”,

“livemode”: true,

“lookup_key”: null,

“metadata”: {

“recurring”: “true”,

“recurring_times”: “-1”

},

“nickname”: null,

“product”: “s2_prod_f6fc603108388c0b28de07087010c391”,

“recurring”: {

“aggregate_usage”: null,

“interval”: “day”,

“interval_count”: 30,

“trial_period_days”: null,

“usage_type”: “licensed”

},

“tax_behavior”: “unspecified”,

“tiers_mode”: null,

“transform_quantity”: null,

“type”: “recurring”,

“unit_amount”: 997,

“unit_amount_decimal”: “997”

},

“quantity”: 1,

“subscription”: “sub_K0T65CfJ0peykj”,

“tax_rates”: [

]

}

],

“has_more”: false,

“total_count”: 1,

“url”: “/v1/subscription_items?subscription=sub_K0T65CfJ0peykj”

},

“latest_invoice”: “in_1JMSAlCyhtzWPa3muaiJ6cTN”,

“livemode”: true,

“metadata”: {

“tax_info”: “{“tax”:“0.00”,“tax_per”:“0%”}”

},

“next_pending_invoice_item_invoice”: null,

“pause_collection”: null,

“payment_settings”: {

“payment_method_options”: null,

“payment_method_types”: null

},

“pending_invoice_item_interval”: null,

“pending_setup_intent”: null,

“pending_update”: null,

“plan”: {

“id”: “s2_plan_4df75009c5c8e8f93611d02734b61b87”,

“object”: “plan”,

“active”: true,

“aggregate_usage”: null,

“amount”: 997,

“amount_decimal”: “997”,

“billing_scheme”: “per_unit”,

“created”: 1585643640,

“currency”: “usd”,

“interval”: “day”,

“interval_count”: 30,

“livemode”: true,

“metadata”: {

“recurring”: “true”,

“recurring_times”: “-1”

},

“nickname”: null,

“product”: “s2_prod_f6fc603108388c0b28de07087010c391”,

“tiers”: null,

“tiers_mode”: null,

“transform_usage”: null,

“trial_period_days”: null,

“usage_type”: “licensed”

},

“quantity”: 1,

“schedule”: null,

“start”: 1628491279,

“start_date”: 1628491279,

“status”: “canceled”,

“tax_percent”: null,

“transfer_data”: null,

“trial_end”: null,

“trial_start”: null

}

This might just be a guess as something similar happened to me years ago. I had a membership (recurring payment) and also some “buy-now” products. At the time, if someone was to buy something with a “buy-now” button, it would somehow, replace the recurring payment, therefore it was cancelling the membership. It was happening with Paypal (I didn’t have Stripe back then).

It turned out that the code for the buy-now had the same level as the membership, so if someone was making the purchase, it was replacing the other one. The solution was to have a conditional for my buy-now: if the person was already at that level, the shortcode was to include “*” instead of the “1”.

So, did that member make a separate purchase?

No. There were no other seperate purchases.