Saltar al contenido principal
POST
/
api
/
v1
/
dict
/
funds-recoveries
/
{id}
/
refund
Crear una devolución bajo una recuperación de fondos
curl --request POST \
  --url https://spi.sandbox.lerian.net/api/v1/dict/funds-recoveries/{id}/refund \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "amountCents": 123,
  "endToEndId": "<string>",
  "reason": "<string>",
  "requestedByISPB": "<string>"
}
'
import requests

url = "https://spi.sandbox.lerian.net/api/v1/dict/funds-recoveries/{id}/refund"

payload = {
    "amountCents": 123,
    "endToEndId": "<string>",
    "reason": "<string>",
    "requestedByISPB": "<string>"
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: JSON.stringify({
    amountCents: 123,
    endToEndId: '<string>',
    reason: '<string>',
    requestedByISPB: '<string>'
  })
};

fetch('https://spi.sandbox.lerian.net/api/v1/dict/funds-recoveries/{id}/refund', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://spi.sandbox.lerian.net/api/v1/dict/funds-recoveries/{id}/refund",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
    'amountCents' => 123,
    'endToEndId' => '<string>',
    'reason' => '<string>',
    'requestedByISPB' => '<string>'
  ]),
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer <token>",
    "Content-Type: application/json"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://spi.sandbox.lerian.net/api/v1/dict/funds-recoveries/{id}/refund"

	payload := strings.NewReader("{\n  \"amountCents\": 123,\n  \"endToEndId\": \"<string>\",\n  \"reason\": \"<string>\",\n  \"requestedByISPB\": \"<string>\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://spi.sandbox.lerian.net/api/v1/dict/funds-recoveries/{id}/refund")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"amountCents\": 123,\n  \"endToEndId\": \"<string>\",\n  \"reason\": \"<string>\",\n  \"requestedByISPB\": \"<string>\"\n}")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://spi.sandbox.lerian.net/api/v1/dict/funds-recoveries/{id}/refund")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"amountCents\": 123,\n  \"endToEndId\": \"<string>\",\n  \"reason\": \"<string>\",\n  \"requestedByISPB\": \"<string>\"\n}"

response = http.request(request)
puts response.read_body
{
  "amountCents": 123,
  "createdAt": "<string>",
  "endToEndId": "<string>",
  "id": "<string>",
  "reason": "<string>",
  "reportStatus": "<string>",
  "requestedByISPB": "<string>",
  "status": "<string>",
  "updatedAt": "<string>",
  "effectiveRefundedAmountCents": 123,
  "fundsRecoveryId": "<string>",
  "monitorAccount": true,
  "refundAccount": {
    "accountNumber": "<string>",
    "accountType": "<string>",
    "participant": "<string>",
    "taxIdNumber": "<string>",
    "branch": "<string>"
  }
}
{
  "code": "<string>",
  "detail": "<string>",
  "errors": [
    {
      "location": "<string>",
      "message": "<string>",
      "value": "<unknown>"
    }
  ],
  "instance": "<string>",
  "status": 123,
  "title": "<string>",
  "type": "about:blank"
}

Autorizaciones

Authorization
string
header
requerido

JWT bearer token issued by the identity provider.

Parámetros de ruta

id
string
requerido

Funds recovery UUID (local record id) the refund is bound to

Cuerpo

application/json

DICT refund to create under the funds recovery and report to BACEN

amountCents
integer<int64>
requerido

Refund amount in integer minor units (BRL centavos); must be greater than zero

Ejemplo:

150000

endToEndId
string
requerido

BACEN end-to-end identifier (E2E ID) of the PIX transaction to refund

Ejemplo:

"E1234567820260614ABCDEFGHIJKLMNO"

reason
string
requerido

Free-text justification for the refund request

requestedByISPB
string
requerido

ISPB (8 numeric digits) of the participant requesting the refund; gated to the calling direct's scope (JRN-151)

Ejemplo:

"12345678"

Respuesta

Created

Persisted local DICT refund request record

amountCents
integer<int64>
requerido

Refund amount in integer minor units (BRL centavos)

Ejemplo:

150000

createdAt
string
requerido

Record creation timestamp (RFC 3339, UTC)

Ejemplo:

"2026-06-14T12:00:00Z"

endToEndId
string
requerido

BACEN end-to-end identifier (E2E ID) of the refunded PIX transaction

Ejemplo:

"E1234567820260614ABCDEFGHIJKLMNO"

id
string
requerido

Server-assigned refund record UUID

Ejemplo:

"550e8400-e29b-41d4-a716-446655440001"

reason
string
requerido

Free-text justification for the refund request

reportStatus
string
requerido

BACEN report delivery state: PENDING, SENT, or FAILED (FAILED is retryable; the local record stands)

Ejemplo:

"SENT"

requestedByISPB
string
requerido

ISPB (8 numeric digits) of the participant that requested the refund

Ejemplo:

"12345678"

status
string
requerido

Local refund lifecycle state: REQUESTED, ACCEPTED, REJECTED, SETTLED, or CANCELLED

Ejemplo:

"REQUESTED"

updatedAt
string
requerido

Last update timestamp (RFC 3339, UTC)

Ejemplo:

"2026-06-14T12:00:00Z"

effectiveRefundedAmountCents
integer<int64>

MED 2.0: effective refunded amount in cents recorded on an accepting close (verbatim); omitted until close

Ejemplo:

75000

fundsRecoveryId
string

Local funds-recovery id this refund is bound to (refund-under-recovery); omitted for a standalone refund

Ejemplo:

"550e8400-e29b-41d4-a716-446655440003"

monitorAccount
boolean

MED 2.0: whether the destination account is monitored

Ejemplo:

true

refundAccount
object

MED 2.0: destination account of a refund-under-recovery; omitted for a standalone refund