Skip to main content

Contract Declarations

Overview​

Open /contract-declarations in the admin app to review withdrawals and cancellations across accounts. The queue is ordered oldest first and defaults to open cases. Filter by status (open, processed, rejected or all) and kind (withdrawal or cancellation); Load more appends the next page.

Each card shows the details stored at receipt time, including the declarant, contract description or snapshot, requested cancellation terms, receipt delivery state, case reference and retention date. A public declaration has no account until an operator matches it.

Processing a case​

  1. For a public declaration, use Match to associate it with an account and a plan or paid extension purchase. Confirm the target contract before acting in Stripe.
  2. Review the request. Refunds are issued manually in Stripe. For a withdrawal, record the Stripe refund reference (re_…) when closing it. For a cancellation, mark whether the subscription was changed in Stripe.
  3. Use Close to mark the case processed or rejected and add a note. An open case cannot be closed twice.
  4. Use Extend retention when a legal hold requires a later date. The date can only move forward.

An ordinary signed-in cancellation may already show processed because Stripe accepted the period-end change. Extraordinary and public requests wait for an operator. Closing a declaration records the decision; it does not issue a refund or make a Stripe change by itself.

Permissions and API​

contract-declarations:read opens the queue and reads cases. contract-declarations:edit gates Match, Close and Extend retention; mutations also require an interactive session. These are admin-scoped permissions, seeded to system_admin, and are unavailable in account role pickers. The REST and GraphQL operations are documented in Contract declarations.