Subscriptions & Payments
These two screens are where you monitor recurring revenue and handle individual transactions.
Subscriptions
Location: Admin → Subscriptions (/admin/subscriptions)
A list of every subscription on your platform, newest first.
📸 Screenshot: The Subscriptions list with the status and gateway filters.
For each subscription you can see the customer, their plan, status, gateway, the gateway's subscription ID, and the key dates (started, ends, renews).
Filtering
Filter the list by:
- Status — active, trialing, canceled, expired.
- Gateway — Stripe, PayPal, Paddle or manual.
Exporting
Use Export to download all subscriptions as a CSV for reporting or accounting.
Creating a manual subscription
You can create a subscription by hand — for offline payments, comped accounts or migrations.
- Click New Subscription.
- Search for and select the user.
- Choose the plan and billing cycle.
- Set the status (active or trialing) and the start/end dates (and trial end if trialing).
Manual subscriptions use the gateway type "manual" and don't charge a card. Any existing active/trialing subscription for that user is ended first, and a confirmation email is triggered.
Two ways to grant access
You can grant access via a manual subscription here, or via Assign Plan on the client's page. Assigning a plan at the client level is usually the simpler choice for B2B accounts.
Payments
Location: Admin → Payments (/admin/payments)
Every payment transaction, newest first — successful, failed and pending.
📸 Screenshot: The Payments list with a transaction selected.
For each transaction you see the customer, gateway, amount, currency, status and the plan it relates to. Filter by status and gateway.
Issuing a refund
To refund a payment:
- Find the transaction.
- Click Refund.
- By default a full refund is issued. Enter an amount for a partial refund.
The refund is sent to the original gateway and the transaction is updated with the refund amount, reason and timestamp.
How renewals work
Renewals are webhook-driven — when a gateway charges a customer for the next period, it notifies WhatsMine, which records the payment, advances the renewal date and sends a renewal email.
As a safety net, an hourly billing sync reconciles your local subscription statuses with the gateways, so a missed webhook self-heals. You can also run it manually:
php artisan billing:sync
php artisan billing:sync --gateway=stripe
php artisan billing:sync --dry-run
Renewals depend on webhooks
For automatic renewals to work, you must register the webhook endpoint and signing secret in each gateway dashboard. See Payments Integration for the exact setup and the list of events to subscribe to.
Invoices
PDF invoices are generated automatically for transactions. Customers download their own invoices from their billing page; you can see all transactions here.
➡️ Next: configure the gateways themselves in Payment Gateways.