Skip to main content

Delivery Webhook

Overview​

Whenever a report delivery is completed, QI CTVM can notify your application by webhook. The notification says which delivery finished, to which destination, and which files it carried — with the status of each report. It is the signal for you to trigger the collection on the SFTP instead of scanning the folder at fixed intervals.

The webhook is optional and configured per delivery routine. Without configuration, no notification is sent.

How to enable it

Tell the integration team the URL that will receive the notifications. We return a Signature Key for you to validate the signature, and we link the configuration to the fund's delivery routine. Enabling is per routine — a fund with two routines configures both.

When it is sent​

One notification per completed destination, at the moment that destination finishes being processed.

A destination is only processed after all the reports of the delivery reach a final state — generated or failed. Only then are the files transferred and the notification sent. That is: when the webhook arrives, the folder already has the files.

SituationDestination statusWebhook
All the reports generateddeliveredsent
Part of the reports faileddeliveredsent — the ones that failed appear in reports, but have no file in the folder
All the reports failedfailedsent — no file is transferred
It is one webhook per destination, not per file

A routine that delivers eight reports to an SFTP folder generates one notification, with eight entries in reports. There is no notification per file.

If the same delivery has two destinations — for example an SFTP folder and an e-mail — there are two notifications, one per destination, and both carry the same list of reports.

Each destination is notified only once

The notification of a destination is recorded when it is sent and is not repeated. A reprocessing of the sending does not generate a new notification. To resend a notification that has already been issued, see Receiving Webhooks.

Webhook types​

webhook_typeWhen
report.recurring_delivery_destination_completedDelivery originated from a routine — the case of the fund's daily report delivery.
report.delivery_destination_completedOne-off delivery, created outside the routine.

The payload difference is in data: the routine type adds recurring_delivery_key and description.

Webhook structure​

Webhook Body — routine, SFTP destination
{
"webhook_type": "report.recurring_delivery_destination_completed",
"webhook_datetime": "2026-07-30T09:12:44Z",
"data": {
"solicitation_time": "2026-07-30T09:05:00Z",
"delivery_key": "3f1c9b7e-0a44-4c21-9f18-6b2d5e7a1c33",
"recurring_delivery_key": "b8d2a6f4-77c1-4e90-8a3b-1d5f9c0e2a77",
"description": "Relatórios diários — FUNDO EXEMPLO FIDC",
"destination": {
"destination_key": "c4e7a1b9-2d63-4f85-90ab-7c1e3f5d8b02",
"destination_type": "sftp",
"folder_path": "/fundos/fundo_exemplo",
"status": "delivered"
},
"reports": [
{
"report_type": "consolidated_credit_rights_acquisition_assets",
"file_name": "example_name_consolidated_credit_rights_acquisition_assets_2026-07-29.csv",
"fund_class_key": "5dac941c-c779-4049-a4ee-7cee583b6860",
"reference_date": "2026-07-29",
"status": "generated"
},
{
"report_type": "cash_account_demonstrative",
"file_name": "example_name_cash_account_demonstrative_2026-07-29.xlsx",
"fund_class_key": "5dac941c-c779-4049-a4ee-7cee583b6860",
"reference_date": "2026-07-29",
"status": "generated"
}
]
}
}

data attributes​

FieldTypeDescription
solicitation_timestringDate and time the delivery was requested, in ISO 8601 (UTC).
delivery_keystringIdentifier of the delivery (UUID). Unique per execution of the routine.
recurring_delivery_keystringIdentifier of the routine. Present only in report.recurring_delivery_destination_completed — it is stable across executions and serves to identify which routine the delivery came from.
descriptionstringDescription registered in the routine. Present only in report.recurring_delivery_destination_completed.
destinationobjectCompleted destination. See destination attributes.
reportsarrayReports of the delivery. See reports attributes.

destination attributes​

FieldTypeDescription
destination_keystringIdentifier of the destination (UUID). It is the key of this notification: a destination_key is notified only once.
destination_typestring (enum)sftp or email.
statusstring (enum)delivered or failed. See the when it is sent table.
folder_pathstringDestination folder on the SFTP. Present only when destination_type is sftp.
recipientsarrayRecipients of the e-mail. Present only when destination_type is email.
titlestringSubject of the e-mail. Present only when destination_type is email.

The files are written to folder_path with exactly the file_name of each report — the full path is {folder_path}/{file_name}.

reports attributes​

FieldTypeDescription
report_typestring (enum)Model of the report, as shown in the "Model" column of the list of available reports.
file_namestringName of the delivered file, already with the fund prefix and the date.
fund_class_keystringFund class of the report.
reference_datestringReference date, in YYYY-MM-DD. It may come null in the reports generated by range (quota_mec, balance_report, accounting_ledger), which are parameterized by start_date and end_date instead of a single date — treat the field as optional and use file_name to identify the file.
statusstring (enum)generated or failed.
Check the status of each report

A webhook received does not mean that all the files are in the folder. Reports with status: "failed" appear in the list and have no corresponding file.

A reader that iterates over reports and tries to download everything will fail on the first report with an error. Filter by status == "generated" before assembling the list of files to collect, and treat the presence of failed as an operational alert — not as an absence of delivery.

Authentication and resending​

The signature validation, the list of source IPs, the retry policy and the resending are the same as for the other QI CTVM webhooks — see Receiving Webhooks.

Where there is no webhook​

Two report deliveries do not emit this notification:

Attention to the assignment collateral

assignment_documents is precisely the report where an arrival notice would make the most difference, because the download links inside it expire 5 days after generation. Since it does not emit a webhook, the collection guidance remains the one in the Testing the Collateral Capture walkthrough.