diff --git a/src/commands/account.rs b/src/commands/account.rs
index e1f6d8dcebabbd4d771ec0ed851df306d518073c..59856a4cb2fbfd8901454ae90340578270ba057a 100644
--- a/src/commands/account.rs
+++ b/src/commands/account.rs
@@ -15,6 +15,10 @@ pub enum Subcommand {
 		/// Prevent from going below account existential deposit
 		#[clap(short = 'k', long = "keep-alive")]
 		keep_alive: bool,
+		/// Use universal dividends instead of units
+		#[clap(short = 'u', long = "ud")]
+		is_ud: bool,
+		
 	},
 	/// Transfer the same amount for each space-separated address.
 	/// If an address appears mutiple times, it will get multiple times the same amount
@@ -38,8 +42,9 @@ pub async fn handle_command(data: Data, command: Subcommand) -> anyhow::Result<(
 			amount,
 			dest,
 			keep_alive,
+			is_ud
 		} => {
-			commands::transfer::transfer(&data, amount, dest, keep_alive).await?;
+			commands::transfer::transfer(&data, amount, dest, keep_alive, is_ud).await?;
 		}
 		Subcommand::TransferMultiple { amount, dests } => {
 			commands::transfer::transfer_multiple(&data, amount, dests).await?;
diff --git a/src/commands/transfer.rs b/src/commands/transfer.rs
index 547797d50072d5d8ff82cea883e20a2fb3d6655f..aca2273a9bd9fbf87d391adb3e5b77d61b030f73 100644
--- a/src/commands/transfer.rs
+++ b/src/commands/transfer.rs
@@ -10,27 +10,40 @@ pub async fn transfer(
 	balance: u64,
 	dest: AccountId,
 	keep_alive: bool,
+	is_ud: bool,
 ) -> Result<(), subxt::Error> {
 	let progress = if keep_alive {
-		data.client()
+		if is_ud {data.client()
+			.tx()
+			.sign_and_submit_then_watch(
+				&runtime::tx().universal_dividend().transfer_ud(dest.into(), balance),
+				&PairSigner::new(data.keypair()),
+				BaseExtrinsicParamsBuilder::new(),
+			)
+			.await?} else {data.client()
 			.tx()
 			.sign_and_submit_then_watch(
 				&runtime::tx().balances().transfer(dest.into(), balance),
 				&PairSigner::new(data.keypair()),
 				BaseExtrinsicParamsBuilder::new(),
 			)
-			.await?
+			.await?}
 	} else {
-		data.client()
+		if is_ud {data.client()
+			.tx()
+			.sign_and_submit_then_watch(
+				&runtime::tx().universal_dividend().transfer_ud_keep_alive(dest.into(), balance),
+				&PairSigner::new(data.keypair()),
+				BaseExtrinsicParamsBuilder::new(),
+			)
+			.await?} else {data.client()
 			.tx()
 			.sign_and_submit_then_watch(
-				&runtime::tx()
-					.balances()
-					.transfer_keep_alive(dest.into(), balance),
+				&runtime::tx().balances().transfer_keep_alive(dest.into(), balance),
 				&PairSigner::new(data.keypair()),
 				BaseExtrinsicParamsBuilder::new(),
 			)
-			.await?
+			.await?}
 	};
 
 	if data.args.no_wait {