Writing and reading memos
Memos are available in every transaction and can be quite useful to label your transactions or pass metadata useful to your business logic.
Writing a memo
This is how you would include a json object in the memo field of a transaction.
// Create the JSON object you want to include in the memo
const memoData = {
invoice_id: '12345',
description: 'Coffee and Milk',
date: '2024-07-02'
};
// Convert JSON object to a string and then to hex
const memoJson = JSON.stringify(memoData);
const memoHex = Buffer.from(memoJson, 'utf8').toString('hex');
// Create the Memo field
const memo = {
Memo: {
MemoData: memoHex
}
};
const tx = {
TransactionType: "Payment",
Account: wallet1.classicAddress,
Destination: wallet2.classicAddress,
Amount: "1234",
Memos: [memo]
};
const result = await client.submitAndWait(tx, {
autofill: true,
wallet: wallet1,
});
console.log(result)Decoding memos
To decode memos from a transaction, we retrieve the memo components and decode the hexadecimal data to a string, and then parse them.
Create this file in your project and import it as needed, when you are processing the transaction data.
Putting it all together
Here is an example of a fully fledged transaction listener that can parse the memos from the transaction we created above.
Last updated

