=== Asteris Subscriptions ===
Contributors: asteriscommerce
Tags: subscriptions, recurring payments, woocommerce, stripe, memberships
Requires at least: 6.2
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.2.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Reliable recurring billing for WooCommerce that doesn't silently fail — with your MRR in WordPress and no transaction fees.

== Description ==

**Asteris Subscriptions** is genuinely free recurring billing for WooCommerce. It focuses on the thing that actually costs subscription stores money: **renewals that silently fail.**

= Free features =

* **Self-healing renewal engine** — an idempotent claim lock (no double charges) + a watchdog that re-queues any renewal the WordPress queue silently drops, with a WP-Cron fallback.
* **Your own Stripe checkout** — cards collected under *your* Stripe account (Stripe Elements, classic + block checkout) and charged off-session for renewals. No separate Stripe plugin required.
* **Customer self-service** — cancel / pause / resume and a one-click card-update flow from My Account.
* **Basic MRR + at-risk dashboard** — see your recurring revenue and overdue renewals at a glance.
* **Compliance by default** — click-to-cancel + an EU Withdrawal Button during the 14-day window.
* **No transaction fees.** We never take a cut of your subscriptions.

= Upgrade to Pro =

The paid edition adds the revenue-recovery and growth features: smart-retry **dunning** with branded recovery emails, **full Insights** (churn, LTV, recovered revenue), **card-expiry reminders**, and subscription **switching & proration**. Details: [asterisforwoocommerce.com/subscriptions](https://asterisforwoocommerce.com/subscriptions)

This plugin requires WooCommerce.

== External services ==

This plugin connects to **Stripe** to process payments. It is required for taking card payments and charging subscription renewals.

* **What it sends:** at checkout and on each renewal, the plugin sends the order amount, currency, a customer/payment-method reference, and order/subscription identifiers to Stripe's API (https://api.stripe.com). Card details are collected directly by Stripe's hosted Elements script loaded from https://js.stripe.com and are never seen by this plugin or your server.
* **When:** at checkout, on each renewal, on card updates, and when verifying incoming Stripe webhooks.
* **Provider:** Stripe Payments. Terms: https://stripe.com/legal — Privacy: https://stripe.com/privacy

No data is sent to Stripe until you configure Stripe API keys and enable the gateway. This free edition does not contact any Asteris server.

== Installation ==

1. Upload via Plugins -> Add New -> Upload Plugin, or install from WordPress.org.
2. Activate. (WooCommerce must be active.)
3. Open Subscriptions -> Settings and add your Stripe keys.

== Frequently Asked Questions ==

= Is it really free with no fees? =
Yes. Asteris Subscriptions is free forever and never takes a percentage of your subscriptions.

= Does it need a separate Stripe plugin? =
No. It has its own Stripe checkout and charges renewals off-session under your account.

== Screenshots ==

1. The Subscriptions dashboard — live MRR and at-risk renewals, with the watchdog's silent-drop recoveries, right inside WordPress.
2. Your subscriptions list — filter and search every subscription, with one-click management.
3. The renewal log — full observability into every renewal, recovery and failure event.
4. Settings — connect your own Stripe account in seconds; no separate Stripe plugin required.
5. Turn any product into a subscription — billing interval, free trial and sign-up fee on the product screen.

== Changelog ==

= 1.2.2 =
* Hardening: all database queries now pass table names through $wpdb->prepare() with the %i identifier placeholder, and all admin output is escaped on output (wp_kses / esc_url).

= 1.2.1 =
* Internal: longer, more distinctive prefixes on the database tables and product meta keys (`asteris_subs_`), with an automatic one-time migration that preserves existing data.

= 1.2.0 =
* Internal: the free edition is now fully standalone with no add-on code bundled — optional paid features extend it purely through action/filter hooks. Class names are prefixed (Asteris_Subs_) to avoid collisions.

= 1.1.0 =
* Reliability + correctness pass: off-session charging is now keyed to the billing period (no double-charge when a renewal is retried), network-timeout outcomes are reconciled via webhook/watchdog instead of being treated as failures, webhook de-duplication is atomic, and subscriptions are created on payment-complete (not only on "processing").
* Customer self-service: cancellation now asks for confirmation (no accidental one-click cancel), per-status labels and colours are clearer, the card on file is shown, on-hold subscriptions get an "update card & retry" action, and pre-renewal reminders let you update the card or cancel before the charge.
* Product pages now disclose free trials and sign-up fees before purchase; customer emails follow your store's brand colour.
* Refreshed admin design, clearer Test/Live Stripe settings with show/hide for keys, and stronger at-rest secret encryption.

= 1.0.0 =
* First stable release of the free edition. Reliable self-healing renewals + watchdog recovery, your own Stripe checkout, customer self-service, compliant cancellation + EU withdrawal, basic MRR, and the hardening / compliance pass.

= 0.2.0-alpha.3 =
* Hardening + compliance pass: more reliable renewals and recovery, SCA handling that never cancels a good card, GDPR data export/erase, pre-purchase auto-renewal disclosure, accurate renewal tax, and multisite-safe uninstall.

= 0.2.0-alpha.2 =
* Initial WordPress.org release of the free edition.
