> ## 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.

# Get Stripe billing portal URL

> Generates a one-time Stripe Customer Portal session URL for the
current user's council. The portal allows customers to manage
payment methods, view invoices, and update billing details.

Requires the user to be logged in and pass the
`sage_screen_can_access_billing()` capability check.

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




## OpenAPI

````yaml /openapi/private/specs/wp/wp-ajax-misc.yml post /wp-admin/admin-ajax.php?action=sagescreen_get_stripe_portal_url
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_get_stripe_portal_url:
    post:
      tags:
        - Billing – AJAX
      summary: Get Stripe billing portal URL
      description: >
        Generates a one-time Stripe Customer Portal session URL for the

        current user's council. The portal allows customers to manage

        payment methods, view invoices, and update billing details.


        Requires the user to be logged in and pass the

        `sage_screen_can_access_billing()` capability check.


        Registered as `wp_ajax_sagescreen_get_stripe_portal_url` — **login
        required**.
      operationId: ajaxGetStripePortalUrl
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/GetStripePortalUrlRequest'
      responses:
        '200':
          description: Portal URL result (check `success` field)
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/GetStripePortalUrlSuccess'
                  - $ref: '#/components/schemas/BillingInternalAjaxErrorResponse'
              examples:
                success:
                  summary: Portal URL generated
                  value:
                    success: true
                    data:
                      url: >-
                        https://billing.stripe.com/p/session/test_YWNjdF8xTnFJQ...
                notLoggedIn:
                  summary: Not logged in
                  value:
                    success: false
                    data:
                      message: Not logged in
                portalFailed:
                  summary: Unable to generate portal link
                  value:
                    success: false
                    data:
                      message: Unable to generate billing portal link
      security:
        - wpAjaxNonce: []
components:
  schemas:
    GetStripePortalUrlRequest:
      type: object
      required:
        - action
        - nonce
      properties:
        action:
          type: string
          const: sagescreen_get_stripe_portal_url
        nonce:
          type: string
          description: WP nonce for `sagescreen_frontend_nonce`
    GetStripePortalUrlSuccess:
      type: object
      properties:
        success:
          type: boolean
          const: true
          examples:
            - true
        data:
          type: object
          required:
            - url
          properties:
            url:
              type: string
              format: uri
              description: One-time Stripe Customer Portal session URL
              examples:
                - https://billing.stripe.com/p/session/test_YWNjdF8xTnFJQ...
    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)

````