E-Invoicing
The E-Invoicing editor tells NomaUBL how to talk to a Plateforme Agréée (PA) — the certified platform that receives, validates and dispatches e-invoices to the French e-invoicing public infrastructure. It also defines the local UBL transformation step (XSL directory) and the parameters of the lifecycle-status retrieval loop.
The page applies regardless of source system — JD Edwards, SAP, NetSuite or a custom ERP — once the source is mapped to UBL.
The PA configuration story is now consistent across e-invoicing, e-directory and e-reporting — every system template references a reusable api-connector instead of carrying inline auth and endpoints, and the legacy inline shape is gone (no fallback). The editor went from five tabs to four — the Mock / Testing tab was retired (point an api-connector at a Postman mock or a local stub when you need offline tests) and the Actions tab moved to a dedicated page under Management → Action Bindings. Send Mode migrated from PA Connection to FTP/SFTP where it logically belongs, and the Background Scheduling group disappeared (those intervals only ever did anything when set on the global template).
The editor has four tabs:
- UBL Validation — directory of XSL transforms used to convert the source XML into UBL.
- PA Connection — picks the api-connector that holds the PA's HTTP transport, plus per-task endpoint name overrides and connection-level parameters.
- FTP/SFTP — Send Mode toggle and the SFTP server credentials used when the toggle is set to
FTP. - Status — Status-retrieval cursor and hint that points to the polling intervals on
global.
Opening the editor
- Settings → e-invoicing template (the system-level resource).
- The default scope is the platform-wide
e-invoicingtemplate. Per-company overrides live one-invoicing-{kco}templates and follow the same shape; the runtime resolver looks at the per-company template first and falls back to the platform-wide one.
At a glance
Tab 1 — UBL Validation
This tab configures the directory of XSL files used to transform the source XML into UBL. The local UBL conformity check runs through standard schematrons and is documented separately on the Validate page.
| Field | Description |
|---|---|
| XSLT Directory | Directory containing the .xsl transform files used to convert the source XML into UBL. The placeholder %APP_HOME% expands to the NomaUBL install root. |
Tab 2 — PA Connection
API connector
The PA's HTTP transport — authentication flow, base URL, endpoints — lives in a reusable api-connector. This page references it by name only and never carries auth fields or HTTP endpoints inline. The bundled pa-default connector covers the standard flow; pick another one when the PA exposes a non-standard auth scheme or when several PAs need different connectors.
| Field | Description |
|---|---|
| Connector | Dropdown listing every api-connector template. The selected connector holds the PA's baseUrl, authType, credentials, token endpoint and the catalogue of HTTP endpoints. Edit the connector itself under API Connectors. |
Per-task endpoint overrides
Each PA task in NomaUBL has a default endpoint name. When the api-connector exposes a different name for the same task, set an override below. Leave a field blank to use the default name shown.
| Field | Default | Used by |
|---|---|---|
| Import | import | Submitting an invoice to the PA. |
| Import status | import-status | Polling whether the PA has accepted an import. |
| Invoice statuses | invoice-statuses | The lifecycle-status retrieval loop. |
| Resolve invoice | resolve-invoice | Looking up a PA-assigned identifier from a NomaUBL document key. |
| Post status | post-status | Pushing seller statuses (regulatory actions) back to the PA. |
| Report import | report-import | E-Reporting submission when the e-reporting template falls back to the e-invoicing connector. |
Connection
Connection-level parameters that apply to every call routed through the picked api-connector.
| Field | Default | Description |
|---|---|---|
| Timeout (ms) | 30000 | HTTP request timeout in milliseconds. Long-running calls are aborted past this. |
| SSL Verify | true | Whether to validate the PA's TLS certificate. Set to false only in non-production environments using self-signed certificates. |
Tab 3 — FTP/SFTP
Send Mode
| Field | Values | Description |
|---|---|---|
Send Mode (paMode) | API (default) / FTP / (empty) | Transport used to send invoices to the PA. API routes the submission through the api-connector picked on the previous tab; FTP spools the UBL to a temp file and uploads it via SFTP using the server below; (empty) skips outbound submission entirely (useful while wiring up a new document type). Status retrieval, import polling and seller actions always go through the API regardless of this choice. |
SFTP Server
The whole card is dimmed when Send Mode ≠ FTP — these fields only apply to the SFTP transport.
| Field | Description |
|---|---|
| Host | SFTP host (e.g. ftp.plateformeagree.fr). |
| Port | SFTP port. Default 22. |
| User | SFTP user. |
| Password | SFTP password. |
| Outbound Dir | Remote directory where NomaUBL drops UBL files for the PA (e.g. /out/invoices/). |
| Inbound Dir | Remote directory where the PA writes status updates that NomaUBL pulls back (e.g. /in/status/). |
Tab 4 — Status
The Status Retrieval section drives the lifecycle-status retrieval loop.
| Field | Default | Description |
|---|---|---|
| Page size | 100 | Number of statuses fetched per page when polling the PA. |
| Last retrieved at | (updated automatically) | ISO datetime of the most recent successful retrieval (e.g. 2025-01-01T00:00:00Z). Updated automatically after each retrieval run; manual edits act as a starting point — useful to re-replay a window. |
globalThe intervals that drive how often the background scheduler polls the PA — fetchImportInterval, fetchStatusInterval, e-reporting cadence — are read from the global template, under Scheduling. The Background Scheduling group on this page used to write those keys here, but the scheduler never read them from this template — the dead-write was retired in 2026.05.8. Edit the intervals on global → Scheduling and they apply across all companies.
Action bindings — moved
The Actions tab that used to live on this page in the previous version was retired in 2026.05.7 and the multi-call action bindings ship as their own page under Management → Action Bindings. The storage shape (action.N.id / .connector / .endpoint / .params on this template) is unchanged — only the editor moved. The new page handles the multi-call list, the per-call Stop on failure flag, and the response chaining via {call.N.fieldName} placeholders.
Tips & best practices
- Pick the api-connector first. Without a connector, the Per-task endpoint overrides fields stay hidden and the PA cannot be reached. The bundled
pa-defaultconnector is a reasonable starting point. - Leave the per-task overrides blank when the connector's endpoint names already match. A
pa-defaultconnector with an endpoint literally namedimportdoes not need an override on the Import row. The page only stores values that differ from the default — typing the default name is harmless but adds noise. - Start with
paMode=(empty) when first wiring up a new document type. The UBL pipeline runs end-to-end without involving the PA, so source mappings and Schematron failures surface before the network is in the loop. Flip toAPIonce the data side is clean. - Use SFTP only when the PA actually requires it. REST is simpler to debug, and the api-connector test runner gives clear feedback. SFTP is appropriate when the PA mandates file drop or for high-volume batch submissions.
- Edit polling intervals on
global → Scheduling, not here. The fields on this page were retired in 2026.05.8 because they had no effect. - Test against a Postman mock or a local stub when offline. The retired in-process mock was only useful before the api-connector refactor — point the api-connector at the mock URL instead.
- Per-company overrides go on
e-invoicing-{kco}. Copy the platform-widee-invoicingtemplate under the new name from Settings and edit only the fields that differ — typicallyconnector, a couple of endpoint overrides, or the SFTP credentials when company00070uses a separate PA.