SOGESTIO

Développeurs & agences web

L'API de SOGESTIO

Connectez votre site, votre boutique, votre application métier ou l'outil de votre client à SOGESTIO. Une API REST documentée, des clés d'API par société, des webhooks signés et les mêmes règles métier que l'application : numérotation, TVA, stock et comptabilité restent gérés par SOGESTIO.

Clés d'API par société

Le propriétaire ou un administrateur crée une clé dans Intégrations, en lecture seule ou en écriture, avec une date d'expiration. Elle s'envoie dans l'en-tête Authorization: Bearer. Une clé est révocable à tout moment et cesse de fonctionner si son créateur est désactivé.

Référence OpenAPI 3.1

Chaque route est décrite, avec ses schémas générés depuis les validations du serveur : la documentation ne peut pas diverger du comportement réel. Montants en centimes (entiers), dates ISO, erreurs avec un code stable.

Webhooks signés

Recevez un appel HTTP quand une facture est validée, un règlement enregistré ou un client créé. Chaque envoi est signé (HMAC-SHA256 avec horodatage) et relancé automatiquement pendant environ 72 heures en cas d'échec.

Idempotence

Envoyez un en-tête Idempotency-Key sur vos créations : si votre appel est rejoué (coupure réseau, nouvel essai), SOGESTIO renvoie le même résultat sans créer de doublon.

Cloisonnement et droits

Chaque clé n'accède qu'aux données de sa société. Les droits suivent le rôle choisi pour la clé. Les numéros légaux des factures sont attribués par le serveur à la validation, jamais par l'intégration.

Erreurs explicites

Chaque refus porte un code lisible par programme (par exemple invalid_input, amount_mismatch, period_locked) et, pour les saisies, le champ concerné. Pagination par page et pageSize (200 au maximum).

Exemples

Lister les clients, créer une facture depuis une commande de votre site, puis vérifier la signature d'un webhook côté serveur (PHP).

Lister les clients (curl)
curl https://sogestio.ma/api/customers?pageSize=50 \
  -H "Authorization: Bearer sgk_xxxxxxxxxxxx_votre_secret"
Créer une facture brouillon (Node.js)
const res = await fetch("https://sogestio.ma/api/invoices", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.SOGESTIO_API_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": order.id, // safe to retry: never creates a duplicate
  },
  body: JSON.stringify({
    kind: "invoice",
    customerId: "c_123",
    customerName: "Supérette Al Baraka",
    issueDate: "2026-10-07",
    currency: "MAD",
    lines: [{ label: "Terminal de caisse", quantity: 1, unitPriceHt: 490000, vatRate: 20 }],
  }),
});
const invoice = await res.json(); // amounts in centimes: 490000 = 4 900,00 DH
Vérifier un webhook (PHP)
$payload = file_get_contents('php://input');
$header  = $_SERVER['HTTP_X_SOGESTIO_SIGNATURE']; // "t=1760000000,v1=ab12…"
parse_str(str_replace(',', '&', $header), $sig);
$expected = hash_hmac('sha256', $sig['t'] . '.' . $payload, getenv('SOGESTIO_WEBHOOK_SECRET'));
if (!hash_equals($expected, $sig['v1']) || abs(time() - (int)$sig['t']) > 300) {
  http_response_code(400); exit;
}
$event = json_decode($payload, true); // $_SERVER['HTTP_X_SOGESTIO_EVENT'] = "invoice.validated"

Événements disponibles

Abonnez une URL HTTPS à un ou plusieurs événements depuis Intégrations. Le corps contient l'objet concerné ; l'en-tête X-Sogestio-Event indique son type.

  • invoice.validated
  • creditNote.validated
  • quote.validated
  • order.validated
  • delivery.validated
  • purchase.validated
  • payment.created
  • payment.deleted
  • customer.created

Questions fréquentes

L'API est-elle payante ?
Non. L'API et les webhooks sont inclus dans tous les packs (Starter, Pro, Groupe) sans supplément. Seules les fonctions de votre pack sont accessibles par l'API.
Comment tester sans risque ?
Créez un compte d'essai gratuit de 14 jours : c'est une société séparée où vous pouvez créer des clés, envoyer des factures de test et brancher vos webhooks. Les factures validées y restent numérotées comme en production.
Y a-t-il une limite d'appels ?
Oui, une limite de débit protège le service ; en cas de dépassement, l'API répond 429 et il suffit de réessayer un peu plus tard. Pour des volumes importants (synchronisation initiale), regroupez vos appels et utilisez l'import Excel/CSV.
Quelle différence entre lecture et écriture ?
Une clé en lecture peut seulement consulter. Une clé en écriture peut créer et modifier, dans la limite du rôle choisi pour la clé (par exemple comptable ou commercial).
Je suis une agence web : comment intégrer SOGESTIO pour un client ?
Votre client crée une clé d'API dans sa société et vous la transmet. Vous branchez son site ou sa boutique sur l'API et, si besoin, recevez ses événements par webhook. SOGESTIO reste le cœur de sa gestion : facturation légale, TVA, stock et comptabilité.
Les boutiques Shopify et WooCommerce ont-elles besoin de l'API ?
Non : SOGESTIO importe déjà automatiquement les commandes Shopify et WooCommerce. L'API sert pour tout le reste : sites sur mesure, applications métiers, outils de reporting.