What is BT-49 (Buyer Electronic Address)?
BT-49 is a field in the EN 16931 European e-invoicing standard that carries the buyer's electronic address. This address identifies the buyer within an electronic messaging network and is the primary field used to route the invoice to the buyer's system.
In the EN 16931 semantic model, BT-49 sits inside BG-8 (Buyer postal address group) at the party level and is defined as:
> Identifies the Buyer's electronic address to which the invoice is delivered.
BT-49 is mandatory in EN 16931 (cardinality 1..1). Every compliant European e-invoice must include the buyer's electronic address.
How BT-49 Works
Like its counterpart BT-34 (Seller Electronic Address), BT-49 consists of two parts:
1. The address value — the buyer's identifier within the chosen scheme (e.g., GLN, KvK number, Peppol participant ID)
2. The scheme identifier (BT-49-1) — a code from the Electronic Address Scheme (EAS) code list that declares the type of identifier
Validation rule BR-63 enforces that the scheme identifier must always be present. This is the buyer-side equivalent of BR-62 (which enforces the same for BT-34).
BT-49 and Invoice Routing
BT-49 is arguably the most operationally critical field on a Peppol invoice. Here's why:
When a seller sends an invoice via Peppol, the seller's Access Point uses the buyer's electronic address (BT-49) to:
1. Look up the SML (Service Metadata Locator) to find which SMP (Service Metadata Publisher) holds the buyer's registration
2. Query the SMP to discover the buyer's receiving Access Point and supported document types
3. Route the invoice to the buyer's Access Point using the AS4 messaging protocol
If BT-49 is missing, malformed, or doesn't match the buyer's registered Peppol Participant ID, the invoice cannot be delivered. The Access Point has no way to discover where to send it.
Common EAS Scheme Identifiers for Buyers
The EAS code must match the buyer's Peppol registration. If the buyer registered with their GLN (0088), the invoice must use schemeID="0088" with the correct GLN value.
XML Mapping
UBL Syntax
12345678
CII Syntax
12345678
Common Validation Errors
BR-63 is a fatal validation error. It fires when the schemeID attribute is missing from the buyer's EndpointID element. This is a mirror of BR-62 (for the seller) and is equally common in practice.
BT-49 vs. BT-46 (Buyer Identifier) vs. BT-10 (Buyer Reference)
Three buyer-related fields that developers commonly confuse:
All three may contain similar values in some contexts (e.g., a Leitweg-ID could appear in both BT-10 and BT-49 for German public-sector invoices), but they serve fundamentally different purposes: BT-49 routes the message, BT-46 identifies the party, and BT-10 references the transaction.
BT-49 and BT-34: The Electronic Address Pair
BT-34 and BT-49 form a complementary pair:
Both use the same EAS code list, the same XML structure, and the same validation pattern (BR-62 and BR-63 respectively). If you implement one correctly, the other follows the same pattern.
What ERP Developers Need to Know
1. BT-49 drives Peppol routing. This is the field that determines whether the invoice reaches the buyer. Get it wrong and the invoice bounces.
2. Always include the scheme identifier. BR-63 is non-negotiable. Every BT-49 value needs a schemeID attribute with a valid EAS code.
3. Validate against the buyer's Peppol registration. The BT-49 value + scheme must match what's registered in the SMP. Consider implementing a lookup against the Peppol Directory during invoice creation.
4. Store per-buyer. The electronic address is a property of the buyer entity. Store it in your customer master data alongside the EAS code, and populate both automatically on every invoice to that buyer.
5. Handle the Germany case. For German public-sector buyers, BT-49 typically uses scheme 0204 with the Leitweg-ID. This same value often appears in BT-10 as well. Your system should handle this dual-use pattern.
6. Watch for EAS code updates. The CEF EAS code list is updated periodically. New codes are added and some are deprecated. Keep your code list reference current to avoid rejection by updated Access Points.