# Tutorial: Receiving an "Message Level Response" from the receiver v1-beta

Once a document has been successfully delivered to the receiver access point, you can receive a webhook with topic MessageLevelStatusReceived. This event contains the Peppol Message Level Status (MLS) returned by the receiver side and can be used to track whether the message was accepted or rejected.

# Prerequisite

  • A document has been sent successfully.
  • The receiver supports sending an MLS.

# Step 1: Register hook

Register a hook for the topic MessageLevelStatusReceived.

Webhook example:

{
   "id": "mls",
   "name": "mls received webhook",
   "action": "https://webhook.site/aaaaaa#secureKey",
   "topics": [
     "MessageLevelStatusReceived"
   ],
   "isActive": true
}

# Step 2: Enable MLS

To receive MLS messages, configure the Peppol hook with the mlsType parameter. Supported values are ALWAYS_SEND and FAILURE_ONLY.

This can be configured either on party level or on environment level. For example:

{
  "id": "peppol",
  "name": "peppol with MLS",
  "action": "peppol:?mlsType=ALWAYS_SEND",
  "topics": [
    "Send*"
  ],
  "isActive": true
}

Use ALWAYS_SEND if you want to receive an MLS for every supported message flow. Use FAILURE_ONLY if you only want an MLS when delivery fails on the receiver side.

# Step 3: Send document

Send a document through eConnect. If MLS is supported for that transaction, the processing result will indicate which mlsType can be applied.

# Step 4: Receive webhook

Wait for the receiver to return an MLS. When it is received, eConnect sends a webhook like this:

{
  "topic": "MessageLevelStatusReceived",
  "partyId": "NL:KVK:12345678",
  "hookId": "mls",
  "documentId": "615a914f-4a4d-4b3a-a258-828efb2817a6",
  "refToDocumentId": "d5e3bc34-96c8-4daf-b260-b7b182fa4760",
  "message": "'MessageLevelStatus' received. Status: 'Accept' Description: 'Document is accepted'.",
  "details": {
    "statusCode": "AP",
    "status": "Accept",
    "description": "Document is accepted",
    "id": "d5e3bc34-96c8-4daf-b260-b7b182fa4760@39wxve.econnect.eu",
    "sender": "SPIS:000052",
    "senderCountryCode": "NL",
    "receiver": "SPIS:000052",
    "senderName": "-",
    "receiverName": "-",
    "issueDate": "2026-03-11 22:43:17Z",
    "protocol": "As4",
    "returnedMessageId": "615a914f-4a4d-4b3a-a258-828efb2817a6@39wxve.econnect.eu",
    "accessPoint": "CN=PNL000052, OU=PEPPOL TEST AP, O=eConnect International B.V., C=NL",
    "documentTypeId": "urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2::ApplicationResponse##urn:peppol:edec:mls:1.0::2.1",
    "profileId": "urn:peppol:edec:mls",
    "messageId": "b4bd3776-d4b8-454f-889c-7465607c07bf@39wxve.econnect.eu",
    "refToMessageId": "d5e3bc34-96c8-4daf-b260-b7b182fa4760@39wxve.econnect.eu"
  },
  "createdOn": "2026-03-11T22:43:18.2766651+00:00",
  "sentOn": "2026-03-11T22:43:18.8225397+00:00"
}

Useful fields in this webhook are:

Field Description
documentId Unique identifier of the received MLS message
refToDocumentId Identifier of the original document this MLS refers to
message Short summary of the received status
details.statusCode Peppol status code, for example AP for accepted
details.status Human-readable status, for example Accept
details.description Additional explanation returned by the receiver side

The hook contains all necessary information to process the response. However you could also download the received MLS using GET /api/v1-beta/{partyId}/generic/{documentId}/download.

For more background on MLS, see the Peppol MLS specification (opens new window).

# See also

© 2026 eConnect International B.V.