E-Directory Template
E-Directory Template
The e-directory template is a reserved system template that configures the connection to the PPF (Portail Public de Facturation) directory. This directory is used to check whether a recipient is reachable on a certified platform before submitting an invoice.
Directory lookup settings
| Property | Description | Example |
|---|---|---|
checkDirectory |
Y to enable directory lookup before sending; N to skip |
Y |
paApiBaseUrl |
Base URL of the directory API | https://api.myplatform.fr |
paApiLoginEndpoint |
Login endpoint (separate credentials from e-invoicing) |
/api/v1/auth/login |
paApiUsername |
Username for directory API authentication | dir_user |
paApiPassword |
Password for directory API authentication | mypassword |
paApiDirectoryEndpoint |
Directory lookup endpoint (literal {identifier} placeholder) |
/api/v1/utils/ppf-directory/routing-lines/{identifier} |
Separate credentials
The directory API uses its own TokenManager instance and credentials, independent of the e-invoicing template. This allows the directory and invoice APIs to be hosted on different platforms with different authentication.
How the lookup works
Before submitting an invoice, NomaUBL calls:
with {identifier} replaced by the recipient's SIRET or SIREN number extracted from the UBL XML.
Possible responses:
| Response | Meaning | Action |
|---|---|---|
{"platform": true} |
Recipient is reachable on a PA | Invoice is sent normally |
{"platform": false} |
Recipient is registered but not reachable | Warning logged, invoice sent anyway |
| HTTP 404 | Recipient not registered in PPF | Warning logged, invoice sent anyway |
| Network error | Directory API unreachable | Warning logged, invoice sent anyway |
Non-blocking check
The directory lookup never blocks the invoice submission. If the lookup fails for any reason (not found, network error, platform=false), NomaUBL logs a warning and proceeds with the submission. The error is also recorded in the lifecycle table (F564235).
Endpoint format
The paApiDirectoryEndpoint must contain the literal string {identifier}, which is replaced at runtime:
becomes: