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_idmust be the platform root node: currency tokens are platform-level.network_idandwallet_idare 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
| Name | Description |
|---|---|
Authorization | Required. Bearer <access_token> |
Content-Type | Required. multipart/form-data |
Body
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name |
symbol | string | Yes | Symbol, for example CSTM |
node_id | string | Yes | Platform root node the token is created under (24-character hex) |
network_id | string | Yes | Network the token is deployed on |
wallet_id | string | Yes | The node's custody wallet on that network's chain that signs the deploy, mint and send |
description | string | No | Description |
fiat_currency | string | No | ISO 4217 code the token is pegged to, for example USD, EUR, TRY |
logo | file | No | Accepted, 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.
| Field | Type | Description |
|---|---|---|
id | string | Currency token ID |
node_id | string | The node from the body |
type | integer | 1 (stable token) |
status | integer | 1 (Draft). Moves to 2 InProgress when the deploy starts and 3 Active when it confirms |
total_supply | string | "0" |
decimals | integer | 6 |
contract | object or null | null until the deploy confirms |
network_id | string | The network from the body |
wallet_id | string | The wallet from the body |
is_active | boolean | Always false in this response. Use status |
is_self_issued | boolean | true |
The response does not carry the deploy transaction's ID; find it with Get Currency Token Transactions by ID.
Errors
| Status | Code | Description |
|---|---|---|
| 400 | 10015 | Validation failed — see details. Includes a missing network_id / wallet_id, an unknown fiat_currency, and a network_id that names no network |
| 400 | 10016 | network_id or wallet_id is not a 24-character hex ID |
| 400 | 10001 (domain 2) | Node not found |
| 400 | 10021 (domain 2) | wallet_id is not one of the node's custody wallets on the network's chain |
| 403 | 10005 (domain 2) | node_id is not the platform root node |
| 500 | 10000 | Unexpected server error |
See Errors for the error format and common codes.