Peppol

Peppol MLR: the Message Level Response explained

The Peppol MLR (Message Level Response) decoded: what this acknowledgement does, its status codes, and how it differs from a transport acknowledgement.

By YouInv Team9 min read
Person organising invoices and receipts at a desk, illustrating the Peppol MLR (Message Level Response)

Key takeaways

  • The Peppol MLR (Message Level Response) is the acknowledgement through which the recipient reports on the technical validation of a received document.
  • It is expressed in the UBL ApplicationResponse 2.1 format and travels the Peppol network like an invoice or an order.
  • It carries three main statuses: acknowledgement (AB), accepted (AP) and rejected (RE), with a rejection required to state the reason.
  • The MLR is neither a transport acknowledgement nor a business response: it only concerns the message's compliance.

An invoice sent over Peppol does not vanish into an opaque pipe. The network provides a return path to tell the sender what became of its document on arrival: that is the role of the Peppol MLR, or Message Level Response. Understanding this message means knowing how to read what your software shows you after a send, and telling a plain "received" apart from a "validated" or a "rejected, here is why".

The topic becomes concrete with the B2B e-invoicing mandate in Belgium, in force since 1 January 2026: once invoices travel through Peppol, the acknowledgement stops being a technical detail and becomes the proof that the document arrived and passed the checks. This article describes what the MLR contains, what it does not say, and where it sits among the network's other returns.

What a Message Level Response is

The Message Level Response is a Peppol document in its own right. It is defined by the Peppol BIS Message Level Response 3.0 profile published by OpenPeppol, under transaction identifier Trdm071. Its function fits in one sentence: it lets the recipient of a business document report the result of its validations to the sender.

Technically, the MLR does not invent a format: it is built on the UBL ApplicationResponse 2.1 document, a standard XML structure designed precisely to carry a response to a received message. It travels the network like any other Peppol document, wrapped in an envelope and transmitted over the AS4 protocol between access points. The sender and recipient of the MLR are simply reversed compared with the original invoice: the party that received the invoice issues the MLR, and the party that sent it receives it.

The three levels of return on Peppol

The most common confusion mixes up three different returns that answer three distinct questions. The table below places them.

Three complementary returns: delivery, then compliance, then the decision on the merits.
Transport acknowledgementMLRBusiness response
Confirms delivery to the access point
Reports on the document's technical validation
Expresses a business decision (agreement, dispute)
Carried by a UBL ApplicationResponse document

The transport acknowledgement is produced by the AS4 protocol itself: it is the signed receipt confirming that one access point handed the message to the next. It says nothing about the content. The MLR sits one level up: the document has been opened, read and run through the validation rules. Finally, the business response, a separate document called the Invoice Response, carries a decision on the merits: is the invoice accepted for payment, disputed, tied to an expired contract? The MLR never deals with that dimension.

What an MLR carries: the status codes

The core of the MLR is its status code. The Peppol profile keeps three main codes, taken from a standardised code list, each answering a specific state of the processing.

The statuses of a Message Level Response

  • AB: acknowledgement

    The message has been received and identified, but not yet validated on the merits. A plain confirmation that it arrived.

  • AP: accepted

    The document passed validation with no fatal error. It complies with the UBL syntax and the Peppol rules.

  • RE: rejected

    The document contains one or more fatal errors that prevent processing. The reason for the rejection must then be given.

The rule on rejection is worth stressing: when an MLR returns the RE status, the error description is mandatory. The recipient cannot simply refuse; it must state what went wrong: an XML schema error, a Peppol rule not met, an incorrect document version. That is what makes a rejection actionable: the sender knows what to fix before resending.

Conversely, a mere warning does not cause a rejection on its own. The document stays accepted, with the warning flagged for information only. Only a fatal error flips the status to RE.

When the MLR comes into play

The MLR is not instantaneous: it belongs to the document's life cycle, after delivery and once the recipient has run its validation. The typical sequence is as follows.

  1. 1

    Issuing the invoice

    Step 1

    Your software produces the invoice in the Peppol BIS Billing 3.0 profile and hands it to your access point.

  2. 2

    Routing and transport acknowledgement

    Step 2

    The network routes the document to the recipient's access point; the AS4 protocol confirms delivery.

  3. 3

    Validation at the recipient

    Step 3

    The received document is checked: UBL syntax, Peppol rules, conformance consistency.

  4. 4

    Issuing the MLR

    Step 4

    The recipient returns a Message Level Response with the AB, AP or RE status, and the reason on a rejection.

This place in the chain explains why the MLR is useful even when everything goes well: it closes the loop. Without it, the sender only knows the document was delivered, not that it was accepted. With it, a rejection is caught early and fixed, instead of being discovered weeks later through a missing payment.

Send your Peppol invoices and track their acknowledgements without touching XML

YouInv generates your compliant invoices, sends them over the Peppol network and interprets the Message Level Responses for you, in plain terms.

What the MLR changes for your business

As with the rest of Peppol, you do not have to handle the MLR by hand. Compliant software generates the acknowledgement when you receive a document, sends it, and interprets the ones you receive. What you see is a readable result: invoice accepted, or rejected with the reason. The UBL ApplicationResponse file stays under the hood.

What matters, in practice, is picking a tool that handles this return, and not only the send. Software that ships invoices without being able to read a rejection MLR leaves you in the dark: you believe you have invoiced, when the document was refused over an error no one saw. The ability to receive, display and trace Message Level Responses is therefore a concrete criterion when choosing or upgrading your solution.

One shift is worth noting, finally: OpenPeppol has defined a Message Level Status (MLS), built on the same foundations as the MLR but broadened to also cover delivery towards the final recipient, and exchanged between service providers. It is the direction the network is moving in; the principle stays the same, reporting on the fate of a message, but the scope extends beyond conformance validation alone.

Further reading

The reference source prevails: the Peppol BIS Message Level Response 3.0 specification published by OpenPeppol.

What is the Peppol MLR (Message Level Response)?

The Message Level Response (MLR) is a Peppol document through which the recipient of an invoice or order tells the sender the result of the technical validation of the received message. It is an acknowledgement expressed in the UBL ApplicationResponse 2.1 format, carried over the Peppol network like any other document.

Which status codes can the MLR return?

The MLR mainly carries three codes: AB (acknowledgement, message received but not yet validated), AP (accepted, the document passed validation with no fatal error) and RE (rejected, the document contains fatal errors). On a rejection, the error description is mandatory.

Is the MLR the same as a transport acknowledgement?

No. The transport acknowledgement (the AS4 receipt) only confirms that the message reached the recipient's access point. The MLR goes further: it reports on the validation of the document's content, that is, its compliance with the UBL syntax and the Peppol rules.

Is the MLR a business response to the invoice?

No. The MLR does not say whether the invoice is accepted on the merits (agreement on the amount, dispute, expired contract). It reports only on technical and conformance validation. A response on the merits is a different document, the business response (Invoice Response).

Do I have to handle the MLR myself to invoice with Peppol?

No. Compliant invoicing software generates, sends and interprets MLRs for you through an access point. You see the result in a readable form (invoice accepted, or rejected with the reason), without reading the UBL ApplicationResponse file.

Back to blog

Related articles