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

# Get Refund Preview

> Previews the prorated refund that would result from canceling a subscription. Runs the
same validation as a real prorated refund but issues no refund and creates no records, so
it is safe to call repeatedly. Returns the prorated amount available to refund, the amount
paid on the latest invoice, the current billing period, and the card that would be
refunded.



## OpenAPI

````yaml /openapi.json get /v1/subscriptions/{id}/refund_preview
openapi: 3.1.0
info:
  title: Flex API
  description: >-
    The Flex API powers HSA/FSA payment processing for healthcare commerce:
    checkout sessions, payment intents, subscriptions, customers, refunds,
    disputes, and eligibility. Authenticate with your partner API key as a
    Bearer token. All endpoints are scoped to your partner account, and test
    mode is fully supported via test API keys.
  version: 0.1.0
servers:
  - url: https://api.withflex.com
security:
  - BearerAuth: []
tags:
  - name: Balance Transactions
  - name: Captures
  - name: Checkout Sessions
  - name: Coupons
  - name: Customers
  - name: Disputes
  - name: Events
  - name: Exports
  - name: Files
  - name: Invoices
  - name: Letters
  - name: Orders
  - name: Payment Intents
  - name: Payment Links
  - name: Payouts
  - name: Prices
  - name: Products
  - name: Promo Codes
  - name: Receipts
  - name: Refunds
  - name: Setup Intents
  - name: Shipping Rates
  - name: Subscriptions
paths:
  /v1/subscriptions/{id}/refund_preview:
    get:
      tags:
        - Subscriptions
      summary: Get Refund Preview
      description: >-
        Previews the prorated refund that would result from canceling a
        subscription. Runs the

        same validation as a real prorated refund but issues no refund and
        creates no records, so

        it is safe to call repeatedly. Returns the prorated amount available to
        refund, the amount

        paid on the latest invoice, the current billing period, and the card
        that would be

        refunded.
      operationId: v1.subscriptions.refund_preview
      parameters:
        - in: path
          name: id
          required: true
          schema:
            examples:
              - fsub_01J9XR8M3K7VZ8N2YB4WJ6T0RA
            type: string
          style: simple
          example: fsub_01J9XR8M3K7VZ8N2YB4WJ6T0RA
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundPreviewResponse'
              example:
                prorated_amount_available_to_refund: 2500
                invoice_amount_paid: 2500
                current_period_start: '2026-06-15T14:30:00Z'
                current_period_end: '2026-06-15T14:30:00Z'
                payment_method_id: fpm_01J9XR8M3K7VZ8N2YB4WJ6T0RA
                last4: '4242'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpErrorOut'
              example:
                code: string
                detail: string
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpErrorOut'
              example:
                code: string
                detail: string
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpErrorOut'
              example:
                code: string
                detail: string
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpErrorOut'
              example:
                code: string
                detail: string
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
              example:
                detail:
                  - loc:
                      - string
                    msg: string
                    type: string
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpErrorOut'
              example:
                code: string
                detail: string
components:
  schemas:
    RefundPreviewResponse:
      description: >-
        The result of previewing a prorated refund for a subscription
        cancellation, without issuing any refund. Reflects what would be
        refunded based on the remaining billing period.
      type: object
      required:
        - current_period_end
        - current_period_start
        - invoice_amount_paid
        - prorated_amount_available_to_refund
      properties:
        prorated_amount_available_to_refund:
          description: >-
            Prorated amount available to refund, in the smallest currency unit
            (e.g., `1499` = $14.99 USD), based on the unused portion of the
            current billing period.
          type: integer
          format: int64
          example: 2500
        invoice_amount_paid:
          description: >-
            Total amount paid on the subscription's latest invoice, in the
            smallest currency unit (e.g., `2999` = $29.99 USD).
          type: integer
          format: int64
          example: 2500
        current_period_start:
          $ref: '#/components/schemas/Timestamptz'
          description: Start of the current billing period, as an RFC 3339 timestamp.
          example: '2026-06-15T14:30:00Z'
        current_period_end:
          $ref: '#/components/schemas/Timestamptz'
          description: End of the current billing period, as an RFC 3339 timestamp.
          example: '2026-06-15T14:30:00Z'
        payment_method_id:
          description: The payment method ID that would be refunded, if available
          type:
            - string
            - 'null'
          example: fpm_01J9XR8M3K7VZ8N2YB4WJ6T0RA
        last4:
          description: Last 4 digits of the card that would be refunded, if available
          type:
            - string
            - 'null'
          example: '4242'
      example:
        prorated_amount_available_to_refund: 2500
        invoice_amount_paid: 2500
        current_period_start: '2026-06-15T14:30:00Z'
        current_period_end: '2026-06-15T14:30:00Z'
        payment_method_id: fpm_01J9XR8M3K7VZ8N2YB4WJ6T0RA
        last4: '4242'
    HttpErrorOut:
      title: HttpError
      description: The error response returned when a request cannot be completed.
      type: object
      required:
        - code
        - detail
      properties:
        code:
          description: A short machine-readable error code identifying the type of error.
          type: string
        detail:
          description: A human-readable explanation of what went wrong.
          type: string
      example:
        code: string
        detail: string
    HTTPValidationError:
      description: The error response returned when request validation fails (HTTP 422).
      type: object
      required:
        - detail
      properties:
        detail:
          description: The list of validation errors, one entry per invalid field.
          type: array
          items:
            $ref: '#/components/schemas/ValidationErrorItem'
      example:
        detail:
          - loc:
              - string
            msg: string
            type: string
    Timestamptz:
      description: >-
        A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g.
        `2026-06-15T14:30:00Z`).
      type: string
      example: string
    ValidationErrorItem:
      description: >-
        Validation errors have their own schema to provide context for invalid
        requests eg. mismatched types and out of bounds values. There may be any
        number of these per 422 UNPROCESSABLE ENTITY error.
      type: object
      required:
        - loc
        - msg
        - type
      properties:
        loc:
          description: >-
            The location as a [`Vec`] of [`String`]s -- often in the form
            `["body", "field_name"]`, `["query", "field_name"]`, etc. They may,
            however, be arbitarily deep.
          type: array
          items:
            type: string
        msg:
          description: The message accompanying the validation error item.
          type: string
        type:
          description: >-
            The type of error, often "type_error" or "value_error", but
            sometimes with more context like as "value_error.number.not_ge"
          type: string
      example:
        loc:
          - string
        msg: string
        type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: Use a Bearer token to access this API.

````