Een dossier op Peppol registreren
Use case stap voor stap om de vereisten te controleren, een dossier via de API op het Peppol-netwerk te registreren, de activering op te volgen en de ontvangst van documenten in te stellen.
NovaFisko registreert een dossier op het Peppol-netwerk via het toegangspunt B2Brouter. Deze gids controleert de vereisten, start de registratie, volgt de activering op en stelt de ontvangen documenttypes in. Het is het traject van het tabblad Peppol van de applicatie.
Vereisten: een token met de bevoegdheden read en write en de public_token van het dossier.
De Peppol-registratie is een echt extern effect: het dossier wordt bereikbaar op het netwerk. Ze is geblokkeerd in het demokantoor (403, code demo_mode). Test ze op een echt dossier.
Stap 1: de status en de vereisten lezen
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
}
| Veld | Beschrijving |
|---|---|
status |
none, pending, active, inactive, error, external of deleted |
participant_id |
Peppol-identificator berekend op basis van het ondernemings- of btw-nummer |
can_register |
true wanneer geen enkele blokkering de registratie verhindert |
blocker_codes |
Stabiele codes van de blokkeringen. blockers geeft de vertaalde tekst ervan |
registered_elsewhere |
De deelnemer bestaat al bij een ander toegangspunt |
managed_by_novadesko |
De bestaande registratie wordt vanuit Novadesko beheerd |
Mogelijke blokkeringen
| Code | Betekenis | Oplossing |
|---|---|---|
provider_not_configured |
Het toegangspunt is niet geconfigureerd op het platform | De support contacteren |
vat_number_missing |
Geen bruikbaar btw-nummer of ondernemingsnummer | De fiche van het dossier aanvullen |
address_missing |
Onvolledig adres | address, postal_code, city opgeven |
email_missing |
Geen e-mailadres van de contactpersoon | email opgeven |
managed_by_novadesko |
Al geregistreerd via Novadesko | Niets te doen, de ontvangst is al verzekerd |
registered_elsewhere |
Al geregistreerd bij een andere provider | Zie Al elders geregistreerd |
Stap 2: het dossier registreren
De verstuurde velden vullen de contactgegevens van het dossier aan of vervangen ze voor de registratie.
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"
}'
| Veld | Beschrijving |
|---|---|
email |
Contactadres, max. 190 tekens |
phone |
Telefoon, max. 40 tekens |
address, postal_code, city, province |
Adres van de zetel |
options.round_before_sum, options.apply_taxes_per_line, options.registered_for_empl_tax |
Berekeningsopties van het account bij het toegangspunt, optionele booleans |
Het antwoord is 201 voor een nieuwe registratie, 200 als het dossier al actief was. De body heeft dezelfde vorm als in stap 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
}
De route is beperkt tot 6 aanroepen per minuut.
Bij een weigering
Een weigering geeft 422 terug (of de status die de provider heeft doorgegeven) met de blokkeringen en de huidige status:
{
"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"}
}
Een probleem aan de kant van het toegangspunt draagt de code provider_error. Probeer het later opnieuw.
Stap 3: de activering opvolgen
De publicatie in de Peppol-directory kan enkele minuten duren. Forceer een controle:
curl -X POST https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/peppol/refresh \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"
Het dossier is bereikbaar wanneer status de waarde active heeft en smp.published de waarde true. De route is beperkt tot 12 aanroepen per minuut.
Abonneer liever een webhook op de gebeurtenis peppol.status_changed dan refresh in een lus te bevragen.
Stap 4: de ontvangst instellen
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}'
| Optie | Rol |
|---|---|
enabled |
Peppol-transport actief |
reception |
Ontvangst van de inkomende documenten |
standard_documents |
Standaardset van documenten |
invoice, credit_note |
Facturen en creditnota's |
self_billing |
Self-billing |
order |
Bestellingen |
application_response |
Applicatieantwoorden |
Stuur alleen de opties die u wilt wijzigen. De andere blijven ongewijzigd. De volledige lijst van de documenttypes is beschikbaar met GET peppol/document-types.
Een partner controleren
Om te weten of een klant of een leverancier bereikbaar is op Peppol:
curl "https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/peppol/lookup?vat=BE0999900233&country=BE" \
-H "Authorization: Bearer $NOVAFISKO_TOKEN"
U kunt ook identifier=0208:0999900233 doorgeven. Voor een derde van het dossier geeft GET third-parties/{id}/peppol de gecachete status terug en forceert ?refresh=1 een nieuwe controle.
Het dossier uitschrijven
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 heeft de waarde expensive, accountant of other. custom_reason is verplicht bij other. Het antwoord geeft een laatste keer de identiteit terug met de status deleted.
Technisch logboek
GET peppol/logs?limit=50 geeft de laatste uitwisselingen met het toegangspunt terug (methode, URI, status, duur, fout), maximaal 200. Nuttig om een provider_error te diagnosticeren.