Guide d'intégration API

API bexio : Le Guide Complet 2026 pour Indépendants Suisses

Connectez le logiciel de gestion le plus populaire de Suisse à pratiquement tous vos outils. Configuration OAuth 2.0, exemples de code et une alternative API de facturation plus simple en comparaison.

Illustration d'intégration API

Stop à la Saisie Manuelle.
Automatisez Tout.

Vous passez des heures à saisir manuellement des données entre vos outils. Votre logiciel de facturation ne communique pas avec votre CRM. Votre boutique en ligne nécessite de copier-coller les commandes dans la comptabilité. L'API bexio résout ce problème — connectant 40 000+ entreprises suisses à pratiquement n'importe quel autre outil.

5+ Heures par Semaine

Perdues en saisie manuelle
🔗

Outils Déconnectés

Des apps qui ne communiquent pas
📋

Copier-Coller Chaotique

Commandes saisies manuellement dans la comptabilité

Qu'est-ce que l'API bexio ?

Une API (Application Programming Interface) permet à différents logiciels d'échanger des données automatiquement. L'API bexio est une interface RESTful qui expose les fonctionnalités principales de bexio — contacts, factures, comptabilité, inventaire — aux applications externes.

Concrètement : Au lieu de créer manuellement une facture dans bexio après avoir terminé un projet, votre outil de gestion de projet peut déclencher la création automatique de factures. Au lieu de copier les coordonnées clients depuis votre boutique en ligne, les commandes arrivent directement dans bexio.

L'API utilise HTTPS et le format JSON, ce qui la rend compatible avec tout langage de programmation. bexio propose actuellement la version 3.0.0 de l'API.

Ce que vous pouvez automatiser

FonctionCapacité API
ContactsCréer, modifier, lister clients et fournisseurs
FacturesGénérer, envoyer, suivre le statut des paiements
CommandesCréer depuis des systèmes externes, mettre à jour le statut
ProduitsSynchroniser l'inventaire, mettre à jour les niveaux de stock
ComptabilitéRécupérer les comptes, enregistrer les transactions
ProjetsCréer, assigner, suivre le temps

Migration de l'authentification 2025

Si vous avez des intégrations API bexio existantes, lisez ceci d'abord.

bexio a désactivé idp.bexio.com le 31 mars 2025. Toutes les applications doivent utiliser le nouveau fournisseur d'identité :

Ancien : https://idp.bexio.com
Nouveau : https://auth.bexio.com/realms/bexio

Pour la plupart des applications, la migration nécessitait uniquement la mise à jour des URLs d'autorisation et de token. Si vous n'avez pas encore migré, votre intégration ne fonctionne plus.

Checklist de migration :

  1. Mettre à jour l'URL d'autorisation dans la configuration de votre app
  2. Mettre à jour l'URL du endpoint token
  3. Tester le flux OAuth complet
  4. Surveiller la page de statut bexio sur bexio-status.com pour les annonces

Automatisations Zapier populaires pour indépendants

  1. Shopify → bexio : Nouvelle commande crée une facture automatiquement
  2. Toggl → bexio : Entrées de temps synchronisées au projet
  3. HubSpot → bexio : Nouveau contact CRM crée un contact bexio
  4. Gmail → bexio : Pièce jointe email crée une entrée de dépense
Configuration Développeur

Démarrer avec l'API bexio

Tout ce qu'il faut savoir pour votre première intégration

Prérequis

  1. Compte bexio : Tout abonnement payant (Starter CHF 45/mois, Pro CHF 75/mois, Pro+ CHF 125/mois). L'accès API est inclus.
  2. Accès au Portail Développeur : Visitez le Portail Développeur bexio et connectez-vous avec vos identifiants bexio.

Créer vos identifiants API

  1. Naviguez vers "My Apps" dans le portail développeur
  2. Cliquez sur "Create New App"
  3. Définissez une URL de redirection (requise pour le flux OAuth)
  4. Sauvegardez votre Client ID et Client Secret immédiatement — vous ne reverrez plus le secret

Authentification en détail

bexio utilise OAuth 2.0, le standard de l'industrie pour l'autorisation API. Comprendre le système de double autorisation est crucial.

Deux niveaux d'autorisation

Niveau 1 : Scopes de l'application Quand les utilisateurs connectent votre app, ils accordent des permissions spécifiques (scopes). Ne demandez que ce dont vous avez besoin — les utilisateurs voient ces permissions sur l'écran de consentement.

Catégories de scopes disponibles :

  • contact_show, contact_edit — Gestion des contacts
  • kb_invoice_show, kb_invoice_edit — Accès aux factures
  • accounting_show — Lecture des données comptables
  • article_show, article_edit — Gestion des produits

Niveau 2 : Droits utilisateur Les requêtes API s'exécutent avec les permissions de l'utilisateur qui a autorisé la connexion. Si cet utilisateur n'a pas le droit de supprimer des factures dans bexio, votre API ne peut pas supprimer de factures non plus.

Flux OAuth 2.0

1. Votre app redirige l'utilisateur vers :
   https://auth.bexio.com/realms/bexio/protocol/openid-connect/auth
   ?client_id=YOUR_CLIENT_ID
   &redirect_uri=YOUR_REDIRECT_URL
   &response_type=code
   &scope=contact_show kb_invoice_edit

2. L'utilisateur se connecte et approuve les permissions

3. bexio redirige vers votre URL avec le code d'autorisation

4. Échangez le code contre des tokens à :
   https://auth.bexio.com/realms/bexio/protocol/openid-connect/token

5. Utilisez l'access token pour les requêtes API

Gestion des tokens :

  • Les access tokens ont une durée de vie courte (généralement 1 heure)
  • Les refresh tokens obtiennent de nouveaux access tokens sans interaction utilisateur
  • Stockez les refresh tokens de manière sécurisée et implémentez le rafraîchissement automatique
Exemples de code

API bexio en Python & JavaScript

Extraits de code prêts à l'emploi pour les cas d'utilisation les plus courants

Python

import requests

BASE_URL = "https://api.bexio.com/2.0"
ACCESS_TOKEN = "your_access_token"

headers = {
    "Authorization": f"Bearer {ACCESS_TOKEN}",
    "Accept": "application/json"
}

# Fetch all contacts
response = requests.get(f"{BASE_URL}/contact", headers=headers)
contacts = response.json()

for contact in contacts:
    print(f"{contact['id']}: {contact['name_1']}")

# Create new invoice
invoice_data = {
    "contact_id": 1,
    "title": "Project Work - January 2026",
    "positions": [
        {
            "type": "KbPositionCustom",
            "text": "Consulting Services",
            "unit_price": "150.00",
            "amount": "10"
        }
    ]
}

response = requests.post(
    f"{BASE_URL}/kb_invoice",
    headers=headers,
    json=invoice_data
)
print(response.json())

JavaScript (Node.js)

const axios = require('axios');

const BASE_URL = 'https://api.bexio.com/2.0';
const ACCESS_TOKEN = process.env.BEXIO_TOKEN;

const api = axios.create({
  baseURL: BASE_URL,
  headers: {
    'Authorization': `Bearer ${ACCESS_TOKEN}`,
    'Accept': 'application/json'
  }
});

// Fetch contacts
async function getContacts() {
  const response = await api.get('/contact');
  return response.data;
}

// Create contact
async function createContact(contactData) {
  const response = await api.post('/contact', {
    contact_type_id: 1, // 1 = Company, 2 = Person
    name_1: contactData.company,
    name_2: contactData.name,
    mail: contactData.email,
    country_id: 1 // Switzerland
  });
  return response.data;
}

getContacts().then(contacts => console.log(contacts));

Note : Des bibliothèques communautaires existent pour PHP et Python, mais elles ne couvrent qu'une partie des méthodes API. Pour une fonctionnalité complète, des appels HTTP directs peuvent être nécessaires.

Limitations de l'API bexio
& Solutions

Être transparent sur ce que l'API ne peut pas faire vous économise des heures de frustration. L'API bexio a des limitations — mais les connaître à l'avance vous aide à mieux planifier.

🔔

Pas de Webhooks Natifs

Utilisez le polling ou Zapier comme alternatives
🚦

Limites de Débit Non Documentées

Implémentez backoff et cache
🧪

Pas d'Environnement Sandbox

Testez avec des données réelles prudemment

Solutions pour l'absence de Webhooks

  • Polling : Vérifiez les changements périodiquement (toutes les 5-15 minutes)
  • Zapier : Utilise le polling mais gère l'infrastructure
  • Services webhook tiers : Certaines plateformes d'intégration offrent une fonctionnalité pseudo-webhook

Gérer les limites de débit

Basé sur l'expérience de la communauté :

  • Implémentez un backoff exponentiel sur les erreurs 429
  • Mettez en cache les réponses quand c'est possible
  • Groupez les requêtes quand l'API le supporte
  • Évitez une fréquence de polling excessive

Bibliothèques clientes limitées

Les SDK officiels n'existent pas. Les bibliothèques communautaires sont incomplètes. Pour les applications en production, attendez-vous à écrire du code personnalisé.

Alternative Plus Simple

Vous avez juste besoin de générer des factures suisses via API ?

L'API bexio est puissante mais complexe — OAuth 2.0, scopes, gestion des tokens, pas de sandbox. Si tout ce dont vous avez besoin est de générer des factures QR suisses par programmation, l'API de facturation Magic Heidi est une option considérablement plus simple. Une requête POST. Une clé API. Un PDF de facture avec code QR suisse en retour.

Liste de factures Magic Heidi

API de facturation Magic Heidi

L'API Magic Heidi Swiss Invoice QR Code est une API ouverte à endpoint unique pour générer des factures suisses professionnelles avec bulletins de versement QR. Pas d'OAuth, pas de rafraîchissement de tokens, pas de scopes — juste une clé API et une requête POST.

Comment ça fonctionne

  1. Envoyez une requête POST avec vos données de facture (expéditeur, client, lignes d'articles)
  2. Recevez une URL de téléchargement PDF valide 24 heures
  3. C'est tout — pas de flux OAuth, pas d'inscription au portail développeur

Exemple Python

import requests

response = requests.post(
    "https://europe-west6-magic-heidi.cloudfunctions.net/create_invoice_abstract_v1d",
    headers={"key": "your_api_key"},
    json={
        "user_details": {
            "name": "Muster GmbH",
            "address": "Bahnhofstrasse 1",
            "zip": "8001",
            "city": "Zurich",
            "iban": "CH93 0076 2011 6238 5295 7"
        },
        "customer_details": {
            "name": "Acme AG",
            "address": "Bundesplatz 3",
            "zip": "3011",
            "city": "Bern"
        },
        "invoice_items": [
            {
                "description": "Web Development",
                "quantity": 10,
                "unit_price": 150
            },
            {
                "description": "Design Review",
                "quantity": 3,
                "unit_price": 120
            }
        ],
        "language": "en",
        "currency": "CHF",
        "vat_enabled": true,
        "vat_percentage": 8.1,
        "vat_number": "CHE-123.456.789 MWST"
    }
)

data = response.json()
print(f"Download your invoice: {data['url']}")

Exemple JavaScript (Node.js)

const axios = require('axios');

const response = await axios.post(
  'https://europe-west6-magic-heidi.cloudfunctions.net/create_invoice_abstract_v1d',
  {
    user_details: {
      name: 'Muster GmbH',
      address: 'Bahnhofstrasse 1',
      zip: '8001',
      city: 'Zurich',
      iban: 'CH93 0076 2011 6238 5295 7'
    },
    customer_details: {
      name: 'Acme AG',
      address: 'Bundesplatz 3',
      zip: '3011',
      city: 'Bern'
    },
    invoice_items: [
      { description: 'Web Development', quantity: 10, unit_price: 150 },
      { description: 'Design Review', quantity: 3, unit_price: 120 }
    ],
    language: 'en',
    currency: 'CHF'
  },
  { headers: { key: 'your_api_key' } }
);

console.log(`Download your invoice: ${response.data.url}`);

Fonctionnalités clés

  • Factures QR suisses conformes aux standards de paiement suisses
  • Multilingue : anglais, allemand, français, italien
  • CHF et EUR pris en charge
  • Gestion de la TVA avec taux configurables et numéro de TVA
  • Logos personnalisés via URL
  • Mode QR uniquement pour générer seulement le bulletin de versement
  • Test gratuit sans clé API
  • Documentation ouverte sur GitHub
Comparaison

API bexio vs. API de facturation Magic Heidi

Choisissez le bon outil selon votre cas d'utilisation

FonctionnalitéAPI Magic HeidiAPI bexio
Cas d'utilisationGénération de facturesSuite métier complète
Authentification Simple clé APIFlux OAuth 2.0
ConfigurationClé API uniquementPortail développeur + app OAuth
Factures QR suisses Intégré Configuration manuelle
Sandbox / Test gratuit Oui Non
Contacts & CRM Non Oui
Comptabilité Non Oui
Coût minimumGratuit pour testerCHF 45/mois
FAQ

Questions Fréquentes

L'API bexio est-elle gratuite ?

Oui, l'accès API est inclus avec tous les plans bexio payants (à partir de CHF 45/mois).

Quels langages de programmation fonctionnent avec ces API ?

Tout langage capable de faire des requêtes HTTP — Python, JavaScript, PHP, C#, Ruby, Go, etc. L'API bexio et l'API Magic Heidi utilisent toutes deux le standard REST/JSON.

Puis-je utiliser l'API bexio sans coder ?

Oui. Zapier et Make.com offrent une automatisation no-code avec bexio.

bexio supporte-t-il les webhooks ?

Pas nativement. Utilisez le polling ou Zapier comme alternatives.

Quelle est la différence entre l'API bexio et l'API Magic Heidi ?

L'API bexio vous donne accès à une suite métier complète (contacts, comptabilité, factures, inventaire). L'API Magic Heidi se concentre sur une seule chose : générer des factures QR suisses avec un seul appel API. Si vous avez juste besoin de générer des factures par programmation, Magic Heidi est bien plus simple.

Puis-je tester l'API Magic Heidi gratuitement ?

Oui. Vous pouvez envoyer des requêtes sans clé API pour les tests. L'utilisation en production nécessite une clé API — contactez hello@magicheidi.ch.

Y a-t-il un environnement de test/sandbox bexio ?

Non. Vous devez tester avec des données réelles prudemment.

Besoin d'une Facturation Suisse Plus Simple ?

Magic Heidi gère les factures QR, les dépenses et la TVA — disponible sur toutes les plateformes. Utilisez l'app ou générez des factures via API.