Get a refund voucher URL
curl --request GET \
--url https://api.fintoc.com/v1/refunds/{id}/voucher_url \
--header 'Authorization: <api-key>'import requests
url = "https://api.fintoc.com/v1/refunds/{id}/voucher_url"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.fintoc.com/v1/refunds/{id}/voucher_url', 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.fintoc.com/v1/refunds/{id}/voucher_url",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fintoc.com/v1/refunds/{id}/voucher_url"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.fintoc.com/v1/refunds/{id}/voucher_url")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fintoc.com/v1/refunds/{id}/voucher_url")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"url": "https://storage.googleapis.com/fintoc-vouchers/refunds/ref_8XzNbCv1LqKjWp4R/voucher.pdf"
}{
"error": {
"type": "invalid_request_error",
"code": "invalid_refund_to_get_voucher",
"param": null,
"message": "Can not get voucher for non succeeded refund.",
"doc_url": "https://docs.fintoc.com/reference/errors"
}
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "Invalid API Key: invalid-*oken"
}
}{
"error": {
"type": "invalid_request_error",
"code": "missing_resource",
"param": "id",
"message": "No such refund: ref_8XzNbCv1LqKjWp4R",
"doc_url": "https://docs.fintoc.com/reference/errors"
}
}Refunds
Get a refund voucher URL
Returns a presigned URL to download the PDF voucher of a refund. The URL expires 5 minutes after it is generated. Vouchers are available for succeeded refunds in live mode, disbursed by bank transfer or card.
GET
/
refunds
/
{id}
/
voucher_url
Get a refund voucher URL
curl --request GET \
--url https://api.fintoc.com/v1/refunds/{id}/voucher_url \
--header 'Authorization: <api-key>'import requests
url = "https://api.fintoc.com/v1/refunds/{id}/voucher_url"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.fintoc.com/v1/refunds/{id}/voucher_url', 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.fintoc.com/v1/refunds/{id}/voucher_url",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fintoc.com/v1/refunds/{id}/voucher_url"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.fintoc.com/v1/refunds/{id}/voucher_url")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fintoc.com/v1/refunds/{id}/voucher_url")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"url": "https://storage.googleapis.com/fintoc-vouchers/refunds/ref_8XzNbCv1LqKjWp4R/voucher.pdf"
}{
"error": {
"type": "invalid_request_error",
"code": "invalid_refund_to_get_voucher",
"param": null,
"message": "Can not get voucher for non succeeded refund.",
"doc_url": "https://docs.fintoc.com/reference/errors"
}
}{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "Invalid API Key: invalid-*oken"
}
}{
"error": {
"type": "invalid_request_error",
"code": "missing_resource",
"param": "id",
"message": "No such refund: ref_8XzNbCv1LqKjWp4R",
"doc_url": "https://docs.fintoc.com/reference/errors"
}
}v1 · Base URL https://api.fintoc.com/v1
Voucher URL storage migrationStarting May 4, 2026, the voucher endpoint returns a Google Cloud Storage presigned URL in the
url field instead of an Amazon S3 URL. The API behavior and contract remain unchanged.Authorizations
Path Parameters
The id of the refund whose voucher you want to retrieve.
Response
Presigned URL to download the PDF voucher. The URL expires 5 minutes after it is generated.
Presigned URL to download the PDF voucher of the refund. The URL expires 5 minutes after it is generated.
Example:
"https://storage.googleapis.com/fintoc-vouchers/refunds/ref_8XzNbCv1LqKjWp4R/voucher.pdf"
Was this page helpful?
⌘I