Create static wallet
Create a reusable deposit address with an accepted-asset allow-list
POST
/v1/static-walletsAPI keyRequest body
| Field | Type | Description |
|---|---|---|
allowedAssetsoptional | AssetID[] | Accepted-asset allow-list, as asset id-strings (see GET /v1/assets), e.g. ["USDT_ARBITRUM"]. Deposits of assets not on this list are ignored (status "ignored") and not credited. |
| ||
externalIdoptional | string | Your own identifier for this static wallet. Echoed back on the wallet and denormalized onto each of its deposits. Optional. |
metadataoptional | object | Arbitrary JSON key/value data to attach to the static wallet. Stored and echoed back unchanged. |
webhookUrloptional | string | Webhook URL to receive this wallet's deposit events. Optional; falls back to the project default webhook when omitted. |
Response
201 Created
| Field | Type | Description |
|---|---|---|
addressoptional | string | Reusable on-chain deposit address of this static wallet. Customers may send accepted assets to it repeatedly; each incoming transfer becomes a deposit. |
allowedAssetsoptional | AssetID[] | Accepted-asset allow-list, as asset id-strings (see GET /v1/assets). Deposits of assets outside this list are ignored and not credited. |
| ||
createdAtoptional | integer | Unix-milliseconds timestamp when the static wallet was created. |
externalIdoptional | string | Your own identifier for this static wallet, echoed from creation. Null when none was provided. |
idoptional | string | Unique Suward identifier of the static wallet. |
metadataoptional | object | Arbitrary key/value data attached by the merchant, echoed back unchanged. |
projectIdoptional | string | Identifier of the project that owns this static wallet. |
updatedAtoptional | integer | Unix-milliseconds timestamp when the static wallet was last updated. |
webhookUrloptional | string | Webhook URL that receives this wallet's deposit events. Null when the project default webhook is used. |
Errors
400 Bad Request401 Unauthorized— each returns { errorCode, message, args? }. Codes, retries and limits: Errors & limits
Request
curl -X POST https://api.suward.com/v1/static-wallets \ -H "X-Api-Key: $SUWARD_API_KEY" \ -H "Content-Type: application/json" \ -d '{"externalId":"customer_42"}'const response = await fetch('https://api.suward.com/v1/static-wallets', { method: 'POST', headers: { 'X-Api-Key': process.env.SUWARD_API_KEY, 'Content-Type': 'application/json', }, body: JSON.stringify({ "externalId": "customer_42" }),});const data = await response.json();package main import ( "bytes" "fmt" "io" "net/http" "os") func main() { payload := []byte(`{"externalId":"customer_42"}`) req, _ := http.NewRequest("POST", "https://api.suward.com/v1/static-wallets", bytes.NewReader(payload)) req.Header.Set("X-Api-Key", os.Getenv("SUWARD_API_KEY")) req.Header.Set("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() data, _ := io.ReadAll(res.Body) fmt.Println(string(data))}import requests, os payload = { "externalId": "customer_42"} response = requests.post( 'https://api.suward.com/v1/static-wallets', headers={'X-Api-Key': os.environ['SUWARD_API_KEY']}, json=payload,)data = response.json()Response · 201 Created
{ "address": "0xabc…def", "allowedAssets": [ "USDT_ETHEREUM" ], "createdAt": 0, "externalId": "order_abc123", "id": "obj_abc123", "metadata": {}, "projectId": "obj_abc123", "updatedAt": 0, "webhookUrl": "https://example.com/webhook"}Illustrative values. Every field, type and status on this page is generated from the OpenAPI specification.
Something unclear? payments@suward.com — we treat every integration question as a documentation defect.