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
url field returned by voucher endpoint will be a presigned URL served from Google Cloud Storage instead of Amazon S3. There are no changes to the API behavior or contract.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