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

# Create user

> Create a User. Only available in Instant Onboarding Mode



## OpenAPI

````yaml /api-docs/legacy/partner/openapi.json post /partner/v1/users/
openapi: 3.0.3
info:
  title: paywise Partner API
  version: v1
  description: |

    Use our API to create and manage companies & users.

    Please refer to the [official docs][ref1] for more!

    [ref1]: https://docs.paywise.de/api-docs/partner-api/introduction
servers:
  - url: https://api.paywise.de
    description: Production environment
security: []
externalDocs:
  url: https://docs.paywise.de/api-docs/partner-api/
paths:
  /partner/v1/users/:
    post:
      tags:
        - users
      summary: Create user
      description: Create a User. Only available in Instant Onboarding Mode
      operationId: create-user
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserSerlializerRequest'
            examples:
              CreateUserRequestSample:
                value:
                  email: max@mustermann.com
                  first_name: Max
                  last_name: Mustermann
                  company: 6196ba03-83f2-46ea-83e1-a087bd0c5acc
                  skip_email_verification: true
                  notification_channels:
                    - channel_type: EMAIL
                      value: max@mustermann.com
                      notification_types:
                        - REQUESTS_TO_CLIENT
                        - STATUS_UPDATE
                        - STATEMENTS
                summary: Create User Request Sample
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UserSerlializerRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UserSerlializerRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSerlializer'
              examples:
                CreateUserResponseSample:
                  value:
                    href: >-
                      https://api.paywise.de/partner/v1/users/ab5fc850-7bb3-4c33-9741-d1305dfa41d9/
                    id: ab5fc850-7bb3-4c33-9741-d1305dfa41d9
                    email: max@mustermann.com
                    first_name: Max
                    last_name: Mustermann
                    company: 6196ba03-83f2-46ea-83e1-a087bd0c5acc
                    email_verified: true
                    notification_channels:
                      - channel_type: EMAIL
                        value: max@mustermann.com
                        notification_types:
                          - REQUESTS_TO_CLIENT
                          - STATUS_UPDATE
                          - STATEMENTS
                  summary: Create User Response Sample
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
          description: ''
        '401':
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
          description: ''
        '403':
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
          description: ''
      security:
        - tokenAuth: []
components:
  schemas:
    UserSerlializerRequest:
      type: object
      properties:
        id:
          type: string
          minLength: 1
        email:
          type: string
          minLength: 1
          description: E-Mail des Benutzers
        first_name:
          type: string
          minLength: 1
          description: Vorname des Benutzers
        last_name:
          type: string
          minLength: 1
          description: Nachname des Benutzers
        company:
          type: string
          format: uuid
          description: UUID of the company that the user is going to be part of
        notification_channels:
          type: array
          items:
            $ref: '#/components/schemas/NotificationChannelRequest'
          description: Notification settings for the user
        skip_email_verification:
          type: boolean
          writeOnly: true
          default: false
          description: >-
            Use this flag to indicate that you already validated the user's
            email address in advance. This way you can start sending claims
            right away, without waiting for user opt-in
      required:
        - company
        - email
        - first_name
        - last_name
    UserSerlializer:
      type: object
      properties:
        href:
          type: string
          format: uri
          readOnly: true
        id:
          type: string
        email:
          type: string
          description: E-Mail des Benutzers
        first_name:
          type: string
          description: Vorname des Benutzers
        last_name:
          type: string
          description: Nachname des Benutzers
        company:
          type: string
          format: uuid
          description: UUID of the company that the user is going to be part of
        email_verified:
          type: boolean
          readOnly: true
        notification_channels:
          type: array
          items:
            $ref: '#/components/schemas/NotificationChannel'
          description: Notification settings for the user
      required:
        - company
        - email
        - email_verified
        - first_name
        - href
        - last_name
    NotificationChannelRequest:
      type: object
      properties:
        channel_type:
          allOf:
            - $ref: '#/components/schemas/ChannelTypeEnum'
          description: >-
            Type of the communication channel to be used. Currently only
            supports email


            * `EMAIL` - E-Mail
        value:
          type: string
          minLength: 1
          description: >-
            Value of the communication channel. For EMAIL, provide a
            syntactically valid email address of at most 128 characters. Invalid
            values return a field-level 400 before any writes; accepted values
            retain their submitted case.
        notification_types:
          type: array
          items:
            $ref: '#/components/schemas/NotificationTypesEnum'
          nullable: true
          description: >-
            Omitted, null, or empty lists enable all default types:
            REQUESTS_TO_CLIENT, STATUS_UPDATE, STATEMENTS, ADVANCE_REQUESTS.
            Nonempty lists retain their selection; STATEMENTS also enables
            ADVANCE_REQUESTS for compatibility.
      required:
        - channel_type
        - value
    NotificationChannel:
      type: object
      properties:
        channel_type:
          allOf:
            - $ref: '#/components/schemas/ChannelTypeEnum'
          description: >-
            Type of the communication channel to be used. Currently only
            supports email


            * `EMAIL` - E-Mail
        value:
          type: string
          description: >-
            Value of the communication channel. For EMAIL, provide a
            syntactically valid email address of at most 128 characters. Invalid
            values return a field-level 400 before any writes; accepted values
            retain their submitted case.
        notification_types:
          type: array
          items:
            $ref: '#/components/schemas/NotificationTypesEnum'
          nullable: true
          description: >-
            Omitted, null, or empty lists enable all default types:
            REQUESTS_TO_CLIENT, STATUS_UPDATE, STATEMENTS, ADVANCE_REQUESTS.
            Nonempty lists retain their selection; STATEMENTS also enables
            ADVANCE_REQUESTS for compatibility.
      required:
        - channel_type
        - value
    ChannelTypeEnum:
      enum:
        - EMAIL
      type: string
      description: '* `EMAIL` - E-Mail'
    NotificationTypesEnum:
      enum:
        - STATUS_UPDATE
        - REQUESTS_TO_CLIENT
        - STATEMENTS
        - ADVANCE_REQUESTS
      type: string
      description: >-
        * `STATUS_UPDATE` - Status Updates

        * `REQUESTS_TO_CLIENT` - Rückfragen

        * `STATEMENTS` - Abrechnungen

        * `ADVANCE_REQUESTS` - Vorschussrechnungen (advance invoices, e.g. court
        cost advances). Channels carrying this type receive advance invoices by
        email. When you submit `notification_types` containing `STATEMENTS`
        without `ADVANCE_REQUESTS`, the API adds `ADVANCE_REQUESTS`
        automatically, so integrations written against the previous three-value
        list keep delivering advance invoices unchanged; excluding advance
        invoices from an address is done by the client in the paywise portal. If
        a company has no channel with this type at all, advance invoices fall
        back to its `STATEMENTS` channels.
  securitySchemes:
    tokenAuth:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.