curl --request POST \
--url https://v1.orchestrator.rhinestone.dev/deposit-processor/deposits/refund \
--header 'Content-Type: application/json' \
--data '
{
"chain": "eip155:8453",
"txHash": "0xabc123...",
"account": "0xde0fdf9c06b404cc5e20543cb84cac9067102f19",
"token": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"recipient": "0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91"
}
'import requests
url = "https://v1.orchestrator.rhinestone.dev/deposit-processor/deposits/refund"
payload = {
"chain": "eip155:8453",
"txHash": "0xabc123...",
"account": "0xde0fdf9c06b404cc5e20543cb84cac9067102f19",
"token": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"recipient": "0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
chain: 'eip155:8453',
txHash: '0xabc123...',
account: '0xde0fdf9c06b404cc5e20543cb84cac9067102f19',
token: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91'
})
};
fetch('https://v1.orchestrator.rhinestone.dev/deposit-processor/deposits/refund', 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://v1.orchestrator.rhinestone.dev/deposit-processor/deposits/refund",
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([
'chain' => 'eip155:8453',
'txHash' => '0xabc123...',
'account' => '0xde0fdf9c06b404cc5e20543cb84cac9067102f19',
'token' => '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
'recipient' => '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91'
]),
CURLOPT_HTTPHEADER => [
"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://v1.orchestrator.rhinestone.dev/deposit-processor/deposits/refund"
payload := strings.NewReader("{\n \"chain\": \"eip155:8453\",\n \"txHash\": \"0xabc123...\",\n \"account\": \"0xde0fdf9c06b404cc5e20543cb84cac9067102f19\",\n \"token\": \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\n \"recipient\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://v1.orchestrator.rhinestone.dev/deposit-processor/deposits/refund")
.header("Content-Type", "application/json")
.body("{\n \"chain\": \"eip155:8453\",\n \"txHash\": \"0xabc123...\",\n \"account\": \"0xde0fdf9c06b404cc5e20543cb84cac9067102f19\",\n \"token\": \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\n \"recipient\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://v1.orchestrator.rhinestone.dev/deposit-processor/deposits/refund")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"chain\": \"eip155:8453\",\n \"txHash\": \"0xabc123...\",\n \"account\": \"0xde0fdf9c06b404cc5e20543cb84cac9067102f19\",\n \"token\": \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\n \"recipient\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91\"\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"transactionHash": "<string>",
"amount": "<string>"
}{
"error": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"error": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"error": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"error": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}Refund a failed deposit
Transfer the funds from a failed deposit back to a user-provided address on the same chain. Authenticate with an x-api-key (write scope) or a Bearer platform token; the credential must belong to the client that registered the account.
curl --request POST \
--url https://v1.orchestrator.rhinestone.dev/deposit-processor/deposits/refund \
--header 'Content-Type: application/json' \
--data '
{
"chain": "eip155:8453",
"txHash": "0xabc123...",
"account": "0xde0fdf9c06b404cc5e20543cb84cac9067102f19",
"token": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"recipient": "0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91"
}
'import requests
url = "https://v1.orchestrator.rhinestone.dev/deposit-processor/deposits/refund"
payload = {
"chain": "eip155:8453",
"txHash": "0xabc123...",
"account": "0xde0fdf9c06b404cc5e20543cb84cac9067102f19",
"token": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"recipient": "0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
chain: 'eip155:8453',
txHash: '0xabc123...',
account: '0xde0fdf9c06b404cc5e20543cb84cac9067102f19',
token: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91'
})
};
fetch('https://v1.orchestrator.rhinestone.dev/deposit-processor/deposits/refund', 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://v1.orchestrator.rhinestone.dev/deposit-processor/deposits/refund",
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([
'chain' => 'eip155:8453',
'txHash' => '0xabc123...',
'account' => '0xde0fdf9c06b404cc5e20543cb84cac9067102f19',
'token' => '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
'recipient' => '0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91'
]),
CURLOPT_HTTPHEADER => [
"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://v1.orchestrator.rhinestone.dev/deposit-processor/deposits/refund"
payload := strings.NewReader("{\n \"chain\": \"eip155:8453\",\n \"txHash\": \"0xabc123...\",\n \"account\": \"0xde0fdf9c06b404cc5e20543cb84cac9067102f19\",\n \"token\": \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\n \"recipient\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://v1.orchestrator.rhinestone.dev/deposit-processor/deposits/refund")
.header("Content-Type", "application/json")
.body("{\n \"chain\": \"eip155:8453\",\n \"txHash\": \"0xabc123...\",\n \"account\": \"0xde0fdf9c06b404cc5e20543cb84cac9067102f19\",\n \"token\": \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\n \"recipient\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://v1.orchestrator.rhinestone.dev/deposit-processor/deposits/refund")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"chain\": \"eip155:8453\",\n \"txHash\": \"0xabc123...\",\n \"account\": \"0xde0fdf9c06b404cc5e20543cb84cac9067102f19\",\n \"token\": \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\n \"recipient\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91\"\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"transactionHash": "<string>",
"amount": "<string>"
}{
"error": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"error": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"error": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"error": "<string>",
"details": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}Headers
API key for authentication (omit when sending Authorization)
"your-api-key"
Bearer platform token (e.g. forwarded by user-service). Takes precedence over x-api-key when both are present.
"Bearer eyJhbGciOi..."
Body
CAIP-2 chain identifier of the deposit (e.g. "eip155:8453")
^[a-z0-9]+:[a-zA-Z0-9]+$"eip155:8453"
Source transaction hash of the stuck deposit
1"0xabc123..."
Managed account address that received the deposit (EVM address or Solana public key)
1"0xde0fdf9c06b404cc5e20543cb84cac9067102f19"
Source token address. Use the zero address (0x000…000) for native transfers.
1"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
Address to receive the refunded tokens (EVM address or Solana public key)
1"0x742d35Cc6634C0532925a3b844Bc9e7595f5bE91"
Was this page helpful?