Confirming EBICS downloads
The EBICS protocol requires downloads to be confirmed with the confirm_download method. Otherwise some banks will block further downloads of the same order type for a specific time.
client = EbicsClient(...) docs = client.C53() client.confirm_download()
Before we go further you have to understand the difference between a download with and without a specified date range:
- Downloads without a given date range only contain new documents that have not been downloaded before. Think of it as a download queue from where you can remove documents with
confirm_download(success=True)
. A confirmation withsuccess=False
keeps them in the queue. - With a given date range you can also retrieve documents from the archive of already downloaded data. This way you are able to re-download files, even if already confirmed with
success=True
. Most banks also return new documents from the queue, but some banks only from the archive.
So you should confirm a download with success=True
if the downloaded data was successfully processed by your application. Otherwise you should confirm with success=False
:
client = EbicsClient(...)
try:
camt53 = client.C53()
camt54 = client.C54()
process_documents(camt53, camt54)
except:
client.confirm_download(success=False)
raise
else:
client.confirm_download(success=True)
To simplify things there is a context manager (since v4.4) which automatically confirms all downloads at the end of the with-block:
with EbicsClient(...) as client:
camt53 = client.C53()
camt54 = client.C54()
process_documents(camt53, camt54)
It does pretty much the same as the previous example.