Customer Wallets
Create Customer Wallet
POST
/v1/customers/{customer_uuid}/wallets/Authorization
X-Api-Key
string required
API key generated in the Developers section of the Stablegate app. Send it in the
X-Api-Key header on every request; the partner API does not require request signing.Path parameters
customer_uuid
string<uuid> required
Customer UUID
Request body
name
string | null
rail
string required
One of:
bitcoin, ethereum, algorand, polygon, ripple, xinfin, stellar, tronaddress
string required
wallet_message
string | null
Hexbytes-encoded confirmation message. Required on Ethereum and Polygon.
NOTE "Signature time" must not be older than 24h UTC.
function stringToHex(str: string) {
let hex = '';
for (let i = 0; i < str.length; i++) {
hex += str.charCodeAt(i).toString(16);
}
return `0x${hex}`;
}
const ts = new Date().toISOString();
const message =`I confirm the ownership of address ${signerAddress}. Signature time: ${ts}.`;
const wallet_message = stringToHex(message);
wallet_signature
string | null
Signed confirmation message. Required on Ethereum and Polygon.
const ts = new Date().toISOString();
const message =`I confirm the ownership of address ${signerAddress}. Signature time: ${ts}.`;
// https://docs.ethers.org/v5/api/signer/#Signer-signMessage
// const signer = ...
const wallet_signature = await signer.signMessage(message);
Responses
Successful Response
uuid
string<uuid> required
name
string | null
rail
string | null
One of:
bitcoin, ethereum, algorand, polygon, ripple, xinfin, stellar, tronaddress
string | null
status
string required
One of:
active, sanctionedverified_at
string<date-time> | string | null
created_at
string<date-time> required
updated_at
string<date-time> required
Validation Error
trace_id
string required
error_code
string required
One of:
devapi_internal_error, devapi_request_validation_error, devapi_iban_parse_error, devapi_customer_close_error, devapi_bank_code_required_error, devapi_download_aol_error, devapi_not_found_error, devapi_bad_request_error, devapi_email_occupied_error, devapi_idempotency_invalid_key, devapi_idempotency_key_misuse, devapi_idempotency_request_in_progress, devapi_kyc_application_link_error, devapi_instant_verification_error, devapi_unauthorized_error, devapi_forbidden_error, devapi_method_not_allowed_error, devapi_service_unavailable_errormessage
string required
details
object[] required
loc
string | string[] required
msg
string required
type
string required
curl https://api.stablegate.com/v1/customers/CUSTOMER_UUID/wallets/ \
--request POST \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"name": "string",
"rail": "bitcoin",
"address": "string",
"wallet_message": "0x4920636f6e6669726d20746865206f776e657273686970206f662061646472657373203078444331644362343666433936433436633446323934383636364146434138313837343034316242322e205369676e61747572652074696d653a20323032342d30362d31345431343a34383a32382e3339335a2e",
"wallet_signature": "0x861818884bbf61f8d83bc3052e6c513f939512852fc92067dde5845b392248c949812e44366158d91d73ac0e9588c56dfb1d59549c3cbad52cfe4884fdc15c361"
}'
{
"uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"rail": "bitcoin",
"address": "string",
"status": "active",
"verified_at": "2026-01-01T00:00:00Z",
"created_at": "2026-01-01T00:00:00Z",
"updated_at": "2026-01-01T00:00:00Z"
}
{
"trace_id": "string",
"error_code": "devapi_internal_error",
"message": "string",
"details": [
{
"loc": "string",
"msg": "string",
"type": "string"
}
]
}