# Report Events (API)
source: https://developer.mastercard.com/open-finance-us/documentation/webhooks/webhooks-report/report-webhooks-api/index.md

API report webhook notifications are sent for reports generated using a request to an API endpoint.
Note: When you generate a report using an API request, notifications are sent to the webhook URL you specified using the `callbackUrl` request parameter.

Notifications are sent when a report starts, fails, or completes. For VOIE Paystub endpoints, there is also a `primaryFieldUpdate` notification sent when the report is updated due to the customer providing more information (for example, by uploading a paystub).

This page provides example webhook notifications for [supported reports](https://developer.mastercard.com/open-finance-us/documentation/products/lend/reports/index.md).

Most reports follow the pattern described in the [Standard Report Webhooks](https://developer.mastercard.com/open-finance-us/documentation/webhooks/webhooks-report/report-webhooks-api/index.md#standard-report-webhooks) section.

These report types are slightly different and have their own sections:

* [Prequalification (CRA) Report](https://developer.mastercard.com/open-finance-us/documentation/webhooks/webhooks-report/report-webhooks-api/index.md#prequalification-cra-report-webhooks)
* [Verification of Income and Employment --- Paystub (with TXVerify) Report](https://developer.mastercard.com/open-finance-us/documentation/webhooks/webhooks-report/report-webhooks-api/index.md#voie-paystub-report-webhooks)

## Standard Report Webhooks {#standard-report-webhooks}

These notifications apply to all reports except those that have their own section below.
Sent when a report is being generated.
* JSON

```JSON
{
"eventName": "inProgress",
"id": "REPORT_ID",
"consumerId": "CONSUMER_ID",
"consumerSsn": "1234",
"type": "voaHistory",
"status": "inProgress",
"portfolioId": "PORTFOLIO_ID",
"customerId": 123456,
"reportCustomFields": [
    {
    "label": "label 0",
    "value": "value 0",
    "shown": false
    }
]
}
```

Sent after a report has failed to generate.
* JSON

```JSON
{
"eventName": "failed",
"id": "REPORT_ID",
"consumerId": "CONSUMER_ID",
"consumerSsn": "1234",
"type": "voi",
"status": "status",
"portfolioId": "PORTFOLIO_ID",
"customerId": 123456,
"reportCustomFields": [
    {
    "label": "label 0",
    "value": "value 0",
    "shown": false
    }
]
}
```

Sent when a report is complete.
* JSON

```JSON
{
"eventName": "done",
"id": "REPORT_ID",
"consumerId": "CONSUMER_ID",
"consumerSsn": "1234",
"type": "voa",
"status": "success",
"portfolioId": "PORTFOLIO_ID",
"customerId": 123456,
"reportCustomFields": [
    {
    "label": "label 0",
    "value": "value 0",
    "shown": false
    }
]
}
```

## Prequalification (CRA) Report Webhooks {#prequalification-cra-report-webhooks}

These notifications apply when generating a **Prequalification (CRA)** report.
Sent when a report is being generated.
* JSON

```JSON
{
"eventName": "inProgress",
"id": "REPORT_ID",
"type": "preQualVoa",
"status": "inProgress",
"portfolioId": "PORTFOLIO_ID",
"customerId": 123456,
"reportCustomFields": [
    {
    "label": "label 0",
    "value": "value 0",
    "shown": false
    }
]
}
```

Sent after a report has failed to generate.
* JSON

```JSON
{
"eventName": "failed",
"id": "REPORT_ID",
"type": "preQualVoa",
"status": "success",
"portfolioId": "PORTFOLIO_ID",
"customerId": 123456,
"reportCustomFields": [
    {
    "label": "label 0",
    "value": "value 0",
    "shown": false
    }
]
}
```

Sent when a report is complete.
* JSON

```JSON
{
"eventName": "done",
"id": "REPORT_ID",
"type": "preQualVoa",
"status": "success",
"portfolioId": "PORTFOLIO_ID",
"customerId": 123456,
"reportCustomFields": [
    {
    "label": "label 0",
    "value": "value 0",
    "shown": false
    }
]
}
```

## VOIE Paystub Report Webhooks {#voie-paystub-report-webhooks}

These notifications apply when generating a **Verification of Income and Employment --- Paystub (With TXVerify)** report.
Sent when a report is being generated.
* JSON

```JSON
{
"eventName": "inProgress",
"id": "REPORT_ID",
"consumerId": "CONSUMER_ID",
"consumerSsn": "1234",
"type": "voieTxVerify",
"status": "inProgress",
"portfolioId": "PORTFOLIO_ID",
"customerId": 123456,
"reportCustomFields": [
    {
    "label": "label 0",
    "value": "value 0",
    "shown": false
    }
]
}
```

Sent after a report has failed to generate.
* JSON

```JSON
{
"eventName": "failed",
"id": "REPORT_ID",
"consumerId": "CONSUMER_ID",
"consumerSsn": "1234",
"type": "voieTxVerify",
"status": "success",
"portfolioId": "PORTFOLIO_ID",
"customerId": 123456,
"reportCustomFields": [
    {
    "label": "label 0",
    "value": "value 0",
    "shown": false
    }
]
}
```

Sent when a report is complete.
* JSON

```JSON
{
"eventName": "done",
"id": "REPORT_ID",
"consumerId": "CONSUMER_ID",
"consumerSsn": "1234",
"type": "voieTxVerify",
"status": "success",
"portfolioId": "PORTFOLIO_ID",
"customerId": 123456,
"reportCustomFields": [
    {
    "label": "label 0",
    "value": "value 0",
    "shown": false
    }
]
}
```

Sent when a key field is updated with new information provided by the customer -
for example, if they manually upload a paystub.
* JSON

```JSON
{
"eventName": "primaryFieldUpdate",
"id": "REPORT_ID",
"consumerId": "CONSUMER_ID",
"consumerSsn": "1234",
"type": "voieTxVerify",
"status": "success",
"portfolioId": "PORTFOLIO_ID",
"customerId": 123456,
"reportCustomFields": [
    {
    "label": "label 0",
    "value": "value 0",
    "shown": false
    }
]
}
```

