Redeem Stablecoin
curl --request POST \
--url https://api.stateset.com/v1/stablecoin/redeem \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sender": "<string>",
"amount": {
"denom": "<string>",
"amount": "<string>"
},
"destination": {
"type": "<string>",
"account_number": "<string>",
"routing_number": "<string>",
"swift_code": "<string>",
"iban": "<string>",
"bank_name": "<string>",
"beneficiary_name": "<string>"
},
"reference_id": "<string>",
"compliance": {
"purpose": "<string>",
"source_of_funds": "<string>"
},
"metadata": {}
}
'import requests
url = "https://api.stateset.com/v1/stablecoin/redeem"
payload = {
"sender": "<string>",
"amount": {
"denom": "<string>",
"amount": "<string>"
},
"destination": {
"type": "<string>",
"account_number": "<string>",
"routing_number": "<string>",
"swift_code": "<string>",
"iban": "<string>",
"bank_name": "<string>",
"beneficiary_name": "<string>"
},
"reference_id": "<string>",
"compliance": {
"purpose": "<string>",
"source_of_funds": "<string>"
},
"metadata": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
sender: '<string>',
amount: {denom: '<string>', amount: '<string>'},
destination: {
type: '<string>',
account_number: '<string>',
routing_number: '<string>',
swift_code: '<string>',
iban: '<string>',
bank_name: '<string>',
beneficiary_name: '<string>'
},
reference_id: '<string>',
compliance: {purpose: '<string>', source_of_funds: '<string>'},
metadata: {}
})
};
fetch('https://api.stateset.com/v1/stablecoin/redeem', 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.stateset.com/v1/stablecoin/redeem",
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([
'sender' => '<string>',
'amount' => [
'denom' => '<string>',
'amount' => '<string>'
],
'destination' => [
'type' => '<string>',
'account_number' => '<string>',
'routing_number' => '<string>',
'swift_code' => '<string>',
'iban' => '<string>',
'bank_name' => '<string>',
'beneficiary_name' => '<string>'
],
'reference_id' => '<string>',
'compliance' => [
'purpose' => '<string>',
'source_of_funds' => '<string>'
],
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.stateset.com/v1/stablecoin/redeem"
payload := strings.NewReader("{\n \"sender\": \"<string>\",\n \"amount\": {\n \"denom\": \"<string>\",\n \"amount\": \"<string>\"\n },\n \"destination\": {\n \"type\": \"<string>\",\n \"account_number\": \"<string>\",\n \"routing_number\": \"<string>\",\n \"swift_code\": \"<string>\",\n \"iban\": \"<string>\",\n \"bank_name\": \"<string>\",\n \"beneficiary_name\": \"<string>\"\n },\n \"reference_id\": \"<string>\",\n \"compliance\": {\n \"purpose\": \"<string>\",\n \"source_of_funds\": \"<string>\"\n },\n \"metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
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.stateset.com/v1/stablecoin/redeem")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sender\": \"<string>\",\n \"amount\": {\n \"denom\": \"<string>\",\n \"amount\": \"<string>\"\n },\n \"destination\": {\n \"type\": \"<string>\",\n \"account_number\": \"<string>\",\n \"routing_number\": \"<string>\",\n \"swift_code\": \"<string>\",\n \"iban\": \"<string>\",\n \"bank_name\": \"<string>\",\n \"beneficiary_name\": \"<string>\"\n },\n \"reference_id\": \"<string>\",\n \"compliance\": {\n \"purpose\": \"<string>\",\n \"source_of_funds\": \"<string>\"\n },\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stateset.com/v1/stablecoin/redeem")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sender\": \"<string>\",\n \"amount\": {\n \"denom\": \"<string>\",\n \"amount\": \"<string>\"\n },\n \"destination\": {\n \"type\": \"<string>\",\n \"account_number\": \"<string>\",\n \"routing_number\": \"<string>\",\n \"swift_code\": \"<string>\",\n \"iban\": \"<string>\",\n \"bank_name\": \"<string>\",\n \"beneficiary_name\": \"<string>\"\n },\n \"reference_id\": \"<string>\",\n \"compliance\": {\n \"purpose\": \"<string>\",\n \"source_of_funds\": \"<string>\"\n },\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"sender": "stateset1qypqxpq9qcrsszg2pvxq6rs0zqg3yyc5lzv7xu",
"amount": {
"denom": "ssusd",
"amount": "1000000000"
},
"destination": {
"type": "ach",
"account_number": "123456789",
"routing_number": "021000021",
"bank_name": "JPMorgan Chase",
"beneficiary_name": "John Doe"
},
"reference_id": "RED-2024-001234",
"compliance": {
"purpose": "business_operations",
"source_of_funds": "sales_revenue"
}
}
{
"id": "red_9h8g7f6e5d4c3b2a",
"object": "stablecoin_redemption",
"sender": "stateset1qypqxpq9qcrsszg2pvxq6rs0zqg3yyc5lzv7xu",
"amount": {
"denom": "ssusd",
"amount": "1000000000",
"display_amount": "1000.00 ssUSD",
"fiat_amount": "1000.00",
"fiat_currency": "USD"
},
"transaction_hash": "A7F4C1B8E5D2A9F7C3B1E8D5A2F9C7E1B4A7D2F5E8B1C4A7F9D2E5B8C1F4A7D2",
"status": "processing",
"estimated_arrival": "2024-01-17T16:00:00Z",
"fees": {
"network_fee": "0.50",
"processing_fee": "5.00",
"total_fee": "5.50"
},
"created_at": "2024-01-15T10:45:00Z",
"completed_at": null
}
Redeem Stablecoin
Redeem stablecoins for fiat currency
POST
/
v1
/
stablecoin
/
redeem
Redeem Stablecoin
curl --request POST \
--url https://api.stateset.com/v1/stablecoin/redeem \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sender": "<string>",
"amount": {
"denom": "<string>",
"amount": "<string>"
},
"destination": {
"type": "<string>",
"account_number": "<string>",
"routing_number": "<string>",
"swift_code": "<string>",
"iban": "<string>",
"bank_name": "<string>",
"beneficiary_name": "<string>"
},
"reference_id": "<string>",
"compliance": {
"purpose": "<string>",
"source_of_funds": "<string>"
},
"metadata": {}
}
'import requests
url = "https://api.stateset.com/v1/stablecoin/redeem"
payload = {
"sender": "<string>",
"amount": {
"denom": "<string>",
"amount": "<string>"
},
"destination": {
"type": "<string>",
"account_number": "<string>",
"routing_number": "<string>",
"swift_code": "<string>",
"iban": "<string>",
"bank_name": "<string>",
"beneficiary_name": "<string>"
},
"reference_id": "<string>",
"compliance": {
"purpose": "<string>",
"source_of_funds": "<string>"
},
"metadata": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
sender: '<string>',
amount: {denom: '<string>', amount: '<string>'},
destination: {
type: '<string>',
account_number: '<string>',
routing_number: '<string>',
swift_code: '<string>',
iban: '<string>',
bank_name: '<string>',
beneficiary_name: '<string>'
},
reference_id: '<string>',
compliance: {purpose: '<string>', source_of_funds: '<string>'},
metadata: {}
})
};
fetch('https://api.stateset.com/v1/stablecoin/redeem', 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.stateset.com/v1/stablecoin/redeem",
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([
'sender' => '<string>',
'amount' => [
'denom' => '<string>',
'amount' => '<string>'
],
'destination' => [
'type' => '<string>',
'account_number' => '<string>',
'routing_number' => '<string>',
'swift_code' => '<string>',
'iban' => '<string>',
'bank_name' => '<string>',
'beneficiary_name' => '<string>'
],
'reference_id' => '<string>',
'compliance' => [
'purpose' => '<string>',
'source_of_funds' => '<string>'
],
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.stateset.com/v1/stablecoin/redeem"
payload := strings.NewReader("{\n \"sender\": \"<string>\",\n \"amount\": {\n \"denom\": \"<string>\",\n \"amount\": \"<string>\"\n },\n \"destination\": {\n \"type\": \"<string>\",\n \"account_number\": \"<string>\",\n \"routing_number\": \"<string>\",\n \"swift_code\": \"<string>\",\n \"iban\": \"<string>\",\n \"bank_name\": \"<string>\",\n \"beneficiary_name\": \"<string>\"\n },\n \"reference_id\": \"<string>\",\n \"compliance\": {\n \"purpose\": \"<string>\",\n \"source_of_funds\": \"<string>\"\n },\n \"metadata\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
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.stateset.com/v1/stablecoin/redeem")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sender\": \"<string>\",\n \"amount\": {\n \"denom\": \"<string>\",\n \"amount\": \"<string>\"\n },\n \"destination\": {\n \"type\": \"<string>\",\n \"account_number\": \"<string>\",\n \"routing_number\": \"<string>\",\n \"swift_code\": \"<string>\",\n \"iban\": \"<string>\",\n \"bank_name\": \"<string>\",\n \"beneficiary_name\": \"<string>\"\n },\n \"reference_id\": \"<string>\",\n \"compliance\": {\n \"purpose\": \"<string>\",\n \"source_of_funds\": \"<string>\"\n },\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stateset.com/v1/stablecoin/redeem")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"sender\": \"<string>\",\n \"amount\": {\n \"denom\": \"<string>\",\n \"amount\": \"<string>\"\n },\n \"destination\": {\n \"type\": \"<string>\",\n \"account_number\": \"<string>\",\n \"routing_number\": \"<string>\",\n \"swift_code\": \"<string>\",\n \"iban\": \"<string>\",\n \"bank_name\": \"<string>\",\n \"beneficiary_name\": \"<string>\"\n },\n \"reference_id\": \"<string>\",\n \"compliance\": {\n \"purpose\": \"<string>\",\n \"source_of_funds\": \"<string>\"\n },\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"sender": "stateset1qypqxpq9qcrsszg2pvxq6rs0zqg3yyc5lzv7xu",
"amount": {
"denom": "ssusd",
"amount": "1000000000"
},
"destination": {
"type": "ach",
"account_number": "123456789",
"routing_number": "021000021",
"bank_name": "JPMorgan Chase",
"beneficiary_name": "John Doe"
},
"reference_id": "RED-2024-001234",
"compliance": {
"purpose": "business_operations",
"source_of_funds": "sales_revenue"
}
}
{
"id": "red_9h8g7f6e5d4c3b2a",
"object": "stablecoin_redemption",
"sender": "stateset1qypqxpq9qcrsszg2pvxq6rs0zqg3yyc5lzv7xu",
"amount": {
"denom": "ssusd",
"amount": "1000000000",
"display_amount": "1000.00 ssUSD",
"fiat_amount": "1000.00",
"fiat_currency": "USD"
},
"transaction_hash": "A7F4C1B8E5D2A9F7C3B1E8D5A2F9C7E1B4A7D2F5E8B1C4A7F9D2E5B8C1F4A7D2",
"status": "processing",
"estimated_arrival": "2024-01-17T16:00:00Z",
"fees": {
"network_fee": "0.50",
"processing_fee": "5.00",
"total_fee": "5.50"
},
"created_at": "2024-01-15T10:45:00Z",
"completed_at": null
}
This endpoint allows verified users to redeem their stablecoins for fiat currency. Redemptions are subject to KYC/AML verification and minimum/maximum limits.
Authentication
This endpoint requires a valid API key withstablecoin:redeem permissions.
Authorization: Bearer YOUR_API_KEY
Request Body
string
required
The blockchain address holding the stablecoins to redeemExample:
stateset1qypqxpq9qcrsszg2pvxq6rs0zqg3yyc5lzv7xuobject
required
object
required
Destination for the fiat funds
Show Destination Object
Show Destination Object
string
required
Type of destination: “bank_wire”, “ach”, “swift”, “sepa”
string
required
Destination account number
string
Routing number (required for ACH)
string
SWIFT/BIC code (required for SWIFT transfers)
string
IBAN (required for SEPA transfers)
string
Name of the receiving bank
string
required
Name of the account holder
string
required
Unique reference ID for this redemption transaction
object
object
Additional metadata for the redemption
Response
string
Unique identifier for the redemption transaction
string
Object type, always “stablecoin_redemption”
string
The sender address
object
string
Blockchain transaction hash for the burn
string
Status: “pending”, “processing”, “completed”, “failed”, “cancelled”
string
Estimated arrival date for fiat funds
object
string
ISO 8601 timestamp of creation
string
ISO 8601 timestamp of completion
{
"sender": "stateset1qypqxpq9qcrsszg2pvxq6rs0zqg3yyc5lzv7xu",
"amount": {
"denom": "ssusd",
"amount": "1000000000"
},
"destination": {
"type": "ach",
"account_number": "123456789",
"routing_number": "021000021",
"bank_name": "JPMorgan Chase",
"beneficiary_name": "John Doe"
},
"reference_id": "RED-2024-001234",
"compliance": {
"purpose": "business_operations",
"source_of_funds": "sales_revenue"
}
}
{
"id": "red_9h8g7f6e5d4c3b2a",
"object": "stablecoin_redemption",
"sender": "stateset1qypqxpq9qcrsszg2pvxq6rs0zqg3yyc5lzv7xu",
"amount": {
"denom": "ssusd",
"amount": "1000000000",
"display_amount": "1000.00 ssUSD",
"fiat_amount": "1000.00",
"fiat_currency": "USD"
},
"transaction_hash": "A7F4C1B8E5D2A9F7C3B1E8D5A2F9C7E1B4A7D2F5E8B1C4A7F9D2E5B8C1F4A7D2",
"status": "processing",
"estimated_arrival": "2024-01-17T16:00:00Z",
"fees": {
"network_fee": "0.50",
"processing_fee": "5.00",
"total_fee": "5.50"
},
"created_at": "2024-01-15T10:45:00Z",
"completed_at": null
}
Error Codes
| Code | Description |
|---|---|
400 | Invalid request parameters |
401 | Unauthorized - Invalid API key |
403 | Forbidden - Account not verified for redemptions |
404 | Sender address not found |
409 | Conflict - Duplicate reference_id |
422 | Insufficient balance or invalid amount |
429 | Rate limit exceeded |
500 | Internal server error |
Redemption Limits
- Minimum: $100 USD equivalent
- Maximum: $1,000,000 USD per transaction
- Daily Limit: $5,000,000 USD per account
- Monthly Limit: Based on account tier
Processing Times
| Method | Estimated Time |
|---|---|
| ACH | 1-3 business days |
| Wire | Same day - 1 business day |
| SWIFT | 1-5 business days |
| SEPA | 1-2 business days |
Webhooks
Configure webhooks to receive real-time updates:{
"event": "stablecoin.redeemed",
"data": {
"id": "red_9h8g7f6e5d4c3b2a",
"status": "completed",
"amount": {
"denom": "ssusd",
"amount": "1000000000"
}
}
}
Code Examples
const axios = require('axios');
async function redeemStablecoin() {
try {
const response = await axios.post(
'https://api.stateset.com/v1/stablecoin/redeem',
{
sender: 'stateset1qypqxpq9qcrsszg2pvxq6rs0zqg3yyc5lzv7xu',
amount: {
denom: 'ssusd',
amount: '1000000000'
},
destination: {
type: 'ach',
account_number: '123456789',
routing_number: '021000021',
bank_name: 'JPMorgan Chase',
beneficiary_name: 'John Doe'
},
reference_id: 'RED-2024-001234',
compliance: {
purpose: 'business_operations',
source_of_funds: 'sales_revenue'
}
},
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log('Redemption initiated:', response.data);
} catch (error) {
console.error('Redemption failed:', error.response.data);
}
}
import requests
def redeem_stablecoin():
url = "https://api.stateset.com/v1/stablecoin/redeem"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
data = {
"sender": "stateset1qypqxpq9qcrsszg2pvxq6rs0zqg3yyc5lzv7xu",
"amount": {
"denom": "ssusd",
"amount": "1000000000"
},
"destination": {
"type": "ach",
"account_number": "123456789",
"routing_number": "021000021",
"bank_name": "JPMorgan Chase",
"beneficiary_name": "John Doe"
},
"reference_id": "RED-2024-001234",
"compliance": {
"purpose": "business_operations",
"source_of_funds": "sales_revenue"
}
}
try:
response = requests.post(url, json=data, headers=headers)
response.raise_for_status()
print("Redemption initiated:", response.json())
except requests.exceptions.RequestException as e:
print("Redemption failed:", e)
curl -X POST https://api.stateset.com/v1/stablecoin/redeem \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender": "stateset1qypqxpq9qcrsszg2pvxq6rs0zqg3yyc5lzv7xu",
"amount": {
"denom": "ssusd",
"amount": "1000000000"
},
"destination": {
"type": "ach",
"account_number": "123456789",
"routing_number": "021000021",
"bank_name": "JPMorgan Chase",
"beneficiary_name": "John Doe"
},
"reference_id": "RED-2024-001234"
}'
⌘I