GoLynk Documentation
golynk.ch

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

ProviderMéthodeWebhook temps réel
StripeClé API restreinte (Restricted Key)Oui (signature Stripe-Signature)
PayPalClient ID + Secret (REST API)Oui (signature PAYPAL-TRANSMISSION-SIG)
Wise (TransferWise)API Token personnelOui (HMAC-SHA256)
Revolut BusinessClé API + ID compteOui (HMAC-SHA256)
Yuh, Neon, ZakImport 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, colonne secret_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

Ouvrez freelance.golynk.ch/API/bank puis cliquez « Lier un compte ».
Acceptez les CGU bancaires (signature + hash stockés pour preuve légale).
Choisissez le provider puis collez les clés API fournies par celui-ci.
Optionnel : copiez l'URL webhook affichée par GoLynk et collez-la dans le dashboard du provider, puis enregistrez le secret webhook renvoyé.
GoLynk lance une synchronisation initiale. Les écritures sont créées selon votre plan comptable.
Les transactions importées alimentent la table 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)

Allez dans Paramètres → Intégrations → Email sortant (SMTP).
Activez le toggle SMTP actif.
Renseignez les paramètres de votre fournisseur (hôte, port, utilisateur, mot de passe, nom expéditeur).
Cliquez sur Tester la connexion — GoLynk envoie un email de test et confirme la connexion.
Cliquez sur Enregistrer. Les identifiants sont stockés chiffrés dans votre coffre-fort.

Paramètres requis

ChampExempleNote
Hôte SMTPsmtp.gmail.comAdresse du serveur SMTP de votre fournisseur
Port587587 (STARTTLS, recommandé) ou 465 (SSL implicite)
Utilisateurnoreply@votre-domaine.chAdresse email expéditeur (doit exister sur le serveur)
Mot de passeMot de passe d'application (Gmail, M365) ou mot de passe email habituel
Nom expéditeurMon EntrepriseAffiché comme expéditeur dans le client email du destinataire

Gmail / Google Workspace

Prérequis : La vérification en 2 étapes doit être activée sur votre compte Google.
Connectez-vous à myaccount.google.com, allez dans Sécurité.
Dans Connexion à Google, assurez-vous que la Vérification en 2 étapes est activée (obligatoire).
Toujours dans Sécurité, cliquez sur Mots de passe des applications. Sélectionnez Autre (nom personnalisé), tapez « GoLynk », puis cliquez sur Générer.
Copiez le mot de passe à 16 caractères affiché. Il n'est montré qu'une seule fois.
Dans GoLynk, utilisez les paramètres ci-dessous et collez ce mot de passe à 16 caractères dans le champ Mot de passe.
ParamètreValeur
Hôte SMTPsmtp.gmail.com
Port587 (STARTTLS)
Utilisateurvotre.email@gmail.com
Mot de passeMot de passe d'application (16 caractères sans espaces)

Microsoft 365 / Outlook

Microsoft 365 utilise SMTP AUTH. Assurez-vous que SMTP AUTH est activé pour l'utilisateur dans le Centre d'administration Microsoft 365 (Centre d'administration → Utilisateurs actifs → compte → Onglet Courrier → SMTP authentifié).
Allez dans Utilisateurs → Utilisateurs actifs, sélectionnez le compte email expéditeur.
Cliquez sur l'onglet Courrier, puis sur Gérer les applications de messagerie. Cochez SMTP authentifié et sauvegardez.
Dans GoLynk, configurez avec les paramètres ci-dessous. Le mot de passe est celui du compte Microsoft 365 (ou un mot de passe d'application si MFA est activé).
ParamètreValeur
Hôte SMTPsmtp.office365.com
Port587 (STARTTLS)
Utilisateurnoreply@votre-domaine.com
Mot de passeMot de passe du compte M365 (ou mot de passe d'application si MFA activé)

Infomaniak (Suisse)

Connectez-vous à votre Espace client Infomaniak.
Allez dans Hébergement web → Emails → Gérer les comptes email.
Créez ou sélectionnez un compte email (ex. noreply@votre-domaine.ch). Notez l'adresse email et le mot de passe associé.
Dans GoLynk, entrez les paramètres ci-dessous. L'utilisateur et le mot de passe sont ceux du compte email Infomaniak.
ParamètreValeur
Hôte SMTPmail.infomaniak.com
Port587 (STARTTLS)
Utilisateurnoreply@votre-domaine.ch
Mot de passeMot de passe du compte email Infomaniak

Hostpoint (Suisse)

Connectez-vous à votre interface Hostpoint.
Allez dans Email → Comptes email et créez ou sélectionnez un compte expéditeur.
Notez l'adresse email complète et le mot de passe du compte.
Dans GoLynk, configurez avec les paramètres ci-dessous.
ParamètreValeur
Hôte SMTPasmtp.mail.hostpoint.ch
Port587 (STARTTLS)
Utilisateurnoreply@votre-domaine.ch
Mot de passeMot de passe du compte email Hostpoint

SendGrid (Twilio)

Connectez-vous à app.sendgrid.com, allez dans Settings → API Keys.
Cliquez sur Create API Key. Choisissez Restricted Access, activez uniquement Mail Send. Nommez-la « GoLynk ».
Copiez la clé générée (commence par SG.) — elle n'est affichée qu'une fois.
Dans GoLynk, le Mot de passe est cette clé API SendGrid. L'utilisateur est toujours apikey (mot littéral).
ParamètreValeur
Hôte SMTPsmtp.sendgrid.net
Port587 (STARTTLS)
Utilisateurapikey (mot littéral, pas votre email)
Mot de passeVotre clé API SendGrid (commence par SG.)

Mailgun

Connectez-vous à app.mailgun.com, allez dans Sending → Domains.
Sélectionnez votre domaine, puis allez dans SMTP credentials.
Créez des identifiants SMTP pour GoLynk. Notez le login (format postmaster@votre-domaine.com) et générez un mot de passe.
Dans GoLynk, utilisez les paramètres ci-dessous.
ParamètreValeur
Hôte SMTPsmtp.mailgun.org
Port587 (STARTTLS)
Utilisateurpostmaster@votre-domaine.com
Mot de passeMot de passe SMTP Mailgun généré pour ce domaine
Les identifiants SMTP sont stockés chiffrés dans votre coffre-fort (AES-256-GCM). Ils ne sont jamais transmis en clair ni accessibles par l'équipe GoLynk.

Intégration Stripe

L'intégration Stripe permet à GoLynk de synchroniser automatiquement vos paiements et virements Stripe dans votre journal comptable.

Configuration

Dans votre tableau de bord Stripe, allez dans Développeurs → Clés API.
Copiez la clé restreinte (Restricted Key) avec les permissions : Charges (lecture), PaymentIntents (lecture), Payouts (lecture).
Dans GoLynk, allez dans Paramètres → Intégrations → Stripe.
Collez la clé dans le champ dédié. La clé est stockée chiffrée dans le coffre-fort (vault).
Cliquez sur Synchroniser pour importer les dernières transactions. GoLynk génère automatiquement les écritures correspondantes.

Ce que GoLynk synchronise

Événement StripeAction 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)
La synchronisation Stripe nécessite le plan Freelance Pro ou GDS Premium.

Intégration Revolut

GoLynk s'intègre avec l'API Revolut Business pour importer automatiquement vos transactions bancaires dans le journal comptable.

Configuration

Dans votre compte Revolut Business, accédez à Settings → API.
Créez un accès API avec les permissions : Accounts (lecture), Transactions (lecture).
Copiez le token d'accès permanent (Production access token).
Dans GoLynk : Paramètres → Intégrations → Revolut. Collez le token (stocké chiffré dans le vault).
Lancez une première synchronisation. GoLynk importe les 90 derniers jours de transactions.
GoLynk évite les doublons lors de synchronisations répétées en vérifiant l'identifiant unique de chaque transaction Revolut. Vous pouvez lancer la synchronisation aussi souvent que nécessaire.

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

ScopeDescription
invoices:readLire les factures
invoices:writeCréer et modifier des factures
clients:readLire les clients
clients:writeCréer et modifier des clients
expenses:readLire les dépenses
expenses:writeCréer et modifier des dépenses
accounting:readLire les écritures comptables
accounting:writeCréer des écritures
stats:readLire 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.

La clé 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.
Recommandation : rotation tous les 90 jours. Les clés expirées sont désactivées automatiquement.

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.

Le PIN du coffre-fort est indépendant de votre mot de passe GoLynk et du PIN employé (GDS). Notez-le en lieu sûr — sa perte est irréversible car les données chiffrées ne peuvent pas être récupérées sans lui.

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 :

TypeFormatContenu
Sauvegarde complèteJSONToutes vos données : clients, factures, écritures, produits, projets, etc.
FacturesPDF + CSVToutes les factures en PDF individuels + tableau récapitulatif CSV
Journal comptableCSVToutes les écritures avec filtres possibles
ClientsCSVListe complète des clients avec toutes les informations
ProduitsCSVCatalogue produits avec stocks actuels
Vos données vous appartiennent. GoLynk ne restreint jamais l'export de vos propres données, même en cas de résiliation du compte.

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énementDéclencheur
invoice.createdNouvelle facture créée
invoice.paidFacture marquée payée
invoice.cancelledFacture annulée
client.createdNouveau client créé
client.updatedClient modifié
expense.createdNouvelle dépense enregistrée
payment.receivedPaiement 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 :

HeaderContenu
Content-Typeapplication/json
User-AgentGoLynk-Webhooks/1.0
X-GoLynk-EventType d'événement (ex: invoice.paid)
X-GoLynk-TimestampUnix timestamp (secondes) du moment de l'envoi
X-GoLynk-Signaturesha256=<hex> — HMAC-SHA256 du secret sur "<timestamp>.<body>"
X-GoLynk-DeliveryUUID 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 OK dès que vous avez reçu le webhook, puis traitez-le en asynchrone pour éviter les timeouts.
  • Utilisez le header X-GoLynk-Delivery pour 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.
Le secret HMAC (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.