Intégrations & Connexions externes
Configuration des intégrations GoLynk : email SMTP, paiements Stripe/Revolut, clés API et sauvegardes.
Sur cette page
Liaison bancaire
GoLynk se connecte à vos comptes de paiement et banques en ligne pour importer automatiquement les transactions et générer les écritures comptables correspondantes. La gestion se fait sur la page dédiée freelance.golynk.ch/API/bank.
Providers supportés
| Provider | Méthode | Webhook temps réel |
|---|---|---|
| Stripe | Clé API restreinte (Restricted Key) | Oui (signature Stripe-Signature) |
| PayPal | Client ID + Secret (REST API) | Oui (signature PAYPAL-TRANSMISSION-SIG) |
| Wise (TransferWise) | API Token personnel | Oui (HMAC-SHA256) |
| Revolut Business | Clé API + ID compte | Oui (HMAC-SHA256) |
| Yuh, Neon, Zak | Import CSV / MT940 (pas d'API publique) | Non |
Sécurité
- Toutes les clés API sont chiffrées AES-256-GCM côté serveur (table
integration_configs, colonnesecret_encrypted). - Les secrets ne sont jamais renvoyés au client après enregistrement.
- Les webhooks entrants vérifient la signature HMAC avant traitement (rejette les payloads non signés).
- RLS Postgres garantit qu'un user ne voit que ses propres intégrations.
- Rate limit par provider : max 1 sync/minute.
Configurer un provider
bank_transactions avec un champ source valant polling, webhook ou manual pour audit.Email sortant (SMTP)
GoLynk peut envoyer des emails (factures, rappels, notifications CRM) via votre propre serveur SMTP. Cela garantit que vos emails proviennent de votre domaine et passent les filtres anti-spam.
Étapes de configuration (toutes plateformes)
Paramètres requis
| Champ | Exemple | Note |
|---|---|---|
| Hôte SMTP | smtp.gmail.com | Adresse du serveur SMTP de votre fournisseur |
| Port | 587 | 587 (STARTTLS, recommandé) ou 465 (SSL implicite) |
| Utilisateur | noreply@votre-domaine.ch | Adresse email expéditeur (doit exister sur le serveur) |
| Mot de passe | — | Mot de passe d'application (Gmail, M365) ou mot de passe email habituel |
| Nom expéditeur | Mon Entreprise | Affiché comme expéditeur dans le client email du destinataire |
Gmail / Google Workspace
| Paramètre | Valeur |
|---|---|
| Hôte SMTP | smtp.gmail.com |
| Port | 587 (STARTTLS) |
| Utilisateur | votre.email@gmail.com |
| Mot de passe | Mot de passe d'application (16 caractères sans espaces) |
Microsoft 365 / Outlook
| Paramètre | Valeur |
|---|---|
| Hôte SMTP | smtp.office365.com |
| Port | 587 (STARTTLS) |
| Utilisateur | noreply@votre-domaine.com |
| Mot de passe | Mot de passe du compte M365 (ou mot de passe d'application si MFA activé) |
Infomaniak (Suisse)
noreply@votre-domaine.ch). Notez l'adresse email et le mot de passe associé.| Paramètre | Valeur |
|---|---|
| Hôte SMTP | mail.infomaniak.com |
| Port | 587 (STARTTLS) |
| Utilisateur | noreply@votre-domaine.ch |
| Mot de passe | Mot de passe du compte email Infomaniak |
Hostpoint (Suisse)
| Paramètre | Valeur |
|---|---|
| Hôte SMTP | asmtp.mail.hostpoint.ch |
| Port | 587 (STARTTLS) |
| Utilisateur | noreply@votre-domaine.ch |
| Mot de passe | Mot de passe du compte email Hostpoint |
SendGrid (Twilio)
SG.) — elle n'est affichée qu'une fois.apikey (mot littéral).| Paramètre | Valeur |
|---|---|
| Hôte SMTP | smtp.sendgrid.net |
| Port | 587 (STARTTLS) |
| Utilisateur | apikey (mot littéral, pas votre email) |
| Mot de passe | Votre clé API SendGrid (commence par SG.) |
Mailgun
postmaster@votre-domaine.com) et générez un mot de passe.| Paramètre | Valeur |
|---|---|
| Hôte SMTP | smtp.mailgun.org |
| Port | 587 (STARTTLS) |
| Utilisateur | postmaster@votre-domaine.com |
| Mot de passe | Mot de passe SMTP Mailgun généré pour ce domaine |
Intégration Stripe
L'intégration Stripe permet à GoLynk de synchroniser automatiquement vos paiements et virements Stripe dans votre journal comptable.
Configuration
Ce que GoLynk synchronise
| Événement Stripe | Action GoLynk |
|---|---|
| Paiement reçu | Écriture : Banque (D) / Client (C) + mise à jour statut facture → Payé |
| Virement vers banque | Écriture : Compte courant (D) / Stripe (C) |
| Remboursement | Écriture de contre-passation automatique |
| Frais Stripe | Écriture de charge (frais bancaires) |
Intégration Revolut
GoLynk s'intègre avec l'API Revolut Business pour importer automatiquement vos transactions bancaires dans le journal comptable.
Configuration
Clés API publiques
Permettez à vos applications tierces (Zapier, Make, scripts, site web…) d'accéder à vos données GoLynk via l'API REST. Gestion sur la page dédiée freelance.golynk.ch/API/api-key.
Format et sécurité
- Format :
gkl_<32-bytes-base64url>(~48 caractères) - Le secret n'est affiché qu'une seule fois à la création — seul le SHA-256 est stocké en base
- Chaque clé a son propre périmètre (scopes), expiration (max 365 jours) et rate limit (1-300 req/min)
- Révocation immédiate possible (irréversible)
- Acceptation des CGU API Développeurs obligatoire à la première utilisation
Scopes disponibles
| Scope | Description |
|---|---|
invoices:read | Lire les factures |
invoices:write | Créer et modifier des factures |
clients:read | Lire les clients |
clients:write | Créer et modifier des clients |
expenses:read | Lire les dépenses |
expenses:write | Créer et modifier des dépenses |
accounting:read | Lire les écritures comptables |
accounting:write | Créer des écritures |
stats:read | Lire les statistiques agrégées |
Authentification
Ajoutez la clé dans l'en-tête Authorization de chaque requête :
curl -H "Authorization: Bearer gkl_VotreCleICI" \
https://amvvcttroetnoznpdmxh.supabase.co/functions/v1/api-gateway/clients
Rate limiting
Chaque clé a un compteur glissant par minute. En cas de dépassement, la réponse retourne 429 Too Many Requests avec le header Retry-After. Le rate limit par défaut est de 30 req/min, configurable jusqu'à 300 à la création.
gkl_... n'est affichée qu'une seule fois lors de sa création. Stockez-la immédiatement dans un gestionnaire de secrets (1Password, Bitwarden, AWS Secrets Manager…). En cas de perte, révoquez l'ancienne et générez-en une nouvelle.Coffre-fort bancaire (Vault)
Le coffre-fort est un espace de stockage sécurisé pour vos identifiants bancaires et clés d'intégration sensibles (IBAN, clés Stripe, token Revolut). Il est protégé par un PIN à 4 chiffres distinct de votre mot de passe de connexion.
Fonctionnement
Les données du coffre-fort sont chiffrées avec AES-256-GCM côté serveur avec une clé dérivée de votre PIN. GoLynk ne stocke jamais le PIN en clair — seul le hash est conservé. Si vous perdez votre PIN de coffre-fort, les données chiffrées sont irrécupérables (par conception, pour la sécurité).
Accès
Accédez au coffre-fort depuis Paramètres → Coffre-fort. Saisissez votre PIN pour déverrouiller. La session de coffre-fort dure 15 minutes puis se reverrouille automatiquement.
Sauvegardes
GoLynk propose des exports complets de vos données pour vous permettre de les conserver localement ou de les migrer.
Export manuel
Depuis Paramètres → Sauvegardes, vous pouvez exporter :
| Type | Format | Contenu |
|---|---|---|
| Sauvegarde complète | JSON | Toutes vos données : clients, factures, écritures, produits, projets, etc. |
| Factures | PDF + CSV | Toutes les factures en PDF individuels + tableau récapitulatif CSV |
| Journal comptable | CSV | Toutes les écritures avec filtres possibles |
| Clients | CSV | Liste complète des clients avec toutes les informations |
| Produits | CSV | Catalogue produits avec stocks actuels |
Sauvegardes automatiques
GoLynk effectue des sauvegardes automatiques chiffrées de votre base de données (hébergée en Europe) avec une rétention de 30 jours. Ces sauvegardes sont gérées au niveau de l'infrastructure cloud et ne sont pas accessibles directement depuis l'interface utilisateur.
Webhooks sortants
GoLynk envoie une requête POST signée HMAC-SHA256 sur l'URL de votre choix à chaque événement (facture payée, client créé…). Gestion sur freelance.golynk.ch/API/webhook.
Événements disponibles
| Événement | Déclencheur |
|---|---|
invoice.created | Nouvelle facture créée |
invoice.paid | Facture marquée payée |
invoice.cancelled | Facture annulée |
client.created | Nouveau client créé |
client.updated | Client modifié |
expense.created | Nouvelle dépense enregistrée |
payment.received | Paiement reçu (bancaire ou Stripe) |
accounting.entry_created | Écriture comptable créée |
Format de la requête
Chaque webhook GoLynk envoie une requête HTTP avec ces headers :
| Header | Contenu |
|---|---|
Content-Type | application/json |
User-Agent | GoLynk-Webhooks/1.0 |
X-GoLynk-Event | Type d'événement (ex: invoice.paid) |
X-GoLynk-Timestamp | Unix timestamp (secondes) du moment de l'envoi |
X-GoLynk-Signature | sha256=<hex> — HMAC-SHA256 du secret sur "<timestamp>.<body>" |
X-GoLynk-Delivery | UUID unique de la livraison (pour idempotence) |
Vérifier la signature (obligatoire)
Ne traitez JAMAIS un webhook sans vérifier la signature. Exemple Node.js :
const crypto = require('crypto');
function verifyWebhook(req, secret) {
const ts = req.headers['x-golynk-timestamp'];
const sig = req.headers['x-golynk-signature']; // 'sha256=abc123...'
const body = req.rawBody; // Le body brut, pas parsé
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(ts + '.' + body)
.digest('hex');
if (!crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected))) {
throw new Error('Signature invalide');
}
// Tolérance anti-replay : rejeter si timestamp > 5 min
if (Math.abs(Date.now()/1000 - parseInt(ts)) > 300) {
throw new Error('Webhook trop ancien');
}
return true;
}
Exemple Python :
import hmac, hashlib, time
def verify_webhook(headers, body, secret):
ts = headers['x-golynk-timestamp']
sig = headers['x-golynk-signature'].replace('sha256=', '')
expected = hmac.new(secret.encode(), f"{ts}.{body}".encode(), hashlib.sha256).hexdigest()
if not hmac.compare_digest(sig, expected):
raise Exception('Signature invalide')
if abs(time.time() - int(ts)) > 300:
raise Exception('Webhook trop ancien')
return True
Retry et timeout
- Timeout : votre endpoint doit répondre en moins de 15 secondes.
- Succès : toute réponse HTTP 2xx. Sinon la livraison est considérée comme échouée.
- Retry exponentiel : 1 min → 5 min → 30 min → 2 h → 6 h. Après 5 tentatives, la livraison est abandonnée.
- Auto-désactivation : après 10 échecs consécutifs sur un endpoint, il est désactivé automatiquement (
disabled_reason = 'auto_disabled_after_10_failures'). Vous devez le réactiver manuellement.
Bonnes pratiques
- Répondez
200 OKdès que vous avez reçu le webhook, puis traitez-le en asynchrone pour éviter les timeouts. - Utilisez le header
X-GoLynk-Deliverypour l'idempotence : si vous recevez deux fois la même delivery ID, ignorez la seconde. - Loggez les signatures rejetées — cela révèle des tentatives de forge ou un secret compromis.
- Limite : maximum 10 endpoints actifs par compte.
whsec_...) n'est affiché qu'une seule fois à la création de l'endpoint. Stockez-le immédiatement. En cas de perte, supprimez l'endpoint et recréez-le.