Get Annuaire Info

Get Information of the Customer in the Annuaire.

Status at Billit : coming soon. First use is for France.

E-invoicing address lookup

Command:

POST /v1/identifiers/lookup

What it does

  • A company can have several e-invoicing addresses, and only one can be used per invoice. In France, one SIREN can have many active routing addresses (CTCs) on l'Annuaire de la facturation électronique.
  • This endpoint returns all active e-invoicing addresses of a company, so your senders can pick the right one. Each returned address can be used as-is as a customer identifier when you create an invoice.

Supported lookups

CountryCodeIdentifierTypeReturns
FRSIRENAll active CTCs of the company based on the Siren number
FRSIRETThe active CTCs of that establishment (Siret), plus the company-level CTCs (Siren)

API-Request

Example of the Request body :

FieldRequiredInfo
CountryCodeYesISO 3166 alpha-2 country code. Case does not matter.
IdentifierTypeYesSIREN or SIRET for France. Case does not matter.
IdentifierYesSpaces are allowed, e.g. 123 456 782. Other separators such as dots or dashes are not, so send digits only.

Example of body:

{
  "CountryCode": "FR",
  "IdentifierType": "SIREN",
  "Identifier": "123456782"
}

Graphical View in Postman: (production environment)


API-Response Example

Example of a Response:

{
  "CountryCode": "FR",
  "IdentifierType": "SIREN",
  "Identifier": "123456782",
  "Completeness": "Complete",
  "Addresses": [
    {
      "IdentifierType": "CTC",
      "Identifier": "123456782",
      "SchemeId": "0225",
      "Label": null,
      "DiscoveryMethod": "NationalDirectory",
      "Details": { "AddressLevel": "SIREN", "Siren": "123456782" }
    },
    {
      "IdentifierType": "CTC",
      "Identifier": "123456782_12345678200013_ACHATS",
      "SchemeId": "0225",
      "Label": null,
      "DiscoveryMethod": "NationalDirectory",
      "Details": { "AddressLevel": "SIRET_ROUTINGCODE", "Siren": "123456782", "Siret": "12345678200013" }
    }
  ]
}

Information about the content on header level (excluding adresses) :

FieldInfo
CountryCode, IdentifierType, IdentifierYour input, cleaned up: country code in upper case, identifier type in its standard spelling (e.g. siren becomes SIREN), spaces removed from the identifier.
CompletenessComplete: the source is an official register, so these are all active addresses. Partial: the source is best effort and addresses may be missing. France is always Complete.
AddressesAlways a list, also with one result. An empty list means no active address is registered.

Information about the Addresses:

IdentifierTypeIdentifier type to use on the customer. France: CTC.
IdentifierThe address itself. France: the CTC.
SchemeIdPeppol EAS code. France: 0225.
LabelName of the address (routing code). Always present, currently always null (will be updated)
DiscoveryMethodHow the address was found. France: NationalDirectory.
DetailsOptional, country specific information. May be missing for other countries.

Extra Information for Country France:

AddressLevelSIREN, SIRET, SIRET_ROUTINGCODE or SIREN_SUFFIX
SirenAlways filled
SiretOnly for SIRET and SIRET_ROUTINGCODE

Content examples for the identifier for France:

CTC formatIdentifer Result Example
SIRENSIREN123456782
SIRETSIREN_SIRET123456782_12345678200013
SIRET_ROUTINGCODESIREN_SIRET_ROUTINGCODE123456782_12345678200013_ACHATS
SIREN_SUFFIXSIREN_SUFFIX123456782_FACTURES

Errors

400Invalid request bodyNo or unreadable JSON body
400_0_IsRequiredCountryCode is missing, or for a supported country IdentifierType or Identifier is missing (one error per field)
400IdentifierLookupForCountry_0_IsNotSupportedThe country is not supported (checked before the other fields)
400IdentifierLookupFor_0_And_1_IsNotSupportedThe country is supported, but not this identifier type
400_0_IsNoValidSirenOrSiretFrance: not a valid SIREN (9 digits) or SIRET (14 digits), or the value does not match the identifier type (e.g. a SIRET sent as SIREN)
401ApiKeyNotValidMissing or invalid API key
502TheIdentifierLookupIsUnavailableThe identifier lookup is temporarily unavailable. Please retry later.

When nothing is found in Annuaire

A company without active addresses is not an error: you get HTTP 200 with "Addresses": [].

You will not be able to send in invoice. Check with your customer on the progress.

Good to know

  • Caching: lookup results are cached for 1 hour per company (SIREN). A SIREN and a SIRET of the same company share the cached result. Calling again within that hour returns the same addresses, so there is no need to call the lookup more often.
  • Coming soon: labels. Label will be filled with the name of the routing code (e.g. "Achats Lyon") for SIRET_ROUTINGCODE addresses. For the other levels it stays null, which means the address has no label. No change is needed on your side.

Did this page help you?