Skip to main content
Version: IOTA

Send a Signed Transaction

A SignedTransaction is a core payload type that is used to send value-based messages as Unspent Transaction Output (UTXO). This core payload changes the ledger state as it spends "old" outputs and replaces them with new outputs.


Though it is possible to send transactions with, we strongly recommend that you use the official library together with the enclave for value-based transfers. This combination incorporates the best security practices while dealing with seeds, related addresses, and UTXO.

Sending value-based messages is a very straightforward process if you use the ClientMessageBuilder helper class. You will only need to provide a valid seed by chaining a call to .withSeed(seed: String), and output addresses and amount by chaining a call to withOutput(address: String, amount: long):. The method will find valid output(s) that can be used to fund the given amount(s) and the unspent amount will be sent to the same address.

public static void transaction() {
Client iota = node();


Message message = iota
// Insert the output address and amount to spent. The amount cannot be zero.
// We generate an address from our seed so that we send the funds to ourselves
iota.getAddresses(seed_1).withRange(0, 1).finish()[0], 1000000

System.out.println("Transaction sent:" +;

Dust Protection

Due to the dust protection mechanism implemented in the network protocol, microtransactions below 1Mi of IOTA tokens can only be sent to another address if there is already at least 1Mi on that address

That's why the code in the example sent 1Mi, to comply with the protection.