Simulate static wallet deposit
Drive a synthetic deposit through its lifecycle (no on-chain activity, no balance credit). Available for test-coin assets only.
POST
/v1/static-wallets/{staticWalletId}/simulateAPI keyPath parameters
| Field | Type | Description |
|---|---|---|
staticWalletIdrequired | string | Static wallet ID |
Request body
| Field | Type | Description |
|---|---|---|
amountoptional | string | Deposited amount to simulate, an integer string in the asset's smallest unit (see CreatePaymentRequest.amount). |
assetoptional | AssetID | Asset id-string of the simulated deposit (see GET /v1/assets), e.g. USDT_ARBITRUM. |
| ||
statusoptional | string | Target lifecycle stage to drive the simulated deposit to. |
| ||
transferIndexoptional | string | Optional index of the transfer within the transaction, as a string-encoded integer. |
txHashoptional | string | Optional synthetic transaction hash; a random one is generated when omitted. |
Response
200 OK
| Field | Type | Description |
|---|---|---|
acceptedAtoptional | integer | Unix-milliseconds timestamp when the deposit reached the accepted (safe confirmations) tier. Null before acceptance. |
addressoptional | string | On-chain address that received the deposit (the static wallet's address). |
amountoptional | string | Gross deposited amount, an integer string in the asset's smallest unit (see CreatePaymentRequest.amount). |
assetoptional | AssetID | Asset of the deposit, as an asset id-string (see GET /v1/assets). |
| ||
confirmedAtoptional | integer | Unix-milliseconds timestamp when the deposit reached finality (confirmed). Null before confirmation. |
createdAtoptional | integer | Unix-milliseconds timestamp when the deposit record was created. |
detectedAtoptional | integer | Unix-milliseconds timestamp when the deposit was first detected on-chain. |
externalIdoptional | string | ExternalID is the static wallet's externalId, denormalized onto the deposit. |
feeoptional | string | Platform fee on this deposit, integer string in the asset's smallest unit: max(0.4% of the amount, $1 equivalent). The $1 floor is 0 for assets without a published USD price. |
idoptional | string | Unique Suward identifier of the deposit. |
invalidatedAtoptional | integer | Unix-milliseconds timestamp when the deposit was invalidated (e.g. dropped by a chain reorg). Null unless invalidated. |
netAmountoptional | string | Amount credited to the merchant after fees (amount - fee - networkFee), integer string in the asset's smallest unit. |
networkFeeoptional | string | Estimated on-chain (gas) cost deducted from the deposit, integer string in the asset's smallest unit. |
projectIdoptional | string | Identifier of the project that owns this deposit. |
staticWalletIdoptional | string | Identifier of the static wallet that received this deposit. |
statusoptional | string | Deposit lifecycle status. detected: seen on-chain, awaiting confirmations. accepted: safe confirmations reached, credited (non-final). confirmed: finalized (terminal). ignored: the asset is not on the wallet's allow-list, so the deposit is not credited. invalidated: dropped after detection, e.g. by a chain reorg. |
| ||
transferIndexoptional | string | Index of this transfer within its transaction, as a string-encoded integer. Distinguishes multiple transfers to the same address in one transaction. |
txHashoptional | string | On-chain transaction hash of the deposit. |
updatedAtoptional | integer | Unix-milliseconds timestamp when the deposit was last updated. |
Errors
400 Bad Request404 Not Found— each returns { errorCode, message, args? }. Codes, retries and limits: Errors & limits
Request
curl -X POST https://api.suward.com/v1/static-wallets/<static_wallet_id>/simulate \ -H "X-Api-Key: $SUWARD_API_KEY" \ -H "Content-Type: application/json" \ -d '{"amount":"1000000","asset":"USDT_ETHEREUM"}'const response = await fetch('https://api.suward.com/v1/static-wallets/<static_wallet_id>/simulate', { method: 'POST', headers: { 'X-Api-Key': process.env.SUWARD_API_KEY, 'Content-Type': 'application/json', }, body: JSON.stringify({ "amount": "1000000", "asset": "USDT_ETHEREUM" }),});const data = await response.json();package main import ( "bytes" "fmt" "io" "net/http" "os") func main() { payload := []byte(`{"amount":"1000000","asset":"USDT_ETHEREUM"}`) req, _ := http.NewRequest("POST", "https://api.suward.com/v1/static-wallets/<static_wallet_id>/simulate", 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 = { "amount": "1000000", "asset": "USDT_ETHEREUM"} response = requests.post( 'https://api.suward.com/v1/static-wallets/<static_wallet_id>/simulate', headers={'X-Api-Key': os.environ['SUWARD_API_KEY']}, json=payload,)data = response.json()Response · 200 OK
{ "acceptedAt": 0, "address": "0xabc…def", "amount": "100000000", "asset": "USDT_ETHEREUM", "confirmedAt": 0, "createdAt": 0, "detectedAt": 0, "externalId": "order_abc123", "fee": "1000000", "id": "obj_abc123", "invalidatedAt": 0, "netAmount": "100000000", "networkFee": "150000", "projectId": "obj_abc123", "staticWalletId": "obj_abc123", "status": "detected", "transferIndex": "0", "txHash": "0x1234…abcd", "updatedAt": 0}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.