---
title: "Get offers"
method: GET
path: "/offer"
tags: ["Offer"]
---

# Get offers

`GET /offer`

## Request

- Base URL: `https://api3.autarc.energy/v1`
- URL: `https://api3.autarc.energy/v1/offer`
- Auth: API key in header `X-Api-Key`

Returns offers and their items for the company ordered by creation time
(newest first). Each row is `{ offer, offerItems, offerDiscounts }`.
`GET /offer/{offerId}` is the offer row only; use `GET /offer/{offerId}/items`
and `GET /offer/{offerId}/discounts` for one offer's paginated lines and
discounts (`items` + `metadata`).

Every `offer` carries `net` and `gross`: the offer editor's totals in the
major currency unit, from the same pricing engine as the app.

Pass `projectId` to return only the offers that belong to that project.
The project must belong to the authenticated company. Omit it to list
every offer for the company.

## Query parameters

- `projectId` string, uuid
- `page` integer
- `limit` integer

## Response `200`

Paginated list of offers with their items for the authenticated company.

- object
  - `items` object[], required
    - `offer` Offer, required
      - `id` string, uuid
      - `project_id` string, uuid
      - `company_id` string, uuid
      - `customer_id` string, uuid
      - `human_id` string
      - `parent_offer_id` string, uuid, nullable: Set on a supplementary offer (Nachtragsangebot) to the id of the main offer it supplements. Null on every other document.
      - `supplement_number` integer, nullable: The supplement's number within its main offer (1 for N1, 2 for N2, …). Null unless parent_offer_id is set.
      - `offer_date` string, date-time
      - `valid_until` string, date-time
      - `status` 'inProgress' | 'done' | 'canceled' | 'accepted' | 'rejected'
      - `status_changed_at` string, date-time, nullable
      - `created_by_profile_id` string, nullable
      - `contact_person_id` string, nullable
      - `is_template` boolean, nullable
      - `template_name` string, nullable
      - `offer_locked` boolean
      - `title` string, nullable
      - `cover_letter` string, nullable
      - `concluding_remarks` string, nullable
      - `show_cover_letter_greeting` boolean
      - `show_individual_prices` boolean
      - `show_total_prices` boolean
      - `show_product_descriptions` boolean
      - `is_lump_sum` boolean: When true, the offer total is the typed lump sum rather than the sum of line items.
      - `lump_sum_in_cent` integer, nullable: Lump-sum amount in cents. Net or gross depending on lump_sum_vat_mode.
      - `lump_sum_vat_mode` 'net' | 'gross', nullable
      - `lump_sum_tax_rate` number, nullable
      - `absolute_discount_in_cent` integer, nullable
      - `percentage_discount` integer, nullable
      - `kfw_single_residence_funding_percent` integer, nullable
      - `is_home_owners_association` boolean, nullable
      - `number_of_units` integer, nullable
      - `number_of_units_to_fund` integer, nullable
      - `is_applicant_owner` boolean, nullable
      - `basic_funding_rate` integer, nullable
      - `applicant_funding_rate` integer, nullable
      - `exact_installation_date` string, date-time, nullable
      - `approximate_installation_date` string, nullable
      - `custom_color` string, nullable
      - `show_company_signature_field` boolean
      - `show_customer_signature_field` boolean
      - `signature_mode` 'manual' | 'personalSignature'
      - `company_logo_position` 'left' | 'right'
      - `enable_product_page` boolean, nullable
      - `enable_next_steps_page` boolean, nullable
      - `enable_attachment_page` boolean, nullable
      - `cover_page_type` 'generated' | 'custom' | 'customCoverPage1' | 'customCoverPage2' | 'customCoverPage3' | 'customCoverPage4' | 'customCoverPage5' | 'customCoverPage6'
      - `installation_date_type` 'none' | 'exact' | 'approximate'
      - `show_cover_page_dynamic_info` boolean
      - `bubble_id` string, nullable
      - `created_at` string, date-time
      - `updated_at` string, date-time
      - `deleted_at` string, date-time, nullable
      - `net` number: The offer's net total as the offer editor shows it, in the major currency unit (e.g. 1234.56 means 1,234.56 EUR) — not cents, and not a percentage of the line items. Computed by the same pricing engine as the app: it accounts for per-line VAT rates, quantity and document discounts, packages, optional items and lump sums, so do not recompute it from the line items. Returned by `GET /offer` and `GET /offer/{offerId}`; the `PATCH /offer/{offerId}` response does not include it.
      - `gross` number: The offer's gross total (net plus VAT) as the offer editor shows it, in the major currency unit — not cents, and not a percentage of the line items. Computed by the same pricing engine as `net`; for a lump-sum offer it is derived from the lump sum and its VAT mode. Returned by `GET /offer` and `GET /offer/{offerId}`; the `PATCH /offer/{offerId}` response does not include it.
    - `offerItems` OfferItem[], required
      - `id` string, uuid
      - `offer_id` string, uuid
      - `company_id` string, uuid
      - `type` 'product' | 'customItem' | 'heading' | 'subTotal' | 'previousPayment' | 'productPackage' | 'productPackageItem' | 'freeText' | 'dynamicProductPlaceholder'
      - `heading` string
      - `is_optional` boolean
      - `product_id` string, nullable
      - `product_type` 'heatPump' | 'bufferTank' | 'hotWaterTank' | 'freshWaterStation' | 'radiator' | 'service' | 'other' | 'solarPanel' | 'inverter' | 'battery' | 'wallbox' | 'ev' | 'valve', nullable
      - `description` string, nullable
      - `amount` number, nullable
      - `unit` 'kg' | 'liter' | 'meter' | 'squareMeter' | 'cubicMeter' | 'minute' | 'hour' | 'day' | 'quantity' | 'flatRate' | 'kwp', nullable
      - `tax_rate` number, nullable
      - `buying_price_in_cent` number, nullable
      - `margin` number, nullable
      - `index` integer
      - `package_parent_offer_item_id` string, uuid, nullable: Set on the rows inside a package — `productPackageItem` children, and a `productPackage` sub-package nested one level inside another package. The top-level `productPackage` is the sales line — do not sum the rows inside it. A sub-package's `amount` is per unit of its parent package.
      - `package_has_custom_price` boolean: True when the package parent's price is custom rather than a rollup of its children.
      - `quantity_discount_percentage` number, nullable
      - `vat_category_code` string, nullable
      - `bubble_id` string, nullable
      - `created_at` string, date-time
      - `updated_at` string, date-time
      - `deleted_at` string, date-time, nullable
    - `offerDiscounts` OfferDiscount[], required: Live offer-level discounts in application order (`index` ascending).
      - `id` string, uuid
      - `offer_id` string, uuid
      - `company_id` string, uuid
      - `index` integer: Position of the discount; discounts apply in ascending order.
      - `name` string: Label shown on the offer, e.g. "Rabatt".
      - `discount_type` 'absolute' | 'percentage' | 'targetTotal' | 'null', nullable: `absolute`: `absolute_discount_in_cent` is the discount amount. `percentage`: `percentage_discount` percent of the running net. `targetTotal`: `absolute_discount_in_cent` is the net total the offer should land on; the discount is the running net minus that target.
      - `percentage_discount` number, nullable
      - `absolute_discount_in_cent` number, nullable
      - `max_discount_in_cent` number, nullable: Cap for the discount amount in cents, when set.
      - `created_at` string, date-time
      - `updated_at` string, date-time
      - `deleted_at` string, date-time, nullable
  - `metadata` object, required
    - `page` integer, required: Current page number
    - `limit` integer, required: Number of items per page
    - `total` integer, required: Total number of items

## Other responses

- `400`: Invalid page, limit, or projectId.
- `404`: The projectId does not belong to the authenticated company.

---

[API](https://skmtc.dev/autarc/apis/autarc-2-0-api.md) - [All operations](https://skmtc.dev/autarc/apis/autarc-2-0-api/llms.txt) - [OpenAPI document](https://skmtc.dev/autarc/apis/autarc-2-0-api/revisions/adfb20a40efc?raw)
