DERO Wallet RPC API
A wallet RPC (Remote Procedure Call) enables programmatic control of a DERO wallet. This API allows payment processors, exchanges, and applications to automate wallet operations.
Source: rpc/wallet_rpc.go - All RPC methods verified against Release 142
Network Ports
| Network | Wallet RPC Port | Usage |
|---|---|---|
| Mainnet | 10103 | Production use |
| Testnet | 40403 | Development/testing |
Source: config/config.go:104,124
Enable RPC Server
The RPC server is not enabled by default. Start the wallet with --rpc-server to enable it:
# Mainnet
./dero-wallet-cli --rpc-server --rpc-bind=127.0.0.1:10103
# With authentication
./dero-wallet-cli --rpc-server --rpc-login=username:passwordWhat You Can Do
- Manage balances - Query DERO and asset balances
- Send transactions - Transfer DERO and assets with privacy
- Receive payments - Generate integrated addresses, monitor transfers
- Smart contract interaction - Call SC methods, query state
- Address management - Get wallet address, generate integrated addresses
Echo
Test endpoint to verify that the RPC server is enabled and working well on the wallet side.
Available parameters
| Name | Type | Mandatory | Comment |
|---|---|---|---|
| []string | true | Array of string |
Body
{
"jsonrpc": "2.0",
"id": "1",
"method": "Echo",
"params": ["Hello", "World", "!"]
}cURL Request
curl -X POST \
http://127.0.0.1:10103/json_rpc \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "Echo",
"params": ["Hello", "World", "!"]
}'Result
{
"jsonrpc": "2.0",
"id": "1",
"result": "WALLET Hello World !"
}Get Address
Returns the DERO address of the wallet to receive DEROs or other tokens.
Available parameters
No parameters
Body
{
"jsonrpc": "2.0",
"id": "1",
"method": "GetAddress"
}cURL Request
curl -X POST \
http://127.0.0.1:10103/json_rpc \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "GetAddress"
}'Result
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"address": "deto1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vqqayuknf"
}
}Get Balance
Retrieves the current balance of the wallet.
Available parameters
No parameters
Body
{
"jsonrpc": "2.0",
"id": "1",
"method": "GetBalance"
}cURL Request
curl -X POST \
http://127.0.0.1:10103/json_rpc \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "GetBalance"
}'Result
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"balance": 800000,
"unlocked_balance": 800000
}
}NOTE: The amount is in atomic format. As a reminder, 10^5 (=100000) is equivalent to 1 DERO.
If this address is not registered on the blockchain, you will get this error:
{
"jsonrpc": "2.0",
"id": "1",
"error": {
"code": -32098,
"message": "Account Unregistered"
}
}Get Height
Returns at which block height the wallet is synchronized.
Available parameters
No parameters
Body
{
"jsonrpc": "2.0",
"id": "1",
"method": "GetHeight"
}cURL Request
curl -X POST \
http://127.0.0.1:10103/json_rpc \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "GetHeight"
}'Result
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"height": 420
}
}Get Transfer by TXID
Returns the details of the transaction based on its hash.
Available parameters
| Name | Type | Mandatory |
|---|---|---|
| hash | Hash | true |
Body
{
"jsonrpc": "2.0",
"id": "1",
"method": "GetTransferbyTXID",
"params": {
"txid": "2a74bcc6262f48630967129793f3b87dc30236f2cb5df6ebb09d620ec0cb503a"
}
}cURL Request
curl -X POST \
http://127.0.0.1:10103/json_rpc \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "GetTransferbyTXID",
"params": {
"txid": "2a74bcc6262f48630967129793f3b87dc30236f2cb5df6ebb09d620ec0cb503a"
}
}'Result
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"entry": {
"height": 31297,
"topo_height": 31297,
"blockhash": "44e010e6ae56e66e75b158871570233a8a8b918491efc2d02ce793a7ce258612",
"minerreward": 0,
"tpos": 17,
"pos": 0,
"coinbase": false,
"incoming": true,
"txid": "2a74bcc6262f48630967129793f3b87dc30236f2cb5df6ebb09d620ec0cb503a",
"destination": "",
"amount": 500000,
"fees": 451,
"proof": "deroproof1qy3zfvkwdz87xa7mvxc0qq7nsmcgkl3gsf00a2amhk7fs2yu09r4uqdzvfyyskpqckdxyd8vgtzd75mjujsyzj6swrfdy6gw7alx78ak23v6ql60ewqxy4j4rgqq0gfqsjjq9u",
"status": 0,
"time": "2022-02-03T17:51:16.006+01:00",
"ewdata": "2efc785f92e9ffdaf1935186e0ffe561e500632722c73f95e741136389a347b8002642ae3d734c6b119a28884920036e895fc8e6a33f9c4ec6d90da1a4d1b65ef901",
"data": "AqFoQ29tbWVudFNySGVsbG8gZnJvbSBTbGl4ZSAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"payloadtype": 0,
"payload": "oWhDb21tZW50U3JIZWxsbyBmcm9tIFNsaXhlICEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"payload_rpc": [
{
"name": "Comment",
"datatype": "S",
"value": "Hello from Slixe !"
}
],
"sender": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
"dstport": 0,
"srcport": 0
}
}
}Get Transfers
Returns all transactions present in the portfolio against the applied filters.
Available parameters
| Name | Type | Mandatory | Comment |
|---|---|---|---|
| scid | Hash | false | Smart Contract ID |
| coinbase | bool | false | Accept coinbase TX ? |
| in | bool | false | Accept incoming TX ? |
| out | bool | false | Accept outgoing TX ? |
| min_height | unint64 | false | Minimum height |
| max_height | unint64 | false | Maximum height |
| sender | string | false | Sender address equal |
| receiver | string | false | Receiver address equal |
| dstport | uint64 | false | Destination Port (Service) |
| srcport | uint64 | false | Source Port (Service) |
Body
{
"jsonrpc": "2.0",
"id": "1",
"method": "GetTransfers",
"params": {
"out": true,
"in": true
}
}cURL Request
curl -X POST \
http://127.0.0.1:10103/json_rpc \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "GetTransfers",
"params": {
"out": true,
"in": true
}
}'Result
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"entries": [
{
"height": 31297,
"topo_height": 31297,
"blockhash": "44e010e6ae56e66e75b158871570233a8a8b918491efc2d02ce793a7ce258612",
"minerreward": 0,
"tpos": 17,
"pos": 0,
"coinbase": false,
"incoming": true,
"txid": "2a74bcc6262f48630967129793f3b87dc30236f2cb5df6ebb09d620ec0cb503a",
"destination": "",
"amount": 500000,
"fees": 451,
"proof": "deroproof1qy3zfvkwdz87xa7mvxc0qq7nsmcgkl3gsf00a2amhk7fs2yu09r4uqdzvfyyskpqckdxyd8vgtzd75mjujsyzj6swrfdy6gw7alx78ak23v6ql60ewqxy4j4rgqq0gfqsjjq9u",
"status": 0,
"time": "2022-02-03T17:51:16.006+01:00",
"ewdata": "2efc785f92e9ffdaf1935186e0ffe561e500632722c73f95e741136389a347b8002642ae3d734c6b119a28884920036e895fc8e6a33f9c4ec6d90da1a4d1b65ef901",
"data": "AqFoQ29tbWVudFNySGVsbG8gZnJvbSBTbGl4ZSAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"payloadtype": 0,
"payload": "oWhDb21tZW50U3JIZWxsbyBmcm9tIFNsaXhlICEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"payload_rpc": [
{
"name": "Comment",
"datatype": "S",
"value": "Hello from Slixe !"
}
],
"sender": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
"dstport": 0,
"srcport": 0
}
]
}
}Make Integrated Address
Returns a new integrated address with Payloads included.
Available parameters
| Name | Type | Mandatory | Comment |
|---|---|---|---|
| address | string | false | DERO Address (if empty, the one from wallet is used) |
| payload_rpc | Argument | false | Parameters to include in address |
Body
{
"jsonrpc": "2.0",
"id": "1",
"method": "MakeIntegratedAddress",
"params": {
"payload_rpc": [
{
"name": "Comment",
"datatype": "S",
"value": "Hello from integrated address !"
}
]
}
}cURL Request
curl -X POST \
http://127.0.0.1:10103/json_rpc \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "MakeIntegratedAddress",
"params": {
"payload_rpc": [
{
"name": "Comment",
"datatype": "S",
"value": "Hello from integrated address !"
}
]
}
}'Result
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"integrated_address": "detoi1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vq9pdppk7mtdv4h8g5mcrayx2mrvdusxvun0d5sxjmn5v4nhyct5v4jzqctyv3ex2umnyqssvnqraw",
"payload_rpc": [
{
"name": "Comment",
"datatype": "S",
"value": "Hello from integrated address !"
}
]
}
}Split Integrated Address
Returns the DERO address and the payloads included in an Integrated Address.
Available parameters
| Name | Type | Mandatory | Comment |
|---|---|---|---|
| integrated_address | string | true | Integrated Address to decode |
Body
{
"jsonrpc": "2.0",
"id": "1",
"method": "SplitIntegratedAddress",
"params": {
"integrated_address": "detoi1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vq9pdppk7mtdv4h8g5mcrayx2mrvdusxvun0d5sxjmn5v4nhyct5v4jzqctyv3ex2umnyqssvnqraw"
}
}cURL Request
curl -X POST \
http://127.0.0.1:10103/json_rpc \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "SplitIntegratedAddress",
"params": {
"integrated_address": "detoi1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vq9pdppk7mtdv4h8g5mcrayx2mrvdusxvun0d5sxjmn5v4nhyct5v4jzqctyv3ex2umnyqssvnqraw"
}
}'Result
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"address": "deto1qyyhg0xznkaxt5udct6lnlylsexvwprun6jphv89xg008vq29jk4vqqayuknf",
"payload_rpc": [
{
"name": "Comment",
"datatype": "S",
"value": "Hello from integrated address !"
}
]
}
}Query Key
Returns the mnemonic key (seed) associated with this portfolio.
Available parameters
| Name | Type | Mandatory | Comment |
|---|---|---|---|
| key_type | string | true | Key Type ("mnemonic" only) |
Body
{
"jsonrpc": "2.0",
"id": "1",
"method": "QueryKey",
"params": {
"key_type": "mnemonic"
}
}cURL Request
curl -X POST \
http://127.0.0.1:10103/json_rpc \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "QueryKey",
"params": {
"key_type": "mnemonic"
}
}'Result
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"key": "eavesdrop sailor tavern fizzle mammal were utmost stellar rafts vats dedicated dosage lynx cent after toyed coexist zippers lipstick aztec dedicated custom chrome onto launching"
}
}Transfer
Creates a transaction and returns its hash.
Available parameters
| Name | Type | Mandatory | Comment |
|---|---|---|---|
| scid | Hash | false | SCID of asset |
| destination | string | false | DERO Address of receiver |
| amount | uint64 | false | Amount of token to send |
| burn | uint63 | false | Amount of token to burn |
| payload_rpc | Arguments | false | Payload Arguments |
Body
{
"jsonrpc": "2.0",
"id": "1",
"method": "transfer",
"params": {
"scid": "00000000000000000000000000000000",
"destination": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
"amount": 100000
}
}cURL Request
curl -X POST \
http://127.0.0.1:10103/json_rpc \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "transfer",
"params": {
"scid": "00000000000000000000000000000000",
"destination": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
"amount": 100000
}
}'Result
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"txid": "5201c319d04fb72012ecb2fd8c903feff50bbd5db39c60dfee795b9b3a90433a"
}
}Transfer 2
Creates a transaction to several distinct addresses and returns its hash.
Available parameters
| Name | Type | Mandatory | Comment |
|---|---|---|---|
| transfers | []Transfer | false | see previous request |
| sc | string | false | SC Code to deploy |
| sc_rpc | Arguments | false | SC Call Arguments |
| ringsize | uint64 | false | Level of anonymity |
| scid | string | false | SCID to call |
| fees | uint64 | false | Tx Fees |
| signer | string | false | used for gas estimation |
Body
{
"jsonrpc": "2.0",
"id": "1",
"method": "transfer",
"params": {
"transfers": [{
"destination": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
"amount": 100000
},
{
"destination": "deto1qydvjhl67a3hmcw6zq9yt449extwshzcjxkd7lgk4uhgpyxdr494yqg6zwnc2",
"amount": 100000
}
],
"ringsize": 32
}
}cURL Request
curl -X POST \
http://127.0.0.1:10103/json_rpc \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "transfer",
"params": {
"transfers": [{
"destination": "deto1qyj4kx6azntn9psmg7dsfkuv9qs9xde0s94nmmhm2a0damffpm2zzqqcudacc",
"amount": 100000
},
{
"destination": "deto1qydvjhl67a3hmcw6zq9yt449extwshzcjxkd7lgk4uhgpyxdr494yqg6zwnc2",
"amount": 100000
}
],
"ringsize": 32
}
}'Result
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"txid": "3a2712ae039e3f55b4cee132ec7ab76b912d05b3c1fc2744ae2ddd2c18be893e"
}
}Smart Contract Invoke
Creates a transaction to call a Smart Contract function and returns its hash.
Available parameters
| Name | Type | Mandatory | Comment |
|---|---|---|---|
| scid | string | true | SCID of asset/token |
| sc_rpc | Arguments | true | SC Arguments |
| sc_dero_deposit | uint64 | false | Amount of DERO to deposit |
| sc_token_deposit | uint64 | false | Amount of token to deposit |
| ringsize | uint64 | false | Level of anonymity |
Body
{
"jsonrpc": "2.0",
"id": "1",
"method": "scinvoke",
"params": {
"scid": "0000000000000000000000000000000000000000000000000000000000000001",
"ringsize": 2,
"sc_rpc": [
{
"name": "entrypoint",
"datatype": "S",
"value": "Register"
},
{
"name": "name",
"datatype": "S",
"value": "Slixe"
}
]
}
}cURL Request
curl -X POST \
http://127.0.0.1:10103/json_rpc \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "scinvoke",
"params": {
"scid": "0000000000000000000000000000000000000000000000000000000000000001",
"ringsize": 2,
"sc_rpc": [
{
"name": "entrypoint",
"datatype": "S",
"value": "Register"
},
{
"name": "name",
"datatype": "S",
"value": "Slixe"
}
]
}
}'Result
{
"jsonrpc": "2.0",
"id": "1",
"result": {
"txid": "bf4b2cd942f4394a03d0d66bbf8c0639f5cbcbf340becc39d4c9e02f987cecca"
}
}Related Pages
Getting Started:
- DERO Wallets - Wallet options overview
- Running a Node - Setup wallet RPC server
Related APIs:
- Daemon RPC API - Node RPC methods
- Smart Contract Examples - Deploy contracts via RPC
Understanding Privacy:
- Transaction Privacy - How transfers stay private
- Homomorphic Encryption - Encrypted balances
- Payload Proofs - Prove transfers cryptographically
For Developers:
- DVM-BASIC Guide - Smart contract language
- DERO Tokens - Send and receive assets