Skip to main content

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.

Refreshed in 2026.05.8

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:

  1. UBL Validation — directory of XSL transforms used to convert the source XML into UBL.
  2. PA Connection — picks the api-connector that holds the PA's HTTP transport, plus per-task endpoint name overrides and connection-level parameters.
  3. FTP/SFTP — Send Mode toggle and the SFTP server credentials used when the toggle is set to FTP.
  4. Status — Status-retrieval cursor and hint that points to the polling intervals on global.

Opening the editor

  • Settingse-invoicing template (the system-level resource).
  • The default scope is the platform-wide e-invoicing template. Per-company overrides live on e-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

UBL ValidationPA ConnectionFTP/SFTPStatusAPI connectorThe PA's HTTP transport — auth flow, base URL, endpoints — lives in a reusable api-connector.CONNECTORpa-default ▾edit under API ConnectorsPer-task endpoint overridesEndpoint name on pa-default for each PA task. Leave blank to use the default name shown.Import | importImport status | import-statusInvoice statuses | invoice-statusesResolve invoice | resolve-invoicePost status | post-statusReport import | report-importConnectionTIMEOUT (MS)30000SSL VERIFYtrue ▾FTP / SFTP tab — previewSEND MODEAPI ▾SFTP card dimmed when not FTPSFTP SERVERHost / Port / User / Password / Outbound / Inboundused when Send Mode = FTPReusable api-connectorno inline auth or endpoints herePer-task overridesmatch endpoint names on connectorTimeout + SSL verifyconnection-level onlypaMode = API / FTPempty = skip outbound send

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.

FieldDescription
XSLT DirectoryDirectory 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.

FieldDescription
ConnectorDropdown 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.

FieldDefaultUsed by
ImportimportSubmitting an invoice to the PA.
Import statusimport-statusPolling whether the PA has accepted an import.
Invoice statusesinvoice-statusesThe lifecycle-status retrieval loop.
Resolve invoiceresolve-invoiceLooking up a PA-assigned identifier from a NomaUBL document key.
Post statuspost-statusPushing seller statuses (regulatory actions) back to the PA.
Report importreport-importE-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.

FieldDefaultDescription
Timeout (ms)30000HTTP request timeout in milliseconds. Long-running calls are aborted past this.
SSL VerifytrueWhether 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

FieldValuesDescription
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 ModeFTP — these fields only apply to the SFTP transport.

FieldDescription
HostSFTP host (e.g. ftp.plateformeagree.fr).
PortSFTP port. Default 22.
UserSFTP user.
PasswordSFTP password.
Outbound DirRemote directory where NomaUBL drops UBL files for the PA (e.g. /out/invoices/).
Inbound DirRemote 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.

FieldDefaultDescription
Page size100Number 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.
Polling intervals live on global

The 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-default connector is a reasonable starting point.
  • Leave the per-task overrides blank when the connector's endpoint names already match. A pa-default connector with an endpoint literally named import does 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 to API once 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-wide e-invoicing template under the new name from Settings and edit only the fields that differ — typically connector, a couple of endpoint overrides, or the SFTP credentials when company 00070 uses a separate PA.