Free cash register

Kash.click, free online POS software since 2014

Follow Us

Help Center

This help will guide you through the setup and usage of our point of sale cash register software.

Search by keyword in the help section:

Modify a sale recorded in the software

You can modify an order as long as it has not been validated.

Once validated, it is only possible to record the payment(s) for the order via the "payment" field.

POST /workers/editOrder.php

Submit a complete order: items, customer, payment method, delivery, etc.

POST parameters

NameTypeNecessaryDescription
shopIDstringYesYour shop ID (SHOPID)
keystringYesYour token (APIKEY)
orderIDintYesThe order ID to be modified
idUserintNoUser ID. If not specified, the software creates a user account with the "webservice" login if it does not already exist, and uses it.
paymentintYes-2 = Not paid, not validated; -1 = Not paid, validated; a payment method identifier to indicate a payment (can be an identifier of a refund method)
paymentAmountintNoLe montant payé, si "payment" indique un mode de paiement (si absent, le paiement est considéré comptant)
idClientintNoExisting customer ID to assign to the order
clientarrayNoA customer account needs to be created and assigned to the order.*
idtableintNoTable ID to assign to the order
idcaisseintNoCash register ID to assign to the order
numcouvertsintNoNumber of place settings served at the table
publicCommentstringNoComment attached to the order (public)
privateCommentstringNoComment attached to the order (private)
pagerNumintNoPager number
deliveryMethodintNoDelivery method*
itemsListarrayYesPager number

Additional information

Create a new customer in the same query

If the customer does not exist, you can create it with the following fields (to be sent directly by POST):

client[nom]=[nom]client[prenom]=[Prénom]client[email]=[Email]client[telephone]=[nom]client[adresseligne1]=[Adresse ligne 1]client[adresseligne2]=[Adresse ligne 2]client[commentaireadresse]=[nom]client[codepostal]=[Code postal]client[ville]=[Ville]client[pays]=FRclient[numtva]=[Numéro TVA]client[rcs]=[Numéro RC]client[codeBarre]=[Code barre]client[telephone2]=[Téléphone secondaire]client[lat]=[latitude]client[lng]=[longitude]

Delivery method

The deliveryMethod field can have values ranging from 0 to 6:

AmountMeaning
0Take away
1To be delivered
2On site
3Drive-Thru
4Counter sales
5Relay point
6To be shipped

itemsList[] — Structure

The itemsList field is an array of strings, each element of which can be of one of the following types::

  • [idArticle] — add an item (quantity 1)
  • [idArticle]_[quantite] — specify the quantity
  • [idArticle]_[quantite]_[titre personnalisé]_[prix personnalisé] — force the title and price
  • [idArticle]_[quantite]_[titre]_[prix]_[idDéclinaison1]_[idDéclinaison2]_[idDéclinaison3]_[idDéclinaison4]_[idDéclinaison5] — add up to 5 variations
  • Over-the-counter sale : -[idRayon]_[prix]_[titre] — creates a free line attached to the ray
  • Over-the-counter sale : Free_[prix]_[titre] — creates a free line
Reminder: if idUser is omitted, the software automatically uses/creates a “webservice” user.

JavaScript Examples

Add items to an unvalidated order, and validate the order

async function recordSaleWithExistingClient(){ const body = new URLSearchParams({  shopID: SHOPID,  key: APIKEY,  orderID: 123456,  payment: -1 }); body.append("itemsList[]", "Free_12.99_Item"); body.append("itemsList[]", "Free_9.99_Other item"); const res = await fetch("https://kash.click/workers/editOrder.php", {  method: "POST",  headers: { "Content-Type": "application/x-www-form-urlencoded" },  body }); let payload; try{ payload = await res.json(); }catch{ payload = await res.text(); } console.log(payload);}

Assign a client to an existing unvalidated order

async function recordSaleWithExistingClient(){ const body = new URLSearchParams({  shopID: SHOPID,  key: APIKEY,  payment: -2,  orderID: 123456,  idClient: 123 }); const res = await fetch("https://kash.click/workers/editOrder.php", {  method: "POST",  headers: { "Content-Type": "application/x-www-form-urlencoded" },  body }); let payload; try{ payload = await res.json(); }catch{ payload = await res.text(); } console.log(payload);}

Record a payment for the order

async function recordSaleWithNewClient(){ const body = new URLSearchParams({  shopID: SHOPID,  key: APIKEY,  orderID: 123456,  payment: 123456 }); const res = await fetch("https://kash.click/workers/editOrder.php", {  method: "POST",  headers: { "Content-Type": "application/x-www-form-urlencoded" },  body }); let payload; try{ payload = await res.json(); }catch{ payload = await res.text(); } console.log(payload);}

Expected JSON response

Order confirmed, but not paid.

{ "success": true, "orderID":17724460, "paymentLink":"A link the client can use to pay the order", "invoice":"URL of the PDF invoice"}

Order not validated, not paid

{ "success": true, "orderID":17724461, "paymentLink":"A link the client can use to pay the order", "quote":"URL of the PDF qduote"}

Order confirmed and paid for.

{ "success": true, "orderID":17724461, "invoice":"URL of the PDF qduote"}

Failure

{ "success": false, "result": "Error message"}
Register now
Licence Creative Commons This document is made available under the terms of the licence Creative Commons Attribution 4.0 International (CC BY 4.0) .