Peppol-bis-billing-3-malta-implementation

Maltese e-invoicing system

Peppol BIS Billing 3.0 for Maltese VAT invoices

The 8 fields that catch out Malta-based suppliers, the tax category code map for 18%/7%/5%/0% VAT, and the buyer-reference rules.

Peppol BIS Billing 3.0 is the European business interoperability specification that sits on top of EN16931 and defines exactly how a Maltese VAT invoice must look as structured XML. The trick is that BIS 3.0 was designed for the whole EU and uses generic field semantics — the Maltese specifics (the 0007:MT scheme identifier for VAT, the 18% standard rate, the 7% and 5% reduced rates, the 0% rate for exports and intra-EU supplies, and the Maltese-style supplier address blocks) all have to be encoded correctly or the recipient's AP will reject the invoice with a validation error. This guide covers the 8 fields that catch out Malta-based suppliers most often.

  • Supplier identifier: cbc:EndpointID schemeID='0007' value='MT12345678' (your Maltese VAT number).
  • Buyer identifier: same 0007:MT scheme for Maltese buyers, 0007:<country> for other EU buyers.
  • Tax category codes: S (standard 18%), AA (reduced 7%/5%), Z (zero-rated 0%), E (exempt), K (intra-EU 0%), AE (reverse charge).
  • Currency: EUR. Other currencies are technically allowed but trigger additional reporting on the Maltese VAT return.

How it works

You start from the EN16931 semantic data model: 50+ business terms covering supplier, customer, invoice lines, tax breakdown, payment terms and references. Peppol BIS 3.0 then maps these to UBL 2.1 XML and adds Peppol-specific rules: which fields are mandatory, which value lists are allowed, and which combinations are invalid.

For the supplier identifier (cac:AccountingSupplierParty/cac:Party/cbc:EndpointID), you use schemeID=0007 and the value is your Maltese VAT number in the form MT12345678. The same schemeID applies to other Maltese parties; non-Maltese buyers use their own country's schemeID (e.g. 9914 for AT, 0184 for DK).

For tax category codes (cbc:TaxCategoryID), you map Maltese VAT rates: S=standard 18%, AA=reduced (covers both 7% accommodation and 5% printed material), Z=zero-rated (exports outside EU, some food and pharmaceuticals), E=exempt without credit (financial services, insurance, education), K=intra-EU 0% with the customer's VAT number quoted, AE=reverse charge for cross-border services.

For Maltese-style addresses, the city goes in cbc:CityName, the postal code in cbc:PostalZone (Maltese format: 3 letters + 4 digits, e.g. SLM 1500), the street in cbc:StreetName, and the country identifier in cac:Country/cbc:IdentificationCode (MT). Don't put the full address in StreetName — Peppol validators will reject this.

For payment terms, use cbc:PaymentMeansCode with EN16931-compatible values: 30 (credit transfer / SEPA), 31 (debit transfer), 48 (bank card), 49 (direct debit), 58 (SEPA credit transfer). The cbc:PaymentDueDate is mandatory if not paid on issue.

Legal references

  • Peppol BIS Billing 3.0 specification, OpenPeppol AISBL.
  • EN 16931:2017 — Electronic invoicing — Semantic data model of the core elements of an electronic invoice.
  • VAT Act, Chapter 406, art. 56 — VAT rate codes and Eighth Schedule.

Frequently asked questions

What goes wrong most often with Maltese Peppol invoices?

The single most common rejection is sending the supplier VAT number without the MT prefix (writing 12345678 instead of MT12345678 in cbc:EndpointID). The next most common is mismatched tax category vs tax rate (e.g. category S with rate 7% — S is reserved for the standard 18%). Third is wrong country code in cac:Country/cbc:IdentificationCode (writing MLT or Malta instead of the ISO 3166-1 alpha-2 MT).

Can I send a Peppol invoice for an export outside the EU?

Yes — for exports (outside the EU), use tax category Z (zero-rated) with rate 0%, include cbc:ExemptionReason mentioning art. 13 of the VAT Act (export exemption), and quote the cbc:CustomsDeclarationReference if you have the customs export document. Peppol routing is technically possible even to non-EU buyers if they have an Access Point.

Is the buyer reference (cbc:BuyerReference) mandatory in Malta?

Peppol BIS 3.0 requires the buyer reference field to be present, but its content is buyer-defined: it's typically a purchase order number, contract reference or an internal cost-centre code that the buyer needs to route the invoice in their AP system. If the buyer hasn't given you a reference, you can put a sensible default like 'PO-not-provided' — leaving it empty triggers a validation error.

How do I encode the Maltese 7% accommodation VAT?

Use tax category code AA (Reduced rate) with cbc:Percent value of 7.00. Category AA covers both the 7% accommodation rate and the 5% reduced rate on printed material — the differentiator is the explicit rate percent, not a separate category code. The recipient AP and downstream accounting systems read the rate to apply the right tax line.

Do I need to include the IBAN for SEPA payment?

Yes — include cbc:PaymentMeansCode with value 30 or 58 (SEPA credit transfer), and inside cac:PayeeFinancialAccount put the IBAN in cbc:ID (e.g. MT84MALT011000012345MTLCAST001S) and the BIC in cac:FinancialInstitutionBranch/cac:FinancialInstitution/cbc:ID. Maltese IBANs are 31 characters long starting with MT.

See also

Need to automate your Maltese e-invoicing?

4invoices generates EN16931-compliant XML, routes through MITA or any commercial Peppol AP, and keeps the 6-year archive for CFR audits — 14 days free, no card.

Start free →