# Mandates and Peppol electronic addresses

When you register a mandate, the API maps it to a **Peppol electronic address** — the identifier used to route invoices across the Peppol network. Understanding this mapping is essential to populating your XML invoices correctly.

## How the mapping works

All French entities are addressed using Peppol scheme **`0225`** (FRCTC), defined in AFNOR XP Z12-014 Annex A. The identifier value is derived from the mandate's directory entry fields, following the same four-tier structure as the French PPF/AIFE directory.

| Mandate type | Directory entry fields | Peppol electronic address |
|  --- | --- | --- |
| SIREN | `siren` | `0225:<siren>` |
| SIREN + suffix | `siren` + `suffix` | `0225:<siren>_<suffix>` |
| SIRET | `siren` + `siret` | `0225:<siret>` |
| SIRET + routing code | `siren` + `siret` + `routing_identifier` | `0225:<siret>_<routing_identifier>` |


### Examples

| Mandate directory entry | Peppol electronic address |
|  --- | --- |
| `siren: "884553033"` | `0225:884553033` |
| `siren: "884553033"`, `suffix: "Achats"` | `0225:884553033_Achats` |
| `siret: "88455303300017"` | `0225:88455303300017` |
| `siret: "88455303300017"`, `routing_identifier: "GLN-123"` | `0225:88455303300017_GLN-123` |


### Belgian entities

Belgian entities use scheme **`0208`** (VAT Registration Number), with the BCE number (10 digits, without the `BE` prefix):

| Directory entry | Peppol electronic address |
|  --- | --- |
| `siren: "0878065378"` (BE) | `0208:0878065378` |


## Mandate validation when submitting files

When you call `POST /invoicing/files/submit`, the API extracts the **sender's Peppol electronic address** from the invoice XML and checks it against the active mandates of the requesting client (`X-PDP-Client-Id`).

The check verifies that:

- The mandate belongs to the requesting client
- The mandate status is `CREATED` or `ACTIVE`
- `start_date` ≤ today ≤ `end_date` (or no `end_date`)


If no active mandate matches the sender address extracted from the invoice, the request is rejected with a `403` error.

This means **the electronic address you set in your invoice XML must exactly match the Peppol address derived from one of your active mandates**.

## Setting the electronic address in XML invoices

### UBL 2.1

In UBL, the electronic address is carried in the `EndpointID` element of both the supplier and customer party, with a `schemeID` attribute.

**Seller (BT-34) — `AccountingSupplierParty`:**


```xml
<cac:AccountingSupplierParty>
  <cac:Party>
    <cbc:EndpointID schemeID="0225">884553033</cbc:EndpointID>
    <!-- ... -->
  </cac:Party>
</cac:AccountingSupplierParty>
```

**Buyer (BT-49) — `AccountingCustomerParty`:**


```xml
<cac:AccountingCustomerParty>
  <cac:Party>
    <cbc:EndpointID schemeID="0225">88455303300017</cbc:EndpointID>
    <!-- ... -->
  </cac:Party>
</cac:AccountingCustomerParty>
```

For a SIREN + suffix mandate:


```xml
<cbc:EndpointID schemeID="0225">884553033_Achats</cbc:EndpointID>
```

For a Belgian entity:


```xml
<cbc:EndpointID schemeID="0208">0878065378</cbc:EndpointID>
```

### CII D22B (Cross Industry Invoice)

In CII, the electronic address is carried in `URIUniversalCommunication/URIID` inside the trade party elements.

**Seller — `SellerTradeParty`:**


```xml
<ram:SellerTradeParty>
  <ram:URIUniversalCommunication>
    <ram:URIID schemeID="0225">884553033</ram:URIID>
  </ram:URIUniversalCommunication>
  <!-- ... -->
</ram:SellerTradeParty>
```

**Buyer — `BuyerTradeParty`:**


```xml
<ram:BuyerTradeParty>
  <ram:URIUniversalCommunication>
    <ram:URIID schemeID="0225">88455303300017</ram:URIID>
  </ram:URIUniversalCommunication>
  <!-- ... -->
</ram:BuyerTradeParty>
```

Both elements are found under:


```
rsm:CrossIndustryInvoice
  > rsm:SupplyChainTradeTransaction
    > ram:ApplicableHeaderTradeAgreement
      > ram:SellerTradeParty / ram:BuyerTradeParty
        > ram:URIUniversalCommunication
          > ram:URIID
```

## Quick reference

| Mandate type | `schemeID` | Value format | XML element (UBL) | XML element (CII) |
|  --- | --- | --- | --- | --- |
| SIREN | `0225` | 9-digit SIREN | `cbc:EndpointID` | `ram:URIID` |
| SIREN + suffix | `0225` | `<SIREN>_<suffix>` | `cbc:EndpointID` | `ram:URIID` |
| SIRET | `0225` | 14-digit SIRET | `cbc:EndpointID` | `ram:URIID` |
| SIRET + routing code | `0225` | `<SIRET>_<routing_code>` | `cbc:EndpointID` | `ram:URIID` |
| Belgian BCE | `0208` | 10-digit BCE | `cbc:EndpointID` | `ram:URIID` |