What Is Suspension?
Suspension temporarily disables a client's active services. It is a reversible action — a suspended service can be reactivated once the underlying cause is resolved (typically an unpaid invoice). This is distinct from termination, which is permanent and results in data deletion.
Automatic Suspension
Commerce automatically suspends services on overdue invoices via the scheduled command:
php artisan commerce:check-overdue-services
This command is typically configured as a daily cron job. It:
- Finds all services with an invoice that is past its due date and past the configured grace period (Admin → Settings → Billing → Grace period days).
- Marks each affected service as
Suspended. - Dispatches a
SuspendHostingAccountJobfor each service with a provisioning module (e.g. Opterius Panel integration). - Sends a suspension notification email to the client's primary contact.
Grace Period
The grace period is the number of days after an invoice's due date before suspension is triggered. The default is 3 days. Configure at Admin → Settings → Billing → Overdue grace period.
| Invoice due | Grace period | Suspension triggered |
|---|---|---|
| April 1 | 3 days | April 4 (if still unpaid) |
Manual Suspension (All Services)
To manually suspend all active services for a client:
- Go to Admin → Clients → [Client record].
- Click Suspend All Services in the client record header actions.
- A confirmation modal appears — enter your password to confirm.
- All active services are suspended and the provisioning module suspends the hosting accounts.
Manual Suspension (Single Service)
To suspend a single service:
- Go to Admin → Clients → [Client] → Services.
- Click the service to open its detail.
- Click Suspend Service.
- Confirm with the password confirmation modal.
What Suspension Does
When a service is suspended:
| Component | Effect |
|---|---|
| Opterius Panel hosting account | Account suspended via Panel API — site shows a suspension page |
| Service status in Commerce | Changed from Active to Suspended |
| Client portal service list | Status badge changes to orange "Suspended" |
| New orders | Client can still place new orders and pay invoices while suspended |
| Login | Client can still log into the client portal |
[!IMPORTANT] Suspension does not prevent a client from logging into the client portal or paying invoices. It only restricts their hosted services.
Automatic Unsuspension
When a client pays an overdue invoice, Commerce automatically dispatches UnsuspendHostingAccountJob for all services that were suspended due to that invoice. This happens immediately upon payment confirmation (webhook receipt for online gateways, or when staff manually mark the invoice as paid).
The job:
- Calls the provisioning module to unsuspend the hosting account.
- Updates the service status from
SuspendedtoActive. - Sends a reactivation notification email to the client.
Manual Unsuspension
If you need to unsuspend services without waiting for invoice payment (e.g. you have agreed a payment plan and want to restore service immediately):
All Services
- Go to Admin → Clients → [Client record].
- Click Unsuspend All in the client record header actions.
- Confirm with the password confirmation modal.
Single Service
- Go to Admin → Clients → [Client] → Services → [Service].
- Click Unsuspend Service.
- Confirm.
[!TIP] Before manually unsuspending without payment, add a sticky note to the client record explaining the arrangement (e.g. "Payment plan agreed — unsuspended manually. Payment due by 2026-04-30"). See Client Notes.
Suspension vs Termination
| Aspect | Suspended | Terminated |
|---|---|---|
| Reversible | Yes | No |
| Data retained | Yes | No (deleted from server) |
| Client can log in | Yes | Yes (account remains) |
| Client can pay invoices | Yes | N/A |
| Trigger | Overdue invoice or manual | Manual or cancellation request |