Receber uma recuperação de valores

Recebimento de Solicitação de Recuperação de Valores

Quando a Celcoin atuar como instituição recebedora de uma solicitação de recuperação de valores no contexto do MED 2.0, isso significa que outra Instituição Financeira participante do arranjo Pix identificou uma possível fraude em transação cujo recebedor final dos recursos é um cliente da base Celcoin.

A partir do recebimento de uma solicitação de recuperação de valores, recebe-se um webhook de evento: pix-infraction e nele conterá o campo fundsRecoveryId que é o ID da recuperação de valores que recebeu, indicando ser fluxo do MED 2.0. O prazo regulatório é de até 7 dias corridos para realizar a análise da infração e responder à instituição solicitante, aceitando ou rejeitando a contestação, conforme resultado da apuração de fraude.

Durante esse período de análise, a Celcoin poderá realizar o bloqueio do saldo contestado na conta do cliente recebedor, de forma total ou parcial, conforme a disponibilidade de saldo e o valor bloqueado permanecerá indisponível para movimentação até a conclusão da análise.

Ao término da apuração, caso a fraude não seja confirmada, será necessário responder a solicitação de recuperação de valores rejeitando (DISAGREED) e os valores previamente bloqueados serão desbloqueados.

Agora se fraude for confirmada, os valores permanecerão bloqueados até o recebimento da solicitação formal de devolução enviada pela instituição reclamante.

📘

Observação: este fluxo inteiro (endpoints e webhooks) será o mesmo para as notificações do MED 1.0 (infractions) quanto do MED 2.0 (recuperação de valores).

Exemplos de webhook que será enviado:

Entity: pix-infraction

Status ACKNOWLEDGED

{
	"lastUpdateTimestamp": "2026-04-17T03:54:03.187",
    "pactualId": "01000000-7058-cb1d-35af-08de9c4e1bac",
	"clientRequestId": "",
	"body": {
		"infractionType": "REFUND_REQUEST",
		"creationTime": "2026-04-17T09:03:22.697",
		"reportDetails": "Golpe/Estelionato",
		"responseTime": "2026-04-17T03:54:03.187",
		"endToEndId": "E22896431202604170653yPMGaQXkSxK",
		"reportedBy": "DEBITED_PARTICIPANT",
		"infractionData": {
			"taxIdNumber": "30247128000115",
			"infractingAccountData": {
				"accountNumber": "30053611718",
				"branch": 1
			},
			"debitedParticipant": "22896431",
			"reportedBy": "DEBITED_PARTICIPANT",
			"transactionDate": "2026-04-17T03:54:03.187",
			"creditedParticipant": "13935893",
			"key": "eccc43f3-5210-4634-af39-86cd0e3b3528"
		},
		"transactionId": "E22896431202604170653yPMGaQXkSxK",
		"creditedParticipant": "13935893",
		"transactionType": "TRANSFER",
		"id": "3e69f867-96e3-4c6a-b500-37fe930c35e3",
		"debitedParticipant": "22896431",
		"lastModified": "2026-04-17T09:03:32.617",
		"status": "ACKNOWLEDGED"
	},
	"entity": "pix-infraction",
	"transactionId": 202604170000113120,
	"createTimestamp": "2026-04-17T03:54:03.187",
	"status": "ACKNOWLEDGED"
}

Como fechar uma Recuperação de valores


Fechar solicitação de recuperação de valores: [API Reference]


Campos do Request

Campo

Descrição

Tipo do Campo

infractionReportId

ID da Infração a ser consultada

string

analysisResult

Esse campo deve ser preenchido como:

  • AGREED, para aceitar a infração.
  • DISAGREED, para rejeitar a infração.

string

analysisDetails

Detalhes da análise da infração, que possam orientar o pagador dos próximos passos (Exemplo: O valor da transação será estornado em até 5 dias úteis)

string

fraudType

Tipo da fraude: APPLICATION_FRAUD, MULE_ACCOUNT, SCAMMER_ACCOUNT, OTHER e UNKNOWN.
Obs.: Obrigatório caso AnalysisResult = AGREED.

string


Rejeitando uma recuperação de valores como fraude

O próximo passo será responder a infração se será aceita ou recusada.

Caso a análise seja por rejeitar (DISAGREED) e entendendo que não se trata de uma fraude, deverá responder via API informando o id da infração que será recebido via webhook de evento pix-infraction.


Exemplo de request

Post: https://sandbox.openfinance.celcoin.dev/baas/v2/infraction/{infractionReportId}/close

curl --request POST \
     --url https://sandbox.openfinance.celcoin.dev/baas/v2/infraction/infratcionReportId/close \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "analysisResult": "DISAGREED",
  "analysisDetails": "Fraude não identificada",
  "fraudType": "APPLICATION_FRAUD"
}

👍

Sucesso 200

{
  "status": "CLOSED",
  "creditedParticipant": "99999011",
  "debitedParticipant": "13935893",
  "infractionType": "APPLICATION_FRAUD",
  "reportedBy": "DEBITED_PARTICIPANT",
  "lastModified": "2023-05-22T14:02:00.426Z",
  "creationTime": "2023-05-22T14:02:00.426Z",
  "responseTime": "2023-05-22T14:02:00.426Z",
  "reportDetails": "Transação feita através de QR Code falso em boleto",
  "analysisResult": "DISAGREED",
  "correlationId": "A20210825095209b98f156a05d47f579",
  "analysisDetails": "Fraude não identificada",
  "id": "91d65e98-97c0-4b0f-b577-73625da1f9fc",
  "endToEndId": "E3030629420200808185300887639654"
}

Após responder o fechamento da recuperação de valores, será enviado webhook informando que foi fechado.


Exemplo de webhook que será enviado caso ocorra a Rejeição da recuperação de valores:

Entity: pix-infraction
Status CLOSED

"analysisResult": DISAGREED

{
	"lastUpdateTimestamp": "0001-01-01T00:00:00",
	"webhookId": "infraction-CLOSED-96f2a8e0-8ee4-40f1-806d-49a7d818afb1",
	"body": {
		"analysisDetails": "Em contato com o cliente, não foi identificado fraude.",
		"infractionType": "REFUND_REQUEST",
		"creationTime": "2026-04-17T00:31:25.908+00:00",
		"reportDetails": "Usuário pagador contestou a transação via fluxo formal previsto pelo MED. Favor avaliar se há indícios de fraude e, caso confirmado, efetuar a devolução do valor.",
		"responseTime": "0001-01-01T00:00:00",
		"analysisResult": "DISAGREED",
		"contactCreator": {
			"contactEmail": "[email protected]",
			"contactPhone": "+5511999935786"
		},
		"endToEndId": "E1057352120260416191181XDS9fTfUf",
		"reportedBy": "DEBITED_PARTICIPANT",
		"infractionData": {
			"infractingAccountData": {
				"branch": 0
			},
			"debitedParticipant": "10573521",
			"reportedBy": "DEBITED_PARTICIPANT",
			"transactionDate": "0001-01-01T00:00:00",
			"creditedParticipant": "22181404"
		},
		"transactionId": "E1057352120260416191181XDS9fTfUf",
		"creditedParticipant": "22181404",
		"situationType": "ACCOUNT_TAKEOVER",
		"id": "96f2a8e0-8ee4-40f1-806d-49a7d818afb1",
		"debitedParticipant": "10573521",
		"lastModified": "2026-04-17T12:04:46.684+00:00",
		"status": "CLOSED"
	},
	"entity": "pix-infraction",
	"transactionId": 202604160000741630,
	"createTimestamp": "0001-01-01T00:00:00",
	"status": "CLOSED"
}


Aceitando a recuperação de valores como fraude

Quando a análise de uma recuperação de valor for aceita como fraude, o fluxo continua o mesmo, sendo necessário responder via API com o analysisResult =AGREED.


Exemplo de request

Post: https://sandbox.openfinance.celcoin.dev/baas/v2/infraction/{infractionReportId}/close

curl --request POST \
     --url https://sandbox.openfinance.celcoin.dev/baas/v2/infraction/infratcionReportId/close \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "analysisResult": "AGREED",
  "analysisDetails": "Após analise, realizamos o bloqueio definitivo do cadastro porem não possui saldo para devolução",
  "fraudType": "APPLICATION_FRAUD"
}

👍

Sucesso 200

{
  "status": "OPEN",
  "creditedParticipant": "99999011",
  "debitedParticipant": "13935893",
  "infractionType": "FRAUD",
  "reportedBy": "DEBITED_PARTICIPANT",
  "lastModified": "2023-05-22T14:02:00.426Z",
  "creationTime": "2023-05-22T14:02:00.426Z",
  "responseTime": "2023-05-22T14:02:00.426Z",
  "reportDetails": "Transação feita através de QR Code falso em boleto",
  "analysisResult": "AGREED",
  "correlationId": "A20210825095209b98f156a05d47f579",
  "analysisDetails": "Após analise, realizamos o bloqueio definitivo do cadastro porem não possui saldo para devolução",
  "id": "91d65e98-97c0-4b0f-b577-73625da1f9fc",
  "endToEndId": "E3030629420200808185300887639654"
}

Exemplo de webhook que será enviado caso a recuperação de valores seja aceita:

Entity: pix-infraction
Status CLOSED

"analysisResult": AGREED

{
	"lastUpdateTimestamp": "0001-01-01T00:00:00",
	"webhookId": "infraction-CLOSED-96f2a8e0-8ee4-40f1-806d-49a7d818afb1",
	"body": {
		"analysisDetails": "Em contato com o cliente, não foi identificado fraude.",
		"infractionType": "REFUND_REQUEST",
		"creationTime": "2026-04-17T00:31:25.908+00:00",
		"reportDetails": "Usuário pagador contestou a transação via fluxo formal previsto pelo MED. Favor avaliar se há indícios de fraude e, caso confirmado, efetuar a devolução do valor.",
		"responseTime": "0001-01-01T00:00:00",
		"analysisResult": "AGREED",
		"contactCreator": {
			"contactEmail": "[email protected]",
			"contactPhone": "+5511999935786"
		},
		"endToEndId": "E1057352120260416191181XDS9fTfUf",
		"reportedBy": "DEBITED_PARTICIPANT",
		"infractionData": {
			"infractingAccountData": {
				"branch": 0
			},
			"debitedParticipant": "10573521",
			"reportedBy": "DEBITED_PARTICIPANT",
			"transactionDate": "0001-01-01T00:00:00",
			"creditedParticipant": "22181404"
		},
		"transactionId": "E1057352120260416191181XDS9fTfUf",
		"creditedParticipant": "22181404",
		"situationType": "ACCOUNT_TAKEOVER",
		"id": "96f2a8e0-8ee4-40f1-806d-49a7d818afb1",
		"debitedParticipant": "10573521",
		"lastModified": "2026-04-17T12:04:46.684+00:00",
		"status": "CLOSED"
	},
	"entity": "pix-infraction",
	"transactionId": 202604160000741630,
	"createTimestamp": "0001-01-01T00:00:00",
	"status": "CLOSED"
}

Infração cancelada pela IF contestante.

Existe também a situação que a IF que abriu a solicitação de recuperação de valores cancela essa solicitação, neste cenário também será enviado um webhook informando esse cancelamento. Importante mencionar, que após esse cancelamento nenhuma outra ação será tomada, o próprio cancelamento encerrará o fluxo.

Exemplo de webhook que será enviado caso ocorra o Cancelamento da recuperação de valores:

Entity: pix-infraction
Status CANCELLED

{
	"lastUpdateTimestamp": "2026-04-16T16:44:24.867",
	"pactualId": "01000000-534d-774a-0353-08de9bf08f1e",
	"clientRequestId": "",
	"body": {
		"infractionType": "REFUND_REQUEST",
		"creationTime": "2026-04-16T17:16:20.637",
		"reportDetails": "fizeram um pix sem meu conhecimento preciso do estorno do valor",
		"responseTime": "2026-04-16T16:44:24.867",
		"endToEndId": "E20855875202604161943PGGLW8G9TKD",
		"reportedBy": "DEBITED_PARTICIPANT",
		"infractionData": {
			"taxIdNumber": "93763425187",
			"infractingAccountData": {
				"accountNumber": "481163665",
				"branch": 1
			},
			"debitedParticipant": "20855875",
			"reportedBy": "DEBITED_PARTICIPANT",
			"transactionDate": "2026-04-16T16:44:24.867",
			"creditedParticipant": "13935893",
			"key": "06c224da-23a0-40ea-91dc-78d45c3c824a"
		},
		"transactionId": "E20855875202604161943PGGLW8G9TKD",
		"creditedParticipant": "13935893",
		"transactionType": "TRANSFER",
		"id": "7df553a4-47ef-46f5-88d4-f70a29373ef7",
		"debitedParticipant": "20855875",
		"lastModified": "2026-04-17T08:16:55.41",
		"status": "CANCELLED"
	},
	"entity": "pix-infraction ",
	"transactionId": 202604160000781380,
	"createTimestamp": "2026-04-16T16:44:24.867",
	"status": "CANCELLED"
}