Redemptions
Request redemption
Draft: specification in progress. Endpoints and fields may change.
Requests a USDC redemption to a linked company wallet. The redemption starts
as pendente and requires approval. Idempotency-Key is required.
Scope: propose.
POST
/
resgates
Request redemption
curl --request POST \
--url https://api.t3sa.com/v1/resgates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"valor": "150000.00",
"carteira_destino_id": "cart_3k9d",
"referencia_interna": "folha-2026-09"
}
'import requests
url = "https://api.t3sa.com/v1/resgates"
payload = {
"valor": "150000.00",
"carteira_destino_id": "cart_3k9d",
"referencia_interna": "folha-2026-09"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
valor: '150000.00',
carteira_destino_id: 'cart_3k9d',
referencia_interna: 'folha-2026-09'
})
};
fetch('https://api.t3sa.com/v1/resgates', 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.t3sa.com/v1/resgates",
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([
'valor' => '150000.00',
'carteira_destino_id' => 'cart_3k9d',
'referencia_interna' => 'folha-2026-09'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.t3sa.com/v1/resgates"
payload := strings.NewReader("{\n \"valor\": \"150000.00\",\n \"carteira_destino_id\": \"cart_3k9d\",\n \"referencia_interna\": \"folha-2026-09\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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://api.t3sa.com/v1/resgates")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"valor\": \"150000.00\",\n \"carteira_destino_id\": \"cart_3k9d\",\n \"referencia_interna\": \"folha-2026-09\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.t3sa.com/v1/resgates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"valor\": \"150000.00\",\n \"carteira_destino_id\": \"cart_3k9d\",\n \"referencia_interna\": \"folha-2026-09\"\n}"
response = http.request(request)
puts response.read_body{
"id": "res_4t7x",
"valor": "150000.00",
"carteira_destino_id": "cart_3k9d",
"referencia_interna": "folha-2026-09",
"status": "pendente",
"transacoes": [],
"criado_em": "2026-09-01T14:05:00Z",
"concluido_em": null
}{
"erro": {
"codigo": "saldo_insuficiente",
"mensagem": "<string>",
"campo": "<string>",
"requisicao_id": "req_9d8c7b"
}
}{
"erro": {
"codigo": "saldo_insuficiente",
"mensagem": "<string>",
"campo": "<string>",
"requisicao_id": "req_9d8c7b"
}
}{
"erro": {
"codigo": "saldo_insuficiente",
"mensagem": "<string>",
"campo": "<string>",
"requisicao_id": "req_9d8c7b"
}
}{
"erro": {
"codigo": "saldo_insuficiente",
"mensagem": "<string>",
"campo": "<string>",
"requisicao_id": "req_9d8c7b"
}
}{
"erro": {
"codigo": "saldo_insuficiente",
"mensagem": "<string>",
"campo": "<string>",
"requisicao_id": "req_9d8c7b"
}
}Draft: specification in progress. Endpoints and fields may change.
Authorizations
bearerAuthbearerAuth & tesaTimestamp & tesaSignature
The organization's API key (tesa_live_... in production, tesa_test_... in the sandbox).
Headers
Required for this operation. A network failure must not create two operations.
Body
application/json
USDC amount, a decimal string with two decimal places.
Pattern:
^\d+\.\d{2}$Example:
"842110.00"
Linked wallet that receives the USDC. Redemptions only go to the company's own wallets.
Free text for reconciliation, such as the payment batch in the ERP.
Response
Redemption created, pending approval.
Example:
"res_4t7x"
USDC amount, a decimal string with two decimal places.
Pattern:
^\d+\.\d{2}$Example:
"842110.00"
Available options:
pendente, aprovado, aguardando_assinatura, concluido, falhou Show child attributes
Show child attributes
⌘I
Request redemption
curl --request POST \
--url https://api.t3sa.com/v1/resgates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"valor": "150000.00",
"carteira_destino_id": "cart_3k9d",
"referencia_interna": "folha-2026-09"
}
'import requests
url = "https://api.t3sa.com/v1/resgates"
payload = {
"valor": "150000.00",
"carteira_destino_id": "cart_3k9d",
"referencia_interna": "folha-2026-09"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
valor: '150000.00',
carteira_destino_id: 'cart_3k9d',
referencia_interna: 'folha-2026-09'
})
};
fetch('https://api.t3sa.com/v1/resgates', 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.t3sa.com/v1/resgates",
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([
'valor' => '150000.00',
'carteira_destino_id' => 'cart_3k9d',
'referencia_interna' => 'folha-2026-09'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.t3sa.com/v1/resgates"
payload := strings.NewReader("{\n \"valor\": \"150000.00\",\n \"carteira_destino_id\": \"cart_3k9d\",\n \"referencia_interna\": \"folha-2026-09\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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://api.t3sa.com/v1/resgates")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"valor\": \"150000.00\",\n \"carteira_destino_id\": \"cart_3k9d\",\n \"referencia_interna\": \"folha-2026-09\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.t3sa.com/v1/resgates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"valor\": \"150000.00\",\n \"carteira_destino_id\": \"cart_3k9d\",\n \"referencia_interna\": \"folha-2026-09\"\n}"
response = http.request(request)
puts response.read_body{
"id": "res_4t7x",
"valor": "150000.00",
"carteira_destino_id": "cart_3k9d",
"referencia_interna": "folha-2026-09",
"status": "pendente",
"transacoes": [],
"criado_em": "2026-09-01T14:05:00Z",
"concluido_em": null
}{
"erro": {
"codigo": "saldo_insuficiente",
"mensagem": "<string>",
"campo": "<string>",
"requisicao_id": "req_9d8c7b"
}
}{
"erro": {
"codigo": "saldo_insuficiente",
"mensagem": "<string>",
"campo": "<string>",
"requisicao_id": "req_9d8c7b"
}
}{
"erro": {
"codigo": "saldo_insuficiente",
"mensagem": "<string>",
"campo": "<string>",
"requisicao_id": "req_9d8c7b"
}
}{
"erro": {
"codigo": "saldo_insuficiente",
"mensagem": "<string>",
"campo": "<string>",
"requisicao_id": "req_9d8c7b"
}
}{
"erro": {
"codigo": "saldo_insuficiente",
"mensagem": "<string>",
"campo": "<string>",
"requisicao_id": "req_9d8c7b"
}
}