Lightspeed Order and Pay API
The Order and Pay API from Lightspeed — 18 operation(s) for order and pay.
The Order and Pay API from Lightspeed — 18 operation(s) for order and pay.
openapi: 3.1.0
info:
version: 1.0.0
title: Lightspeed Restaurant K Series Account Order and Pay API
description: '**Lightspeed Restaurant** offers a **REST API** in order to communicate with the data in the system. These APIs are built using the RESTful standards and adhere to the basic verb interactions as defined by the REST standard.
Detailed developer guides can be found in the [Lightspeed Restaurant API Portal](https://api-portal.lsk.lightspeed.app/).
These services are in continuous development and subject to change. Please find our versioning policy [here](https://api-portal.lsk.lightspeed.app/quick-start/versioning).
'
x-logo:
altText: Lightspeed Commerce
url: static/lightspeed@2x.png
contact:
name: Lightspeed Commerce
url: https://api-portal.lsk.lightspeed.app/
x-generated-from: documentation
x-last-validated: '2026-06-02'
x-source-url: https://api-docs.lsk.lightspeed.app/source.json
servers:
- url: https://api.trial.lsk.lightspeed.app
description: Demo URL
x-bump-branch-name: demo
- url: https://api.lsk.lightspeed.app
description: Production URL
x-bump-branch-name: prod
tags:
- name: Order and Pay
paths:
/o/op/data/businesses:
get:
summary: Lightspeed Get Businesses
operationId: apeLookupBusinesses
description: Returns a list of all businesses and business locations associated with the access token.
tags:
- Order and Pay
responses:
'200':
description: Businesses
content:
application/json:
schema:
items:
properties:
name:
example: My Awesome Business
description: The business name.
type: string
id:
example: 454335871
description: The unique identifier for the business.
type: integer
format: int64
businessLocations:
description: The business locations within this business.
items:
properties:
id:
$ref: '#/components/schemas/apeBusinessLocationId'
name:
example: My Awesome Business - Location 1
description: The business location name.
type: string
type: object
type: array
type: object
type: array
examples:
ApeLookupBusinesses200Example:
summary: Default apeLookupBusinesses 200 response
x-microcks-default: true
value:
- name: My Awesome Business
id: 454335871
businessLocations:
- id: 45454565682155
name: My Awesome Business - Location 1
security:
- OAuth2:
- orders-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/o/op/data/{businessLocationId}/floorplans:
get:
summary: Lightspeed Get All Floorplans
operationId: apeLookupFloorPlans
description: Returns the floorplans for a specific business location.
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: path
required: true
- name: expandTables
in: query
required: false
description: 'If true, the response will include the table details for each floorplan.
If false, the response will only include the [`name`](https://api-docs.lsk.lightspeed.app/operation/operation-apelookupfloorplans#operation-apelookupfloorplans-200-body-application-json-name) and [`id`](https://api-docs.lsk.lightspeed.app/operation/operation-apelookupfloorplans#operation-apelookupfloorplans-200-body-application-json-id) for the floorplans.'
schema:
type: boolean
default: true
responses:
'200':
description: Floorplans
content:
application/json:
schema:
items:
properties:
id:
example: 141948669132976
description: The unique identifier for the floorplan.
format: int64
type: integer
name:
description: The name of the floorplan.
example: Terrace
type: string
tables:
items:
$ref: '#/components/schemas/apeTable'
type: array
type: object
type: array
examples:
ApeLookupFloorPlans200Example:
summary: Default apeLookupFloorPlans 200 response
x-microcks-default: true
value:
- id: 141948669132976
name: Terrace
tables:
- number: 1
reference: abcdefg123456
id: '141948669132977'
active: true
description: Table 1
defaultClientCount: 4
'404':
description: 'Not Found
Indicates that the business location has no floorplans configured.'
security:
- OAuth2:
- orders-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/o/op/data/{businessLocationId}/floorplans/{floorPlanId}/tables:
get:
summary: Lightspeed Get Floorplan Tables
operationId: apeGetTables
description: Returns the tables for a specific floorplan of a business location
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: path
required: true
- schema:
$ref: '#/components/schemas/apeFloorPlanId'
name: floorPlanId
in: path
required: true
responses:
'200':
description: Tables
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/apeTable'
examples:
ApeGetTables200Example:
summary: Default apeGetTables 200 response
x-microcks-default: true
value:
- number: 1
reference: abcdefg123456
id: '141948669132977'
active: true
description: Table 1
defaultClientCount: 4
security:
- OAuth2:
- orders-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/o/op/data/account-profiles:
get:
summary: Lightspeed Get All Order Profiles
operationId: apeAccountProfiles
description: 'Returns a list of active [order profiles](https://k-series-support.lightspeedhq.com/hc/en-us/articles/1260804657389-About-order-profiles) for a specific business location.
The order profile [code](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code) can be used to retrieve a specific price list when [loading a menu](https://api-docs.lsk.lightspeed.app/operation/operation-apegetmenubyid).
Note: Order Profiles were previously called Account Profiles, and may still be referred to in this way in the API, in some cases.'
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: query
required: true
responses:
'200':
description: Order profiles
content:
application/json:
schema:
$ref: '#/components/schemas/apeAccountProfiles'
examples:
ApeAccountProfiles200Example:
summary: Default apeAccountProfiles 200 response
x-microcks-default: true
value:
businessLocationId: 45454565682155
accountProfileList:
- id: 12454575601144
code: takeaway
name: Takeaway
deliveryMode: TAKE_AWAY
security:
- OAuth2:
- orders-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/o/op/data/{businessLocationId}/account-profiles/tagcode/{tagCode}:
get:
summary: Lightspeed Get Single Order Profile
operationId: apeGetAccountProfile
description: 'Returns details of an active [order profile](https://k-series-support.lightspeedhq.com/hc/en-us/articles/1260804657389-About-order-profiles) based on its [code](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code).
Note: Order Profiles were previously called Account Profiles, and may still be referred to in this way in the API, in some cases.'
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: path
required: true
- schema:
$ref: '#/components/schemas/apeTagCode'
name: tagCode
in: path
required: true
responses:
'200':
description: Order profile
content:
application/json:
schema:
$ref: '#/components/schemas/apeAccountProfile'
examples:
ApeGetAccountProfile200Example:
summary: Default apeGetAccountProfile 200 response
x-microcks-default: true
value:
id: 12454575601144
code: takeaway
name: Takeaway
deliveryMode: TAKE_AWAY
security:
- OAuth2:
- orders-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/o/op/1/menu/list:
get:
summary: Lightspeed Get All Menus
operationId: apeLoadMenus
description: Returns a list of menus for a given business location.
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: query
required: true
responses:
'200':
description: Load menus
content:
application/json:
schema:
items:
properties:
menuName:
description: The name of the menu.
example: Lunch Menu
type: string
ikentooMenuId:
type: integer
description: The unique identifier for the menu.
example: 141948669132851
format: int64
type: object
type: array
examples:
ApeLoadMenus200Example:
summary: Default apeLoadMenus 200 response
x-microcks-default: true
value:
- menuName: Lunch Menu
ikentooMenuId: 141948669132851
security:
- OAuth2:
- orders-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/o/op/1/menu/load/{menuId}:
get:
summary: Lightspeed Get Single Menu
operationId: apeGetMenuById
deprecated: true
description: '**Deprecated:** Use [/o/op/2/menu/load/{menuId}](#/Order%20and%20Pay/getMenuByIdV2) instead. V2 includes product modifier groups and product modifiers on menu items and deal items. Returns details of a particular menu based on its unique identifier and other query parameters.'
tags:
- Order and Pay
parameters:
- name: menuId
in: path
required: true
description: The unique identifier for the menu.
schema:
type: integer
description: The unique identifier for the menu.
example: 141948669132851
format: int64
- name: businessLocationId
in: query
required: true
schema:
$ref: '#/components/schemas/apeBusinessLocationId'
- name: accountProfile
in: query
required: false
schema:
type: string
description: The order profile [`code`](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code). Item prices returned will be those associated with this order profile, when applicable. See the [order profiles](https://api-portal.lsk.lightspeed.app/guides/definitions/order-profiles) definition for more details.
example: TAKEAWAY
default: ''
- name: richContent
in: query
required: false
schema:
type: boolean
description: Query parameter to include rich content of menu items.
example: true
default: false
responses:
'200':
description: Successful retrieval of menu details.
content:
application/json:
schema:
$ref: '#/components/schemas/apeMenu'
examples:
ApeGetMenuById200Example:
summary: Default apeGetMenuById 200 response
x-microcks-default: true
value:
menuName: Main Menu
menuEntryGroups:
- '@type': group
id: '141948669133028'
name: Mains
color: blue
menuEntry: []
richDataMissing: false
ikentooMenuId: 141948669132851
conditionalTaxRules: false
'503':
description: Service Unavailable
content:
'*/*':
schema:
properties:
status:
enum:
- '503'
type: string
timestamp:
type: string
format: date-time
message:
type: string
apiSubExceptions:
items:
properties:
field:
type: string
rejectedValue:
type: string
message:
type: string
type: object
type: array
type: object
security:
- OAuth2:
- orders-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/o/op/2/menu/load/{menuId}:
get:
summary: Lightspeed Get Single Menu V2
operationId: apeGetMenuByIdV2
description: 'Returns details of a particular menu based on its unique identifier and other query parameters. Product modifier groups and product modifiers are always included in the response.
**Migration from V1:** The response includes `menuModifierGroups` on each menu item and deal item, containing product modifier details (name, price, extraPrice, sku, rich data). Items with product modifier groups are no longer marked as `asSubItem`.'
tags:
- Order and Pay
parameters:
- name: menuId
in: path
required: true
description: The unique identifier for the menu.
schema:
type: integer
description: The unique identifier for the menu.
example: 141948669132851
format: int64
- name: businessLocationId
in: query
required: true
schema:
$ref: '#/components/schemas/apeBusinessLocationId'
- name: accountProfile
in: query
required: false
schema:
type: string
description: The order profile [`code`](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code). Item prices returned will be those associated with this order profile, when applicable. See the [order profiles](https://api-portal.lsk.lightspeed.app/guides/definitions/order-profiles) definition for more details.
example: TAKEAWAY
default: ''
- name: richContent
in: query
required: false
schema:
type: boolean
description: Query parameter to include rich content of menu items.
example: true
default: false
responses:
'200':
description: Successful retrieval of menu details including product modifiers.
content:
application/json:
schema:
$ref: '#/components/schemas/apeMenuV2'
examples:
ApeGetMenuByIdV2200Example:
summary: Default apeGetMenuByIdV2 200 response
x-microcks-default: true
value:
menuName: Main Menu
menuEntryGroups:
- '@type': group
id: '141948669133028'
name: Mains
color: blue
menuEntry: []
richDataMissing: false
ikentooMenuId: 141948669132851
conditionalTaxRules: false
'503':
description: Service Unavailable
content:
'*/*':
schema:
properties:
status:
enum:
- '503'
type: string
timestamp:
type: string
format: date-time
message:
type: string
apiSubExceptions:
items:
properties:
field:
type: string
rejectedValue:
type: string
message:
type: string
type: object
type: array
type: object
security:
- OAuth2:
- orders-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/o/op/1/menu/modifiers:
get:
summary: Lightspeed Get Modifiers
operationId: apeLoadAllModifiers
description: Returns a list of production instructions for a specific business location.
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: query
required: true
responses:
'200':
description: Load modifiers
content:
application/json:
schema:
items:
$ref: '#/components/schemas/apeProductionInstruction'
type: array
examples:
- - multiSelectionPermitted: false
productionInstructionGroupName: Meat cooking
productionIntructionGroupId: 236025632784487
productionInstructionList:
- instruction: Bleu
ikentooModifierId: 236025632784488
- instruction: Rare
ikentooModifierId: 236025632784490
- instruction: Medium Rare
ikentooModifierId: 236025632784492
- instruction: Medium
ikentooModifierId: 236025632784494
- instruction: Medium well
ikentooModifierId: 236025632784496
- instruction: Well done
ikentooModifierId: 236025632784498
- multiSelectionPermitted: false
productionInstructionGroupName: Fish cooking
productionIntructionGroupId: 236025632784501
productionInstructionList:
- instruction: Seared
ikentooModifierId: 236025632784502
- instruction: Medium
ikentooModifierId: 236025632784504
- instruction: Well done
ikentooModifierId: 236025632784506
- multiSelectionPermitted: false
productionInstructionGroupName: Egg cooking
productionIntructionGroupId: 236025632784509
productionInstructionList:
- instruction: Sunny Side
ikentooModifierId: 236025632784510
- instruction: Over Easy
ikentooModifierId: 236025632784512
- instruction: Hard
ikentooModifierId: 236025632784514
- instruction: Scrambled
ikentooModifierId: 236025632784516
- multiSelectionPermitted: false
productionInstructionGroupName: Garnish
productionIntructionGroupId: 236025632784519
productionInstructionList:
- instruction: Fries
ikentooModifierId: 236025632784520
- instruction: Pasta
ikentooModifierId: 236025632784522
- instruction: Rice
ikentooModifierId: 236025632784524
- instruction: Vegetables
ikentooModifierId: 236025632784526
- instruction: Salad
ikentooModifierId: 236025632784528
- multiSelectionPermitted: false
productionInstructionGroupName: Flavors
productionIntructionGroupId: 236025632784531
productionInstructionList:
- instruction: Vanilla
ikentooModifierId: 236025632784532
- instruction: Strawberry
ikentooModifierId: 236025632784534
- instruction: Chocolate
ikentooModifierId: 236025632784536
- instruction: Coffee
ikentooModifierId: 236025632784538
- instruction: Caramel
ikentooModifierId: 236025632784540
examples:
ApeLoadAllModifiers200Example:
summary: Default apeLoadAllModifiers 200 response
x-microcks-default: true
value:
- multiSelectionPermitted: true
productionInstructionGroupName: Sample productionInstructionGroupName
productionIntructionGroupId: 760
productionInstructionList:
- {}
security:
- OAuth2:
- orders-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/o/op/1/menu/discounts:
get:
summary: Lightspeed Get Discounts
operationId: apeLoadAllDiscounts
description: Returns a list of discounts for a specific business location.
tags:
- Order and Pay
parameters:
- schema:
$ref: '#/components/schemas/apeBusinessLocationId'
name: businessLocationId
in: query
required: true
responses:
'200':
description: Load discounts
content:
application/json:
schema:
items:
$ref: '#/components/schemas/apeDiscount'
type: array
examples:
- - name: Free
code: FREE
discountPercentage: 100.0
- name: Ten Euros Off
code: TEN_OFF
discountAmount: 10.0
examples:
ApeLoadAllDiscounts200Example:
summary: Default apeLoadAllDiscounts 200 response
x-microcks-default: true
value:
- name: Staff Discount
code: STAFF
discountPercentage: 15
discountAmount: 5
security:
- OAuth2:
- orders-api
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/o/op/1/order/local:
post:
summary: Lightspeed Create Local Order
description: 'Creates a new dine-in order for a specific business location. See [Online Ordering Basics](https://api-portal.lsk.lightspeed.app/guides/tutorials/online-ordering-basics) for more details.
If the [accountIdentifier](https://api-docs.lsk.lightspeed.app/operation/operation-apelocalorder#operation-apelocalorder-body-application-json-accountidentifier) of an existing order is provided in the body of the request, the request will update the existing order.'
operationId: apeLocalOrder
requestBody:
content:
application/json:
schema:
required:
- businessLocationId
- thirdPartyReference
- endpointId
- customerInfo
properties:
businessLocationId:
$ref: '#/components/schemas/apeBusinessLocationId'
thirdPartyReference:
description: The external reference provided for this order. Must be unique. This value will be included in the order details sent to the [webhook URL](https://api-docs.lsk.lightspeed.app/operation/operation-apecreatewebhookoo#operation-apecreatewebhookoo-body-application-json-url).
type: string
minLength: 1
maxLength: 48
examples:
- MyAwesomeThirdPartyReference
endpointId:
description: Endpoint ID for a unique webhook that has been created using [the webhook endpoint](https://api-docs.lsk.lightspeed.app/operation/operation-apecreatewebhookoo).
type: string
examples:
- MY-AWESOME-ENDPOINT-ID
customerInfo:
$ref: '#/components/schemas/apeCustomerInfo'
orderNote:
description: A note added to this order and displayed on the printed dockets.
type: string
examples:
- Sample Order Note
maxTimeToAttemptOrderDeliverToPos:
description: '** Use of this feature is strongly recommended **
Maximum time to attempt delivery of this order to the POS. In milliseconds. The minimum value is 60000ms (1 minute).
If [`scheduledTimeForOrderAsIso8601`](https://api-docs.lsk.lightspeed.app/operation/operation-apelocalorder#operation-apelocalorder-body-application-json-scheduledtimefororderasiso8601) is used, this value will be added to the scheduled order time.'
type: integer
format: int32
examples:
- 60000
staffId:
description: The unique identifier for the staff member.
type: integer
format: int64
examples:
- 1234567890
accountProfileCode:
description: A valid order profile [code](https://api-docs.lsk.lightspeed.app/operation/operation-apeaccountprofiles#operation-apeaccountprofiles-200-body-application-json-accountprofilelist-code) to associate with this order. See the [order profiles](https://api-portal.lsk.lightspeed.app/guides/definitions/order-profiles) definition for more details.
type: string
examples:
- LOCALORDER
scheduledTimeForOrderAsIso8601:
description: The time that the order will be sent to the POS. Must be in the future.
type: string
format: date-time
examples:
- '2024-04-04T09:42:00.000+00:00'
payment:
$ref: '#/components/schemas/apeOrderPayment'
accountId:
description: The system-generated account identifier for this order (Applies to iKentoo V2). If this is specified, the associated order will be updated.
deprecated: true
type: string
examples:
- '1234567890'
accountIdentifier:
description: The system-generated account identifier for this order (Applies to iKentoo V3+). If this is specified, the associated order will be updated.
type: string
examples:
- A1235.89
tableNumber:
description: The table number for this local order. If updating an existing order, (ie.`accountIdentifier` is specified), the `tableNumber` cannot be updated.
type: string
examples:
- '1'
clientCount:
description: The number of customers for this order. If updating an existing order, (ie.`accountIdentifier` is specified), the `clientCount` cannot be updated.
type: integer
format: int32
examples:
- 4
items:
description: The items in this order.
items:
$ref: '#/components/schemas/apeLocalOrderItemLine'
type: array
targetPrinterProfileId:
description: The printer profile id to use for printing the receipt for this payment. If not provided, the default active printer profile for the business location will be used.
type: integer
format: int64
examples:
- 1773881235
type: object
examples:
ApeLocalOrderRequestExample:
summary: Default apeLocalOrder request
x-microcks-default: true
value:
businessLocationId: 45454565682155
thirdPartyReference: example
endpointId: '500123'
customerInfo:
firstName: Jane
lastName: Doe
thirdPartyReference: ZEN-7074522d-c71d-403f
email: jane.doe@example.com
contactNumberAsE164: '+14155552671'
notes: Notes about the customer.
salutation: Mr.
sendEmailReceipts: true
emailNotification: DONT_CHANGE
orderNote: example
maxTimeToAttemptOrderDeliverToPos: 510
staffId: 131
accountProfileCode: example
scheduledTimeForOrderAsIso8601: '2026-03-15T14:30:00Z'
payment:
paymentMethod: OOPAYMENT
paymentAmount: 14.0
tipAmount: 2.0
accountId: '500123'
accountIdentifier: '500123'
tableNumber: example
clientCount: 776
items:
- quantity: 1
sku: UGG-BB-PUR-06
customItemName: My Custom Item Name
customItemPrice: 10.0
discountAmountOverride: 5.0
discountPercentOverride: 10.0
modifiers:
- {}
# --- truncated at 32 KB (132 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lightspeed-pos/refs/heads/main/openapi/lightspeed-pos-order-and-pay-api-openapi.yml