The following set of endpoints are responsible for managing Infringement Notification
Create Infraction Notification
Endpoint to create an infraction notification to report fraudulent or irregular situations related to Pix transactions.
Responsibilities of the Indirect PSP:- The Indirect PSP acts as an intermediary, forwarding the request to the DICT - The notification is processed by the DICT and communicated to the involved PSPs - The Indirect PSP must ensure proper authentication and authorization
Use Cases:- Return Request: When the notification aims to request a return, it must be created by the PSP of the payer of the original transaction.
- Return Cancellation: For return cancellation, it must be created by the PSP of the receiver of the original transaction.
- Fraud: Report transactions identified as fraudulent by the PSP - Scam: Report attempted scams or deception - Other: Other irregular situations requiring investigation
DICT Integration: This endpoint automatically redirects to the DICT, following the standards set by the Central Bank for Pix key infraction notifications.
POST /dict/infraction-reports
Requires authorization for the scope: infraction.ind.write
Request
{
"infractionReport": {
"contactInformation": {
"email": "[email protected]",
"phone": "+5561988887777"
},
"reason": "REFUND_REQUEST",
"reportDetails": "Transação feita através de QR Code falso em boleto",
"situationType": "SCAM",
"transactionId": "E9999901012341234123412345678900"
}
}
Responses The responses below represent Success(200) from the consumption.
- 🟢 201
- 🔴 400
- 🔴 401
- 🔴 403
- 🔴 500
- 🔴 503
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"infractionReport": {
"transactionId": "E9999901012341234123412345678900",
"reason": "REFUND_REQUEST",
"situationType": "SCAM",
"contactInformation": {
"email": "[email protected]",
"phone": "+5561988887777"
},
"reportDetails": "Transação feita através de QR Code falso em boleto",
"id": "91d65e98-97c0-4b0f-b577-73625da1f9fc",
"status": "OPEN",
"reporterParticipant": "99999010",
"counterpartyParticipant": "99999011",
"creationTime": "2020-01-17T10:00:00.000Z",
"lastModified": "2020-01-17T10:00:00.000Z"
}
}
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Could not parse request body",
"status": 400,
"title": "Bad Request",
"type": "https://dict.pi.rsfn.net.br/api/v2/error/BadRequest"
},
"responseTime": 0
}
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Participant is not authenticated",
"status": 401,
"title": "Unauthorized"
},
"responseTime": 0
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Participant is not allowed to access this resource",
"status": 403,
"title": "Forbidden"
}
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Our service is currently experiencing an issue. We apologize for the inconvenience and are working to resolve it as soon as possible.",
"status": 500,
"title": "Internal Server Error"
}
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Service is under scheduled maintenance",
"status": 503,
"title": "Service Unavailable",
"type": "https://dict.pi.rsfn.net.br/api/v2/error/ServiceUnavailable"
}
}
List Infraction Notifications
Endpoint to retrieve the list of infraction notifications in which the participant is involved.
Responsibilities of the Indirect PSP:- The Indirect PSP forwards the query to the DICT - The listing returns only notifications related to the participant - Filters and pagination are applied by the DICT
Sorting: The notification list is sorted in ascending order by the field
LastModified.
Available Filters:- Status: Filters by notification status (open, waiting_resolution, confirmed, cancelled, completed).
- Period: Filters by modification date (modifiedAfter, modifiedBefore).
- Type: Filters by notification type.
- Participation: Filters by participant role (isReporter, isClaimer).
DICT Integration: This endpoint automatically redirects to the DICT, following the standards established by the Central Bank for querying infraction notifications.
GET /dict/infraction-reports
Requires authorization for the scope: infraction.ind.read
Request
This endpoint supports query parameters. The code snippet below illustrates how to consume the endpoint with some optional parameters:
/dict/infraction-reports?isReporter=false&status=OPENResponses The responses below represent Success (200) and errors/failures.
- 🟢 200
- 🔴 400
- 🔴 401
- 🔴 403
- 🔴 500
- 🔴 503
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"hasMoreELements": true,
"infractionReports": [
{
"analysisDetails": "Valor bloqueado. Para mais informações, contactar central antifraude em 11 3000-00000, informando ID 9999.",
"analysisResult": "AGREED",
"contactInformation": {
"email": "[email protected]",
"phone": "+5561988887777"
},
"counterpartyParticipant": "99999011",
"creationTime": "2020-01-17T10:00:00.000Z",
"fraudMarkerId": "91d65e98-97c0-4b0f-b577-73625da1f9fc",
"id": "91d65e98-97c0-4b0f-b577-73625da1f9fc",
"lastModified": "2020-01-17T10:00:00.000Z",
"reason": "REFUND_REQUEST",
"reportDetails": "Transação feita através de QR Code falso em boleto",
"reporterParticipant": "99999010",
"situationType": "SCAM",
"status": "CLOSED",
"transactionId": "E9999901012341234123412345678900"
}
],
"responseTime": 0
}
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Could not parse request body",
"status": 400,
"title": "Bad Request",
"type": "https://dict.pi.rsfn.net.br/api/v2/error/BadRequest"
},
"responseTime": 0
}
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Participant is not authenticated",
"status": 401,
"title": "Unauthorized"
},
"responseTime": 0
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Participant is not allowed to access this resource",
"status": 403,
"title": "Forbidden"
}
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Our service is currently experiencing an issue. We apologize for the inconvenience and are working to resolve it as soon as possible.",
"status": 500,
"title": "Internal Server Error"
}
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Service is under scheduled maintenance",
"status": 503,
"title": "Service Unavailable",
"type": "https://dict.pi.rsfn.net.br/api/v2/error/ServiceUnavailable"
}
}
Get Infraction Notification
Endpoint to retrieve details of a specific infraction notification.
Responsibilities of the Indirect PSP:- The Indirect PSP forwards the query to the DICT - The query returns only notifications related to the participant - Full notification details are provided by the DICT
Returned Information:- Notification data (ID, status, reason, details)
- Reporter contact information
- Involved participants (reporter and counterparty)
- Creation and modification timestamps
- Related transaction ID
DICT Integration: This endpoint automatically redirects to the DICT, following the standards established by the Central Bank for querying infraction notifications.
GET /dict/infraction-reports/:infractionReportId
Requires authorization for the scope: infraction.ind.read
Request
The request to this endpoint does not require a body, only OAuth authorization headers, parameters, and the account certificate.
Responses The responses below represent Success (200) and error/failure scenarios.
- 🟢 200
- 🔴 401
- 🔴 403
- 🔴 404
- 🔴 500
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"infractionReport": {
"contactInformation": {
"email": "[email protected]",
"phone": "+5561988887777"
},
"counterpartyParticipant": "99999011",
"creationTime": "2020-01-17T10:00:00.000Z",
"id": "91d65e98-97c0-4b0f-b577-73625da1f9fc",
"lastModified": "2020-01-17T10:00:00.000Z",
"reason": "REFUND_REQUEST",
"reportDetails": "Transação feita através de QR Code falso em boleto",
"reporterParticipant": "99999010",
"situationType": "SCAM",
"status": "ACKNOWLEDGED",
"transactionId": "E9999901012341234123412345678900"
},
"responseTime": 0
}
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Participant is not authenticated",
"status": 401,
"title": "Unauthorized"
},
"responseTime": 0
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Participant is not allowed to access this resource",
"status": 403,
"title": "Forbidden"
}
}
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Entry associated with given key does not exist",
"status": 404,
"title": "Not found",
"type": "https://dict.pi.rsfn.net.br/api/v2/error/NotFound"
},
"responseTime": 0
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Our service is currently experiencing an issue. We apologize for the inconvenience and are working to resolve it as soon as possible.",
"status": 500,
"title": "Internal Server Error"
}
}
Acknowledge Infraction Notification
Endpoint to notify receipt of the infraction notification by the counterparty participant.
IdempotencyThis operation is idempotent. If the notification has already been received and its status is ACKNOWLEDGED, a response equivalent to the first request will be returned.
POST /dict/infraction-reports/:infractionReportId/acknowledge
Requires authorization for the scope: infraction.ind.write
Request
The request to this endpoint does not require a body, only OAuth authorization headers, parameters, and the account certificate.
Responses The responses below represent Success (200) and error/failure scenarios.
- 🟢 200
- 🔴 401
- 🔴 403
- 🔴 404
- 🔴 500
- 🔴 503
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"infractionReport": {
"contactInformation": {
"email": "[email protected]",
"phone": "+5561988887777"
},
"counterpartyParticipant": "99999011",
"creationTime": "2020-01-17T10:00:00.000Z",
"id": "91d65e98-97c0-4b0f-b577-73625da1f9fc",
"lastModified": "2020-01-17T10:00:00.000Z",
"reason": "REFUND_REQUEST",
"reportDetails": "Transação feita através de QR Code falso em boleto",
"reporterParticipant": "99999010",
"situationType": "SCAM",
"status": "CLOSED",
"transactionId": "E9999901012341234123412345678900"
},
"responseTime": 0
}
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Participant is not authenticated",
"status": 401,
"title": "Unauthorized"
},
"responseTime": 0
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Participant is not allowed to access this resource",
"status": 403,
"title": "Forbidden"
}
}
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Entry associated with given key does not exist",
"status": 404,
"title": "Not found",
"type": "https://dict.pi.rsfn.net.br/api/v2/error/NotFound"
},
"responseTime": 0
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Our service is currently experiencing an issue. We apologize for the inconvenience and are working to resolve it as soon as possible.",
"status": 500,
"title": "Internal Server Error"
}
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Service is under scheduled maintenance",
"status": 503,
"title": "Service Unavailable",
"type": "https://dict.pi.rsfn.net.br/api/v2/error/ServiceUnavailable"
}
}
Cancel Infraction Notification
Endpoint to cancel an infraction notification. Only the participant who created the notification can perform the cancellation.
Cancelling a closed notification with agreement will also cancel the associated fraud marking.
IdempotencyThis operation is idempotent. If the notification has already been canceled with the same parameters, a response equivalent to the first request will be returned.
POST /dict/infraction-reports/:infractionReportId/cancel
Requires authorization for the scope: infraction.ind.write
Request
The request to this endpoint does not require a body, only OAuth authorization headers, parameters, and the account certificate.
Responses The responses below represent Success (200) and error/failure scenarios.
- 🟢 200
- 🔴 401
- 🔴 403
- 🔴 404
- 🔴 500
- 🔴 503
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"infractionReport": {
"contactInformation": {
"email": "[email protected]",
"phone": "+5561988887777"
},
"counterpartyParticipant": "99999011",
"creationTime": "2020-01-17T10:00:00.000Z",
"id": "91d65e98-97c0-4b0f-b577-73625da1f9fc",
"lastModified": "2020-01-17T10:00:00.000Z",
"reason": "REFUND_REQUEST",
"reportDetails": "Transação feita através de QR Code falso em boleto",
"reporterParticipant": "99999010",
"situationType": "SCAM",
"status": "CANCELLED",
"transactionId": "E9999901012341234123412345678900"
},
"responseTime": 0
}
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Participant is not authenticated",
"status": 401,
"title": "Unauthorized"
},
"responseTime": 0
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Participant is not allowed to access this resource",
"status": 403,
"title": "Forbidden"
}
}
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Entry associated with given key does not exist",
"status": 404,
"title": "Not found",
"type": "https://dict.pi.rsfn.net.br/api/v2/error/NotFound"
},
"responseTime": 0
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Our service is currently experiencing an issue. We apologize for the inconvenience and are working to resolve it as soon as possible.",
"status": 500,
"title": "Internal Server Error"
}
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Service is under scheduled maintenance",
"status": 503,
"title": "Service Unavailable",
"type": "https://dict.pi.rsfn.net.br/api/v2/error/ServiceUnavailable"
}
}
Close Infraction Notification
Endpoint to close an infraction notification.
The notification must be closed by the counterpart participant. To close it, the status must be ACKNOWLEDGED.
If the closure is with the analysis result AGREED, a fraud marker will be automatically generated. The fraud marker ID will appear in the FraudMarkerId field of the response. In these cases, the participant must provide the 'FraudType' field. Valid values are APPLICATION_FRAUD, MULE_ACCOUNT, SCAMMER_ACCOUNT, and OTHER.
WARNING: The type
UNKNOWN is not valid for API v2. It is used only as a descriptive value in infraction notifications created in API v1, when the fraud type was not part of the notification data.
The generated fraud marker can be canceled by the counterpart participant responsible for closing the infraction notification.
IdempotencyThis operation is idempotent. If the notification has already been closed with the same parameters, a response equivalent to the first request will be returned.
POST /dict/infraction-reports/:infractionReportId/close
Requires authorization for the scope: infraction.ind.write
Request
{
"analysisDetails": "Valor bloqueado. Para mais informações, contactar central antifraude em 11 3000-00000, informando ID 9999.",
"analysisResult": "AGREED",
"fraudType": "SCAMMER_ACCOUNT",
"infractionReportId": "91d65e98-97c0-4b0f-b577-73625da1f9fc",
"participant": "12345678"
}
Responses Responses below represent Success (200) and error/failure scenarios.
- 🟢 200
- 🔴 401
- 🔴 403
- 🔴 404
- 🔴 500
- 🔴 503
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"infractionReport": {
"analysisDetails": "Valor bloqueado. Para mais informações, contactar central antifraude em 11 3000-00000, informando ID 9999.",
"analysisResult": "AGREED",
"contactInformation": {
"email": "[email protected]",
"phone": "+5561988887777"
},
"counterpartyParticipant": "99999011",
"creationTime": "2020-01-17T10:00:00.000Z",
"fraudMarkerId": "91d65e98-97c0-4b0f-b577-73625da1f9fc",
"id": "91d65e98-97c0-4b0f-b577-73625da1f9fc",
"lastModified": "2020-01-17T10:00:00.000Z",
"reason": "REFUND_REQUEST",
"reportDetails": "Transação feita através de QR Code falso em boleto",
"reporterParticipant": "99999010",
"situationType": "SCAM",
"status": "CLOSED",
"transactionId": "E9999901012341234123412345678900"
},
"responseTime": 0
}
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Participant is not authenticated",
"status": 401,
"title": "Unauthorized"
},
"responseTime": 0
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Participant is not allowed to access this resource",
"status": 403,
"title": "Forbidden"
}
}
{
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Entry associated with given key does not exist",
"status": 404,
"title": "Not found",
"type": "https://dict.pi.rsfn.net.br/api/v2/error/NotFound"
},
"responseTime": 0
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Our service is currently experiencing an issue. We apologize for the inconvenience and are working to resolve it as soon as possible.",
"status": 500,
"title": "Internal Server Error"
}
}
{
"responseTime": 0,
"correlationId": "abcdef01-2345-6789-0123-456789012345",
"error": {
"detail": "Service is under scheduled maintenance",
"status": 503,
"title": "Service Unavailable",
"type": "https://dict.pi.rsfn.net.br/api/v2/error/ServiceUnavailable"
}
}