---
title: "Create a settlement"
url: "https://real-estate-agency.apim.eu/apis/commission-settlement/versions/6ae2ea20-d101-452a-9066-4c9c4d7d5fdc/operations/createSettlement"
---

> Full API specification: https://real-estate-agency.apim.eu/apis/commission-settlement/versions/6ae2ea20-d101-452a-9066-4c9c4d7d5fdc.md

# Create a settlement

`POST` `/settlements`

Operation ID: `createSettlement`

Creates the settlement for a completed transaction. The basis is the notarized purchase price, or the agreed rent.

## Request body (required)

Content types: `application/json`

## Responses

- `201` - Created
- `400` - The request doesn't match the schema
- `401` - Key is missing, revoked or invalid
- `422` - Commission split not permitted

## OpenAPI definition

```yaml
openapi: 3.0.3
info:
  title: Commission Settlement
  version: 1.0.0
servers:
  - url: https://api.realestateagency.example/v1
    description: Production
  - url: https://sandbox.api.realestateagency.example/v1
    description: Sandbox
paths:
  /settlements:
    post:
      tags:
        - Settlements
      summary: Create a settlement
      description: |
        Creates the settlement for a completed transaction. The basis is the
        notarized purchase price, or the agreed rent.
      operationId: createSettlement
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SettlementCreate"
            example:
              property_id: prop_8f2c1a
              deal_type: sale
              assessment_basis_eur: 645000
              buyer_percent: 3.57
              seller_percent: 3.57
              contract_date: 2026-08-14
              buyer:
                name: Anna Bergman
                prospect_id: lead_71ab
      responses:
        "201":
          description: Created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Settlement"
              example:
                id: stl_7c53
                property_id: prop_8f2c1a
                status: open
                deal_type: sale
                assessment_basis_eur: 645000
                line_items:
                  - party: buyer
                    rate_percent: 3.57
                    net_eur: 19353.36
                    tax_eur: 3677.14
                    gross_eur: 23030.5
                  - party: seller
                    rate_percent: 3.57
                    net_eur: 19353.36
                    tax_eur: 3677.14
                    gross_eur: 23030.5
                due_date: 2026-08-28
        "400":
          $ref: "#/components/responses/ValidationError"
        "401":
          $ref: "#/components/responses/NotAuthenticated"
        "422":
          description: Commission split not permitted
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
              example:
                code: commission_not_permitted
                message: The buyer's share must not exceed the seller's share.
                details:
                  - field: buyer_percent
                    reason: exceeds_seller
security:
  - apiKey: []
components:
  schemas:
    SettlementCreate:
      type: object
      required:
        - property_id
        - deal_type
        - assessment_basis_eur
        - buyer_percent
        - contract_date
      properties:
        property_id:
          type: string
          example: prop_8f2c1a
        deal_type:
          $ref: "#/components/schemas/DealType"
        assessment_basis_eur:
          type: integer
          description: Notarized purchase price, or annual net cold rent.
          example: 645000
        buyer_percent:
          type: number
          format: float
          example: 3.57
        seller_percent:
          type: number
          format: float
          example: 3.57
        contract_date:
          type: string
          format: date
          example: 2026-08-14
        buyer:
          $ref: "#/components/schemas/Party"
        seller:
          $ref: "#/components/schemas/Party"
    Settlement:
      type: object
      properties:
        id:
          type: string
          example: stl_7c53
        property_id:
          type: string
          example: prop_8f2c1a
        status:
          $ref: "#/components/schemas/SettlementStatus"
        deal_type:
          $ref: "#/components/schemas/DealType"
        assessment_basis_eur:
          type: integer
          example: 645000
        line_items:
          type: array
          items:
            $ref: "#/components/schemas/LineItem"
        invoice_id:
          type: string
          example: inv_a920
        due_date:
          type: string
          format: date
          example: 2026-08-28
        paid_eur:
          type: number
          format: float
          example: 0
        created_at:
          type: string
          format: date-time
          example: 2026-08-15T07:30:00Z
    Error:
      type: object
      description: Uniform error format across all Real Estate Agency APIs.
      required:
        - code
        - message
      properties:
        code:
          type: string
          example: validation_failed
        message:
          type: string
          example: The assessment basis is required to calculate the commission.
        details:
          type: array
          items:
            $ref: "#/components/schemas/ErrorDetail"
    DealType:
      type: string
      enum:
        - sale
        - rental
        - commercial_rental
      example: sale
    Party:
      type: object
      properties:
        name:
          type: string
          example: Anna Bergman
        prospect_id:
          type: string
          example: lead_71ab
        address:
          type: string
          example: 148 Elm Street, 10001 Springfield
    SettlementStatus:
      type: string
      enum:
        - draft
        - open
        - partially_paid
        - paid
        - canceled
      example: open
    LineItem:
      type: object
      properties:
        party:
          type: string
          enum:
            - buyer
            - seller
            - tenant
            - landlord
        rate_percent:
          type: number
          format: float
          example: 3.57
        net_eur:
          type: number
          format: float
          example: 19353.36
        tax_eur:
          type: number
          format: float
          example: 3677.14
        gross_eur:
          type: number
          format: float
          example: 23030.5
    ErrorDetail:
      type: object
      properties:
        field:
          type: string
          example: buyer_percent
        reason:
          type: string
          example: missing
  responses:
    ValidationError:
      description: The request doesn't match the schema
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
    NotAuthenticated:
      description: Key is missing, revoked or invalid
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: apikey
      description: |
        Every call carries an API key in the `apikey` header. You generate the
        key in the Real Estate portal under "My Apps"; it's shown exactly once.

        Each key has the scopes it's allowed to use attached to it. If one is
        missing, the API responds with `403` and `code: "scope_missing"`; the
        missing scope is in `details[].field`.
```
