Skip to content

Troubleshooting: Billing & Lockouts

EaseLab enters read-only mode when trials expire, subscriptions lapse, or platform admins manually lock a tenant. This guide explains symptoms, causes, and resolution.

Read-only mode symptoms

SymptomDetail
Lock banner in UIShows lock reason message
Can view dataLists, reports, and search work
Cannot saveCreate/edit/delete return HTTP 403
Error codeTENANT_READONLY in API response
Billing works/billing routes are exempt

Automatic lock triggers

TriggerLock reason (typical)
Trial expiredYour free trial has ended...
Subscription expiredYour subscription period has ended...
Manual lockCustom reason from platform admin

The TenantLockMiddleware enforces this on all mutation requests.

How to unlock

Self-service (tenant owner)

  1. Go to Billing → Subscription or Choose Plan.
  2. Select a plan and complete checkout.
  3. Submit manual payment proof (JazzCash, Easypaisa, bank transfer).
  4. Wait for platform admin approval.
  5. Lock clears automatically on approval.

See Billing: Plans & Checkout.

Platform admin unlock

  1. Verify payment received.
  2. Update tenant payment status to Current.
  3. Approve pending payment in admin portal.
  4. Or manually Unlock tenant: POST /admin/tenants/{id}/unlock.

See Tenant Management.

Payment not approved

CheckAction
Proof uploaded?Re-submit on checkout page
Correct amount?Match plan price exactly
Reference number?Include transaction ID
Processing timeAllow 1–2 business days

Contact platform billing with payment screenshot and tenant slug.

Trial extension

Only platform admins can extend trials:

  1. Open tenant in admin portal.
  2. Set new Trial ends at date.
  3. Set payment status to Trial.
  4. Unlock if currently locked.

Subscription usage limits

Separate from lock — plan limits may block specific features:

Limit hitSymptom
Max usersCannot add staff
Max invoicesWarning or block on create
Analyzer feature403 on analyzer routes

Check usage: GET /billing/usage

See Usage & Limits.

Payment account details wrong

If checkout shows incorrect JazzCash/bank details:

  • Platform admin must update Payment Account.
  • Do not send payments to unverified accounts.

API error reference

json
{
  "code": "TENANT_READONLY",
  "readonlyMode": true,
  "message": "Your lab is in read-only mode. Subscribe to restore full access.",
  "tenant": { "paymentStatus": "Unpaid", "isLocked": true }
}

Client apps should detect readonlyMode and show billing CTA.

Prevention

PracticeBenefit
Monitor trial end dateRenew before lock
Set calendar reminder7 days before expiry
Keep payment proof readyFaster manual approval
Upgrade plan before limitsUninterrupted operations

Ease Lab — Cloud Pathology Lab Management