SOAP API: receiving invoices

Retrieve invoices via the legacy SOAP API: GetInboxDocuments, GetInboxDocument, status management and PDF download.

With the legacy SOAP API you retrieve received documents via polling. You periodically check whether there are new documents in your inbox, download them and update the status. This article describes the complete receiving flow.

Important: This is the legacy SOAP API. For new integrations we recommend the REST API. The REST API offers webhooks, so you don't need to poll.

Receiving flow in five steps
Step 1: retrieve new documents

Call GetInboxDocuments with the filter CreatedOn.From to retrieve only new documents. After each call, save the highest CreatedOn value and use it as the starting point for the next check.

<GetInboxDocuments>
  <Filter>
    <CreatedOn>
      <From>2026-03-01T00:00:00</From>
    </CreatedOn>
  </Filter>
</GetInboxDocuments>
Step 2: filter by document type

The response contains metadata of all documents in the inbox. Filter on Template/MasterId to select only the correct document type. For standard invoices, use the MasterTemplateId:

GLDT9223370666504283001RA000000006DTP2000001

Always use the MasterTemplateId and not a version-specific ID, because it does not change with template updates.

Step 3: retrieve the full document

Retrieve the full payload per document using GetInboxDocument, based on the ExternalId from the metadata list:

<GetInboxDocument>
  <ExternalId>het-external-id-uit-stap-1</ExternalId>
</GetInboxDocument>
Step 4: download PDF

Use GetDocumentPdf to retrieve the PDF version of the document. The PDF is returned as a base64-encoded string.

Note: if the PDF is still being generated, the API returns error code ERRDMN8000003. In that case, wait a few seconds and try again.

Step 5: update status

Update the document status with SetInboxDocumentStatus. This is important for the processing flow and for the visibility of the status in the platform.

Available status codes

The inbox uses the following status codes. Always use the code (not the name) when filtering and updating.

CodeStatusNotes05SavedAutomatically assigned upon receipt10ReceivedDefault initial status20OpenedRecipient has viewed the document30DownloadedAutomatically set upon download35For approvalDocument has been placed in an approval workflow40ApprovedInvoice has been approved50RejectedInvoice has been rejected60Ready for paymentDocument is ready for payment70PaidInvoice has been settled
Document filters

When retrieving documents you can use various filters to limit the results:

FilterUseExternalIdRetrieve specific document by unique IDCreatedOnDate range for new documentsModifiedOnDate range for detecting status changesSender / ReceiverFilter by name or routing IDTemplate/MasterIdFilter by document typeStatusFilter by status code
Outbox documents

In addition to inbox documents, you can also retrieve your own sent documents. Use GetOutboxDocuments and GetOutboxDocument for this. The operation is similar to the inbox endpoints, but for documents you have sent yourself.

Draft documents

For documents that have not yet been sent (drafts), use GetDocuments and GetDocument. These endpoints work with a DocumentId instead of an ExternalId. Drafts have their own status codes:

CodeStatus10Created20Composing40Approved50Rejected
Tips for polling

Interval: don't poll more often than once per minute. For most integrations, once every 5 to 15 minutes is sufficient.

Incremental retrieval: always save the highest CreatedOn value and use it as the From filter in the next call. This prevents you from retrieving the same documents repeatedly.

Detecting status changes: use the ModifiedOn filter if you want to detect when the status of existing documents has changed, for example after approval or payment.


With the REST API you don't need to poll: webhooks automatically send a notification as soon as a new document arrives. Check psb.econnect.eu for the modern approach.

Switch to the REST API