> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sagescreen.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Reactivate a cancelled subscription

> Reactivates a cancelled subscription server-side: resumes the
Stripe subscription (or creates a new invoice if fully cancelled),
charges the customer's payment method, clears cancellation flags,
and returns the result.

Credits are **not** added directly — they are provisioned when the
resulting `invoice.paid` webhook fires, avoiding double-crediting.

Requires `council_admin`, `power_user`, or `administrator` role.

Registered as `wp_ajax_sagescreen_reactivate_subscription` — **login required**.




## OpenAPI

````yaml /openapi/private/specs/wp/wp-ajax-misc.yml post /wp-admin/admin-ajax.php?action=sagescreen_reactivate_subscription
openapi: 3.1.0
info:
  title: SageScreen — Misc AJAX Modules (User · Council · Billing · Splash · Demo)
  version: 1.0.0
servers:
  - url: https://{domain}/wp-json/sagescreen/v1
    description: WordPress REST API
    variables:
      domain:
        default: api.sagescreen.app
security: []
tags:
  - name: User – REST
    description: Zapier-facing REST endpoints
  - name: User – AJAX
    description: Council user management AJAX endpoints
  - name: User – Profile
    description: Self-service profile updates
  - name: Council – REST
    description: Zapier-facing REST endpoints for council data sync
  - name: Council – AJAX
    description: Council user and sage management AJAX endpoints
  - name: Billing – Stripe
    description: Stripe webhook and subscription endpoints
  - name: Billing – Broadcast
    description: Postmark broadcast unsubscribe endpoint
  - name: Billing – Pipedrive
    description: Pipedrive CRM ID set-* webhook endpoints (called by Zapier)
  - name: Billing – AJAX
    description: Credit ledger, reactivation, and portal AJAX endpoints
  - name: Splash
    description: Splash banner AJAX endpoints
  - name: Demo
    description: Demo signup and management AJAX endpoints
  - name: CSV Upload
    description: Bulk candidate CSV upload
paths:
  /wp-admin/admin-ajax.php?action=sagescreen_reactivate_subscription:
    post:
      tags:
        - Billing – AJAX
      summary: Reactivate a cancelled subscription
      description: >
        Reactivates a cancelled subscription server-side: resumes the

        Stripe subscription (or creates a new invoice if fully cancelled),

        charges the customer's payment method, clears cancellation flags,

        and returns the result.


        Credits are **not** added directly — they are provisioned when the

        resulting `invoice.paid` webhook fires, avoiding double-crediting.


        Requires `council_admin`, `power_user`, or `administrator` role.


        Registered as `wp_ajax_sagescreen_reactivate_subscription` — **login
        required**.
      operationId: ajaxReactivateSubscription
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ReactivateSubscriptionRequest'
      responses:
        '200':
          description: Reactivation result (check `success` field)
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ReactivateSubscriptionSuccess'
                  - $ref: '#/components/schemas/BillingInternalAjaxErrorResponse'
              examples:
                success:
                  summary: Subscription reactivated
                  value:
                    success: true
                    data:
                      success: true
                      message: Subscription reactivated successfully
                      subscription_id: sub_1NqIAB2eZvKYlo2C
                      invoice_id: in_1NqIAB2eZvKYlo2C
                      resumed: true
                      sku: P-25-2
                      name: SageScreen Starter
                      amount_charged: 11900
                      original_amount: 11900
                      discount_percent: 0
                      credits_added: 100
                      sage_credits_added: 5
                nonceFail:
                  summary: Security check failed
                  value:
                    success: false
                    data:
                      message: Security check failed
                notLoggedIn:
                  summary: Not logged in
                  value:
                    success: false
                    data:
                      message: You must be logged in
                noCouncil:
                  summary: No council found
                  value:
                    success: false
                    data:
                      message: No council found
                permissionDenied:
                  summary: Insufficient role
                  value:
                    success: false
                    data:
                      message: You do not have permission to reactivate subscriptions
                paymentFailed:
                  summary: Stripe payment failed
                  value:
                    success: false
                    data:
                      success: false
                      message: 'Payment failed: Your card was declined.'
      security:
        - wpAjaxNonce: []
components:
  schemas:
    ReactivateSubscriptionRequest:
      type: object
      required:
        - action
        - nonce
      properties:
        action:
          type: string
          const: sagescreen_reactivate_subscription
        nonce:
          type: string
          description: WP nonce for `sagescreen_reactivate_subscription`
    ReactivateSubscriptionSuccess:
      type: object
      properties:
        success:
          type: boolean
          const: true
          examples:
            - true
        data:
          type: object
          required:
            - success
            - message
            - subscription_id
            - invoice_id
            - resumed
            - sku
            - name
            - amount_charged
            - original_amount
            - discount_percent
            - credits_added
            - sage_credits_added
          properties:
            success:
              type: boolean
              description: Inner success flag from `process_reactivation()`
              examples:
                - true
            message:
              type: string
              examples:
                - Subscription reactivated successfully
            subscription_id:
              type: string
              description: Stripe subscription ID
              examples:
                - sub_1NqIAB2eZvKYlo2C
            invoice_id:
              type: string
              description: Stripe invoice ID for the reactivation charge
              examples:
                - in_1NqIAB2eZvKYlo2C
            resumed:
              type: boolean
              description: >-
                Whether an existing subscription was resumed (vs. new invoice
                created)
              examples:
                - true
            sku:
              type: string
              description: Subscription product SKU
              examples:
                - P-25-2
            name:
              type: string
              description: Product display name
              examples:
                - SageScreen Starter
            amount_charged:
              type: integer
              description: Amount charged in cents (after discount)
              examples:
                - 11900
            original_amount:
              type: integer
              description: Original amount in cents (before discount)
              examples:
                - 11900
            discount_percent:
              type: integer
              description: Discount percentage applied (0 if none)
              examples:
                - 0
            credits_added:
              type: integer
              description: >-
                Number of screen credits that will be added by the invoice.paid
                webhook
              examples:
                - 100
            sage_credits_added:
              type: integer
              description: >-
                Number of sage credits that will be added by the invoice.paid
                webhook
              examples:
                - 5
    BillingInternalAjaxErrorResponse:
      type: object
      description: |
        Standard AJAX error. The `data` field is either a plain string
        or an object with a `message` key and optional context fields.
      properties:
        success:
          type: boolean
          const: false
          examples:
            - false
        data:
          oneOf:
            - type: string
              examples:
                - Security check failed
            - type: object
              properties:
                success:
                  type: boolean
                  description: Inner success flag (present on reactivation errors)
                  examples:
                    - false
                message:
                  type: string
                  examples:
                    - You must be logged in
  securitySchemes:
    wpAjaxNonce:
      type: apiKey
      in: query
      name: nonce
      description: WordPress AJAX nonce (passed as form field, verified per-action)

````