Store Credit

Store Credit - BETA

The Store Credit API can be used to query, issue and redeem Lightspeed Retail (X-Series) Store Credit.

We recommend that you first familiarise yourself with Lightspeed Retail (X-Series)'s Store Credit functionality by reviewing the available documentation in our help centre.

This API allows an integrator to create store credit transactions outside of a Lightspeed Retail (X-Series) register - for example, for an external ecommerce app, or for an outlet which uses a different POS system.

The API does NOT support associating store credit transactions with sales on a Lightspeed Retail (X-Series) register. If you would like to be able to raise Lightspeed Retail (X-Series) sales and associate Lightspeed Retail (X-Series) payment methods with Store Credit sold and used via the API, please contact us on [email protected] for further information.

Examples

Getting a List of All Customers and their Store Credit Transactions

If you wanted to get a list of customers and their current store credit transactions you would do a GET to the /api/2.0/store_credits endpoint. This will return a list of customers and their current and historical store credit transactions. An example payload is shown below.

{
  "data": [
        {
            "id": "AghZsWvnoAM=",
            "customer_id": "0242ac14-002c-11e9-f1cd-d8f0aa3284db",
            "created_at": "2019-09-30T20:28:55+00:00",
            "customer": null,
            "balance": 0.0000,
            "store_credit_transactions": [
                {
                    "id": "AghiNYlXwAE=",
                    "amount": -20.0000,
                    "type": "REDEMPTION",
                    "notes": null,
                    "user_id": "08002782-0c90-11e6-e3ed-117ec127b1ca",
                    "sale_id": "0242ac19-002c-11e9-ffbb-e3c0ddbc7fdb",
                    "client_id": "0f6799a5-3a64-ba69-11e9-e3c0e37e2787",
                    "created_at": "2019-09-30T22:57:45+00:00"
                },
                {
                    "id": "AghZsWv3oAQ=",
                    "amount": 20.0000,
                    "type": "ISSUE",
                    "notes": null,
                    "user_id": "08002782-0c90-11e6-e3ed-117ec12866a9",
                    "sale_id": "0242ac19-002c-11e9-ffbb-e3c0ddbc7fdb",
                    "client_id": "0f6799a5-3a64-ba69-11e9-e3c0e37e2787",
                    "created_at": "2019-09-30T20:28:55+00:00"
                }
            ],
            "total_credit_issued": 20.0000,
            "total_credit_redeemed": -20.0000
        }
      },
      ...
    ]
}

If you'd like to return the customer details, you can specify the query parameter includes[]=customer: /api/2.0/store_credits/?includes[]=customer .

Getting the Store Credit Balance for a Particular Customer

To get the store credit details for a particular customer you would need to do a GET to the /api/2.0/store_credits/:customerID endpoint. The customerID is the customer UUID from the Lightspeed Retail (X-Series) system. An example payload is shown below.

{
    "id": "AggOK48W8AE=",
    "customer_id": "0242ac14-002c-11e9-f1cd-d8f0aa3284db",
    "created_at": "2019-09-29T22:29:04+00:00",
    "customer": null,
    "balance": 20.0000,
    "store_credit_transactions": [
        {
            "id": "AggVdTPHNAI=",
            "amount": -5.0000,
            "type": "REDEMPTION",
            "notes": null,
            "user_id": "08002782-0c90-11e6-e3ed-117ec127b1ca",
            "sale_id": "e4cde176-f7c4-4fa8-b1c1-afc8adfc4216",
            "client_id": "e323a0dd-0871-47f1-8a2a-f5d0cb5703ed",
            "created_at": "2019-09-30T00:36:25+00:00"
        },
        {
            "id": "AggY1T36QGs=",
            "amount": 25.0000,
            "type": "ISSUE",
            "notes": null,
            "user_id": "08002782-0c90-11e6-e3ed-117ec127b1ca",
            "sale_id": "8e9fa943-a763-417f-ba65-40d2489720f6",
            "client_id": "66983bc7-0007-4460-b5bb-bf7073942d4e",
            "created_at": "2019-09-30T01:35:24+00:00"
        }
    ],
    "total_credit_issued": 25.0000,
    "total_credit_redeemed": -5.0000
}

Redeeming Store Credit

To redeem an amount from a customers store credit you would need to POST to the /api/2.0/store_credits/:customerID/transactions endpoint with a JSON body payload which has the following format:

{
    "store_credit_customer_id": "0242ac14-002c-11e9-f1cd-d8f0aa3284db",
    "amount": -5.00,
    "type": "REDEMPTION",
    "notes": null,
    "user_id": "08002782-0c90-11e6-e3ed-117ec127b1ca",
    "client_id": "0f6799a5-3a64-ba69-11e9-e3c0e37e2788"
}

If successful you should get a 200 OK response and the following payload:

{
    "id": "AghumxX9PAE=",
    "amount": -5.0000,
    "type": "REDEMPTION",
    "notes": null,
    "user_id": "08002782-0c90-11e6-e3ed-117ec127b1ca",
    "sale_id": null,
    "client_id": "0f6799a5-3a64-ba69-11e9-e3c0e37e2788",
    "created_at": "2019- 10-01T02:34:24+00:00"
}

Idempotency

Ensuring that transactions are unique and preventing the same transaction from being made more than once is a core component of ensuring your omni-channel solution works as expected.

Idempotency is achieved for Store Credit transactions by the client supplying a client_id, this can be an external reference number, transaction ID or even just a UUID. It needs to be unique per transaction and must be provided with all reloading and redeeming transactions.
When Lightspeed Retail (X-Series) receives a Store Credit transaction, it checks the client_id to see if it has already been applied. If a second transaction is posted with the same client_id and transaction details, it will not be applied, and that previous transaction will be returned in its place. In this way, a client application can implement retries, simply and safely.