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
The blockchain address holding the stablecoins to redeemExample:
stateset1qypqxpq9qcrsszg2pvxq6rs0zqg3yyc5lzv7xuDestination for the fiat funds
Show Destination Object
Show Destination Object
Type of destination: “bank_wire”, “ach”, “swift”, “sepa”
Destination account number
Routing number (required for ACH)
SWIFT/BIC code (required for SWIFT transfers)
IBAN (required for SEPA transfers)
Name of the receiving bank
Name of the account holder
Unique reference ID for this redemption transaction
Additional metadata for the redemption
Response
Unique identifier for the redemption transaction
Object type, always “stablecoin_redemption”
The sender address
Blockchain transaction hash for the burn
Status: “pending”, “processing”, “completed”, “failed”, “cancelled”
Estimated arrival date for fiat funds
ISO 8601 timestamp of creation
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