---
title: "Create a service order"
method: POST
path: "/services"
tags: ["Service Orders"]
---

# Create a service order

`POST /services`

**Only available with the Service Orders module enabled.**

Creates a new service order. This endpoint allows you to create service orders with a customer, a service item, note and location.

🔒 Requires: `services:write` `sales:write` scopes

## Request body

- ServiceOrderRequest — Request payload for creating a service order
  - `assigned_user_id` string, uuid — The user assigned to work on the service order
  - `customer_id` string, uuid, required — The customer associated with the service
  - `extra_fields` object — Deprecated. Additional custom fields for the service order
    - `location` string — Deprecated: Use top-level location field instead. Location where the service will be performed
    - `note` string — Deprecated: Use top-level Notes field instead. Additional note for the service order
  - `item` object — Service item and its details
    - `description` string — Item description
    - `initial_condition` string — Item's initial condition
    - `item_id` string, uuid — ID of an already existing item
    - `item_name` string — Item name
    - `serial_number` string — Item serial number
  - `job_status_id` string, nullable — The ID of a custom service status to assign to this order. When provided, overrides the `status` field.
  - `location` string — Location where the service will be performed
  - `notes` object[] — Notes associated with the service order
    - `body` string — The body of the note
    - `created_at` string, date-time — The date and time when the note was created (possible to pre-date the note)
    - `is_visible_to_customer` boolean — Whether the note is visible to customer (printed on the service receipt or not)
  - `outlet_id` string, uuid, required — The outlet of the service order
  - `register_id` string, uuid, required — The register of the service order
  - `status` string — The status of the service order

## Response `200`

Service order created successfully

- DetailedService
  - `notes` ServiceNote[], nullable — An array of service notes, or null if no notes exist.
    - `body` string
    - `createdAt` string
    - `id` string
    - `is_visible_to_customer` boolean — Whether the note should be printed in the service receipt or not
    - `location` string — Deprecated: Use top-level location field on ServiceOrder instead. Location where the service will be performed
    - `serviceId` string
    - `serviceStatus` number
    - `user` User
      - `account_type` 'cashier' | 'manager' | 'admin', required — User's account type.
      - `created_at` string, required — Creation timestamp in UTC.
      - `deleted_at` string, nullable — Deletion timestamp in UTC.
      - `display_name` string, nullable — Full user's name to be used for display in the UI.
      - `email` string, email, nullable — User's email address.
      - `email_verified_at` string, nullable — The timestamp of users email verification.
      - `enabled` boolean — Indicates whether the user is enabled.
      - `enabled_mfa` object, nullable — The user's enabled MFA factor, or null if MFA is not enabled.
        - `created_at` string — Timestamp when the MFA factor was created.
        - `id` string — Auto-generated MFA factor ID.
        - `type` 'otp' — The MFA factor type (e.g. "otp").
      - `id` string, uuid, required — Auto-generated object ID.
      - `image_source` string — URL of the default-sized user's avatar.
      - `images` UserImages, nullable — On object containing URLs for different sizes of the user’s avatar.
        - `original` string
        - `sl` string
        - `sm` string
        - `ss` string
        - `st` string
        - `standard` string
        - `thumb` string
      - `is_primary_user` boolean, required — Indicated whether this user is the primary user for the account.
      - `permissions` string[], nullable — The permissions assigned to the user.
      - `require_password_change` boolean — Indicates whether the user is required to change their password.
      - `restricted_outlet_id` string, nullable — **deprecated** Use the `restricted_outlet_ids` instead.
      - `restricted_outlet_ids` string[] — A list of outlet IDs the user is associated with
      - `roles` Role[] — The roles assigned to the user.
        - `id` string — Auto-generated object ID.
        - `name` string — The Role name.
        - `system_role_id` string — A system role id of the Role. Will be either '100', '200', or '300'.
      - `rules` object — The rules assigned to the user.
      - `seen_at` string — The timestamp of the user's last activity in the system.
      - `switch_id` string — The switch id for the user.
      - `target_daily` number, nullable — Daily sales target for the user.
      - `target_monthly` number, nullable — Monthly sales target for the user.
      - `target_weekly` number, nullable — Weekly sales target for the user.
      - `time_until_deletion` string, nullable — The time until the user is deleted.
      - `updated_at` string, required — Last update timestamp in UTC.
      - `username` string, required — User's username used for login.
      - `version` integer, required — Auto-incrementing object version number.
    - `userId` string
  - `service` ServiceOrder, nullable
    - `agenda` DailyAgenda
      - `date` string
      - `minutes_scheduled` integer
    - `assigned_user_id` string
    - `created_at` string
    - `id` string
    - `line_items` object[] — Collection of line items associated with this service order.
      - `fulfillment_type` string — Type of fulfillment for this line item.
      - `gift_card` object, nullable — Gift card information if applicable.
      - `id` string — The ID of this line item.
      - `is_picklist_pickable` boolean — Indicates if this line item can be picked from a picklist.
      - `note` string — Line item note.
      - `price_set` boolean — Indicates whether the price was set manually.
      - `product_id` string — The ID of the product associated with this line item.
      - `promotions` PromotionDescription[] — Array of promotions applied to this line item.
        - `description` string — A short description for the promotion.
        - `id` string — Auto-generated object ID.
        - `name` string — The name of the promotion.
      - `quantity` string — Quantity of products for the line item.
      - `register_id` string — The register ID associated with this line item.
      - `register_sequence_id` string — The register sequence ID for this line item.
      - `sales_person_id` string — The ID of the salesperson associated with this line item.
      - `sequence` integer — Order of the line item in the service order.
      - `sku` string — The SKU of the product.
      - `state` string — State of the line item.
      - `tax_components` LineItemTaxComponent[] — Collection of tax components associated with the line item.
        - `rate_id` string, required — Tax rate ID.
        - `total_tax` number, double, required — Tax total.
      - `unit_discount` string — Unit discount value for the line item.
      - `unit_loyalty` string — Unit loyalty value for the line item.
      - `unit_price` string — Unit price of the line item.
    - `location` string
    - `retailer_id` string
    - `sale_id` string
    - `status` string
    - `status_details` ServiceStatusDetails, nullable — Details of a custom service status assigned to a service order.
      - `created_at` string, date-time — The date and time the status was created.
      - `display_name` string — Human-readable name of the status.
      - `display_order` integer, nullable — The order in which this status appears in the UI. Null if not set.
      - `id` string — The unique ID of the status.
      - `retailer_id` string — The retailer this status belongs to.
      - `status_key` string — The underlying key mapping this status to a system status (e.g. NEW, IN_PROGRESS).
      - `system_default` boolean — Whether this is a system-managed default status.
      - `updated_at` string, date-time — The date and time the status was last updated.
    - `totals` object — Financial totals for the service order.
      - `is_sale_level_discount_percentage` boolean — Indicates if the sale level discount is a percentage.
      - `sale_level_discount_value` string — Total discount value applied at the sale level.
      - `sub_total` string — Subtotal amount before taxes and discounts.
      - `total_amount` string — Final total amount including all taxes and discounts.
      - `total_promotion` string — Total promotion value applied.
      - `total_tax` string — Total tax amount.
    - `updated_at` string, nullable
    - `updated_by` string
  - `serviceItems` ServiceItems
    - `item_details` ItemDetails
      - `description` string
      - `initial_condition` string
      - `item_id` string
      - `item_name` string
      - `serial_number` string
    - `location` string

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden

---

[API](https://skmtc.net/lightspeedhq/apis/api-2026-07.md) · [All operations](https://skmtc.net/lightspeedhq/apis/api-2026-07/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lightspeedhq/api-2026-07/revisions/72d4ceb46dbb/schema)
