Create static wallet

Create a reusable deposit address with an accepted-asset allow-list

POST/v1/static-walletsAPI key

Request body

FieldTypeDescription
allowedAssetsoptionalAssetID[]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.
allowedAssets values AssetID
USDT_ETHEREUMUSDT_ARBITRUMUSDT_OPTIMISMUSDT_BASEUSDT_BSCUSDT_PLASMAUSDT_POLYGONUSDC_ETHEREUMUSDC_ARBITRUMUSDCE_ARBITRUMUSDC_OPTIMISMUSDC_BASEUSDC_BSCUSDC_PLASMAUSDC_POLYGONETH_ETHEREUMETH_ARBITRUMETH_OPTIMISMETH_BASEXPL_PLASMABNB_BSCPOL_POLYGONTESTCOIN_ETHEREUMTESTCOIN_OPTIMISMTESTCOIN_PLASMATESTSTABLECOIN_ETHEREUMTESTSTABLECOIN_OPTIMISMTESTSTABLECOIN_PLASMA
externalIdoptionalstringYour own identifier for this static wallet. Echoed back on the wallet and denormalized onto each of its deposits. Optional.
metadataoptionalobjectArbitrary JSON key/value data to attach to the static wallet. Stored and echoed back unchanged.
webhookUrloptionalstringWebhook URL to receive this wallet's deposit events. Optional; falls back to the project default webhook when omitted.

Response

201 Created

FieldTypeDescription
addressoptionalstringReusable on-chain deposit address of this static wallet. Customers may send accepted assets to it repeatedly; each incoming transfer becomes a deposit.
allowedAssetsoptionalAssetID[]Accepted-asset allow-list, as asset id-strings (see GET /v1/assets). Deposits of assets outside this list are ignored and not credited.
allowedAssets values AssetID
USDT_ETHEREUMUSDT_ARBITRUMUSDT_OPTIMISMUSDT_BASEUSDT_BSCUSDT_PLASMAUSDT_POLYGONUSDC_ETHEREUMUSDC_ARBITRUMUSDCE_ARBITRUMUSDC_OPTIMISMUSDC_BASEUSDC_BSCUSDC_PLASMAUSDC_POLYGONETH_ETHEREUMETH_ARBITRUMETH_OPTIMISMETH_BASEXPL_PLASMABNB_BSCPOL_POLYGONTESTCOIN_ETHEREUMTESTCOIN_OPTIMISMTESTCOIN_PLASMATESTSTABLECOIN_ETHEREUMTESTSTABLECOIN_OPTIMISMTESTSTABLECOIN_PLASMA
createdAtoptionalintegerUnix-milliseconds timestamp when the static wallet was created.
externalIdoptionalstringYour own identifier for this static wallet, echoed from creation. Null when none was provided.
idoptionalstringUnique Suward identifier of the static wallet.
metadataoptionalobjectArbitrary key/value data attached by the merchant, echoed back unchanged.
projectIdoptionalstringIdentifier of the project that owns this static wallet.
updatedAtoptionalintegerUnix-milliseconds timestamp when the static wallet was last updated.
webhookUrloptionalstringWebhook 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

All Static Wallets endpoints

Request

terminal
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"}'

Response · 201 Created

response.json
{
"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.