Sovos Docs

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

EndpointProduct IDWhat it activatesWho needs it
Inboundfr_invoice_inbound_1.0Annuaire (Jurisdiction) + PeppolAll customers, required to receive invoices
Outboundfr_invoice_outbound_1.0Peppol onlyCustomers 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.

Important: You cannot change the address after you create the endpoint. To change it, remove the endpoint and create a new one.

Address format options

FormatWhen to use
SIRENDefault recommendation. Single legal entity with centralized accounts payable. Most private companies.
SIREN_SUFFIXECustomer needs multiple distinct inboxes, for example, separate channels for different business units, or a dedicated address for self-billing (auto-facturation).
SIREN_SIRETEstablishment-level routing. Primarily public sector entities. Not recommended for private companies unless there is a clear documented need.
SIREN_SIRET_CODEROUTAGESub-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.

Note: ERP System IDs live at the organization level and are shared across all companies within the organization.

Configure ERP System Communications in Network Services

  1. Go to Settings and select Organizations.
  2. Select the organization and click the ERP System Communications tab.
  3. Click Add communication.
  4. Select the ERP System ID for e-invoicing.
  5. Set Type to Invoice.
  6. Set Delivery method.
  7. Select the Plugin that matches the invoice format the customer's ERP expects.
    Note: The supported invoice format plugins for France during the pilot phase are SCI, UBL, CII, and Factur-X. Variations of each plugin appear in the UI.
  8. Click Add communication.
  9. Repeat steps 3 through 8 for Type: Lifecycle, using the same ERP System ID.

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.

Note: When you create an inbound endpoint, Sovos registers the address in both the Annuaire and the Peppol SMP within the same API call. This process is synchronous but can take up to 50 seconds. The endpoint creation request does not return a response until both registrations complete.

Create an inbound endpoint in Network Services

Two prerequisites must be met before creating an inbound endpoint.

  1. Go to Settings and select Companies.
  2. Select the company, open the context menu (gear icon), and click Network Settings.
  3. Click New endpoint.
  4. Select the fr_invoice_inbound_1.0 product.
  5. Select the ERP System ID from the dropdown.
    Note: If the ERP System ID dropdown is empty when creating an endpoint, return to Configure ERP System Communications in Compliance Network. Only ERP System IDs created manually in Compliance Network appear here. Auto-provisioned defaults are not synchronized to Compliance Network.
  6. In Endpoint components, enter the address fields for this endpoint.

    All four fields are visible (SIREN, SIRET, Code Routage, Suffix). Enter only what applies to the chosen address format. The SIREN value must match the company's registered tax ID. The system validates this on submission.

  7. Set the Validity period (Start date).

    Use at least the following day. In production, the start date must be tomorrow or later. Same-day dates are not accepted. Annuaire updates process nightly (J+1). The end date is optional.

  8. Under Supported documents, click the Invoices tab, click Add Subtype, and select Invoice and CreditNote.
  9. Click the Lifecycles tab, click Add Subtype, and select Lifecycle.
  10. Click Create.

After endpoint creation, a status indicator on the Peppol side confirms successful registration. If registration fails, an error message displays instead.

Important: If endpoint creation returns an error, check whether the address was already written to the French directory before retrying. Due to the multi-step registration process, it is possible for the Annuaire registration to succeed while the API returns an error. Creating a duplicate endpoint for an address already registered will result in a conflict error from the French directory.

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" }
]
Note: You cannot combine SIRET and SUFFIXE in the same address.

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

FieldFormatRequiredNotes
SIREN9 digitsYesMust match the company's registered tax ID, validated on submission
SIRET14 digitsNoRequired only for SIREN_SIRET address format
SUFFIXE_ADRESSAGEAlphanumeric, up to 100 charactersNoFree text. Choose a meaningful label (for example, ACHAT, PAIE)
CODE_ROUTAGEAlphanumeric, up to 100 charactersNoMust 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

Note: Outbound endpoint creation registers the address on Peppol only (no Annuaire registration). As with inbound, this registration is synchronous and may take up to 50 seconds.

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.

Note: After outbound endpoint creation, a status indicator confirms that Peppol registration was successful.

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)

  • supportedDocuments

  • erpSystemId

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.

  1. Remove the existing endpoint.

  2. 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.

Note: When you remove an inbound endpoint, Sovos automatically submits a removal entry to the Annuaire.

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.