Connecter PeppolKit par l'API

Votre boutique tourne sur votre propre système, ou sur une plateforme pour laquelle nous n'avons pas d'extension ? Envoyez chaque commande payée à l'API. PeppolKit établit la facture, l'envoie par e-mail à votre client et la transmet via Peppol.

Commencer gratuitement Comment ça marche

Ce qu'il vous faut

Comment appeler l'API

Tous les appels vont vers https://app.peppolkit.com/api/v1, en https, avec votre clé dans l'en-tête Authorization. Vous envoyez et recevez du JSON. Un premier test :

curl https://app.peppolkit.com/api/v1/settings \
  -H "Authorization: Bearer pk_your_key"

En cas d'erreur, vous recevez un code et un champ error avec la raison :

Envoyer une commande

Envoyez une commande dès qu'elle est payée, avec POST /orders. La structure est celle d'une commande Shopify, pour que le code et les exemples existants soient réutilisables. Enregistrez ceci sous order.json :

{
  "id": 1042,
  "name": "#1042",
  "currency": "EUR",
  "taxes_included": true,
  "created_at": "2026-11-13T10:15:00+01:00",
  "email": "inkoop@klant.be",
  "billing_address": {
    "name": "An Peeters",
    "company": "Klant BV",
    "address1": "Kerkstraat 1",
    "zip": "9000",
    "city": "Gent",
    "country_code": "BE"
  },
  "line_items": [
    {
      "id": 1,
      "title": "Kettingset 11-speed",
      "sku": "KS-11",
      "quantity": 2,
      "price": "39.00",
      "tax_lines": [{ "rate": 0.21, "price": "13.54" }]
    }
  ],
  "shipping_lines": [
    { "title": "Verzending", "price": "6.95", "tax_lines": [{ "rate": 0.21, "price": "1.21" }] }
  ],
  "note_attributes": [{ "name": "VAT number", "value": "BE0123456749" }],
  "total_price": "84.95"
}

Et envoyez-le :

curl -X POST https://app.peppolkit.com/api/v1/orders \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d @order.json

Les champs

Les montants sont du texte avec un point comme séparateur décimal ("39.00"), jamais un nombre arrondi. Les champs que PeppolKit ne connaît pas sont ignorés.

La réponse contient la facture, avec des liens vers le pdf et le fichier UBL valables 30 jours. Le numéro de TVA de cet exemple n'existe pas ; si vous l'envoyez tel quel, warnings indique que VIES ne le connaît pas.

{
  "ok": true,
  "status": "issued",
  "warnings": [],
  "invoice": {
    "number": "2026-00042",
    "type": "invoice",
    "orderId": "1042",
    "issueDate": "2026-11-13",
    "total": 84.95,
    "currency": "EUR",
    "peppolStatus": "sent",
    "emailedAt": "2026-11-13T09:15:04.000Z",
    "emailTo": "inkoop@klant.be",
    "emailError": null,
    "pdfUrl": "https://app.peppolkit.com/i/…",
    "ublUrl": "https://app.peppolkit.com/i/…?format=xml",
    "warnings": []
  }
}

TVA et Peppol

PeppolKit détermine, à partir du pays du client, du numéro de TVA et de vos réglages, comment la facture est établie : TVA normale, autoliquidation ou OSS. Le numéro de TVA est vérifié dans VIES. Si le résultat diffère de ce que votre boutique a calculé, ou si le numéro n'est pas valide, vous le lisez dans warnings. Si votre client a une adresse Peppol et que l'envoi est activé, la facture part aussi via Peppol ; peppolStatus indique le résultat (sent, pending, not_on_peppol ou failed) ; si la facture n'est pas partie via Peppol, le champ est vide (null).

Envoyer un remboursement

Si vous remboursez un client, envoyez-le avec POST /refunds. PeppolKit établit une note de crédit liée à la facture de cette commande. line_item_id renvoie à l'id de la ligne dans la commande ; le montant remboursé figure dans transactions.

curl -X POST https://app.peppolkit.com/api/v1/refunds \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "refund": {
      "id": 7001,
      "order_id": 1042,
      "created_at": "2026-11-20T14:00:00+01:00",
      "refund_line_items": [{ "line_item_id": 1, "quantity": 1 }],
      "transactions": [{ "kind": "refund", "status": "success", "amount": "39.00" }]
    }
  }'

Renvoyer le même id ne crée pas de deuxième note de crédit. S'il n'y a pas de facture pour la commande, vous recevez 404.

Récupérer les factures

Avec GET /invoices?orderId=…, vous recevez la facture et les notes de crédit d'une commande. Sans orderId, vous recevez les 50 derniers documents. Avec lang (nl, fr ou en), vous choisissez la langue des avertissements. La réponse est {"invoices": […]}, avec pour chaque document les mêmes champs que ci-dessus ; type vaut invoice ou credit_note.

curl "https://app.peppolkit.com/api/v1/invoices?orderId=1042&lang=en" \
  -H "Authorization: Bearer pk_your_key"

Les coordonnées de l'entreprise par l'API

Les réglages du tableau de bord peuvent aussi être lus (GET /settings) et écrits (PUT /settings) par l'API. Pratique si vous connectez plusieurs boutiques.

curl -X PUT https://app.peppolkit.com/api/v1/settings \
  -H "Authorization: Bearer pk_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Velo Atelier BV",
    "street": "Dorpsstraat 1",
    "postalCode": "9000",
    "city": "Gent",
    "country": "BE",
    "vatNumber": "BE0123456749",
    "registrationNumber": "0123456749",
    "email": "info@veloatelier.be",
    "language": "auto",
    "emailCustomers": true,
    "peppolSend": true
  }'

Tester d'abord

Vous voulez essayer sans que rien ne parte sur le vrai réseau Peppol ? Créez un deuxième compte avec une adresse qui se termine par .test, par exemple maboutique.test. Un tel compte établit de vraies factures et de vrais pdf, mais n'envoie jamais via Peppol. Désactivez aussi dans les réglages Envoyer automatiquement la facture au client par e-mail, ou utilisez votre propre adresse e-mail dans les commandes de test.

Questions fréquentes

Combien coûte l'API ?

Rien de plus. Vous utilisez la même formule que toute autre boutique : gratuit jusqu'à 20 factures par mois, puis à partir de 9 € par mois. Pour les boutiques belges, Peppol est inclus dans chaque formule.

Puis-je remplacer la clé plus tard ?

Oui, dans le tableau de bord sous API. L'ancienne clé cesse aussitôt de fonctionner, donc préparez d'abord la nouvelle dans votre système.

Que se passe-t-il si mon système envoie une commande deux fois ?

Rien en double. Une commande avec le même id ne reçoit qu'une facture, et un remboursement avec le même id qu'une note de crédit.

Ma boutique tourne sur une plateforme qui n'est pas dans la liste. Est-ce possible ?

Oui. L'API existe justement pour les plateformes sans extension PeppolKit. Votre développeur transmet chaque commande payée ; le reste suit automatiquement. Pour Magento 2, il existe un module : voir Installer PeppolKit dans Magento 2.

Laissez Peppol à PeppolKit.

Installez PeppolKit et vos clients professionnels reçoivent leur facture via Peppol, sans que vous ayez à gérer quoi que ce soit avec le réseau.

Choisir votre plateforme Commencez gratuitement avec 20 factures par mois.

Explication à titre d'orientation, pas un conseil fiscal.