Lightspeed Commerce Registers API

Register operations

Operations 7

GET /button_layouts List button layouts #
GET /button_layouts/{button_layout_id} Get a single button layout #
GET /registers List registers #
GET /registers/{register_id} Get a single register #
PUT /registers/{register_id}/actions/close Close a single register #
PUT /registers/{register_id}/actions/open Open a single register #
GET /registers/{register_id}/payments_summary Get all the payments data associated with a single register. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/lightspeed-registers-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

lightspeed-registers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: x-series.api@lightspeedhq.com
    name: Lightspeed Developer Relations
    url: https://developers.retail.lightspeed.app
  description: Lightspeed Retail (X-Series) API.
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  termsOfService: https://developers.lightspeedhq.com/terms
  title: 2026-07 Registers API
  version: 2026-07
servers:
- url: https://{domain_prefix}.retail.lightspeed.app/api/2026-07
  variables:
    domain_prefix:
      default: example
      description: Domain prefix of the store to be operated on
security:
- bearerAuth: []
tags:
- description: Register operations
  name: Registers
paths:
  /button_layouts:
    get:
      description: 'Returns a versioned collection of button layouts for the authenticated retailer.

        Button layouts define the arrangement of quick key buttons on a register.


        🔒 Requires: `registers:read` scope'
      operationId: ListButtonLayouts
      parameters:
      - description: The lower limit for the version numbers to be included in the response.
        in: query
        name: after
        schema:
          format: int64
          type: integer
      - description: The upper limit for the version numbers to be included in the response.
        in: query
        name: before
        schema:
          format: int64
          type: integer
      - description: The maximum number of items to be returned in the response.
        in: query
        name: page_size
        schema:
          type: integer
      - description: Indicates whether deleted items should be included in the response.
        in: query
        name: deleted
        schema:
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ButtonLayoutCollection'
          description: A versioned collection of ButtonLayout
      summary: List button layouts
      tags:
      - Registers
  /button_layouts/{button_layout_id}:
    get:
      description: 'Returns a single button layout by id.

        Button layouts define the arrangement of quick key buttons on a register.


        🔒 Requires: `registers:read` scope'
      operationId: GetButtonLayoutById
      parameters:
      - description: UUID of the button layout
        in: path
        name: button_layout_id
        required: true
        schema:
          format: uuid
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ButtonLayout'
          description: A single ButtonLayout wrapped in a data object
        '404':
          content:
            application/json:
              schema:
                type: object
          description: ButtonLayout not found
      summary: Get a single button layout
      tags:
      - Registers
  /registers:
    get:
      description: 'Returns a paginated list of registers.


        🔒 Requires: `registers:read` scope'
      operationId: ListRegisters
      parameters:
      - description: The lower limit for the version numbers to be included in the response.
        in: query
        name: after
        schema:
          format: int64
          type: integer
      - description: The upper limit for the version numbers to be included in the response.
        in: query
        name: before
        schema:
          format: int64
          type: integer
      - description: Indicates whether deleted items should be included in the response.
        in: query
        name: deleted
        schema:
          type: boolean
      - description: The maximum number of items to be returned in the response.
        in: query
        name: page_size
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegisterCollection'
            new:
              example:
                data:
                - ask_for_note_on_save: 1
                  ask_for_user_on_sale: false
                  button_layout_id: d656e8e1-7be7-11e4-9bb5-b8ca3a65011c
                  cash_managed_payment_type_id: b1e1d70e-f019-11e3-a0f5-b8ca3a64f8f4
                  email_receipt: true
                  id: b1e198a9-f019-11e3-a0f5-b8ca3a64f8f4
                  invoice_prefix: MR-
                  invoice_sequence: 1708
                  invoice_suffix: -NZ
                  is_open: true
                  is_quick_keys_enabled: true
                  name: Main Register
                  outlet_id: b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4
                  print_note_on_receipt: false
                  print_receipt: true
                  receipt_template_id: 0242ac11-0002-11ea-e96b-69ae6c24a799
                  register_open_sequence_id: 06bf537b-c783-11e7-ff13-3157eb615f96
                  register_open_time: '2017-05-05T05:58:53+00:00'
                  show_discounts_on_receipts: true
                  version: 3391483933
                - ask_for_note_on_save: 1
                  ask_for_user_on_sale: false
                  email_receipt: false
                  id: b8ca3a65-0183-11e4-fbb5-2816e25ffc51
                  invoice_prefix: S
                  invoice_sequence: 3
                  invoice_suffix: ''
                  is_open: true
                  is_quick_keys_enabled: true
                  name: Second Register
                  outlet_id: b8ca3a65-0183-11e4-fbb5-2816d2677218
                  print_note_on_receipt: false
                  print_receipt: true
                  receipt_template_id: 0242ac11-0002-11ea-e96b-69ae6c24a799
                  register_open_sequence_id: a0369f1f-9083-11e4-f68e-cc2ad7a415de
                  register_open_time: '2015-03-16T22:21:50+00:00'
                  show_discounts_on_receipts: true
                  version: 709083
                - ask_for_note_on_save: 1
                  ask_for_user_on_sale: false
                  email_receipt: false
                  id: 06e35f89-3783-11e6-ec7e-10e1180eba6d
                  invoice_prefix: Th
                  invoice_sequence: 3
                  invoice_suffix: X
                  is_open: true
                  is_quick_keys_enabled: true
                  name: Third register
                  outlet_id: b8ca3a65-0183-11e4-fbb5-2816d2677218
                  print_note_on_receipt: false
                  print_receipt: true
                  receipt_template_id: 0242ac11-0002-11ea-e96b-69ae6c24a799
                  register_open_sequence_id: 06e35f89-3783-11e6-ec7e-10e124cb1e78
                  register_open_time: '2016-05-03T03:43:04+00:00'
                  show_discounts_on_receipts: true
                  version: 1234541473
                version:
                  max: 3391483933
                  min: 709083
          description: ''
      summary: List registers
      tags:
      - Registers
  /registers/{register_id}:
    get:
      description: 'Returns a single register with the requested ID.


        🔒 Requires: `registers:read` scope'
      operationId: GetRegisterByID
      parameters:
      - description: The register id
        in: path
        name: register_id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  ask_for_note_on_save: 1
                  ask_for_user_on_sale: false
                  email_receipt: false
                  id: b8ca3a65-0183-11e4-fbb5-2816e25ffc51
                  invoice_prefix: S
                  invoice_sequence: 3
                  invoice_suffix: ''
                  is_open: true
                  is_quick_keys_enabled: true
                  name: Second Register
                  outlet_id: b8ca3a65-0183-11e4-fbb5-2816d2677218
                  print_note_on_receipt: false
                  print_receipt: true
                  receipt_template_id: 0242ac11-0002-11ea-e96b-69ae6c24a799
                  register_open_sequence_id: a0369f1f-9083-11e4-f68e-cc2ad7a415de
                  register_open_time: '2015-03-16T22:21:50+00:00'
                  show_discounts_on_receipts: true
                  version: 709083
              schema:
                $ref: '#/components/schemas/RegisterResponse'
          description: ''
      summary: Get a single register
      tags:
      - Registers
  /registers/{register_id}/actions/close:
    put:
      description: 'Closes a single register with the requested ID.


        🔒 Requires: `register:close` `payment_types:read` scopes'
      operationId: CloseRegister
      parameters:
      - description: The register id
        in: path
        name: register_id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterCloseRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  ask_for_note_on_save: 1
                  ask_for_user_on_sale: false
                  email_receipt: false
                  id: b8ca3a65-0183-11e4-fbb5-2816e25ffc51
                  invoice_prefix: S
                  invoice_sequence: 3
                  invoice_suffix: ''
                  is_open: false
                  is_quick_keys_enabled: true
                  name: Second Register
                  outlet_id: b8ca3a65-0183-11e4-fbb5-2816d2677218
                  print_note_on_receipt: false
                  print_receipt: true
                  receipt_template_id: 0242ac11-0002-11ea-e96b-69ae6c24a799
                  register_close_time: '2015-03-16T22:21:50+00:00'
                  show_discounts_on_receipts: true
                  version: 709083
              schema:
                $ref: '#/components/schemas/RegisterResponse'
          description: ''
      summary: Close a single register
      tags:
      - Registers
  /registers/{register_id}/actions/open:
    put:
      description: 'Opens a single register with the requested ID.


        🔒 Requires: `register:open` scope'
      operationId: OpenRegister
      parameters:
      - description: The register id
        in: path
        name: register_id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterOpenRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  ask_for_note_on_save: 1
                  ask_for_user_on_sale: false
                  email_receipt: false
                  id: b8ca3a65-0183-11e4-fbb5-2816e25ffc51
                  invoice_prefix: S
                  invoice_sequence: 3
                  invoice_suffix: ''
                  is_open: true
                  is_quick_keys_enabled: true
                  name: Second Register
                  outlet_id: b8ca3a65-0183-11e4-fbb5-2816d2677218
                  print_note_on_receipt: false
                  print_receipt: true
                  receipt_template_id: 0242ac11-0002-11ea-e96b-69ae6c24a799
                  register_open_sequence_id: a0369f1f-9083-11e4-f68e-cc2ad7a415de
                  register_open_time: '2015-03-16T22:21:50+00:00'
                  show_discounts_on_receipts: true
                  version: 709083
              schema:
                $ref: '#/components/schemas/RegisterResponse'
          description: ''
      summary: Open a single register
      tags:
      - Registers
  /registers/{register_id}/payments_summary:
    get:
      description: 'Returns a payload containing payment totals for all payments types defined in the account for a single register.


        🔒 Requires: `payments:read` scope'
      operationId: RegisterPaymentsSummary
      parameters:
      - description: The register id
        in: path
        name: register_id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  payments:
                  - payment_type_id: 2ac65e3b-1224-4aa5-bedf-936cfe85ac95
                    payment_type_name: Loyalty
                    total: '0.00'
                  - payment_type_id: be21ec2b-315f-1b07-8567-936cfe85ac95
                    payment_type_name: Cash
                    total: '255.00'
                  - payment_type_id: 2ac65e3b-b6c5-6547-9543-80ba85264a8e
                    payment_type_name: Credit Card
                    total: '1038.77'
                  register_closure_id: 0ab9b350-ab7f-11ba-fc5c-6e58d999006f
                  register_closure_sequence_number: 5
                  register_open_time: '2015-03-16T22:21:50+00:00'
              schema:
                $ref: '#/components/schemas/RegisterPaymentsSummaryResponse'
          description: ''
      summary: Get all the payments data associated with a single register.
      tags:
      - Registers
components:
  schemas:
    RegisterClosePaymentType:
      properties:
        payment_type_id:
          description: The ID of the Payment Type.
          type: string
        total:
          description: The Total amount for this Payment Type.
          type: string
      title: Register Close Payment Type
      type: object
    Version:
      description: An object containing the highest and lowest version numbers for all items of the returned collection.
      properties:
        max:
          description: Highest version number of the payload, or `null` when the result set is empty.
          format: int64
          type:
          - integer
          - 'null'
        min:
          description: Lowest version number of the payload, or `null` when the result set is empty.
          format: int64
          type:
          - integer
          - 'null'
      required:
      - max
      - min
      type: object
    ButtonLayout:
      properties:
        deletedAt:
          format: date-time
          type:
          - string
          - 'null'
        id:
          description: Autogenerated object identifier.
          type: string
        name:
          description: The name of the button layout.
          type: string
        nodes:
          description: The nodes that make up the button layout.
          items:
            $ref: '#/components/schemas/ButtonLayoutNode'
          type: array
        version:
          description: Auto-incrementing object version number.
          format: int64
          type: integer
      required:
      - id
      - name
      - nodes
      - version
      type: object
    ButtonLayoutNodeAttribute:
      properties:
        key:
          description: The attribute key.
          type: string
        value:
          description: The attribute value.
          type: string
      required:
      - key
      - value
      type: object
    RegisterOpenRequest:
      properties:
        register_open_time:
          description: Date/time when the register was open. Always in UTC.
          type: string
      title: Register Open Request
      type: object
    ButtonLayoutCollection:
      properties:
        data:
          items:
            $ref: '#/components/schemas/ButtonLayout'
          type: array
        pagination:
          $ref: '#/components/schemas/PaginationMetadata'
        version:
          $ref: '#/components/schemas/Version'
      required:
      - data
      - version
      type: object
    RegisterResponse:
      properties:
        data:
          $ref: '#/components/schemas/Register'
      title: Register Response
      type: object
    Register:
      properties:
        ask_for_note_on_save:
          description: '`0` for **Never**, `1` for **On Save/Layby/Account/Return**, `2` for **Always**.'
          format: double
          type: number
        ask_for_user_on_sale:
          type: boolean
        button_layout_id:
          description: Register ID.
          type:
          - string
          - 'null'
        cash_managed_payment_type_id:
          description: '**internal** The ID of the payment type used for cash management transactions in this regsiter.'
          type:
          - string
          - 'null'
        deleted_at:
          description: Deletion timestamp in UTC.
          type:
          - string
          - 'null'
        email_receipt:
          description: Indicates whether a receipt should be emailed after a sale.
          type: boolean
        id:
          description: Auto-generated object ID.
          type: string
        invoice_prefix:
          description: Invoice number prefix.
          type: string
        invoice_sequence:
          description: The numeric part of the last issued invoice.
          format: double
          type: number
        invoice_suffix:
          description: Invoice number suffix.
          type: string
        is_open:
          description: Indicates if the Register is currently open.
          type: boolean
        name:
          description: The Register name.
          type: string
        outlet_id:
          description: A valid ID of an Outlet that this register is associated with.
          type: string
        print_note_on_receipt:
          type: boolean
        print_receipt:
          description: Indicates whether a receipt should be printed after a sale.
          type: boolean
        receipt_template_id:
          description: Default receipt template ID used for this register.
          type: string
        register_close_time:
          description: Date/time when the register was closed. Null if currently open.
          type:
          - string
          - 'null'
        register_open_sequence_id:
          description: '**internal** The ID of the current register closure object.'
          type:
          - string
          - 'null'
        register_open_time:
          description: Date/time when the register was open. Always in UTC.
          type:
          - string
          - 'null'
        show_discounts_on_receipts:
          type: boolean
        version:
          description: Auto-incrementing object version number.
          format: int64
          type: integer
      title: Register
      type: object
    RegisterPaymentSummaryPaymentType:
      properties:
        payment_type_id:
          description: The ID of the Payment Type.
          format: uuid
          type: string
        payment_type_name:
          description: The name of the Payment Type.
          type: string
        total:
          description: The Total amount for this Payment Type.
          type: string
      title: Register Payments Summary Payment Type
      type: object
    RegisterPaymentsSummary:
      properties:
        payments:
          items:
            $ref: '#/components/schemas/RegisterPaymentSummaryPaymentType'
          type: array
      title: Register Payments Summary
      type: object
    PaginationMetadata:
      properties:
        page:
          type: integer
        pageSize:
          type: integer
        results:
          type: integer
      type: object
    RegisterPaymentsSummaryResponse:
      properties:
        data:
          $ref: '#/components/schemas/RegisterPaymentsSummary'
      title: Register Payments Summary Response
      type: object
    RegisterCloseRequest:
      properties:
        payments:
          description: An array Register objects wrapped in a top level `data` object.
          items:
            $ref: '#/components/schemas/RegisterClosePaymentType'
          type: array
      title: Register Close Request
      type: object
    ButtonLayoutNode:
      properties:
        attributes:
          description: The attributes associated with this node.
          items:
            $ref: '#/components/schemas/ButtonLayoutNodeAttribute'
          type: array
        id:
          description: Autogenerated object identifier.
          type: string
        parentNodeId:
          description: The ID of the parent node, if applicable.
          format: uuid
          type:
          - string
          - 'null'
        position:
          description: The position of the node within its parent.
          type: integer
        productId:
          description: The product ID associated with this node, if applicable.
          type:
          - string
          - 'null'
      required:
      - id
      - position
      - attributes
      type: object
    RegisterCollection:
      properties:
        data:
          description: An array Register objects wrapped in a top level `data` object.
          items:
            $ref: '#/components/schemas/Register'
          type: array
        version:
          $ref: '#/components/schemas/Version'
      title: Register Collection
      type: object
  securitySchemes:
    bearerAuth:
      description: Bearer Token for API authentication.
      scheme: bearer
      type: http
externalDocs:
  description: List of tz database time zones
  url: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones