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

# List plans

> List the plans of your Organisation. Without a status filter all statuses are returned. Supports cursor based pagination by default and page based pagination when you pass page or offset.



## OpenAPI

````yaml get /api/plans
openapi: 3.1.0
info:
  title: Fynn V2 Plans API
  version: 2026-06
  description: >-
    REST API for the Fynn V2 Plans. Use it to define plans with upgrade and
    downgrade tiers, sell them through checkout links, and let customers switch
    tiers from your customer portal. All amounts use the minor or decimal
    representation documented per field. Authenticate setup endpoints with an
    API token and customer endpoints with a customer token.
servers:
  - url: https://coreapi.io
    description: Production
  - url: https://preview.coreapi.io
    description: Sandbox
security:
  - ApiToken: []
tags:
  - name: Plans
    description: Create and manage plans, tiers and items.
  - name: Checkout Links
    description: Sell a plan tier through a hosted checkout link.
  - name: Plan switching (customer)
    description: Customer facing upgrade and downgrade between tiers.
paths:
  /api/plans:
    get:
      tags:
        - Plans
      summary: List plans
      description: >-
        List the plans of your Organisation. Without a status filter all
        statuses are returned. Supports cursor based pagination by default and
        page based pagination when you pass page or offset.
      operationId: listPlans
      parameters:
        - name: status
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/PlanStatus'
        - name: code
          in: query
          required: false
          schema:
            type: string
          description: Filter by a code substring.
        - name: sort
          in: query
          required: false
          schema:
            type: string
            enum:
              - updatedAt
              - createdAt
              - code
              - name
        - name: order
          in: query
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        - name: cursor
          in: query
          required: false
          schema:
            type: string
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 20
        - name: page
          in: query
          required: false
          schema:
            type: integer
          description: Switches to page based pagination.
      responses:
        '200':
          description: A paginated list of plans.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlanList'
        '401':
          description: Authentication is missing or the token is invalid.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemError'
        '403':
          description: The token is valid but lacks the required permission.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemError'
components:
  schemas:
    PlanStatus:
      type: string
      enum:
        - draft
        - active
        - archived
      description: >-
        Lifecycle status. A plan is created as draft, becomes active once you
        activate it, and can later be archived. Only active plans can be sold or
        switched into.
    PlanList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/PlanListItem'
        meta:
          $ref: '#/components/schemas/ResponseMetadata'
        pagination:
          $ref: '#/components/schemas/PaginationMetadata'
    ProblemError:
      type: object
      description: >-
        Problem detail error body (application/problem+json). Additional members
        may be present depending on the error.
      properties:
        status:
          type: integer
          example: 404
        type:
          type: string
          description: Stable machine readable error key.
          example: PLAN__NOT_FOUND
        title:
          type: string
          example: An error occurred
        detail:
          type: string
          example: Plan not found.
      required:
        - status
        - type
        - title
        - detail
    PlanListItem:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 1280792f-4e23-793d-8e9c-3a1bf36630bd
        code:
          type: string
          example: pro-plan
        name:
          type: string
          example: Pro Plan
        status:
          $ref: '#/components/schemas/PlanStatus'
        currency:
          type: string
          nullable: true
          example: EUR
        tierCount:
          type: integer
          example: 3
        updatedAt:
          type: string
          format: date-time
    ResponseMetadata:
      type: object
      properties:
        count:
          type: integer
          nullable: true
          description: Number of items in this response.
        total:
          type: integer
          nullable: true
          description: Total number of items. May be omitted for performance reasons.
    PaginationMetadata:
      type: object
      description: >-
        Pagination metadata. Cursor based fields are present for the default
        cursor mode, page based fields are present when you pass page or offset.
      properties:
        cursor:
          type: string
          nullable: true
        hasMore:
          type: boolean
        nextCursor:
          type: string
          nullable: true
        prevCursor:
          type: string
          nullable: true
        limit:
          type: integer
          example: 20
        totalItems:
          type: integer
          nullable: true
        itemsPerPage:
          type: integer
          nullable: true
        currentPage:
          type: integer
          nullable: true
        totalPages:
          type: integer
          nullable: true
        pageTotalItems:
          type: integer
          nullable: true
  securitySchemes:
    ApiToken:
      type: http
      scheme: bearer
      description: >-
        Organisation API token. Send it as Authorization: Bearer api_... The
        token is scoped to a single Organisation.

````