lexoffice Profile API

Account profile and reference metadata.

OpenAPI Specification

lexoffice-profile-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: lexoffice (lexware Office) Public Contacts Profile API
  description: Public REST API for lexoffice, the German cloud accounting and invoicing SaaS from Lexware (Haufe Group), rebranded to "lexware Office" in 2025. The API lets developers push and pull business data - contacts, invoices, quotations, order confirmations, delivery notes, credit notes, dunnings, bookkeeping vouchers, files, payments, and profile metadata - and subscribe to webhooks through event subscriptions. All requests are authenticated with a Bearer API key generated by the account owner at https://app.lexware.de/addons/public-api. The API is rate limited to 2 requests per second per client (HTTP 429 on exceed). The API gateway moved from api.lexoffice.io to api.lexware.io on 26 May 2025; the legacy host remained available through December 2025. This document is a representative, hand-authored subset grounded in the public documentation at https://developers.lexware.io/docs/ - it is not the vendor's own machine-readable specification.
  version: '1.0'
  contact:
    name: lexware Office Developers
    url: https://developers.lexware.io/docs/
  license:
    name: Proprietary
    url: https://www.lexware.de/
servers:
- url: https://api.lexware.io/v1
  description: Lexware API gateway (current)
- url: https://api.lexoffice.io/v1
  description: Legacy lexoffice API gateway (retired end of 2025)
security:
- bearerAuth: []
tags:
- name: Profile
  description: Account profile and reference metadata.
paths:
  /profile:
    get:
      operationId: getProfile
      tags:
      - Profile
      summary: Retrieve the account profile
      description: Returns the connected organization's profile and connection metadata.
      responses:
        '200':
          description: The account profile.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Profile'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /countries:
    get:
      operationId: listCountries
      tags:
      - Profile
      summary: List countries
      description: Returns the list of countries supported by lexoffice with tax classification.
      responses:
        '200':
          description: A list of countries.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Country'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /posting-categories:
    get:
      operationId: listPostingCategories
      tags:
      - Profile
      summary: List posting categories
      description: Returns the posting categories used to classify voucher items for bookkeeping.
      responses:
        '200':
          description: A list of posting categories.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PostingCategory'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    Error:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        status:
          type: integer
        error:
          type: string
        path:
          type: string
        message:
          type: string
        details:
          type: array
          items:
            type: object
            properties:
              violation:
                type: string
              field:
                type: string
              message:
                type: string
    PostingCategory:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        type:
          type: string
          enum:
          - income
          - outgo
        contactRequired:
          type: boolean
        splitAllowed:
          type: boolean
        groupName:
          type: string
    Country:
      type: object
      properties:
        countryCode:
          type: string
          example: DE
        countryNameEN:
          type: string
        countryNameDE:
          type: string
        taxClassification:
          type: string
          enum:
          - de
          - intraCommunity
          - thirdPartyCountry
    Profile:
      type: object
      properties:
        organizationId:
          type: string
          format: uuid
        companyName:
          type: string
        created:
          type: object
          properties:
            userId:
              type: string
              format: uuid
            userName:
              type: string
            userEmail:
              type: string
            date:
              type: string
              format: date-time
        connectionId:
          type: string
          format: uuid
        taxType:
          type: string
        smallBusiness:
          type: boolean
  responses:
    Unauthorized:
      description: Missing or invalid Bearer API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Bearer API key generated by the account owner at https://app.lexware.de/addons/public-api and passed as `Authorization: Bearer YOUR_API_KEY`.'