Request a refund
curl --request POST \
--url https://api-global.fastpaybrasil.com/v1/refunds \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"chargeId": "2vorkDcXyvzifL63YX09S9VqcnI",
"reason": "Customer requested cancellation"
}
'import requests
url = "https://api-global.fastpaybrasil.com/v1/refunds"
payload = {
"chargeId": "2vorkDcXyvzifL63YX09S9VqcnI",
"reason": "Customer requested cancellation"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
chargeId: '2vorkDcXyvzifL63YX09S9VqcnI',
reason: 'Customer requested cancellation'
})
};
fetch('https://api-global.fastpaybrasil.com/v1/refunds', 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://api-global.fastpaybrasil.com/v1/refunds",
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([
'chargeId' => '2vorkDcXyvzifL63YX09S9VqcnI',
'reason' => 'Customer requested cancellation'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"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://api-global.fastpaybrasil.com/v1/refunds"
payload := strings.NewReader("{\n \"chargeId\": \"2vorkDcXyvzifL63YX09S9VqcnI\",\n \"reason\": \"Customer requested cancellation\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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://api-global.fastpaybrasil.com/v1/refunds")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"chargeId\": \"2vorkDcXyvzifL63YX09S9VqcnI\",\n \"reason\": \"Customer requested cancellation\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-global.fastpaybrasil.com/v1/refunds")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"chargeId\": \"2vorkDcXyvzifL63YX09S9VqcnI\",\n \"reason\": \"Customer requested cancellation\"\n}"
response = http.request(request)
puts response.read_body{
"status": "refunded",
"reason": null,
"pspRefundRefId": "ref_abc123"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}Charges
Request a refund
Requests a full refund (estorno) for a charge that has paid status.
Partial refunds are not supported — the entire charge amount is reversed.
Works for both PIX and credit card payment methods.
On success the charge status transitions to refunded and the
charge.refunded webhook event is fired to all configured endpoints
and the charge’s postbackUrl (if set).
POST
/
v1
/
refunds
Request a refund
curl --request POST \
--url https://api-global.fastpaybrasil.com/v1/refunds \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"chargeId": "2vorkDcXyvzifL63YX09S9VqcnI",
"reason": "Customer requested cancellation"
}
'import requests
url = "https://api-global.fastpaybrasil.com/v1/refunds"
payload = {
"chargeId": "2vorkDcXyvzifL63YX09S9VqcnI",
"reason": "Customer requested cancellation"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
chargeId: '2vorkDcXyvzifL63YX09S9VqcnI',
reason: 'Customer requested cancellation'
})
};
fetch('https://api-global.fastpaybrasil.com/v1/refunds', 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://api-global.fastpaybrasil.com/v1/refunds",
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([
'chargeId' => '2vorkDcXyvzifL63YX09S9VqcnI',
'reason' => 'Customer requested cancellation'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"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://api-global.fastpaybrasil.com/v1/refunds"
payload := strings.NewReader("{\n \"chargeId\": \"2vorkDcXyvzifL63YX09S9VqcnI\",\n \"reason\": \"Customer requested cancellation\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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://api-global.fastpaybrasil.com/v1/refunds")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"chargeId\": \"2vorkDcXyvzifL63YX09S9VqcnI\",\n \"reason\": \"Customer requested cancellation\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-global.fastpaybrasil.com/v1/refunds")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"chargeId\": \"2vorkDcXyvzifL63YX09S9VqcnI\",\n \"reason\": \"Customer requested cancellation\"\n}"
response = http.request(request)
puts response.read_body{
"status": "refunded",
"reason": null,
"pspRefundRefId": "ref_abc123"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}{
"statusCode": 422,
"message": "SubMerchant is not active",
"error": "Unprocessable Entity"
}Authorizations
HTTP Basic authentication. Use your secret key as the username and an empty string as password. The API key should be base64 encoded in the format 'username:' when sending the Authorization header.
Body
application/json
Response
Refund requested successfully
⌘I