Naar de inhoud
Documentatie
Nederlands
De applicatie openen

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.

Let op

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.

Tip

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.

Zie ook