If you’re talking about buy-now payments this is simple because you can set your Auto EOT Behavior to extend the EOT. WP Admin > s2Member Pro > AuthNet Options > Automatic EOT Behavior > Fixed-Term Extensions (Auto-Extend)?
That setting only affects Buy Now transactions for fixed-term lengths, so if someone makes another fixed-term Buy Now purchase before their current EOT, the new time can be added onto what they already have.
If you’re talking about subscriptions, then it’s different…
If someone submits the same recurring pro-form again before the end of the current paid term, s2Member will create a new recurring subscription based on the time of the new checkout. It does not automatically carry forward the unused time from the current subscription.
The old recurring subscription is supposed to be canceled once the new one is created successfully, so this ends up being more of a replacement than an extension.
What you want can be done, but it would need custom coding. I have built something along those lines before for a client as a custom solution.
The usual way to handle it is to calculate a custom initial period that bridges from now to the member’s current renewal date, then let the normal recurring schedule begin from that future date so it matches the EOT of the one being replaced.
This article may help, since it covers the same general idea of using a dynamic trial or initial period:
