> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Lightspeed Retail

The Lightspeed Retail connector lets your AI agent act in each user's Lightspeed Retail account. Each user connects their own Lightspeed Retail access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 113 tools.

**Authentication:** Bearer Token
**Categories:** CRM & Sales, Productivity
**Tools:** 113: 70 read, 35 write, 8 destructive
**Users sign in with:** Access token
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=LIGHTSPEEDRETAIL)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Lightspeed Retail connection

   In **AgentKit > Connections**, create a Lightspeed Retail connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'lightspeedretail'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Lightspeed Retail:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'lightspeedretail_get_current_user',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "lightspeedretail"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Lightspeed Retail:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="lightspeedretail_get_current_user",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their Lightspeed Retail credentials there. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'lightspeedretail_get_brand',
  toolInput: {
    brand_id: '<brand_id>',
  },
  connector: 'lightspeedretail',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="lightspeedretail_get_brand",
    tool_input={
        "brand_id": "<brand_id>",
    },
    connection_name="lightspeedretail",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `lightspeedretail_get_brand`

Get Brand · Read-only

Return a single brand with a requested ID
Returns a data object with deleted_at, description, id, name, version.
Use list_brands to browse or filter, create_brand to add a new one, update_brand to change an existing one, delete_brand to remove one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `brand_id` (`string`, required): The brand id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"brand_id":"<brand_id>"}`

### `lightspeedretail_get_consignment`

Get Consignment · Read-only

Return a single consignment with the requested ID.
Returns a data object with consignment_date, created_at, deleted_at, due_at, id, name, outlet_id, received_at.
Use list_consignments to browse or filter, create_consignment to add a new one, update_consignment to change an existing one, delete_consignment to remove one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `consignment_id` (`string`, required): The consignment id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"consignment_id":"<consignment_id>"}`

### `lightspeedretail_get_consignment_totals`

Get Consignment Totals · Read-only

Return the count and cost for the given consignment.
Returns a data array of records with total_received_cost, total_received_count, total_sent_cost, total_sent_count.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `consignment_id` (`string`, required): The consignment id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"consignment_id":"<consignment_id>"}`

### `lightspeedretail_get_current_user`

Get Current User · Read-only

Return the current user.
Returns a data object with account_type, created_at, deleted_at, display_name, email, email_verified_at, enabled, enabled_mfa.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `lightspeedretail_get_custom_field_values`

Get Custom Field Values · Read-only

Return the custom field values for a given entity.
Returns a data array of records with boolean_value, definition_id, integer_value, name, string_value, title, type.
Use set_custom_field_values to set values instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `entity` (`string`, required): The entity type. Allowed values: sale, line_item, customer, product. Example: sale. One of: `sale`, `line_item`, `customer`, `product`.
- `entity_id` (`string`, required): The entity ID. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"entity":"sale","entity_id":"<entity_id>"}`

### `lightspeedretail_get_customer`

Get Customer · Read-only

Return a single customer with a requested ID.
Returns a data object with balance, company_name, created_at, custom_field_1, custom_field_2, custom_field_3, custom_field_4, customer_code.
Use list_customers to browse or filter, create_customer to add a new one, update_customer to change an existing one, delete_customer to remove one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `customer_id` (`string`, required): The customer id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"customer_id":"<customer_id>"}`

### `lightspeedretail_get_customer_address`

Get Customer Address · Read-only

Return a single address by its ID for the specified customer.
Returns a data object with address_line_1, address_line_2, city, country_code, country_name, created_at, customer_id, id.
Use list_customer_addresses to browse or filter, create_customer_address to add a new one, update_customer_address to change an existing one, delete_customer_address to remove one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `address_id` (`integer`, required): The unique identifier of the address. Example: 1.
- `customer_id` (`string`, required): The unique identifier of the customer. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"address_id":1,"customer_id":"<customer_id>"}`

### `lightspeedretail_get_customer_group`

Get Customer Group · Read-only

Return given customer group
Returns a data object with created_at, deleted_at, group_id, id, name, retailer_id, updated_at, version.
Use list_customer_groups to browse or filter, create_customer_group to add a new one, update_customer_group to change an existing one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `customer_group_id` (`string`, required): The customer group id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"customer_group_id":"<customer_group_id>"}`

### `lightspeedretail_get_customer_store_credit_balance`

Get Customer Store Credit Balance · Read-only

Return a balance for the given customer id.
Returns an object with balance, customer_id, total_credit_issued, total_credit_redeemed.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `customer_id` (`string`, required): Customer id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"customer_id":"<customer_id>"}`

### `lightspeedretail_get_gift_card`

Get Gift Card · Read-only

Find and returns the gift card with the given id.
Returns a data object with balance, created_at, expires_at, gift_card_transactions, id, number, sale_id, sale_source.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): The id of the gift card to find. Example: Example id.

Example input: `{"id":"<id>"}`

### `lightspeedretail_get_gift_card_by_number`

Get Gift Card By Number · Read-only

Find and returns the gift card with the given card number.
Returns a data object with balance, created_at, expires_at, gift_card_transactions, id, number, sale_id, sale_source.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `card_number` (`string`, required): The number of the gift card to find. Example: Example card number.

Example input: `{"card_number":"<card_number>"}`

### `lightspeedretail_get_outlet`

Get Outlet · Read-only

Return a single outlet with the requested ID.
Returns a data object with attributes, currency, currency_symbol, default_tax_id, deleted_at, display_prices, email, id.
Use list_outlets to browse or filter instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `outlet_id` (`string`, required): The outlet id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"outlet_id":"<outlet_id>"}`

### `lightspeedretail_get_price_book`

Get Price Book · Read-only

Return a single price book with a requested ID
Returns a data object with created_at, customer_group_ids, customer_groups, deleted_at, id, name, outlets, restrict_to_platform_key.
Use list_price_books to browse or filter, create_price_book to add a new one, update_price_book to change an existing one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `id` (`string`, required): The price book id. Example: Example id.

Example input: `{"id":"<id>"}`

### `lightspeedretail_get_product`

Get Product · Read-only

Return a single product object with a given ID.
Returns a data object with account_code, account_code_purchase, active, attributes, brand, brand_id, button_order, categories.
Use list_products to browse or filter, create_product to add a new one, update_product to change an existing one, delete_product to remove one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `product_id` (`string`, required): The product id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"product_id":"<product_id>"}`

### `lightspeedretail_get_promotion`

Get Promotion · Read-only

This will retrieve a single promotion using the given ID.
Returns a data object with action, add_promo_code, channels, combinable_with_coupon, condition, customer_group_ids, description, end_time.
Use list_promotions to browse or filter instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `promotion_id` (`integer`, required): The promotion id. Example: 1.

Example input: `{"promotion_id":1}`

### `lightspeedretail_get_purchase_order`

Get Purchase Order · Read-only

Return a single purchase order with the requested ID.
Returns a data object with allocation_outlet_ids, cost_price_total, costs, created_at, delivery_outlet_id, discounts, due_at, id.
Use list_purchase_orders to browse or filter instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `purchase_order_id` (`string`, required): The unique identifier of the purchase order. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"purchase_order_id":"<purchase_order_id>"}`

### `lightspeedretail_get_quote`

Get Quote · Read-only

Return a single quote with a given ID.
Returns an object with created_at, customer_id, deleted_at, expired_at, grand_total, id, loyalty, note.
Use list_quotes to browse or filter instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `lightspeedretail_get_register`

Get Register · Read-only

Return a single register with the requested ID.
Returns a data object with ask_for_note_on_save, ask_for_user_on_sale, button_layout_id, cash_managed_payment_type_id, deleted_at, email_receipt, id, invoice_prefix.
Use list_registers to browse or filter instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `register_id` (`string`, required): The register id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"register_id":"<register_id>"}`

### `lightspeedretail_get_register_payments_summary`

Get Register Payments Summary · Read-only

Return a payload containing payment totals for all payments types defined in the account for a single register.
Returns a data object with payments.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `register_id` (`string`, required): The register id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"register_id":"<register_id>"}`

### `lightspeedretail_get_retailer`

Get Retailer · Read-only

This endpoint returns information about the retailer.
Returns a data object with account_status, account_type, activated_at, country, created_at, culture, currency, discount_product_id.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `lightspeedretail_get_sale`

Get Sale · Read-only

Return a single sale with a given ID.
Returns a data object with _metadata, adjustments, attributes, created_at, customer_id, date, deleted_at, ecom_custom_charges.
Use list_sales to browse or filter, create_sale to add a new one, update_sale to change an existing one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `sale_id` (`string`, required): A valid sale ID. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"sale_id":"<sale_id>"}`

### `lightspeedretail_get_serial_number`

Get Serial Number · Read-only

Return a single serial number.
Returns a data object with code, id, line_item_id, outlet_id, product_id, sale_id, version.
Use list_serial_numbers to browse or filter, create_serial_number to add a new one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `serialnumber_id` (`string`, required): The serial number id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"serialnumber_id":"<serialnumber_id>"}`

### `lightspeedretail_get_supplier`

Get Supplier · Read-only

Return a single supplier with a given ID.
Returns a data object with deleted_at, id, source, version, contact, default_markup, description, name.
Use list_suppliers to browse or filter, create_supplier to add a new one, update_supplier to change an existing one, delete_supplier to remove one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `supplier_id` (`string`, required): The supplier id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"supplier_id":"<supplier_id>"}`

### `lightspeedretail_get_tag`

Get Tag · Read-only

Return a single tag with a given ID.
Returns a data object with deleted_at, id, name, version.
Use list_tags to browse or filter, create_tag to add a new one, update_tag to change an existing one, delete_tag to remove one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `tag_id` (`string`, required): The tag id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"tag_id":"<tag_id>"}`

### `lightspeedretail_get_tax`

Get Tax · Read-only

Return a single tax with a given ID.
Returns a data object with deleted_at, display_name, id, is_default, name, rates, version.
Use list_taxes to browse or filter, create_tax to add a new one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `tax_id` (`string`, required): The tax id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"tax_id":"<tax_id>"}`

### `lightspeedretail_get_user`

Get User · Read-only

Return a single user with the requested ID.
Returns a data object with account_type, created_at, deleted_at, display_name, email, email_verified_at, enabled, enabled_mfa.
Use list_users to browse or filter instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `user_id` (`string`, required): A valid user id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"user_id":"<user_id>"}`

### `lightspeedretail_get_user_sale_totals`

Get User Sale Totals · Read-only

Return a single user's sales totals.
Returns a data array of records with cost, date_from, date_to, discounts, label, loyalty, revenue, sale_count.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `user_id` (`string`, required): A valid user id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"user_id":"<user_id>"}`

### `lightspeedretail_get_variant_attribute`

Get Variant Attribute · Read-only

Retrieve a single Variant Attribute with the given id.
Returns an object with deleted_at, id, name.
Use list_variant_attributes to browse or filter, create_variant_attribute to add a new one, update_variant_attribute to change an existing one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `attribute_id` (`string`, required): The object identifier of the Variant Attribute to retrieve. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `deleted` (`boolean`, optional): Indicates whether deleted items should be included in the response. Example: true.

Example input: `{"attribute_id":"<attribute_id>"}`

### `lightspeedretail_list_all_price_book_products`

List All Price Book Products · Read-only

Return a paginated list of price book products.
Returns a data array of records with adjustment, adjustment_type, created_at, default_display_price, deleted_at, discount, id, loyalty_value.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_brands`

List Brands · Read-only

Return a paginated list of brands.
Returns a data array of records with deleted_at, description, id, name, version and a version range for cursor pagination.
Use get_brand to fetch one by ID, create_brand to add a new one, update_brand to change an existing one, delete_brand to remove one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `deleted` (`boolean`, optional): Indicates whether deleted items should be included in the response. Example: true.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_consignment_products`

List Consignment Products · Read-only

Return a collection of consignment products associated with the specified consignment.
Returns a data array of records with cost, count, created_at, deleted_at, is_included, product_id, product_sku, received.
Use add_consignment_product to add items, update_consignment_product to change an existing one, delete_consignment_product to remove one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `consignment_id` (`string`, required): The consignment id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{"consignment_id":"<consignment_id>"}`

### `lightspeedretail_list_consignments`

List Consignments · Read-only

Return a paginated list of consignments.
Returns a data array of records with consignment_date, created_at, deleted_at, due_at, id, name, outlet_id, received_at and a version range for cursor pagination.
Use get_consignment to fetch one by ID, create_consignment to add a new one, update_consignment to change an existing one, delete_consignment to remove one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `outlet_id` (`string`, optional): Filter response by the ID of the outlet associated with the consignments. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.
- `status` (`string`, optional): The consignment status to search for. Allowed values: OPEN, SENT, DISPATCHED, RECEIVED, STOCKTAKE_IN_PROGRESS, STOCKTAKE_SCHEDULED, STOCKTAKE_IN_PROGRESS_PROCESSED, STOCKTAKE_COMPLETE, CLOSED, CANCELLED. Example: OPEN. One of: `OPEN`, `SENT`, `DISPATCHED`, `RECEIVED`, `STOCKTAKE_IN_PROGRESS`, `STOCKTAKE_SCHEDULED`, `STOCKTAKE_IN_PROGRESS_PROCESSED`, `STOCKTAKE_COMPLETE`, `CLOSED`, `CANCELLED`.
- `type` (`string`, optional): The consignment type to search for. Allowed values: SUPPLIER, OUTLET, STOCKTAKE, RETURN. Example: SUPPLIER. One of: `SUPPLIER`, `OUTLET`, `STOCKTAKE`, `RETURN`.

Example input: `{}`

### `lightspeedretail_list_custom_fields`

List Custom Fields · Read-only

Return the custom field definitions for a given entity type.
Returns a data array of records with created_at, editable_in_ui, entity, id, name, title, type, visible_in_ui.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `entity` (`string`, required): The entity type. Allowed values: sale, line_item, customer, product. Example: sale. One of: `sale`, `line_item`, `customer`, `product`.

Example input: `{"entity":"sale"}`

### `lightspeedretail_list_customer_addresses`

List Customer Addresses · Read-only

Return a list of all addresses associated with the specified customer.
Returns a data array of records with address_line_1, address_line_2, city, country_code, country_name, created_at, customer_id, id.
Use get_customer_address to fetch one by ID, create_customer_address to add a new one, update_customer_address to change an existing one, delete_customer_address to remove one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `customer_id` (`string`, required): The unique identifier of the customer. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"customer_id":"<customer_id>"}`

### `lightspeedretail_list_customer_contact_channels`

List Customer Contact Channels · Read-only

Return all contact channels of the specified customer, ordered by sort_order and then by id.
Returns a data array of records with id, is_default, note, sort_order, type, value.
Use create_customer_contact_channel to add a new one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `customer_id` (`string`, required): The unique identifier of the customer. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"customer_id":"<customer_id>"}`

### `lightspeedretail_list_customer_group_customers`

List Customer Group Customers · Read-only

Return a list of customers for the given Customer Group
Returns a data array of records with balance, company_name, created_at, custom_field_1, custom_field_2, custom_field_3, custom_field_4, customer_code and a version range for cursor pagination.
Use add_customers_to_customer_group to add items instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `customer_group_id` (`string`, required): The customer group id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{"customer_group_id":"<customer_group_id>"}`

### `lightspeedretail_list_customer_groups`

List Customer Groups · Read-only

Return a list of Customer Groups
Returns a data array of records with created_at, deleted_at, group_id, id, name, retailer_id, updated_at, version and a version range for cursor pagination.
Use get_customer_group to fetch one by ID, create_customer_group to add a new one, update_customer_group to change an existing one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `deleted` (`boolean`, optional): Indicates whether deleted items should be included in the response. Example: true.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_customer_store_credits`

List Customer Store Credits · Read-only

Return a balance and a history of store credit operations for the given customer id.
Returns an object with balance, created_at, customer_id, id, store_credit_transactions, total_credit_issued, total_credit_redeemed.
Use list_store_credits to browse or filter instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `customer_id` (`string`, required): Customer id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"customer_id":"<customer_id>"}`

### `lightspeedretail_list_customers`

List Customers · Read-only

Return a paginated list of customers.
Returns a data array of records with balance, company_name, created_at, custom_field_1, custom_field_2, custom_field_3, custom_field_4, customer_code and a version range for cursor pagination.
Use get_customer to fetch one by ID, create_customer to add a new one, update_customer to change an existing one, delete_customer to remove one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `deleted` (`boolean`, optional): Indicates whether deleted items should be included in the response. Example: true.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_gift_cards`

List Gift Cards · Read-only

Return a paginated list of gift cards.
Returns a data array of records with balance, created_at, expires_at, gift_card_transactions, id, number, sale_id, sale_source.
Use create_gift_card to add a new one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `before` (`string`, optional): Pagination cursor for reverse-chronological traversal. Pass the ID of a gift card to retrieve the next page of gift cards created before it, ordered from newest to oldest. Example: Example before.
- `card_number` (`string`, optional): Find by gift card number. Example: Example card number.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Defaults to 1000. Maximum value is 1000. Example: 100.
- `status` (`string`, optional): Filter by gift card status. Allowed values: ACTIVE, INACTIVE, REDEEMED, VOIDED, EXPIRED. Example: ACTIVE. One of: `ACTIVE`, `INACTIVE`, `REDEEMED`, `VOIDED`, `EXPIRED`.

Example input: `{}`

### `lightspeedretail_list_outlets`

List Outlets · Read-only

Return a collection of outlets.
Returns a data array of records with attributes, currency, currency_symbol, default_tax_id, deleted_at, display_prices, email, id and a version range for cursor pagination.
Use get_outlet to fetch one by ID instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `deleted` (`boolean`, optional): Indicates whether deleted items should be included in the response. Example: true.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_payment_types`

List Payment Types · Read-only

Return a paginated collection of payment types.
Returns a data array of records with config, created_at, deleted_at, disabled, gateway, id, internal, is_editable and a version range for cursor pagination.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `currency` (`string`, optional): Filters payment types by currency code (ISO 4217, e.g. "AUD", "USD"). Example: Example currency.
- `deleted` (`boolean`, optional): If true, includes deleted payment types in the response. Example: true.
- `only_lspay` (`boolean`, optional): If true, returns only LSPay payment types. Example: true.
- `outlet_id` (`string`, optional): Filters payment types by outlet. Only effective when the payment_type_controls feature is enabled. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_price_book_products`

List Price Book Products · Read-only

Return a list of price book products for a given price book.
Returns a data array of records with adjustment, adjustment_type, created_at, default_display_price, deleted_at, discount, id, loyalty_value.
Use add_products_to_price_book to add items instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `price_book_id` (`string`, required): The price book id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `product_ids` (`string`, optional): The product ids. Example: 06326976-9d65-11ed-fa40-1347e4b4ae6d,16326976-9d65-11ed-fa40-1347e4b4ae6d.

Example input: `{"price_book_id":"<price_book_id>"}`

### `lightspeedretail_list_price_books`

List Price Books · Read-only

Return a paginated list of price books.
Returns a data array of records with created_at, customer_group_ids, customer_groups, deleted_at, id, name, outlets, restrict_to_platform_key.
Use get_price_book to fetch one by ID, create_price_book to add a new one, update_price_book to change an existing one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `customer_group_id` (`string`, optional): Filter the list and show only price books linked to the specified Customer Group. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `deleted` (`boolean`, optional): Include (true) or exclude (false) deleted price books. Default value is false. Example: true.
- `direction` (`string`, optional): Sort results direction. ASC or DESC. Example: Example direction.
- `order` (`string`, optional): Field used to sort the results. Example: Example order.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_product_categories`

List Product Categories · Read-only

List product categories.
Returns a data object with categories.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`string`, optional): The category id to get the next set of paginated results. Example: Example after.
- `include` (`string`, optional): Defaults to "family" * family - Include all categories in the hierarchy. * children - Include only direct children. Allowed values: family, children. Example: family. One of: `family`, `children`.
- `page_size` (`integer`, optional): The total number of categories to return. Default is 1000. Example: 100.
- `parent` (`string`, optional): If parent is an id, it filters the list of categories that belongs to the given category. If parent is "none", it filters categories for root categories only. Example: Example parent.

Example input: `{}`

### `lightspeedretail_list_product_inventory_levels`

List Product Inventory Levels · Read-only

Return a paginated list of inventory levels for a single product.
Returns an array of objects with average_cost, brand_id, current_inventory_level, location_id, name, product_id, product_type_id, quantity_to_procure.
Use search_inventory_levels to search instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `product_id` (`string`, required): The product to fetch inventory levels for. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `include_inactive` (`boolean`, optional): Whether to include inactive products in the response. Example: true.

Example input: `{"product_id":"<product_id>"}`

### `lightspeedretail_list_product_inventory_records`

List Product Inventory Records · Read-only

Return inventory records for a single product at all outlets.
Returns an array of objects with average_cost, current_inventory_level, deleted_at, id, outlet_id, product_id, quantity_to_procure, reorder_amount.
Use search_inventory_records to search instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `product_id` (`string`, required): The product to fetch inventory levels for. When combined with variants: true, it's treated as a root product ID and matches all variants of that product; otherwise it matches the exact product. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `include_deleted` (`boolean`, optional): Whether to include inventory records for deleted products. Example: true.
- `order_direction` (`string`, optional): Whether to order the results ascending or descending by version. Allowed values: asc, desc. Example: asc. One of: `asc`, `desc`.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.
- `variants` (`boolean`, optional): When true (and product_id is set), matches all variant products sharing the same root_product_id, rather than just the exact product. Example: true.

Example input: `{"product_id":"<product_id>"}`

### `lightspeedretail_list_product_price_books`

List Product Price Books · Read-only

This endpoint returns the list of price books the given product is in.
Returns a data array of records with adjustment, adjustment_type, created_at, default_display_price, deleted_at, discount, id, loyalty_value.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `product_id` (`string`, required): The product id to find in the Price Books. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"product_id":"<product_id>"}`

### `lightspeedretail_list_products`

List Products · Read-only

Return a paginated list of products.
Returns a data array of records with account_code, account_code_purchase, active, attributes, brand, brand_id, button_order, categories and a version range for cursor pagination.
Use get_product to fetch one by ID, create_product to add a new one, update_product to change an existing one, delete_product to remove one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `deleted` (`boolean`, optional): Indicates whether deleted items should be included in the response. Example: true.
- `family_name` (`string`, optional): Alias for 'name'. Allows loading products that belong to the family with the name provided in this parameter. Note that all other query parameters are ignored if this is provided. Example: Example family name.
- `include_images` (`boolean`, optional): Whether to include product image fields in the response. Defaults to true. Example: true.
- `name` (`string`, optional): Allows loading products with the name provided in this parameter. This query typically retrieves all products from the product family with the provided name. Note that all other query parameters are ignored if this is provided. Example: Example name.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.
- `sku` (`string`, optional): Allows loading a product by one of its SKUs. Note that all other query params are ignored if this is provided. Example: SKU-1001.

Example input: `{}`

### `lightspeedretail_list_promotion_products`

List Promotion Products · Read-only

Get a list of products applicable for this promotion, and their discount price.
Returns a data object with action_products, condition_products.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `promotion_id` (`integer`, required): The promotion id. Example: 1.
- `name` (`string`, optional): Filter products by product name. Example: Example name.
- `offset` (`integer`, optional): The offset. Example: 0.
- `page_size` (`integer`, optional): The page size. Example: 100.

Example input: `{"promotion_id":1}`

### `lightspeedretail_list_promotion_promo_codes`

List Promotion Promo Codes · Read-only

Get the promo codes associated with this promotion.
Returns a data array of records with code, created_at, created_user_id, group_name, id, limit, promotion_id, redeemed.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `promotion_id` (`string`, required): The promotion id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"promotion_id":"<promotion_id>"}`

### `lightspeedretail_list_promotions`

List Promotions · Read-only

This endpoint lists all promotions for a retailer.
Returns a data array of records with action, add_promo_code, channels, combinable_with_coupon, condition, customer_group_ids, description, end_time.
Use get_promotion to fetch one by ID instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `end_time_from` (`string`, optional): Lower limit for the promotion end date as UTC timestamp. Format: 2020-08-08T12:00:00Z. Example: Example end time from.
- `end_time_to` (`string`, optional): Upper limit for the promotion end date as UTC timestamp. Format: 2020-08-08T12:00:00Z. Example: Example end time to.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_purchase_order_deliveries`

List Purchase Order Deliveries · Read-only

Return a paginated list of deliveries belonging to a purchase order using version-based cursor pagination.
Returns a data array of records with cost_price_total, costs, created_at, discounts, due_at, id, invoice_date, notes and a version range for cursor pagination.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `purchase_order_id` (`string`, required): The unique identifier of the purchase order. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `page_size` (`integer`, optional): The maximum number of items to return. Defaults to 100 and cannot exceed 1000. Example: 100.

Example input: `{"purchase_order_id":"<purchase_order_id>"}`

### `lightspeedretail_list_purchase_order_line_items`

List Purchase Order Line Items · Read-only

Return a paginated list of line items belonging to a purchase order using version-based cursor pagination.
Returns a data array of records with allocations, components, cost_price, created_at, id, product_id, purchase_order_id, quantity and a version range for cursor pagination.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `purchase_order_id` (`string`, required): The unique identifier of the purchase order. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `page_size` (`integer`, optional): The maximum number of items to return. Defaults to 100 and cannot exceed 1000. Example: 100.

Example input: `{"purchase_order_id":"<purchase_order_id>"}`

### `lightspeedretail_list_purchase_orders`

List Purchase Orders · Read-only

Return a paginated list of purchase orders using version-based cursor pagination.
Returns a data array of records with allocation_outlet_ids, cost_price_total, costs, created_at, delivery_outlet_id, discounts, due_at, id and a version range for cursor pagination.
Use get_purchase_order to fetch one by ID instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `page_size` (`integer`, optional): The maximum number of items to return. Defaults to 100 and cannot exceed 1000. Example: 100.

Example input: `{}`

### `lightspeedretail_list_quotes`

List Quotes · Read-only

Return a paginated list of quotes.
Returns an object with HasNext, Quotes, TotalCount.
Use get_quote to fetch one by ID instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the quote id to be included in the response. For proper pagination, it needs to be the quote id of the last item in the response from your previous request. Example: 0.
- `limit` (`integer`, optional): The maximum number of items to be returned in the response. Example: 1.

Example input: `{}`

### `lightspeedretail_list_registers`

List Registers · Read-only

Return a paginated list of registers.
Returns a data array of records with ask_for_note_on_save, ask_for_user_on_sale, button_layout_id, cash_managed_payment_type_id, deleted_at, email_receipt, id, invoice_prefix and a version range for cursor pagination.
Use get_register to fetch one by ID instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `deleted` (`boolean`, optional): Indicates whether deleted items should be included in the response. Example: true.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_sales`

List Sales · Read-only

Return a paginated list of sales.
Returns a data array of records with _metadata, adjustments, attributes, created_at, customer_id, date, deleted_at, ecom_custom_charges and a version range for cursor pagination.
Use get_sale to fetch one by ID, create_sale to add a new one, update_sale to change an existing one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_serial_numbers`

List Serial Numbers · Read-only

Return a paginated list of serial numbers.
Returns a data array of records with code, id, line_item_id, outlet_id, product_id, sale_id, version and a version range for cursor pagination.
Use get_serial_number to fetch one by ID, create_serial_number to add a new one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `line_item_id` (`string`, optional): A line item ID. This filters the serial numbers to only include ones sold in the specified line item. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `outlet_id` (`string`, optional): An outlet ID. This filters the serial numbers to only include ones on this outlet. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.
- `product_id` (`string`, optional): A product ID. This filters the serial numbers to only include ones on this product. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `sale_id` (`string`, optional): A sale ID. This filters the serial numbers to only include ones that were sold in the specified sale. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{}`

### `lightspeedretail_list_shifts`

List Shifts · Read-only

Return a paginated list of shifts.
Returns a data array of records with created_at, id, retailer_id, time_in, time_out, updated_at, updated_by, user_id and a version range for cursor pagination.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_stock_adjustments`

List Stock Adjustments · Read-only

Return a paginated list of stock adjustments for the authenticated retailer.
Returns a data array of records with created_at, custom_inventory_adjustment_reason_id, id, outlet_id, product_id, quantity, reason, updated_at and a version range for cursor pagination.
Use create_stock_adjustments to add a new one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): Return records with a version greater than this value. Example: 0.
- `before` (`integer`, optional): Return records with a version less than this value. Example: 0.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_store_credits`

List Store Credits · Read-only

Return all the store credit customers in a store with their store credit balance and a list of last store credit transactions for each customer
Returns a data array of records with balance, created_at, customer_id, id, store_credit_transactions, total_credit_issued, total_credit_redeemed.
Use list_customer_store_credits to browse or filter instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_suppliers`

List Suppliers · Read-only

Return a paginated list of suppliers.
Returns a data array of records with deleted_at, id, source, version, contact, default_markup, description, name and a version range for cursor pagination.
Use get_supplier to fetch one by ID, create_supplier to add a new one, update_supplier to change an existing one, delete_supplier to remove one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `deleted` (`boolean`, optional): Indicates whether deleted items should be included in the response. Example: true.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_tags`

List Tags · Read-only

Return a collection of tags.
Returns a data array of records with deleted_at, id, name, version and a version range for cursor pagination.
Use get_tag to fetch one by ID, create_tag to add a new one, update_tag to change an existing one, delete_tag to remove one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `deleted` (`boolean`, optional): Indicates whether deleted items should be included in the response. Example: true.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_taxes`

List Taxes · Read-only

Return a paginated list of taxes.
Returns a data array of records with deleted_at, display_name, id, is_default, name, rates, version.
Use get_tax to fetch one by ID, create_tax to add a new one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_users`

List Users · Read-only

Return a paginated list of users.
Returns a data array of records with account_type, created_at, deleted_at, display_name, email, email_verified_at, enabled, enabled_mfa and a version range for cursor pagination.
Use get_user to fetch one by ID instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `page_size` (`integer`, optional): The maximum number of items to be returned in the response. Example: 100.

Example input: `{}`

### `lightspeedretail_list_variant_attributes`

List Variant Attributes · Read-only

Retrieve all Variant Attributes.
Returns a data array of records with deleted_at, id, name.
Use get_variant_attribute to fetch one by ID, create_variant_attribute to add a new one, update_variant_attribute to change an existing one instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `deleted` (`boolean`, optional): Indicates whether deleted items should be included in the response. Example: true.

Example input: `{}`

### `lightspeedretail_search_inventory_levels`

Search Inventory Levels · Read-only

Return a paginated list of inventory levels.
Returns an array of objects with average_cost, brand_id, current_inventory_level, location_id, name, product_id, product_type_id, quantity_to_procure.
Use list_product_inventory_levels to browse or filter instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `group_variants` (`boolean`, optional): If filtering by root_product_ids and group_variants is true, one aggregated level will be returned for each variant family at each outlet. Example: true.
- `include_composites` (`boolean`, optional): Include composite products in the response. Example: true.
- `include_inactive` (`boolean`, optional): Include inactive products in the response. Example: true.
- `location_ids` (`array`, optional): Optional outlet IDs to filter response by. Example: ["0af7b240-ab83-11e7-eddc-4023c64c85e5"].
- `offset` (`integer`, optional): How many inventory levels to skip. Example: 0.
- `product_ids` (`array`, optional): Optional product IDs to filter response by. Mutually exclusive with root_product_ids. When omitted, returns inventory levels for all products. Example: ["0af7b240-ab83-11e7-eddc-4023c64c85e5"].
- `root_product_ids` (`array`, optional): Optional root product IDs to filter response by. Mutually exclusive with product_ids. When omitted, returns inventory levels for all products. Example: ["0af7b240-ab83-11e7-eddc-4023c64c85e5"].
- `size` (`integer`, optional): How many inventory levels to return. Example: 100.
- `sort_direction` (`string`, optional): Whether to sort the response ascending or descending. Allowed values: asc, desc. Example: asc. One of: `asc`, `desc`.
- `sort_type` (`string`, optional): Which response field to sort by. Allowed values: total_count, total_cost, average_cost, reorder_point, reorder_amount, product_name, created_at. Example: total_count. One of: `total_count`, `total_cost`, `average_cost`, `reorder_point`, `reorder_amount`, `product_name`, `created_at`.
- `supplier_ids` (`array`, optional): Optional supplier IDs to filter response by. Example: ["0af7b240-ab83-11e7-eddc-4023c64c85e5"].
- `to_be_procured_only` (`boolean`, optional): Only include inventory with a positive quantity to procure. Example: true.

Example input: `{}`

### `lightspeedretail_search_inventory_records`

Search Inventory Records · Read-only

Return a paginated list of inventory records.
Returns an array of objects with average_cost, current_inventory_level, deleted_at, id, outlet_id, product_id, quantity_to_procure, reorder_amount.
Use list_product_inventory_records to browse or filter instead when that fits better.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `after` (`integer`, optional): The lower limit for the version numbers to be included in the response. Example: 0.
- `before` (`integer`, optional): The upper limit for the version numbers to be included in the response. Example: 0.
- `include_deleted` (`boolean`, optional): Whether to include inventory records for deleted products. Example: true.
- `product_id` (`string`, optional): Optional filter to restrict results to the specified product. When combined with variants: true, it's treated as a root product ID and matches all variants of that product; otherwise it matches the exact product. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `size` (`integer`, optional): The maximum number of inventory records to return. Example: 100.
- `sort_direction` (`string`, optional): Whether to sort the response by ascending or descending. Allowed values: asc, desc. Example: asc. One of: `asc`, `desc`.
- `variants` (`boolean`, optional): When true (and product_id is set), matches all variant products sharing the same root_product_id, rather than just the exact product. Example: true.

Example input: `{}`

### `lightspeedretail_search_promotions`

Search Promotions · Read-only

This endpoint can be used to find promotions matching specific criteria.
Returns a data array of records with action, add_promo_code, channels, combinable_with_coupon, condition, customer_group_ids, description, end_time.
Use this when you need exactly this record set; there is no sibling list tool.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `direction` (`string`, optional): Sort direction. Allowed values: asc, desc. Example: asc. One of: `asc`, `desc`.
- `end_time` (`string`, optional): Only show promotions that have an end time before or equal to this. Example: 2023-08-29T9:57:52.
- `name` (`string`, optional): Part of promotion's name being searched. Example: choco.
- `offset` (`integer`, optional): Offset. Example: 0.
- `order_by` (`string`, optional): Sort the result by this field. Allowed values: name, start_date, end_date. Example: name. One of: `name`, `start_date`, `end_date`.
- `page_size` (`integer`, optional): Number of results per page. Example: 100.
- `scope` (`string`, optional): Scope of the search. Allowed values: current_upcoming, past, all. Example: current_upcoming. One of: `current_upcoming`, `past`, `all`.
- `start_time` (`string`, optional): Only show promotions that have a start time after or equal to this. Example: 2022-08-29T9:57:52.

Example input: `{}`

### `lightspeedretail_add_consignment_product`

Add Consignment Product · Write

Add a product to the given consignment.
Returns a data object with cost, count, created_at, deleted_at, is_included, product_id, product_sku, received.
Use list_consignment_products to browse or filter, update_consignment_product to change an existing one, delete_consignment_product to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `consignment_id` (`string`, required): The consignment id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `data` (`object`, required): The data. Fields include cost, count, created_at, deleted_at, is_included, product_id, product_sku, received, status, updated_at. Example: {"cost": "Example cost", "count": "Example count", "created_at": "2026-10-01T00:00:00Z", "deleted_at": "2026-10-01T00:00:00Z", "is_included": true, "product_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5"}.

Example input: `{"consignment_id":"<consignment_id>","data":{"cost":"Example cost","count":"Example count","created_at":"2026-10-01T00:00:00Z","deleted_at":"2026-10-01T00:00:00Z","is_included":true,"product_id":"0af7b240-ab83-11e7-eddc-4023c64c85e5"}}`

### `lightspeedretail_add_customers_to_customer_group`

Add Customers To Customer Group · Write

Associate one or more customers with the given customer group
Returns the upstream confirmation of the change.
Use list_customer_group_customers to browse or filter instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `customer_group_id` (`string`, required): The customer group id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `customer_ids` (`array`, required): The customer ids. Example: ["Example customer ids"].

Example input: `{"customer_group_id":"<customer_group_id>","customer_ids":["Example customer ids"]}`

### `lightspeedretail_add_products_to_price_book`

Add Products To Price Book · Write

Create price book products.
Returns a data object with message.
Use list_price_book_products to browse or filter instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `data` (`array`, required): An array of Price Book objects wrapped in a top level data object. Fields include adjustment, adjustment_type, created_at, default_display_price, deleted_at, discount, id, loyalty_value, max_units, min_units. Example: [{"adjustment": 9.99, "adjustment_type": "Example adjustment type", "created_at": "2026-10-01T00:00:00Z", "default_display_price": 9.99, "deleted_at": "2026-10-01T00:00:00Z", "discount": 9.99}].
- `price_book_id` (`string`, required): The price book id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"data":[{"adjustment":9.99,"adjustment_type":"Example adjustment type","created_at":"2026-10-01T00:00:00Z","default_display_price":9.99,"deleted_at":"2026-10-01T00:00:00Z","discount":9.99}],"price_book_id":"<price_book_id>"}`

### `lightspeedretail_create_brand`

Create Brand · Write

Create a new brand.
Returns an object whose data field is the id of brand created.
Use list_brands to browse or filter, get_brand to fetch one by ID, update_brand to change an existing one, delete_brand to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The Brand name. Example: Example name.
- `description` (`string`, optional): The brand description. Example: Example description.

Example input: `{"name":"<name>"}`

### `lightspeedretail_create_consignment`

Create Consignment · Write

Create a new consignment.
Returns a data object with consignment_date, created_at, deleted_at, due_at, id, name, outlet_id, received_at.
Use list_consignments to browse or filter, get_consignment to fetch one by ID, update_consignment to change an existing one, delete_consignment to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `data` (`object`, required): The data. Fields include consignment_date, created_at, deleted_at, due_at, id, name, outlet_id, received_at, reference, source_outlet_id. Example: {"consignment_date": "2026-10-01T00:00:00Z", "created_at": "2026-10-01T00:00:00Z", "deleted_at": "2026-10-01T00:00:00Z", "due_at": "2026-10-01T00:00:00Z", "id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "name": "Example name"}.

Example input: `{"data":{"consignment_date":"2026-10-01T00:00:00Z","created_at":"2026-10-01T00:00:00Z","deleted_at":"2026-10-01T00:00:00Z","due_at":"2026-10-01T00:00:00Z","id":"0af7b240-ab83-11e7-eddc-4023c64c85e5","name":"Example name"}}`

### `lightspeedretail_create_customer`

Create Customer · Write

Create a new customer.
Returns a data object with balance, company_name, created_at, custom_field_1, custom_field_2, custom_field_3, custom_field_4, customer_code.
Use list_customers to browse or filter, get_customer to fetch one by ID, update_customer to change an existing one, delete_customer to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `first_name` (`string`, required): Customer's first name. Example: Example first name.
- `last_name` (`string`, required): Customer 's last name. Example: Example last name.
- `company_name` (`string`, optional): Company name. Example: Example company name.
- `custom_field_1` (`string`, optional): Custom field 1. Can be used to store random data. Example: Example custom field 1.
- `custom_field_2` (`string`, optional): Custom field 2. Example: Example custom field 2.
- `custom_field_3` (`string`, optional): Custom field 3. Example: Example custom field 3.
- `custom_field_4` (`string`, optional): Custom field 4. Example: Example custom field 4.
- `customer_code` (`string`, optional): Customer code used for claiming loyalty. Example: Example customer code.
- `customer_group_id` (`string`, optional): Customer group ID. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `date_of_birth` (`string`, optional): Birthday. Example: 2026-10-01T00:00:00Z.
- `do_not_email` (`boolean`, optional): Indicates whether the customer opted out of email communications. Example: true.
- `email` (`string`, optional): Customer's email address. Example: tony@example.com.
- `enable_loyalty` (`boolean`, optional): The enable loyalty. Example: true.
- `enable_promotional_sms` (`boolean`, optional): Indicates whether the customer opted in to SMS communications. Example: true.
- `fax` (`string`, optional): Fax no. Example: Example fax.
- `gender` (`string`, optional): Customer's gender. Can be M, F or null. Example: Example gender.
- `mobile` (`string`, optional): Mobile phone no. Example: Example mobile.
- `note` (`string`, optional): Customer note. Example: Example note.
- `on_account_limit` (`number`, optional): Customer's OnAccount Limit. Example: 9.99.
- `phone` (`string`, optional): Phone no. Example: Example phone.
- `physical_address_1` (`string`, optional): Physical address, line 1. Example: Example physical address 1.
- `physical_address_2` (`string`, optional): Physical address, line 2. Example: Example physical address 2.
- `physical_city` (`string`, optional): Physical address, city. Example: Example physical city.
- `physical_country_id` (`string`, optional): Physical address, country code. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `physical_postcode` (`string`, optional): Physical address, post code. Example: Example physical postcode.
- `physical_state` (`string`, optional): Physical address, state. Example: Example physical state.
- `physical_suburb` (`string`, optional): Physical address, suburb. Example: Example physical suburb.
- `postal_address_1` (`string`, optional): Postal address, line 1. Example: Example postal address 1.
- `postal_address_2` (`string`, optional): Postal address, line 2. Example: Example postal address 2.
- `postal_city` (`string`, optional): Postal address, city. Example: Example postal city.
- `postal_country_id` (`string`, optional): Postal address, country code. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `postal_postcode` (`string`, optional): Postal address, post code. Example: Example postal postcode.
- `postal_state` (`string`, optional): Postal address, state. Example: Example postal state.
- `postal_suburb` (`string`, optional): Postal address, suburb. Example: Example postal suburb.
- `tax_id` (`string`, optional): Customer's tax ID. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `twitter` (`string`, optional): Twitter handle. Example: Example twitter.
- `website` (`string`, optional): Website URL. Example: Example website.

Example input: `{"first_name":"<first_name>","last_name":"<last_name>"}`

### `lightspeedretail_create_customer_address`

Create Customer Address · Write

Create a new address for the specified customer.
Returns a data object with address_line_1, address_line_2, city, country_code, country_name, created_at, customer_id, id.
Use list_customer_addresses to browse or filter, get_customer_address to fetch one by ID, update_customer_address to change an existing one, delete_customer_address to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `address_line_1` (`string`, required): Primary address line (street address, P.O. box, etc.). Example: Example address line 1.
- `city` (`string`, required): City or town name. Example: Example city.
- `country_code` (`string`, required): ISO 3166-1 alpha-2 country code (e.g., US, NZ, AU). Example: Example country code.
- `customer_id` (`string`, required): The unique identifier of the customer. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `postcode` (`string`, required): Postal code or ZIP code. Example: Example postcode.
- `type` (`string`, required): The type of address. Allowed values: BILLING, SHIPPING. Example: BILLING. One of: `BILLING`, `SHIPPING`.
- `address_line_2` (`string`, optional): Secondary address line (apartment, suite, unit, building, floor, etc.). Example: Example address line 2.
- `state` (`string`, optional): State, province, or region name. Example: Example state.
- `state_code` (`string`, optional): State or province code. Required for US and CA. Example: Example state code.
- `suburb` (`string`, optional): Suburb or district. Example: Example suburb.

Example input: `{"address_line_1":"<address_line_1>","city":"<city>","country_code":"<country_code>","customer_id":"<customer_id>","postcode":"<postcode>","type":"BILLING"}`

### `lightspeedretail_create_customer_contact_channel`

Create Customer Contact Channel · Write

Create a contact channel for the specified customer.
Returns a data object with id, is_default, note, sort_order, type, value.
Use list_customer_contact_channels to browse or filter instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `customer_id` (`string`, required): The unique identifier of the customer. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `type` (`string`, required): The kind of contact channel. Allowed values: email, phone, fax, mobile, fb_messenger, whatsapp, telegram, viber, facebook, instagram, tiktok, twitter, youtube, website, other. Example: email. One of: `email`, `phone`, `fax`, `mobile`, `fb_messenger`, `whatsapp`, `telegram`, `viber`, `facebook`, `instagram`, `tiktok`, `twitter`, `youtube`, `website`, `other`.
- `value` (`string`, required): The contact value. Maximum 2048 characters, or 255 characters for the email, phone, fax, mobile and website types. Must be a valid email address when type is email. Example: tony@stark.com.
- `note` (`string`, optional): Optional free-text note. Maximum 4000 characters. Example: Example note.
- `sort_order` (`integer`, optional): Position of the channel in ordered listings. Example: 1.

Example input: `{"customer_id":"<customer_id>","type":"email","value":"<value>"}`

### `lightspeedretail_create_customer_group`

Create Customer Group · Write

Create a new customer group
Returns a data object with created_at, deleted_at, group_id, id, name, retailer_id, updated_at, version.
Use list_customer_groups to browse or filter, get_customer_group to fetch one by ID, update_customer_group to change an existing one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The customer group name. Example: Example name.

Example input: `{"name":"<name>"}`

### `lightspeedretail_create_gift_card`

Create Gift Card · Write

Create and activates a new gift card.
Returns a data object with balance, created_at, expires_at, gift_card_transactions, id, number, sale_id, sale_source.
Use list_gift_cards to browse or filter instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `amount` (`number`, required): The initial balance to be loaded onto the gift card (e.g. 10.00). Example: 10.
- `number` (`string`, required): The unique number to assign to the gift card. Example: Example number.
- `expires_at` (`string`, optional): The expiry date of the gift card in YYYY-MM-DD format. If omitted, the expiry will be calculated based on the validity period configured in the Lightspeed Retail UI, or will be null if expiry is not enabled. Example: 2026-10-01T00:00:00Z.
- `time_zone` (`string`, optional): The timezone to use when interpreting the expires_at date (e.g. "Pacific/Auckland"). See the list of tz database time zones for valid values. Example: Example time zone.
- `user_id` (`string`, optional): The ID of the user creating the gift card. If omitted, the authenticated user will be used. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"amount":10,"number":"<number>"}`

### `lightspeedretail_create_gift_card_transaction`

Create Gift Card Transaction · Write

Create a new gift card transaction on the specified gift card.
Returns a data object with amount, client_id, created_at, id, source, source_id, type, user_id.
Use this for exactly this operation.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `amount` (`number`, required): The transaction amount. Must be negative for REDEEMING transactions and positive for RELOADING transactions. Example: 9.99.
- `card_number` (`string`, required): The number of the gift card to add the transaction to. Example: Example card number.
- `client_id` (`string`, required): A unique transaction identifier for idempotency. The client must provide this and is normally the transaction id from the client system. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `type` (`string`, required): The type of the transaction. Allowed values: REDEEMING, RELOADING. Example: REDEEMING. One of: `REDEEMING`, `RELOADING`.
- `expires_at` (`string`, optional): Optional new expiry date for the gift card in YYYY-MM-DD format. Can be used to extend the gift card's expiry when reloading. Example: 2026-10-01T00:00:00Z.
- `time_zone` (`string`, optional): The timezone to use when interpreting the expires_at date (e.g. "Pacific/Auckland"). See the list of tz database time zones for valid values. Example: Example time zone.
- `user_id` (`string`, optional): The ID of the user creating the transaction. If omitted, the authenticated user will be used. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"amount":9.99,"card_number":"<card_number>","client_id":"<client_id>","type":"REDEEMING"}`

### `lightspeedretail_create_price_book`

Create Price Book · Write

Create a price book
Returns a data object with customer_groups, id, name, outlets, restrict_to_platform, retailer_id, type, valid_from.
Use list_price_books to browse or filter, get_price_book to fetch one by ID, update_price_book to change an existing one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `customer_group_ids` (`array`, required): The customer group ids. Example: ["Example customer group ids"].
- `name` (`string`, required): Price Book name. Example: Example name.
- `outlet_ids` (`array`, required): The outlet ids. Example: ["Example outlet ids"].
- `restrict_to_platform` (`string`, optional): "0" - all platforms, "1" - in store, "2" - ecommerce. Example: Example restrict to platform.
- `valid_from` (`string`, optional): The date when the Price Book becomes valid (active). Example: Example valid from.
- `valid_to` (`string`, optional): The date when the Price Book becomes invalid (inactive). Example: Example valid to.

Example input: `{"customer_group_ids":["Example customer group ids"],"name":"<name>","outlet_ids":["Example outlet ids"]}`

### `lightspeedretail_create_product`

Create Product · Write

Create a new product.
Returns a data array of records.
Use list_products to browse or filter, get_product to fetch one by ID, update_product to change an existing one, delete_product to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Product name. Note: Variants share the same name. Example: Example name.
- `account_code_purchase` (`string`, optional): The code used to attribute the purchase of the product to a specific account for the Xero integration. Example: Example account code purchase.
- `account_code_sale` (`string`, optional): The code used to attribute the sales of the product to a specific account for the Xero integration. Example: Example account code sale.
- `all_outlets_tax` (`object`, optional): Only used for tax inclusive stores. Fields include is_default, tax_id. Example: {"is_default": true, "tax_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5"}.
- `attributes` (`object`, optional): The attributes. Fields include key, value. Example: {"key": "Example key", "value": "Example value"}.
- `brand_id` (`string`, optional): The brand ID. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `composite` (`array`, optional): A list of composite components. Fields include product_id, quantity. Example: [{"product_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "quantity": 9.99}].
- `description` (`string`, optional): A detailed description of the Product. Note Can contain HTML. Example: Example description.
- `dimensions_unit` (`string`, optional): Unit of measurement for product dimensions. These are used to calculate variable shipping rates for stores using Lightspeed eCom. Allowed values: IN, CM, MM, YD. Example: IN. One of: `IN`, `CM`, `MM`, `YD`.
- `handle` (`string`, optional): Product handle. Example: Example handle.
- `height` (`number`, optional): Product height. These are used to calculate variable shipping rates for stores using Lightspeed eCom. Example: 9.99.
- `images` (`array`, optional): A list of image objects. Fields include index, location, type. Example: [{"index": 1, "location": "Example location", "type": "s3"}].
- `inventory` (`array`, optional): The inventory. Fields include current_amount, outlet_id, reorder_amount, reorder_point. Example: [{"current_amount": 9.99, "outlet_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "reorder_amount": 9.99, "reorder_point": 9.99}].
- `is_active` (`boolean`, optional): Indicated whether the Product is active. Example: true.
- `length` (`number`, optional): Product length. These are used to calculate variable shipping rates for stores using Lightspeed eCom. Example: 9.99.
- `loyalty_amount` (`number`, optional): The amount of loyalty the customer receives buying this item. Example: 9.99.
- `outlet_taxes` (`array`, optional): Only used for tax exclusive stores. Fields include outlet_id, tax_id. Example: [{"outlet_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "tax_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5"}].
- `price_excluding_tax` (`number`, optional): The price before tax is added. Example: 9.99.
- `price_including_tax` (`number`, optional): The price including all the relevant taxes. Example: 9.99.
- `product_category_id` (`string`, optional): The product category. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `product_codes` (`array`, optional): The product codes. Fields include code, id, type. Example: [{"code": "Example code", "id": "Example id", "type": "CUSTOM"}].
- `product_suppliers` (`array`, optional): The product suppliers. Fields include code, id, price, product_id, supplier_id, supplier_name. Example: [{"code": "Example code", "id": "Example id", "price": 9.99, "product_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "supplier_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "supplier_name": "Example supplier name"}].
- `product_type_id` (`string`, optional): The product category. Note Product types are now product categories. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `sku` (`string`, optional): Product sku. Note: Should be unique. Example: SKU-1001.
- `source` (`string`, optional): Indicates the origin of the product. Can be USER, SHOPIFY. Example: Example source.
- `source_id` (`string`, optional): External reference ID. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `source_variant_id` (`string`, optional): Secondary external reference ID. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `supplier_code` (`string`, optional): Supplier code. Example: Example supplier code.
- `supplier_id` (`string`, optional): The supplier ID. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `supply_price` (`number`, optional): Default supply price. Example: 9.99.
- `tag_ids` (`array`, optional): An array of tag IDs associated with this product. Example: ["Example tag ids"].
- `variants` (`array`, optional): The variants. Fields include all_outlets_tax, dimensions_unit, height, images, inventory, length, outlet_taxes, price_excluding_tax, price_including_tax, product_codes. Example: [{"all_outlets_tax": {"is_default": true, "tax_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5"}, "dimensions_unit": "IN", "height": 9.99, "images": [{"index": 1, "location": "Example location", "type": "s3"}], "inventory": [{"current_amount"....
- `weight` (`number`, optional): Product weight. These are used to calculate variable shipping rates for stores using Lightspeed eCom. Example: 9.99.
- `weight_unit` (`string`, optional): Unit of measurement for product weight. These are used to calculate variable shipping rates for stores using Lightspeed eCom. Allowed values: CT, G, OZ, LB, KG. Example: CT. One of: `CT`, `G`, `OZ`, `LB`, `KG`.
- `width` (`number`, optional): Product width. These are used to calculate variable shipping rates for stores using Lightspeed eCom. Example: 9.99.

Example input: `{"name":"<name>"}`

### `lightspeedretail_create_sale`

Create Sale · Write

Create a sale.
Returns a data object with id.
Use list_sales to browse or filter, get_sale to fetch one by ID, update_sale to change an existing one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `source` (`object`, required): The source. Fields include author_id, id, register_id, type. Example: {"author_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "id": "Example id", "register_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "type": "Example type"}.
- `state` (`string`, required): State of the sale. Allowed values: parked, pending, voided, closed. Example: closed. One of: `parked`, `pending`, `voided`, `closed`.
- `accounts_transaction_id` (`string`, optional): Xero invoice reference ID. Only editable for ONACCOUNT sales. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `attributes` (`array`, optional): An array of attributes. Example: ["Example attributes"].
- `customer_id` (`string`, optional): The ID of the customer associated with this sale. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `date` (`string`, optional): The date of the sale in RFC3339 format. If not provided will be added as the time the sale reached the server. Example: 2009-11-10T23:00:00Z.
- `fulfillment_details` (`array`, optional): Fulfillment details for DISPATCH or PICKUP fulfillments. Fields include note, shipping_address_id, shipping_address_token, type. Example: [{"note": "Example note", "shipping_address_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "shipping_address_token": "Example shipping address token", "type": "DISPATCH"}].
- `fulfillment_outlet_id` (`string`, optional): The default outlet that should fulfill this sale when a line item does not specify its own fulfilment_outlet_id. Mutually exclusive with pick lists created via /sales/{sale_id}/pick_lists. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `id` (`string`, optional): User-provided sale ID. If not included, one will be generated. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `invoice_number` (`string`, optional): The invoice number for the sale. If left null it will be populated by Lightspeed with the next available invoice number. Example: Example invoice number.
- `line_items` (`array`, optional): Line items. Fields include _metadata, attributes, fulfilment_outlet_id, id, pricing, product, quantity, source, status, tax. Example: [{"_metadata": {"fulfillment_method": "DISPATCH", "is_price_override": true, "sequence": 1}, "attributes": [{"name": "Example name", "value": "Example value"}], "fulfilment_outlet_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "id": "0af7b....
- `note` (`string`, optional): A note on the sale entered by the cashier. Example: Example note.
- `payments` (`array`, optional): Payments. Fields include amount, billing_address_id, billing_address_token, date, id, source, type. Example: [{"amount": 9.99, "billing_address_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "billing_address_token": "Example billing address token", "date": "2026-10-01T00:00:00Z", "id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "source": {"register_....
- `pricing` (`object`, optional): The pricing. Fields include adjustments. Example: {"adjustments": [{"amount": {"type": "FIXED", "value": "Example value"}, "name": "Example name", "source": {"id": "0af7b240-ab83-11e7-eddc-4023c64c85e5"}, "type": "NON_CASH_FEE"}]}.
- `service_fields` (`object`, optional): The service fields. Fields include service_action, service_agenda, service_items, service_line_items. Example: {"service_action": "Example service action", "service_agenda": {"date": "2026-10-01T00:00:00Z", "minutes_scheduled": 1}, "service_items": {"location": "Example location"}, "service_line_items": [{"_metadata": {"fulfillment_method": "DISP....
- `short_code` (`string`, optional): Short, unique code to be printed on the receipt for loyalty tracking purposes. Example: Example short code.

Example input: `{"source":{"author_id":"0af7b240-ab83-11e7-eddc-4023c64c85e5","id":"Example id","register_id":"0af7b240-ab83-11e7-eddc-4023c64c85e5","type":"Example type"},"state":"parked"}`

### `lightspeedretail_create_serial_number`

Create Serial Number · Write

Create a serial number.
Returns a data object with code, id, line_item_id, outlet_id, product_id, sale_id, version.
Use list_serial_numbers to browse or filter, get_serial_number to fetch one by ID instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `code` (`string`, required): The actual serial number value. Example: Example code.
- `outlet_id` (`string`, required): The ID of the outlet where the serial number is located. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `product_id` (`string`, required): The ID of the product associated with the serial number. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"code":"<code>","outlet_id":"<outlet_id>","product_id":"<product_id>"}`

### `lightspeedretail_create_stock_adjustments`

Create Stock Adjustments · Write

Create one or more stock adjustments in a single batch (1–1000 items per request).
Returns a data array of records with created_at, custom_inventory_adjustment_reason_id, id, outlet_id, product_id, quantity, reason, updated_at.
Use list_stock_adjustments to browse or filter instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `stock_adjustments` (`array`, required): The stock adjustments to create. Fields include custom_inventory_adjustment_reason_id, outlet_id, product_id, quantity, reason. Example: [{"custom_inventory_adjustment_reason_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "outlet_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "product_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "quantity": "1", "reason": "DAMAGE"}].

Example input: `{"stock_adjustments":[{"custom_inventory_adjustment_reason_id":"0af7b240-ab83-11e7-eddc-4023c64c85e5","outlet_id":"0af7b240-ab83-11e7-eddc-4023c64c85e5","product_id":"0af7b240-ab83-11e7-eddc-4023c64c85e5","quantity":"1","reason":"DAMAGE"}]}`

### `lightspeedretail_create_store_credit_transaction`

Create Store Credit Transaction · Write

Create a new store credit transaction.
Returns an object with amount, client_id, created_at, id, notes, sale_id, type, user_id.
Use this for exactly this operation.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `amount` (`number`, required): The amount of the transaction. Example: 9.99.
- `client_id` (`string`, required): The client id is a unique transaction identifier. The client must provide this and is normally the transaction id from the client system. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `customer_id` (`string`, required): The customer id to apply the store transaction to. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `type` (`string`, required): The type of the transaction. Allowed values: ISSUE, REDEMPTION, REVERSE. Example: ISSUE. One of: `ISSUE`, `REDEMPTION`, `REVERSE`.
- `hold_id` (`string`, optional): An ID of a previously created HOLD transaction. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `notes` (`string`, optional): The notes associated with the transaction. Example: Example notes.
- `user_id` (`string`, optional): The user id of the person who handled the transaction. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"amount":9.99,"client_id":"<client_id>","customer_id":"<customer_id>","type":"ISSUE"}`

### `lightspeedretail_create_supplier`

Create Supplier · Write

Create a new supplier.
Returns an object whose data field is the id of the supplier created.
Use list_suppliers to browse or filter, get_supplier to fetch one by ID, update_supplier to change an existing one, delete_supplier to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact` (`object`, required): Contact information for the supplier. Fields include company_name, email, fax, first_name, last_name, mobile, phone, physical_address1, physical_address2, physical_city. Example: {"company_name": "Example company name", "email": "tony@example.com", "fax": "Example fax", "first_name": "Example first name", "last_name": "Example last name", "mobile": "Example mobile"}.
- `name` (`string`, required): The Supplier name. Example: Example name.
- `default_markup` (`number`, optional): This is used for record-keeping purposes and it does not have any effect on your products. Example: 9.99.
- `description` (`string`, optional): The Supplier description. Example: Example description.

Example input: `{"contact":{"company_name":"Example company name","email":"tony@example.com","fax":"Example fax","first_name":"Example first name","last_name":"Example last name","mobile":"Example mobile"},"name":"<name>"}`

### `lightspeedretail_create_tag`

Create Tag · Write

Create a new tag.
Returns an object whose data field is the id of the created tag.
Use list_tags to browse or filter, get_tag to fetch one by ID, update_tag to change an existing one, delete_tag to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The Tag name. Example: Example name.

Example input: `{"name":"<name>"}`

### `lightspeedretail_create_tax`

Create Tax · Write

Create a new tax.
Returns a data object with deleted_at, display_name, id, is_default, name, rates, version.
Use list_taxes to browse or filter, get_tax to fetch one by ID instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The Tax name. Example: Example name.
- `rate` (`number`, required): The Tax rate percentage. Example: 0.1.
- `clothing_footwear_exemption` (`boolean`, optional): Whether the tax is exempt for clothing and footwear. This is applicable for tax exclusive retailers only. Example: true.
- `clothing_footwear_threshold_value` (`number`, optional): The threshold value for clothing and footwear exemption. This is applicable for tax exclusive retailers only. Example: 9.99.
- `tax_over_threshold` (`boolean`, optional): Whether the tax applies over the threshold. This is applicable for tax exclusive retailers only. Example: true.

Example input: `{"name":"<name>","rate":0.1}`

### `lightspeedretail_create_variant_attribute`

Create Variant Attribute · Write

Variant Attributes are required when creating variants.
Returns a data object with created_at, id, name, updated_at.
Use list_variant_attributes to browse or filter, get_variant_attribute to fetch one by ID, update_variant_attribute to change an existing one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): The name. Example: Size.

Example input: `{"name":"<name>"}`

### `lightspeedretail_return_sale`

Return Sale · Write

Initializes a return for an existing closed sale and returns the newly created SAVED return sale.
Returns a data object with _metadata, adjustments, attributes, created_at, customer_id, date, deleted_at, ecom_custom_charges.
Use this for exactly this operation.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `sale_id` (`string`, required): A valid sale ID. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"sale_id":"<sale_id>"}`

### `lightspeedretail_set_custom_field_values`

Set Custom Field Values · Write

Set new custom field values on a given entity.
Returns a data array of records with boolean_value, definition_id, integer_value, name, string_value, title, type.
Use get_custom_field_values to fetch one by ID instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `entity` (`string`, required): The entity type. Allowed values: sale, line_item, customer, product. Example: sale. One of: `sale`, `line_item`, `customer`, `product`.
- `entity_id` (`string`, required): The ID of entity. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `values` (`array`, required): The values. Fields include boolean_value, integer_value, name, string_value. Example: [{"boolean_value": true, "integer_value": 1, "name": "my_custom_field", "string_value": "spec-test-value"}].

Example input: `{"entity":"sale","entity_id":"<entity_id>","values":[{"boolean_value":true,"integer_value":1,"name":"my_custom_field","string_value":"spec-test-value"}]}`

### `lightspeedretail_update_brand`

Update Brand · Write

Update a single brand.
Returns a data object with id.
Use list_brands to browse or filter, get_brand to fetch one by ID, create_brand to add a new one, delete_brand to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `brand_id` (`string`, required): The brand id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `name` (`string`, required): The Brand name. Example: Example name.
- `description` (`string`, optional): The brand description. Example: Example description.

Example input: `{"brand_id":"<brand_id>","name":"<name>"}`

### `lightspeedretail_update_consignment`

Update Consignment · Write

Update the given consignment.
Returns a data object with consignment_date, created_at, deleted_at, due_at, id, name, outlet_id, received_at.
Use list_consignments to browse or filter, get_consignment to fetch one by ID, create_consignment to add a new one, delete_consignment to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `consignment_id` (`string`, required): The consignment id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `data` (`object`, required): The data. Fields include consignment_date, created_at, deleted_at, due_at, id, name, outlet_id, received_at, reference, source_outlet_id. Example: {"consignment_date": "2026-10-01T00:00:00Z", "created_at": "2026-10-01T00:00:00Z", "deleted_at": "2026-10-01T00:00:00Z", "due_at": "2026-10-01T00:00:00Z", "id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "name": "Example name"}.

Example input: `{"consignment_id":"<consignment_id>","data":{"consignment_date":"2026-10-01T00:00:00Z","created_at":"2026-10-01T00:00:00Z","deleted_at":"2026-10-01T00:00:00Z","due_at":"2026-10-01T00:00:00Z","id":"0af7b240-ab83-11e7-eddc-4023c64c85e5","name":"Example name"}}`

### `lightspeedretail_update_consignment_product`

Update Consignment Product · Write

Update the specific product within the consignment.
Returns a data object with data.
Use list_consignment_products to browse or filter, add_consignment_product to add items, delete_consignment_product to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `consignment_id` (`string`, required): The consignment id to be updated. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `data` (`object`, required): The data. Fields include cost, count, created_at, deleted_at, is_included, product_id, product_sku, received, status, updated_at. Example: {"cost": "Example cost", "count": "Example count", "created_at": "2026-10-01T00:00:00Z", "deleted_at": "2026-10-01T00:00:00Z", "is_included": true, "product_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5"}.
- `product_id` (`string`, required): The product id of the product to be added to the consignment. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"consignment_id":"<consignment_id>","data":{"cost":"Example cost","count":"Example count","created_at":"2026-10-01T00:00:00Z","deleted_at":"2026-10-01T00:00:00Z","is_included":true,"product_id":"0af7b240-ab83-11e7-eddc-4023c64c85e5"},"product_id":"<product_id>"}`

### `lightspeedretail_update_customer`

Update Customer · Write

Update the customer with the requested ID.
Returns a data object with balance, company_name, created_at, custom_field_1, custom_field_2, custom_field_3, custom_field_4, customer_code.
Use list_customers to browse or filter, get_customer to fetch one by ID, create_customer to add a new one, delete_customer to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `customer_id` (`string`, required): The customer id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `first_name` (`string`, required): Customer's first name. Example: Example first name.
- `last_name` (`string`, required): Customer 's last name. Example: Example last name.
- `company_name` (`string`, optional): Company name. Example: Example company name.
- `custom_field_1` (`string`, optional): Custom field 1. Can be used to store random data. Example: Example custom field 1.
- `custom_field_2` (`string`, optional): Custom field 2. Example: Example custom field 2.
- `custom_field_3` (`string`, optional): Custom field 3. Example: Example custom field 3.
- `custom_field_4` (`string`, optional): Custom field 4. Example: Example custom field 4.
- `customer_code` (`string`, optional): Customer code used for claiming loyalty. Example: Example customer code.
- `customer_group_id` (`string`, optional): Customer group ID. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `date_of_birth` (`string`, optional): Birthday. Example: 2026-10-01T00:00:00Z.
- `do_not_email` (`boolean`, optional): Indicates whether the customer opted out of email communications. Example: true.
- `email` (`string`, optional): Customer's email address. Example: tony@example.com.
- `enable_loyalty` (`boolean`, optional): The enable loyalty. Example: true.
- `enable_promotional_sms` (`boolean`, optional): Indicates whether the customer opted in to SMS communications. Example: true.
- `fax` (`string`, optional): Fax no. Example: Example fax.
- `gender` (`string`, optional): Customer's gender. Can be M, F or null. Example: Example gender.
- `mobile` (`string`, optional): Mobile phone no. Example: Example mobile.
- `note` (`string`, optional): Customer note. Example: Example note.
- `on_account_limit` (`number`, optional): Customer's OnAccount Limit. Example: 9.99.
- `phone` (`string`, optional): Phone no. Example: Example phone.
- `physical_address_1` (`string`, optional): Physical address, line 1. Example: Example physical address 1.
- `physical_address_2` (`string`, optional): Physical address, line 2. Example: Example physical address 2.
- `physical_city` (`string`, optional): Physical address, city. Example: Example physical city.
- `physical_country_id` (`string`, optional): Physical address, country code. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `physical_postcode` (`string`, optional): Physical address, post code. Example: Example physical postcode.
- `physical_state` (`string`, optional): Physical address, state. Example: Example physical state.
- `physical_suburb` (`string`, optional): Physical address, suburb. Example: Example physical suburb.
- `postal_address_1` (`string`, optional): Postal address, line 1. Example: Example postal address 1.
- `postal_address_2` (`string`, optional): Postal address, line 2. Example: Example postal address 2.
- `postal_city` (`string`, optional): Postal address, city. Example: Example postal city.
- `postal_country_id` (`string`, optional): Postal address, country code. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `postal_postcode` (`string`, optional): Postal address, post code. Example: Example postal postcode.
- `postal_state` (`string`, optional): Postal address, state. Example: Example postal state.
- `postal_suburb` (`string`, optional): Postal address, suburb. Example: Example postal suburb.
- `tax_id` (`string`, optional): Customer's tax ID. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `twitter` (`string`, optional): Twitter handle. Example: Example twitter.
- `website` (`string`, optional): Website URL. Example: Example website.

Example input: `{"customer_id":"<customer_id>","first_name":"<first_name>","last_name":"<last_name>"}`

### `lightspeedretail_update_customer_address`

Update Customer Address · Write

Update an existing address for the specified customer.
Returns a data object with address_line_1, address_line_2, city, country_code, country_name, created_at, customer_id, id.
Use list_customer_addresses to browse or filter, get_customer_address to fetch one by ID, create_customer_address to add a new one, delete_customer_address to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `address_id` (`integer`, required): The unique identifier of the address. Example: 1.
- `address_line_1` (`string`, required): Primary address line (street address, P.O. box, etc.). Example: Example address line 1.
- `city` (`string`, required): City or town name. Example: Example city.
- `country_code` (`string`, required): ISO 3166-1 alpha-2 country code (e.g., US, NZ, AU). Example: Example country code.
- `customer_id` (`string`, required): The unique identifier of the customer. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `postcode` (`string`, required): Postal code or ZIP code. Example: Example postcode.
- `type` (`string`, required): The type of address. Allowed values: BILLING, SHIPPING. Example: BILLING. One of: `BILLING`, `SHIPPING`.
- `address_line_2` (`string`, optional): Secondary address line (apartment, suite, unit, building, floor, etc.). Example: Example address line 2.
- `state` (`string`, optional): State, province, or region name. Example: Example state.
- `state_code` (`string`, optional): State or province code. Required for US and CA. Example: Example state code.
- `suburb` (`string`, optional): Suburb or district. Example: Example suburb.

Example input: `{"address_id":1,"address_line_1":"<address_line_1>","city":"<city>","country_code":"<country_code>","customer_id":"<customer_id>","postcode":"<postcode>","type":"BILLING"}`

### `lightspeedretail_update_customer_group`

Update Customer Group · Write

Update the given Customer Group
Returns a data object with created_at, deleted_at, group_id, id, name, retailer_id, updated_at, version.
Use list_customer_groups to browse or filter, get_customer_group to fetch one by ID, create_customer_group to add a new one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `customer_group_id` (`string`, required): The customer group id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `name` (`string`, required): The customer group name. Example: Example name.

Example input: `{"customer_group_id":"<customer_group_id>","name":"<name>"}`

### `lightspeedretail_update_price_book`

Update Price Book · Write

Update a price book by ID
Returns a data object with customer_groups, id, name, outlets, restrict_to_platform, retailer_id, type, valid_from.
Use list_price_books to browse or filter, get_price_book to fetch one by ID, create_price_book to add a new one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `customer_group_ids` (`array`, required): The customer group ids. Example: ["Example customer group ids"].
- `id` (`string`, required): The price book id. Example: Example id.
- `name` (`string`, required): Price Book name. Example: Example name.
- `outlet_ids` (`array`, required): The outlet ids. Example: ["Example outlet ids"].
- `restrict_to_platform` (`string`, optional): "0" - all platforms, "1" - in store, "2" - ecommerce. Example: Example restrict to platform.
- `valid_from` (`string`, optional): The date when the Price Book becomes valid (active). Example: Example valid from.
- `valid_to` (`string`, optional): The date when the Price Book becomes invalid (inactive). Example: Example valid to.

Example input: `{"customer_group_ids":["Example customer group ids"],"id":"<id>","name":"<name>","outlet_ids":["Example outlet ids"]}`

### `lightspeedretail_update_product`

Update Product · Write

Update an existing product.
Returns the upstream confirmation of the change.
Use list_products to browse or filter, get_product to fetch one by ID, create_product to add a new one, delete_product to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `product_id` (`string`, required): The object identifier of the Product to update. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `common` (`object`, optional): Information to update to the product family. For variants, this will update the fields to all variants in the family. Fields include account_code_purchase, account_code_sale, brand_id, description, name, product_category_id, product_suppliers, tag_ids, track_inventory, variant_attributes. Example: {"account_code_purchase": "Example account code purchase", "account_code_sale": "Example account code sale", "brand_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "description": "Example description", "name": "Example name", "product_categ....
- `details` (`object`, optional): Information to update to the product. For variants, this will update the fields for the individual variant product of this request only. Fields include all_outlets_tax, composite_components, dimensions_unit, height, inventory, is_active, length, loyalty_amount, outlet_taxes, packaging. Example: {"all_outlets_tax": {"tax_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5"}, "composite_components": [{"product_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "quantity": 9.99}], "dimensions_unit": "IN", "height": 9.99, "inventory": [{"current_....

Example input: `{"product_id":"<product_id>"}`

### `lightspeedretail_update_sale`

Update Sale · Write

Update an existing sale by ID.
Returns a data object with _metadata, adjustments, attributes, created_at, customer_id, date, deleted_at, ecom_custom_charges.
Use list_sales to browse or filter, get_sale to fetch one by ID, create_sale to add a new one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `sale_id` (`string`, required): A valid sale ID. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `source` (`object`, required): The source. Fields include author_id, id, register_id, type. Example: {"author_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "id": "Example id", "register_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "type": "Example type"}.
- `state` (`string`, required): State of the sale. Allowed values: parked, pending, voided, closed. Example: closed. One of: `parked`, `pending`, `voided`, `closed`.
- `accounts_transaction_id` (`string`, optional): Xero invoice reference ID. Only editable for ONACCOUNT sales. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `attributes` (`array`, optional): An array of attributes. Example: ["Example attributes"].
- `customer_id` (`string`, optional): The ID of the customer associated with this sale. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `date` (`string`, optional): The date of the sale in RFC3339 format. If not provided will be added as the time the sale reached the server. Example: 2009-11-10T23:00:00Z.
- `fulfillment_details` (`array`, optional): Fulfillment details for DISPATCH or PICKUP fulfillments. Fields include note, shipping_address_id, shipping_address_token, type. Example: [{"note": "Example note", "shipping_address_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "shipping_address_token": "Example shipping address token", "type": "DISPATCH"}].
- `fulfillment_outlet_id` (`string`, optional): The default outlet that should fulfill this sale when a line item does not specify its own fulfilment_outlet_id. Mutually exclusive with pick lists created via /sales/{sale_id}/pick_lists. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `invoice_number` (`string`, optional): The invoice number for the sale. If left null it will be populated by Lightspeed with the next available invoice number. Example: Example invoice number.
- `line_items` (`array`, optional): Line items. Fields include _metadata, attributes, fulfilment_outlet_id, id, pricing, product, quantity, source, status, tax. Example: [{"_metadata": {"fulfillment_method": "DISPATCH", "is_price_override": true, "sequence": 1}, "attributes": [{"name": "Example name", "value": "Example value"}], "fulfilment_outlet_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "id": "0af7b....
- `note` (`string`, optional): A note on the sale entered by the cashier. Example: Example note.
- `payments` (`array`, optional): Payments. Fields include amount, billing_address_id, billing_address_token, date, id, source, type. Example: [{"amount": 9.99, "billing_address_id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "billing_address_token": "Example billing address token", "date": "2026-10-01T00:00:00Z", "id": "0af7b240-ab83-11e7-eddc-4023c64c85e5", "source": {"register_....
- `pricing` (`object`, optional): The pricing. Fields include adjustments. Example: {"adjustments": [{"amount": {"type": "FIXED", "value": "Example value"}, "name": "Example name", "source": {"id": "0af7b240-ab83-11e7-eddc-4023c64c85e5"}, "type": "NON_CASH_FEE"}]}.
- `service_fields` (`object`, optional): The service fields. Fields include service_action, service_agenda, service_items, service_line_items. Example: {"service_action": "Example service action", "service_agenda": {"date": "2026-10-01T00:00:00Z", "minutes_scheduled": 1}, "service_items": {"location": "Example location"}, "service_line_items": [{"_metadata": {"fulfillment_method": "DISP....
- `short_code` (`string`, optional): Short, unique code to be printed on the receipt for loyalty tracking purposes. Example: Example short code.

Example input: `{"sale_id":"<sale_id>","source":{"author_id":"0af7b240-ab83-11e7-eddc-4023c64c85e5","id":"Example id","register_id":"0af7b240-ab83-11e7-eddc-4023c64c85e5","type":"Example type"},"state":"parked"}`

### `lightspeedretail_update_supplier`

Update Supplier · Write

Update a supplier.
Returns an object with id.
Use list_suppliers to browse or filter, get_supplier to fetch one by ID, create_supplier to add a new one, delete_supplier to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `contact` (`object`, required): Contact information for the supplier. Fields include company_name, email, fax, first_name, last_name, mobile, phone, physical_address1, physical_address2, physical_city. Example: {"company_name": "Example company name", "email": "tony@example.com", "fax": "Example fax", "first_name": "Example first name", "last_name": "Example last name", "mobile": "Example mobile"}.
- `name` (`string`, required): The Supplier name. Example: Example name.
- `supplier_id` (`string`, required): The supplier id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `default_markup` (`number`, optional): This is used for record-keeping purposes and it does not have any effect on your products. Example: 9.99.
- `description` (`string`, optional): The Supplier description. Example: Example description.

Example input: `{"contact":{"company_name":"Example company name","email":"tony@example.com","fax":"Example fax","first_name":"Example first name","last_name":"Example last name","mobile":"Example mobile"},"name":"<name>","supplier_id":"<supplier_id>"}`

### `lightspeedretail_update_tag`

Update Tag · Write

Update a tag.
Returns a data object with id, job_id.
Use list_tags to browse or filter, get_tag to fetch one by ID, create_tag to add a new one, delete_tag to remove one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `name` (`string`, required): The Tag name. Example: Example name.
- `tag_id` (`string`, required): The tag id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"name":"<name>","tag_id":"<tag_id>"}`

### `lightspeedretail_update_variant_attribute`

Update Variant Attribute · Write

Update a Variant Attribute's name.
Returns a data object with id, name.
Use list_variant_attributes to browse or filter, get_variant_attribute to fetch one by ID, create_variant_attribute to add a new one instead when that fits better.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `attribute_id` (`string`, required): The object identifier of the Variant Attribute to update. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `name` (`string`, required): The name. Example: Size.

Example input: `{"attribute_id":"<attribute_id>","name":"<name>"}`

### `lightspeedretail_delete_brand`

Delete Brand · Destructive

Delete a brand.
Returns an object with payload.
Use list_brands to browse or filter, get_brand to fetch one by ID, create_brand to add a new one, update_brand to change an existing one instead when that fits better. Deletion cannot be undone.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `brand_id` (`string`, required): The brand id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"brand_id":"<brand_id>"}`

### `lightspeedretail_delete_consignment`

Delete Consignment · Destructive

Delete the consignment with the given ID.
Returns an empty response on success.
Use list_consignments to browse or filter, get_consignment to fetch one by ID, create_consignment to add a new one, update_consignment to change an existing one instead when that fits better. Deletion cannot be undone.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `consignment_id` (`string`, required): The consignment id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"consignment_id":"<consignment_id>"}`

### `lightspeedretail_delete_consignment_product`

Delete Consignment Product · Destructive

Remove the specific product from the consignment.
Returns an empty response on success.
Use list_consignment_products to browse or filter, add_consignment_product to add items, update_consignment_product to change an existing one instead when that fits better. Deletion cannot be undone.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `consignment_id` (`string`, required): The consignment id to be updated. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.
- `product_id` (`string`, required): The product id of the product to be added to the consignment. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"consignment_id":"<consignment_id>","product_id":"<product_id>"}`

### `lightspeedretail_delete_customer`

Delete Customer · Destructive

Delete the customer with the requested ID.
Returns an empty response on success.
Use list_customers to browse or filter, get_customer to fetch one by ID, create_customer to add a new one, update_customer to change an existing one instead when that fits better. Deletion cannot be undone.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `customer_id` (`string`, required): The customer id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"customer_id":"<customer_id>"}`

### `lightspeedretail_delete_customer_address`

Delete Customer Address · Destructive

Delete an address for the specified customer.
Returns an empty response on success.
Use list_customer_addresses to browse or filter, get_customer_address to fetch one by ID, create_customer_address to add a new one, update_customer_address to change an existing one instead when that fits better. Deletion cannot be undone.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `address_id` (`integer`, required): The unique identifier of the address. Example: 1.
- `customer_id` (`string`, required): The unique identifier of the customer. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"address_id":1,"customer_id":"<customer_id>"}`

### `lightspeedretail_delete_product`

Delete Product · Destructive

Delete a single product.
Returns an empty response on success.
Use list_products to browse or filter, get_product to fetch one by ID, create_product to add a new one, update_product to change an existing one instead when that fits better. Deletion cannot be undone.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `product_id` (`string`, required): The product id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"product_id":"<product_id>"}`

### `lightspeedretail_delete_supplier`

Delete Supplier · Destructive

Delete a supplier.
Returns a data object with id, job_id.
Use list_suppliers to browse or filter, get_supplier to fetch one by ID, create_supplier to add a new one, update_supplier to change an existing one instead when that fits better. Deletion cannot be undone.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `supplier_id` (`string`, required): The supplier id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"supplier_id":"<supplier_id>"}`

### `lightspeedretail_delete_tag`

Delete Tag · Destructive

Delete a tag.
Returns a data object with id, job_id.
Use list_tags to browse or filter, get_tag to fetch one by ID, create_tag to add a new one, update_tag to change an existing one instead when that fits better. Deletion cannot be undone.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `tag_id` (`string`, required): The tag id. Example: 0af7b240-ab83-11e7-eddc-4023c64c85e5.

Example input: `{"tag_id":"<tag_id>"}`

## Related

Other CRM & Sales connectors ([all 97](/agentkit/connectors/?category=crm-sales)):

- [Insightly](/agentkit/connectors/insightly/): Scalekit connector, API key, 108 tools
- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Salesforce](/agentkit/connectors/salesforce/): Scalekit connector, OAuth, 74 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
