Caisse Enregistreuse

Logiciel de caisse enregistreuse gratuit, en ligne depuis 2011.

Suivez-nous

Centre d'aide

Cette aide est disponible pour vous guider dans l'utilisation de notre logiciel de caisse

Rechercher par mot clé dans l'aide :

Accès rapide : gestes du quotidien

Authentification

L'accès à l'API nécessite de fournir votre APIKEY et SHOPID.

Pour une intégration, demandez à un administrateur de créer une clé API dédiée avec les seules autorisations nécessaires, puis utilisez-la avec SHOPID. Guide administrateur : créer, limiter, tester et révoquer une clé API.

1) Obtenir un auth token

Différentes méthodes :

  1. Méthode recommandée : clé dédiée : Configuration ? Webservices ? Clés API, depuis une session administrateur. Choisissez un nom, les autorisations nécessaires et éventuellement une expiration.
  2. Compatibilité par confirmation du courriel : https://kash.click/workers/getOTPForAccount.php
  3. Compatibilité par login et mot de passe : https://kash.click/workers/getAuthTokenWithPassword.php

Ces routes délivrent une nouvelle clé API gérée, sans expiration et avec toutes les autorisations, uniquement à un administrateur actif. Un collaborateur reçoit api_admin_required (HTTP 403), même si son courriel ou son mot de passe est correct. Contactez un administrateur pour configurer une clé dédiée. Les clés déjà émises restent valides avec leurs autorisations existantes.

1.1.1 POST /workers/getOTPForAccount.php

Demandez un code de confirmation pour votre courriel. La réponse ne révèle pas si des comptes existent. Une adresse valide reçoit un code, même si aucun compte ne lui est encore associé ; aucun compte n’est créé par cette demande.

NomObligatoireDescription
emailOuiAdresse de courriel à confirmer
accountIDNonLimite la confirmation à ce profil ; omettre ce champ pour découvrir tous les profils associés

La réponse contient success: true, un texte générique result, challengeId (32 caractères hexadécimaux) et expiresIn: 600. Conservez challengeId pour transmettre le code reçu par courriel.

const response = await fetch('/workers/getOTPForAccount.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ email })});const challenge = await response.json();// Demander à la personne le code reçu par courriel.// Conserver challenge.challengeId pour la confirmation.

Le code de six chiffres expire après dix minutes et admet cinq essais au maximum. Les envois sont espacés de soixante secondes, avec des quotas par courriel et par IP. Une limitation retourne rate_limited (HTTP 429).

1.1.2 POST /workers/getAuthTokenWithOTP.php

Confirmez le courriel et choisissez un profil administrateur pour recevoir APIKEY et SHOPID. La liste des profils ne constitue pas une autorisation de délivrer une clé. Cette route ne renvoie et ne crée aucun cookie de connexion.

NomObligatoireDescription
emailOuiLe courriel de la demande
challengeIdOuiRéférence reçue lors de la demande de code
otpÀ la confirmationCode de six chiffres reçu par courriel ; OTP reste un alias accepté
emailProofAprès confirmationPreuve retournée après confirmation, à la place du code
accountIDSi plusieurs profilsIdentifiant du profil choisi parmi les comptes confirmés

Avec un seul profil, accountID est facultatif. Avec plusieurs profils et sans choix, HTTP 409 retourne code: account_selection_required, accounts et emailProof. Recommencez avec cette preuve et le profil choisi, sans réutiliser le code.

Vous pouvez également confirmer le code par POST sur /workers/listShops.php avec email, challengeId et otp : la réponse contient accounts, emailProof et expiresIn. Le courriel seul ne révèle aucune liste et retourne email_confirmation_required (HTTP 401), sans déclencher un envoi.

La confirmation consomme le code. La preuve expire après cinq minutes au maximum, sans prolongation, et est consommée une seule fois lors de la délivrance de la clé. Elle reste limitée au courriel et, si précisé à la demande, au profil initial.

const response = await fetch('/workers/getAuthTokenWithOTP.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ email, challengeId, emailProof, accountID })});const credentials = await response.json();// Utiliser credentials.APIKEY et credentials.SHOPID pour l’intégration.
{ "success": true, "result": "Here are your credentials", "APIKEY": "[votre clé API]", "SHOPID": "[identifiant de boutique]"}

Le rôle administrateur est vérifié à nouveau avant la délivrance. Une confirmation de courriel ne contourne pas les protections de l’identité ou du second facteur : connectez-vous dans Kash.click et utilisez une clé dédiée si ces protections sont actives. Les accès suspendus ou révoqués, les établissements fermés et les webservices désactivés sont refusés.

Utilisez POST uniquement. Ne placez jamais de code, preuve ou clé dans une URL ou un journal. Les anciens liens GET et codes émis avant cette mise à jour ne fonctionnent plus : demandez un nouveau code. Les codes incorrects, expirés ou déjà utilisés retournent invalid_credential (HTTP 401).

1.2 POST /workers/getAuthTokenWithPassword.php

Cette route de compatibilité échange le login et le mot de passe d’un administrateur actif contre une nouvelle clé API gérée, sans expiration et avec toutes les autorisations. /workers/getAuthToken.php applique les mêmes autorisations, avec son format de succès historique.

Les deux routes partagent les mêmes limites : 10 tentatives par login et par 15 minutes, 30 par IP et par 15 minutes, 200 par IP et par jour, et 600 par minute pour l’ensemble du service. Les succès sont également comptés. Une limitation retourne HTTP 429 avec success: false, error: rate_limited, message et Retry-After en secondes. Attendez ce délai avant de réessayer ; alterner les routes ne remet pas les compteurs à zéro.

Utilisez uniquement des champs POST : login (254 octets maximum) et password (1024 octets maximum). Une requête mal formée retourne HTTP 400, une autre méthode HTTP 405. Un schéma ou service indisponible retourne HTTP 503 avec migration_required ou service_unavailable. Les réponses ne sont pas mises en cache.

Pour une nouvelle intégration, préférez une clé dédiée créée dans Configuration ? Webservices ? Clés API, plutôt que de transmettre le mot de passe d’une personne.

Paramètres POST

NomObligatoireDescription
loginOuiLe login de votre compte existant
passwordOuiLe mot de passe de votre compte existant

Réponse JSON attendue (succès)

{ "success": true, "result":"Here are your credentials", "APIKEY": "[votre Token]", "SHOPID": "[identifiant de compte boutique]"}

Réponse JSON attendue (échec)

{ "success": false, "result": "Authentication error"}

Un profil non administrateur reçoit HTTP 403 avec success: false, error: api_admin_required et message. Une identité ou un second facteur peut imposer la connexion interactive, puis une clé dédiée. Les clés existantes et les connexions au logiciel ne sont pas révoquées par ce contrôle.

Exemple JavaScript (fetch)

const login = "mon.email@example.com";const password = "myPassword";fetch("https://kash.click/workers/getAuthTokenWithPassword.php", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ login, password })}) .then(r => r.json()) .then(data => {  if (data.success) {   console.log("Token:", data.APIKEY);   console.log("Shop:", data.SHOPID);  } else {   console.error("Auth error", data);  } });

2) Avec la clé API, vous pouvez…

  • Télécharger vos données de ventes
  • Télécharger articles, clients, rayons, etc.
  • Enregistrer des ventes
Inscrivez-vous maintenant
Licence Creative Commons Ce document est mis à disposition selon les termes de la licence Creative Commons Attribution 4.0 International (CC BY 4.0) .