PHPackages                             anytech/lightspeed-x-series-api - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. anytech/lightspeed-x-series-api

ActiveLibrary[API Development](/categories/api)

anytech/lightspeed-x-series-api
===============================

Lightspeed X-Series (formerly Vend) API client for PHP with built-in OAuth2 support

v2.0.4(3mo ago)1609MITPHPPHP ^8.0CI passing

Since Dec 17Pushed 3mo agoCompare

[ Source](https://github.com/anytech/lightspeed-x-series-api)[ Packagist](https://packagist.org/packages/anytech/lightspeed-x-series-api)[ Docs](https://github.com/anytech/lightspeed-x-series-api)[ RSS](/packages/anytech-lightspeed-x-series-api/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (1)Versions (7)Used By (0)

[![Build Status](https://github.com/anytech/lightspeed-x-series-api/actions/workflows/tests.yml/badge.svg)](https://github.com/anytech/lightspeed-x-series-api/actions/workflows/tests.yml/badge.svg)[![License](https://camo.githubusercontent.com/bdce438d05c915a5bf7087d9c2968b5879a287cc7cee8ba12e41353f10b02fdb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f616e79746563682f6c6967687473706565642d782d7365726965732d617069)](https://camo.githubusercontent.com/bdce438d05c915a5bf7087d9c2968b5879a287cc7cee8ba12e41353f10b02fdb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f616e79746563682f6c6967687473706565642d782d7365726965732d617069)[![PHP Version](https://camo.githubusercontent.com/3ccf2d15c84906e323adbe4eccec8b5e13d35f762f12b965919cc6b5dc722fcb/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f616e79746563682f6c6967687473706565642d782d7365726965732d617069)](https://camo.githubusercontent.com/3ccf2d15c84906e323adbe4eccec8b5e13d35f762f12b965919cc6b5dc722fcb/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f616e79746563682f6c6967687473706565642d782d7365726965732d617069)[![Latest Version](https://camo.githubusercontent.com/ec1e0c11bd57d0c0c5f49947da57b18363e766a44afaf8def3ee67fcba9ca4cd/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616e79746563682f6c6967687473706565642d782d7365726965732d617069)](https://camo.githubusercontent.com/ec1e0c11bd57d0c0c5f49947da57b18363e766a44afaf8def3ee67fcba9ca4cd/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616e79746563682f6c6967687473706565642d782d7365726965732d617069)[![Downloads](https://camo.githubusercontent.com/4fe32c6e43173264455586a776017175f3f26ec6cca6c9868e21a947ca1274e4/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f616e79746563682f6c6967687473706565642d782d7365726965732d617069)](https://camo.githubusercontent.com/4fe32c6e43173264455586a776017175f3f26ec6cca6c9868e21a947ca1274e4/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f616e79746563682f6c6967687473706565642d782d7365726965732d617069)

Lightspeed X-Series API Client for PHP
======================================

[](#lightspeed-x-series-api-client-for-php)

A PHP client for the Lightspeed X-Series (formerly Vend) API with built-in OAuth2 support.

**Updated for Lightspeed's new date-based API versioning (January 2026+)**

Requirements
------------

[](#requirements)

- PHP 8.0+
- cURL extension
- JSON extension

Installation
------------

[](#installation)

```
composer require anytech/lightspeed-x-series-api
```

Quick Start
-----------

[](#quick-start)

```
use LightspeedXSeries\LightspeedAPI;

$api = new LightspeedAPI(
    'https://mystore.retail.lightspeed.app',
    'Bearer',
    'your-access-token'
);

// Get all products
$products = $api->apiRequest('products', 'get');
foreach ($products->data as $product) {
    echo $product->name . "\n";
}

// Get a single product
$product = $api->apiRequest('products/abc-123-uuid', 'get');

// Create a customer
$customer = $api->apiRequest('customers', 'post', [
    'first_name' => 'John',
    'last_name' => 'Doe',
    'email' => 'john@example.com',
]);

// Update a product
$api->apiRequest('products/abc-123-uuid', 'put', [
    'name' => 'Updated Product Name',
]);

// Delete a product
$api->apiRequest('products/abc-123-uuid', 'delete');
```

API Versioning (Date-Based)
---------------------------

[](#api-versioning-date-based)

As of January 2026, Lightspeed uses date-based API versioning instead of semantic versioning.

### Version Format

[](#version-format)

Versions are identified by their release date in `YYYY-MM` format:

- `2026-01` (January 2026)
- `2026-04` (April 2026)
- etc.

Each version includes the **full set of APIs** - you no longer need to manage different versions for different endpoints. Your application can reference a single version string to access all capabilities.

### Release Schedule

[](#release-schedule)

Lightspeed publishes a new API release every **3 months** (quarterly). Each version is supported for a minimum of **12 months**.

### Setting the Default Version

[](#setting-the-default-version)

Set the API version once at application startup:

```
use LightspeedXSeries\LightspeedAPI;

// Set the default version for your entire application
// Do this once at application bootstrap/initialization
LightspeedAPI::setDefaultVersion('2026-01');

// All subsequent API instances will use this version
$api = new LightspeedAPI($url, 'Bearer', $token);
$products = $api->apiRequest('products', 'get');  // Uses 2026-01
```

### Version Configuration Options

[](#version-configuration-options)

```
use LightspeedXSeries\LightspeedAPI;

// Option 1: Set global default (recommended for site-wide configuration)
LightspeedAPI::setDefaultVersion('2026-01');

// Option 2: Set version per instance via constructor
$api = new LightspeedAPI($url, 'Bearer', $token, '2026-04');

// Option 3: Set version on existing instance
$api = new LightspeedAPI($url, 'Bearer', $token);
$api->setVersion('2026-04');

// Option 4: Override version for a single request
$api->apiRequest('products', 'get', null, '2026-04');

// Check current versions
echo LightspeedAPI::getDefaultVersion();  // Global default
echo $api->getVersion();                  // Instance version (or default if not set)
```

### Upgrading Your Application

[](#upgrading-your-application)

When Lightspeed releases a new API version:

1. Review the [API Changelog](https://x-series-api.lightspeedhq.com/changelog) for breaking changes
2. Test your application against the new version
3. Update your default version in one place:

```
// Before (using 2026-01)
LightspeedAPI::setDefaultVersion('2026-01');

// After (upgrading to 2026-04)
LightspeedAPI::setDefaultVersion('2026-04');
```

The apiRequest Method
---------------------

[](#the-apirequest-method)

All API calls use the single `apiRequest()` method:

```
$api->apiRequest(
    string $endpoint,       // The endpoint path (e.g., 'products', 'customers/123')
    string $method,         // HTTP method: 'get', 'post', 'put', 'delete'
    ?array $data = null,    // Request body (POST/PUT) or query params (GET)
    ?string $version = null // Version override (YYYY-MM format, optional)
): object
```

### GET Requests with Query Parameters

[](#get-requests-with-query-parameters)

```
// With pagination
$products = $api->apiRequest('products', 'get', [
    'page_size' => 100,
    'after' => 'cursor-value',
]);

// With filters
$customers = $api->apiRequest('customers', 'get', [
    'email' => 'john@example.com',
]);
```

### POST Requests

[](#post-requests)

```
$customer = $api->apiRequest('customers', 'post', [
    'first_name' => 'John',
    'last_name' => 'Doe',
    'email' => 'john@example.com',
]);
```

### PUT Requests

[](#put-requests)

```
$api->apiRequest('customers/abc-123', 'put', [
    'phone' => '+1234567890',
]);
```

### DELETE Requests

[](#delete-requests)

```
$api->apiRequest('customers/abc-123', 'delete');
```

OAuth2 Authentication
---------------------

[](#oauth2-authentication)

### Step 1: Create OAuth Client

[](#step-1-create-oauth-client)

```
use LightspeedXSeries\LightspeedOAuth;

$oauth = new LightspeedOAuth(
    'your-client-id',
    'your-client-secret',
    'mystore',                              // Your store prefix
    'https://yoursite.com/oauth/callback',  // Redirect URI
    ['products:read', 'products:write']     // Scopes (required from March 2026)
);
```

### Step 2: Generate Authorization URL

[](#step-2-generate-authorization-url)

```
$auth = $oauth->getAuthorizationUrl();

// Store state in session for CSRF protection
$_SESSION['oauth_state'] = $auth['state'];

// Redirect user to Lightspeed
header('Location: ' . $auth['url']);
```

### Step 3: Handle Callback

[](#step-3-handle-callback)

```
// Verify state matches
if ($_GET['state'] !== $_SESSION['oauth_state']) {
    throw new Exception('Invalid state');
}

// Exchange code for tokens
$tokens = $oauth->exchangeCodeForToken($_GET['code']);

// Store tokens securely
$accessToken = $tokens['access_token'];
$refreshToken = $tokens['refresh_token'];
$expiresIn = $tokens['expires_in'];
```

### Step 4: Refresh Tokens

[](#step-4-refresh-tokens)

```
$newTokens = $oauth->refreshToken($refreshToken);

$accessToken = $newTokens['access_token'];
$refreshToken = $newTokens['refresh_token'];
```

API Endpoints Reference
-----------------------

[](#api-endpoints-reference)

All endpoints use the `apiRequest()` method. Replace `{id}` with the actual UUID.

### Products

[](#products)

MethodEndpointDescriptionGET`products`List all productsGET`products/{id}`Get single productPOST`products`Create productPUT`products/{id}`Update productDELETE`products/{id}`Delete productDELETE`products/families/{id}`Delete product familyGET`products/{id}/inventory`Get product inventoryPOST`products/{id}/images`Upload product imageGET`products/{id}/price_books`Get product price booksPOST`products/{id}/variants`Create variant```
// List products with pagination
$products = $api->apiRequest('products', 'get', ['page_size' => 100]);

// Get single product
$product = $api->apiRequest('products/abc-123', 'get');

// Create product
$product = $api->apiRequest('products', 'post', [
    'name' => 'New Product',
    'sku' => 'SKU001',
    'retail_price' => 99.99,
]);

// Update product
$api->apiRequest('products/abc-123', 'put', [
    'common' => [
        'name' => 'Updated Name',
        'description' => 'New description',
    ]
]);

// Delete product
$api->apiRequest('products/abc-123', 'delete');

// Upload image
$api->apiRequest('products/abc-123/images', 'post', [
    'url' => 'https://example.com/image.jpg',
]);
```

### Product Images

[](#product-images)

MethodEndpointDescriptionGET`product_images/{id}`Get imagePUT`product_images/{id}`Update image (position)DELETE`product_images/{id}`Delete image```
// Set image position
$api->apiRequest('product_images/abc-123', 'put', ['position' => 1]);

// Delete image
$api->apiRequest('product_images/abc-123', 'delete');
```

### Product Types

[](#product-types)

MethodEndpointDescriptionGET`product_types`List all product typesGET`product_types/{id}`Get single product type### Variant Attributes

[](#variant-attributes)

MethodEndpointDescriptionGET`variant_attributes`List all attributesGET`variant_attributes/{id}`Get single attributePOST`variant_attributes`Create attributePUT`variant_attributes/{id}`Update attributeDELETE`variant_attributes/{id}`Delete attribute### Customers

[](#customers)

MethodEndpointDescriptionGET`customers`List all customersGET`customers/{id}`Get single customerPOST`customers`Create customerPUT`customers/{id}`Update customerDELETE`customers/{id}`Delete customer```
// Search by email
$customers = $api->apiRequest('customers', 'get', [
    'email' => 'john@example.com',
]);

// Create customer
$customer = $api->apiRequest('customers', 'post', [
    'first_name' => 'John',
    'last_name' => 'Doe',
    'email' => 'john@example.com',
    'phone' => '+1234567890',
]);

// Update customer
$api->apiRequest('customers/abc-123', 'put', [
    'phone' => '+0987654321',
]);
```

### Customer Groups

[](#customer-groups)

MethodEndpointDescriptionGET`customer_groups`List all groupsGET`customer_groups/{id}`Get single groupPOST`customer_groups`Create groupPUT`customer_groups/{id}`Update groupDELETE`customer_groups/{id}`Delete groupGET`customer_groups/{id}/customers`Get customers in groupPOST`customer_groups/{id}/customers`Add customers to groupDELETE`customer_groups/{id}/customers`Remove customers from group```
// Add customers to group
$api->apiRequest('customer_groups/abc-123/customers', 'post', [
    'customer_ids' => ['cust-1', 'cust-2', 'cust-3'],
]);
```

### Brands

[](#brands)

MethodEndpointDescriptionGET`brands`List all brandsGET`brands/{id}`Get single brandPOST`brands`Create brandPUT`brands/{id}`Update brandDELETE`brands/{id}`Delete brand### Tags

[](#tags)

MethodEndpointDescriptionGET`tags`List all tagsGET`tags/{id}`Get single tagPOST`tags`Create tagPUT`tags/{id}`Update tagDELETE`tags/{id}`Delete tag### Product Categories

[](#product-categories)

MethodEndpointDescriptionGET`product_categories`List all categoriesGET`product_categories/{id}`Get single categoryPOST`product_categories`Create categoryPOST`product_categories/bulk`Bulk update categoriesDELETE`product_categories/{id}`Delete category```
// Bulk update categories
$api->apiRequest('product_categories/bulk', 'post', [
    'categories' => [
        ['id' => 'cat-1', 'name' => 'Updated Name 1'],
        ['id' => 'cat-2', 'name' => 'Updated Name 2'],
    ]
]);
```

### Inventory

[](#inventory)

MethodEndpointDescriptionGET`inventory`List inventory recordsPOST`inventory`Create inventory adjustment```
// Create inventory adjustment
$api->apiRequest('inventory', 'post', [
    'product_id' => 'prod-123',
    'outlet_id' => 'outlet-456',
    'adjustment' => 10,
]);
```

### Suppliers

[](#suppliers)

MethodEndpointDescriptionGET`suppliers`List all suppliersGET`suppliers/{id}`Get single supplierPOST`suppliers`Create supplierPUT`suppliers/{id}`Update supplierDELETE`suppliers/{id}`Delete supplier### Price Books

[](#price-books)

MethodEndpointDescriptionGET`price_books`List all price booksGET`price_books/{id}`Get single price bookPOST`price_books`Create price bookPUT`price_books/{id}`Update price bookDELETE`price_books/{id}`Delete price bookGET`price_books/{id}/products`Get products in price bookPOST`price_books/{id}/products`Add products to price bookPUT`price_books/{id}/products`Update products in price bookDELETE`price_books/{id}/products`Delete products from price book### Price Book Products

[](#price-book-products)

MethodEndpointDescriptionGET`price_book_products`List all price book product entriesPOST`price_book_products`Create price book product entryPUT`price_book_products/{id}`Update price book product entryDELETE`price_book_products/{id}`Delete price book product entry### Promotions

[](#promotions)

MethodEndpointDescriptionGET`promotions`List all promotionsGET`promotions/{id}`Get single promotionPOST`promotions`Create promotionPUT`promotions/{id}`Update promotionDELETE`promotions/{id}`Delete promotionGET`promotions/search`Search promotionsGET`promotions/{id}/products`Get promotion productsGET`promotions/{id}/promocodes`Get promo codesPOST`promotions/{id}/promocodes`Create promo codeDELETE`promotions/{id}/promocodes/{code_id}`Delete promo code### Promo Codes (Bulk)

[](#promo-codes-bulk)

MethodEndpointDescriptionPOST`promocode/bulk/active`Get active status of promo codesDELETE`promocode/bulk`Bulk delete promo codes### Discount

[](#discount)

MethodEndpointDescriptionPOST`discount`Apply discounts to sale object (read-only)### Sales

[](#sales)

MethodEndpointDescriptionGET`sales`List all salesGET`sales/{id}`Get single saleDELETE`sales/{id}`Delete saleGET`sales/{id}/fulfillments`Get sale fulfillmentsPOST`sales/{id}/fulfillments`Create fulfillment for sale```
// Get sales with filters
$sales = $api->apiRequest('sales', 'get', [
    'status' => 'CLOSED',
    'page_size' => 50,
]);
```

### Fulfillments

[](#fulfillments)

MethodEndpointDescriptionGET`fulfillments`List all fulfillmentsGET`fulfillments/{id}`Get single fulfillmentPUT`fulfillments/{id}`Update fulfillmentPOST`fulfillments/fulfill`Fulfill a sale (complete all)POST`fulfillments/{id}/fulfill`Fulfill specific line items```
// Fulfill entire sale
$api->apiRequest('fulfillments/fulfill', 'post', [
    'sale_id' => 'sale-123',
]);

// Update fulfillment status
$api->apiRequest('fulfillments/abc-123', 'put', [
    'status' => 'SHIPPED',
    'tracking_number' => 'TRACK123',
]);
```

### Registers

[](#registers)

MethodEndpointDescriptionGET`registers`List all registersGET`registers/{id}`Get single registerPOST`registers/{id}/open`Open registerPOST`registers/{id}/close`Close registerGET`registers/{id}/payments_summary`Get payments summary### Register Closures

[](#register-closures)

MethodEndpointDescriptionGET`register_closures`List register closuresGET`register_closures/{id}`Get single closure### Outlets

[](#outlets)

MethodEndpointDescriptionGET`outlets`List all outletsGET`outlets/{id}`Get single outlet### Payments

[](#payments)

MethodEndpointDescriptionGET`payments`List all paymentsGET`payments/{id}`Get single payment### Payment Types

[](#payment-types)

MethodEndpointDescriptionGET`payment_types`List all payment typesGET`payment_types/{id}`Get single payment type### Taxes

[](#taxes)

MethodEndpointDescriptionGET`taxes`List all taxesGET`taxes/{id}`Get single taxPOST`customer_taxes/bulk`Bulk update customer taxes### Consignments

[](#consignments)

MethodEndpointDescriptionGET`consignments`List all consignmentsGET`consignments/{id}`Get single consignmentPOST`consignments`Create consignmentPUT`consignments/{id}`Update consignmentDELETE`consignments/{id}`Delete consignment### Consignment Products

[](#consignment-products)

MethodEndpointDescriptionGET`consignment_products`List consignment productsPOST`consignment_products`Create consignment productPUT`consignment_products/{id}`Update consignment productDELETE`consignment_products/{id}`Delete consignment product### Service Orders

[](#service-orders)

MethodEndpointDescriptionGET`service_orders`List all service ordersGET`service_orders/{id}`Get single service orderPOST`service_orders`Create service orderPUT`service_orders/{id}`Update service orderDELETE`service_orders/{id}`Delete service order### Gift Cards

[](#gift-cards)

MethodEndpointDescriptionGET`gift_cards`List all gift cardsGET`gift_cards/{number}`Get gift card by numberGET`gift_cards/{id}`Get gift card by IDPOST`gift_cards`Create and activate gift cardDELETE`gift_cards/{number}`Void gift cardGET`gift_cards/{number}/transactions`Get gift card transactionsPOST`gift_cards/{number}/transactions`Create transaction (redeem/reload)```
// Create gift card
$api->apiRequest('gift_cards', 'post', [
    'number' => '1234567890',
    'initial_balance' => 100.00,
]);

// Redeem gift card
$api->apiRequest('gift_cards/1234567890/transactions', 'post', [
    'type' => 'REDEEMING',
    'amount' => -25.00,  // Negative for redemption
    'client_id' => 'unique-transaction-id',
]);

// Reload gift card
$api->apiRequest('gift_cards/1234567890/transactions', 'post', [
    'type' => 'RELOADING',
    'amount' => 50.00,  // Positive for reload
]);
```

### Users

[](#users)

MethodEndpointDescriptionGET`users`List all usersGET`users/{id}`Get single user### Webhooks

[](#webhooks)

MethodEndpointDescriptionGET`webhooks`List all webhooksGET`webhooks/{id}`Get single webhookPOST`webhooks`Create webhookDELETE`webhooks/{id}`Delete webhook```
// Create webhook
$api->apiRequest('webhooks', 'post', [
    'url' => 'https://yoursite.com/webhook',
    'type' => 'sale.update',
]);

// Webhook types:
// - sale.update
// - inventory.update
// - customer.update
// - product.update
```

### Search

[](#search)

MethodEndpointDescriptionPOST`search`Search products or entities```
$results = $api->apiRequest('search', 'post', [
    'query' => 'blue shirt',
    'type' => 'products',
]);
```

### Loyalty

[](#loyalty)

MethodEndpointDescriptionGET`loyalty_adjustments`List loyalty adjustmentsPOST`loyalty_adjustments`Create loyalty adjustment### Channel Requests (Ecommerce)

[](#channel-requests-ecommerce)

MethodEndpointDescriptionGET`channel_request_templates`List templatesGET`channel_requests`List channel requestsGET`channel_requests/{id}`Get single requestPOST`channel_requests`Create channel requestPUT`channel_requests/{id}`Update channel request### Store Credit

[](#store-credit)

MethodEndpointDescriptionGET`store_credit_transactions`List transactionsPOST`store_credit_transactions`Create transaction### Line Items

[](#line-items)

MethodEndpointDescriptionGET`line_items`List line itemsCommon Query Parameters
-----------------------

[](#common-query-parameters)

Most GET endpoints support these query parameters:

ParameterDescription`page_size`Number of results per page (max 200)`after`Cursor for pagination (from `version.max` in response)`before`Cursor for reverse pagination`deleted`Include deleted records (`true`/`false`)Debug Mode
----------

[](#debug-mode)

Enable debug mode to see request/response details:

```
$api->debug(true);

// Make requests...

// Access debug data
$rawResponse = $api->getLastResultRaw();
$httpCode = $api->getLastHttpCode();
```

Rate Limiting
-------------

[](#rate-limiting)

The API client automatically handles rate limiting (HTTP 429). When rate limited, it will wait and retry.

```
// Allow time slip for servers with clock drift
$api->allowTimeSlip = true;
```

OAuth Scopes
------------

[](#oauth-scopes)

From March 31, 2026, OAuth requests must include scopes. Request only the scopes your application needs.

### Selecting Scopes

[](#selecting-scopes)

1. Review all endpoints used by your application
2. Check the required scope(s) for each endpoint
3. Combine and remove duplicates to form your scope list

```
$oauth = new LightspeedOAuth(
    $clientId,
    $clientSecret,
    $domainPrefix,
    $redirectUri,
    ['products:read', 'sales:read', 'customers:read']  // Space-delimited in URL
);
```

### Available Scopes

[](#available-scopes)

ScopeDescription`audit:read`Read audit and security events`billing:partner_subscription:read`Read Billing Partner Subscription`billing:partner_subscription:write`Write Billing Partner Subscription`business_rules:read`Read business rules`business_rules:write`Create and delete business rules`channels:read`Read e-commerce channel information`consignments:read`Read in-progress inventory counts and historical stock consignments`consignments:write:inventory_count`Perform Inventory Counts`consignments:write:stock_order`Process stock orders and stock returns`consignments:write:stock_transfer`Create, send and receive stock transfers between outlets`customers:read`Read customers and customer groups`customers:write`Create, update and delete customers and customer groups`custom_fields:read`Read custom fields`custom_fields:write`Create, update and delete custom fields`fulfillments:read`Read sale order fulfillments`fulfillments:write`Create and update sale order fulfillments`gift_cards:read`Read gift cards and gift card transactions`gift_cards:write:issue`Issue a gift card to a customer`gift_cards:write:redeem`Redeem or reload an amount against a customers gift card`inventory:read`Read current and historical product inventory levels`outlets:read`Read outlets`payments:read`Read Payments`payment_types:read`Read payment types, excluding internal payment types`products:read`Read products, product types, product images, brands and tags (excluding costs)`products:read:price_books`Read product price books`products:write`Create/update products (excluding costs), delete products, upload images, create types`products:write:price_books`Write Products Price Books`promotions:read`Read promotions, get promotion products, find best promotion for sale`promotions:write`Create, update and archive any promotion`register:close`Close a register and reconcile payments`register:open`Open a register to create sales and payments`registers:read`Read registers`remote_rules:read`Read remote rules`remote_rules:write`Create and delete remote rules`retailer:read`Read account configuration (loyalty ratio, timezone, country, currency)`sales:read`Read all sales and payments in your account`sales:write`Create sales and payments, adjust, void or return sales`serial_numbers:read`Read serial numbers`serial_numbers:write`Add and delete serial numbers`services:read`Read services`services:write`Create, edit services`store_credits:read`Read store credit transactions`store_credits:write:issue`Issue store credits to a customer for a return`suppliers:read`Read suppliers`suppliers:write`Create, update and delete suppliers`taxes:read`Read tax rates and tax rules (and tax groups if tax exclusive)`taxes:write`Create, update and delete taxes`users:read`Read user information (except passwords)`users:write`Create, update and delete users and customise groups`webhooks`Manage webhooks created by the applicationLicense
-------

[](#license)

MIT License. See [LICENSE](LICENSE) for details.

Links
-----

[](#links)

- [Lightspeed X-Series API Documentation](https://x-series-api.lightspeedhq.com/)
- [API Changelog](https://x-series-api.lightspeedhq.com/changelog)
- [API Versioning Strategy](https://x-series-api.lightspeedhq.com/docs/versioning-strategy)

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance78

Regular maintenance activity

Popularity19

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~7 days

Recently: every ~0 days

Total

6

Last Release

116d ago

Major Versions

v1.0.0 → v2.0.02026-01-22

### Community

Maintainers

![](https://www.gravatar.com/avatar/5088b2c0269fdffb8151099324097ff383178dc2df03a6016c719822be478656?d=identicon)[Anytech](/maintainers/Anytech)

---

Top Contributors

[![anytech](https://avatars.githubusercontent.com/u/6244070?v=4)](https://github.com/anytech "anytech (10 commits)")

---

Tags

api-wrapperapi-wrappersecommerceinventory-managementlightspeedlightspeed-apilightspeed-x-seriesphpphp8posretailsdksdk-phpapioauth2pose-commerceretaillightspeedvend

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/anytech-lightspeed-x-series-api/health.svg)

```
[![Health](https://phpackages.com/badges/anytech-lightspeed-x-series-api/health.svg)](https://phpackages.com/packages/anytech-lightspeed-x-series-api)
```

###  Alternatives

[weble/zohoclient

Zoho API Client for oAuth auth and common tasks - PHP SDK

11145.6k3](/packages/weble-zohoclient)[bestbuy/bestbuy

High level PHP client for the Best Buy API

118.0k](/packages/bestbuy-bestbuy)[timothydc/laravel-lightspeed-retail-api

Laravel package for Lightspeed Retail API

121.1k](/packages/timothydc-laravel-lightspeed-retail-api)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
