Archive an unpaid org after billing grace
Use this procedure after billing grace has expired for a customer and finance has signed off on suspension. The flow is a two-stage timer: disable immediately (US-PLAT-5), then hard-delete after 90 days if the customer does not pay and reactivate. The 90-day retention window matches D79’s 7-day org-delete grace extended for paused-but-reversible billing cases — the longer window exists specifically so a late-paying customer can return without data loss.
Procedure
-
Open the finance ticket. Confirm the
grace_expired_attimestamp and the notification email to the Owner. Do not proceed without both. -
Call
POST /api/v1/platform/orgs/{org_id}/disablewithreason = "billing_grace_expired ticket=<id>".
-
Verify the org’s
statusis nowdisabledand every active session in that org has been revoked (session_evictedWebSocket message). Gateway WS connections from that org close within a few seconds (cloud/internal/platform/org_service.go:159). -
Set a follow-up for 90 days from today with the org ID, the ticket number, and the expected purge date.
-
Between day 1 and day 90 the org remains disabled but recoverable. If finance marks the account paid, call
POST /api/v1/platform/orgs/{org_id}/enable(org_service.go:177) and close the ticket. No audit cleanup is required — theorg.disabled_by_platform/org.enabled_by_platformpair stays in both audit logs forever.
- On day 90, if the org is still disabled and finance has not reopened the ticket, initiate platform-tier hard-delete:
DELETE /api/v1/platform/orgs/{org_id}withconfirmation_textmatching the org name exactly (US-PLAT-6). This writesplatform.org_deletion_initiatedand starts the 7-day final-purge grace window enforced by the platform API. Total wall-clock time from suspension to hard purge is therefore 97 days.
Common variations
- Customer pays partway through the 90 days:
enablethe org. All users can log in immediately. Data is intact. - Customer asks for their data before purge: route the request via Per-customer data export while the org is still in
disabledstate. The export tooling works on disabled orgs. - Finance asks to skip the 90-day window: refuse unless the request is in writing from the VP of Finance. The 90 days exist to protect Novalien from bad-faith deletion disputes, not as a courtesy.
Related
- Delete organisation — the customer-driven equivalent (Owner self-service).
- Per-customer data export — pre-purge data handover.
- Audit expectations — what both sides see across the 97-day lifecycle.