diff --git a/app/src/main/cpp/monerujo.cpp b/app/src/main/cpp/monerujo.cpp
index 1470cd31..1e1a0451 100644
--- a/app/src/main/cpp/monerujo.cpp
+++ b/app/src/main/cpp/monerujo.cpp
@@ -848,6 +848,31 @@ Java_com_m2049r_xmrwallet_model_Wallet_createTransactionJ(JNIEnv *env, jobject i
     return reinterpret_cast<jlong>(tx);
 }
 
+JNIEXPORT jlong JNICALL
+Java_com_m2049r_xmrwallet_model_Wallet_createSweepTransaction(JNIEnv *env, jobject instance,
+                                                          jstring dst_addr, jstring payment_id,
+                                                          jint mixin_count,
+                                                          jint priority,
+                                                          jint accountIndex) {
+
+    const char *_dst_addr = env->GetStringUTFChars(dst_addr, NULL);
+    const char *_payment_id = env->GetStringUTFChars(payment_id, NULL);
+    Bitmonero::PendingTransaction::Priority _priority =
+            static_cast<Bitmonero::PendingTransaction::Priority>(priority);
+    Bitmonero::Wallet *wallet = getHandle<Bitmonero::Wallet>(env, instance);
+
+    Monero::optional<uint64_t> empty;
+
+    Bitmonero::PendingTransaction *tx = wallet->createTransaction(_dst_addr, _payment_id,
+                                                                  empty, (uint32_t) mixin_count,
+                                                                  _priority,
+                                                                  (uint32_t) accountIndex);
+
+    env->ReleaseStringUTFChars(dst_addr, _dst_addr);
+    env->ReleaseStringUTFChars(payment_id, _payment_id);
+    return reinterpret_cast<jlong>(tx);
+}
+
 JNIEXPORT jlong JNICALL
 Java_com_m2049r_xmrwallet_model_Wallet_createSweepUnmixableTransactionJ(JNIEnv *env,
                                                                         jobject instance) {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAmountWizardFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAmountWizardFragment.java
index 2ea8207f..4e75a113 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAmountWizardFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAmountWizardFragment.java
@@ -20,6 +20,9 @@ import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.m2049r.xmrwallet.R;
@@ -57,8 +60,10 @@ public class SendAmountWizardFragment extends SendWizardFragment {
 
     private TextView tvFunds;
     private ExchangeTextView evAmount;
-    //private Button bSendAll;
     private NumberPadView numberPad;
+    private View llAmount;
+    private View ivSweep;
+    private ImageButton ibSweep;
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
@@ -76,34 +81,62 @@ public class SendAmountWizardFragment extends SendWizardFragment {
         numberPad = (NumberPadView) view.findViewById(R.id.numberPad);
         numberPad.setListener(evAmount);
 
-        /*
-        bSendAll = (Button) view.findViewById(R.id.bSendAll);
-        bSendAll.setOnClickListener(new View.OnClickListener() {
+        llAmount = view.findViewById(R.id.llAmount);
+        ivSweep = view.findViewById(R.id.ivSweep);
+        ivSweep.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                // TODO: send all - figure out how to display this
+                sweepAll(false);
+            }
+        });
+
+        ibSweep = (ImageButton) view.findViewById(R.id.ibSweep);
+
+        ibSweep.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                sweepAll(true);
             }
         });
-*/
 
         Helper.hideKeyboard(getActivity());
 
         return view;
     }
 
+    private boolean spendAllMode = false;
+
+    private void sweepAll(boolean spendAllMode) {
+        if (spendAllMode) {
+            ibSweep.setVisibility(View.INVISIBLE);
+            llAmount.setVisibility(View.GONE);
+            ivSweep.setVisibility(View.VISIBLE);
+        } else {
+            ibSweep.setVisibility(View.VISIBLE);
+            llAmount.setVisibility(View.VISIBLE);
+            ivSweep.setVisibility(View.GONE);
+        }
+        this.spendAllMode = spendAllMode;
+    }
 
     @Override
     public boolean onValidateFields() {
-        if (!evAmount.validate(maxFunds)) {
-            return false;
-        }
+        if (spendAllMode) {
+            if (sendListener != null) {
+                sendListener.getTxData().setAmount(Wallet.SWEEP_ALL);
+            }
+        } else {
+            if (!evAmount.validate(maxFunds)) {
+                return false;
+            }
 
-        if (sendListener != null) {
-            String xmr = evAmount.getAmount();
-            if (xmr != null) {
-                sendListener.getTxData().setAmount(Wallet.getAmountFromString(xmr));
-            } else {
-                sendListener.getTxData().setAmount(0L);
+            if (sendListener != null) {
+                String xmr = evAmount.getAmount();
+                if (xmr != null) {
+                    sendListener.getTxData().setAmount(Wallet.getAmountFromString(xmr));
+                } else {
+                    sendListener.getTxData().setAmount(0L);
+                }
             }
         }
         return true;
diff --git a/app/src/main/java/com/m2049r/xmrwallet/model/Wallet.java b/app/src/main/java/com/m2049r/xmrwallet/model/Wallet.java
index a7a1eac0..09dcdcae 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/model/Wallet.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/model/Wallet.java
@@ -23,6 +23,8 @@ import java.io.File;
 import timber.log.Timber;
 
 public class Wallet {
+    final static public long SWEEP_ALL = Long.MAX_VALUE;
+
     static {
         System.loadLibrary("monerujo");
     }
@@ -231,8 +233,12 @@ public class Wallet {
                                                 PendingTransaction.Priority priority) {
         disposePendingTransaction();
         int _priority = priority.getValue();
-        long txHandle = createTransactionJ(dst_addr, payment_id, amount, mixin_count, _priority,
-                accountIndex);
+        long txHandle =
+                (amount == SWEEP_ALL ?
+                        createSweepTransaction(dst_addr, payment_id, mixin_count, _priority,
+                                accountIndex) :
+                        createTransactionJ(dst_addr, payment_id, amount, mixin_count, _priority,
+                                accountIndex));
         pendingTransaction = new PendingTransaction(txHandle);
         return pendingTransaction;
     }
@@ -241,6 +247,10 @@ public class Wallet {
                                            long amount, int mixin_count,
                                            int priority, int accountIndex);
 
+    private native long createSweepTransaction(String dst_addr, String payment_id,
+                                               int mixin_count,
+                                               int priority, int accountIndex);
+
 
     public PendingTransaction createSweepUnmixableTransaction() {
         disposePendingTransaction();
diff --git a/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeTextView.java b/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeTextView.java
index bfe49e59..6043c0ba 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeTextView.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeTextView.java
@@ -25,6 +25,7 @@ import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.AdapterView;
+import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.ProgressBar;
@@ -45,6 +46,8 @@ import timber.log.Timber;
 public class ExchangeTextView extends LinearLayout
         implements NumberPadView.NumberPadListener {
 
+    private static String MAX = "\u221E";
+
     String xmrAmount = null;
     String notXmrAmount = null;
 
@@ -68,7 +71,7 @@ public class ExchangeTextView extends LinearLayout
                 if (amount > max) {
                     ok = false;
                 }
-                if (amount <= 0) {
+                if (amount <= 0) { /////////////////////////////
                     ok = false;
                 }
             } catch (NumberFormatException ex) {
diff --git a/app/src/main/res/drawable/ic_all_inclusive_24dp.xml b/app/src/main/res/drawable/ic_all_inclusive_24dp.xml
new file mode 100644
index 00000000..676a4e0a
--- /dev/null
+++ b/app/src/main/res/drawable/ic_all_inclusive_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0">
+    <path
+        android:fillColor="@color/gradientOrange"
+        android:pathData="M18.6,6.62c-1.44,0 -2.8,0.56 -3.77,1.53L12,10.66 10.48,12h0.01L7.8,14.39c-0.64,0.64 -1.49,0.99 -2.4,0.99 -1.87,0 -3.39,-1.51 -3.39,-3.38S3.53,8.62 5.4,8.62c0.91,0 1.76,0.35 2.44,1.03l1.13,1 1.51,-1.34L9.22,8.2C8.2,7.18 6.84,6.62 5.4,6.62 2.42,6.62 0,9.04 0,12s2.42,5.38 5.4,5.38c1.44,0 2.8,-0.56 3.77,-1.53l2.83,-2.5 0.01,0.01L13.52,12h-0.01l2.69,-2.39c0.64,-0.64 1.49,-0.99 2.4,-0.99 1.87,0 3.39,1.51 3.39,3.38s-1.52,3.38 -3.39,3.38c-0.9,0 -1.76,-0.35 -2.44,-1.03l-1.14,-1.01 -1.51,1.34 1.27,1.12c1.02,1.01 2.37,1.57 3.82,1.57 2.98,0 5.4,-2.41 5.4,-5.38s-2.42,-5.37 -5.4,-5.37z" />
+</vector>
diff --git a/app/src/main/res/layout/fragment_send_amount.xml b/app/src/main/res/layout/fragment_send_amount.xml
index 7446afce..f2d3a3f0 100644
--- a/app/src/main/res/layout/fragment_send_amount.xml
+++ b/app/src/main/res/layout/fragment_send_amount.xml
@@ -1,30 +1,67 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical">
 
-    <TextView
-        android:id="@+id/tvFunds"
-        style="@style/MoneroText.Funds"
+    <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginTop="8dp"
-        android:gravity="center" />
+        android:orientation="horizontal">
 
-    <com.m2049r.xmrwallet.widget.ExchangeTextView
-        android:id="@+id/evAmount"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginBottom="16dp"
-        android:layout_marginTop="16dp"
-        android:orientation="vertical" />
+        <TextView
+            android:id="@+id/tvFunds"
+            style="@style/MoneroText.Funds"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentStart="true"
+            android:layout_toStartOf="@id/ibSweep"
+            android:gravity="center"
+            tools:text="Balance: 70.198276354123 XMR" />
 
-    <com.m2049r.xmrwallet.widget.NumberPadView
-        android:id="@+id/numberPad"
+        <ImageButton
+            android:id="@+id/ibSweep"
+            style="@style/MoneroLabel.NumPad"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentEnd="true"
+            android:paddingEnd="12dp"
+            android:paddingStart="12dp"
+            android:src="@drawable/ic_all_inclusive_24dp"
+            android:visibility="visible" />
+    </RelativeLayout>
+
+    <LinearLayout
+        android:id="@+id/llAmount"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="@color/white"
-        android:gravity="center" />
+        android:orientation="vertical"
+        android:visibility="visible">
+
+        <com.m2049r.xmrwallet.widget.ExchangeTextView
+            android:id="@+id/evAmount"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="16dp"
+            android:layout_marginTop="16dp"
+            android:orientation="vertical" />
+
+        <com.m2049r.xmrwallet.widget.NumberPadView
+            android:id="@+id/numberPad"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="@color/white"
+            android:gravity="center" />
+
+    </LinearLayout>
+
+    <ImageView
+        android:id="@+id/ivSweep"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:src="@drawable/ic_all_inclusive_24dp"
+        android:visibility="gone"/>
 
 </LinearLayout>