Skip to main content

Create Currency Token

Creates a currency token (a stablecoin issued by the platform) and deploys it in the same call. There is no second step: the deploy transaction is recorded and published before the response is sent, so Get Currency Token Transactions by ID already lists a DeployCurrencyToken (type 1) row. The response carries the token in status 1 (Draft); it moves to 2 (InProgress) when the deploy starts and to 3 (Active) when the deploy confirms on-chain. Poll the token or its transactions. Deploy Currency Token exists only to retry a deploy that failed.

  • node_id must be the platform root node: currency tokens are platform-level.
  • network_id and wallet_id are both required and chosen by you; nothing is derived. The wallet must be one of the node's custody wallets on the network's chain. It is frozen onto the token and signs every later on-chain action for it (deploy, mint, send).
  • The token is created with 6 decimals and as self-issued (is_self_issued: true), so it can be minted and sent once active.

The request is multipart/form-data.

Required permission: currency-token:create

Request​

POST /v2/admin/currency-tokens

Headers​

NameDescription
AuthorizationRequired. Bearer <access_token>
Content-TypeRequired. multipart/form-data

Body​

FieldTypeRequiredDescription
namestringYesDisplay name
symbolstringYesSymbol, for example CSTM
node_idstringYesPlatform root node the token is created under (24-character hex)
network_idstringYesNetwork the token is deployed on
wallet_idstringYesThe node's custody wallet on that network's chain that signs the deploy, mint and send
descriptionstringNoDescription
fiat_currencystringNoISO 4217 code the token is pegged to, for example USD, EUR, TRY
logofileNoAccepted, but not stored by this endpoint at present: meta.logo stays null

Example​

curl --request POST \
--url '{{baseUrl}}/v2/admin/currency-tokens' \
--header 'Authorization: Bearer <access_token>' \
--form 'name="Custom Stable Coin"' \
--form 'symbol="CSTM"' \
--form 'description="Example description"' \
--form 'node_id="665ae536a6392b75cfd40352"' \
--form 'network_id="6a4bf0a21e781b11c22e9712"' \
--form 'wallet_id="6a4bf1d31e781b11c22e9718"' \
--form 'fiat_currency="USD"'

Response​

201 Created

{
"id": "6a8b5c90f9129816a6cc79e1",
"node_id": "665ae536a6392b75cfd40352",
"type": 1,
"status": 1,
"name": "Custom Stable Coin",
"symbol": "CSTM",
"total_supply": "0",
"description": "Example description",
"decimals": 6,
"meta": {
"logo": null
},
"fiat_currency": "USD",
"contract": null,
"custody_asset_id": "",
"custody_asset_registered_at": null,
"network_id": "6a4bf0a21e781b11c22e9712",
"wallet_id": "6a4bf1d31e781b11c22e9718",
"created_by_id": "",
"is_active": false,
"is_self_issued": true,
"created_at": "2026-11-09T10:02:11.481Z",
"updated_at": "2026-11-09T10:02:11.481Z"
}

Response Fields​

The new currency token, in the same shape as Get Currency Token by ID.

FieldTypeDescription
idstringCurrency token ID
node_idstringThe node from the body
typeinteger1 (stable token)
statusinteger1 (Draft). Moves to 2 InProgress when the deploy starts and 3 Active when it confirms
total_supplystring"0"
decimalsinteger6
contractobject or nullnull until the deploy confirms
network_idstringThe network from the body
wallet_idstringThe wallet from the body
is_activebooleanAlways false in this response. Use status
is_self_issuedbooleantrue

The response does not carry the deploy transaction's ID; find it with Get Currency Token Transactions by ID.

Errors​

StatusCodeDescription
40010015Validation failed — see details. Includes a missing network_id / wallet_id, an unknown fiat_currency, and a network_id that names no network
40010016network_id or wallet_id is not a 24-character hex ID
40010001 (domain 2)Node not found
40010021 (domain 2)wallet_id is not one of the node's custody wallets on the network's chain
40310005 (domain 2)node_id is not the platform root node
50010000Unexpected server error

See Errors for the error format and common codes.