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

# Take a month-end MRR snapshot again

> Copies the MRR figures of an ended month from the current calculation as a new version (1 more than the latest). Use it when figures of a month were corrected after its automatic snapshot and the snapshot shall follow.

Required permission: `analytics:write`.



## OpenAPI

````yaml assets/openapi-v2-finance.json post /api/analytics/finance/snapshots
openapi: 3.0.3
info:
  title: Fynn Finanzberichte API
  version: 2026-09
  description: >-
    The finance reporting API returns the same figures as the finance pages of
    the app: MRR and its movements, Accounted MRR, cash, receivables, revenue,
    the customer base, month-end snapshots with their restatements and the Excel
    books. Every amount is an exact decimal string in one currency, never
    converted and never a float. Months are `YYYY-MM` in the time zone of the
    organisation.


    Authenticate every request with an API token of your organisation
    (`Authorization: Bearer api_...`). Reading needs `analytics:read`, taking a
    snapshot and changing the settings `analytics:write`. Every route also needs
    the finance reports to be enabled for the organisation (feature flag
    `analytics.advanced`); otherwise it answers 403 `feature-not-available`.
servers:
  - url: https://coreapi.io
    description: Production
  - url: https://preview.coreapi.io
    description: Sandbox
security:
  - ApiToken: []
tags:
  - name: Datensätze
    description: Page datasets and the MRR table.
  - name: Drill-downs und Hinweise
    description: Lines behind a cell and data-quality findings.
  - name: Snapshots
    description: Month-end snapshots and their versions.
  - name: Excel-Exporte
    description: Excel books of the finance pages.
  - name: Definitionen
    description: The versioned definitions catalogue with its changelog.
  - name: Einstellungen
    description: Organisation-wide settings of the finance figures.
paths:
  /api/analytics/finance/snapshots:
    post:
      tags:
        - Snapshots
      summary: Take a month-end MRR snapshot again
      description: >-
        Copies the MRR figures of an ended month from the current calculation as
        a new version (1 more than the latest). Use it when figures of a month
        were corrected after its automatic snapshot and the snapshot shall
        follow.


        Required permission: `analytics:write`.
      operationId: takeSnapshot
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TakeFinanceSnapshotInput'
      responses:
        '201':
          description: The new version.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SnapshotView'
        '401':
          description: Missing or invalid authentication.
        '403':
          description: >-
            Missing permission `analytics:write` (`FRAMEWORK__ACCESS_DENIED`),
            or the finance reports are not enabled for the organisation (feature
            flag `analytics.advanced`, `type`
            https://fynn.dev/problems/feature-not-available).
          content:
            application/problem+json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/Problem'
                  - $ref: '#/components/schemas/FeatureNotAvailableProblem'
        '409':
          description: >-
            There is no calculation to copy from yet, or the latest calculation
            ran before the month ended (a new calculation is needed first).
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '422':
          description: >-
            Missing or invalid `month` or `reason`, or the month has not ended
            yet. The body lists them in `violations` (`propertyPath`, `message`,
            `code`).
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
      security:
        - ApiToken: []
components:
  schemas:
    TakeFinanceSnapshotInput:
      description: Takes a new version of the month-end MRR snapshot of an ended month.
      required:
        - month
        - reason
      properties:
        month:
          description: Month (YYYY-MM, time zone of the organisation). It must have ended.
          type: string
          example: 2026-08
        reason:
          description: Why the month is taken again (printed with the version).
          type: string
          maxLength: 500
          example: Kündigung vom 30.08. nachgetragen
      type: object
    SnapshotView:
      description: One version of a month-end MRR snapshot.
      properties:
        id:
          description: Id.
          type: string
        month:
          description: Month (YYYY-MM).
          type: string
          example: 2026-08
        version:
          description: >-
            Version (1 = the automatic snapshot on the 1st of the following
            month).
          type: integer
          example: 1
        takenAt:
          description: When it was taken.
          type: string
          format: date-time
        takenBy:
          description: Name of the user who took it; null for the automatic snapshot.
          type: string
          nullable: true
        reason:
          description: Reason of an explicit re-snapshot.
          type: string
          nullable: true
        checksum:
          description: SHA-256 over the copied rows.
          type: string
        builtAt:
          description: Calculation the snapshot was copied from.
          type: string
          format: date-time
        alertedAt:
          description: When its restatements first exceeded the alert share.
          type: string
          format: date-time
          nullable: true
        latest:
          description: Whether this is the newest version of the month.
          type: boolean
        definitionsVersion:
          description: >-
            Version of the definitions catalogue the snapshot was taken under
            (`v1` for snapshots taken before 28.09.2026).
          type: string
          example: v2
      type: object
    Problem:
      type: object
      description: >-
        Error body (problem+json). `type` is the error key, e.g.
        `ANALYTICS_MRR_FINANCIALS__SNAPSHOT_MONTH_NOT_ENDED`; further keys carry
        the parameters of the error.
      properties:
        status:
          type: integer
          example: 409
        type:
          type: string
          example: ANALYTICS_MRR_FINANCIALS__SNAPSHOT_MONTH_NOT_ENDED
        title:
          type: string
          example: An error occurred
        detail:
          type: string
          description: German sentence that can be shown to the user.
      required:
        - status
        - type
        - title
        - detail
      additionalProperties: true
    FeatureNotAvailableProblem:
      type: object
      description: >-
        403 body when the finance reports are not enabled for the organisation
        (feature flag `analytics.advanced`).
      properties:
        type:
          type: string
          enum:
            - https://fynn.dev/problems/feature-not-available
        title:
          type: string
          example: Feature not available
        detail:
          type: string
          example: >-
            The requested feature is not available. Please contact customer
            support.
        featureFlags:
          type: array
          items:
            type: string
          example:
            - analytics.advanced
      required:
        - type
        - title
        - detail
        - featureFlags
      additionalProperties: true
    ValidationProblem:
      type: object
      description: '422 body: one entry per rejected field in `violations`.'
      properties:
        status:
          type: integer
          example: 422
        type:
          type: string
          example: https://tools.ietf.org/html/rfc2616#section-10
        title:
          type: string
          example: Validation Failed
        detail:
          type: string
        violations:
          type: array
          items:
            $ref: '#/components/schemas/Violation'
      required:
        - status
        - type
        - violations
      additionalProperties: true
    Violation:
      type: object
      properties:
        propertyPath:
          type: string
          example: to
        message:
          type: string
          example: Der Zeitraum darf höchstens 36 Monate umfassen.
        code:
          type: string
          example: analytics.mrr_financials.range_too_long
      required:
        - propertyPath
        - message
        - code
  securitySchemes:
    ApiToken:
      type: http
      scheme: bearer
      description: >-
        API token of the organisation. Send it as Authorization: Bearer api_...
        The token is bound to exactly one organisation.

````