Network and endpoint configuration
Configure network endpoints for a French e-invoicing customer to register the customer in the Annuaire and enable invoice exchange.
Before starting, complete account setup in Compliance Network, including creating an ERP System ID for e-invoicing. See Set up account for France.
What you are setting up and why
Sovos operates as a certified e-invoicing platform in France. When you onboard a customer, Sovos acts as their designated receiving platform and takes legal responsibility for registering the customer in the Annuaire.
The Annuaire
The Annuaire is the central directory of invoice recipients, managed by the French tax authority's public portal (PPF). When a supplier wants to send an invoice, their platform looks up the buyer's SIREN in the Annuaire to find which certified platform to route it through.
Every VAT-registered French company already exists in the Annuaire. Creating the inbound endpoint in Compliance Network claims the customer's Annuaire entry and activates them as a reachable invoice recipient.
Inbound compared to outbound
| Endpoint | Product ID | What it activates | Who needs it |
|---|---|---|---|
| Inbound | fr_invoice_inbound_1.0 | Annuaire (Jurisdiction) + Peppol | All customers, required to receive invoices |
| Outbound | fr_invoice_outbound_1.0 | Peppol only | Customers who also send invoices |
Choose the right address format
The customer's electronic invoicing address is the identifier that goes into the Annuaire and that their suppliers put on invoices to reach them. It comes from the code components you provide when creating the inbound endpoint.
Address format options
| Format | When to use |
|---|---|
SIREN | Default recommendation. Single legal entity with centralized accounts payable. Most private companies. |
SIREN_SUFFIXE | Customer needs multiple distinct inboxes, for example, separate channels for different business units, or a dedicated address for self-billing (auto-facturation). |
SIREN_SIRET | Establishment-level routing. Primarily public sector entities. Not recommended for private companies unless there is a clear documented need. |
SIREN_SIRET_CODEROUTAGE | Sub-establishment routing with service codes. Public sector only. |
Questions to ask the customer before proceeding
Does your accounts payable team handle invoices centrally, or do different sites or departments need separate invoice streams?
Do you self-bill (issue invoices on behalf of your suppliers)? If so, do you want a dedicated address for those, separate from purchase invoices?
Are you planning to use more than one invoicing platform? If yes, they need a separate address per platform. A single address can only be assigned to one platform at a time.
For most private sector customers, the answer to all three questions leads to SIREN. Recommend the SUFFIXE variant only when the customer has a clear, specific reason for multiple addresses.
ERP System Communications
ERP System Communication links an ERP System ID to the network and defines how documents are delivered to the customer's system. Configure it at the organization level before creating endpoints.
This step assumes an ERP System ID for e-invoicing already exists in Compliance Network. If not, complete that step first. See Set up account for France.
Each organization needs a minimum of two communications: One for invoice, and one for lifecycle. Both must use the same ERP System ID.
Configure ERP System Communications in Network Services
Invoice and lifecycle communications are configured for the organization. You can proceed to create endpoints.
Create the inbound endpoint
Creating the inbound endpoint registers the customer's address in the Annuaire and creates the Sovos configuration record that routes incoming invoices to the customer's ERP system.
Creating the inbound endpoint registers the customer's address in the Annuaire and creates the Sovos configuration record that routes incoming invoices to the customer's ERP system.
Create an inbound endpoint in Network Services
Two prerequisites must be met before creating an inbound endpoint.
ERP System Communications must be configured for this organization. See ERP System Communications.
The France e-invoicing product must be assigned to the company. See Set up account for France.
After endpoint creation, a status indicator on the Peppol side confirms successful registration. If registration fails, an error message displays instead.
Create an inbound endpoint through the API
Use the endpoint creation API to register the customer's inbound address in the Annuaire and on Peppol programmatically.
Request: SIREN-level address (most common)
POST https://api-test.sovos.com/v2/configurations/workspaces/organizations/{orgId}/companies/{companyId}/endpoints
curl --location --request POST \
'https://api-test.sovos.com/v2/configurations/workspaces/organizations/{orgId}/companies/{companyId}/endpoints' \
--header 'x-correlationId: SET-TO-UNIQUE-VALUE' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
"productId": "fr_invoice_inbound_1.0",
"validityPeriod": {
"start": "2026-09-02T00:00:00.0000000Z"
},
"codeComponents": [
{
"field": "SIREN",
"value": "123456789"
}
],
"supportedDocuments": [
{
"type": "Invoice",
"subTypes": ["Invoice", "CreditNote"]
},
{
"type": "Lifecycle",
"subTypes": ["Lifecycle"]
}
],
"erpSystemId": "YOUR_ERP_SYSTEM_ID"
}'
For a SIREN + SUFFIXE address, add a second entry to codeComponents.
"codeComponents": [
{ "field": "SIREN", "value": "123456789" },
{ "field": "SUFFIXE_ADRESSAGE", "value": "ACHAT" }
]
Successful response
{
"status": 201,
"message": "Created",
"success": true,
"data": {
"id": "345cef18-ae70-...-bd4c-d2c2795bfbbe",
"code": {
"value": "123456789",
"scheme": "0225"
},
"registeredDirectories": ["Jurisdiction", "Peppol"]
}
}
In the response, code.value is the customer's electronic invoicing address. This is what suppliers use to route invoices to them. The registeredDirectories array confirms which networks the endpoint is registered on. For inbound, both Jurisdiction and Peppol should be present.
codeComponents field reference
| Field | Format | Required | Notes |
|---|---|---|---|
SIREN | 9 digits | Yes | Must match the company's registered tax ID, validated on submission |
SIRET | 14 digits | No | Required only for SIREN_SIRET address format |
SUFFIXE_ADRESSAGE | Alphanumeric, up to 100 characters | No | Free text. Choose a meaningful label (for example, ACHAT, PAIE) |
CODE_ROUTAGE | Alphanumeric, up to 100 characters | No | Must be pre-configured in the Annuaire. Public sector use only. |
Start date is required and must be tomorrow or later in production (J+1). End date is optional. Leave blank for an open-ended endpoint.
Create the outbound endpoint
The outbound endpoint lets the customer send invoices and receive lifecycle status notifications back from their buyers' platforms. Unlike the inbound endpoint, it registers on Peppol only.
The outbound endpoint follows the same process as the inbound endpoint with a few differences. Create this endpoint for any customer who issues invoices, not just receives them.
Before you begin
ERP System Communications must be configured for this organization. See ERP System Communications.
The France e-invoicing product must be assigned to the company. See Set up account for France.
Create an outbound endpoint in Compliance Network
Follow the same steps as for the inbound endpoint with these differences.
Step 4: Select
fr_invoice_outbound_1.0.Step 7: Set the validity start date. Use at least the following day (J+1). Same-day dates are not accepted in production.
Step 8: Skip the Invoices tab. Outbound does not use Invoice or CreditNote subtypes.
Step 9: Configure lifecycles only.
Create an outbound endpoint through the API
The request follows the same structure as the inbound endpoint. Change only productId and supportedDocuments.
"productId": "fr_invoice_outbound_1.0",
"supportedDocuments": [
{
"type": "Lifecycle",
"subTypes": ["Lifecycle"]
}
]
Set validityPeriod.start to at least the following day. All other fields (codeComponents, erpSystemId, headers, and URL) are identical to the inbound request.
Successful response
{
"status": 201,
"message": "Created",
"success": true,
"data": {
"id": "789abc12-...",
"code": {
"value": "123456789",
"scheme": "0225"
},
"registeredDirectories": ["Peppol"]
}
}
Unlike the inbound response, registeredDirectories contains only Peppol. No Jurisdiction entry is expected or required for outbound.
Modify or remove an endpoint
After creation, you can update certain endpoint fields such as the validity period and supported documents. The address itself cannot be changed.
What you can update
After creation, you can update the following fields through Compliance Network or a PUT request.
validityPeriod(start and end dates)supportedDocumentserpSystemId
What you cannot change
The address (codeComponents) cannot be changed after creation. The API enforces this: the PUT request schema does not accept the codeComponents field. The start date in validityPeriod also cannot be changed once it has passed. You can only update it if it is still in the future.
If a customer's address needs to change, follow this process.
Remove the existing endpoint.
Create a new endpoint with the correct address.
To remove an endpoint through the API, send a DELETE request.
curl --location --request DELETE \
'https://api-test.sovos.com/v2/configurations/workspaces/organizations/{orgId}/companies/{companyId}/endpoints/{endpointId}' \
--header 'x-correlationId: SET-TO-UNIQUE-VALUE' \
--header 'Authorization: Bearer TOKEN'
A successful deletion returns 200 OK or 204 No Content. After deletion, the company can no longer receive documents through this endpoint.
Risk: the transition gap
Between the moment an inbound endpoint is removed and the moment a new one becomes active, the customer's address is either unregistered or pointing to an inactive entry in the Annuaire. Any supplier who looks up the customer during this window and tries to send an invoice may receive a routing error. Coordinate the removal and re-creation closely, and advise the customer to notify key suppliers of any expected downtime.
