Baixar comprovante do item de payout
curl --request GET \
--url http://localhost:3030/v1/payouts/batches/{batchId}/items/{itemId}/receipt \
--header 'x-client-id: <api-key>' \
--header 'x-client-secret: <api-key>' \
--header 'x-turbofy-signature: <x-turbofy-signature>' \
--header 'x-turbofy-timestamp: <x-turbofy-timestamp>'import requests
url = "http://localhost:3030/v1/payouts/batches/{batchId}/items/{itemId}/receipt"
headers = {
"x-client-id": "<api-key>",
"x-client-secret": "<api-key>",
"x-turbofy-timestamp": "<x-turbofy-timestamp>",
"x-turbofy-signature": "<x-turbofy-signature>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'x-client-id': '<api-key>',
'x-client-secret': '<api-key>',
'x-turbofy-timestamp': '<x-turbofy-timestamp>',
'x-turbofy-signature': '<x-turbofy-signature>'
}
};
fetch('http://localhost:3030/v1/payouts/batches/{batchId}/items/{itemId}/receipt', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3030",
CURLOPT_URL => "http://localhost:3030/v1/payouts/batches/{batchId}/items/{itemId}/receipt",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-client-id: <api-key>",
"x-client-secret: <api-key>",
"x-turbofy-signature: <x-turbofy-signature>",
"x-turbofy-timestamp: <x-turbofy-timestamp>"
],
]);
$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 := "http://localhost:3030/v1/payouts/batches/{batchId}/items/{itemId}/receipt"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-client-id", "<api-key>")
req.Header.Add("x-client-secret", "<api-key>")
req.Header.Add("x-turbofy-timestamp", "<x-turbofy-timestamp>")
req.Header.Add("x-turbofy-signature", "<x-turbofy-signature>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://localhost:3030/v1/payouts/batches/{batchId}/items/{itemId}/receipt")
.header("x-client-id", "<api-key>")
.header("x-client-secret", "<api-key>")
.header("x-turbofy-timestamp", "<x-turbofy-timestamp>")
.header("x-turbofy-signature", "<x-turbofy-signature>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3030/v1/payouts/batches/{batchId}/items/{itemId}/receipt")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-client-id"] = '<api-key>'
request["x-client-secret"] = '<api-key>'
request["x-turbofy-timestamp"] = '<x-turbofy-timestamp>'
request["x-turbofy-signature"] = '<x-turbofy-signature>'
response = http.request(request)
puts response.read_body"<string>"{
"error": {
"code": "<string>",
"message": "<string>",
"details": {},
"traceId": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {},
"traceId": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {},
"traceId": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {},
"traceId": "<string>"
}
}Comprovantes
Baixar comprovante de payout
Baixa o PDF TurbofyPay de um item de payout pago, com beneficiario real confirmado.
GET
/
v1
/
payouts
/
batches
/
{batchId}
/
items
/
{itemId}
/
receipt
Baixar comprovante do item de payout
curl --request GET \
--url http://localhost:3030/v1/payouts/batches/{batchId}/items/{itemId}/receipt \
--header 'x-client-id: <api-key>' \
--header 'x-client-secret: <api-key>' \
--header 'x-turbofy-signature: <x-turbofy-signature>' \
--header 'x-turbofy-timestamp: <x-turbofy-timestamp>'import requests
url = "http://localhost:3030/v1/payouts/batches/{batchId}/items/{itemId}/receipt"
headers = {
"x-client-id": "<api-key>",
"x-client-secret": "<api-key>",
"x-turbofy-timestamp": "<x-turbofy-timestamp>",
"x-turbofy-signature": "<x-turbofy-signature>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'x-client-id': '<api-key>',
'x-client-secret': '<api-key>',
'x-turbofy-timestamp': '<x-turbofy-timestamp>',
'x-turbofy-signature': '<x-turbofy-signature>'
}
};
fetch('http://localhost:3030/v1/payouts/batches/{batchId}/items/{itemId}/receipt', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3030",
CURLOPT_URL => "http://localhost:3030/v1/payouts/batches/{batchId}/items/{itemId}/receipt",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-client-id: <api-key>",
"x-client-secret: <api-key>",
"x-turbofy-signature: <x-turbofy-signature>",
"x-turbofy-timestamp: <x-turbofy-timestamp>"
],
]);
$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 := "http://localhost:3030/v1/payouts/batches/{batchId}/items/{itemId}/receipt"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-client-id", "<api-key>")
req.Header.Add("x-client-secret", "<api-key>")
req.Header.Add("x-turbofy-timestamp", "<x-turbofy-timestamp>")
req.Header.Add("x-turbofy-signature", "<x-turbofy-signature>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://localhost:3030/v1/payouts/batches/{batchId}/items/{itemId}/receipt")
.header("x-client-id", "<api-key>")
.header("x-client-secret", "<api-key>")
.header("x-turbofy-timestamp", "<x-turbofy-timestamp>")
.header("x-turbofy-signature", "<x-turbofy-signature>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3030/v1/payouts/batches/{batchId}/items/{itemId}/receipt")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["x-client-id"] = '<api-key>'
request["x-client-secret"] = '<api-key>'
request["x-turbofy-timestamp"] = '<x-turbofy-timestamp>'
request["x-turbofy-signature"] = '<x-turbofy-signature>'
response = http.request(request)
puts response.read_body"<string>"{
"error": {
"code": "<string>",
"message": "<string>",
"details": {},
"traceId": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {},
"traceId": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {},
"traceId": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {},
"traceId": "<string>"
}
}Caso de uso
Use este endpoint para baixar o comprovante PDF de um item de payout especifico. O comprovante e sempre por item, nao por lote, e usa marca TurbofyPay. Para uso autenticado no painel ou em fluxos seller, o mesmo comprovante tambem pode ser acessado porGET /sellers/saques/payout-items/{itemId}/receipt.
Autenticacao
Na rota v1, envie:x-client-idx-client-secretx-turbofy-timestampx-turbofy-signature
x-client-idx-client-secret
Pre-condicoes
- O item precisa pertencer ao merchant autenticado.
- O payout precisa estar pago ou concluido.
- O item precisa ter rastreio Pix suficiente para localizar o comprovante.
- O beneficiario real precisa estar completo para gerar o PDF TurbofyPay.
Beneficiario e instituicao
O comprovante usabeneficiary como recebedor real. declaredRecipient nunca e
usado como prova de quem recebeu o Pix.
A instituicao do beneficiario deve vir da transacao Pix reconciliada ou do
comprovante oficial usado como evidencia. Nomes de PSP, fornecedor, rota
operacional ou conta de infraestrutura nao devem aparecer como instituicao do
beneficiario.
Response de sucesso
Em200, a API retorna:
Content-Type: application/pdfContent-Disposition: inlineCache-Control: private, no-store
curl --request GET \
--url "https://api.turbofypay.com/v1/payouts/batches/batch-1/items/b892f167-1b3b-4718-a0b4-5ef81fc4d14b/receipt" \
--header "x-client-id: <client-id>" \
--header "x-client-secret: <client-secret>" \
--header "x-turbofy-timestamp: 1772805000000" \
--header "x-turbofy-signature: <hmac-sha256>" \
--output comprovante-payout.pdf
Erros comuns reais
| HTTP | code | Quando ocorre |
|---|---|---|
401 | INVALID_CREDENTIALS | Credenciais ausentes ou invalidas. |
401 | INVALID_SIGNATURE | Assinatura HMAC ausente, invalida ou expirada na rota v1. |
403 | PAYOUT_ITEM_FORBIDDEN | O item nao pertence ao merchant autenticado. |
404 | PAYOUT_ITEM_NOT_FOUND | Item inexistente ou fora do lote informado. |
409 | PAYOUT_ITEM_RECEIPT_UNAVAILABLE | Comprovante indisponivel ou beneficiario real ainda incompleto. |
Regras de negocio
- O PDF usa marca TurbofyPay.
- O PDF oficial do provedor pode ser usado internamente como evidencia, mas nao e entregue como brand final por padrao.
- A API nao inventa instituicao a partir de ISPB.
- O comprovante nao deve exibir nome de fornecedor operacional.
- Documento completo e chave Pix completa aparecem somente em contexto autenticado/autorizado.
Proximos passos
- Consulte os itens em Listar itens de payout.
- Para filtros e exportacao operacional, use Listar payouts de saques.
Authorizations
Headers
Path Parameters
Response
Comprovante PDF gerado.
The response is of type file.
Last modified on November 4, 2026