Mindbody Payroll API

Payroll operations.

Documentation

Specifications

Code Examples

Other Resources

OpenAPI Specification

mindbody-payroll-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Mindbody Public API v6 Appointment Payroll API
  version: '6.0'
  description: REST API for Mindbody business management data including appointments, classes, clients, enrollments, sales, sites, staff, payroll, and cross-site operations. Authentication combines a Mindbody-issued API-Key header with a SiteId header and optional staff/user OAuth bearer tokens for write operations. Generated from the official Mindbody Public API Python SDK (apimatic v3).
  contact:
    name: Mindbody API Support
    url: https://support.mindbodyonline.com/s/contactapisupport
  license:
    name: Proprietary
  x-generated-from: Mindbody-API-SDKs python SDK
  x-last-validated: '2026-05-28'
servers:
- url: https://api.mindbodyonline.com
  description: Production
security:
- ApiKeyAuth: []
tags:
- name: Payroll
  description: Payroll operations.
paths:
  /public/v6/payroll/commissions:
    get:
      tags:
      - Payroll
      summary: Mindbody A Staff Authorization Token is Not Required for This Endpoint, but if
      description: A staff authorization token is not required for this endpoint, but if one is passed, its permissions are honored. Depending on the access permissions configured for the staff member whose token is passed, the endpoint returns either only the payroll information for that staff member or it returns the payroll information for all staff members.
      operationId: getCommissions
      parameters:
      - name: version
        in: path
        required: true
        description: version of the api.
        schema:
          type: string
        example: example-value
      - name: siteId
        in: header
        required: true
        description: ID of the site from which to pull data.
        schema:
          type: string
        example: example-value
      - name: authorization
        in: header
        required: false
        description: A staff user authorization token.
        schema:
          type: string
        example: example-value
      - name: request.endDateTime
        in: query
        required: false
        description: 'The end of the date range for the payroll information to be returned. The maximum allowed date range is 14 days.<br /> Default: **Today’s date** * If you do not supply an `EndDateTime`, the data returns for the period from the `StartDateTime` that you supply to today’s date. * If you do not supply an `EndDateTime` or a `StartDateTime`, data returns for the seven days prior to today’s date.'
        schema:
          type: string
          format: date-time
        example: '2026-05-28T14:30:00Z'
      - name: request.limit
        in: query
        required: false
        description: Number of results to include, defaults to 100
        schema:
          type: integer
          format: int32
        example: 1
      - name: request.locationId
        in: query
        required: false
        description: A LocationId that you want to retrieve payroll information for. If you do not supply a `LocationId`, data from all locations is returned.
        schema:
          type: integer
          format: int32
        example: 123456
      - name: request.offset
        in: query
        required: false
        description: Page offset, defaults to 0.
        schema:
          type: integer
          format: int32
        example: 1
      - name: request.staffId
        in: query
        required: false
        description: A list of staff IDs that you want to retrieve payroll information for. If you do not supply a `StaffId`, all active staff members return, ordered by staff ID.
        schema:
          type: integer
          format: int32
        example: 123456
      - name: request.startDateTime
        in: query
        required: false
        description: The beginning of the date range for the payroll information to be returned. The maximum allowed date range is 14 days. * If you do not supply a `StartDateTime`, data returns for the seven days prior to the `EndDateTime` that you supply. * If you do not supply either a `StartDateTime` or an `EndDateTime`, the data returns for seven days prior to today’s date.
        schema:
          type: string
          format: date-time
        example: '2026-05-28T14:30:00Z'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCommissionsResponse'
              examples:
                Getcommissions200Example:
                  summary: Default getCommissions 200 example
                  x-microcks-default: true
                  value:
                    PaginationResponse: {}
                    Commissions:
                    - {}
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
      security:
      - ApiKeyAuth: []
  /public/v6/payroll/scheduledserviceearnings:
    get:
      tags:
      - Payroll
      summary: Mindbody A Staff Authorization Token is Not Required for This Endpoint, but if
      description: A staff authorization token is not required for this endpoint, but if one is passed, its permissions are honored. Depending on the access permissions configured for the staff member whose token is passed, the endpoint returns either only the payroll information for that staff member or it returns the payroll information for all staff members. Note that if a staff member is not paid for a class, earnings of zero are returned by this endpoint. Note that this endpoint calculates both bonus and no-reg rates for assistants.These rates are not supported by the Payroll report in the web interface. Note that this endpoint returns both the teacher’s adjusted rate and the assistant’s pay rate when the assistant is paid by the teacher.The Payroll report in the web interface only returns the teacher’s adjusted rate.
      operationId: getScheduledServiceEarnings
      parameters:
      - name: version
        in: path
        required: true
        description: version of the api.
        schema:
          type: string
        example: example-value
      - name: siteId
        in: header
        required: true
        description: ID of the site from which to pull data.
        schema:
          type: string
        example: example-value
      - name: authorization
        in: header
        required: false
        description: A staff user authorization token.
        schema:
          type: string
        example: example-value
      - name: request.endDateTime
        in: query
        required: false
        description: 'The end of the date range for the payroll information to be returned. The maximum allowed date range is 14 days.<br /> Default: **Today’s date** * If you do not supply an `EndDateTime`, the data returns for the period from the `StartDateTime` that you supply to today’s date. * If you do not supply an `EndDateTime` or a `StartDateTime`, data returns for the seven days prior to today’s date.'
        schema:
          type: string
          format: date-time
        example: '2026-05-28T14:30:00Z'
      - name: request.limit
        in: query
        required: false
        description: Number of results to include, defaults to 100
        schema:
          type: integer
          format: int32
        example: 1
      - name: request.locationId
        in: query
        required: false
        description: A LocationId that you want to retrieve payroll information for. If you do not supply a `LocationId`, data from all locations is returned.
        schema:
          type: integer
          format: int32
        example: 123456
      - name: request.offset
        in: query
        required: false
        description: Page offset, defaults to 0.
        schema:
          type: integer
          format: int32
        example: 1
      - name: request.scheduledServiceId
        in: query
        required: false
        description: Filters the results to a single scheduled service. This parameter must be used with a single ScheduledServiceType.
        schema:
          type: integer
          format: int32
        example: 123456
      - name: request.scheduledServiceType
        in: query
        required: false
        description: 'Filters the results to schedule service earnings for specific types of services. Possible values: * Class * Appointment'
        schema:
          type: string
        example: example-value
      - name: request.staffId
        in: query
        required: false
        description: A list of staff IDs that you want to retrieve payroll information for. If you do not supply a `StaffId`, all active staff members return, ordered by staff ID.
        schema:
          type: integer
          format: int32
        example: 123456
      - name: request.startDateTime
        in: query
        required: false
        description: The beginning of the date range for the payroll information to be returned. The maximum allowed date range is 14 days. * If you do not supply a `StartDateTime`, data returns for the seven days prior to the `EndDateTime` that you supply. * If you do not supply either a `StartDateTime` or an `EndDateTime`, the data returns for seven days prior to today’s date.
        schema:
          type: string
          format: date-time
        example: '2026-05-28T14:30:00Z'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetScheduledServiceEarningsResponse'
              examples:
                Getscheduledserviceearnings200Example:
                  summary: Default getScheduledServiceEarnings 200 example
                  x-microcks-default: true
                  value:
                    PaginationResponse: {}
                    ScheduledServiceEarnings:
                    - {}
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
      security:
      - ApiKeyAuth: []
  /public/v6/payroll/timecards:
    get:
      tags:
      - Payroll
      summary: Mindbody This Endpoint Returns Information for All Locations. the **View
      description: This endpoint returns information for all locations. The **View reports for all locations permission **is not supported for staff auth tokens.
      operationId: getTimeCards
      parameters:
      - name: version
        in: path
        required: true
        description: version of the api.
        schema:
          type: string
        example: example-value
      - name: siteId
        in: header
        required: true
        description: ID of the site from which to pull data.
        schema:
          type: string
        example: example-value
      - name: authorization
        in: header
        required: false
        description: A staff user authorization token.
        schema:
          type: string
        example: example-value
      - name: request.endDateTime
        in: query
        required: false
        description: 'The end of the date range for the payroll information to be returned. The maximum allowed date range is 14 days.<br /> Default: **Today’s date** * If you do not supply an `EndDateTime`, the data returns for the period from the `StartDateTime` that you supply to today’s date. * If you do not supply an `EndDateTime` or a `StartDateTime`, data returns for the seven days prior to today’s date.'
        schema:
          type: string
          format: date-time
        example: '2026-05-28T14:30:00Z'
      - name: request.limit
        in: query
        required: false
        description: Number of results to include, defaults to 100
        schema:
          type: integer
          format: int32
        example: 1
      - name: request.locationId
        in: query
        required: false
        description: A LocationId that you want to retrieve payroll information for. If you do not supply a `LocationId`, data from all locations is returned.
        schema:
          type: integer
          format: int32
        example: 123456
      - name: request.offset
        in: query
        required: false
        description: Page offset, defaults to 0.
        schema:
          type: integer
          format: int32
        example: 1
      - name: request.staffId
        in: query
        required: false
        description: A list of staff IDs that you want to retrieve payroll information for. If you do not supply a `StaffId`, all active staff members return, ordered by staff ID.
        schema:
          type: integer
          format: int32
        example: 123456
      - name: request.startDateTime
        in: query
        required: false
        description: The beginning of the date range for the payroll information to be returned. The maximum allowed date range is 14 days. * If you do not supply a `StartDateTime`, data returns for the seven days prior to the `EndDateTime` that you supply. * If you do not supply either a `StartDateTime` or an `EndDateTime`, the data returns for seven days prior to today’s date.
        schema:
          type: string
          format: date-time
        example: '2026-05-28T14:30:00Z'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTimeCardsResponse'
              examples:
                Gettimecards200Example:
                  summary: Default getTimeCards 200 example
                  x-microcks-default: true
                  value:
                    PaginationResponse: {}
                    TimeCards:
                    - {}
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
      security:
      - ApiKeyAuth: []
  /public/v6/payroll/tips:
    get:
      tags:
      - Payroll
      summary: Mindbody A Staff Authorization Token is Not Required for This Endpoint, but if
      description: A staff authorization token is not required for this endpoint, but if one is passed, its permissions are honored. Depending on the access permissions configured for the staff member whose token is passed, the endpoint returns either only the payroll information for that staff member or it returns the payroll information for all staff members. This endpoint returns information for all locations.The** View reports for all locations **permission is not supported for staff auth tokens.
      operationId: getTips
      parameters:
      - name: version
        in: path
        required: true
        description: version of the api.
        schema:
          type: string
        example: example-value
      - name: siteId
        in: header
        required: true
        description: ID of the site from which to pull data.
        schema:
          type: string
        example: example-value
      - name: authorization
        in: header
        required: false
        description: A staff user authorization token.
        schema:
          type: string
        example: example-value
      - name: request.endDateTime
        in: query
        required: false
        description: 'The end of the date range for the payroll information to be returned. The maximum allowed date range is 14 days.<br /> Default: **Today’s date** * If you do not supply an `EndDateTime`, the data returns for the period from the `StartDateTime` that you supply to today’s date. * If you do not supply an `EndDateTime` or a `StartDateTime`, data returns for the seven days prior to today’s date.'
        schema:
          type: string
          format: date-time
        example: '2026-05-28T14:30:00Z'
      - name: request.limit
        in: query
        required: false
        description: Number of results to include, defaults to 100
        schema:
          type: integer
          format: int32
        example: 1
      - name: request.locationId
        in: query
        required: false
        description: A LocationId that you want to retrieve payroll information for. If you do not supply a `LocationId`, data from all locations is returned.
        schema:
          type: integer
          format: int32
        example: 123456
      - name: request.offset
        in: query
        required: false
        description: Page offset, defaults to 0.
        schema:
          type: integer
          format: int32
        example: 1
      - name: request.staffId
        in: query
        required: false
        description: A list of staff IDs that you want to retrieve payroll information for. If you do not supply a `StaffId`, all active staff members return, ordered by staff ID.
        schema:
          type: integer
          format: int32
        example: 123456
      - name: request.startDateTime
        in: query
        required: false
        description: The beginning of the date range for the payroll information to be returned. The maximum allowed date range is 14 days. * If you do not supply a `StartDateTime`, data returns for the seven days prior to the `EndDateTime` that you supply. * If you do not supply either a `StartDateTime` or an `EndDateTime`, the data returns for seven days prior to today’s date.
        schema:
          type: string
          format: date-time
        example: '2026-05-28T14:30:00Z'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTipsResponse'
              examples:
                Gettips200Example:
                  summary: Default getTips 200 example
                  x-microcks-default: true
                  value:
                    PaginationResponse: {}
                    Tips:
                    - {}
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
      security:
      - ApiKeyAuth: []
components:
  schemas:
    ScheduledServiceEarningsEvent:
      type: object
      description: Implementation of the 'ScheduledServiceEarningsEvent' model.
      properties:
        StaffId:
          type: integer
          format: int32
          description: The ID of the staff member who taught the class.
          example: 123456
        ScheduledServiceId:
          type: integer
          format: int32
          description: The class' ID.
          example: 123456
        ScheduledServiceType:
          $ref: '#/components/schemas/ScheduledServiceTypeEnum'
          description: The type of the scheduled service; i.e, a class, appointment, or enrollment.
        Earnings:
          type: number
          format: double
          description: The total monetary amount the staff is to be paid for this class.
          example: 1.0
        DateTime:
          type: string
          format: date-time
          description: The model property of type datetime.
          example: '2026-05-28T14:30:00Z'
    TimeCardEvent:
      type: object
      description: Implementation of the 'TimeCardEvent' model.
      properties:
        StaffId:
          type: integer
          format: int32
          description: The ID of the requested staff member.
          example: 123456
        Task:
          type: string
          description: The staff member’s job title.
          example: example-value
        TimeIn:
          type: string
          format: date-time
          description: The time that the staff member started the job task.
          example: '2026-05-28T14:30:00Z'
        TimeOut:
          type: string
          format: date-time
          description: The time that the staff member stopped doing the job task.
          example: '2026-05-28T14:30:00Z'
        Hours:
          type: number
          format: double
          description: The number of hours on this time card, rounded to the nearest fourth decimal place.
          example: 1.0
        HourlyRate:
          type: number
          format: double
          description: The hourly rate the business pays this staff for this `Task`.
          example: 1.0
        Earnings:
          type: number
          format: double
          description: The total amount earned by the staff member for this time card entry.
          example: 1.0
    Tip:
      type: object
      description: Implementation of the 'Tip' model.
      properties:
        StaffId:
          type: integer
          format: int32
          description: The ID of the staff member the tip is for.
          example: 123456
        SaleId:
          type: integer
          format: int32
          description: The sale’s ID associated with the tip.
          example: 123456
        SaleDateTime:
          type: string
          format: date-time
          description: The date and time when the tip was given.
          example: '2026-05-28T14:30:00Z'
        Earnings:
          type: number
          format: double
          description: The amount tipped to the staff member.
          example: 1.0
    GetScheduledServiceEarningsResponse:
      type: object
      description: Implementation of the 'GetScheduledServiceEarningsResponse' model.
      properties:
        PaginationResponse:
          $ref: '#/components/schemas/PaginationResponse'
          description: Contains information about the pagination used.
        ScheduledServiceEarnings:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledServiceEarningsEvent'
          description: Contains the class payroll events.
          example:
          - {}
    GetTipsResponse:
      type: object
      description: Implementation of the 'GetTipsResponse' model.
      properties:
        PaginationResponse:
          $ref: '#/components/schemas/PaginationResponse'
          description: Contains information about the pagination used. See Pagination for a description of the Pagination information.
        Tips:
          type: array
          items:
            $ref: '#/components/schemas/Tip'
          description: Contains information about tips given to staff members within the given date range. Results are ordered by StaffId.
          example:
          - {}
    PaginationResponse:
      type: object
      description: Implementation of the 'PaginationResponse' model. Contains information about the pagination to use.
      properties:
        RequestedLimit:
          type: integer
          format: int32
          description: Limit from pagination request
          example: 10
        RequestedOffset:
          type: integer
          format: int32
          description: Offset from pagination request
          example: 10
        PageSize:
          type: integer
          format: int32
          description: Number of results returned in this response
          example: 1
        TotalResults:
          type: integer
          format: int32
          description: Total number of results in dataset
          example: 1
    ScheduledServiceTypeEnum:
      type: string
      description: ScheduledServiceTypeEnum enumeration.
      enum:
      - Class
      - Appointment
      - Enrollment
      - All
    CommissionPayrollPurchaseEvent:
      type: object
      description: Implementation of the 'CommissionPayrollPurchaseEvent' model.
      properties:
        StaffId:
          type: integer
          format: int32
          description: The ID of the staff member who earned commissions.
          example: 123456
        SaleDateTime:
          type: string
          format: date-time
          description: The date and time when the sale occurred.
          example: '2026-05-28T14:30:00Z'
        SaleId:
          type: integer
          format: int32
          description: The sale’s ID.
          example: 123456
        SaleType:
          type: string
          description: The Sales type. When this is "Purchase" indicates that this sale paid commission to a staff. When this is "Return"
          example: example-value
        ProductId:
          type: integer
          format: int32
          description: The product ID of the item for which the staff earned commissions.
          example: 123456
        EarningsDetails:
          type: array
          items:
            $ref: '#/components/schemas/CommissionDetail'
          description: Contains information about which commissions the staff earned for this item.
          example:
          - {}
        Earnings:
          type: number
          format: double
          description: The total commissions earned by the staff for this item.
          example: 1.0
    GetTimeCardsResponse:
      type: object
      description: Implementation of the 'GetTimeCardsResponse' model.
      properties:
        PaginationResponse:
          $ref: '#/components/schemas/PaginationResponse'
          description: Contains information about the pagination used.
        TimeCards:
          type: array
          items:
            $ref: '#/components/schemas/TimeCardEvent'
          description: Information about time card entries, ordered by staff ID.
          example:
          - {}
    GetCommissionsResponse:
      type: object
      description: Implementation of the 'GetCommissionsResponse' model.
      properties:
        PaginationResponse:
          $ref: '#/components/schemas/PaginationResponse'
          description: Contains information about the pagination used.
        Commissions:
          type: array
          items:
            $ref: '#/components/schemas/CommissionPayrollPurchaseEvent'
          description: Contains information about commissions earned by staff for sales within the given date range. Results are ordered by `SaleId`, then by `StaffId`.
          example:
          - {}
    CommissionDetail:
      type: object
      description: Implementation of the 'CommissionDetail' model.
      properties:
        CommissionType:
          type: string
          description: 'The type of commission earned. Possible values are: * ItemStandardPercentageCommission * ItemStandardFlatCommission * ItemPromotionalPercentageCommission * ItemPromotionalFlatCommission * StaffStandardPercentageCommission * StaffStandardFlatCommission * StaffPromotionalPercentageCommission * StaffPromotionalFlatCommission'
          example: example-value
        CommissionEarnings:
          type: number
          format: double
          description: The portion of `Earnings` earned by this `CommissionType`.
          example: 1.0
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: API-Key
      description: Mindbody-issued API key (server-to-server). Required on every request.
    OAuth2:
      type: oauth2
      description: OpenID Connect bearer token issued by Mindbody Identity Service (signin.mindbodyonline.com). Required for endpoints that act on behalf of a staff or client user.
      flows:
        authorizationCode:
          authorizationUrl: https://signin.mindbodyonline.com/connect/authorize
          tokenUrl: https://signin.mindbodyonline.com/connect/token
          scopes:
            openid: OpenID Connect base scope.
            profile: User profile claims.
            email: User email claim.
            offline_access: Issue a refresh token.
            Mindbody.Api.Public.v6: Access the Mindbody Public API v6 on behalf of the user.