Cliento API reference: Point of sale

Base URL: https://api.cliento.com

The Point of sale APIs let an integration list a location's merchants, and read, import and void gift cards. Points of sale, sales, receipts, payments and invoices are coming soon.

A merchant is the company that sells at a location. Most locations have one. A location has several when independent businesses share it, such as a salon with rented chairs.

Sales, receipts, payments and gift cards belong to a merchant, not directly to the location. The money and the bookkeeping are the merchant's.

Merchants

The Merchants API lists a location's merchants. Use it when a call takes or returns a merchantId, such as the call that imports a gift card.

A merchant is the company that sells at a location: the company whose name is on the receipt. Most locations have one merchant, the organisation's own company. Everything that is sold belongs to a merchant, not directly to the location.

Some locations have several merchants. In a hair salon with rented chairs, each renter is an independent company. Each is a merchant of its own, with its own point of sale and its own card agreement with the bank.

A gift card is sold by one merchant and redeemed at that merchant's point of sale. A location can choose to accept its merchants' gift cards at each other's points of sale.

A merchant belongs to one location and has an id of the form mer_.... GET /v1/locations/{locationId}/merchants lists them. Where a request takes a merchantId, you can leave it out when the location has one merchant. With several, a call without it is refused with merchant_required.

List merchants

GET /v1/locations/{locationId}/merchants

Stability: preview

The merchants of a location, oldest first. Most locations have exactly one. Where a request takes a merchantId, it can be left out when the location has one.

Parameters

NameInTypeRequiredDescription
locationIdpathstringYes

Responses

StatusDescriptionBody
200OKMerchantList
defaultAny failure. See the Errors section.Error

Gift cards

The Gift cards API lets an integration read a location's gift cards, import a card that was sold outside Cliento, and void a card that has not been used. It is meant for a system that sells gift cards somewhere else, such as a web shop, so that they can be redeemed at the point of sale.

A gift card has a balance. A merchant sold the card and owes that balance to the card's holder. The holder pays with the card's code at the merchant's point of sale.

A gift card belongs to one merchant and has an id of the form gft_.... It can be linked to a customer: a person, a company or a vehicle. Reading needs the scope giftcards:read, and importing and voiding need giftcards:write.

  • An imported card can be redeemed at once. Cliento records no sale and makes no receipt for it.
  • Give each card your own externalReference, such as the order number. Sending the same card again then creates nothing.
  • A card that has not been used can be voided, for example when its order is refunded.

List gift cards

GET /v1/locations/{locationId}/gift-cards

Scope: giftcards:read

Stability: preview

The location's gift cards, newest first, one page at a time. To read them all, repeat the call with after set to the nextCursor of the previous page until a page has none.

Parameters

NameInTypeRequiredDescription
locationIdpathstringYes
limitqueryinteger (int32)NoPage size, 1 to 200. Default 50.
afterquerystringNoThe nextCursor of the previous page.
customerIdquerystringNoOnly this customer's cards.
externalReferencequerystringNoOnly cards with this external reference.
codequerystringNoOnly the card with this code.

Responses

StatusDescriptionBody
200OKGiftCardList
defaultAny failure. See the Errors section.Error

Get a gift card

GET /v1/locations/{locationId}/gift-cards/{giftCardId}

Scope: giftcards:read

Stability: preview

Parameters

NameInTypeRequiredDescription
locationIdpathstringYes
giftCardIdpathstringYes

Responses

StatusDescriptionBody
200OKGiftCard
defaultAny failure. See the Errors section.Error

Get a gift card by id

GET /v1/gift-cards/{giftCardId}

Scope: giftcards:read

Stability: preview

The same gift card as under its location, found from its id. For a caller that holds an id and not the location it belongs to. The answer carries locationId.

Parameters

NameInTypeRequiredDescription
giftCardIdpathstringYes

Responses

StatusDescriptionBody
200OKGiftCard
defaultAny failure. See the Errors section.Error

Import a gift card

POST /v1/locations/{locationId}/gift-cards/import

Scope: giftcards:write

Stability: preview

Records a gift card that was sold somewhere else, such as a web shop. Cliento records no sale and makes no receipt for it. The card can be redeemed at the merchant's point of sale at once. Answers 201 for a new card and 200 with the existing card when externalReference was used before, so the call is safe to retry.

Parameters

NameInTypeRequiredDescription
locationIdpathstringYes
Idempotency-KeyheaderstringNoA value you make up for this one request, such as a UUID. Send the same value when you retry and the first answer is returned; see Retrying safely. Example: 8e03978e-40d5-43e8-bc93-6894a57f9324.

Request body: GiftCardImport

Responses

StatusDescriptionBody
200A card with this externalReference already existed. It is returned as it is now; nothing in this request was applied.GiftCard
201The card was created.GiftCard
defaultAny failure. See the Errors section.Error

Void a gift card

POST /v1/locations/{locationId}/gift-cards/{giftCardId}/void

Scope: giftcards:write

Stability: preview

Cancels a card that has not been used, for example when its web shop order is refunded. A card that has been used, even in part, or is already void is refused with gift_card_already_used.

Parameters

NameInTypeRequiredDescription
locationIdpathstringYes
giftCardIdpathstringYes
Idempotency-KeyheaderstringNoA value you make up for this one request, such as a UUID. Send the same value when you retry and the first answer is returned; see Retrying safely. Example: 8e03978e-40d5-43e8-bc93-6894a57f9324.

Responses

StatusDescriptionBody
200OKGiftCard
defaultAny failure. See the Errors section.Error

Points of sale

Coming soon. Read a merchant's points of sale: the registers its sales are made at.

Sales

Coming soon. Read what a merchant has sold, line by line, with who sold it and to whom.

Receipts

Coming soon. Read the receipt of a sale or a refund.

Payments

Coming soon. Read how each sale was paid, such as by card or gift card.

Invoices

Coming soon. Read the invoices a merchant has sent its customers and whether they are paid.

Schemas

Error

The body of every non-2xx response.

FieldTypeRequiredDescription
codestringYesStable, machine-readable error code. Values today: invalid_request, validation_failed, entity_not_found, duplicate, merchant_required, code_already_used, gift_card_already_used, pin_not_recognised, insufficient_stock, not_allowed, request_in_progress, idempotency_key_reused, unauthenticated, forbidden, account_blocked, rate_limited, route_not_found, method_not_allowed, internal_error.
detailsobject of any valueNoExtra detail. For validation_failed, fieldErrors maps each rejected field to the reason.
messagestringYesHuman-readable explanation. Not stable; do not parse it.

GiftCard

A gift card. It belongs to one merchant and is redeemed at that merchant's point of sale, or at another merchant's when the location allows it. Amounts are decimal strings in the location's currency.

FieldTypeRequiredDescription
accountingTypestringNoHow VAT is handled. single_purpose: VAT is charged when the card is sold. multi_purpose: VAT is charged when the card is redeemed. Example: single_purpose.
beneficiarystringNoWho the card is for, as free text. Example: Anna Andersson.
codestringYesWhat the holder shows or types when paying. Example: K7QX9M2D.
createdAtstring (date-time)YesExample: 2026-11-17T09:14:03Z.
currencystringYesISO 4217 currency code. Example: SEK.
customerIdstringNoThe person, company or vehicle the card is linked to, when it is linked to one. The id's prefix says which. Example: per_2QCtWVSaVO7yCRYBj1zsbA.
descriptionstringNoExample: Presentkort.
externalReferencestringNoYour own id for the card, as sent when it was imported. Example: shopify-5512340001-1.
idstringYesGift card id. Example: gft_7Qm2xN0cT1kPz4Wb9LrEaD.
locationIdstringYesExample: loc_4fK9xQ2mLr8TzB1vNc7HdW.
merchantIdstringNoThe merchant the card belongs to. Example: mer_2Rk8sVh3Yq6Nf1Tz0JwUcM.
notestringNoA note for staff, shown on the card in Cliento. Example: Web shop order 10042.
remainingValuestringYesWhat is left to spend. Example: 500.00.
soldDatestring (date)NoThe day the card was sold, in the location's time zone. Example: 2026-11-17.
statusstringYesactive: usable, nothing spent. partially_redeemed: usable, some spent. redeemed: nothing left. expired: past validUntil. void: cancelled. More values may be added. Example: active.
updatedAtstring (date-time)YesWhen it last changed, in UTC. Example: 2026-10-12T09:24:31.512Z.
validUntilstring (date)NoThe last day the card can be used. Example: 2027-11-17.
valuestringYesThe card's full value. Example: 500.00.
vatPercentstringNoThe VAT rate of a single-purpose card. Example: 25.

GiftCardImport

A gift card that was sold somewhere else, such as a web shop. value is required, and merchantId at a location with several merchants. A field that is left out takes its default, as each field says.

FieldTypeRequiredDescription
accountingTypestringNosingle_purpose or multi_purpose. Defaults to the merchant's setting. Example: single_purpose.
beneficiarystringNoExample: Anna Andersson.
codestringNoThe code the holder uses when paying. Leave out to have one generated. Stored in upper case. Must not already be used at the location. Example: NH-4711.
customerIdstringNoA person, company or vehicle of this location to link the card to. Example: per_2QCtWVSaVO7yCRYBj1zsbA.
descriptionstringNoDefaults to "Presentkort" (Swedish for gift card). Example: Presentkort.
externalReferencestringNoYour own id for this card, at most 100 characters, such as an order id and line number. Sending the same reference again returns the card created the first time, so a retry never makes a second card. Example: shopify-5512340001-1.
merchantIdstringNoWhich merchant the card belongs to. Needed only when the location has more than one; see GET /v1/locations/{locationId}/merchants. Example: mer_2Rk8sVh3Yq6Nf1Tz0JwUcM.
notestringNoA note for staff. Example: Web shop order 10042.
remainingValuestringNoWhat is left on a card that was already partly used. Between 0 and value. Defaults to value. Cannot be changed afterwards. Example: 500.00.
soldDatestring (date)NoDefaults to today in the location's time zone. Example: 2026-11-17.
validUntilstring (date)NoThe last day the card can be used. Defaults to soldDate plus the merchant's standard validity. Example: 2027-11-17.
valuestringYesThe card's full value, as a decimal string with at most two decimals. Positive. Example: 500.00.
vatPercentstringNoThe VAT rate of a single-purpose card, 0 to 100. Defaults to the merchant's setting. Leave out for a multi-purpose card. Example: 25.

GiftCardList

FieldTypeRequiredDescription
dataarray of GiftCardYes
nextCursorstringNoPass as after to fetch the next page. Absent on the last page. Example: gft_7Qm2xN0cT1kPz4Wb9LrEaD.

Merchant

The company that sells at a location: the company whose name is on the receipt. A merchant belongs to one location, and a location usually has one. What is sold, such as a gift card, belongs to a merchant.

FieldTypeRequiredDescription
idstringYesMerchant id. Example: mer_2Rk8sVh3Yq6Nf1Tz0JwUcM.
namestringYesThe company name. Example: Salong Exempel AB.
organisationNumberstringNoThe company's registration number, as entered in Cliento. Left out when none is entered. It can be written with or without a hyphen. Example: 556677-8899.

MerchantList

FieldTypeRequiredDescription
dataarray of MerchantYes