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

> **Beta. This endpoint is unstable and may still change without notice.** Pin against the dated version and watch the changelog.

Returns the offers of the organisation as a paginated list.



## OpenAPI

````yaml assets/openapi-v2-offers.json get /offers
openapi: 3.1.0
info:
  title: Fynn Angebote API (Beta)
  version: 2026-06
  description: >-
    **Beta / Unstable.** The Fynn Angebote (offers) API lets you read, update,
    publish, approve and accept offers programmatically. It is the actively
    maintained surface that replaces the older offer endpoints (still available
    but deprecated, removed on 2026-08-01).


    These endpoints are new and may still change without notice while the
    surface settles. Pin against the dated version and watch the changelog
    before relying on them in production.


    Authenticate every request with an API token of your organisation
    (`Authorization: Bearer api_...`). Documents are returned as media
    references; see the note on each media `id` for how to download the file.
servers:
  - url: https://coreapi.io
    description: Production
  - url: https://preview.coreapi.io
    description: Sandbox
security:
  - ApiToken: []
tags:
  - name: Offers
    description: Read, update, publish and accept offers. Beta.
  - name: Offer approval
    description: Internal approval flow for offers. Beta.
paths:
  /offers:
    get:
      tags:
        - Offers
      summary: List offers
      description: >-
        **Beta. This endpoint is unstable and may still change without notice.**
        Pin against the dated version and watch the changelog.


        Returns the offers of the organisation as a paginated list.
      operationId: listOffers
      parameters:
        - name: page
          in: query
          description: The collection page number
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: integer
            default: 1
          style: form
          explode: false
          allowReserved: false
        - name: limit
          in: query
          description: The number of items per page
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: integer
            default: 30
            minimum: 0
            maximum: 100
          style: form
          explode: false
          allowReserved: false
        - name: status
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: string
          style: form
          explode: false
          allowReserved: false
        - name: status[]
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          allowReserved: false
        - name: contactPerson
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: string
          style: form
          explode: false
          allowReserved: false
        - name: contactPerson[]
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          allowReserved: false
        - name: dealType
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: string
          style: form
          explode: false
          allowReserved: false
        - name: dealType[]
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          allowReserved: false
        - name: acceptanceMode
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: string
          style: form
          explode: false
          allowReserved: false
        - name: acceptanceMode[]
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          allowReserved: false
        - name: exists[subscription]
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: boolean
          style: form
          explode: false
          allowReserved: false
        - name: order[number]
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: string
            enum:
              - asc
              - desc
          style: form
          explode: false
          allowReserved: false
        - name: order[name]
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: string
            enum:
              - asc
              - desc
          style: form
          explode: false
          allowReserved: false
        - name: order[status]
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: string
            enum:
              - asc
              - desc
          style: form
          explode: false
          allowReserved: false
        - name: order[dealType]
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: string
            enum:
              - asc
              - desc
          style: form
          explode: false
          allowReserved: false
        - name: order[acceptanceMode]
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: string
            enum:
              - asc
              - desc
          style: form
          explode: false
          allowReserved: false
        - name: order[signedAt]
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: string
            enum:
              - asc
              - desc
          style: form
          explode: false
          allowReserved: false
        - name: order[validUntil]
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: string
            enum:
              - asc
              - desc
          style: form
          explode: false
          allowReserved: false
        - name: order[createdAt]
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: string
            enum:
              - asc
              - desc
          style: form
          explode: false
          allowReserved: false
        - name: order[updatedAt]
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: string
            enum:
              - asc
              - desc
          style: form
          explode: false
          allowReserved: false
        - name: signed
          in: query
          description: ''
          required: false
          deprecated: false
          allowEmptyValue: true
          schema:
            type: string
          style: form
          explode: false
          allowReserved: false
          example: true
      responses:
        '200':
          description: Offer collection
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Offer-OfferRead'
                  meta:
                    type: object
                    properties:
                      pagination:
                        type: object
                        properties:
                          totalItems:
                            type: integer
                          itemsPerPage:
                            type: integer
                          currentPage:
                            type: integer
                          lastPage:
                            type: integer
                          pageTotalItems:
                            type: integer
      deprecated: false
      security:
        - ApiToken: []
components:
  schemas:
    Offer-OfferRead:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          readOnly: true
          type: string
        subscription:
          description: >-
            Linked subscription. Set when the offer extends or renews an
            existing subscription, and also once an accepted offer has been
            converted into a subscription. Null when the offer is not linked to
            a subscription.
          anyOf:
            - $ref: '#/components/schemas/Subscription-OfferRead'
            - type: 'null'
        customer:
          anyOf:
            - $ref: '#/components/schemas/Customer-OfferRead'
            - type: 'null'
        number:
          type: string
        name:
          type:
            - string
            - 'null'
        status:
          readOnly: true
          type: string
          enum:
            - open
            - signing
            - awaiting_invoice_details
            - signed
            - archived
        sections:
          type: array
          items:
            type: string
        customVariables:
          type:
            - object
            - 'null'
          additionalProperties:
            type: string
        locale:
          readOnly: true
          type: string
        recipients:
          readOnly: true
          type: array
          items:
            $ref: '#/components/schemas/OfferRecipient-OfferRead'
        purchaseOrderDocument:
          readOnly: true
          description: >-
            Media ID of the purchase order uploaded by the buyer. To download
            it, call GET /media/{id}/download with your API token, or mint a
            shareable link with POST /media/{id}/download-token and then GET
            /media/{id}/download/{token}.
          type:
            - string
            - 'null'
          format: uuid
          example: ad8c7c0e-3b1a-4f5c-8b7a-5d5b6a4b2f1e
        auditLogDocument:
          readOnly: true
          description: >-
            Media ID of the acceptance and audit-trail document. To download it,
            call GET /media/{id}/download with your API token, or mint a
            shareable link with POST /media/{id}/download-token and then GET
            /media/{id}/download/{token}.
          type:
            - string
            - 'null'
          format: uuid
          example: ad8c7c0e-3b1a-4f5c-8b7a-5d5b6a4b2f1e
        signedDocument:
          readOnly: true
          description: >-
            Media ID of the fully signed offer PDF. To download it, call GET
            /media/{id}/download with your API token, or mint a shareable link
            with POST /media/{id}/download-token and then GET
            /media/{id}/download/{token}.
          type:
            - string
            - 'null'
          format: uuid
          example: ad8c7c0e-3b1a-4f5c-8b7a-5d5b6a4b2f1e
        signedAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          type:
            - string
            - 'null'
        autoActivateSubscription:
          default: true
          example: true
          type: boolean
        acceptanceMode:
          description: >-
            How the offer is accepted: click, esignature or print. Defaults to
            click.
          default: click
          example: click
          type: string
        dealType:
          description: >-
            Deal type, set automatically when the offer is published:
            new_business, expansion, renewal or one_off. Read-only.
          default: new_business
          example: new_business
          type: string
        validUntil:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          description: >-
            Date until which the offer is valid. Acting on an expired offer is
            rejected with HTTP 410. Set when the offer is published; null for
            historical offers.
          type:
            - string
            - 'null'
        createdAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date and time when the resource was created.
          type: string
        updatedAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date and time when the resource was last updated.
          type: string
        contactPerson:
          readOnly: true
          description: The contact person of the offer
          anyOf:
            - $ref: '#/components/schemas/ContactPerson-OfferRead'
            - type: 'null'
        signed:
          readOnly: true
          type: boolean
        issuedAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          type: string
        publishedVersionHash:
          readOnly: true
          type:
            - string
            - 'null'
        currentVersionHash:
          readOnly: true
          type:
            - string
            - 'null'
    Subscription-OfferRead:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          readOnly: true
          example: ad8f1c2c-3b1c-4b0a-8b0a-0b0b0b0b0b0b
          type: string
        externalId:
          type:
            - string
            - 'null'
        number:
          description: The number of the subscription.
          example: S-00000001
          type: string
        name:
          description: >-
            The name of the subscription. Defaults to the name of the plan. This
            will be used in the invoice for the grouping headers.
          example: Fitness M
          type:
            - string
            - 'null'
        billingGroup:
          description: The billing group defines the billing cycle of the subscription.
          anyOf:
            - $ref: '#/components/schemas/BillingGroup-OfferRead'
            - type: 'null'
        periods:
          type: array
          items:
            $ref: '#/components/schemas/TermPeriod-OfferRead'
        status:
          readOnly: true
          description: |-
            The status of the subscription.

            Possible values:
             * `draft`: The subscription is in draft mode and not active yet.
             * `active`: The subscription is active and will be billed.
             * `paused`: The subscription is paused and will not be billed.
             * `cancelled`: The subscription is cancelled and will not be billed anymore.
             * `terminated`: The subscription is terminated and will not be billed anymore.
             * `voided`: The subscription is voided and will not be billed anymore. Subscription will be removed from all statistics.
             * `offer`: The subscription is an offer and waiting for acceptance.
          example: active
        activatedAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date the subscription was activated.
          type:
            - string
            - 'null'
        poNumber:
          description: The po number of the subscription.
          example: PO-00000001
          type:
            - string
            - 'null'
        contractDetails:
          $ref: '#/components/schemas/ContractDetails-OfferRead'
          description: The contract details of the subscription.
        trialEndsOn:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date the trial period ends.
          type:
            - string
            - 'null'
        customFields:
          additionalProperties:
            type: string
          type:
            - object
            - 'null'
          description: >-
            Custom fields for the entity. The keys are the field names and the
            values are the field values. They need to be configured under
            \"/custom-fields\" in the API documentation. The input is validated
            against the configuration. For more details see [Custom Fields
            Guide](/guide/tenant/custom-fields)
          example:
            field1: value1
            field2: value2
        statistics:
          readOnly: true
          anyOf:
            - $ref: '#/components/schemas/SubscriptionStatistics-OfferRead'
            - type: 'null'
        createdAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date and time when the resource was created.
          type: string
        updatedAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The date and time when the resource was last updated.
          type: string
        nextBillingDate:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The next billing date of the subscription.
          type:
            - string
            - 'null'
        lastBillingAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          description: The last billing date of the subscription.
          type:
            - string
            - 'null'
        partner:
          readOnly: true
          description: The partner of the customer.
          anyOf:
            - $ref: '#/components/schemas/PartnerResource-OfferRead'
            - type: 'null'
    Customer-OfferRead:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          readOnly: true
          example: 00000000-0000-0000-0000-000000000000
          type: string
        customerNumber:
          minLength: 2
          maxLength: 255
          example: CUSTOMER-000
          nullable: false
        timeZone:
          type: string
          example: Europe/Berlin
          description: IANA time zone
          readOnly: true
          default: Europe/Berlin
        firstName:
          minLength: 2
          maxLength: 255
          description: Can be empty if the customer is a company.
          example: John
          nullable: true
        lastName:
          minLength: 2
          maxLength: 255
          description: Can be empty if the customer is a company.
          example: Doe
          nullable: true
        currencyCode:
          description: >-
            Can be empty. In this case the default currency of the tenant is
            used.
          externalDocs:
            url: https://schema.org/priceCurrency
          example: EUR
          type: string
        companyName:
          minLength: 2
          maxLength: 255
          example: Acme Inc.
          type:
            - string
            - 'null'
        datevId:
          minLength: 2
          maxLength: 255
          description: The ID of the customer in DATEV
          example: '123456789'
          type:
            - string
            - 'null'
        status:
          default: STATUS_ACTIVE
          example: STATUS_ACTIVE
          enum:
            - STATUS_ACTIVE
            - STATUS_ARCHIVED
            - STATUS_SUSPENDED
    OfferRecipient-OfferRead:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          readOnly: true
          type: string
        email:
          type: string
        firstName:
          type:
            - string
            - 'null'
        lastName:
          type:
            - string
            - 'null'
        role:
          type: string
          enum:
            - read
            - sign
            - countersigner
        createdAt:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          readOnly: true
          type: string
        signingStatus:
          readOnly: true
          default: not_started
          example: not_started
          type: string
          enum:
            - pending
            - started
            - signed
            - not_started
            - archived
        signingLog:
          readOnly: true
          type: array
          items:
            type: string
        signedDocument:
          readOnly: true
          type:
            - string
            - 'null'
          format: uuid
          example: ad8c7c0e-3b1a-4f5c-8b7a-5d5b6a4b2f1e
        link:
          readOnly: true
          description: Link to the offer for the recipient
          example: https://example.com/o/1/recipient-1
          type: string
    ContactPerson-OfferRead:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
        avatar:
          type:
            - string
            - 'null'
        phone:
          type:
            - string
            - 'null'
        linkedin:
          type:
            - string
            - 'null'
        position:
          type:
            - string
            - 'null'
        website:
          type:
            - string
            - 'null'
    BillingGroup-OfferRead:
      type: object
      description: ''
      deprecated: false
    TermPeriod-OfferRead:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          readOnly: true
          type: string
        contractPeriodCount:
          readOnly: true
          type: integer
        contractPeriod:
          $ref: '#/components/schemas/Interval-OfferRead'
          example: 1M
          description: |

            The billing interval describes when the item is billed.
            If the value is null, the item is billed only once (one-time).
            If the value is not null, the item is billed periodically.
            The value is a string in the following format: [number][unit]
            The unit can be one of the following: H, D, W, M, Y
          nullable: false
          readOnly: true
        cancellationPeriod:
          $ref: '#/components/schemas/Interval-OfferRead'
          example: 1M
          description: |

            The billing interval describes when the item is billed.
            If the value is null, the item is billed only once (one-time).
            If the value is not null, the item is billed periodically.
            The value is a string in the following format: [number][unit]
            The unit can be one of the following: H, D, W, M, Y
          nullable: false
          readOnly: true
    ContractDetails-OfferRead:
      type: object
      description: ''
      deprecated: false
      properties:
        contractStart:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          description: The start of the contract.
          type: string
        contractEnd:
          format: date-time
          example: '2021-01-01T00:00:00+00:00'
          description: The end of the contract.
          type:
            - string
            - 'null'
    SubscriptionStatistics-OfferRead:
      type: object
      description: ''
      deprecated: false
      properties:
        unpaidGrossAmount:
          type: object
          required:
            - inputValue
            - currency
          nullable: false
          properties:
            amount:
              type: number
              example: 1000
              description: >-
                The amount as big integer, e.g. 1000 = 10.00 (precision = 2),
                10000 = 10.000 (precision = 3)
              readOnly: true
            precision:
              type: integer
              example: 2
              description: >-
                The precision of the amount, which is the number of digits after
                the decimal separator, e.g. 2 = 10.00, 3 = 10.000
              readOnly: true
            currency:
              type: string
              example: EUR
              description: The currency code, e.g. EUR, USD, CHF
            i18n:
              type: string
              example: 10,00 €
              description: The formatted amount, e.g. 10.00 €, 10.00 $, 10.00 CHF
              readOnly: true
            inputValue:
              type: string
              example: '10.00'
              description: Amount which can be used as input value, e.g. 10.00, 10.000.
          readOnly: true
          example:
            amount: 1000
            precision: 2
            currency: EUR
            i18n: 10,00 €
            inputValue: '10.00'
        totalContractValue:
          type: object
          required:
            - inputValue
            - currency
          nullable: false
          properties:
            amount:
              type: number
              example: 1000
              description: >-
                The amount as big integer, e.g. 1000 = 10.00 (precision = 2),
                10000 = 10.000 (precision = 3)
              readOnly: true
            precision:
              type: integer
              example: 2
              description: >-
                The precision of the amount, which is the number of digits after
                the decimal separator, e.g. 2 = 10.00, 3 = 10.000
              readOnly: true
            currency:
              type: string
              example: EUR
              description: The currency code, e.g. EUR, USD, CHF
            i18n:
              type: string
              example: 10,00 €
              description: The formatted amount, e.g. 10.00 €, 10.00 $, 10.00 CHF
              readOnly: true
            inputValue:
              type: string
              example: '10.00'
              description: Amount which can be used as input value, e.g. 10.00, 10.000.
          readOnly: true
          example:
            amount: 1000
            precision: 2
            currency: EUR
            i18n: 10,00 €
            inputValue: '10.00'
    PartnerResource-OfferRead:
      type: object
      description: ''
      deprecated: false
      properties:
        id:
          description: The ID of the partner
          example: ad8f7e7d-3b3b-4b3b-8b3b-3b3b3b3b3b3b
          type: string
        name:
          description: The name of the partner
          example: John Doe
          type: string
        number:
          description: The customer number of the partner
          example: '123456'
          type: string
        email:
          description: The email address of the partner
          example: partner@example.com
          type:
            - string
            - 'null'
    Interval-OfferRead:
      type: object
      description: ''
      deprecated: false
  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.

````