Central Directory (Annuaire)
The Annuaire is the centralized public registry managed by the French government (Portail Public de Facturation — PPF) that acts as the single source of truth for routing electronic invoices. Its primary role is to map every company operating in France to its chosen receiving platform (Plateforme Agréée), allowing sending platforms to correctly identify where an invoice must be transmitted.
Since private businesses cannot query the PPF Annuaire directly via API (the government only exposes a manual web browser interface), A-Cube bridges this gap by offering a dedicated endpoint to programmatically search the directory.
To guarantee maximum performance and avoid latency during invoice transmission, A-Cube maintains a synchronized local copy of the entire PPF Annuaire, updated every 24 hours. Every query goes through this local database.
Querying the Annuaire
GET /french-directory
Returns a paginated collection of directory entries matching the provided filters. At least one query parameter should be supplied to narrow results.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
siren | string | 9-digit national company identifier — exact match |
siret | string | 14-digit establishment identifier — exact match |
name | string | Company name — case-insensitive substring match (e.g. ?name=acube matches "ACUBE PARTNER SARL") |
page | int | Page number (default: 1) |
itemsPerPage | int | Items per page (default: 30) |
Response Object
Each item in the collection has the following structure:
| Field | Type | Description |
|---|---|---|
displayName | string | Company name as registered in the Annuaire |
countryCode | string | ISO 3166-1 alpha-2 country code (e.g. "FR") |
type | LEGAL_UNIT | OFFICE | null | Whether the entry represents a legal unit (SIREN level) or an office (SIRET level) |
siren | string | null | 9-digit SIREN number, if available |
siret | string | null | 14-digit SIRET number, if available |
networkIdentifiers | array | List of electronic routing identifiers registered on the Annuaire |
Each networkIdentifiers item:
| Field | Type | Description |
|---|---|---|
type | siren | siret | routing_code | suffix | Identifier type |
value | string | The electronic address used for invoice routing (e.g. "0225:324730001") |
validFrom | string | ISO 8601 date from which the identifier is valid (e.g. "2026-01-01") |
Example: Search by SIREN
GET /french-directory?siren=123456789
{
"hydra:member": [
{
"displayName": "ACUBE CLIENT SAS",
"countryCode": "FR",
"type": "LEGAL_UNIT",
"siren": "123456789",
"siret": null,
"networkIdentifiers": [
{
"type": "siren",
"value": "0225:123456789",
"validFrom": "2026-01-01"
},
{
"type": "suffix",
"value": "0225:123456789_freetext",
"validFrom": "2026-01-01"
}
]
}
],
"hydra:totalItems": 1
}
Example: Search by Company Name
GET /french-directory?name=acube
{
"hydra:member": [
{
"displayName": "ACUBE PARTNER SARL",
"countryCode": "FR",
"type": "LEGAL_UNIT",
"siren": "987654321",
"siret": null,
"networkIdentifiers": [
{
"type": "siren",
"value": "0225:987654321",
"validFrom": "2025-07-01"
}
]
}
],
"hydra:totalItems": 1
}
Errors
| Status | Cause |
|---|---|
503 Service Unavailable | The upstream French directory service is temporarily unavailable. Retry after a short delay. |
Usage in Invoice Issuance
Before sending an outbound invoice, use this endpoint to:
- Verify that the recipient has a valid and active entry in the Annuaire.
- Identify the correct network identifier to place in the invoice's receiver address field.
- Confirm that your invoice format is compatible with the receiver's registered identifiers.
The
networkIdentifiers[].valuefield (e.g."0225:987654321") is the electronic address that must be used in the invoice to ensure correct routing to the recipient's platform.