Send MLR response
Send a Message Level Response, also known as MLR, to acknowledge, accept, or reject an incoming Peppol invoice.
Endpoint
| Property | Value |
|---|---|
| URL | POST /peppol/send-mlr |
| Method | POST |
| Auth | R-Auth: <company-jwt> |
| Content-Type | application/json |
Example Request
curl --location '{{baseUrl}}/peppol/send-mlr' \
--header 'Content-Type: application/json' \
--header 'R-Auth: {{companyJwt}}' \
--data-raw '{
"companyId": "{{companyId}}",
"invoiceId": "{{invoiceId}}",
"responseCode": "ACCEPTANCE",
"note": null,
"errorLines": null
}'
Request body
{
"companyId": "<companyId>",
"invoiceId": "<invoiceId>",
"responseCode": "ACCEPTANCE",
"note": null,
"errorLines": null
}
Request fields
| Field | Type | Required | Description |
|---|---|---|---|
companyId | UUID | Yes | Buyer company UUID |
invoiceId | UUID | Yes | id from the Search documents response |
responseCode | string | Yes | ACCEPTANCE, ACKNOWLEDGING, or REJECTION |
note | string | No | Optional free-text note |
errorLines | array | No | Required only for REJECTION |
Response codes
| Value | Description |
|---|---|
ACCEPTANCE | Buyer accepts the invoice |
ACKNOWLEDGING | Buyer acknowledges receipt, decision pending |
REJECTION | Buyer rejects the invoice |
Error lines for rejection
Use errorLines only when responseCode is REJECTION.
{
"errorLines": [
{
"description": "Invoice amount does not match purchase order",
"errorField": "LegalMonetaryTotal",
"responseCode": "REJECTION",
"statusReasonCode": "BUSINESS_RULE_VIOLATION_FATAL"
}
]
}
Error line fields
| Field | Required | Description |
|---|---|---|
description | No | Human-readable error description |
errorField | No | Invoice field that caused the rejection |
responseCode | Yes | Always REJECTION |
statusReasonCode | Yes | BUSINESS_RULE_VIOLATION_FATAL, BUSINESS_RULE_VIOLATION_WARNING, or SYNTAX_VIOLATION |
Response
200 OK