Chaque commerce Digikart dispose d'une clé d'API générée depuis son tableau de bord (Mon compte → Connexion caisse). Elle se transmet dans l'en-tête HTTP :
Authorization: Bearer dk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
La clé est propre à un commerce : elle ne peut créditer que les cartes de ce commerce. Elle peut être révoquée ou régénérée à tout moment par le commerçant.
GEThttps://digikart.fr/api/pos/ping
curl https://digikart.fr/api/pos/ping \
-H "Authorization: Bearer dk_live_..."
→ { "ok": true, "business": "Bar Bichette", "mode": "points", "pointsRate": 1 }
mode vaut "stamps" (tampons : 1 passage = 1 tampon) ou
"points" (points calculés à partir du montant du ticket).
POSThttps://digikart.fr/api/pos/transaction
| Champ | Type | Description |
|---|---|---|
card | string* | L'identifiant de la carte du client : le contenu du code-barres / QR affiché
sur sa carte Wallet (un numéro de série, ou une URL /c/<serial>,
les deux sont acceptés). |
phone | string* | Alternative au scan : le numéro de téléphone renseigné par le client à
l'installation de sa carte (utile pour les caisses et bornes sans lecteur 2D).
Formats tolérés : 06 12 34 56 78 ou +33612345678.
* card ou phone : l'un des deux est requis. |
amount | number | Montant du ticket en euros. Requis si le commerce est en mode points (c'est lui qui détermine les points). Optionnel en mode tampons (enregistré pour les statistiques du commerçant). |
transaction_id | string | Identifiant unique du ticket côté caisse. Fortement recommandé : il garantit l'idempotence (voir §4). |
curl -X POST https://digikart.fr/api/pos/transaction \
-H "Authorization: Bearer dk_live_..." \
-H "Content-Type: application/json" \
-d '{ "card": "A1B2C3D4E5", "amount": 23.80, "transaction_id": "TICKET-20260715-0042" }'
→ {
"ok": true, "mode": "points",
"serial": "A1B2C3D4E5", "name": "Marie D.",
"stamps": 61, // solde de points après crédit
"pointsAdded": 24, // arrondi de 23,80 € × taux du commerce
"rewardUnlocked": false,
"claimable": null // ou { threshold, reward } si un palier est atteint
}
curl -X POST https://digikart.fr/api/pos/transaction \
-H "Authorization: Bearer dk_live_..." \
-H "Content-Type: application/json" \
-d '{ "card": "A1B2C3D4E5", "transaction_id": "TICKET-20260715-0043" }'
→ { "ok": true, "mode": "stamps", "stamps": 7, "stampsRequired": 10, "rewardUnlocked": false }
Dès la réponse, la carte Wallet du client est mise à jour sur son téléphone (push Apple / API Google) : rien d'autre à faire côté caisse.
Si une transaction portant un transaction_id déjà traité est renvoyée
(nouvelle tentative réseau, webhook rejoué), Digikart ne crédite pas une seconde fois :
la réponse d'origine est renvoyée, complétée de "duplicate": true.
Utilisez l'identifiant de ticket de votre caisse, stable entre deux tentatives.
| HTTP | code | Signification |
|---|---|---|
| 400 | invalid_request | Corps de requête invalide. |
| 400 | amount_required | Le commerce est en mode points : amount est requis. |
| 401 | unauthorized | Clé absente, inconnue ou révoquée. |
| 402 | subscription_required | L'abonnement Digikart du commerce n'est pas actif. |
| 403 | wrong_merchant | La carte appartient à un autre commerce. |
| 404 | card_not_found / phone_not_found | Carte inconnue, ou aucun client avec ce numéro chez ce commerce. |
| 429 | too_soon / rate_limited | Doublon rapproché sans transaction_id, ou plus de 120 requêtes/minute. |
En cas d'erreur, aucune écriture n'a lieu : la transaction peut être renvoyée sans risque.
POST /api/pos/transaction avec la carte,
le montant et l'identifiant du ticket.Éditeur de caisse, intégrateur, middleware (HubRise, etc.) : écrivez-nous à contact@digikart.fr : nous accompagnons volontiers les intégrations.