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

# Contract Monthly Cost Details

> Get detailed cost component breakdown for a given contract for the most recent month

Use this endpoint to retrieve detailed information about the cost components applicable for a specific contract.

This allows your application to show a cost breakdown to the end user, providing insight about which costs are related to grid fees and other taxes and levies, and which costs are related to the cost of energy procurement.

This endpoint provides the data of the most recent month breakdown, i.e. a snapshot of the cost components on an invoice.

<Note>
  Requires `role:application` scope or `Linked` relation on customer level.
</Note>

The API provides cost / price information on the following components:

| Component            | Description                                                                   |
| -------------------- | ----------------------------------------------------------------------------- |
| `baseServiceFee`     | monthly service fee                                                           |
| `variableServiceFee` | per kWh service fee                                                           |
| `baseGridFee`        | monthly grid fees, defined by the local grid operator (DSO)                   |
| `variableGridFee`    | per kWh grid fees, defined by the local grid operator (DSO)                   |
| `meteringFee`        | monthly metering cost, defined by the metering operator                       |
| `expectedEnergyCost` | the expected cost per kWh on the EPEX Day-Ahead market, for the next month    |
| `exchangeFee`        | Energy market fee                                                             |
| `guaranteeOfOrigin`  | the cost per kWh for the guarantee of origin for renewable energy             |
| `concessionFee`      | concession fee (per kWh) as defined by the local municipality                 |
| `kwkgFee`            | applicable fee according to the German Heat-and-power Cogeneration Act (KWKG) |
| `electricityTax`     | German electricity tax                                                        |
| `offshoreFee`        | Offshore fee                                                                  |
| `p19Fee`             | Special grid usage / §19 StromNEV fee                                         |


## OpenAPI

````yaml GET /partner/v1/customers/{customerNumber}/contracts/{contractNumber}/costs
openapi: 3.0.4
info:
  title: RABOT Partner API
  description: "## Introduction\r\n\r\nThe RABOT Partner API allows you to integrate with the RABOT platform to automate your process flows. It is designed for backend, server-to-server integration supporting the following use cases\r\n\r\n* Getting price quotes and managing customer orders (submit, check status) for Sales Partners\r\n\r\n* Accessing customer, contract and pricing / consumption data for integrating into 3rd party applications\r\n\r\n* Price dependent optimization of customer assets and energy consumption\r\n\r\n\r\n## Access to the API\r\n\r\n### Partner setup\r\n\r\nTo use the API, your organization has to be set up as a partner in the RABOT platform. As part of this setup process, you receive a set of **client credentials** (client id, client password) that allow you to perform requests against the API. The client credentials also define the level of access you have, depending on the agreed use case and commercial and legal agreement in place.\r\n\r\n> \r\n> Make sure to always keep your client credentials safe. Do not include client credentials in client side code (smartphone app, web application), as they could easily be extracted and misused. If you think your credentials have been compromised, contact RABOT to invalidate the credentials and get a new password.\r\n>\r\n\r\nFor development and testing purposes, the API is also available in a test environment, where you can create and modify data without triggering actual contract and grid operation processes. To access the test enviroment, you have to use different hostnames for your API request. Note that also your client credentials a different between test environment and production enviroment.\r\n\r\n| API | Test environment | Production environment |\r\n| ---------------- | --------------------------------- | ------------------------------ |\r\n| Authentication server | `test-auth.rabot-charge.de` | `auth.rabot-charge.de` |\r\n| API server | `test-api.rabot-charge.de` | `api.rabot-charge.de` |\r\n\r\n### Authentication\r\n\r\nThe RABOT Partner API uses OAuth 2.0 for authentication (see [RFC 7649](https://www.rfc-editor.org/rfc/rfc6749)). Using the OAuth client credentials flow, you can obtain an access token from the RABOT authentication server.\r\n\r\n#### Token request\r\n\r\n```shell\r\ncurl -L \"auth.rabot-charge.de/connect/token\" \\\r\n-H \"Content-Type: application/x-www-form-urlencoded\" \\\r\n-d \"client_id={{CLIENT_ID}}\" \\\r\n-d \"client_secret={{CLIENT_SECRET}}\" \\\r\n-d \"grant_type=client_credentials\" \\\r\n-d \"scope=api:partner\"\r\n```\r\n\r\nYou need to specify, which scopes you want to include in the token by specifying them in `scope` parameter.\r\n\r\nFollowing scopes are available:\r\n\r\n| Scope            | Description                                                     |\r\n| ---------------- | --------------------------------------------------------------- |\r\n| `api:partner`    | permission to access Partner API, required for all API requests |\r\n| `create:orders`  | permission to create orders                                     | \r\n\r\n\r\n> To use scopes, you need to have them assigned to your API client by RABOT administrators.\r\n> If you feel you should have a scope, that you don't have, please contact our B2B support team.\r\n\r\n#### Token response\r\n\r\nIf successful, the authentication server responds with a HTTP/200 status code, and the response body contains a structure with the access token\r\n\r\n```json\r\n{\r\n  \"access_token\": \"eyJhbGciOiJS....QnkY36d_ac\",\r\n  \"token_type\": \"Bearer\",\r\n  \"expires_in\": 3599\r\n}\r\n```\r\n\r\nIn all requests to the partner API, include the access token as Bearer token in the HTTP authorization header. Note that the token only has a limited life time; when the life time has expired, you will need to request a new token from the authentication server.\r\n\r\n#### Example request\r\n\r\n```shell\r\ncurl -L \"https://api.rabot-charge.de/partners/v1/tariffs\" \\\r\n-H \"Authorization: Bearer eyJhbGciOiJS....QnkY36d_ac\"\r\n```\r\n\r\n\r\n## Managing orders via the API\r\n\r\nAs a RABOT sales partner, the API allows you to build your own custom sales funnel for RABOT products (energy tariffs) or to integrate the price quote and order process into your own systems.\r\n\r\nNote that to build a sales process for RABOT energy tariffs that is compliant to the regulations, many requirements have to be fulfilled that are not part of this documentation. This documentation only covers the technical integration.\r\n\r\n### Creating a price quote\r\n\r\nTo create a price quote for a prospect customer, you need to select a tariff, and provide some basic information about the prospect, such as:\r\n\r\n* postcode of the delivery address\r\n* expected yearly energy consumption\r\n\r\nWith this information, you can call the tariff calculation endpoint `POST /partner/v1/tariffs/{tariffkey}/calculation`\r\n\r\nThis endpoint returns a response that details the different pricing components both on a monthly base and depending on the consumption, as well as the contract conditions (minimum duration, cancellation period).\r\n\r\n### Submitting an order\r\n\r\nWhen a customer has accepted the offer, you can use the API to submit the customer and order details to the RABOT platform with a `POST /partner/v1/orders` call\r\n\r\nFor the order, you have to provide the following information (see API reference for all the details):\r\n\r\n* a `tariffKey` to identify the requested product\r\n* customer identification, contact details and initial password.\r\n* delivery address and meter identification\r\n* information about previous supplier, desired change date and expected yearly consumption\r\n* bank details (for SEPA mandate)\r\n\r\nIf successful, the API returns a customer number and contract number, which uniquely identify the customer and order in the RABOT platform, and can be used in subsequent API calls, e.g. to check the status of the order processing\r\n\r\nBefore submitting the order via the API, you need to ensure that customers have received all the required contract and pricing information, have accepted the terms and conditions (AGB), have confirmed the email address and have accepted the offer.\r\n\r\nOnce the order is received by the RABOT platform, an order confirmation email will be sent out to the email address provided in the order.\r\n\r\n#### Managing user password\r\n\r\nIf the customer email address submitted with the order does not exist in the RABOT platform yet, a new user account is automatically created. If you provide a user password in the API call, this password will be used, and the customer will be able to log into RABOT user interfaces (web portal or mobile app) using email address and password.\r\n\r\nIf no password is provided in the API call, the user account will be created with a random password, and the customer would need to go through a \"forget password\" flow to chose a new password.\r\n\r\n### Checking order status\r\n\r\nAfter the order has been submitted successfully, you can use the `GET /partner/v1/orders` API endpoint to follow the different processing states of the order.\r\n\r\nAn order can have one of the following states:\r\n\r\n| Order status    | Description                                                  |\r\n| --------------- | ------------------------------------------------------------ |\r\n| Open            | The order has been received, but is not being processed yet if required data is missing (e.g. missing meter number) |\r\n| Processing      | The order is being processed, communication with other market actors (grid operators, previous supplier) is ongoing. This can take a few days up to a couple of weeks depending on the actors involved |\r\n| Rejected        | The order has been denied, e.g. due to a negative credit check |\r\n| Revoked         | The customer has revoked the order                           |\r\n| PendingDelivery | The order has been processed, and a contract confirmation has been sent to the customer, including a date for start of delivery |\r\n| Delivery        | The supply contract is active and RABOT is delivering energy to the delivery location |\r\n| Cancelled       | A contract termination has been received and an end of delivery date has been set. This could either be due to a customer actively sending a termination request, or because a customer has chosen a new supplier, and the supplier has communicated the termination request via the market communication processes. |\r\n| Unspecified     | An unknown order state, indicating an error in the communcation with other market actors |\r\n\r\n## Customers and contracts\r\n\r\nThe Partner API can provide access to customer and contract data. Depending on the partnership scope and agreed data privacy policies, the level of access can vary, and you might need to use the customer linking process to allow end users to grant you access to their data.\r\n\r\n### Customer linking process\r\nAn end user can grant your application access to their data by an approval process similar to the OAuth access flow. This involves the following steps:\r\n\r\n* call `POST /partner/v1/customers/link` to receive an `authorizationUrl` link. \r\n* send the user to this link in a Web view. \r\n* The user will be asked to log in using the credentials they used when creating their energy supply contract. \r\n* After login, the user will be asked to grant your application access to their personal and contract related data stored on the Rabot platform.\r\n* When the user approves, the web view will be redirected to the webpage defined by the `successUrl` parameter in the `POST /partner/v1/customers/link` call, and you will be able to access the users data via the API.\r\n\r\n> Note that the link returned by the API only has a limited validity of 10 minutes. If an end user tries to login using the link after the 10 minutes have expired, the login will fail, and you will have to create a new link again to re-start the process.\r\n\r\n#### Managing user reference Ids\r\nThe API offers different ways for you to match customer data in the RABOT platform with the data in your own platform.\r\n\r\n1. You can add a parameter `externalId` to the `POST /partner/v1/customers/link` call. This information is then stored with the customer data in the RABOT platform, and returned as part of the customer data in the `GET /partner/v1/customers` endpoint.\r\n\r\n2. In addition, when the user is redirected after granting your application access to their data, the `successUrl` link is extended with a query parameter `customerNo` that will contain the unique customer number of this customer in the RABOT platform. \r\n\r\n### Contract information\r\nVia the API, you can also get access to data about the indidvidual contracts of a customer. Note that a single customer can have multiple contracts.\r\n\r\nEvery contract initially starts as an order, received either via the web funnel or the API (see [Managing orders](#managing-orders-via-the-api)). Only after the order has been confirmed, and an order confirmation has been sent out to the user, is the order changed to a contract, and visible via the respective endpoint in the API.\r\n\r\n## Contract metrics\r\nThe contract metrics endpoint provides access to pricing and consumption information related to a specific contract. This can be actual recorded data (e.g. consumption values as reported by a Smart Meter) or forecasted data (e.g. consumption data for SLP customers, or day-ahead price energy pricing).\r\n\r\n### MetricType\r\nYou can select the type of information that you want to retrieve by specifying the appropriate `MetricType`:\r\n\r\n| MetricType | Description |\r\n| ---- | --- |\r\n| `Consumption` | The energy consumed during the selected period (in kWh). Can be either measured or estimated. |\r\n| `WorkingPrice` | The estimated average working price (EUR/kWh) in the selected period, including all fees and taxes.|\r\n| `TotalCost` | The total energy cost in the selected period, including all fees and taxes. If the selected period is smaller than a month, the applicable monthly fees will be pro-rated to the period.|\r\n| `Saving` | The monetary savings (in EUR) in the selected period, compared to the local default supplier's tariff pricing.|\r\n| `Co2Saving` | The savings in carbon emissions, commpared to the german energy grid mix.|\r\n\r\n> Note that for `WorkingPrice` and `TotalCost` metrics, the values returned by this API endpoint might not match the amounts reflected on the customers invoice.   \r\n> This is due to the fact that some price conditions or discounts are only calculated on a monthly level. For example a working price cap is only applied when creating the monthly invoice, so the API might return a higher monthly average working price than what is shown on the invoice.\r\n\r\n### ValueType\r\n\r\nYou can use the `ValueType` request parameter to define if you want to only receive recorded data or forecasted data, or both:\r\n\r\n| ValueType | Description |\r\n| - | - |\r\n| `Actual` | return only data based on measurements, e.g. energy consumption reported by the DSO |\r\n| `Forecast` | return only data based on estimations, e.g. consumption estimated based on standard load profiles (SLP), not confirmed by actual meter reading yet | \r\n| `Dynamic` | return either actual or forecasted data for the whole period, but not mixed | \r\n| `Combined` | return either actual or forecasted data. E.g. when querying data for a month on daily level, for some days the API might returned actual data, while for other days might return forecasted data, based on data availability |\r\n\r\n### Periods and Intervals\r\n\r\nThe API allows to retrieve data in different granularity, from to 15 minute intervals, up to aggregation on monthly or yearly level. Use the `interval` parameter to select the aggregation level.\r\nTo limit the size of the result set, depening on the selected `interval`, you can only query a limited time period:\r\n\r\n| interval | maximum period |\r\n| - | - |\r\n| `QuarteryHourly` | 1 day |\r\n| `Hourly` | 3 days |\r\n| `Daily` | 2 months |\r\n| `Weekly` | 1 year |\r\n| `Monthly` | 15 years |\r\n| `Yearly` | 50 years |\r\n\r\nIf you try to request a longer period, the API will return an `HTTP 400` error.\r\n\r\n### Example - 15-min consumption for Smart Meter \r\n\r\nFor contracts that are linked to a Smart Meter, the RABOT platform typically receives the measured consumption values in 15 minutes intervals on the following day. You can use the API to retrieve this information e.g. to display a detailed consumption graph the the user.\r\n\r\nRequest:\r\n```shell\r\ncurl -L \"https://api.rabot-charge.de/partner/v1/customers/87678631/contracts/26765215/metrics?period.from=2025-03-01&period.to=2025-03-02&interval=QuarterHourly&metricType=Consumption&valueType=Actual\" \\\r\n-H \"Authorization: ••••••\"\r\n```\r\n\r\nResponse:\r\n```json\r\n{\r\n    \"data\": {\r\n        \"valueUnitInfo\": \"in kWh\",\r\n        \"consideredDataPeriod\": {\r\n            \"from\": \"2025-03-01 00:00:00\",\r\n            \"to\": \"2025-03-02 00:00:00\"\r\n        },\r\n        \"metricType\": \"Consumption\",\r\n        \"valueType\": \"Actual\",\r\n        \"interval\": \"QuarterHourly\",\r\n        \"intervalDuration\": 96.0000,\r\n        \"averageValuePerInterval\": 0.6148,\r\n        \"totalValue\": 59.0165,\r\n        \"numberOfEntries\": 96,\r\n        \"records\": [\r\n            {\r\n                \"moment\": \"2025-03-01 00:00:00\",\r\n                \"value\": 0.3619,\r\n                \"valueRelevanceType\": \"Actual\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-03-01 00:15:00\",\r\n                \"value\": 0.3486,\r\n                \"valueRelevanceType\": \"Actual\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-03-01 00:30:00\",\r\n                \"value\": 0.3369,\r\n                \"valueRelevanceType\": \"Actual\"\r\n            },\r\n...\r\n            {\r\n                \"moment\": \"2025-03-01 23:30:00\",\r\n                \"value\": 0.5152,\r\n                \"valueRelevanceType\": \"Actual\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-03-01 23:45:00\",\r\n                \"value\": 0.4810,\r\n                \"valueRelevanceType\": \"Actual\"\r\n            }\r\n        ]\r\n    },\r\n    \"isSuccess\": true,\r\n    \"message\": null,\r\n    \"error\": null\r\n}\r\n```\r\n\r\n### Example - Daily energy cost\r\n\r\nYou can easily retrieve the daily energy cost for any contract using the metrics API endpoint:\r\n\r\nRequest:\r\n```shell\r\ncurl -L \"https://api.rabot-charge.de/partner/v1/customers/87678631/contracts/26765215/metrics?period.from=2025-03-01&period.to=2025-04-01&interval=Daily&metricType=TotalCost&valueType=Combined\" \\\r\n-H \"Authorization: ••••••\" \r\n``` \r\n\r\nResponse:\r\n```json\r\n{\r\n    \"data\": {\r\n        \"valueUnitInfo\": \"in Euro\",\r\n        \"consideredDataPeriod\": {\r\n            \"from\": \"2025-03-01 00:00:00\",\r\n            \"to\": \"2025-04-01 00:00:00\"\r\n        },\r\n        \"metricType\": \"TotalCost\",\r\n        \"valueType\": \"Combined\",\r\n        \"interval\": \"Daily\",\r\n        \"intervalDuration\": 30.9583,\r\n        \"averageValuePerInterval\": 16.8718,\r\n        \"totalValue\": 522.3232,\r\n        \"numberOfEntries\": 31,\r\n        \"records\": [\r\n            {\r\n                \"moment\": \"2025-03-01 00:00:00\",\r\n                \"value\": 22.5213,\r\n                \"valueRelevanceType\": \"Actual\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-03-02 00:00:00\",\r\n                \"value\": 18.2885,\r\n                \"valueRelevanceType\": \"Actual\"\r\n            },\r\n...\r\n            {\r\n                \"moment\": \"2025-03-30 00:00:00\",\r\n                \"value\": 6.6829,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-03-31 00:00:00\",\r\n                \"value\": 9.8037,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            }\r\n        ]\r\n    },\r\n    \"isSuccess\": true,\r\n    \"message\": null,\r\n    \"error\": null\r\n}\r\n```\r\n\r\n### Example - Day-Ahead pricing\r\n\r\nThe metrics endpoint can also be used to get the future energy cost based on the Day Ahead market prices, and including all other fixed and variable fees and taxes. \r\n\r\nRequest:\r\n```shell\r\ncurl -L \"https://api.rabot-charge.de/partner/v1/customers/87678631/contracts/26765215/metrics?period.from=2025-05-05&period.to=2025-05-06&interval=Hourly&metricType=WorkingPrice&valueType=Combined\" \\\r\n-H \"Authorization: ••••••\"\r\n```\r\n\r\nResponse\r\n```json\r\n{\r\n    \"data\": {\r\n        \"valueUnitInfo\": \"in Cent/kWh\",\r\n        \"consideredDataPeriod\": {\r\n            \"from\": \"2025-05-05 00:00:00\",\r\n            \"to\": \"2025-05-06 00:00:00\"\r\n        },\r\n        \"metricType\": \"WorkingPrice\",\r\n        \"valueType\": \"Combined\",\r\n        \"interval\": \"Hourly\",\r\n        \"intervalDuration\": 24.0000,\r\n        \"averageValuePerInterval\": 32.5362,\r\n        \"totalValue\": 780.8697,\r\n        \"numberOfEntries\": 24,\r\n        \"records\": [\r\n            {\r\n                \"moment\": \"2025-05-05 00:00:00\",\r\n                \"value\": 31.0816,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-05-05 01:00:00\",\r\n                \"value\": 30.5259,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-05-05 02:00:00\",\r\n                \"value\": 30.7329,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-05-05 03:00:00\",\r\n                \"value\": 31.0780,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            },\r\n...\r\n            {\r\n                \"moment\": \"2025-05-05 22:00:00\",\r\n                \"value\": 34.2161,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            },\r\n            {\r\n                \"moment\": \"2025-05-05 23:00:00\",\r\n                \"value\": 33.3759,\r\n                \"valueRelevanceType\": \"Forecast\"\r\n            }\r\n        ]\r\n    },\r\n    \"isSuccess\": true,\r\n    \"message\": null,\r\n    \"error\": null\r\n}\r\n```\r\n\r\n"
  version: v1
servers: []
security: []
tags:
  - name: Customer
    description: Controller implementing RESTful API to manage customers.
  - name: DayAheadPrices
    description: Provides a RESTful API to perform day-ahead-prices-related operations.
  - name: Order
    description: Provides a RESTful API to perform order-related operations.
  - name: Tariff
    description: Provides a RESTful API to perform tariff-related operations.
paths:
  /partner/v1/customers/{customerNumber}/contracts/{contractNumber}/costs:
    get:
      tags:
        - Customer
      summary: Get most recent contract fees and cost components
      parameters:
        - name: customerNumber
          in: path
          description: Customer number
          required: true
          schema:
            type: string
        - name: contractNumber
          in: path
          description: Contract number
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ApiListResponseDto-ContractFeeCostComponentsDto
components:
  schemas:
    ApiListResponseDto-ContractFeeCostComponentsDto:
      type: object
      properties:
        isSuccess:
          type: boolean
          description: Success status of the operation based on status code (2xx range).
          readOnly: true
          example: true
        message:
          type: string
          description: >-
            Optional message to provide additional information about the
            operation result.
          nullable: true
          example: null
        error:
          type: array
          items:
            $ref: '#/components/schemas/ApiErrorDto'
          description: Optional error details in case of an error(s).
          nullable: true
        refUri:
          type: string
          description: Optional reference URI to point to the resulting resource.
          format: uri
          nullable: true
          readOnly: true
        data:
          type: array
          items:
            $ref: '#/components/schemas/ContractFeeCostComponentsDto'
          description: Returned data instance.
        count:
          type: integer
          description: Number of items returned in the list.
          format: int32
          readOnly: true
          example: 10
        hasMoreItems:
          type: boolean
          description: |-
            Indicates, whether there are more items to be returned in the list,
            that are not included in the limit of this request.
          example: true
      additionalProperties: false
      description: API response DTO with a list of items.
    ApiErrorDto:
      type: object
      properties:
        severity:
          allOf:
            - $ref: '#/components/schemas/ApiErrorSeverities'
          description: Severity of the error.
          example: Error
        code:
          type: string
          description: Internal error code for client processing.
          example: validation-failed
        message:
          type: string
          description: Error message.
          example: First name is required for non-business customers.
        details:
          type: string
          description: Additional details about the error.
          nullable: true
          example: null
      additionalProperties: false
      description: API Error response DTO.
    ContractFeeCostComponentsDto:
      required:
        - baseGridFee
        - baseServiceFee
        - concessionFee
        - electricityTax
        - estimatedConsumption
        - exchangeFee
        - expectedEnergyCost
        - guaranteeOfOrigin
        - kwkgFee
        - meteringFee
        - offshoreFee
        - p19Fee
        - savingsShare
        - savingToComparisonTariff
        - validFrom
        - variableGridFee
        - variableServiceFee
      type: object
      properties:
        validFrom:
          type: string
          description: The date and time from which the cost components are valid.
          format: date-time
        amountKind:
          allOf:
            - $ref: '#/components/schemas/AmountKinds'
          description: The kind of amount that is represented by these cost components.
          readOnly: true
        baseServiceFee:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The base service fee component.
        variableServiceFee:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The variable service fee component.
        baseGridFee:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The base grid fee component.
        variableGridFee:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The variable grid fee component.
        meteringFee:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The metering fee component.
        expectedEnergyCost:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The expected energy cost component.
        guaranteeOfOrigin:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The guarantees of origin fee component.
        concessionFee:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The concession fee component.
        kwkgFee:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The KWKG (Combined Heat and Power Act) fee component.
        electricityTax:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The electricity tax component.
        savingsShare:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The savings share component.
        estimatedConsumption:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The estimated consumption value.
        offshoreFee:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The offshore fee component.
        p19Fee:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The §19 StromNEV (P19) fee component.
        exchangeFee:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The exchange fee component.
        savingToComparisonTariff:
          allOf:
            - $ref: '#/components/schemas/UnitValueDto-Decimal'
          description: The savings compared to a comparison tariff.
      additionalProperties: false
      description: |-
        Data transfer object representing the cost components of a contract fee.
        Contains detailed breakdowns of various fee and cost elements.
    ApiErrorSeverities:
      enum:
        - Error
        - Warning
        - Notice
      type: string
      description: >-
        Enumerates the severity of an API
        error.<p>Members:</p><ul><li><i>Error</i> - Error; a critical error
        information.</li> <li><i>Warning</i> - Warning; an incorrect behavior
        information.</li> <li><i>Notice</i> - Notice; a non-standard behavior
        information.</li> </ul>
    AmountKinds:
      enum:
        - Gross
        - Net
      type: string
      description: >-
        Specifies the kind of monetary amount<p>Members:</p><ul><li><i>Gross</i>
        - Gross amount (including VAT)</li> <li><i>Net</i> - Net amount
        (excluding VAT)</li> </ul>
    UnitValueDto-Decimal:
      type: object
      properties:
        value:
          type: number
          description: Value of the unit.
          format: double
        unit:
          allOf:
            - $ref: '#/components/schemas/UnitDto'
          description: Unit of the value.
        unitText:
          type: string
          description: Textual representation of the unit in German.
      additionalProperties: false
      description: Specifies a measurable value with a unit.
    UnitDto:
      type: object
      properties:
        main:
          allOf:
            - $ref: '#/components/schemas/Units'
          description: Main unit.
        per:
          allOf:
            - $ref: '#/components/schemas/Units'
          description: Per unit in form of main/per or NULL if none.
          nullable: true
      additionalProperties: false
      description: >-
        Represents a unit of measurement, optionally expressed as a ratio (e.g.,
        ct/kWh).
    Units:
      enum:
        - None
        - Kwh
        - Kw
        - Euro
        - Cent
        - Percent
        - Year
        - Month
        - Day
        - Hour
        - Minute
      type: string
      description: >-
        Defines the available units of
        measurement.<p>Members:</p><ul><li><i>None</i> - No unit.</li>
        <li><i>Kwh</i> - Kilowatt-hours.</li> <li><i>Kw</i> - Kilowatts.</li>
        <li><i>Euro</i> - Euros.</li> <li><i>Cent</i> - Euro cents.</li>
        <li><i>Percent</i> - Percent.</li> <li><i>Year</i> - Year.</li>
        <li><i>Month</i> - Month.</li> <li><i>Day</i> - Day.</li>
        <li><i>Hour</i> - Hour.</li> <li><i>Minute</i> - Minute.</li> </ul>

````