Complete and operational technical documentation. Each section includes ready-to-use JavaScript (fetch) examples.
Two methods:
https://kash.click/workers/getAuthToken.phplogin — the login of your existing accountpassword — the password for your existing account{ "result": "OK", "APIKEY": "[votre Token]", "SHOPID": "[identifiant de compte boutique]"} const login = "mon.email@example.com";const password = "monMotDePasse";fetch("https://kash.click/workers/getAuthToken.php", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ login, password })}) .then(r => r.json()) .then(data => { if (data.result === "OK") { console.log("Token:", data.APIKEY); console.log("Boutique:", data.SHOPID); } else { console.error("Erreur d'authentification", data); } }); Base URL: https://kash.click/workers/getSales.php
| Name | Type | Necessary | Description |
|---|---|---|---|
idboutique | string | Yes | Shop Account ID (SHOPID) |
key | string | Yes | Your token (APIKEY) |
d | int | No | Day (if not specified, the day before is used) |
m | int | No | Monthly |
y | int | No | Year |
formatExport | string | Yes | Std (HTML report), PDF, XLS, CSV, frafec (FEC), saft |
// Aide pour construire une URL GETfunction buildUrl(path, params){ const qs = new URLSearchParams(params); return `${path}?${qs.toString()}`;}const SHOPID = "[SHOPID]";const APIKEY = "[APIKEY]";// 1) Export CSV pour date préciseconst urlCsv = buildUrl("https://kash.click/workers/getSales.php", { idboutique: SHOPID, key: APIKEY, d: 16, m: 10, y: 2025, formatExport: "CSV"});fetch(urlCsv).then(r=>r.text()).then(csv=>console.log(csv));// 2) Rapport HTML (Std) pour la veille (sans date)const urlStd = buildUrl("https://kash.click/workers/getSales.php", { idboutique: SHOPID, key: APIKEY, formatExport: "Std"});fetch(urlStd).then(r=>r.text()).then(html=>{ document.getElementById("rapport").innerHTML = html;});// 3) Rapport PDF (Blob)const urlPdf = buildUrl("https://kash.click/workers/getSales.php", { idboutique: SHOPID, key: APIKEY, d: 16, m: 10, y: 2025, formatExport: "PDF"});fetch(urlPdf).then(r=>r.blob()).then(pdf=>{ const a = document.createElement("a"); a.href = URL.createObjectURL(pdf); a.download = "rapport-ventes.pdf"; a.click();}); All of the following endpoints accept &format=json, &format=csv, or &format=html.
| Resource | Endpoint |
|---|---|
| Items | /workers/getPlus.php |
| Departments | /workers/getDepartments.php |
| Department groups | /workers/getDepartmentGroups.php |
| Clients | /workers/getClients.php |
| Variations of items | /workers/getDeclinaisons.php |
| Delivery methods | /workers/getLivraisons.php |
| Payment methods | /workers/getPaymentModes.php |
| Cashboxes | /workers/getCashbox.php |
| Delivery zones/areas | /workers/getDeliveryZones.php |
| Relay point | /workers/getRelayDeposit.php |
| Discounts | /workers/getDiscounts.php |
| Users | /workers/getUsers.php |
| Tables | /workers/getTables.php |
| Pending orders | /workers/getPending.php |
https://kash.click/workers/[endpoint].php?idboutique=[SHOPID]&key=[APIKEY]&format=[csv|json|html] // Récupération d'une ressource génériquefunction buildUrl(path, params){ const qs = new URLSearchParams(params); return `${path}?${qs.toString()}`;}async function fetchResource(endpoint, format = "json"){ const url = buildUrl(`https://kash.click/workers/${endpoint}.php`, { idboutique: SHOPID, key: APIKEY, format }); const res = await fetch(url); return format === "json" ? res.json() : res.text();}// 1) Articles en JSONfetchResource("getPlus", "json").then(data => console.log("Articles:", data));// 2) Clients en CSVfetchResource("getClients", "csv").then(csv => console.log("Clients (CSV):\n", csv));// 3) Rayons en HTML (injection)fetchResource("getDepartments", "html").then(html => { document.getElementById("rayons").innerHTML = html;}); Submit a complete order: items, customer, payment method, delivery, etc.
| Name | Type | Necessary | Description |
|---|---|---|---|
idboutique | string | Yes | Your shop ID (SHOPID) |
key | string | Yes | Your token (APIKEY) |
idUser | int | No | User ID. If not specified, the software creates a user account with the "webservice" login if it does not already exist, and uses it. |
payment | int | Yes | -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) |
idClient | int | No | Existing customer ID to assign to the order |
idtable | int | No | Table ID to assign to the order |
idcaisse | int | No | Cash register ID to assign to the order |
numcouverts | int | No | Number of place settings served at the table |
publicComment | string | No | Comment attached to the order (public) |
privateComment | string | No | Comment attached to the order (private) |
pagerNum | int | No | Pager number |
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] | Amount | Meaning |
|---|---|
| 0 | Take away |
| 1 | To be delivered |
| 2 | On site |
| 3 | Drive-Thru |
| 4 | Counter sales |
| 5 | Relay point |
| 6 | To be shipped |
[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-[idRayon]_[prix]_[titre] — creates a free line attached to the rayFree_[prix]_[titre] — creates a free lineasync function enregistrerVenteAvecClientExistant(){ const body = new URLSearchParams({ idboutique: SHOPID, key: APIKEY, idUser: 1, payment: -1, deliveryMethod: 0, idClient: 123 }); body.append("itemsList[]", "12_2_Pizza 4 fromages_14.50_3_8"); body.append("itemsList[]", "-5_9.99_Vente libre"); const res = await fetch("https://kash.click/workers/webapp.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);} async function enregistrerVenteAvecNouveauClient(){ const body = new URLSearchParams({ idboutique: SHOPID, key: APIKEY, payment: 2, deliveryMethod: 1 }); body.append("client[nom]", "Durand"); body.append("client[prenom]", "Zoé"); body.append("client[email]", "zoe.durand@example.com"); body.append("client[telephone]", "+33 6 12 34 56 78"); body.append("client[adresseligne1]", "10 rue des Écoles"); body.append("client[adresseligne2]", "Bât. B"); body.append("client[commentaireadresse]", "Sonner 2 fois"); body.append("client[codepostal]", "75005"); body.append("client[ville]", "Paris"); body.append("client[pays]", "FR"); body.append("client[numtva]", "FRXX999999999"); body.append("client[rcs]", "RCS Paris 123 456 789"); body.append("client[codeBarre]", "CUST-0001"); body.append("client[telephone2]", "+33 1 23 45 67 89"); body.append("client[lat]", "48.848"); body.append("client[lng]", "2.347"); body.append("itemsList[]", "42_1_Menu midi_12.90"); body.append("itemsList[]", "15_3_Canette Cola_2.50"); const res = await fetch("https://kash.click/workers/webapp.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);}
This document is made available under the terms of the licence Creative Commons Attribution 4.0 International (CC BY 4.0) .