API Documentation

Get Status Info of a Sales Invoice

You want to be in control of the the successful delivery and the potential feedback of the Receiver.

Importance of the Status

The status includes information about 1) The delivery 2) Optional feedback from the receiver. Status feedback is avaible for multiple networks (Peppol and other Einvoicing networks).


API Feedback and Billit User Interface Information

Both options offer the same information content. So the choice is:

  • Billit User Interface :
    • If your users are happy with the User Inferface of Billit, then you do not have to integrate the feedback in the application
    • When an invoice delivery goes in error, the user will receive an email notification and can view the details in the Billit User Interface
  • API Feedback :
    • Allows to get all necessary feedback information and store it in the sending application. The user can view everything in one Application.
    • You can integrate minimum information (global status, for details see Billit User Interface) are all information (no need for a user to go to the Billit User Interface)

Below the API Feedback is elaborated.

About the GET endpoint

Below the endpoint for 2 API methods : v1/orders and v1/einvoices. Feedback is the same for both:

EndpointMethodResponse
/v1/orders/{UniqueID}GETOrder Object
/v1/einvoices/registrations/{registrationID}/orders/{orderID}GETOrder Object

Content of the feedback is stored in one feedback Json. It contains:

  • Information about the data of the invoice/credit note,
  • Information of the status, it consists of :
    • CurrentDocumentDeliveryDetails : this is the main part
    • Additional Status Messages : The file content of the status message with some additional information

CurrentDocumentDeliveryDetails - Status of the Delivery

The first and main thing you want to know is that the document is delivered with success. This will be the case when the content is compliant with all validation rules and that the receiver is existing with the correct identifications.

The delivery feedback is what you will get first. As a later step, additional messages might arrive (see next point).

Below description what you can expect when TransportType is Peppol for 3 scenario's: 1. Positive 2. Negative 3. In Progress

  1. Positive Delivery
TypeValue (example)Info
IsDocumentDeliveredtrueThe main element to verify.
DocumentDeliveryStatusDeliveredWhen delivered, no further updates in this field.
DocumentDeliveryDate2025-03-26T14:30:48.11.Contains date and time stamp IsDocumentDelivered = True
DocumentDeliveryInfo (if present)ReceivedCan contain additional info about the status. Displays the last value (1). e.g. in case of Peppol last status of an Invoice Response coming from the sender (IMR, MLR when Peppol). Typical values Received (Ontvangen), Approved (Goedgekeurd), Paid (Betaald). This feedback can depend on language.
  1. Not Delivered
TypeValue (example)Info
IsDocumentDeliveredfalse
DocumentDeliveryStatusError
DocumentRefusedDate2025-04-28T19:30:03.203
DocumentRefusedReasonTCInvalidInvoiceCan contain additional info about the status : 1) Validation error 2) e.g. last status of a Peppol Invoice Response (IMR, MLR).
DocumentRefusedInfoInconsistency between VAT number and tax code of the recipient of the invoice (acquirer)Long Text description of the issue. In case of validations, it is an error message generated by Billit (goal is that message is non-technical).
  1. Delivery is pending
TypeDefinition
IsDocumentDeliveredfalse
DocumentDeliveryStatusPending

When DocumentDeliverystatus is Pending (not a final status), then keep waiting until the status goes to a final one : "DocumentDeliveryStatus" has final status : "Delivered" or "Error".


Examples : Below 3 examples where delivery feedback is available with the 3 statuses (positive, pending, negative). This is

    "CurrentDocumentDeliveryDetails": {
        "DocumentDeliveryDate": "2025-04-23T12:57:23.23",
        "IsDocumentDelivered": true,
        "DocumentDeliveryStatus": "Delivered"
    },
    "CurrentDocumentDeliveryDetails": {
        "IsDocumentDelivered": false,
        "DocumentDeliveryStatus": "Pending"  //When Pending, wait until the status changes to final value
    },
    "CurrentDocumentDeliveryDetails": {
        "DocumentRefusedDate": "2025-04-28T19:30:03.203",
        "DocumentRefusedReasonTC": "InvalidInvoice",
        "DocumentRefusedInfo": "Inconsistency between VAT number and tax code of the recipient of the invoice (acquirer)",
        "IsDocumentDelivered": false,
        "DocumentDeliveryStatus": "Error"
    },

Status Updates : optional additional Feedback from network and from the Receivers

Optional status messages may arrive after a delivery of the invoice. Below the possibilities when the TransferType is Peppol :

  • First Message : Confirmation file of the successful delivery in the Peppol network.
    • This can be considered as the "Proof of Delivery" or "Evidence File"
    • In case of discussion with the receiver, it can be used as proof
  • Additional Messages: Optional Feedback of the receiver after Receipt of the invoice ;
    • A receiver is can send feedback, but it is not mandatory. So if no additional feedback arrives, this is not a problem. In many cases, there will be no feedback.
    • A receiver can send one or multiple feedback messages. Most popular are Received, Accepted, Conditionally Accepted.
      • Below the possibilities for positive statuses:
        • Received: the receivers the receipt of the invoice file
        • Accepted: the receiver has accepted the content of the invoice
        • In Processing: Processing of at the level of the receiver is ongoing
        • Conditionally Accepted: Invoice seems OK, but approval at the level of the receiver is still ongoing
        • Paid: receiver confirms that instruction has been given for payment.
      • Negative status
        • Rejected: Receiver does not accept the invoice, and delivers an additional description.
      • Other:
        • Extra Information Necessary (with a descripton)

Below 2 examples:

  • 2 Messages :
    • Delivered with Succes in Peppol network (first message, does not have a description)
    • Receiver has send 1 Peppol IMR feedback : Received (Description: AB : The document has been successfully received)
  • 3 Messages :
    • Delivered with Succes in Peppol network.
    • Receiver has send a first Peppol IMR feedback : Received (detail AB : The document has been successfully received)
    • Receiver has send an additional Peppol IMR feedback : Paid (Description : PD: The document has been paid)
"CurrentDocumentDeliveryDetails": {
        "DocumentDeliveryDate": "2025-05-07T14:09:17.563",
        "DocumentDeliveryInfo": "Ontvangen",
        "IsDocumentDelivered": true,
        "DocumentDeliveryStatus": "Delivered"
    },
    "Messages": [
        {
            "FileID": "845e4774-7d76-4d2c-a7de-e6d790cb57c6",
            "CreationDate": "2025-05-07T14:08:07.813",
            "TransportType": "Peppol",
            "Success": true,
            "Trials": 1,
            "Destination": "0208:0446725877",
            "MessageDirection": "Outgoing"
        },
        {
            "Description": "AB: The document has been successfully received.",
            "FileID": "7ee8b70c-3dd7-423a-8269-79f8bc49e0c5",
            "CreationDate": "2025-05-07T14:09:54.203",
            "TransportType": "Peppol",
            "Success": true,
            "Trials": 0,
            "Destination": "0208:0446725877",
            "MessageDirection": "Incoming"
        },
            ]
}
"CurrentDocumentDeliveryDetails": {
        "DocumentDeliveryDate": "2025-05-07T14:09:17.563",
        "DocumentDeliveryInfo": "Paid",
        "IsDocumentDelivered": true,
        "DocumentDeliveryStatus": "Delivered"
    },
    "Messages": [
        {
            "FileID": "845e4774-7d76-4d2c-a7de-e6d790cb57c6",
            "CreationDate": "2025-05-07T14:08:07.813",
            "TransportType": "Peppol",
            "Success": true,
            "Trials": 1,
            "Destination": "0208:0446725877",
            "MessageDirection": "Outgoing"
        },
        {
            "Description": "AB: The document has been successfully received.",
            "FileID": "7ee8b70c-3dd7-423a-8269-79f8bc49e0c5",
            "CreationDate": "2025-05-07T14:09:54.203",
            "TransportType": "Peppol",
            "Success": true,
            "Trials": 0,
            "Destination": "0208:0446725877",
            "MessageDirection": "Incoming"
        },
        {
            "Description": "PD: The document has been paid.",
            "FileID": "b39065a9-8c82-4beb-9c04-010435f4c5fa",
            "CreationDate": "2025-05-07T14:25:11.427",
            "TransportType": "Peppol",
            "Success": true,
            "Trials": 0,
            "Destination": "0208:0446725877",
            "MessageDirection": "Incoming"
        }
    ]
}

What are the best options to store the feedback information ?

  • Minimum:
    • Positive feedback:
      • When IsDocumentDelivered = true
      • Store the value of "DocumentDeliveryInfo" as a text string. Remark : it could be updated more than one time during a few days (typically max. 2 weeks)
    • Negative feedback:
      • When IsDocumentDelivered = false
      • You could make it visible as an error in your application. If not clear, a user could go to the Billit User Interface.
      • Store the value of "DocumentDeliveryInfo" as a text string.
      • You could make it visible as an error in your application. If not clear, a user could go to the Billit User Interface.
  • More information about feedback when Transport isType is Peppol":
    • In addition to the above, you could store more information in a text field.
    • Filter information about the messages:
      • when Transporttype is Peppol, for each message containing a Description:
        • Display Description
        • Add CreationDate if needed.
      • So example of the result could be:
        • "Description": "AB: The document has been successfully received.",
        • "CreationDate": "2025-05-07T14:09:54.203",
        • "Description": "PD: The document has been paid.",
        • "CreationDate": "2025-05-07T14:25:11.427",

Alternative Presantation (example):

Additional Feedback by Receiver
"Description": "AB: The document has been successfully received."
"CreationDate": "2025-05-07T14:09:54.203",
"Description": "PD: The document has been paid." "CreationDate": "2025-05-07T14:25:11.427"

How can you simulate in test the feedback messages:

  1. Make sure that you activated minimum 2 companies on the Sandbox : a sender and a receiver. Peppol registrations are also ready.
  2. Send test invoice from test company 1 to test company 2.
  3. Feedback messages from company 2 to company 1 .
    1. Received: this message will be sent automatically
    2. Paid: to to the Billit User Interface of company 2. Select Invoice in menu list, and select in menu more options for "Change Paid Status". The invoice status will be set to paid. This will trigger an additional message with the status Paid to company 1.

Store the feedback files (Advanced)

The feedback messages are stored on the Billit platform and can be viewed from there. The content of the file is quite technical, not easy for an end-user to understand.

But if desired, you can store the files in your application. The fileID allows with GET Files to receive each specific message file.

OrderStatus

Any document has always an OrderStatus. The status can be retrieved. The possible values are mentioned on the page : Types .

They can be useful, but Document Delivery details might be the most efficient. Below the additional information.

TypeDefinition
ToSendWhen document is created, but not sent, then ToSend is the status.
ToPayInvoice has been sent, status in Billit is ToPay (status might stay at this level)