Autopay turns a recurring contract into a real Stripe subscription on the customer's saved card. Charges fire automatically each cycle, money lands in your bank, no per-visit invoicing, no chasing customers.
Prerequisites
- Stripe Connect onboarded on your account — Settings → Integrations → 'Connect Stripe' must show green / charges_enabled. (See 'Stripe Payments' in the Integrations section.)
- Customer must have a saved card on file — use the 'Send save-card link' button on their detail page if not yet. (See 'Customers with a saved card on file'.)
- Contract must use monthly or annual pricing (per-visit doesn't fit subscriptions).
Creating an autopay contract
- 1Open the customer detail page first
Make sure they have a saved card under 'Payment method on file'. If not, click 'Send save-card link' and wait for them to save one before continuing.
- 2Create the contract
/portal/contracts/new. Set pricing to subscription_monthly or subscription_annual. Set price > 0 (Stripe rejects $0 subscriptions).
- 3Pick 'Autopay (Stripe subscription)' for collection mode
If you see an error about no saved card or Connect not active, the prerequisites above haven't been met yet.
- 4Save
Plyrium creates the Stripe Product + Price + Subscription on your platform connection. The first charge fires immediately (per Stripe's standard subscription behavior); subsequent charges follow the cycle anchor.
What the customer experiences
- Their card is charged automatically each cycle (monthly or annual).
- Stripe emails them a receipt for each successful charge.
- If their card is declined, they get an email FROM you with a link to update their card via Stripe's hosted Billing Portal — no contractor action needed for the common case.
- On the customer-facing /me/[token] portal, they see 'Manage payment + subscriptions' which opens the same Stripe portal.
- Visits still show on their portal page like any other appointment.
Mid-cycle price changes
Edit the contract's price/visit and save. Stripe Prices are immutable, so we create a new Price + swap the subscription's item to it with create_prorations behavior. The customer's NEXT invoice has a credit (or charge) for the difference automatically. The old Price is archived (kept for invoice history; not deleted).
Pause / resume
Pause from the row actions or detail page. We call Stripe's pause_collection with behavior='void' so upcoming invoices skip rather than queue. Optionally pass a paused_until date so it auto-resumes; otherwise resume manually any time. Visits during the pause window are skipped by the cron (no appointment, no charge).
Cancellation — three modes
When you cancel an autopay contract, a modal asks how Stripe should wrap up:
| Run out the period (default) | Service stays active until the end of the cycle they already paid for. No refund — they got what they paid for. Most common. |
| Cancel + prorated refund | Stops immediately. Customer's saved card gets a refund for the unused portion of the period. Use when you want to make things right (service issue, customer moving). |
| Cancel, no refund | Stops immediately, customer eats the rest of the period. Sparingly — for breach-of-contract situations. |
Where the money goes
Same flow as a regular invoice payment — Stripe charges on the platform side and transfers the gross amount to your Connect account automatically. Plyrium takes nothing on top of Stripe's processing fees (~2.9% + 30¢).
Each successful Stripe charge creates a paid 'Subscription cycle' invoice in your Plyrium books with a single line item. Your invoices list and customer lifetime totals capture autopay revenue alongside one-off invoices automatically — no need to check Stripe's dashboard separately.