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

# Transfer ownership of your account

> Hands the account to another of its users. Only the current owner may do this — 403 `not_customer_owner` for anybody else. The new owner must already be one of the account's people; 404 when they are not, the same answer as for nobody at all.

Ownership is what cannot be taken away from inside the account: the owner can always administer everything, whatever their organisation list says, removing their last organisation never locks them out, and only the owner can remove people. Transferring it is therefore the widest change this API makes, and it is recorded in the activity feed.

409 `ownership_changed` when the owner changed while the request was in flight — read `GET /customer` to see who owns the account now.



## OpenAPI

````yaml /api-reference/specs/administration.json put /customer/owner
openapi: 3.0.1
info:
  title: Administration API
  description: >-
    Manage your Flow Payroll account: the organisations it owns, the people who
    can sign in to it, the API tokens it holds, its brand, and a feed of recent
    administration activity. Every resource is scoped to the account your
    credentials belong to, so no request ever names a customer and the
    `X-Org-Id` header is not used.
  version: v1
servers:
  - url: https://api.sandbox.flowpayroll.ai/v1/administration
security:
  - X-Auth-Token: []
tags:
  - name: Customer
    description: >-
      Your account: the customer every other resource on this API belongs to.
      Read it and rename it.
  - name: Organisations
    description: >-
      The organisations your account owns: list them with headcounts and your
      access to each, get one in full, and add one or several at a time.
  - name: Users
    description: >-
      The people who can sign in to your account: list, invite (one or many),
      resend invitations, and manage each person's direct grants and
      account-wide access.
  - name: API tokens
    description: >-
      The client credentials your integrations authenticate with: create (the
      secret is shown once), rename, rotate, revoke, and manage which
      organisations each token reaches.
  - name: Activity
    description: Recent administration actions in your account, newest first.
paths:
  /customer/owner:
    put:
      tags:
        - Customer
      summary: Transfer ownership of your account
      description: >-
        Hands the account to another of its users. Only the current owner may do
        this — 403 `not_customer_owner` for anybody else. The new owner must
        already be one of the account's people; 404 when they are not, the same
        answer as for nobody at all.


        Ownership is what cannot be taken away from inside the account: the
        owner can always administer everything, whatever their organisation list
        says, removing their last organisation never locks them out, and only
        the owner can remove people. Transferring it is therefore the widest
        change this API makes, and it is recorded in the activity feed.


        409 `ownership_changed` when the owner changed while the request was in
        flight — read `GET /customer` to see who owns the account now.
      operationId: TransferCustomerOwner
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferCustomerOwnerRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerOwnerResponseResponseBody'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectResponseBody'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectResponseBody'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectResponseBody'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectResponseBody'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectResponseBody'
components:
  schemas:
    TransferCustomerOwnerRequest:
      type: object
      properties:
        principalId:
          type: string
          description: >-
            Required. The new owner, who must already be one of the account's
            people.
          nullable: true
      additionalProperties: false
      description: Hands the account to another of its users. Only the current owner may.
    CustomerOwnerResponseResponseBody:
      type: object
      properties:
        message:
          $ref: '#/components/schemas/MessageWithTokenResponse'
        content:
          $ref: '#/components/schemas/CustomerOwnerResponseContentResponse'
        validationIssues:
          type: array
          items:
            $ref: '#/components/schemas/ValidationIssue'
          nullable: true
      additionalProperties: false
    ObjectResponseBody:
      type: object
      properties:
        message:
          $ref: '#/components/schemas/MessageWithTokenResponse'
        content:
          $ref: '#/components/schemas/ObjectContentResponse'
        validationIssues:
          type: array
          items:
            $ref: '#/components/schemas/ValidationIssue'
          nullable: true
      additionalProperties: false
    MessageWithTokenResponse:
      type: object
      properties:
        text:
          type: string
        token:
          type: string
        tokenArguments:
          type: array
          items:
            $ref: '#/components/schemas/ValidationIssueArgument'
          nullable: true
      additionalProperties: false
    CustomerOwnerResponseContentResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/CustomerOwnerResponse'
        metadata:
          $ref: '#/components/schemas/ContentMetadataResponse'
      additionalProperties: false
    ValidationIssue:
      type: object
      properties:
        field:
          type: string
        reason:
          type: string
        reasonToken:
          type: string
        reasonTokenArguments:
          type: array
          items:
            $ref: '#/components/schemas/ValidationIssueArgument'
          nullable: true
      additionalProperties: false
    ObjectContentResponse:
      type: object
      properties:
        data:
          nullable: true
        metadata:
          $ref: '#/components/schemas/ContentMetadataResponse'
      additionalProperties: false
    ValidationIssueArgument:
      type: object
      properties:
        name:
          type: string
        value:
          nullable: true
      additionalProperties: false
    CustomerOwnerResponse:
      type: object
      properties:
        principalId:
          type: string
          description: >-
            The owner's identifier, as used on the `/users/{principalId}`
            routes.
        email:
          type: string
          description: The address they sign in with.
          nullable: true
        displayName:
          type: string
          description: Their name, for display next to the id.
          nullable: true
      additionalProperties: false
      description: Who owns the account.
    ContentMetadataResponse:
      type: object
      properties:
        dateFormat:
          type: string
        dateTimeFormat:
          type: string
        paginationToken:
          type: string
          nullable: true
      additionalProperties: false
  securitySchemes:
    X-Auth-Token:
      type: apiKey
      description: FlowPayroll JWT (raw token, no Bearer prefix)
      name: X-Auth-Token
      in: header

````

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