Aller au contenu
Documentation
Français
Ouvrir l'application

Inscrire un dossier sur Peppol

Cas d'usage pas à pas pour vérifier les prérequis, inscrire un dossier sur le réseau Peppol par l'API, suivre son activation et régler la réception des documents.

NovaFisko inscrit un dossier sur le réseau Peppol par l'intermédiaire du point d'accès B2Brouter. Ce guide vérifie les prérequis, lance l'inscription, suit l'activation et règle les types de documents reçus. C'est le parcours de l'onglet Peppol de l'application.

Prérequis : un jeton avec les capacités read et write et le public_token du dossier.

Attention

L'inscription Peppol est un effet externe réel : le dossier devient joignable sur le réseau. Elle est bloquée dans le cabinet de démonstration (403, code demo_mode). Testez-la sur un vrai dossier.

Étape 1 : lire l'état et les prérequis

curl https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/peppol \
  -H "Authorization: Bearer $NOVAFISKO_TOKEN"
{
  "identity": null,
  "participant_id": "0208:0999900134",
  "status": "none",
  "account": null,
  "transport": null,
  "smp": {"published": false, "checked_at": null},
  "access_point": null,
  "supported_documents": [],
  "can_register": false,
  "blockers": ["L'adresse e-mail de contact est manquante."],
  "blocker_codes": ["email_missing"],
  "managed_by_novadesko": false,
  "registered_elsewhere": false,
  "external_provider": null,
  "provider_configured": true,
  "environment": "production",
  "contact": {"address": "Rue de Nimy 12", "postalcode": "7000", "city": "Mons", "province": null, "email": null, "phone": null},
  "last_error": null
}
Champ Description
status none, pending, active, inactive, error, external ou deleted
participant_id Identifiant Peppol calculé à partir du numéro d'entreprise ou de TVA
can_register true quand aucun blocage n'empêche l'inscription
blocker_codes Codes stables des blocages. blockers en donne le texte traduit
registered_elsewhere Le participant existe déjà chez un autre point d'accès
managed_by_novadesko L'inscription existante est gérée depuis Novadesko

Blocages possibles

Code Signification Correction
provider_not_configured Le point d'accès n'est pas configuré sur la plateforme Contacter le support
vat_number_missing Ni numéro de TVA ni numéro d'entreprise exploitable Compléter la fiche du dossier
address_missing Adresse incomplète Fournir address, postal_code, city
email_missing Pas d'adresse e-mail de contact Fournir email
managed_by_novadesko Déjà inscrit via Novadesko Rien à faire, la réception est déjà assurée
registered_elsewhere Déjà inscrit chez un autre fournisseur Voir Déjà enregistré ailleurs

Étape 2 : inscrire le dossier

Les champs envoyés complètent ou remplacent les coordonnées du dossier pour l'inscription.

curl -X POST https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/peppol/register \
  -H "Authorization: Bearer $NOVAFISKO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "factures@comptoir-montois.example",
    "phone": "+32 65 00 00 00",
    "address": "Rue de Nimy 12",
    "postal_code": "7000",
    "city": "Mons",
    "province": "Hainaut"
  }'
Champ Description
email Adresse de contact, 190 caractères max
phone Téléphone, 40 caractères max
address, postal_code, city, province Adresse du siège
options.round_before_sum, options.apply_taxes_per_line, options.registered_for_empl_tax Options de calcul du compte chez le point d'accès, booléens facultatifs

La réponse est 201 pour une nouvelle inscription, 200 si le dossier était déjà actif. Le corps a la même forme qu'à l'étape 1 :

{
  "identity": {
    "id": 57,
    "scheme": "iso6523-actorid-upis",
    "value": "0208:0999900134",
    "full_id": "iso6523-actorid-upis::0208:0999900134",
    "provider": "b2brouter",
    "status": "active",
    "incoming_enabled": true,
    "activated_at": "2026-10-05T09:02:11.000000Z"
  },
  "participant_id": "0208:0999900134",
  "status": "active",
  "account": {"id": "184223", "name": "Le Comptoir Montois SRL", "archived": false},
  "transport": {
    "enabled": true,
    "reception": true,
    "standard_documents": true,
    "invoice": true,
    "credit_note": true,
    "self_billing": false,
    "order": false,
    "application_response": false
  },
  "smp": {"published": true, "checked_at": "2026-10-05T09:02:14+00:00"},
  "access_point": {"smp_host": "smp.b2brouter.net", "provider_name": "B2Brouter", "endpoint_url": null, "technical_contact": null},
  "supported_documents": ["invoice", "credit_note"],
  "can_register": false,
  "blockers": ["Le dossier est déjà inscrit sur Peppol."],
  "blocker_codes": ["already_registered"],
  "registered_elsewhere": false,
  "provider_configured": true,
  "environment": "production",
  "last_error": null
}

La route est limitée à 6 appels par minute.

En cas de refus

Un refus renvoie 422 (ou le statut transmis par le fournisseur) avec les blocages et l'état courant :

{
  "message": "Le dossier ne peut pas être inscrit sur Peppol.",
  "errors": {"peppol": ["Le dossier ne peut pas être inscrit sur Peppol."]},
  "blockers": ["Ce numéro est déjà inscrit sur Peppol auprès d'un autre fournisseur."],
  "blocker_codes": ["registered_elsewhere"],
  "state": {"status": "external", "registered_elsewhere": true, "external_provider": "Autre point d'accès"}
}

Un problème côté point d'accès porte le code provider_error. Réessayez plus tard.

Étape 3 : suivre l'activation

La publication dans l'annuaire Peppol peut prendre quelques minutes. Forcez une vérification :

curl -X POST https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/peppol/refresh \
  -H "Authorization: Bearer $NOVAFISKO_TOKEN"

Le dossier est joignable quand status vaut active et smp.published vaut true. La route est limitée à 12 appels par minute.

Astuce

Plutôt que d'interroger refresh en boucle, abonnez un webhook à l'événement peppol.status_changed.

Étape 4 : régler la réception

curl -X PATCH https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/peppol/transport \
  -H "Authorization: Bearer $NOVAFISKO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"reception": true, "invoice": true, "credit_note": true, "self_billing": true}'
Option Rôle
enabled Transport Peppol actif
reception Réception des documents entrants
standard_documents Jeu standard de documents
invoice, credit_note Factures et notes de crédit
self_billing Autofacturation
order Commandes
application_response Réponses applicatives

N'envoyez que les options à modifier. Les autres restent inchangées. La liste complète des types de documents est disponible avec GET peppol/document-types.

Vérifier un partenaire

Pour savoir si un client ou un fournisseur est joignable sur Peppol :

curl "https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/peppol/lookup?vat=BE0999900233&country=BE" \
  -H "Authorization: Bearer $NOVAFISKO_TOKEN"

Vous pouvez aussi passer identifier=0208:0999900233. Pour un tiers du dossier, GET third-parties/{id}/peppol renvoie le statut mis en cache et ?refresh=1 force une nouvelle vérification.

Désinscrire le dossier

curl -X DELETE https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/peppol \
  -H "Authorization: Bearer $NOVAFISKO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"reason_type": "other", "custom_reason": "Changement de logiciel de facturation"}'

reason_type vaut expensive, accountant ou other. custom_reason est obligatoire avec other. La réponse renvoie une dernière fois l'identité avec le statut deleted.

Journal technique

GET peppol/logs?limit=50 renvoie les derniers échanges avec le point d'accès (méthode, URI, statut, durée, erreur), 200 au maximum. Utile pour diagnostiquer un provider_error.

Voir aussi