diff --git a/app/build.gradle b/app/build.gradle
index c2bb0b4e..8e4a678f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -7,8 +7,8 @@ android {
         applicationId "com.m2049r.xmrwallet"
         minSdkVersion 21
         targetSdkVersion 29
-        versionCode 702
-        versionName "1.17.2 'Druk'"
+        versionCode 705
+        versionName "1.17.5.1 'Druk'"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         externalNativeBuild {
             cmake {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/BaseActivity.java b/app/src/main/java/com/m2049r/xmrwallet/BaseActivity.java
index 43185b24..d30f2978 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/BaseActivity.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/BaseActivity.java
@@ -213,7 +213,7 @@ public class BaseActivity extends SecureActivity implements GenerateReviewFragme
                 if (uri == null) {
                     Toast.makeText(this, getString(R.string.nfc_tag_read_undef), Toast.LENGTH_LONG).show();
                 } else {
-                    BarcodeData bc = BarcodeData.fromQrCode(uri.toString());
+                    BarcodeData bc = BarcodeData.fromString(uri.toString());
                     if (bc == null)
                         Toast.makeText(this, getString(R.string.nfc_tag_read_undef), Toast.LENGTH_LONG).show();
                     else
diff --git a/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java b/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java
index ffc0c5b4..2c0276a3 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java
@@ -58,6 +58,7 @@ import com.google.zxing.qrcode.QRCodeWriter;
 import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
 import com.m2049r.xmrwallet.BuildConfig;
 import com.m2049r.xmrwallet.data.BarcodeData;
+import com.m2049r.xmrwallet.data.Crypto;
 import com.m2049r.xmrwallet.ledger.LedgerProgressDialog;
 import com.m2049r.xmrwallet.model.Wallet;
 import com.m2049r.xmrwallet.model.WalletManager;
@@ -469,7 +470,7 @@ public class ReceiveFragment extends Fragment {
             Timber.d("CLEARQR");
             return;
         }
-        bcData = new BarcodeData(BarcodeData.Asset.XMR, address, notes, xmrAmount);
+        bcData = new BarcodeData(Crypto.XMR, address, notes, xmrAmount);
         int size = Math.max(ivQrCode.getWidth(), ivQrCode.getHeight());
         Bitmap qr = generate(bcData.getUriString(), size, size);
         if (qr != null) {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/ScannerFragment.java b/app/src/main/java/com/m2049r/xmrwallet/ScannerFragment.java
index 4f08cdd0..32512fdf 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/ScannerFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/ScannerFragment.java
@@ -73,14 +73,7 @@ public class ScannerFragment extends Fragment implements ZXingScannerView.Result
         // * On older devices continuously stopping and resuming camera preview can result in freezing the app.
         // * I don't know why this is the case but I don't have the time to figure out.
         Handler handler = new Handler();
-        handler.postDelayed(new
-
-                                    Runnable() {
-                                        @Override
-                                        public void run() {
-                                            mScannerView.resumeCameraPreview(ScannerFragment.this);
-                                        }
-                                    }, 2000);
+        handler.postDelayed(() -> mScannerView.resumeCameraPreview(ScannerFragment.this), 2000);
     }
 
     @Override
diff --git a/app/src/main/java/com/m2049r/xmrwallet/TxFragment.java b/app/src/main/java/com/m2049r/xmrwallet/TxFragment.java
index ccf72c42..22e199b9 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/TxFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/TxFragment.java
@@ -300,7 +300,7 @@ public class TxFragment extends Fragment {
             }
             tvTxXmrToKey.setText(key);
             tvDestinationBtc.setText(userNotes.xmrtoDestination);
-            tvTxAmountBtc.setText(userNotes.xmrtoAmount + " BTC");
+            tvTxAmountBtc.setText(userNotes.xmrtoAmount + " "+ userNotes.xmrtoCurrency);
             switch (userNotes.xmrtoTag) {
                 case "xmrto":
                     tvXmrToSupport.setVisibility(View.GONE);
diff --git a/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java
index 87de0d81..10d6c1d2 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/WalletActivity.java
@@ -921,7 +921,7 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
     @Override
     public boolean onScanned(String qrCode) {
         // #gurke
-        BarcodeData bcData = BarcodeData.fromQrCode(qrCode);
+        BarcodeData bcData = BarcodeData.fromString(qrCode);
         if (bcData != null) {
             popFragmentStack(null);
             Timber.d("AAA");
diff --git a/app/src/main/java/com/m2049r/xmrwallet/WalletFragment.java b/app/src/main/java/com/m2049r/xmrwallet/WalletFragment.java
index f441ac52..1a1ac103 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/WalletFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/WalletFragment.java
@@ -49,6 +49,7 @@ import com.m2049r.xmrwallet.service.exchange.api.ExchangeApi;
 import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback;
 import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate;
 import com.m2049r.xmrwallet.util.Helper;
+import com.m2049r.xmrwallet.util.ServiceHelper;
 import com.m2049r.xmrwallet.widget.Toolbar;
 
 import java.text.NumberFormat;
@@ -242,7 +243,7 @@ public class WalletFragment extends Fragment
     String balanceCurrency = Helper.BASE_CRYPTO;
     double balanceRate = 1.0;
 
-    private final ExchangeApi exchangeApi = Helper.getExchangeApi();
+    private final ExchangeApi exchangeApi = ServiceHelper.getExchangeApi();
 
     void refreshBalance() {
         double unconfirmedXmr = Helper.getDecimalAmount(balance - unlockedBalance).doubleValue();
diff --git a/app/src/main/java/com/m2049r/xmrwallet/data/BarcodeData.java b/app/src/main/java/com/m2049r/xmrwallet/data/BarcodeData.java
index 8d2b60f7..eb155f15 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/data/BarcodeData.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/data/BarcodeData.java
@@ -18,69 +18,57 @@ package com.m2049r.xmrwallet.data;
 
 import android.net.Uri;
 
-import com.m2049r.xmrwallet.model.Wallet;
-import com.m2049r.xmrwallet.util.BitcoinAddressValidator;
 import com.m2049r.xmrwallet.util.OpenAliasHelper;
 
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
+import lombok.ToString;
 import timber.log.Timber;
 
+@ToString
 public class BarcodeData {
-
-    public static final String XMR_SCHEME = "monero:";
-    public static final String XMR_PAYMENTID = "tx_payment_id";
-    public static final String XMR_AMOUNT = "tx_amount";
-    public static final String XMR_DESCRIPTION = "tx_description";
-
-    public static final String OA_XMR_ASSET = "xmr";
-    public static final String OA_BTC_ASSET = "btc";
-
-    static final String BTC_SCHEME = "bitcoin";
-    static final String BTC_DESCRIPTION = "message";
-    static final String BTC_AMOUNT = "amount";
-
-    public enum Asset {
-        XMR, BTC
-    }
-
     public enum Security {
         NORMAL,
         OA_NO_DNSSEC,
         OA_DNSSEC
     }
 
-    final public Asset asset;
+    final public Crypto asset;
+    final public List<Crypto> ambiguousAssets;
     final public String address;
     final public String addressName;
     final public String amount;
     final public String description;
     final public Security security;
 
-    public BarcodeData(Asset asset, String address) {
-        this(asset, address, null, null, null, Security.NORMAL);
+    public BarcodeData(List<Crypto> assets, String address) {
+        if (assets.isEmpty())
+            throw new IllegalArgumentException("no assets specified");
+        this.addressName = null;
+        this.description = null;
+        this.amount = null;
+        this.security = Security.NORMAL;
+        this.address = address;
+        if (assets.size() == 1) {
+            this.asset = assets.get(0);
+            this.ambiguousAssets = null;
+        } else {
+            this.asset = null;
+            this.ambiguousAssets = assets;
+        }
     }
 
-    public BarcodeData(Asset asset, String address, String amount) {
-        this(asset, address, null, null, amount, Security.NORMAL);
-    }
-
-    public BarcodeData(Asset asset, String address, String amount, String description, Security security) {
-        this(asset, address, null, description, amount, security);
-    }
-
-    public BarcodeData(Asset asset, String address, String paymentId, String description, String amount) {
+    public BarcodeData(Crypto asset, String address, String description, String amount) {
         this(asset, address, null, description, amount, Security.NORMAL);
     }
 
-    public BarcodeData(Asset asset, String address, String description, String amount) {
-        this(asset, address, null, description, amount, Security.NORMAL);
-    }
-
-    public BarcodeData(Asset asset, String address, String addressName, String description, String amount, Security security) {
+    public BarcodeData(Crypto asset, String address, String addressName, String description, String amount, Security security) {
+        this.ambiguousAssets = null;
         this.asset = asset;
         this.address = address;
         this.addressName = addressName;
@@ -94,133 +82,54 @@ public class BarcodeData {
     }
 
     public String getUriString() {
-        if (asset != Asset.XMR) throw new IllegalStateException("We can only do XMR stuff!");
+        if (asset != Crypto.XMR) throw new IllegalStateException("We can only do XMR stuff!");
         StringBuilder sb = new StringBuilder();
-        sb.append(BarcodeData.XMR_SCHEME).append(address);
+        sb.append(Crypto.XMR.getUriScheme()).append(address);
         boolean first = true;
         if ((description != null) && !description.isEmpty()) {
             sb.append(first ? "?" : "&");
             first = false;
-            sb.append(BarcodeData.XMR_DESCRIPTION).append('=').append(Uri.encode(description));
+            sb.append(Crypto.XMR.getUriMessage()).append('=').append(Uri.encode(description));
         }
         if ((amount != null) && !amount.isEmpty()) {
             sb.append(first ? "?" : "&");
-            sb.append(BarcodeData.XMR_AMOUNT).append('=').append(amount);
+            sb.append(Crypto.XMR.getUriAmount()).append('=').append(amount);
         }
         return sb.toString();
     }
 
-    static public BarcodeData fromQrCode(String qrCode) {
-        // check for monero uri
-        BarcodeData bcData = parseMoneroUri(qrCode);
-        // check for naked monero address / integrated address
-        if (bcData == null) {
-            bcData = parseMoneroNaked(qrCode);
-        }
-        // check for btc uri
-        if (bcData == null) {
-            bcData = parseBitcoinUri(qrCode);
-        }
-        // check for naked btc address
-        if (bcData == null) {
-            bcData = parseBitcoinNaked(qrCode);
-        }
-        // check for OpenAlias
-        if (bcData == null) {
-            bcData = parseOpenAlias(qrCode, false);
-        }
-        return bcData;
-    }
-
-    /**
-     * Parse and decode a monero scheme string. It is here because it needs to validate the data.
-     *
-     * @param uri String containing a monero URL
-     * @return BarcodeData object or null if uri not valid
-     */
-
-    static public BarcodeData parseMoneroUri(String uri) {
-        Timber.d("parseMoneroUri=%s", uri);
-
-        if (uri == null) return null;
-
-        if (!uri.startsWith(XMR_SCHEME)) return null;
-
-        String noScheme = uri.substring(XMR_SCHEME.length());
-        Uri monero = Uri.parse(noScheme);
-        Map<String, String> parms = new HashMap<>();
-        String query = monero.getEncodedQuery();
-        if (query != null) {
-            String[] args = query.split("&");
-            for (String arg : args) {
-                String[] namevalue = arg.split("=");
-                if (namevalue.length == 0) {
-                    continue;
-                }
-                parms.put(Uri.decode(namevalue[0]).toLowerCase(),
-                        namevalue.length > 1 ? Uri.decode(namevalue[1]) : "");
+    static private BarcodeData parseNaked(String address) {
+        List<Crypto> possibleAssets = new ArrayList<>();
+        for (Crypto crypto : Crypto.values()) {
+            if (crypto.validate(address)) {
+                possibleAssets.add(crypto);
             }
         }
-        String address = monero.getPath();
-
-        String paymentId = parms.get(XMR_PAYMENTID);
-        // no support for payment ids!
-        if (paymentId != null) {
-            Timber.e("no support for payment ids!");
+        if (possibleAssets.isEmpty())
             return null;
-        }
-
-        String description = parms.get(XMR_DESCRIPTION);
-        String amount = parms.get(XMR_AMOUNT);
-        if (amount != null) {
-            try {
-                Double.parseDouble(amount);
-            } catch (NumberFormatException ex) {
-                Timber.d(ex.getLocalizedMessage());
-                return null; // we have an amount but its not a number!
-            }
-        }
-
-        if ((address == null) || !Wallet.isAddressValid(address)) {
-            Timber.d("address invalid");
-            return null;
-        }
-        return new BarcodeData(Asset.XMR, address, description, amount);
+        return new BarcodeData(possibleAssets, address);
     }
 
-    static public BarcodeData parseMoneroNaked(String address) {
-        Timber.d("parseMoneroNaked=%s", address);
+    static public BarcodeData parseUri(String uriString) {
+        Timber.d("parseBitUri=%s", uriString);
 
-        if (address == null) return null;
-
-        if (!Wallet.isAddressValid(address)) {
-            Timber.d("address invalid");
-            return null;
-        }
-
-        return new BarcodeData(Asset.XMR, address);
-    }
-
-    // bitcoin:mpQ84J43EURZHkCnXbyQ4PpNDLLBqdsMW2?amount=0.01
-    // bitcoin:?r=https://bitpay.com/i/xxx
-    static public BarcodeData parseBitcoinUri(String uriString) {
-        Timber.d("parseBitcoinUri=%s", uriString);
-
-        if (uriString == null) return null;
         URI uri;
         try {
             uri = new URI(uriString);
         } catch (URISyntaxException ex) {
             return null;
         }
-        if (!uri.isOpaque() ||
-                !uri.getScheme().equals(BTC_SCHEME)) return null;
+        if (!uri.isOpaque()) return null;
+        final String scheme = uri.getScheme();
+        Crypto crypto = Crypto.withScheme(scheme);
+        if (crypto == null) return null;
 
         String[] parts = uri.getRawSchemeSpecificPart().split("[?]");
         if ((parts.length <= 0) || (parts.length > 2)) {
             Timber.d("invalid number of parts %d", parts.length);
             return null;
         }
+
         Map<String, String> parms = new HashMap<>();
         if (parts.length == 2) {
             String[] args = parts[1].split("&");
@@ -233,17 +142,19 @@ public class BarcodeData {
                         namevalue.length > 1 ? Uri.decode(namevalue[1]) : "");
             }
         }
-        String description = parms.get(BTC_DESCRIPTION);
-        String address = parts[0]; // no need to decode as there can bo no special characters
+
+        String addressName = parms.get(crypto.getUriLabel());
+        String description = parms.get(crypto.getUriMessage());
+        String address = parts[0]; // no need to decode as there can be no special characters
         if (address.isEmpty()) {
             Timber.d("no address");
             return null;
         }
-        if (!BitcoinAddressValidator.validate(address)) {
-            Timber.d("BTC address (%s) invalid", address);
+        if (!crypto.validate(address)) {
+            Timber.d("%s address (%s) invalid", crypto, address);
             return null;
         }
-        String amount = parms.get(BTC_AMOUNT);
+        String amount = parms.get(crypto.getUriAmount());
         if ((amount != null) && (!amount.isEmpty())) {
             try {
                 Double.parseDouble(amount);
@@ -252,20 +163,21 @@ public class BarcodeData {
                 return null; // we have an amount but its not a number!
             }
         }
-        return new BarcodeData(BarcodeData.Asset.BTC, address, description, amount);
+        return new BarcodeData(crypto, address, addressName, description, amount, Security.NORMAL);
     }
 
-    static public BarcodeData parseBitcoinNaked(String address) {
-        Timber.d("parseBitcoinNaked=%s", address);
 
-        if (address == null) return null;
-
-        if (!BitcoinAddressValidator.validate(address)) {
-            Timber.d("address invalid");
-            return null;
+    static public BarcodeData fromString(String qrCode) {
+        BarcodeData bcData = parseUri(qrCode);
+        if (bcData == null) {
+            // maybe it's naked?
+            bcData = parseNaked(qrCode);
         }
-
-        return new BarcodeData(BarcodeData.Asset.BTC, address);
+        if (bcData == null) {
+            // check for OpenAlias
+            bcData = parseOpenAlias(qrCode, false);
+        }
+        return bcData;
     }
 
     static public BarcodeData parseOpenAlias(String oaString, boolean dnssec) {
@@ -281,29 +193,16 @@ public class BarcodeData {
         String address = oaAttrs.get(OpenAliasHelper.OA1_ADDRESS);
         if (address == null) return null;
 
-        Asset asset;
-        if (OA_XMR_ASSET.equals(oaAsset)) {
-            if (!Wallet.isAddressValid(address)) {
-                Timber.d("XMR address invalid");
-                return null;
-            }
-            asset = Asset.XMR;
-        } else if (OA_BTC_ASSET.equals(oaAsset)) {
-            if (!BitcoinAddressValidator.validate(address)) {
-                Timber.d("BTC address invalid");
-                return null;
-            }
-            asset = Asset.BTC;
-        } else {
+        Crypto crypto = Crypto.withSymbol(oaAsset);
+        if (crypto == null) {
             Timber.i("Unsupported OpenAlias asset %s", oaAsset);
             return null;
         }
-
-        String paymentId = oaAttrs.get(OpenAliasHelper.OA1_PAYMENTID);
-        if (paymentId != null) {
-            Timber.e("paymentId not supported");
+        if (!crypto.validate(address)) {
+            Timber.d("%s address invalid", crypto);
             return null;
         }
+
         String description = oaAttrs.get(OpenAliasHelper.OA1_DESCRIPTION);
         if (description == null) {
             description = oaAttrs.get(OpenAliasHelper.OA1_NAME);
@@ -322,6 +221,10 @@ public class BarcodeData {
 
         Security sec = dnssec ? BarcodeData.Security.OA_DNSSEC : BarcodeData.Security.OA_NO_DNSSEC;
 
-        return new BarcodeData(asset, address, addressName, description, amount, sec);
+        return new BarcodeData(crypto, address, addressName, description, amount, sec);
+    }
+
+    public boolean isAmbiguous() {
+        return ambiguousAssets != null;
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/m2049r/xmrwallet/data/Crypto.java b/app/src/main/java/com/m2049r/xmrwallet/data/Crypto.java
new file mode 100644
index 00000000..e9e66f1d
--- /dev/null
+++ b/app/src/main/java/com/m2049r/xmrwallet/data/Crypto.java
@@ -0,0 +1,89 @@
+package com.m2049r.xmrwallet.data;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.m2049r.xmrwallet.R;
+import com.m2049r.xmrwallet.model.Wallet;
+import com.m2049r.xmrwallet.util.validator.BitcoinAddressType;
+import com.m2049r.xmrwallet.util.validator.BitcoinAddressValidator;
+import com.m2049r.xmrwallet.util.validator.EthAddressValidator;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+@RequiredArgsConstructor
+public enum Crypto {
+    XMR("XMR", true, "monero:tx_amount:recipient_name:tx_description", R.id.ibXMR, R.drawable.ic_monero, R.drawable.ic_monero_bw, Wallet::isAddressValid),
+    BTC("BTC", true, "bitcoin:amount:label:message", R.id.ibBTC, R.drawable.ic_xmrto_btc, R.drawable.ic_xmrto_btc_off, address -> {
+        return BitcoinAddressValidator.validate(address, BitcoinAddressType.BTC);
+    }),
+    DASH("DASH", true, "dash:amount:label:message", R.id.ibDASH, R.drawable.ic_xmrto_dash, R.drawable.ic_xmrto_dash_off, address -> {
+        return BitcoinAddressValidator.validate(address, BitcoinAddressType.DASH);
+    }),
+    DOGE("DOGE", true, "dogecoin:amount:label:message", R.id.ibDOGE, R.drawable.ic_xmrto_doge, R.drawable.ic_xmrto_doge_off, address -> {
+        return BitcoinAddressValidator.validate(address, BitcoinAddressType.DOGE);
+    }),
+    ETH("ETH", false, "ethereum:amount:label:message", R.id.ibETH, R.drawable.ic_xmrto_eth, R.drawable.ic_xmrto_eth_off, EthAddressValidator::validate),
+    LTC("LTC", true, "litecoin:amount:label:message", R.id.ibLTC, R.drawable.ic_xmrto_ltc, R.drawable.ic_xmrto_ltc_off, address -> {
+        return BitcoinAddressValidator.validate(address, BitcoinAddressType.LTC);
+    });
+
+    @Getter
+    @NonNull
+    private final String symbol;
+    @Getter
+    private final boolean casefull;
+    @NonNull
+    private final String uriSpec;
+    @Getter
+    private final int buttonId;
+    @Getter
+    private final int iconEnabledId;
+    @Getter
+    private final int iconDisabledId;
+    @NonNull
+    private final Validator validator;
+
+    @Nullable
+    public static Crypto withScheme(@NonNull String scheme) {
+        for (Crypto crypto : values()) {
+            if (crypto.getUriScheme().equals(scheme)) return crypto;
+        }
+        return null;
+    }
+
+    @Nullable
+    public static Crypto withSymbol(@NonNull String symbol) {
+        final String upperSymbol = symbol.toUpperCase();
+        for (Crypto crypto : values()) {
+            if (crypto.symbol.equals(upperSymbol)) return crypto;
+        }
+        return null;
+    }
+
+    interface Validator {
+        boolean validate(String address);
+    }
+
+    // TODO maybe cache these segments
+    String getUriScheme() {
+        return uriSpec.split(":")[0];
+    }
+
+    String getUriAmount() {
+        return uriSpec.split(":")[1];
+    }
+
+    String getUriLabel() {
+        return uriSpec.split(":")[2];
+    }
+
+    String getUriMessage() {
+        return uriSpec.split(":")[3];
+    }
+
+    boolean validate(String address) {
+        return validator.validate(address);
+    }
+}
diff --git a/app/src/main/java/com/m2049r/xmrwallet/data/TxDataBtc.java b/app/src/main/java/com/m2049r/xmrwallet/data/TxDataBtc.java
index d95dbd23..55ec71a0 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/data/TxDataBtc.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/data/TxDataBtc.java
@@ -24,6 +24,9 @@ import lombok.Getter;
 import lombok.Setter;
 
 public class TxDataBtc extends TxData {
+    @Getter
+    @Setter
+    private String btcSymbol; // the actual non-XMR thing we're sending
     @Getter
     @Setter
     private String xmrtoOrderId; // shown in success screen
@@ -45,6 +48,7 @@ public class TxDataBtc extends TxData {
     @Override
     public void writeToParcel(Parcel out, int flags) {
         super.writeToParcel(out, flags);
+        out.writeString(btcSymbol);
         out.writeString(xmrtoOrderId);
         out.writeString(btcAddress);
         out.writeDouble(btcAmount);
@@ -63,6 +67,7 @@ public class TxDataBtc extends TxData {
 
     protected TxDataBtc(Parcel in) {
         super(in);
+        btcSymbol = in.readString();
         xmrtoOrderId = in.readString();
         btcAddress = in.readString();
         btcAmount = in.readDouble();
@@ -74,10 +79,23 @@ public class TxDataBtc extends TxData {
         StringBuilder sb = new StringBuilder();
         sb.append("xmrtoOrderId:");
         sb.append(xmrtoOrderId);
+        sb.append(",btcSymbol:");
+        sb.append(btcSymbol);
         sb.append(",btcAddress:");
         sb.append(btcAddress);
         sb.append(",btcAmount:");
         sb.append(btcAmount);
         return sb.toString();
     }
+
+    public boolean validateAddress(@NonNull String address) {
+        if ((btcSymbol == null) || (btcAddress == null)) return false;
+        final Crypto crypto = Crypto.withSymbol(btcSymbol);
+        if (crypto == null) return false;
+        if (crypto.isCasefull()) { // compare as-is
+            return address.equals(btcAddress);
+        } else { // normalize & compare (e.g. ETH with and without checksum capitals
+            return address.toLowerCase().equals(btcAddress.toLowerCase());
+        }
+    }
 }
diff --git a/app/src/main/java/com/m2049r/xmrwallet/data/UserNotes.java b/app/src/main/java/com/m2049r/xmrwallet/data/UserNotes.java
index 0e831059..f5eb14b5 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/data/UserNotes.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/data/UserNotes.java
@@ -28,6 +28,7 @@ public class UserNotes {
     public String xmrtoTag = null;
     public String xmrtoKey = null;
     public String xmrtoAmount = null; // could be a double - but we are not doing any calculations
+    public String xmrtoCurrency = null;
     public String xmrtoDestination = null;
 
     public UserNotes(final String txNotes) {
@@ -35,14 +36,15 @@ public class UserNotes {
             return;
         }
         this.txNotes = txNotes;
-        Pattern p = Pattern.compile("^\\{([a-z]+)-(\\w{6,}),([0-9.]*)BTC,(\\w*)\\} ?(.*)");
+        Pattern p = Pattern.compile("^\\{([a-z]+)-(\\w{6,}),([0-9.]*)([A-Z]+),(\\w*)\\} ?(.*)");
         Matcher m = p.matcher(txNotes);
         if (m.find()) {
             xmrtoTag = m.group(1);
             xmrtoKey = m.group(2);
             xmrtoAmount = m.group(3);
-            xmrtoDestination = m.group(4);
-            note = m.group(5);
+            xmrtoCurrency = m.group(4);
+            xmrtoDestination = m.group(5);
+            note = m.group(6);
         } else {
             note = txNotes;
         }
@@ -62,6 +64,7 @@ public class UserNotes {
             xmrtoTag = order.TAG;
             xmrtoKey = order.getOrderId();
             xmrtoAmount = Helper.getDisplayAmount(order.getBtcAmount());
+            xmrtoCurrency = order.getBtcCurrency();
             xmrtoDestination = order.getBtcAddress();
         } else {
             xmrtoTag = null;
@@ -83,7 +86,8 @@ public class UserNotes {
             sb.append(xmrtoKey);
             sb.append(",");
             sb.append(xmrtoAmount);
-            sb.append("BTC,");
+            sb.append(xmrtoCurrency);
+            sb.append(",");
             sb.append(xmrtoDestination);
             sb.append("}");
             if ((note != null) && (!note.isEmpty()))
diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAddressWizardFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAddressWizardFragment.java
index 2ad428e8..5114b417 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAddressWizardFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAddressWizardFragment.java
@@ -39,16 +39,23 @@ import androidx.annotation.NonNull;
 import com.google.android.material.textfield.TextInputLayout;
 import com.m2049r.xmrwallet.R;
 import com.m2049r.xmrwallet.data.BarcodeData;
+import com.m2049r.xmrwallet.data.Crypto;
 import com.m2049r.xmrwallet.data.TxData;
 import com.m2049r.xmrwallet.data.TxDataBtc;
 import com.m2049r.xmrwallet.data.UserNotes;
 import com.m2049r.xmrwallet.model.PendingTransaction;
 import com.m2049r.xmrwallet.model.Wallet;
-import com.m2049r.xmrwallet.util.BitcoinAddressValidator;
 import com.m2049r.xmrwallet.util.Helper;
 import com.m2049r.xmrwallet.util.OpenAliasHelper;
+import com.m2049r.xmrwallet.util.ServiceHelper;
+import com.m2049r.xmrwallet.util.validator.BitcoinAddressType;
+import com.m2049r.xmrwallet.util.validator.BitcoinAddressValidator;
+import com.m2049r.xmrwallet.util.validator.EthAddressValidator;
 
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
 
 import timber.log.Timber;
 
@@ -64,9 +71,8 @@ public class SendAddressWizardFragment extends SendWizardFragment {
 
     Listener sendListener;
 
-    public SendAddressWizardFragment setSendListener(Listener listener) {
+    public void setSendListener(Listener listener) {
         this.sendListener = listener;
-        return this;
     }
 
     public interface Listener {
@@ -84,11 +90,10 @@ public class SendAddressWizardFragment extends SendWizardFragment {
     private EditText etDummy;
     private TextInputLayout etAddress;
     private TextInputLayout etNotes;
-    private View cvScan;
-    private View tvPaymentIdIntegrated;
     private TextView tvXmrTo;
-    private View llXmrTo;
-    private ImageButton bPasteAddress;
+    private Map<Crypto, ImageButton> ibCrypto;
+    final private Set<Crypto> possibleCryptos = new HashSet<>();
+    private Crypto selectedCrypto = null;
 
     private boolean resolvingOA = false;
 
@@ -98,6 +103,13 @@ public class SendAddressWizardFragment extends SendWizardFragment {
         void onScan();
     }
 
+    private Crypto getCryptoForButton(ImageButton button) {
+        for (Map.Entry<Crypto, ImageButton> entry : ibCrypto.entrySet()) {
+            if (entry.getValue() == button) return entry.getKey();
+        }
+        return null;
+    }
+
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
                              Bundle savedInstanceState) {
@@ -105,10 +117,31 @@ public class SendAddressWizardFragment extends SendWizardFragment {
 
         View view = inflater.inflate(R.layout.fragment_send_address, container, false);
 
-        tvPaymentIdIntegrated = view.findViewById(R.id.tvPaymentIdIntegrated);
-        llXmrTo = view.findViewById(R.id.llXmrTo);
         tvXmrTo = view.findViewById(R.id.tvXmrTo);
-        tvXmrTo.setText(Html.fromHtml(getString(R.string.info_xmrto)));
+
+        ibCrypto = new HashMap<>();
+        for (Crypto crypto : Crypto.values()) {
+            final ImageButton button = view.findViewById(crypto.getButtonId());
+            ibCrypto.put(crypto, button);
+            button.setOnClickListener(v -> {
+                if (possibleCryptos.contains(crypto)) {
+                    selectedCrypto = crypto;
+                    updateCryptoButtons(false);
+                } else {
+                    // show help what to do:
+                    if (button.getId() != R.id.ibXMR) {
+                        final String name = getResources().getStringArray(R.array.cryptos)[crypto.ordinal()];
+                        final String symbol = getCryptoForButton(button).getSymbol();
+                        tvXmrTo.setText(Html.fromHtml(getString(R.string.info_xmrto_help, name, symbol)));
+                        tvXmrTo.setVisibility(View.VISIBLE);
+                    } else {
+                        tvXmrTo.setText(Html.fromHtml(getString(R.string.info_xmrto_help_xmr)));
+                        tvXmrTo.setVisibility(View.VISIBLE);
+                    }
+                }
+            });
+        }
+        updateCryptoButtons(true);
 
         etAddress = view.findViewById(R.id.etAddress);
         etAddress.getEditText().setRawInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
@@ -118,16 +151,13 @@ public class SendAddressWizardFragment extends SendWizardFragment {
                 return ((event != null) && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER));
             }
         });
-        etAddress.getEditText().setOnFocusChangeListener(new View.OnFocusChangeListener() {
-            @Override
-            public void onFocusChange(View v, boolean hasFocus) {
-                if (!hasFocus) {
-                    String enteredAddress = etAddress.getEditText().getText().toString().trim();
-                    String dnsOA = dnsFromOpenAlias(enteredAddress);
-                    Timber.d("OpenAlias is %s", dnsOA);
-                    if (dnsOA != null) {
-                        processOpenAlias(dnsOA);
-                    }
+        etAddress.getEditText().setOnFocusChangeListener((v, hasFocus) -> {
+            if (!hasFocus) {
+                String enteredAddress = etAddress.getEditText().getText().toString().trim();
+                String dnsOA = dnsFromOpenAlias(enteredAddress);
+                Timber.d("OpenAlias is %s", dnsOA);
+                if (dnsOA != null) {
+                    processOpenAlias(dnsOA);
                 }
             }
         });
@@ -136,21 +166,47 @@ public class SendAddressWizardFragment extends SendWizardFragment {
             public void afterTextChanged(Editable editable) {
                 Timber.d("AFTER: %s", editable.toString());
                 etAddress.setError(null);
-                if (isIntegratedAddress()) {
+                possibleCryptos.clear();
+                selectedCrypto = null;
+                final String address = etAddress.getEditText().getText().toString();
+                if (isIntegratedAddress(address)) {
                     Timber.d("isIntegratedAddress");
+                    possibleCryptos.add(Crypto.XMR);
+                    selectedCrypto = Crypto.XMR;
                     etAddress.setError(getString(R.string.info_paymentid_integrated));
-                    tvPaymentIdIntegrated.setVisibility(View.VISIBLE);
-                    llXmrTo.setVisibility(View.INVISIBLE);
                     sendListener.setMode(SendFragment.Mode.XMR);
-                } else if (isBitcoinAddress()) {
-                    Timber.d("isBitcoinAddress");
-                    setBtcMode();
-                } else {
-                    Timber.d("isStandardAddress or other");
-                    tvPaymentIdIntegrated.setVisibility(View.INVISIBLE);
-                    llXmrTo.setVisibility(View.INVISIBLE);
+                } else if (isStandardAddress(address)) {
+                    Timber.d("isStandardAddress");
+                    possibleCryptos.add(Crypto.XMR);
+                    selectedCrypto = Crypto.XMR;
                     sendListener.setMode(SendFragment.Mode.XMR);
                 }
+                if ((selectedCrypto == null) && isEthAddress(address)) {
+                    Timber.d("isEthAddress");
+                    possibleCryptos.add(Crypto.ETH);
+                    selectedCrypto = Crypto.ETH;
+                    tvXmrTo.setVisibility(View.VISIBLE);
+                    sendListener.setMode(SendFragment.Mode.BTC);
+                }
+                if (possibleCryptos.isEmpty()) {
+                    Timber.d("isBitcoinAddress");
+                    for (BitcoinAddressType type : BitcoinAddressType.values()) {
+                        if (BitcoinAddressValidator.validate(address, type)) {
+                            possibleCryptos.add(Crypto.valueOf(type.name()));
+                        }
+                    }
+                    if (!possibleCryptos.isEmpty()) // found something in need of shifting!
+                        sendListener.setMode(SendFragment.Mode.BTC);
+                    if (possibleCryptos.size() == 1) {
+                        selectedCrypto = (Crypto) possibleCryptos.toArray()[0];
+                    }
+                }
+                if (possibleCryptos.isEmpty()) {
+                    Timber.d("other");
+                    tvXmrTo.setVisibility(View.INVISIBLE);
+                    sendListener.setMode(SendFragment.Mode.XMR);
+                }
+                updateCryptoButtons(address.isEmpty());
             }
 
             @Override
@@ -162,45 +218,38 @@ public class SendAddressWizardFragment extends SendWizardFragment {
             }
         });
 
-        bPasteAddress = view.findViewById(R.id.bPasteAddress);
-        bPasteAddress.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                final String clip = Helper.getClipBoardText(getActivity());
-                if (clip == null) return;
-                // clean it up
-                final String address = clip.replaceAll("[^0-9A-Z-a-z]", "");
-                if (Wallet.isAddressValid(address) || BitcoinAddressValidator.validate(address)) {
-                    final EditText et = etAddress.getEditText();
-                    et.setText(address);
-                    et.setSelection(et.getText().length());
-                    etAddress.requestFocus();
-                } else {
-                    Toast.makeText(getActivity(), getString(R.string.send_address_invalid), Toast.LENGTH_SHORT).show();
-                }
+        final ImageButton bPasteAddress = view.findViewById(R.id.bPasteAddress);
+        bPasteAddress.setOnClickListener(v -> {
+            final String clip = Helper.getClipBoardText(getActivity());
+            if (clip == null) return;
+            // clean it up
+            final String address = clip.replaceAll("( +)|(\\r?\\n?)", "");
+            BarcodeData bc = BarcodeData.fromString(address);
+            if (bc != null) {
+                processScannedData(bc);
+                final EditText et = etAddress.getEditText();
+                et.setSelection(et.getText().length());
+                etAddress.requestFocus();
+            } else {
+                Toast.makeText(getActivity(), getString(R.string.send_address_invalid), Toast.LENGTH_SHORT).show();
             }
         });
 
         etNotes = view.findViewById(R.id.etNotes);
         etNotes.getEditText().setRawInputType(InputType.TYPE_CLASS_TEXT);
-        etNotes.getEditText().setOnEditorActionListener(new TextView.OnEditorActionListener() {
-            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-                if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN))
-                        || (actionId == EditorInfo.IME_ACTION_DONE)) {
-                    etDummy.requestFocus();
-                    return true;
-                }
-                return false;
-            }
-        });
+        etNotes.getEditText().
 
-        cvScan = view.findViewById(R.id.bScan);
-        cvScan.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                onScanListener.onScan();
-            }
-        });
+                setOnEditorActionListener((v, actionId, event) -> {
+                    if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN))
+                            || (actionId == EditorInfo.IME_ACTION_DONE)) {
+                        etDummy.requestFocus();
+                        return true;
+                    }
+                    return false;
+                });
+
+        final View cvScan = view.findViewById(R.id.bScan);
+        cvScan.setOnClickListener(v -> onScanListener.onScan());
 
         etDummy = view.findViewById(R.id.etDummy);
         etDummy.setRawInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
@@ -214,11 +263,49 @@ public class SendAddressWizardFragment extends SendWizardFragment {
         return view;
     }
 
-    private void setBtcMode() {
-        Timber.d("setBtcMode");
-        tvPaymentIdIntegrated.setVisibility(View.INVISIBLE);
-        llXmrTo.setVisibility(View.VISIBLE);
-        sendListener.setMode(SendFragment.Mode.BTC);
+    private void selectedCrypto(Crypto crypto) {
+        final ImageButton button = ibCrypto.get(crypto);
+        button.setImageResource(crypto.getIconEnabledId());
+        button.setImageAlpha(255);
+        button.setEnabled(true);
+    }
+
+    private void possibleCrypto(Crypto crypto) {
+        final ImageButton button = ibCrypto.get(crypto);
+        button.setImageResource(crypto.getIconDisabledId());
+        button.setImageAlpha(255);
+        button.setEnabled(true);
+    }
+
+    private void impossibleCrypto(Crypto crypto) {
+        final ImageButton button = ibCrypto.get(crypto);
+        button.setImageResource(crypto.getIconDisabledId());
+        button.setImageAlpha(128);
+        button.setEnabled(true);
+    }
+
+    private void updateCryptoButtons(boolean noAddress) {
+        for (Crypto crypto : Crypto.values()) {
+            if (crypto == selectedCrypto) {
+                selectedCrypto(crypto);
+            } else if (possibleCryptos.contains(crypto)) {
+                possibleCrypto(crypto);
+            } else {
+                impossibleCrypto(crypto);
+            }
+        }
+        if ((selectedCrypto != null) && (selectedCrypto != Crypto.XMR)) {
+            tvXmrTo.setText(Html.fromHtml(getString(R.string.info_xmrto, selectedCrypto.getSymbol())));
+            tvXmrTo.setVisibility(View.VISIBLE);
+        } else if ((selectedCrypto == null) && (possibleCryptos.size() > 1)) {
+            tvXmrTo.setText(Html.fromHtml(getString(R.string.info_xmrto_ambiguous)));
+            tvXmrTo.setVisibility(View.VISIBLE);
+        } else {
+            tvXmrTo.setVisibility(View.INVISIBLE);
+        }
+        if (noAddress) {
+            selectedCrypto(Crypto.XMR);
+        }
     }
 
     private void processOpenAlias(String dnsOA) {
@@ -229,10 +316,10 @@ public class SendAddressWizardFragment extends SendWizardFragment {
             etAddress.setError(getString(R.string.send_address_resolve_openalias));
             OpenAliasHelper.resolve(dnsOA, new OpenAliasHelper.OnResolvedListener() {
                 @Override
-                public void onResolved(Map<BarcodeData.Asset, BarcodeData> dataMap) {
+                public void onResolved(Map<Crypto, BarcodeData> dataMap) {
                     resolvingOA = false;
-                    BarcodeData barcodeData = dataMap.get(BarcodeData.Asset.XMR);
-                    if (barcodeData == null) barcodeData = dataMap.get(BarcodeData.Asset.BTC);
+                    BarcodeData barcodeData = dataMap.get(Crypto.XMR);
+                    if (barcodeData == null) barcodeData = dataMap.get(Crypto.BTC);
                     if (barcodeData != null) {
                         Timber.d("Security=%s, %s", barcodeData.security.toString(), barcodeData.address);
                         processScannedData(barcodeData);
@@ -253,9 +340,7 @@ public class SendAddressWizardFragment extends SendWizardFragment {
     }
 
     private boolean checkAddressNoError() {
-        String address = etAddress.getEditText().getText().toString();
-        return Wallet.isAddressValid(address)
-                || BitcoinAddressValidator.validate(address);
+        return selectedCrypto != null;
     }
 
     private boolean checkAddress() {
@@ -268,19 +353,37 @@ public class SendAddressWizardFragment extends SendWizardFragment {
         return ok;
     }
 
-    private boolean isIntegratedAddress() {
-        String address = etAddress.getEditText().getText().toString();
+    private boolean isStandardAddress(String address) {
+        return Wallet.isAddressValid(address);
+    }
+
+    private boolean isIntegratedAddress(String address) {
         return (address.length() == INTEGRATED_ADDRESS_LENGTH)
                 && Wallet.isAddressValid(address);
     }
 
-    private boolean isBitcoinAddress() {
-        final String address = etAddress.getEditText().getText().toString();
-        return BitcoinAddressValidator.validate(address);
+    private boolean isBitcoinishAddress(String address) {
+        return BitcoinAddressValidator.validate(address, BitcoinAddressType.BTC)
+                ||
+                BitcoinAddressValidator.validate(address, BitcoinAddressType.LTC)
+                ||
+                BitcoinAddressValidator.validate(address, BitcoinAddressType.DASH);
+    }
+
+    private boolean isEthAddress(String address) {
+        return EthAddressValidator.validate(address);
     }
 
     private void shakeAddress() {
-        etAddress.startAnimation(Helper.getShakeAnimation(getContext()));
+        if (possibleCryptos.size() > 1) { // address ambiguous
+            for (Crypto crypto : Crypto.values()) {
+                if (possibleCryptos.contains(crypto)) {
+                    ibCrypto.get(crypto).startAnimation(Helper.getShakeAnimation(getContext()));
+                }
+            }
+        } else {
+            etAddress.startAnimation(Helper.getShakeAnimation(getContext()));
+        }
     }
 
     @Override
@@ -300,9 +403,12 @@ public class SendAddressWizardFragment extends SendWizardFragment {
             TxData txData = sendListener.getTxData();
             if (txData instanceof TxDataBtc) {
                 ((TxDataBtc) txData).setBtcAddress(etAddress.getEditText().getText().toString());
+                ((TxDataBtc) txData).setBtcSymbol(selectedCrypto.getSymbol());
                 txData.setDestinationAddress(null);
+                ServiceHelper.ASSET = selectedCrypto.getSymbol().toLowerCase();
             } else {
                 txData.setDestinationAddress(etAddress.getEditText().getText().toString());
+                ServiceHelper.ASSET = null;
             }
             txData.setUserNotes(new UserNotes(etNotes.getEditText().getText().toString()));
             txData.setPriority(PendingTransaction.Priority.Priority_Default);
@@ -344,6 +450,15 @@ public class SendAddressWizardFragment extends SendWizardFragment {
 
             if (barcodeData.address != null) {
                 etAddress.getEditText().setText(barcodeData.address);
+                possibleCryptos.clear();
+                selectedCrypto = null;
+                if (barcodeData.isAmbiguous()) {
+                    possibleCryptos.addAll(barcodeData.ambiguousAssets);
+                } else {
+                    possibleCryptos.add(barcodeData.asset);
+                    selectedCrypto = barcodeData.asset;
+                }
+                updateCryptoButtons(false);
                 if (checkAddress()) {
                     if (barcodeData.security == BarcodeData.Security.OA_NO_DNSSEC)
                         etAddress.setError(getString(R.string.send_address_no_dnssec));
@@ -355,7 +470,12 @@ public class SendAddressWizardFragment extends SendWizardFragment {
                 etAddress.setError(null);
             }
 
-            String scannedNotes = barcodeData.description;
+            String scannedNotes = barcodeData.addressName;
+            if (scannedNotes == null) {
+                scannedNotes = barcodeData.description;
+            } else if (barcodeData.description != null) {
+                scannedNotes = scannedNotes + ": " + barcodeData.description;
+            }
             if (scannedNotes != null) {
                 etNotes.getEditText().setText(scannedNotes);
             } else {
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 a061df49..3e66a876 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
@@ -42,9 +42,8 @@ public class SendAmountWizardFragment extends SendWizardFragment {
 
     Listener sendListener;
 
-    public SendAmountWizardFragment setSendListener(Listener listener) {
+    public void setSendListener(Listener listener) {
         this.sendListener = listener;
-        return this;
     }
 
     interface Listener {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcAmountWizardFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcAmountWizardFragment.java
index b819d5cd..f4b4ae0b 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcAmountWizardFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcAmountWizardFragment.java
@@ -28,16 +28,16 @@ import com.m2049r.xmrwallet.R;
 import com.m2049r.xmrwallet.data.BarcodeData;
 import com.m2049r.xmrwallet.data.TxDataBtc;
 import com.m2049r.xmrwallet.model.Wallet;
-import com.m2049r.xmrwallet.util.Helper;
-import com.m2049r.xmrwallet.util.OkHttpHelper;
-import com.m2049r.xmrwallet.widget.ExchangeOtherEditText;
-import com.m2049r.xmrwallet.widget.SendProgressView;
+import com.m2049r.xmrwallet.service.shift.ShiftCallback;
 import com.m2049r.xmrwallet.service.shift.ShiftError;
 import com.m2049r.xmrwallet.service.shift.ShiftException;
 import com.m2049r.xmrwallet.service.shift.sideshift.api.QueryOrderParameters;
 import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi;
-import com.m2049r.xmrwallet.service.shift.ShiftCallback;
 import com.m2049r.xmrwallet.service.shift.sideshift.network.SideShiftApiImpl;
+import com.m2049r.xmrwallet.util.OkHttpHelper;
+import com.m2049r.xmrwallet.util.ServiceHelper;
+import com.m2049r.xmrwallet.widget.ExchangeOtherEditText;
+import com.m2049r.xmrwallet.widget.SendProgressView;
 
 import java.text.NumberFormat;
 import java.util.Locale;
@@ -85,6 +85,7 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment {
 
         etAmount = view.findViewById(R.id.etAmount);
         etAmount.requestFocus();
+
         return view;
     }
 
@@ -130,20 +131,26 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment {
     public void onResumeFragment() {
         super.onResumeFragment();
         Timber.d("onResumeFragment()");
+        final String btcSymbol = ((TxDataBtc) sendListener.getTxData()).getBtcSymbol();
+        if (!btcSymbol.toLowerCase().equals(ServiceHelper.ASSET))
+            throw new IllegalStateException("Asset Symbol is wrong!");
         final long funds = getTotalFunds();
         if (!sendListener.getActivityCallback().isStreetMode()) {
             tvFunds.setText(getString(R.string.send_available,
                     Wallet.getDisplayAmount(funds)));
+            //TODO
         } else {
             tvFunds.setText(getString(R.string.send_available,
                     getString(R.string.unknown_amount)));
         }
+        etAmount.setAmount("");
         final BarcodeData data = sendListener.popBarcodeData();
         if (data != null) {
             if (data.amount != null) {
                 etAmount.setAmount(data.amount);
             }
         }
+        etAmount.setBaseCurrency(btcSymbol);
         callXmrTo();
     }
 
@@ -166,7 +173,9 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment {
             String min = df.format(minBtc);
             String max = df.format(maxBtc);
             String rate = df.format(price);
-            Spanned xmrParmText = Html.fromHtml(getString(R.string.info_send_xmrto_parms, min, max, rate));
+            final TxDataBtc txDataBtc = (TxDataBtc) sendListener.getTxData();
+            Spanned xmrParmText = Html.fromHtml(getString(R.string.info_send_xmrto_parms,
+                    min, max, rate, txDataBtc.getBtcSymbol()));
             tvXmrToParms.setText(xmrParmText);
 
             final long funds = getTotalFunds();
@@ -183,7 +192,8 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment {
             }
             tvFunds.setText(getString(R.string.send_available_btc,
                     availXmrString,
-                    availBtcString));
+                    availBtcString,
+                    ((TxDataBtc) sendListener.getTxData()).getBtcSymbol()));
             llXmrToParms.setVisibility(View.VISIBLE);
             evParams.hideProgress();
         });
@@ -246,7 +256,7 @@ public class SendBtcAmountWizardFragment extends SendWizardFragment {
             synchronized (this) {
                 if (xmrToApi == null) {
                     xmrToApi = new SideShiftApiImpl(OkHttpHelper.getOkHttpClient(),
-                            Helper.getXmrToBaseUrl());
+                            ServiceHelper.getXmrToBaseUrl());
                 }
             }
         }
diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcConfirmWizardFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcConfirmWizardFragment.java
index 27ff90db..a37ece89 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcConfirmWizardFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcConfirmWizardFragment.java
@@ -29,16 +29,17 @@ import com.m2049r.xmrwallet.data.TxData;
 import com.m2049r.xmrwallet.data.TxDataBtc;
 import com.m2049r.xmrwallet.model.PendingTransaction;
 import com.m2049r.xmrwallet.model.Wallet;
-import com.m2049r.xmrwallet.util.Helper;
-import com.m2049r.xmrwallet.util.OkHttpHelper;
-import com.m2049r.xmrwallet.widget.SendProgressView;
+import com.m2049r.xmrwallet.service.shift.ShiftCallback;
 import com.m2049r.xmrwallet.service.shift.ShiftError;
 import com.m2049r.xmrwallet.service.shift.ShiftException;
 import com.m2049r.xmrwallet.service.shift.sideshift.api.CreateOrder;
 import com.m2049r.xmrwallet.service.shift.sideshift.api.RequestQuote;
 import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi;
-import com.m2049r.xmrwallet.service.shift.ShiftCallback;
 import com.m2049r.xmrwallet.service.shift.sideshift.network.SideShiftApiImpl;
+import com.m2049r.xmrwallet.util.Helper;
+import com.m2049r.xmrwallet.util.OkHttpHelper;
+import com.m2049r.xmrwallet.util.ServiceHelper;
+import com.m2049r.xmrwallet.widget.SendProgressView;
 
 import java.text.NumberFormat;
 import java.util.Locale;
@@ -67,6 +68,7 @@ public class SendBtcConfirmWizardFragment extends SendWizardFragment implements
     private TextView tvTxBtcAmount;
     private TextView tvTxBtcRate;
     private TextView tvTxBtcAddress;
+    private TextView tvTxBtcAddressLabel;
     private TextView tvTxXmrToKey;
     private TextView tvTxFee;
     private TextView tvTxTotal;
@@ -84,6 +86,7 @@ public class SendBtcConfirmWizardFragment extends SendWizardFragment implements
                 R.layout.fragment_send_btc_confirm, container, false);
 
         tvTxBtcAddress = view.findViewById(R.id.tvTxBtcAddress);
+        tvTxBtcAddressLabel = view.findViewById(R.id.tvTxBtcAddressLabel);
         tvTxBtcAmount = view.findViewById(R.id.tvTxBtcAmount);
         tvTxBtcRate = view.findViewById(R.id.tvTxBtcRate);
         tvTxXmrToKey = view.findViewById(R.id.tvTxXmrToKey);
@@ -259,6 +262,8 @@ public class SendBtcConfirmWizardFragment extends SendWizardFragment implements
         if (sendListener.getMode() != SendFragment.Mode.BTC) {
             throw new IllegalStateException("Mode is not BTC!");
         }
+        if (!((TxDataBtc) sendListener.getTxData()).getBtcSymbol().toLowerCase().equals(ServiceHelper.ASSET))
+            throw new IllegalStateException("Asset Symbol is wrong!");
         Helper.hideKeyboard(getActivity());
         llStageA.setVisibility(View.INVISIBLE);
         evStageA.hideProgress();
@@ -392,9 +397,10 @@ public class SendBtcConfirmWizardFragment extends SendWizardFragment implements
             df.setMaximumFractionDigits(12);
             final String btcAmount = df.format(xmrtoQuote.getBtcAmount());
             final String xmrAmountTotal = df.format(xmrtoQuote.getXmrAmount());
-            tvTxBtcAmount.setText(getString(R.string.text_send_btc_amount, btcAmount, xmrAmountTotal));
+            tvTxBtcAmount.setText(getString(R.string.text_send_btc_amount,
+                    btcAmount, xmrAmountTotal, txDataBtc.getBtcSymbol()));
             final String xmrPriceBtc = df.format(xmrtoQuote.getPrice());
-            tvTxBtcRate.setText(getString(R.string.text_send_btc_rate, xmrPriceBtc));
+            tvTxBtcRate.setText(getString(R.string.text_send_btc_rate, xmrPriceBtc, txDataBtc.getBtcSymbol()));
             hideProgress();
         });
         stageB(requestQuote.getId());
@@ -477,13 +483,14 @@ public class SendBtcConfirmWizardFragment extends SendWizardFragment implements
         TxDataBtc txDataBtc = (TxDataBtc) sendListener.getTxData();
         // verify amount & destination
         if ((order.getBtcAmount() != txDataBtc.getBtcAmount())
-                || (!order.getBtcAddress().equals(txDataBtc.getBtcAddress()))) {
+                || (!txDataBtc.validateAddress(order.getBtcAddress()))) {
             throw new IllegalStateException("Order does not fulfill quote!"); // something is terribly wrong - die
         }
         xmrtoOrder = order;
         getView().post(() -> {
             tvTxXmrToKey.setText(order.getOrderId());
             tvTxBtcAddress.setText(order.getBtcAddress());
+            tvTxBtcAddressLabel.setText(getString(R.string.label_send_btc_address, txDataBtc.getBtcSymbol()));
             hideProgress();
             Timber.d("Expires @ %s", order.getExpiresAt().toString());
             final int timeout = (int) (order.getExpiresAt().getTime() - order.getCreatedAt().getTime()) / 1000 - 60; // -1 minute buffer
@@ -561,7 +568,7 @@ public class SendBtcConfirmWizardFragment extends SendWizardFragment implements
             synchronized (this) {
                 if (xmrToApi == null) {
                     xmrToApi = new SideShiftApiImpl(OkHttpHelper.getOkHttpClient(),
-                            Helper.getXmrToBaseUrl());
+                            ServiceHelper.getXmrToBaseUrl());
                 }
             }
         }
diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcSuccessWizardFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcSuccessWizardFragment.java
index d2a6462a..4156ee56 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcSuccessWizardFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendBtcSuccessWizardFragment.java
@@ -30,6 +30,7 @@ import android.widget.TextView;
 import android.widget.Toast;
 
 import com.m2049r.xmrwallet.R;
+import com.m2049r.xmrwallet.data.Crypto;
 import com.m2049r.xmrwallet.data.PendingTx;
 import com.m2049r.xmrwallet.data.TxDataBtc;
 import com.m2049r.xmrwallet.service.shift.ShiftCallback;
@@ -39,6 +40,7 @@ import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi;
 import com.m2049r.xmrwallet.service.shift.sideshift.network.SideShiftApiImpl;
 import com.m2049r.xmrwallet.util.Helper;
 import com.m2049r.xmrwallet.util.OkHttpHelper;
+import com.m2049r.xmrwallet.util.ServiceHelper;
 
 import java.text.NumberFormat;
 import java.util.Locale;
@@ -62,10 +64,10 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment {
     ImageButton bCopyTxId;
     private TextView tvTxId;
     private TextView tvTxAddress;
-    private TextView tvTxPaymentId;
     private TextView tvTxAmount;
     private TextView tvTxFee;
     private TextView tvXmrToAmount;
+    private ImageView ivXmrToIcon;
     private TextView tvXmrToStatus;
     private ImageView ivXmrToStatus;
     private ImageView ivXmrToStatusBig;
@@ -90,13 +92,13 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment {
         });
 
         tvXmrToAmount = view.findViewById(R.id.tvXmrToAmount);
+        ivXmrToIcon = view.findViewById(R.id.ivXmrToIcon);
         tvXmrToStatus = view.findViewById(R.id.tvXmrToStatus);
         ivXmrToStatus = view.findViewById(R.id.ivXmrToStatus);
         ivXmrToStatusBig = view.findViewById(R.id.ivXmrToStatusBig);
 
         tvTxId = view.findViewById(R.id.tvTxId);
         tvTxAddress = view.findViewById(R.id.tvTxAddress);
-        tvTxPaymentId = view.findViewById(R.id.tvTxPaymentId);
         tvTxAmount = view.findViewById(R.id.tvTxAmount);
         tvTxFee = view.findViewById(R.id.tvTxFee);
 
@@ -150,9 +152,11 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment {
                 NumberFormat df = NumberFormat.getInstance(Locale.US);
                 df.setMaximumFractionDigits(12);
                 String btcAmount = df.format(btcData.getBtcAmount());
-                tvXmrToAmount.setText(getString(R.string.info_send_xmrto_success_btc, btcAmount));
+                tvXmrToAmount.setText(getString(R.string.info_send_xmrto_success_btc, btcAmount, btcData.getBtcSymbol()));
                 //TODO         btcData.getBtcAddress();
                 tvTxXmrToKey.setText(btcData.getXmrtoOrderId());
+                final Crypto crypto = Crypto.withSymbol(btcData.getBtcSymbol());
+                ivXmrToIcon.setImageResource(crypto.getIconEnabledId());
                 tvXmrToSupport.setOnClickListener(v -> {
                     Uri orderUri = getXmrToApi().getQueryOrderUri(btcData.getXmrtoOrderId());
                     Intent intent = new Intent(Intent.ACTION_VIEW, orderUri);
@@ -211,7 +215,7 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment {
             statusResource = R.drawable.ic_error_red_24dp;
             pbXmrto.getIndeterminateDrawable().setColorFilter(0xff8b0000, android.graphics.PorterDuff.Mode.MULTIPLY);
         } else if (status.isSent() || status.isPaid()) {
-            tvXmrToStatus.setText(getString(R.string.info_send_xmrto_sent));
+            tvXmrToStatus.setText(getString(R.string.info_send_xmrto_sent, btcData.getBtcSymbol()));
             statusResource = R.drawable.ic_success_green_24dp;
             pbXmrto.getIndeterminateDrawable().setColorFilter(0xFF417505, android.graphics.PorterDuff.Mode.MULTIPLY);
         } else if (status.isWaiting()) {
@@ -228,6 +232,7 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment {
         ivXmrToStatus.setImageResource(statusResource);
         if (status.isTerminal()) {
             pbXmrto.setVisibility(View.INVISIBLE);
+            ivXmrToIcon.setVisibility(View.GONE);
             ivXmrToStatus.setVisibility(View.GONE);
             ivXmrToStatusBig.setImageResource(statusResource);
             ivXmrToStatusBig.setVisibility(View.VISIBLE);
@@ -241,7 +246,7 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment {
             synchronized (this) {
                 if (xmrToApi == null) {
                     xmrToApi = new SideShiftApiImpl(OkHttpHelper.getOkHttpClient(),
-                            Helper.getXmrToBaseUrl());
+                            ServiceHelper.getXmrToBaseUrl());
                 }
             }
         }
diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendFragment.java
index 2e0faf52..903aff0f 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendFragment.java
@@ -29,6 +29,7 @@ import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.EditText;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.fragment.app.Fragment;
 import androidx.fragment.app.FragmentManager;
@@ -92,8 +93,6 @@ public class SendFragment extends Fragment
         void setOnUriScannedListener(OnUriScannedListener onUriScannedListener);
     }
 
-    private EditText etDummy;
-
     private View llNavBar;
     private DotBar dotBar;
     private Button bPrev;
@@ -101,7 +100,7 @@ public class SendFragment extends Fragment
 
     private Button bDone;
 
-    static private int MAX_FALLBACK = Integer.MAX_VALUE;
+    static private final int MAX_FALLBACK = Integer.MAX_VALUE;
 
     public static SendFragment newInstance(String uri) {
         SendFragment f = new SendFragment();
@@ -166,28 +165,18 @@ public class SendFragment extends Fragment
             }
         });
 
-        bPrev.setOnClickListener(new View.OnClickListener() {
-            public void onClick(View v) {
-                spendViewPager.previous();
-            }
-        });
+        bPrev.setOnClickListener(v -> spendViewPager.previous());
 
-        bNext.setOnClickListener(new View.OnClickListener() {
-            public void onClick(View v) {
-                spendViewPager.next();
-            }
-        });
+        bNext.setOnClickListener(v -> spendViewPager.next());
 
-        bDone.setOnClickListener(new View.OnClickListener() {
-            public void onClick(View v) {
-                Timber.d("bDone.onClick");
-                activityCallback.onFragmentDone();
-            }
+        bDone.setOnClickListener(v -> {
+            Timber.d("bDone.onClick");
+            activityCallback.onFragmentDone();
         });
 
         updatePosition(0);
 
-        etDummy = view.findViewById(R.id.etDummy);
+        final EditText etDummy = view.findViewById(R.id.etDummy);
         etDummy.setRawInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
         etDummy.requestFocus();
         Helper.hideKeyboard(getActivity());
@@ -197,7 +186,7 @@ public class SendFragment extends Fragment
             String uri = args.getString(WalletActivity.REQUEST_URI);
             Timber.d("URI: %s", uri);
             if (uri != null) {
-                barcodeData = BarcodeData.fromQrCode(uri);
+                barcodeData = BarcodeData.fromString(uri);
                 Timber.d("barcodeData: %s", barcodeData != null ? barcodeData.toString() : "null");
             }
         }
@@ -236,7 +225,7 @@ public class SendFragment extends Fragment
     }
 
     @Override
-    public void onAttach(Context context) {
+    public void onAttach(@NonNull Context context) {
         Timber.d("onAttach %s", context);
         super.onAttach(context);
         if (context instanceof Listener) {
@@ -300,12 +289,7 @@ public class SendFragment extends Fragment
                 default:
                     throw new IllegalArgumentException("Mode " + String.valueOf(aMode) + " unknown!");
             }
-            getView().post(new Runnable() {
-                @Override
-                public void run() {
-                    pagerAdapter.notifyDataSetChanged();
-                }
-            });
+            getView().post(() -> pagerAdapter.notifyDataSetChanged());
             Timber.d("New Mode = %s", mode.toString());
         }
     }
@@ -338,8 +322,9 @@ public class SendFragment extends Fragment
             return numPages;
         }
 
+        @NonNull
         @Override
-        public Object instantiateItem(ViewGroup container, int position) {
+        public Object instantiateItem(@NonNull ViewGroup container, int position) {
             Timber.d("instantiateItem %d", position);
             SendWizardFragment fragment = (SendWizardFragment) super.instantiateItem(container, position);
             myFragments.put(position, new WeakReference<>(fragment));
@@ -347,20 +332,21 @@ public class SendFragment extends Fragment
         }
 
         @Override
-        public void destroyItem(ViewGroup container, int position, Object object) {
+        public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
             Timber.d("destroyItem %d", position);
             myFragments.remove(position);
             super.destroyItem(container, position, object);
         }
 
         public SendWizardFragment getFragment(int position) {
-            WeakReference ref = myFragments.get(position);
+            WeakReference<SendWizardFragment> ref = myFragments.get(position);
             if (ref != null)
                 return myFragments.get(position).get();
             else
                 return null;
         }
 
+        @NonNull
         @Override
         public SendWizardFragment getItem(int position) {
             Timber.d("getItem(%d) CREATE", position);
@@ -415,7 +401,7 @@ public class SendFragment extends Fragment
         }
 
         @Override
-        public int getItemPosition(Object object) {
+        public int getItemPosition(@NonNull Object object) {
             Timber.d("getItemPosition %s", String.valueOf(object));
             if (object instanceof SendAddressWizardFragment) {
                 // keep these pages
diff --git a/app/src/main/java/com/m2049r/xmrwallet/layout/TransactionInfoAdapter.java b/app/src/main/java/com/m2049r/xmrwallet/layout/TransactionInfoAdapter.java
index d90bb63f..9d2d8ba2 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/layout/TransactionInfoAdapter.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/layout/TransactionInfoAdapter.java
@@ -17,18 +17,20 @@
 package com.m2049r.xmrwallet.layout;
 
 import android.content.Context;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import androidx.core.content.ContextCompat;
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.m2049r.xmrwallet.R;
+import com.m2049r.xmrwallet.data.Crypto;
+import com.m2049r.xmrwallet.data.UserNotes;
 import com.m2049r.xmrwallet.model.TransactionInfo;
 import com.m2049r.xmrwallet.util.Helper;
-import com.m2049r.xmrwallet.data.UserNotes;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -141,7 +143,13 @@ public class TransactionInfoAdapter extends RecyclerView.Adapter<TransactionInfo
 
             UserNotes userNotes = new UserNotes(infoItem.notes);
             if (userNotes.xmrtoKey != null) {
-                ivTxType.setVisibility(View.VISIBLE);
+                final Crypto crypto = Crypto.withSymbol(userNotes.xmrtoCurrency);
+                if (crypto != null) {
+                    ivTxType.setImageResource(crypto.getIconEnabledId());
+                    ivTxType.setVisibility(View.VISIBLE);
+                } else {// otherwirse pretend we don't know it's a shift
+                    ivTxType.setVisibility(View.GONE);
+                }
             } else {
                 ivTxType.setVisibility(View.GONE); // gives us more space for the amount
             }
diff --git a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/CreateOrder.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/CreateOrder.java
index e36e2eaf..f738956b 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/CreateOrder.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/CreateOrder.java
@@ -21,6 +21,8 @@ import java.util.Date;
 public interface CreateOrder {
     String TAG = "side";
 
+    String getBtcCurrency();
+
     double getBtcAmount();
 
     String getBtcAddress();
diff --git a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/SideShiftApi.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/SideShiftApi.java
index 1bad6cc0..6c9331c9 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/SideShiftApi.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/api/SideShiftApi.java
@@ -23,8 +23,6 @@ import androidx.annotation.NonNull;
 import com.m2049r.xmrwallet.service.shift.ShiftCallback;
 
 public interface SideShiftApi {
-
-    String ASSET = "btc";
     int QUERY_INTERVAL = 5000; // ms
 
     /**
diff --git a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/CreateOrderImpl.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/CreateOrderImpl.java
index d209c40e..258cf4d7 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/CreateOrderImpl.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/CreateOrderImpl.java
@@ -25,6 +25,7 @@ import com.m2049r.xmrwallet.service.shift.ShiftCallback;
 import com.m2049r.xmrwallet.service.shift.sideshift.api.CreateOrder;
 import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi;
 import com.m2049r.xmrwallet.util.DateHelper;
+import com.m2049r.xmrwallet.util.ServiceHelper;
 
 import org.json.JSONException;
 import org.json.JSONObject;
@@ -35,6 +36,8 @@ import java.util.Date;
 import lombok.Getter;
 
 class CreateOrderImpl implements CreateOrder {
+    @Getter
+    private final String btcCurrency;
     @Getter
     private final double btcAmount;
     @Getter
@@ -56,9 +59,10 @@ class CreateOrderImpl implements CreateOrder {
         // sanity checks
         final String depositMethod = jsonObject.getString("depositMethodId");
         final String settleMethod = jsonObject.getString("settleMethodId");
-        if (!"xmr".equals(depositMethod) || !SideShiftApi.ASSET.equals(settleMethod))
+        if (!"xmr".equals(depositMethod) || !ServiceHelper.ASSET.equals(settleMethod))
             throw new IllegalStateException();
 
+        btcCurrency = settleMethod.toUpperCase();
         btcAmount = jsonObject.getDouble("settleAmount");
         JSONObject settleAddress = jsonObject.getJSONObject("settleAddress");
         btcAddress = settleAddress.getString("address");
diff --git a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/QueryOrderParametersImpl.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/QueryOrderParametersImpl.java
index a1bf31c9..afa5527c 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/QueryOrderParametersImpl.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/QueryOrderParametersImpl.java
@@ -23,6 +23,7 @@ import com.m2049r.xmrwallet.service.shift.ShiftApiCall;
 import com.m2049r.xmrwallet.service.shift.sideshift.api.QueryOrderParameters;
 import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi;
 import com.m2049r.xmrwallet.service.shift.ShiftCallback;
+import com.m2049r.xmrwallet.util.ServiceHelper;
 
 import org.json.JSONException;
 import org.json.JSONObject;
@@ -53,7 +54,7 @@ class QueryOrderParametersImpl implements QueryOrderParameters {
 
     public static void call(@NonNull final ShiftApiCall api,
                             @NonNull final ShiftCallback<QueryOrderParameters> callback) {
-        api.call("pairs/xmr/" + SideShiftApi.ASSET, new NetworkCallback() {
+        api.call("pairs/xmr/" + ServiceHelper.ASSET, new NetworkCallback() {
             @Override
             public void onSuccess(JSONObject jsonObject) {
                 try {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/RequestQuoteImpl.java b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/RequestQuoteImpl.java
index 91addc56..6a1b8023 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/RequestQuoteImpl.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/service/shift/sideshift/network/RequestQuoteImpl.java
@@ -24,6 +24,7 @@ import com.m2049r.xmrwallet.util.DateHelper;
 import com.m2049r.xmrwallet.service.shift.sideshift.api.RequestQuote;
 import com.m2049r.xmrwallet.service.shift.sideshift.api.SideShiftApi;
 import com.m2049r.xmrwallet.service.shift.ShiftCallback;
+import com.m2049r.xmrwallet.util.ServiceHelper;
 
 import org.json.JSONException;
 import org.json.JSONObject;
@@ -55,7 +56,7 @@ class RequestQuoteImpl implements RequestQuote {
         // sanity checks
         final String depositMethod = jsonObject.getString("depositMethod");
         final String settleMethod = jsonObject.getString("settleMethod");
-        if (!"xmr".equals(depositMethod) || !SideShiftApi.ASSET.equals(settleMethod))
+        if (!"xmr".equals(depositMethod) || !ServiceHelper.ASSET.equals(settleMethod))
             throw new IllegalStateException();
 
         btcAmount = jsonObject.getDouble("settleAmount");
@@ -106,7 +107,7 @@ class RequestQuoteImpl implements RequestQuote {
     static JSONObject createRequest(final double xmrAmount) throws JSONException {
         final JSONObject jsonObject = new JSONObject();
         jsonObject.put("depositMethod", "xmr");
-        jsonObject.put("settleMethod", SideShiftApi.ASSET);
+        jsonObject.put("settleMethod", ServiceHelper.ASSET);
         // #sideshift is silly and likes numbers as strings
         String amount = AmountFormatter.format(xmrAmount);
         jsonObject.put("depositAmount", amount);
diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java b/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java
index 326da625..66a37045 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/util/Helper.java
@@ -323,15 +323,6 @@ public class Helper {
         return ShakeAnimation;
     }
 
-    static public HttpUrl getXmrToBaseUrl() {
-        if ((WalletManager.getInstance() == null)
-                || (WalletManager.getInstance().getNetworkType() != NetworkType.NetworkType_Mainnet)) {
-            throw new IllegalStateException("Only mainnet not supported");
-        } else {
-            return HttpUrl.parse("https://sideshift.ai/api/v1/");
-        }
-    }
-
     private final static char[] HexArray = "0123456789ABCDEF".toCharArray();
 
     public static String bytesToHex(byte[] data) {
@@ -639,10 +630,6 @@ public class Helper {
         }
     }
 
-    static public ExchangeApi getExchangeApi() {
-        return new com.m2049r.xmrwallet.service.exchange.krakenEcb.ExchangeApiImpl(OkHttpHelper.getOkHttpClient());
-    }
-
     public interface Action {
         boolean run();
     }
diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/OpenAliasHelper.java b/app/src/main/java/com/m2049r/xmrwallet/util/OpenAliasHelper.java
index 4b9c784c..b710fbc8 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/util/OpenAliasHelper.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/util/OpenAliasHelper.java
@@ -21,6 +21,7 @@ package com.m2049r.xmrwallet.util;
 import android.os.AsyncTask;
 
 import com.m2049r.xmrwallet.data.BarcodeData;
+import com.m2049r.xmrwallet.data.Crypto;
 
 import org.jitsi.dnssec.validator.ValidatingResolver;
 import org.xbill.DNS.DClass;
@@ -52,7 +53,6 @@ public class OpenAliasHelper {
     public static final String OA1_NAME = "recipient_name";
     public static final String OA1_DESCRIPTION = "tx_description";
     public static final String OA1_AMOUNT = "tx_amount";
-    public static final String OA1_PAYMENTID = "tx_payment_id";
 
     public static final int DNS_LOOKUP_TIMEOUT = 2500; // ms
 
@@ -65,7 +65,7 @@ public class OpenAliasHelper {
     }
 
     public interface OnResolvedListener {
-        void onResolved(Map<BarcodeData.Asset, BarcodeData> dataMap);
+        void onResolved(Map<Crypto, BarcodeData> dataMap);
 
         void onFailure();
     }
@@ -138,7 +138,7 @@ public class OpenAliasHelper {
         public void onPostExecute(Boolean success) {
             if (resolvedListener != null)
                 if (success) {
-                    Map<BarcodeData.Asset, BarcodeData> dataMap = new HashMap<>();
+                    Map<Crypto, BarcodeData> dataMap = new HashMap<>();
                     for (String txt : txts) {
                         BarcodeData bc = BarcodeData.parseOpenAlias(txt, dnssec);
                         if (bc != null) {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/ServiceHelper.java b/app/src/main/java/com/m2049r/xmrwallet/util/ServiceHelper.java
new file mode 100644
index 00000000..6221682b
--- /dev/null
+++ b/app/src/main/java/com/m2049r/xmrwallet/util/ServiceHelper.java
@@ -0,0 +1,24 @@
+package com.m2049r.xmrwallet.util;
+
+import com.m2049r.xmrwallet.model.NetworkType;
+import com.m2049r.xmrwallet.model.WalletManager;
+import com.m2049r.xmrwallet.service.exchange.api.ExchangeApi;
+
+import okhttp3.HttpUrl;
+
+public class ServiceHelper {
+    public static String ASSET = null;
+
+    static public HttpUrl getXmrToBaseUrl() {
+        if ((WalletManager.getInstance() == null)
+                || (WalletManager.getInstance().getNetworkType() != NetworkType.NetworkType_Mainnet)) {
+            throw new IllegalStateException("Only mainnet not supported");
+        } else {
+            return HttpUrl.parse("https://sideshift.ai/api/v1/");
+        }
+    }
+
+    static public ExchangeApi getExchangeApi() {
+        return new com.m2049r.xmrwallet.service.exchange.krakenEcb.ExchangeApiImpl(OkHttpHelper.getOkHttpClient());
+    }
+}
diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/validator/BitcoinAddressType.java b/app/src/main/java/com/m2049r/xmrwallet/util/validator/BitcoinAddressType.java
new file mode 100644
index 00000000..a1415b1e
--- /dev/null
+++ b/app/src/main/java/com/m2049r/xmrwallet/util/validator/BitcoinAddressType.java
@@ -0,0 +1,51 @@
+package com.m2049r.xmrwallet.util.validator;
+
+import lombok.Getter;
+
+public enum BitcoinAddressType {
+    BTC(Type.BTC, Type.BTC_BECH32_PREFIX),
+    LTC(Type.LTC, Type.LTC_BECH32_PREFIX),
+    DASH(Type.DASH, null),
+    DOGE(Type.DOGE, null);
+
+    @Getter
+    private final byte[] production;
+    @Getter
+    private final byte[] testnet;
+
+    @Getter
+    private final String productionBech32Prefix;
+    @Getter
+    private final String testnetBech32Prefix;
+
+    public boolean hasBech32() {
+        return productionBech32Prefix != null;
+    }
+
+    public String getBech32Prefix(boolean testnet) {
+        return testnet ? testnetBech32Prefix : productionBech32Prefix;
+    }
+
+    BitcoinAddressType(byte[][] types, String[] bech32Prefix) {
+        production = types[0];
+        testnet = types[1];
+        if (bech32Prefix != null) {
+            productionBech32Prefix = bech32Prefix[0];
+            testnetBech32Prefix = bech32Prefix[1];
+        } else {
+            productionBech32Prefix = null;
+            testnetBech32Prefix = null;
+        }
+    }
+
+    // Java is silly and doesn't allow array initializers in the construction
+    private static class Type {
+        private static final byte[][] BTC = {{0x00, 0x05}, {0x6f, (byte) 0xc4}};
+        private static final String[] BTC_BECH32_PREFIX = {"bc", "tb"};
+        private static final byte[][] LTC = {{0x30, 0x05, 0x32}, {0x6f, (byte) 0xc4, 0x3a}};
+        private static final String[] LTC_BECH32_PREFIX = {"ltc", "tltc"};
+        private static final byte[][] DASH = {{0x4c, 0x10}, {(byte) 0x8c, 0x13}};
+        private static final byte[][] DOGE = {{0x1e, 0x16}, {0x71, (byte) 0xc4}};
+    }
+
+}
diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/BitcoinAddressValidator.java b/app/src/main/java/com/m2049r/xmrwallet/util/validator/BitcoinAddressValidator.java
similarity index 74%
rename from app/src/main/java/com/m2049r/xmrwallet/util/BitcoinAddressValidator.java
rename to app/src/main/java/com/m2049r/xmrwallet/util/validator/BitcoinAddressValidator.java
index 76fa8979..ce5cec04 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/util/BitcoinAddressValidator.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/util/validator/BitcoinAddressValidator.java
@@ -14,10 +14,11 @@
  * limitations under the License.
  */
 
-package com.m2049r.xmrwallet.util;
+package com.m2049r.xmrwallet.util.validator;
 
 // mostly based on https://rosettacode.org/wiki/Bitcoin/address_validation#Java
 
+import com.m2049r.xmrwallet.data.Crypto;
 import com.m2049r.xmrwallet.model.NetworkType;
 import com.m2049r.xmrwallet.model.WalletManager;
 
@@ -28,28 +29,47 @@ import java.security.NoSuchAlgorithmException;
 import java.util.Arrays;
 
 public class BitcoinAddressValidator {
-
     private static final String ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
 
-    public static boolean validate(String addrress) {
-        boolean testnet = WalletManager.getInstance().getNetworkType() != NetworkType.NetworkType_Mainnet;
-        if (validate(addrress, testnet)) return true;
-        return validateBech32Segwit(addrress, testnet);
+    public static Crypto validate(String address) {
+        for (BitcoinAddressType type : BitcoinAddressType.values()) {
+            if (validate(address, type))
+                return Crypto.valueOf(type.name());
+        }
+        return null;
     }
 
-    public static boolean validate(String addrress, boolean testnet) {
+    // just for tests
+    public static boolean validateBTC(String addrress, boolean testnet) {
+        return validate(addrress, BitcoinAddressType.BTC, testnet);
+    }
+
+    public static boolean validate(String addrress, BitcoinAddressType type, boolean testnet) {
+        if (validate(addrress, testnet ? type.getTestnet() : type.getProduction()))
+            return true;
+        if (type.hasBech32())
+            return validateBech32Segwit(addrress, type, testnet);
+        else
+            return false;
+    }
+
+    public static boolean validate(String addrress, BitcoinAddressType type) {
+        final boolean testnet = WalletManager.getInstance().getNetworkType() != NetworkType.NetworkType_Mainnet;
+        return validate(addrress, type, testnet);
+    }
+
+    public static boolean validate(String addrress, byte[] addressTypes) {
         if (addrress.length() < 26 || addrress.length() > 35)
             return false;
         byte[] decoded = decodeBase58To25Bytes(addrress);
         if (decoded == null)
             return false;
-
         int v = decoded[0] & 0xFF;
-        if (!testnet) {
-            if ((v != 0x00) && (v != 0x05)) return false;
-        } else {
-            if ((v != 0x6f) && (v != 0xc4)) return false;
+        boolean nok = true;
+        for (byte b : addressTypes) {
+            nok = nok && (v != (b & 0xFF));
         }
+        if (nok) return false;
 
         byte[] hash1 = sha256(Arrays.copyOfRange(decoded, 0, 21));
         byte[] hash2 = sha256(hash1);
@@ -95,18 +115,20 @@ public class BitcoinAddressValidator {
 
     private static final String DATA_CHARS = "qpzry9x8gf2tvdw0s3jn54khce6mua7l";
 
-    public static boolean validateBech32Segwit(String bech32, boolean testnet) {
+    public static boolean validateBech32Segwit(String bech32, BitcoinAddressType type, boolean testnet) {
         if (!bech32.equals(bech32.toLowerCase()) && !bech32.equals(bech32.toUpperCase())) {
             return false; // mixing upper and lower case not allowed
         }
         bech32 = bech32.toLowerCase();
 
-        if (testnet && !bech32.startsWith("tb1")) return false;
-        if (!testnet && !bech32.startsWith("bc1")) return false;
+        if (!bech32.startsWith(type.getBech32Prefix(testnet))) return false;
 
-        if ((bech32.length() < 14) || (bech32.length() > 74)) return false;
-        int mod = bech32.length() % 8;
-        if ((mod == 0) || (mod == 3) || (mod == 5)) return false;
+        final int hrpLength = type.getBech32Prefix(testnet).length();
+
+        if ((bech32.length() < (12 + hrpLength)) || (bech32.length() > (72 + hrpLength)))
+            return false;
+        int mod = (bech32.length() - hrpLength) % 8;
+        if ((mod == 6) || (mod == 1) || (mod == 3)) return false;
 
         int sep = -1;
         final byte[] bytes = bech32.getBytes(StandardCharsets.US_ASCII);
@@ -117,7 +139,7 @@ public class BitcoinAddressValidator {
             if (bytes[i] == 49) sep = i; // 49 := '1' in ASCII
         }
 
-        if (sep != 2) return false; // bech32 always has len(hrp)==2
+        if (sep != hrpLength) return false;
         if (sep > bytes.length - 7) {
             return false; // min 6 bytes data
         }
@@ -158,12 +180,12 @@ public class BitcoinAddressValidator {
     private static byte[] hrpExpand(byte[] hrp) {
         final byte[] expanded = new byte[(2 * hrp.length) + 1];
         int i = 0;
-        for (int j = 0; j < hrp.length; j++) {
-            expanded[i++] = (byte) (hrp[j] >> 5);
+        for (byte b : hrp) {
+            expanded[i++] = (byte) (b >> 5);
         }
         expanded[i++] = 0;
-        for (int j = 0; j < hrp.length; j++) {
-            expanded[i++] = (byte) (hrp[j] & 0x1f);
+        for (byte b : hrp) {
+            expanded[i++] = (byte) (b & 0x1f);
         }
         return expanded;
     }
@@ -195,4 +217,4 @@ public class BitcoinAddressValidator {
 
         return true;
     }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/m2049r/xmrwallet/util/validator/EthAddressValidator.java b/app/src/main/java/com/m2049r/xmrwallet/util/validator/EthAddressValidator.java
new file mode 100644
index 00000000..3e4c4763
--- /dev/null
+++ b/app/src/main/java/com/m2049r/xmrwallet/util/validator/EthAddressValidator.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2017 m2049r er al.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.m2049r.xmrwallet.util.validator;
+
+// mostly based on https://github.com/ognus/wallet-address-validator/blob/master/src/ethereum_validator.js
+
+import com.theromus.sha.Keccak;
+import com.theromus.sha.Parameters;
+
+import java.nio.charset.StandardCharsets;
+import java.util.regex.Pattern;
+
+public class EthAddressValidator {
+    static private final Pattern ETH_ADDRESS = Pattern.compile("^0x[0-9a-fA-F]{40}$");
+    static private final Pattern ETH_ALLLOWER = Pattern.compile("^0x[0-9a-f]{40}$");
+    static private final Pattern ETH_ALLUPPER = Pattern.compile("^0x[0-9A-F]{40}$");
+
+    public static boolean validate(String address) {
+        // Check if it has the basic requirements of an address
+        if (!ETH_ADDRESS.matcher(address).matches())
+            return false;
+
+        // If it's all small caps or all all caps, return true
+        if (ETH_ALLLOWER.matcher(address).matches() || ETH_ALLUPPER.matcher(address).matches()) {
+            return true;
+        }
+
+        // Otherwise check each case
+        return validateChecksum(address);
+    }
+
+    private static boolean validateChecksum(String address) {
+        // Check each case
+        address = address.substring(2); // strip 0x
+
+        Keccak keccak = new Keccak();
+        final byte[] addressHash = keccak.getHash(
+                address.toLowerCase().getBytes(StandardCharsets.US_ASCII),
+                Parameters.KECCAK_256);
+        for (int i = 0; i < 40; i++) {
+            boolean upper = (addressHash[i / 2] & ((i % 2) == 0 ? 128 : 8)) != 0;
+            char c = address.charAt(i);
+            if (Character.isAlphabetic(c)) {
+                if (Character.isUpperCase(c) && !upper) return false;
+                if (Character.isLowerCase(c) && upper) return false;
+            }
+        }
+        return true;
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeEditText.java b/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeEditText.java
index a85900f5..6602cb79 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeEditText.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeEditText.java
@@ -40,6 +40,7 @@ import com.m2049r.xmrwallet.service.exchange.api.ExchangeApi;
 import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback;
 import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate;
 import com.m2049r.xmrwallet.util.Helper;
+import com.m2049r.xmrwallet.util.ServiceHelper;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -184,6 +185,12 @@ public class ExchangeEditText extends LinearLayout {
 
     private boolean isInitialized = false;
 
+    void postInitialize() {
+        setInitialSpinnerSelections(sCurrencyA, sCurrencyB);
+        isInitialized = true;
+        startExchange();
+    }
+
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
@@ -212,14 +219,7 @@ public class ExchangeEditText extends LinearLayout {
         setCurrencyAdapter(sCurrencyA);
         setCurrencyAdapter(sCurrencyB);
 
-        post(new Runnable() {
-            @Override
-            public void run() {
-                setInitialSpinnerSelections(sCurrencyA, sCurrencyB);
-                isInitialized = true;
-                startExchange();
-            }
-        });
+        post(this::postInitialize);
 
         // make progress circle gray
         pbExchange.getIndeterminateDrawable().
@@ -296,7 +296,7 @@ public class ExchangeEditText extends LinearLayout {
         }
     }
 
-    private final ExchangeApi exchangeApi = Helper.getExchangeApi();
+    private final ExchangeApi exchangeApi = ServiceHelper.getExchangeApi();
 
     // starts exchange through exchange api
     void startExchange() {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeOtherEditText.java b/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeOtherEditText.java
index 3b57d07e..3dd344ef 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeOtherEditText.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeOtherEditText.java
@@ -25,6 +25,8 @@ import android.os.Looper;
 import android.util.AttributeSet;
 import android.widget.Spinner;
 
+import androidx.annotation.NonNull;
+
 import com.m2049r.xmrwallet.R;
 import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback;
 import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate;
@@ -46,12 +48,15 @@ public class ExchangeOtherEditText extends ExchangeEditText {
 
     public void setExchangeRate(double rate) {
         exchangeRate = rate;
-        post(new Runnable() {
-            @Override
-            public void run() {
-                startExchange();
-            }
-        });
+        post(this::startExchange);
+    }
+
+    public void setBaseCurrency(@NonNull String symbol) {
+        if (symbol.equals(baseCurrency)) return;
+        baseCurrency = symbol;
+        setCurrencyAdapter(sCurrencyA);
+        setCurrencyAdapter(sCurrencyB);
+        post(this::postInitialize);
     }
 
     private void setBaseCurrency(Context context, AttributeSet attrs) {
@@ -184,12 +189,7 @@ public class ExchangeOtherEditText extends ExchangeEditText {
                     @Override
                     public void onError(final Exception e) {
                         Timber.e(e.getLocalizedMessage());
-                        new Handler(Looper.getMainLooper()).post(new Runnable() {
-                            @Override
-                            public void run() {
-                                exchangeFailed();
-                            }
-                        });
+                        new Handler(Looper.getMainLooper()).post(() -> exchangeFailed());
                     }
                 });
     }
diff --git a/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeView.java b/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeView.java
index dceb376a..b35a0b6a 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeView.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/widget/ExchangeView.java
@@ -44,6 +44,7 @@ import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback;
 import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate;
 import com.m2049r.xmrwallet.util.ColorHelper;
 import com.m2049r.xmrwallet.util.Helper;
+import com.m2049r.xmrwallet.util.ServiceHelper;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -311,7 +312,7 @@ public class ExchangeView extends LinearLayout {
         }
     }
 
-    private final ExchangeApi exchangeApi = Helper.getExchangeApi();
+    private final ExchangeApi exchangeApi = ServiceHelper.getExchangeApi();
 
     void startExchange() {
         showProgress();
diff --git a/app/src/main/res/drawable/ic_monero.xml b/app/src/main/res/drawable/ic_monero.xml
new file mode 100644
index 00000000..b50ba671
--- /dev/null
+++ b/app/src/main/res/drawable/ic_monero.xml
@@ -0,0 +1,12 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="256"
+    android:viewportHeight="256">
+    <path
+        android:fillColor="#F60"
+        android:pathData="M127.998,0C57.318,0 0,57.317 0,127.999c0,14.127 2.29,27.716 6.518,40.43H44.8V60.733l83.2,83.2 83.198,-83.2v107.695h38.282c4.231,-12.714 6.521,-26.303 6.521,-40.43C256,57.314 198.681,0 127.998,0" />
+    <path
+        android:fillColor="#4C4C4C"
+        android:pathData="M108.867,163.062l-36.31,-36.311v67.765H18.623c22.47,36.863 63.051,61.48 109.373,61.48s86.907,-24.617 109.374,-61.48h-53.933V126.75l-36.31,36.31 -19.13,19.129 -19.128,-19.128h-0.002z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_monero_bw.xml b/app/src/main/res/drawable/ic_monero_bw.xml
new file mode 100644
index 00000000..1b4cef11
--- /dev/null
+++ b/app/src/main/res/drawable/ic_monero_bw.xml
@@ -0,0 +1,12 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="256"
+    android:viewportHeight="256">
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M127.998,0C57.318,0 0,57.317 0,127.999c0,14.127 2.29,27.716 6.518,40.43H44.8V60.733l83.2,83.2 83.198,-83.2v107.695h38.282c4.231,-12.714 6.521,-26.303 6.521,-40.43C256,57.314 198.681,0 127.998,0" />
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M108.867,163.062l-36.31,-36.311v67.765H18.623c22.47,36.863 63.051,61.48 109.373,61.48s86.907,-24.617 109.374,-61.48h-53.933V126.75l-36.31,36.31 -19.13,19.129 -19.128,-19.128h-0.002z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_sideshift_circle.xml b/app/src/main/res/drawable/ic_sideshift_circle.xml
new file mode 100644
index 00000000..366f959d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_sideshift_circle.xml
@@ -0,0 +1,12 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="80.52"
+    android:viewportHeight="80.46">
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M66.07,9.67A40,40 0,0 0,9.69 66.11Z" />>
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M13.92,70.34a40,40 0,0 0,56.45 -56.5Z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_sideshift_white.xml b/app/src/main/res/drawable/ic_sideshift_white.xml
index 7d8a3284..76d8891b 100644
--- a/app/src/main/res/drawable/ic_sideshift_white.xml
+++ b/app/src/main/res/drawable/ic_sideshift_white.xml
@@ -3,46 +3,46 @@
     android:height="80dp"
     android:viewportWidth="648"
     android:viewportHeight="80">
-  <path
-      android:pathData="M65.94,9.56A40,40 0,0 0,9.56 66Z"
-      android:fillColor="@color/monerujoPrimary"/>
-  <path
-      android:pathData="M13.79,70.23a40,40 0,0 0,56.45 -56.5Z"
-      android:fillColor="@color/monerujoPrimary"/>
-  <path
-      android:pathData="M144.75,28a9.12,9.12 0,0 0,-1 -4.48A8.81,8.81 0,0 0,141 20.29a14.14,14.14 0,0 0,-4 -1.95,15.61 15.61,0 0,0 -4.84,-0.68 15.34,15.34 0,0 0,-4.24 0.58,11.88 11.88,0 0,0 -3.55,1.66 7.15,7.15 0,0 0,-2.47 2.63,7.26 7.26,0 0,0 -0.88,3.61v0.49a7.11,7.11 0,0 0,0.88 3.7A6.91,6.91 0,0 0,124.53 33,19 19,0 0,0 129,34.82a58.17,58.17 0,0 0,6.31 1.27C140.9,37 145,38.52 147.61,41a12.31,12.31 0,0 1,3.94 9.66v0.87a16,16 0,0 1,-1.18 6.25,13.23 13.23,0 0,1 -3.55,4.87 17,17 0,0 1,-5.72 3.22,24.6 24.6,0 0,1 -8,1.17A26.21,26.21 0,0 1,124 65.54a18,18 0,0 1,-6.6 -4.1,18.51 18.51,0 0,1 -4.05,-6.14A21.41,21.41 0,0 1,112 47.59V45.35h6.41V47.2c0,4.68 1.28,8.1 3.85,10.44s6.11,3.51 10.75,3.51c4,0 7,-0.88 9,-2.63a8.82,8.82 0,0 0,3 -6.93V51.1a7.26,7.26 0,0 0,-3 -6.33q-3.12,-2.21 -10.06,-3.22a38.07,38.07 0,0 1,-7.3 -1.66,17.24 17.24,0 0,1 -5.53,-2.83 13.62,13.62 0,0 1,-3.55 -4.29,13.48 13.48,0 0,1 -1.18,-5.85V26a11.87,11.87 0,0 1,1.28 -5.65,13.37 13.37,0 0,1 3.65,-4.49A16.94,16.94 0,0 1,124.92 13a26.31,26.31 0,0 1,15.19 0.29,21.17 21.17,0 0,1 6,3.41 14.69,14.69 0,0 1,5 11.12V31h-6.41V28Z"
-      android:fillColor="@color/monerujoPrimary"/>
-  <path
-      android:pathData="M161.91,12.68h33.93v5.85H182.13V59.59h13.71v5.85H161.91V59.59h13.71v-41H161.91Z"
-      android:fillColor="@color/monerujoPrimary"/>
-  <path
-      android:pathData="M207.78,12.68h17.56q9.91,0 14.5,4.68c3,3.12 4.53,8.1 4.53,14.92L244.37,45.84c0,6.82 -1.48,11.8 -4.53,14.92s-7.89,4.68 -14.5,4.68L207.78,65.44L207.78,59.49h4.54L212.32,18.63h-4.54ZM224.45,59.68a22.74,22.74 0,0 0,6.11 -0.69,9.73 9.73,0 0,0 4.24,-2.34 9.43,9.43 0,0 0,2.47 -4.39,26.62 26.62,0 0,0 0.79,-6.82L238.06,32.77a26.2,26.2 0,0 0,-0.79 -6.83,10 10,0 0,0 -2.47,-4.38 9.73,9.73 0,0 0,-4.24 -2.34,22.26 22.26,0 0,0 -6.11,-0.69h-5.62L218.83,59.59h5.62Z"
-      android:fillColor="@color/monerujoPrimary"/>
-  <path
-      android:pathData="M256.21,12.68h32.35v5.85H262.62V36.09h25.55v5.85H262.62V59.59h26.43v5.85H256.21Z"
-      android:fillColor="@color/monerujoPrimary"/>
-  <path
-      android:pathData="M331.67,28a9.12,9.12 0,0 0,-1 -4.48,8.81 8.81,0 0,0 -2.76,-3.22 14.2,14.2 0,0 0,-4.05 -1.95,15.55 15.55,0 0,0 -4.83,-0.68 15.34,15.34 0,0 0,-4.24 0.58,11.77 11.77,0 0,0 -3.55,1.66 7.07,7.07 0,0 0,-2.47 2.63,7.26 7.26,0 0,0 -0.89,3.61v0.49a7.11,7.11 0,0 0,0.89 3.7A6.91,6.91 0,0 0,311.45 33a19,19 0,0 0,4.44 1.85,58.17 58.17,0 0,0 6.31,1.27c5.62,0.87 9.76,2.43 12.33,4.87a12.31,12.31 0,0 1,3.94 9.66v0.87a16,16 0,0 1,-1.18 6.25,13.23 13.23,0 0,1 -3.55,4.87A17,17 0,0 1,328 65.83,24.64 24.64,0 0,1 320,67 26.21,26.21 0,0 1,311 65.54a18.09,18.09 0,0 1,-6.61 -4.1,18.63 18.63,0 0,1 -4,-6.14 21.41,21.41 0,0 1,-1.38 -7.71V45.35h6.41V47.2c0,4.68 1.28,8.1 3.85,10.44s6.11,3.51 10.75,3.51c3.94,0 7,-0.88 9,-2.63A8.8,8.8 0,0 0,332 51.59V51.1a7.24,7.24 0,0 0,-3.06 -6.33q-3.11,-2.21 -10.06,-3.22a38,38 0,0 1,-7.29 -1.66A17.24,17.24 0,0 1,306 37.06a13.62,13.62 0,0 1,-3.55 -4.29,13.48 13.48,0 0,1 -1.18,-5.85V26a11.87,11.87 0,0 1,1.28 -5.65,13.37 13.37,0 0,1 3.65,-4.49A16.94,16.94 0,0 1,311.84 13a26.31,26.31 0,0 1,15.19 0.29,21.17 21.17,0 0,1 6,3.41 14.69,14.69 0,0 1,5 11.12V31h-6.41Z"
-      android:fillColor="@color/monerujoPrimary"/>
-  <path
-      android:pathData="M348,12.68h6.41V36.09h22.79V12.68h6.41V65.54h-6.41V42H354.45V65.63H348Z"
-      android:fillColor="@color/monerujoPrimary"/>
-  <path
-      android:pathData="M395.68,12.68h33.93v5.85H415.9V59.59h13.71v5.85H395.68V59.59h13.71v-41H395.68Z"
-      android:fillColor="@color/monerujoPrimary"/>
-  <path
-      android:pathData="M443.23,12.68h32.84v5.85H449.64V36.09h25.94v5.85H449.64v23.6h-6.41V12.68Z"
-      android:fillColor="@color/monerujoPrimary"/>
-  <path
-      android:pathData="M487.32,12.68H524.9v5.85H509.32v47H502.9V18.63H487.32V12.68Z"
-      android:fillColor="@color/monerujoPrimary"/>
-  <path
-      android:pathData="M537.33,61.34a4.74,4.74 0,0 1,1.58 -3.7,5 5,0 0,1 3.74,-1.56A5.36,5.36 0,0 1,548 61.34a4.76,4.76 0,0 1,-1.58 3.71,5 5,0 0,1 -3.75,1.56 4.86,4.86 0,0 1,-3.74 -1.56A4.76,4.76 0,0 1,537.33 61.34Z"
-      android:fillColor="@color/monerujoPrimary"/>
-  <path
-      android:pathData="M595.82,52.47H572.94l-3.85,13.16h-6.91l16.08,-52.95h12l16.17,52.86h-6.9ZM583.89,15.41l-9.28,31.11H594l-9.27,-31.11Z"
-      android:fillColor="@color/monerujoPrimary"/>
-  <path
-      android:pathData="M614.07,12.68H648v5.85H634.29V59.59H648v5.85H614.07V59.59h13.71v-41H614.07Z"
-      android:fillColor="@color/monerujoPrimary"/>
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M65.94,9.56A40,40 0,0 0,9.56 66Z" />
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M13.79,70.23a40,40 0,0 0,56.45 -56.5Z" />
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M144.75,28a9.12,9.12 0,0 0,-1 -4.48A8.81,8.81 0,0 0,141 20.29a14.14,14.14 0,0 0,-4 -1.95,15.61 15.61,0 0,0 -4.84,-0.68 15.34,15.34 0,0 0,-4.24 0.58,11.88 11.88,0 0,0 -3.55,1.66 7.15,7.15 0,0 0,-2.47 2.63,7.26 7.26,0 0,0 -0.88,3.61v0.49a7.11,7.11 0,0 0,0.88 3.7A6.91,6.91 0,0 0,124.53 33,19 19,0 0,0 129,34.82a58.17,58.17 0,0 0,6.31 1.27C140.9,37 145,38.52 147.61,41a12.31,12.31 0,0 1,3.94 9.66v0.87a16,16 0,0 1,-1.18 6.25,13.23 13.23,0 0,1 -3.55,4.87 17,17 0,0 1,-5.72 3.22,24.6 24.6,0 0,1 -8,1.17A26.21,26.21 0,0 1,124 65.54a18,18 0,0 1,-6.6 -4.1,18.51 18.51,0 0,1 -4.05,-6.14A21.41,21.41 0,0 1,112 47.59V45.35h6.41V47.2c0,4.68 1.28,8.1 3.85,10.44s6.11,3.51 10.75,3.51c4,0 7,-0.88 9,-2.63a8.82,8.82 0,0 0,3 -6.93V51.1a7.26,7.26 0,0 0,-3 -6.33q-3.12,-2.21 -10.06,-3.22a38.07,38.07 0,0 1,-7.3 -1.66,17.24 17.24,0 0,1 -5.53,-2.83 13.62,13.62 0,0 1,-3.55 -4.29,13.48 13.48,0 0,1 -1.18,-5.85V26a11.87,11.87 0,0 1,1.28 -5.65,13.37 13.37,0 0,1 3.65,-4.49A16.94,16.94 0,0 1,124.92 13a26.31,26.31 0,0 1,15.19 0.29,21.17 21.17,0 0,1 6,3.41 14.69,14.69 0,0 1,5 11.12V31h-6.41V28Z" />
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M161.91,12.68h33.93v5.85H182.13V59.59h13.71v5.85H161.91V59.59h13.71v-41H161.91Z" />
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M207.78,12.68h17.56q9.91,0 14.5,4.68c3,3.12 4.53,8.1 4.53,14.92L244.37,45.84c0,6.82 -1.48,11.8 -4.53,14.92s-7.89,4.68 -14.5,4.68L207.78,65.44L207.78,59.49h4.54L212.32,18.63h-4.54ZM224.45,59.68a22.74,22.74 0,0 0,6.11 -0.69,9.73 9.73,0 0,0 4.24,-2.34 9.43,9.43 0,0 0,2.47 -4.39,26.62 26.62,0 0,0 0.79,-6.82L238.06,32.77a26.2,26.2 0,0 0,-0.79 -6.83,10 10,0 0,0 -2.47,-4.38 9.73,9.73 0,0 0,-4.24 -2.34,22.26 22.26,0 0,0 -6.11,-0.69h-5.62L218.83,59.59h5.62Z" />
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M256.21,12.68h32.35v5.85H262.62V36.09h25.55v5.85H262.62V59.59h26.43v5.85H256.21Z" />
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M331.67,28a9.12,9.12 0,0 0,-1 -4.48,8.81 8.81,0 0,0 -2.76,-3.22 14.2,14.2 0,0 0,-4.05 -1.95,15.55 15.55,0 0,0 -4.83,-0.68 15.34,15.34 0,0 0,-4.24 0.58,11.77 11.77,0 0,0 -3.55,1.66 7.07,7.07 0,0 0,-2.47 2.63,7.26 7.26,0 0,0 -0.89,3.61v0.49a7.11,7.11 0,0 0,0.89 3.7A6.91,6.91 0,0 0,311.45 33a19,19 0,0 0,4.44 1.85,58.17 58.17,0 0,0 6.31,1.27c5.62,0.87 9.76,2.43 12.33,4.87a12.31,12.31 0,0 1,3.94 9.66v0.87a16,16 0,0 1,-1.18 6.25,13.23 13.23,0 0,1 -3.55,4.87A17,17 0,0 1,328 65.83,24.64 24.64,0 0,1 320,67 26.21,26.21 0,0 1,311 65.54a18.09,18.09 0,0 1,-6.61 -4.1,18.63 18.63,0 0,1 -4,-6.14 21.41,21.41 0,0 1,-1.38 -7.71V45.35h6.41V47.2c0,4.68 1.28,8.1 3.85,10.44s6.11,3.51 10.75,3.51c3.94,0 7,-0.88 9,-2.63A8.8,8.8 0,0 0,332 51.59V51.1a7.24,7.24 0,0 0,-3.06 -6.33q-3.11,-2.21 -10.06,-3.22a38,38 0,0 1,-7.29 -1.66A17.24,17.24 0,0 1,306 37.06a13.62,13.62 0,0 1,-3.55 -4.29,13.48 13.48,0 0,1 -1.18,-5.85V26a11.87,11.87 0,0 1,1.28 -5.65,13.37 13.37,0 0,1 3.65,-4.49A16.94,16.94 0,0 1,311.84 13a26.31,26.31 0,0 1,15.19 0.29,21.17 21.17,0 0,1 6,3.41 14.69,14.69 0,0 1,5 11.12V31h-6.41Z" />
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M348,12.68h6.41V36.09h22.79V12.68h6.41V65.54h-6.41V42H354.45V65.63H348Z" />
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M395.68,12.68h33.93v5.85H415.9V59.59h13.71v5.85H395.68V59.59h13.71v-41H395.68Z" />
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M443.23,12.68h32.84v5.85H449.64V36.09h25.94v5.85H449.64v23.6h-6.41V12.68Z" />
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M487.32,12.68H524.9v5.85H509.32v47H502.9V18.63H487.32V12.68Z" />
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M537.33,61.34a4.74,4.74 0,0 1,1.58 -3.7,5 5,0 0,1 3.74,-1.56A5.36,5.36 0,0 1,548 61.34a4.76,4.76 0,0 1,-1.58 3.71,5 5,0 0,1 -3.75,1.56 4.86,4.86 0,0 1,-3.74 -1.56A4.76,4.76 0,0 1,537.33 61.34Z" />
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M595.82,52.47H572.94l-3.85,13.16h-6.91l16.08,-52.95h12l16.17,52.86h-6.9ZM583.89,15.41l-9.28,31.11H594l-9.27,-31.11Z" />
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M614.07,12.68H648v5.85H634.29V59.59H648v5.85H614.07V59.59h13.71v-41H614.07Z" />
 </vector>
diff --git a/app/src/main/res/drawable/ic_xmrto_32dp.png b/app/src/main/res/drawable/ic_xmrto_32dp.png
deleted file mode 100644
index b9cec90c..00000000
Binary files a/app/src/main/res/drawable/ic_xmrto_32dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable/ic_xmrto_btc.xml b/app/src/main/res/drawable/ic_xmrto_btc.xml
new file mode 100644
index 00000000..60efbe25
--- /dev/null
+++ b/app/src/main/res/drawable/ic_xmrto_btc.xml
@@ -0,0 +1,14 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+    <path
+        android:fillColor="#F7931A"
+        android:fillType="evenOdd"
+        android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0" />
+    <path
+        android:fillColor="#FFF"
+        android:fillType="nonZero"
+        android:pathData="M23.189,14.02c0.314,-2.096 -1.283,-3.223 -3.465,-3.975l0.708,-2.84 -1.728,-0.43 -0.69,2.765c-0.454,-0.114 -0.92,-0.22 -1.385,-0.326l0.695,-2.783L15.596,6l-0.708,2.839c-0.376,-0.086 -0.746,-0.17 -1.104,-0.26l0.002,-0.009 -2.384,-0.595 -0.46,1.846s1.283,0.294 1.256,0.312c0.7,0.175 0.826,0.638 0.805,1.006l-0.806,3.235c0.048,0.012 0.11,0.03 0.18,0.057l-0.183,-0.045 -1.13,4.532c-0.086,0.212 -0.303,0.531 -0.793,0.41 0.018,0.025 -1.256,-0.313 -1.256,-0.313l-0.858,1.978 2.25,0.561c0.418,0.105 0.828,0.215 1.231,0.318l-0.715,2.872 1.727,0.43 0.708,-2.84c0.472,0.127 0.93,0.245 1.378,0.357l-0.706,2.828 1.728,0.43 0.715,-2.866c2.948,0.558 5.164,0.333 6.097,-2.333 0.752,-2.146 -0.037,-3.385 -1.588,-4.192 1.13,-0.26 1.98,-1.003 2.207,-2.538zM19.239,19.558c-0.533,2.147 -4.148,0.986 -5.32,0.695l0.95,-3.805c1.172,0.293 4.929,0.872 4.37,3.11zM19.774,13.989c-0.487,1.953 -3.495,0.96 -4.47,0.717l0.86,-3.45c0.975,0.243 4.118,0.696 3.61,2.733z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_xmrto_btc_off.xml b/app/src/main/res/drawable/ic_xmrto_btc_off.xml
new file mode 100644
index 00000000..5a49d3da
--- /dev/null
+++ b/app/src/main/res/drawable/ic_xmrto_btc_off.xml
@@ -0,0 +1,14 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:fillType="evenOdd"
+        android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0" />
+    <path
+        android:fillColor="@color/monerujoBackground"
+        android:fillType="nonZero"
+        android:pathData="M23.189,14.02c0.314,-2.096 -1.283,-3.223 -3.465,-3.975l0.708,-2.84 -1.728,-0.43 -0.69,2.765c-0.454,-0.114 -0.92,-0.22 -1.385,-0.326l0.695,-2.783L15.596,6l-0.708,2.839c-0.376,-0.086 -0.746,-0.17 -1.104,-0.26l0.002,-0.009 -2.384,-0.595 -0.46,1.846s1.283,0.294 1.256,0.312c0.7,0.175 0.826,0.638 0.805,1.006l-0.806,3.235c0.048,0.012 0.11,0.03 0.18,0.057l-0.183,-0.045 -1.13,4.532c-0.086,0.212 -0.303,0.531 -0.793,0.41 0.018,0.025 -1.256,-0.313 -1.256,-0.313l-0.858,1.978 2.25,0.561c0.418,0.105 0.828,0.215 1.231,0.318l-0.715,2.872 1.727,0.43 0.708,-2.84c0.472,0.127 0.93,0.245 1.378,0.357l-0.706,2.828 1.728,0.43 0.715,-2.866c2.948,0.558 5.164,0.333 6.097,-2.333 0.752,-2.146 -0.037,-3.385 -1.588,-4.192 1.13,-0.26 1.98,-1.003 2.207,-2.538zM19.239,19.558c-0.533,2.147 -4.148,0.986 -5.32,0.695l0.95,-3.805c1.172,0.293 4.929,0.872 4.37,3.11zM19.774,13.989c-0.487,1.953 -3.495,0.96 -4.47,0.717l0.86,-3.45c0.975,0.243 4.118,0.696 3.61,2.733z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_xmrto_dash.xml b/app/src/main/res/drawable/ic_xmrto_dash.xml
new file mode 100644
index 00000000..a3ace157
--- /dev/null
+++ b/app/src/main/res/drawable/ic_xmrto_dash.xml
@@ -0,0 +1,15 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+    <path
+        android:fillColor="#008CE7"
+        android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0" />
+    <path
+        android:fillColor="#FFF"
+        android:pathData="M19.086,8.004H11.81l-0.602,3.367 6.562,0.01c3.231,0 4.19,1.173 4.159,3.12 -0.014,0.998 -0.449,2.686 -0.633,3.23 -0.497,1.46 -1.521,3.122 -5.359,3.117l-6.378,-0.004 -0.602,3.371h7.257c2.559,0 3.649,-0.299 4.8,-0.83 2.554,-1.178 4.075,-3.701 4.686,-6.994 0.906,-4.9 -0.224,-8.387 -6.615,-8.387z" />
+    <path
+        android:fillColor="#FFF"
+        android:pathData="M15.807,15.798c0.237,-0.985 0.312,-1.38 0.312,-1.38H8.673c-1.904,0 -2.176,1.24 -2.357,1.99 -0.237,0.981 -0.312,1.381 -0.312,1.381h7.447c1.903,0 2.175,-1.24 2.356,-1.991z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_xmrto_dash_off.xml b/app/src/main/res/drawable/ic_xmrto_dash_off.xml
new file mode 100644
index 00000000..28a712fd
--- /dev/null
+++ b/app/src/main/res/drawable/ic_xmrto_dash_off.xml
@@ -0,0 +1,15 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0" />
+    <path
+        android:fillColor="@color/monerujoBackground"
+        android:pathData="M19.086,8.004H11.81l-0.602,3.367 6.562,0.01c3.231,0 4.19,1.173 4.159,3.12 -0.014,0.998 -0.449,2.686 -0.633,3.23 -0.497,1.46 -1.521,3.122 -5.359,3.117l-6.378,-0.004 -0.602,3.371h7.257c2.559,0 3.649,-0.299 4.8,-0.83 2.554,-1.178 4.075,-3.701 4.686,-6.994 0.906,-4.9 -0.224,-8.387 -6.615,-8.387z" />
+    <path
+        android:fillColor="@color/monerujoBackground"
+        android:pathData="M15.807,15.798c0.237,-0.985 0.312,-1.38 0.312,-1.38H8.673c-1.904,0 -2.176,1.24 -2.357,1.99 -0.237,0.981 -0.312,1.381 -0.312,1.381h7.447c1.903,0 2.175,-1.24 2.356,-1.991z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_xmrto_doge.xml b/app/src/main/res/drawable/ic_xmrto_doge.xml
new file mode 100644
index 00000000..c8bfcd78
--- /dev/null
+++ b/app/src/main/res/drawable/ic_xmrto_doge.xml
@@ -0,0 +1,14 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+    <path
+        android:fillColor="#C3A634"
+        android:fillType="evenOdd"
+        android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0" />
+    <path
+        android:fillColor="#FFF"
+        android:fillType="evenOdd"
+        android:pathData="M13.248,14.61h4.314v2.286h-4.314v4.818h2.721c1.077,0 1.958,-0.145 2.644,-0.437 0.686,-0.291 1.224,-0.694 1.615,-1.21a4.4,4.4 0,0 0,0.796 -1.815,11.4 11.4,0 0,0 0.21,-2.252 11.4,11.4 0,0 0,-0.21 -2.252,4.396 4.396,0 0,0 -0.796,-1.815c-0.391,-0.516 -0.93,-0.919 -1.615,-1.21 -0.686,-0.292 -1.567,-0.437 -2.644,-0.437h-2.721v4.325zM10.482,16.896L9,16.896v-2.285h1.482L10.482,8h6.549c1.21,0 2.257,0.21 3.142,0.627 0.885,0.419 1.607,0.99 2.168,1.715 0.56,0.724 0.977,1.572 1.25,2.543 0.273,0.971 0.409,2.01 0.409,3.115a11.47,11.47 0,0 1,-0.41 3.115c-0.272,0.97 -0.689,1.819 -1.25,2.543 -0.56,0.725 -1.282,1.296 -2.167,1.715 -0.885,0.418 -1.933,0.627 -3.142,0.627h-6.549v-7.104z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_xmrto_doge_off.xml b/app/src/main/res/drawable/ic_xmrto_doge_off.xml
new file mode 100644
index 00000000..51f0639a
--- /dev/null
+++ b/app/src/main/res/drawable/ic_xmrto_doge_off.xml
@@ -0,0 +1,14 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:fillType="evenOdd"
+        android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0" />
+    <path
+        android:fillColor="@color/monerujoBackground"
+        android:fillType="evenOdd"
+        android:pathData="M13.248,14.61h4.314v2.286h-4.314v4.818h2.721c1.077,0 1.958,-0.145 2.644,-0.437 0.686,-0.291 1.224,-0.694 1.615,-1.21a4.4,4.4 0,0 0,0.796 -1.815,11.4 11.4,0 0,0 0.21,-2.252 11.4,11.4 0,0 0,-0.21 -2.252,4.396 4.396,0 0,0 -0.796,-1.815c-0.391,-0.516 -0.93,-0.919 -1.615,-1.21 -0.686,-0.292 -1.567,-0.437 -2.644,-0.437h-2.721v4.325zM10.482,16.896L9,16.896v-2.285h1.482L10.482,8h6.549c1.21,0 2.257,0.21 3.142,0.627 0.885,0.419 1.607,0.99 2.168,1.715 0.56,0.724 0.977,1.572 1.25,2.543 0.273,0.971 0.409,2.01 0.409,3.115a11.47,11.47 0,0 1,-0.41 3.115c-0.272,0.97 -0.689,1.819 -1.25,2.543 -0.56,0.725 -1.282,1.296 -2.167,1.715 -0.885,0.418 -1.933,0.627 -3.142,0.627h-6.549v-7.104z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_xmrto_eth.xml b/app/src/main/res/drawable/ic_xmrto_eth.xml
new file mode 100644
index 00000000..9569125f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_xmrto_eth.xml
@@ -0,0 +1,38 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+    <path
+        android:fillColor="#627EEA"
+        android:fillType="evenOdd"
+        android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0" />
+    <path
+        android:fillAlpha="0.602"
+        android:fillColor="#FFF"
+        android:fillType="nonZero"
+        android:pathData="M16.498,4v8.87l7.497,3.35z" />
+    <path
+        android:fillColor="#FFF"
+        android:fillType="nonZero"
+        android:pathData="M16.498,4L9,16.22l7.498,-3.35z" />
+    <path
+        android:fillAlpha="0.602"
+        android:fillColor="#FFF"
+        android:fillType="nonZero"
+        android:pathData="M16.498,21.968v6.027L24,17.616z" />
+    <path
+        android:fillColor="#FFF"
+        android:fillType="nonZero"
+        android:pathData="M16.498,27.995v-6.028L9,17.616z" />
+    <path
+        android:fillAlpha="0.2"
+        android:fillColor="#FFF"
+        android:fillType="nonZero"
+        android:pathData="M16.498,20.573l7.497,-4.353 -7.497,-3.348z" />
+    <path
+        android:fillAlpha="0.602"
+        android:fillColor="#FFF"
+        android:fillType="nonZero"
+        android:pathData="M9,16.22l7.498,4.353v-7.701z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_xmrto_eth_off.xml b/app/src/main/res/drawable/ic_xmrto_eth_off.xml
new file mode 100644
index 00000000..04da5f01
--- /dev/null
+++ b/app/src/main/res/drawable/ic_xmrto_eth_off.xml
@@ -0,0 +1,38 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:fillType="evenOdd"
+        android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0" />
+    <path
+        android:fillAlpha="0.602"
+        android:fillColor="@color/monerujoBackground"
+        android:fillType="nonZero"
+        android:pathData="M16.498,4v8.87l7.497,3.35z" />
+    <path
+        android:fillColor="@color/monerujoBackground"
+        android:fillType="nonZero"
+        android:pathData="M16.498,4L9,16.22l7.498,-3.35z" />
+    <path
+        android:fillAlpha="0.602"
+        android:fillColor="@color/monerujoBackground"
+        android:fillType="nonZero"
+        android:pathData="M16.498,21.968v6.027L24,17.616z" />
+    <path
+        android:fillColor="@color/monerujoBackground"
+        android:fillType="nonZero"
+        android:pathData="M16.498,27.995v-6.028L9,17.616z" />
+    <path
+        android:fillAlpha="0.2"
+        android:fillColor="@color/monerujoBackground"
+        android:fillType="nonZero"
+        android:pathData="M16.498,20.573l7.497,-4.353 -7.497,-3.348z" />
+    <path
+        android:fillAlpha="0.602"
+        android:fillColor="@color/monerujoBackground"
+        android:fillType="nonZero"
+        android:pathData="M9,16.22l7.498,4.353v-7.701z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_xmrto_ltc.xml b/app/src/main/res/drawable/ic_xmrto_ltc.xml
new file mode 100644
index 00000000..5bb3470a
--- /dev/null
+++ b/app/src/main/res/drawable/ic_xmrto_ltc.xml
@@ -0,0 +1,14 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+    <path
+        android:fillColor="#315d9e"
+        android:fillType="evenOdd"
+        android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0" />
+    <path
+        android:fillColor="#FFF"
+        android:fillType="evenOdd"
+        android:pathData="M10.427,19.214L9,19.768l0.688,-2.759 1.444,-0.58L13.213,8h5.129l-1.519,6.196 1.41,-0.571 -0.68,2.75 -1.427,0.571 -0.848,3.483H23L22.127,24H9.252z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_xmrto_ltc_off.xml b/app/src/main/res/drawable/ic_xmrto_ltc_off.xml
new file mode 100644
index 00000000..663c2476
--- /dev/null
+++ b/app/src/main/res/drawable/ic_xmrto_ltc_off.xml
@@ -0,0 +1,14 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="32dp"
+    android:height="32dp"
+    android:viewportWidth="32"
+    android:viewportHeight="32">
+    <path
+        android:fillColor="@color/monerujoPrimary"
+        android:fillType="evenOdd"
+        android:pathData="M16,16m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0" />
+    <path
+        android:fillColor="@color/monerujoBackground"
+        android:fillType="evenOdd"
+        android:pathData="M10.427,19.214L9,19.768l0.688,-2.759 1.444,-0.58L13.213,8h5.129l-1.519,6.196 1.41,-0.571 -0.68,2.75 -1.427,0.571 -0.848,3.483H23L22.127,24H9.252z" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_xmrto_whitestroke_24px.png b/app/src/main/res/drawable/ic_xmrto_whitestroke_24px.png
deleted file mode 100644
index a1650c38..00000000
Binary files a/app/src/main/res/drawable/ic_xmrto_whitestroke_24px.png and /dev/null differ
diff --git a/app/src/main/res/layout/fragment_send_address.xml b/app/src/main/res/layout/fragment_send_address.xml
index ded4ab8f..29dcfcba 100644
--- a/app/src/main/res/layout/fragment_send_address.xml
+++ b/app/src/main/res/layout/fragment_send_address.xml
@@ -29,14 +29,12 @@
                 android:orientation="horizontal">
 
                 <com.google.android.material.textfield.TextInputLayout
-                    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
                     android:id="@+id/etAddress"
+                    style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_alignParentStart="true"
                     android:layout_toStartOf="@+id/bPasteAddress"
-                    app:counterEnabled="true"
-                    app:counterMaxLength="95"
                     app:errorEnabled="true">
 
                     <com.google.android.material.textfield.TextInputEditText
@@ -61,57 +59,94 @@
                     android:src="@drawable/ic_content_paste_24dp" />
             </RelativeLayout>
 
-            <FrameLayout
+            <LinearLayout
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content">
-
-                <TextView
-                    android:id="@+id/tvPaymentIdIntegrated"
-                    style="@style/MoneroText.Info"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="start|center_vertical"
-                    android:layout_margin="8dp"
-                    android:drawablePadding="8dp"
-                    android:gravity="center"
-                    android:text="@string/info_paymentid_integrated"
-                    android:textSize="18sp"
-                    android:visibility="invisible"
-                    app:drawableStartCompat="@drawable/ic_check_gray_24dp" />
-
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
 
                 <LinearLayout
-                    android:id="@+id/llXmrTo"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_gravity="center"
                     android:orientation="horizontal"
-                    android:visibility="invisible">
+                    android:weightSum="6">
 
-                    <ImageView
+                    <ImageButton
+                        android:id="@+id/ibXMR"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:layout_gravity="top"
-                        android:paddingTop="8dp"
-                        android:src="@drawable/gunther_24dp" />
+                        android:layout_weight="1"
+                        android:background="@null"
+                        android:padding="8dp"
+                        android:src="@drawable/ic_monero" />
 
-                    <TextView
-                        android:id="@+id/tvXmrTo"
-                        style="@style/MoneroText.Info"
-                        android:layout_width="match_parent"
+                    <ImageButton
+                        android:id="@+id/ibBTC"
+                        android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:layout_marginLeft="8dp"
-                        android:layout_marginRight="8dp"
-                        android:gravity="start|top"
-                        android:singleLine="false"
-                        android:textSize="18sp"
-                        tools:text="@string/info_xmrto" />
+                        android:layout_weight="1"
+                        android:background="@null"
+                        android:padding="8dp"
+                        android:src="@drawable/ic_xmrto_btc_off" />
+
+                    <ImageButton
+                        android:id="@+id/ibLTC"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:background="@null"
+                        android:padding="8dp"
+                        android:src="@drawable/ic_xmrto_ltc_off" />
+
+                    <ImageButton
+                        android:id="@+id/ibETH"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:background="@null"
+                        android:padding="8dp"
+                        android:src="@drawable/ic_xmrto_eth_off" />
+
+                    <ImageButton
+                        android:id="@+id/ibDASH"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:background="@null"
+                        android:padding="8dp"
+                        android:src="@drawable/ic_xmrto_dash_off" />
+
+                    <ImageButton
+                        android:id="@+id/ibDOGE"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:background="@null"
+                        android:padding="8dp"
+                        android:src="@drawable/ic_xmrto_doge_off" />
                 </LinearLayout>
-            </FrameLayout>
+
+                <TextView
+                    android:id="@+id/tvXmrTo"
+                    style="@style/MoneroText.Info"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="8dp"
+                    android:layout_marginTop="16dp"
+                    android:layout_marginRight="8dp"
+                    android:layout_marginBottom="16dp"
+                    android:drawablePadding="8dp"
+                    android:gravity="start"
+                    android:singleLine="false"
+                    android:text="@string/label_send_btc_xmrto_key"
+                    android:textSize="18sp"
+                    android:visibility="invisible"
+                    app:drawableStartCompat="@drawable/gunther_24dp"
+                    tools:text="@string/info_xmrto" />
+            </LinearLayout>
 
             <com.google.android.material.textfield.TextInputLayout
-                style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
                 android:id="@+id/etNotes"
+                style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content">
 
diff --git a/app/src/main/res/layout/fragment_send_btc_amount.xml b/app/src/main/res/layout/fragment_send_btc_amount.xml
index 00e5a7d8..fd1b9f8b 100644
--- a/app/src/main/res/layout/fragment_send_btc_amount.xml
+++ b/app/src/main/res/layout/fragment_send_btc_amount.xml
@@ -12,7 +12,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginTop="8dp"
-        android:gravity="center"
+        android:layout_marginStart="56dp"
         tools:text="@string/send_available_btc" />
 
     <FrameLayout
@@ -34,11 +34,11 @@
             android:visibility="invisible">
 
             <ImageView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
+                android:layout_width="48dp"
+                android:layout_height="48dp"
                 android:layout_gravity="top"
                 android:paddingTop="8dp"
-                android:src="@drawable/ic_xmrto_32dp" />
+                android:src="@drawable/ic_sideshift_circle" />
 
             <TextView
                 android:id="@+id/tvXmrToParms"
diff --git a/app/src/main/res/layout/fragment_send_btc_confirm.xml b/app/src/main/res/layout/fragment_send_btc_confirm.xml
index ef0408e5..72a2fb98 100644
--- a/app/src/main/res/layout/fragment_send_btc_confirm.xml
+++ b/app/src/main/res/layout/fragment_send_btc_confirm.xml
@@ -91,7 +91,7 @@
                         android:layout_height="wrap_content"
                         android:layout_gravity="center"
                         android:orientation="vertical"
-                        android:visibility="invisible">
+                        android:visibility="visible">
 
                         <TextView
                             style="@style/MoneroText.Confirm.Label"
@@ -101,7 +101,7 @@
                             android:drawablePadding="8dp"
                             android:gravity="center_vertical"
                             android:text="@string/label_send_btc_xmrto_key"
-                            card_view:drawableStartCompat="@drawable/ic_xmrto_32dp" />
+                            card_view:drawableStartCompat="@drawable/ic_sideshift_circle" />
 
                         <TextView
                             android:id="@+id/tvTxXmrToKey"
@@ -127,6 +127,7 @@
                             android:text="@string/label_send_btc_xmrto_info" />
 
                         <TextView
+                            android:id="@+id/tvTxBtcAddressLabel"
                             style="@style/MoneroText.Confirm.Label"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/fragment_send_btc_success.xml b/app/src/main/res/layout/fragment_send_btc_success.xml
index 3e2ee2de..321b5c86 100644
--- a/app/src/main/res/layout/fragment_send_btc_success.xml
+++ b/app/src/main/res/layout/fragment_send_btc_success.xml
@@ -19,10 +19,10 @@
             <ImageView
                 android:layout_width="72dp"
                 android:layout_height="72dp"
-                android:layout_gravity="top"
+                android:layout_gravity="center_vertical"
                 android:layout_marginEnd="24dp"
                 android:padding="6dp"
-                android:src="@drawable/ic_check_circle_xmr" />
+                android:src="@drawable/ic_monero" />
 
             <LinearLayout
                 android:layout_width="match_parent"
@@ -38,7 +38,7 @@
 
                 <TextView
                     android:id="@+id/tvTxAmount"
-                    style="@style/MoneroText.Balance.Orange"
+                    style="@style/MoneroText.Balance.Orange.Smaller"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_weight="2"
@@ -108,7 +108,7 @@
         <com.google.android.material.card.MaterialCardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_marginTop="8dp"
+            android:layout_marginTop="24dp"
             android:layout_marginBottom="16dp"
             card_view:contentPadding="8dp">
 
@@ -128,6 +128,13 @@
                         android:layout_height="wrap_content"
                         android:layout_centerInParent="true">
 
+                        <ImageView
+                            android:id="@+id/ivXmrToIcon"
+                            android:layout_width="48dp"
+                            android:layout_height="48dp"
+                            android:layout_gravity="center"
+                            android:src="@drawable/ic_xmrto_btc" />
+
                         <ProgressBar
                             android:id="@+id/pbXmrto"
                             android:layout_width="match_parent"
@@ -141,7 +148,7 @@
                             android:id="@+id/ivXmrToStatus"
                             android:layout_width="24dp"
                             android:layout_height="24dp"
-                            android:layout_gravity="center"
+                            android:layout_gravity="bottom|right"
                             android:src="@drawable/ic_pending_orange_24dp"
                             android:visibility="visible" />
 
@@ -151,15 +158,6 @@
                             android:layout_height="72dp"
                             android:layout_gravity="center"
                             android:visibility="invisible" />
-
-                        <ImageView
-                            android:layout_width="24dp"
-                            android:layout_height="24dp"
-                            android:layout_gravity="top|start"
-                            android:layout_marginStart="10dp"
-                            android:layout_marginTop="0dp"
-                            android:src="@drawable/ic_xmrto_whitestroke_24px" />
-
                     </FrameLayout>
 
                     <TextView
@@ -206,9 +204,7 @@
                         android:layout_height="wrap_content"
                         android:background="?android:attr/colorBackground"
                         android:drawablePadding="8dp"
-                        android:paddingStart="16dp"
                         android:paddingTop="8dp"
-                        android:paddingEnd="8dp"
                         android:paddingBottom="8dp"
                         android:textColor="?attr/colorPrimary"
                         card_view:drawableEndCompat="@drawable/ic_content_copy_24dp"
@@ -219,7 +215,7 @@
                         style="@style/MoneroText.Medium"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:layout_gravity="center"
+                        android:layout_gravity="start"
                         android:layout_marginTop="8dp"
                         android:layout_marginBottom="8dp"
                         android:drawablePadding="8dp"
diff --git a/app/src/main/res/layout/fragment_send_success.xml b/app/src/main/res/layout/fragment_send_success.xml
index 02fc1f98..55585acd 100644
--- a/app/src/main/res/layout/fragment_send_success.xml
+++ b/app/src/main/res/layout/fragment_send_success.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
@@ -20,10 +19,10 @@
             <ImageView
                 android:layout_width="72dp"
                 android:layout_height="72dp"
-                android:layout_gravity="top"
+                android:layout_gravity="center_vertical"
                 android:layout_marginEnd="24dp"
                 android:padding="6dp"
-                android:src="@drawable/ic_check_circle" />
+                android:src="@drawable/ic_monero" />
 
             <LinearLayout
                 android:layout_width="match_parent"
@@ -39,7 +38,7 @@
 
                 <TextView
                     android:id="@+id/tvTxAmount"
-                    style="@style/MoneroText.Balance.Orange"
+                    style="@style/MoneroText.Balance.Orange.Smaller"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_weight="2"
diff --git a/app/src/main/res/layout/fragment_tx_info.xml b/app/src/main/res/layout/fragment_tx_info.xml
index c160b61a..307ae8b6 100644
--- a/app/src/main/res/layout/fragment_tx_info.xml
+++ b/app/src/main/res/layout/fragment_tx_info.xml
@@ -91,7 +91,7 @@
                             android:layout_gravity="center_vertical"
                             android:gravity="end"
                             android:padding="8dp"
-                            android:text="@string/tx_amount_btc" />
+                            android:text="@string/tx_amount" />
 
                         <TextView
                             android:id="@+id/tvTxAmountBtc"
@@ -113,7 +113,7 @@
                             android:layout_gravity="top"
                             android:gravity="end"
                             android:padding="8dp"
-                            android:text="@string/tx_destination_btc" />
+                            android:text="@string/tx_destination" />
 
                         <TextView
                             android:id="@+id/tvDestinationBtc"
@@ -148,7 +148,7 @@
                                 android:layout_height="wrap_content"
                                 android:background="?android:attr/colorBackground"
                                 android:drawablePadding="16dp"
-                                android:paddingStart="24dp"
+                                android:paddingStart="8dp"
                                 android:paddingTop="8dp"
                                 android:paddingEnd="8dp"
                                 android:paddingBottom="8dp"
diff --git a/app/src/main/res/layout/item_transaction.xml b/app/src/main/res/layout/item_transaction.xml
index 3ec4cc26..00d66df9 100644
--- a/app/src/main/res/layout/item_transaction.xml
+++ b/app/src/main/res/layout/item_transaction.xml
@@ -24,7 +24,7 @@
                 android:layout_width="16dp"
                 android:layout_height="16dp"
                 android:layout_gravity="center"
-                android:src="@drawable/ic_xmrto_32dp"
+                android:src="@drawable/ic_xmrto_btc"
                 android:visibility="visible" />
 
             <LinearLayout
diff --git a/app/src/main/res/values-cat/strings.xml b/app/src/main/res/values-cat/strings.xml
index 4fa83670..9d8a2e57 100644
--- a/app/src/main/res/values-cat/strings.xml
+++ b/app/src/main/res/values-cat/strings.xml
@@ -35,29 +35,26 @@
     <string name="info_ledger_enabled">Ledger habilitat, premi aquí per més informació.</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Heu introduït una adreça de Bitcoin.</b><br/>
-        <i>Està a punt d\'enviar XMR i el destinatari rebrà BTC a través del servei <b>SideShift.ai</b> service.</i>
+        <b>Heu introduït una adreça %1$s.</b><br/>
+        <i>Està a punt d\'enviar XMR i el destinatari rebrà %1$s a través del servei <b>SideShift.ai</b> service.</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">Ordre SideShift.ai</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
     <string name="info_send_xmrto_paid">Confirmació Pendent</string>
     <string name="info_send_xmrto_unpaid">Pagament Pendent</string>
     <string name="info_send_xmrto_error">Error de SideShift.ai (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC Enviats!</string>
+    <string name="info_send_xmrto_sent">%1$s Enviats!</string>
     <string name="info_send_xmrto_query">Consultant &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>You can send %1$s &#8212; %2$s BTC</b>.<br/>
-        <i><b>SideShift.ai</b> està oferint una tasa de canvi de <b>%3$s BTC</b> <u>en aquest moment</u></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Quantitats fins a <b>%1$s BTC</b> seran enviats <u>a l\'instant</u>!</i>
+        <b>You can send %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> està oferint una tasa de canvi de <b>%3$s %4$s/XMR</b> <u>en aquest moment</u></i>.
     ]]></string>
 
-    <string name="send_available_btc">Balanç: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Balanç: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; ID de pagment integrat</string>
     <string name="info_prepare_tx">Preparant la seva transacció</string>
@@ -75,13 +72,13 @@
     <string name="text_noretry_monero">Vatua l\'olla! Sembla ser que estem encallats!</string>
     <string name="text_noretry">Ups, sembla que SideShift.ai no està disponible ara mateix!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Canvi: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Canvi: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Visita SideShift.ai per suport i seguiment</string>
     <string name="label_send_btc_xmrto_key_lb">Clau secreta\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">Clau secreta SideShift.ai</string>
-    <string name="label_send_btc_address">Adreça BTC de destí</string>
+    <string name="label_send_btc_address">Adreça %1$s de destí</string>
     <string name="label_send_btc_amount">Quantitat</string>
 
     <string name="label_send_txid">ID de transacció</string>
@@ -251,11 +248,9 @@
     <string name="tx_id">ID de transacció</string>
     <string name="tx_key">Clau de transacció</string>
     <string name="tx_destination">Destí</string>
-    <string name="tx_destination_btc">Destí\n(BTC)</string>
     <string name="tx_paymentId">ID de pagament</string>
     <string name="tx_blockheight">Bloc</string>
     <string name="tx_amount">Quantitat</string>
-    <string name="tx_amount_btc">Quantitat\n(BTC)</string>
     <string name="tx_fee">Comissió</string>
     <string name="tx_transfers">Transferències</string>
     <string name="tx_notes">Notes</string>
@@ -354,11 +349,6 @@
 
     <string name="send_address_hint">Receptor</string>
 
-    <string name="xmrto_error_001">SideShift.ai fora de línia - intenti-ho més tard</string>
-    <string name="xmrto_error_004">Quantitat de BTC fora dels límits</string>
-    <string name="xmrto_error_010">URL de pagament no vàlida o obsoleta</string>
-    <string name="xmrto_error_012">Massa peticions</string>
-
     <string name="street_sweep_amount">TOT!</string>
 
     <string name="menu_ledger_seed">Convertir la llavor del Ledger</string>
@@ -381,8 +371,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -406,4 +396,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index b73a8454..94d5ee5f 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -35,30 +35,26 @@
     <string name="info_ledger_enabled">Ledger aktiviert – Tippe für mehr Infos.</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Du hast eine BTC-Adresse eingegeben.</b><br/>
-        <i>Du wirst XMR versenden und der Empfänger durch den <b>SideShift.ai</b> Service BTC erhalten.</i>
+        <b>Du hast eine %1$s-Adresse eingegeben.</b><br/>
+        <i>Du wirst XMR versenden und der Empfänger durch den <b>SideShift.ai</b> Service %1$s erhalten.</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">SideShift.ai-Auftrag</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
-
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
     <string name="info_send_xmrto_paid">Bestätigung ausstehend</string>
     <string name="info_send_xmrto_unpaid">Bezahlung ausstehend</string>
     <string name="info_send_xmrto_error">SideShift.ai-Fehler (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC gesendet!</string>
+    <string name="info_send_xmrto_sent">%1$s gesendet!</string>
     <string name="info_send_xmrto_query">Frage ab &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Du kannst %1$s &#8212; %2$s BTC senden</b>.<br/>
-        <i><b>SideShift.ai</b> gibt dir <u>aktuell</u> einen Wechselkurs von <b>%3$s BTC</b></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Beträge bis zu <b>%1$s BTC</b> werden <u>sofort</u> versendet!</i>
+        <b>Du kannst %1$s &#8212; %2$s %4$s senden</b>.<br/>
+        <i><b>SideShift.ai</b> gibt dir <u>aktuell</u> einen Wechselkurs von <b>%3$s %4$s/XMR</b></i>.
     ]]></string>
 
-    <string name="send_available_btc">Guthaben: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Guthaben: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; Zahlungs-ID integriert</string>
     <string name="info_prepare_tx">Bereite deine Transaktion vor</string>
@@ -76,13 +72,13 @@
     <string name="text_noretry_monero">Jetzt hängen wir hier fest!</string>
     <string name="text_noretry">Oh oh – SideShift.ai scheint im Moment nicht verfügbar zu sein!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Kurs: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Kurs: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Besuche SideShift.ai für Support &amp; Nachverfolgung</string>
     <string name="label_send_btc_xmrto_key_lb">Geheimer Schlüssel\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai – Geheimer Schlüssel</string>
-    <string name="label_send_btc_address">BTC-Zieladresse</string>
+    <string name="label_send_btc_address">%1$s-Zieladresse</string>
     <string name="label_send_btc_amount">Betrag</string>
 
     <string name="label_send_txid">Transaktions-ID</string>
@@ -246,11 +242,9 @@
     <string name="tx_id">Transaktions-ID</string>
     <string name="tx_key">Transaktionsschlüssel</string>
     <string name="tx_destination">Ziel</string>
-    <string name="tx_destination_btc">Ziel\n(BTC)</string>
     <string name="tx_paymentId">Zahlungs-ID</string>
     <string name="tx_blockheight">Block</string>
     <string name="tx_amount">Betrag</string>
-    <string name="tx_amount_btc">Betrag\n(BTC)</string>
     <string name="tx_fee">Gebühr</string>
     <string name="tx_transfers">Transfers</string>
     <string name="tx_notes">Notizen</string>
@@ -357,11 +351,6 @@
 
     <string name="send_address_hint">Empfänger</string>
 
-    <string name="xmrto_error_001">SideShift.ai nicht erreichbar – versuche es später nochmal</string>
-    <string name="xmrto_error_004">BTC-Betrag außerhalb des gültigen Bereiches</string>
-    <string name="xmrto_error_010">Ungültige oder veraltete Zahlungs-URL</string>
-    <string name="xmrto_error_012">Zu viele Anfragen</string>
-
     <string name="street_sweep_amount">ALLES!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Konvertiere Ledger-Seed</string>
@@ -384,8 +373,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -409,4 +398,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index 675f8415..f2c4815a 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -34,29 +34,26 @@
     <string name="info_ledger_enabled">Ledger ενεργοποιήθηκε, πάτα για περισσότερες πληροφορείες.</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Έβαλες μια διεύθυνση bitcoin.</b><br/>
-        <i>Θα στείλεις XMR και ο παραλήπτης θα πάρει BTC μέσο της υπηρεσίας <b>SideShift.ai</b>.</i>
+        <b>Έβαλες μια διεύθυνση %1$s.</b><br/>
+        <i>Θα στείλεις XMR και ο παραλήπτης θα πάρει %1$s μέσο της υπηρεσίας <b>SideShift.ai</b>.</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">Εντολή SideShift.ai</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
     <string name="info_send_xmrto_paid">Επιβεβαίωση Εκκρεμεί</string>
     <string name="info_send_xmrto_unpaid">Πληρωμή σε εκκρεμότητα</string>
     <string name="info_send_xmrto_error">SideShift.ai Σφάλμα (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC Αποστάλθηκαν!</string>
+    <string name="info_send_xmrto_sent">%1$s Αποστάλθηκαν!</string>
     <string name="info_send_xmrto_query">Αίτηση &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Μπορείς να στείλεις %1$s &#8212; %2$s BTC</b>.<br/>
-        <i>Το <b>SideShift.ai</b> σου δίνει ισοτιμία ανταλλαγής <b>%3$s BTC</b> <u>αυτή τη στιγμή</u></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Ποσά μέχρι <b>%1$s BTC</b> θα σταλούν <u>άμεσα</u>!</i>
+        <b>Μπορείς να στείλεις %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i>Το <b>SideShift.ai</b> σου δίνει ισοτιμία ανταλλαγής <b>%3$s %4$s/XMR</b> <u>αυτή τη στιγμή</u></i>.
     ]]></string>
 
-    <string name="send_available_btc">Σύνολο: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Σύνολο: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; ID πληρωμής ενσωματωμένο</string>
     <string name="info_prepare_tx">Προετοιμασία της συναλλαγής σου</string>
@@ -74,13 +71,13 @@
     <string name="text_noretry_monero">Τώρα έχουμε κολλήσει εδώ!</string>
     <string name="text_noretry">Ωχ,το SideShift.ai φαίνεται να μην ειναι προσωρινά διαθέσιμο!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Rate: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Rate: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Επίσκεψη στο SideShift.ai για υποστήριξη &amp; με εντοπισμό συναλλαγής</string>
     <string name="label_send_btc_xmrto_key_lb">Μυστικό Κλειδί\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai Μυστικό Κλειδί</string>
-    <string name="label_send_btc_address">BTC Διεύθυνση Παραλήπτη</string>
+    <string name="label_send_btc_address">%1$s Διεύθυνση Παραλήπτη</string>
     <string name="label_send_btc_amount">Ποσό</string>
 
     <string name="label_send_txid">ID Συναλλαγής</string>
@@ -220,11 +217,9 @@
     <string name="tx_id">ID Συναλλαγής(TX ID)</string>
     <string name="tx_key">Κλειδί συναλλαγής(TX Key)</string>
     <string name="tx_destination">Προορισμός</string>
-    <string name="tx_destination_btc">Προορισμός\n(BTC)</string>
     <string name="tx_paymentId">ID Πληρωμής(Payment ID)</string>
     <string name="tx_blockheight">Μπλοκ</string>
     <string name="tx_amount">Ποσό</string>
-    <string name="tx_amount_btc">Ποσό\n(BTC)</string>
     <string name="tx_fee">Κόμιστρο</string>
     <string name="tx_transfers">Συναλλαγές</string>
     <string name="tx_notes">Σημειώσεις</string>
@@ -356,11 +351,6 @@
 
     <string name="send_address_hint">Receiver</string>
 
-    <string name="xmrto_error_001">SideShift.ai offline - try again later</string>
-    <string name="xmrto_error_004">BTC amount out of bounds</string>
-    <string name="xmrto_error_010">Invalid or outdated Payment URL</string>
-    <string name="xmrto_error_012">Too many requests</string>
-
     <string name="street_sweep_amount">EVERYTHING!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Convert Ledger Seed</string>
@@ -383,8 +373,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -408,4 +398,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml
index 6bafaf02..a112287c 100644
--- a/app/src/main/res/values-eo/strings.xml
+++ b/app/src/main/res/values-eo/strings.xml
@@ -35,29 +35,26 @@
     <string name="info_ledger_enabled">Ledger permesita, frapetu por detaloj.</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Vi entajpis Bitmono-adreson.</b><br/>
-        <i>Vi sendos XMR-on, kaj per la<b>SideShift.ai</b>-servo, la ricevanto havos BTC-on.</i>
+        <b>Vi entajpis %1$s-adreson.</b><br/>
+        <i>Vi sendos XMR-on, kaj per la<b>SideShift.ai</b>-servo, la ricevanto havos %1$s-on.</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">mendo al SideShift.ai</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
     <string name="info_send_xmrto_paid">Konfirmo okazonta</string>
     <string name="info_send_xmrto_unpaid">Pago okazonta</string>
     <string name="info_send_xmrto_error">SideShift.ai eraro (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC sendiĝis!</string>
+    <string name="info_send_xmrto_sent">%1$s sendiĝis!</string>
     <string name="info_send_xmrto_query">Informpetante &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Vi povas sendi %1$s &#8212; %2$s BTC</b>.<br/>
-        <i><b>SideShift.ai</b> proponas al vi tiun kurzon: <b>%3$s BTC</b> <u>nun</u></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Kvantoj ĝis <b>%1$s BTC</b> sendiĝos <u>senatende</u>!</i>
+        <b>Vi povas sendi %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> proponas al vi tiun kurzon: <b>%3$s %4$s/XMR</b> <u>nun</u></i>.
     ]]></string>
 
-    <string name="send_available_btc">Saldo: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Saldo: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; Paga-ID integriĝis</string>
     <string name="info_prepare_tx">Preparante vian transakcion</string>
@@ -75,13 +72,13 @@
     <string name="text_noretry_monero">Ni blokiĝis ĉi tie!</string>
     <string name="text_noretry">Uh-oh, ŝajne SideShift.ai ne disponas momente!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(kurzo: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(kurzo: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Vizitu SideShift.ai por helpo kaj sekvado</string>
     <string name="label_send_btc_xmrto_key_lb">Sekreta ŝlosilo\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai sekreta ŝlosilo</string>
-    <string name="label_send_btc_address">Ricevanta BTC-adreso</string>
+    <string name="label_send_btc_address">Ricevanta %1$s-adreso</string>
     <string name="label_send_btc_amount">Kvanto</string>
 
     <string name="label_send_txid">Transakcia ID</string>
@@ -251,11 +248,9 @@
     <string name="tx_id">TX ID</string>
     <string name="tx_key">TX Ŝlosilo</string>
     <string name="tx_destination">Destino</string>
-    <string name="tx_destination_btc">Destino\n(BTC)</string>
     <string name="tx_paymentId">Paga-ID</string>
     <string name="tx_blockheight">Bloko</string>
     <string name="tx_amount">Kvanto</string>
-    <string name="tx_amount_btc">Kvanto\n(BTC)</string>
     <string name="tx_fee">Kosto</string>
     <string name="tx_transfers">Transigoj</string>
     <string name="tx_notes">Notoj</string>
@@ -356,11 +351,6 @@
 
     <string name="send_address_hint">Ricevanto</string>
 
-    <string name="xmrto_error_001">SideShift.ai ne enretas - provu pli poste</string>
-    <string name="xmrto_error_004">BTC-kvanto tro grandas</string>
-    <string name="xmrto_error_010">La paga URL malvalidas aŭ ne ĝisdatiĝis</string>
-    <string name="xmrto_error_012">Tro da mendoj</string>
-
     <string name="street_sweep_amount">ĈIO!</string>
 
     <string name="menu_ledger_seed">Convert Ledger Seed</string>
@@ -383,8 +373,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -408,4 +398,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 2b84f3d4..99974d0a 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -218,23 +218,20 @@
     <string name="fab_restore_key">Restaurar monedero con claves privadas</string>
     <string name="fab_restore_seed">Restaurar monedero con semilla de 25 palabras</string>
     <string name="info_xmrto"><![CDATA[
-        <b>Ingresaste una dirección Bitcoin</b><br/>
-        <i>Vas a enviar XMR y el destinatario recibirá BTC usando el servicio <b>SideShift.ai</b>.</i>
+        <b>Ingresaste una dirección %1$s</b><br/>
+        <i>Vas a enviar XMR y el destinatario recibirá %1$s usando el servicio <b>SideShift.ai</b>.</i>
     ]]></string>
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
     <string name="info_send_xmrto_paid">Confirmación pendiente</string>
     <string name="info_send_xmrto_unpaid">Pago pendiente</string>
     <string name="info_send_xmrto_error">Error de SideShift.ai (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC Enviados!</string>
+    <string name="info_send_xmrto_sent">%1$s Enviados!</string>
     <string name="info_send_xmrto_query">Consultando &#8230;</string>
     <string name="info_send_xmrto_parms"><![CDATA[
-         <b>Puedes enviar %1$s &#8212; %2$s BTC</b>.<br/>
-         <i><b>SideShift.ai</b> está ofreciendo una tasa de cambio de <b>%3$s BTC</b> <u>en este momento</u></i>.
+        <b>Puedes enviar %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> está ofreciendo una tasa de cambio de <b>%3$s %4$s/XMR</b> <u>en este momento</u></i>.
     ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Montos hasta <b>%1$s BTC</b> serán enviados <u>en el momento</u>!</i>
-    ]]></string>
-    <string name="send_available_btc">Saldo: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Saldo: %2$s %3$s (%1$s XMR)</string>
     <string name="label_send_progress_xmrto_create">Creando orden SideShift.ai</string>
     <string name="label_send_progress_xmrto_query">Consultando orden SideShift.ai</string>
     <string name="label_send_progress_create_tx">Preparando transacción Monero</string>
@@ -244,12 +241,12 @@
     <string name="text_retry">Toca para reintentar</string>
     <string name="text_noretry_monero">Parece que estamos atascados!</string>
     <string name="text_noretry">Oh-oh, parece que SideShift.ai no está disponible ahora!</string>
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Cambio: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Cambio: %1$s %2$s/XMR)</string>
     <string name="label_send_btc_xmrto_info">Visita https://sideshift.ai para soporte y rastreo</string>
     <string name="label_send_btc_xmrto_key_lb">Clave secreta\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">Clave secreta SideShift.ai</string>
-    <string name="label_send_btc_address">Dirección BTC destino</string>
+    <string name="label_send_btc_address">Dirección %1$s destino</string>
     <string name="label_send_btc_amount">Monto</string>
     <string name="send_xmrto_timeout">Oye, esperaste demasiado!</string>
     <string name="label_copy_xmrtokey">Clave</string>
@@ -261,8 +258,6 @@
     <string name="send_total_btc_label">Total (XMR)</string>
     <string name="send_amount">%1$s XMR</string>
     <string name="send_fee">+%1$s Comisión</string>
-    <string name="tx_destination_btc">Destino\n(BTC)</string>
-    <string name="tx_amount_btc">Monto\n(BTC)</string>
     <string name="about_whoami">Soy monerujo</string>
     <string name="info_send_xmrto_success_order_label">Orden SideShift.ai</string>
 
@@ -347,11 +342,6 @@
     <!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
     <string name="send_address_hint">Receptor</string>
 
-    <string name="xmrto_error_001">SideShift.ai offline - try again later</string>
-    <string name="xmrto_error_004">BTC amount out of bounds</string>
-    <string name="xmrto_error_010">Invalid or outdated Payment URL</string>
-    <string name="xmrto_error_012">Too many requests</string>
-
     <string name="street_sweep_amount">EVERYTHING!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Convert Ledger Seed</string>
@@ -374,8 +364,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -399,4 +389,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml
index 8b10e14e..ad8e6cc1 100644
--- a/app/src/main/res/values-et/strings.xml
+++ b/app/src/main/res/values-et/strings.xml
@@ -35,29 +35,26 @@
     <string name="info_ledger_enabled">Ledger\'i tugi sisse lülitatud, puuduta lisainfo saamiseks.</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Sa sisestasid Bitcoini aadressi.</b><br/>
-        <i>See tähendab, et sa saadad Monerosid ning kohale jõuavad Bitcoinid kasutades SideShift.ai teenust.</i>
+        <b>Sa sisestasid %1$s aadressi.</b><br/>
+        <i>See tähendab, et sa saadad Monerosid ning kohale jõuavad %1$s kasutades SideShift.ai teenust.</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">SideShift.ai tellimus</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
     <string name="info_send_xmrto_paid">Ootan kinnitust</string>
     <string name="info_send_xmrto_unpaid">Ootan makset</string>
     <string name="info_send_xmrto_error">SideShift.ai viga (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC saadetud!</string>
+    <string name="info_send_xmrto_sent">%1$s saadetud!</string>
     <string name="info_send_xmrto_query">Küsin &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Sa saad saata %1$s &#8212; %2$s BTC</b>.<br/>
-        <i><b>SideShift.ai</b> annab <u>hetkel</u> vahetuskursiks <b>%3$s BTC</b></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Kuni <b>%1$s BTC</b> saadetakse <u>viivitamatult</u>!</i>
+        <b>Sa saad saata %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> annab <u>hetkel</u> vahetuskursiks <b>%3$s %4$s/XMR</b></i>.
     ]]></string>
 
-    <string name="send_available_btc">Kontojääk: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Kontojääk: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; Makse ID integreeritud</string>
     <string name="info_prepare_tx">Valmistan ülekannet ette</string>
@@ -75,13 +72,13 @@
     <string name="text_noretry_monero">Nüüd jõudsime küll tupikusse!</string>
     <string name="text_noretry">Oh ei, SideShift.ai ei ole hetkel saadaval!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Kurss: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Kurss: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Külasta SideShift.ai lisainfo saamiseks &amp; jälgin</string>
     <string name="label_send_btc_xmrto_key_lb">Privaatvõti\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai privaatvõti</string>
-    <string name="label_send_btc_address">Sihtkoha Bitcoini aadress</string>
+    <string name="label_send_btc_address">Sihtkoha %1$s aadress</string>
     <string name="label_send_btc_amount">Kogus</string>
 
     <string name="label_send_txid">Ülekande ID</string>
@@ -246,11 +243,9 @@
     <string name="tx_id">Ülekande ID</string>
     <string name="tx_key">Ülekande võti</string>
     <string name="tx_destination">Sihtkoht</string>
-    <string name="tx_destination_btc">Sihtkoht\n(BTC)</string>
     <string name="tx_paymentId">Makse ID</string>
     <string name="tx_blockheight">Plokk</string>
     <string name="tx_amount">Kogus</string>
-    <string name="tx_amount_btc">Kogus\n(BTC)</string>
     <string name="tx_fee">Teenustasu</string>
     <string name="tx_transfers">Ülekanded</string>
     <string name="tx_notes">Kommentaarid</string>
@@ -354,11 +349,6 @@
     <!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
     <string name="send_address_hint">Saaja</string>
 
-    <string name="xmrto_error_001">SideShift.ai offline - try again later</string>
-    <string name="xmrto_error_004">BTC amount out of bounds</string>
-    <string name="xmrto_error_010">Invalid or outdated Payment URL</string>
-    <string name="xmrto_error_012">Too many requests</string>
-
     <string name="street_sweep_amount">EVERYTHING!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Convert Ledger Seed</string>
@@ -381,8 +371,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -406,4 +396,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 41f29981..563431a8 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -35,30 +35,27 @@
     <string name="info_ledger_enabled">Ledger activé, tapez pour plus d\'infos.</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Vous avez entré une adresse Bitcoin.</b><br/>
-        <i>Vous envoyez des XMR et le destinataire recevra des BTC via le service <b>SideShift.ai</b>.</i>
+        <b>Vous avez entré une adresse %1$s.</b><br/>
+        <i>Vous envoyez des XMR et le destinataire recevra des %1$s via le service <b>SideShift.ai</b>.</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">Ordres SideShift.ai</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
 
     <string name="info_send_xmrto_paid">En Attente de Confirmation</string>
     <string name="info_send_xmrto_unpaid">En Attente de Paiement</string>
     <string name="info_send_xmrto_error">Erreur SideShift.ai (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC Envoyé !</string>
+    <string name="info_send_xmrto_sent">%1$s Envoyé !</string>
     <string name="info_send_xmrto_query">Interrogation &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Vous pouvez envoyer %1$s &#8212; %2$s BTC</b>.<br/>
-        <i><b>SideShift.ai</b> vous donne un taux de change de <b>%3$s BTC</b> <u>actuellement</u></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Les montant n\'excédant pas <b>%1$s BTC</b> seront envoyés <u>immédiatement</u>!</i>
+        <b>Vous pouvez envoyer %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> vous donne un taux de change de <b>%3$s %4$s/XMR</b> <u>actuellement</u></i>.
     ]]></string>
 
-    <string name="send_available_btc">Solde : %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Solde : %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; ID de Paiement intégré</string>
     <string name="info_prepare_tx">Préparation de votre transaction</string>
@@ -76,13 +73,13 @@
     <string name="text_noretry_monero">Maintenant on est coincé ici !</string>
     <string name="text_noretry">Oh-oh, SideShift.ai n\'a pas l\'air disponible pour le moment !</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Taux : %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Taux : %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Visitez SideShift.ai pour l\'assistance &amp; le suivi</string>
     <string name="label_send_btc_xmrto_key_lb">Clef Secrète\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">Clef Secrète SideShift.ai</string>
-    <string name="label_send_btc_address">Adresse BTC Destination</string>
+    <string name="label_send_btc_address">Adresse %1$s Destination</string>
     <string name="label_send_btc_amount">Montant</string>
 
     <string name="label_send_txid">ID de Transaction</string>
@@ -248,11 +245,9 @@
     <string name="tx_id">ID TX</string>
     <string name="tx_key">Clef TX</string>
     <string name="tx_destination">Destination</string>
-    <string name="tx_destination_btc">Destination\n(BTC)</string>
     <string name="tx_paymentId">ID de Paiement</string>
     <string name="tx_blockheight">Bloc</string>
     <string name="tx_amount">Montant</string>
-    <string name="tx_amount_btc">Montant\n(BTC)</string>
     <string name="tx_fee">Frais</string>
     <string name="tx_transfers">Transferts</string>
     <string name="tx_notes">Notes</string>
@@ -360,11 +355,6 @@
     <!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
     <string name="send_address_hint">Destinataire</string>
 
-    <string name="xmrto_error_001">SideShift.ai hors ligne - réessayer ultérieurement</string>
-    <string name="xmrto_error_004">Montant BTC hors limites</string>
-    <string name="xmrto_error_010">URL de Paiement invalide ou périmée</string>
-    <string name="xmrto_error_012">Trop de requêtes</string>
-
     <string name="street_sweep_amount">TOTALITÉ!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Convertir mnémonique Ledger</string>
@@ -387,8 +377,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -412,4 +402,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 5892dde8..429404b9 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -35,29 +35,26 @@
     <string name="info_ledger_enabled">Ledger engedélyezve, koppints ide a részletekért</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Bitcoin-címet adtál meg.</b><br/>
-        <i>XMR-t fogsz küldeni, a fogadó pedig BTC-t fog kapni az <b>SideShift.ai</b> szolgáltatásán keresztül.</i>
+        <b>%1$s-címet adtál meg.</b><br/>
+        <i>XMR-t fogsz küldeni, a fogadó pedig %1$s-t fog kapni az <b>SideShift.ai</b> szolgáltatásán keresztül.</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">SideShift.ai megrendelés</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
     <string name="info_send_xmrto_paid">Megerősítés folyamatban</string>
     <string name="info_send_xmrto_unpaid">Kifizetés folyamatban</string>
     <string name="info_send_xmrto_error">SideShift.ai-hiba (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC elküldve!</string>
+    <string name="info_send_xmrto_sent">%1$s elküldve!</string>
     <string name="info_send_xmrto_query">Lekérdezés&#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Elküldhetsz: %1$s &#8212; %2$s BTC</b>.<br/>
-        <i>Az <b>SideShift.ai</b> <u>aktuális</u> árfolyama: <b>%3$s BTC</b></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>A legfeljebb <b>%1$s BTC</b> nagyságú összegek <u>azonnal</u> elküldésre kerülnek!</i>
+        <b>Elküldhetsz: %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i>Az <b>SideShift.ai</b> <u>aktuális</u> árfolyama: <b>%3$s %4$s/XMR</b></i>.
     ]]></string>
 
-    <string name="send_available_btc">Egyenleg: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Egyenleg: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; Fizetési azonosító integrálva</string>
     <string name="info_prepare_tx">Tranzakció előkészítése</string>
@@ -75,13 +72,13 @@
     <string name="text_noretry_monero">Itt most elakadtunk!</string>
     <string name="text_noretry">Ajjaj! Úgy néz ki, az SideShift.ai most nem elérhető!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Arány: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Arány: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Segítségért és nyomonkövetésért látogass el az SideShift.ai weboldalra</string>
     <string name="label_send_btc_xmrto_key_lb">Titkos kulcs\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai titkos kulcs</string>
-    <string name="label_send_btc_address">Kedvezményezett BTC-címe</string>
+    <string name="label_send_btc_address">Kedvezményezett %1$s-címe</string>
     <string name="label_send_btc_amount">Mennyiség</string>
 
     <string name="label_send_txid">Tranzakcióazonosító</string>
@@ -245,11 +242,9 @@
     <string name="tx_id">Tranzakcióazonosító</string>
     <string name="tx_key">Tranzkaciós kulcs</string>
     <string name="tx_destination">Cél</string>
-    <string name="tx_destination_btc">Cél\n(BTC)</string>
     <string name="tx_paymentId">Fizetési azonosító</string>
     <string name="tx_blockheight">Blokk</string>
     <string name="tx_amount">Mennyiség</string>
-    <string name="tx_amount_btc">Mennyiség\n(BTC)</string>
     <string name="tx_fee">Díj</string>
     <string name="tx_transfers">Transzferek</string>
     <string name="tx_notes">Közlemény</string>
@@ -358,11 +353,6 @@
 
     <string name="send_address_hint">Receiver</string>
 
-    <string name="xmrto_error_001">SideShift.ai offline - try again later</string>
-    <string name="xmrto_error_004">BTC amount out of bounds</string>
-    <string name="xmrto_error_010">Invalid or outdated Payment URL</string>
-    <string name="xmrto_error_012">Too many requests</string>
-
     <string name="street_sweep_amount">EVERYTHING!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Convert Ledger Seed</string>
@@ -385,8 +375,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -410,4 +400,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index b79b5003..92d9060b 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -35,30 +35,27 @@
     <string name="info_ledger_enabled">Ledger abilitato, tocca per maggiori informazioni.</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Hai inserito un indirizzo Bitcoin.</b><br/>
-        <i>Invierai XMR e il destinatario riceverà BTC tramite il servizio <b>SideShift.ai</b>.</i>
+        <b>Hai inserito un indirizzo %1$s.</b><br/>
+        <i>Invierai XMR e il destinatario riceverà %1$s tramite il servizio <b>SideShift.ai</b>.</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">Ordine SideShift.ai</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
 
     <string name="info_send_xmrto_paid">In attesa di conferma</string>
     <string name="info_send_xmrto_unpaid">In attesa del pagamento</string>
     <string name="info_send_xmrto_error">Errore SideShift.ai (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC Inviati!</string>
+    <string name="info_send_xmrto_sent">%1$s Inviati!</string>
     <string name="info_send_xmrto_query">Richiedendo &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Puoi inviare %1$s &#8212; %2$s BTC</b>.<br/>
-        <i><b>SideShift.ai</b> ti sta <u>attualmente</u> concedendo un tasso di cambio di <b>%3$s BTC</b></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Ammontare fino a <b>%1$s BTC</b> inviati <u>istantaneamente</u>!</i>
+        <b>Puoi inviare %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> ti sta <u>attualmente</u> concedendo un tasso di cambio di <b>%3$s %4$s/XMR</b></i>.
     ]]></string>
 
-    <string name="send_available_btc">Saldo: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Saldo: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; ID pagamento integrato</string>
     <string name="info_prepare_tx">Preparando la tua transazione</string>
@@ -76,13 +73,13 @@
     <string name="text_noretry_monero">Ora siamo bloccati qui!!</string>
     <string name="text_noretry">Oh Oh, SideShift.ai sembra non essere disponibile in questo momento!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Tasso: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Tasso: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Visita SideShift.ai per supporto e tracciamento</string>
     <string name="label_send_btc_xmrto_key_lb">Chiave segreta\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">Chiave segreta SideShift.ai</string>
-    <string name="label_send_btc_address">Indirizzo BTC di destinazione</string>
+    <string name="label_send_btc_address">Indirizzo %1$s di destinazione</string>
     <string name="label_send_btc_amount">Ammontare</string>
 
     <string name="label_send_txid">ID Transazione</string>
@@ -247,11 +244,9 @@
     <string name="tx_id">ID TX</string>
     <string name="tx_key">Chiave TX</string>
     <string name="tx_destination">Destinazione</string>
-    <string name="tx_destination_btc">Destinazione\n(BTC)</string>
     <string name="tx_paymentId">ID Pagamento</string>
     <string name="tx_blockheight">Blocco</string>
     <string name="tx_amount">Ammontare</string>
-    <string name="tx_amount_btc">Ammontare\n(BTC)</string>
     <string name="tx_fee">Commissione</string>
     <string name="tx_transfers">Trasferimenti</string>
     <string name="tx_notes">Note</string>
@@ -359,11 +354,6 @@
     <!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
     <string name="send_address_hint">Ricevente</string>
 
-    <string name="xmrto_error_001">SideShift.ai è offline - prova più tardi</string>
-    <string name="xmrto_error_004">Ammontare in BTC fuori dai limiti</string>
-    <string name="xmrto_error_010">URL di pagamento obsoleto o invalido</string>
-    <string name="xmrto_error_012">Troppe richieste</string>
-
     <string name="street_sweep_amount">TUTTO!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Converti seed Ledger</string>
@@ -386,8 +376,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -411,4 +401,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index c40f1505..fec82efe 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -35,29 +35,26 @@
     <string name="info_ledger_enabled">レッジャーは有効化されています。詳細はタップしてください。</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>あなたが入力したのはビットコインのアドレスです。</b><br/>
-        <i>あなたはXMRを送金し、受け手は SideShift.ai のサービスを利用してBTCを受取ります。</i>
+        <b>あなたが入力したのは%1$sのアドレスです。</b><br/>
+        <i>あなたはXMRを送金し、受け手は SideShift.ai のサービスを利用して%1$sを受取ります。</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">SideShift.ai の注文</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
     <string name="info_send_xmrto_paid">承認を待っています</string>
     <string name="info_send_xmrto_unpaid">支払いを待っています</string>
     <string name="info_send_xmrto_error">SideShift.ai のエラー (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTCが送金されました!</string>
+    <string name="info_send_xmrto_sent">%1$sが送金されました!</string>
     <string name="info_send_xmrto_query">問い合わせ中 &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>%1$s から %2$s BTC を送金することができます。</b><br/>
-        <i><b>SideShift.ai</b> での交換レートは<u>現在</u><b>%3$s BTC</b>です。</i>
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i><b>%1$s BTC</b> までの数量は <u>即時に</u>送金可能です!</i>
+        <b>%1$s から %2$s %4$s を送金することができます。</b><br/>
+        <i><b>SideShift.ai</b> での交換レートは<u>現在</u><b>%3$s %4$s/XMR</b>です。</i>
     ]]></string>
 
-    <string name="send_available_btc">残高: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">残高: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; ペイメントID組み込み済み</string>
     <string name="info_prepare_tx">取引を準備しています</string>
@@ -75,13 +72,13 @@
     <string name="text_noretry_monero">私達はここで立ち往生のようです!</string>
     <string name="text_noretry">あーあ、 SideShift.ai は現在利用不能のようです!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(レート: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(レート: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">サポートと追跡については SideShift.ai をご覧ください</string>
     <string name="label_send_btc_xmrto_key_lb">シークレットキー\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai のシークレットキー</string>
-    <string name="label_send_btc_address">支払先の BTC アドレス</string>
+    <string name="label_send_btc_address">支払先の %1$s アドレス</string>
     <string name="label_send_btc_amount">数量</string>
 
     <string name="label_send_txid">取引ID</string>
@@ -251,11 +248,9 @@
     <string name="tx_id">取引ID</string>
     <string name="tx_key">取引キー</string>
     <string name="tx_destination">送金先</string>
-    <string name="tx_destination_btc">送金先\n(BTC)</string>
     <string name="tx_paymentId">ペイメントID</string>
     <string name="tx_blockheight">ブロック</string>
     <string name="tx_amount">数量</string>
-    <string name="tx_amount_btc">数量\n(BTC)</string>
     <string name="tx_fee">手数料</string>
     <string name="tx_transfers">送金</string>
     <string name="tx_notes">メモ</string>
@@ -359,11 +354,6 @@
     <!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
     <string name="send_address_hint">受け取り手</string>
 
-    <string name="xmrto_error_001">SideShift.aiはオフラインです。もう一度お試しください</string>
-    <string name="xmrto_error_004">BTCの金額は範囲外</string>
-    <string name="xmrto_error_010">ペイメントURLは不正古いです</string>
-    <string name="xmrto_error_012">リクエストは多すぎます</string>
-
     <string name="street_sweep_amount">残高合計!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Ledgerシードを転換</string>
@@ -386,8 +376,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -411,4 +401,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml
index 73deac15..bc9ba418 100644
--- a/app/src/main/res/values-nb/strings.xml
+++ b/app/src/main/res/values-nb/strings.xml
@@ -35,28 +35,25 @@
     <string name="info_ledger_enabled">Ledger tilgjengelig, trykk for mer info.</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Du skrev inn en Bitcoin addresse.</b><br/>
-        <i>Du vil sende XMR og mottakeren vil få BTC gjennom <b>SideShift.ai</b> tjenesten.</i>
+        <b>Du skrev inn en %1$s addresse.</b><br/>
+        <i>Du vil sende XMR og mottakeren vil få %1$s gjennom <b>SideShift.ai</b> tjenesten.</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">SideShift.ai Ordre</string>
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
     <string name="info_send_xmrto_paid">Bekreftelse venter</string>
     <string name="info_send_xmrto_unpaid">Betaling venter</string>
     <string name="info_send_xmrto_error">SideShift.ai error (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC sendt!</string>
+    <string name="info_send_xmrto_sent">%1$s sendt!</string>
     <string name="info_send_xmrto_query">Spør &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Du kan sende %1$s &#8212; %2$s BTC</b>.<br/>
-        <i><b>SideShift.ai</b> gir deg en vekslingskurs på <b>%3$s BTC</b> <u>akkurat nå</u></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Mengder opp til <b>%1$s BTC</b> vil bli sendt <u>umiddelbart</u>!</i>
+        <b>Du kan sende %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> gir deg en vekslingskurs på <b>%3$s %4$s/XMR</b> <u>akkurat nå</u></i>.
     ]]></string>
 
-    <string name="send_available_btc">Saldo: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Saldo: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; Betalings ID integrert</string>
     <string name="info_prepare_tx">Forbereder din transaksjon</string>
@@ -74,13 +71,13 @@
     <string name="text_noretry_monero">Nå sitter vi fast her!</string>
     <string name="text_noretry">Ops, det ser ikke ut til at SideShift.ai er tilgjengelig for øyeblikket!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Rate: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Rate: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Besøk SideShift.ai for støtte og sporing</string>
     <string name="label_send_btc_xmrto_key_lb">Hemmelig nøkkel\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai Hemmelig nøkkel</string>
-    <string name="label_send_btc_address">BTC destinasjonsadresse</string>
+    <string name="label_send_btc_address">%1$s destinasjonsadresse</string>
     <string name="label_send_btc_amount">Mengde</string>
 
     <string name="label_send_txid">Transaksjons-ID</string>
@@ -245,11 +242,9 @@
     <string name="tx_id">TX ID</string>
     <string name="tx_key">TX-nøkkel</string>
     <string name="tx_destination">Destinasjon</string>
-    <string name="tx_destination_btc">Destinasjon\n(BTC)</string>
     <string name="tx_paymentId">Betalings-ID</string>
     <string name="tx_blockheight">Blokk</string>
     <string name="tx_amount">Mengde</string>
-    <string name="tx_amount_btc">Mengde\n(BTC)</string>
     <string name="tx_fee">Avgift</string>
     <string name="tx_transfers">Overføringer</string>
     <string name="tx_notes">Notater</string>
@@ -356,11 +351,6 @@
 
     <string name="send_address_hint">Receiver</string>
 
-    <string name="xmrto_error_001">SideShift.ai offline - try again later</string>
-    <string name="xmrto_error_004">BTC amount out of bounds</string>
-    <string name="xmrto_error_010">Invalid or outdated Payment URL</string>
-    <string name="xmrto_error_012">Too many requests</string>
-
     <string name="street_sweep_amount">EVERYTHING!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Convert Ledger Seed</string>
@@ -383,8 +373,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -408,4 +398,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index b44da6cf..b903a592 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -35,29 +35,26 @@
     <string name="info_ledger_enabled">Ledger ingeschakeld. Tik voor meer info.</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Je hebt een Bitcoin-adres ingevoerd.</b><br/>
-        <i>Je verzendt XMR en de ontvanger krijgt BTC via <b>SideShift.ai</b>.</i>
+        <b>Je hebt een %1$s-adres ingevoerd.</b><br/>
+        <i>Je verzendt XMR en de ontvanger krijgt %1$s via <b>SideShift.ai</b>.</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">SideShift.ai-opdracht</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
     <string name="info_send_xmrto_paid">Wacht op bevestiging</string>
     <string name="info_send_xmrto_unpaid">Wacht op betaling</string>
     <string name="info_send_xmrto_error">Fout bij SideShift.ai (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC verzonden!</string>
+    <string name="info_send_xmrto_sent">%1$s verzonden!</string>
     <string name="info_send_xmrto_query">Aanvragen…</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Je kunt  %1$s &#8212; %2$s BTC verzenden</b>.<br/>
-        <i><b>SideShift.ai</b> biedt <u>nu</u> een wisselkoers van <b>%3$s BTC</b> aan</i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Bedragen tot <b>%1$s BTC</b> worden <u>meteen</u> verzonden!</i>
+        <b>Je kunt  %1$s &#8212; %2$s %4$s verzenden</b>.<br/>
+        <i><b>SideShift.ai</b> biedt <u>nu</u> een wisselkoers van <b>%3$s %4$s/XMR</b> aan</i>.
     ]]></string>
 
-    <string name="send_available_btc">Saldo: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Saldo: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; Betalings-ID geïntegreerd</string>
     <string name="info_prepare_tx">Transactie wordt voorbereid</string>
@@ -75,13 +72,13 @@
     <string name="text_noretry_monero">Nu zitten we vast…</string>
     <string name="text_noretry">Oeps, SideShift.ai is op dit moment niet beschikbaar.</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Koers: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Koers: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Ga naar SideShift.ai voor hulp en traceren</string>
     <string name="label_send_btc_xmrto_key_lb">Geheime sleutel\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">Geheime sleutel SideShift.ai</string>
-    <string name="label_send_btc_address">BTC-doeladres</string>
+    <string name="label_send_btc_address">%1$s-doeladres</string>
     <string name="label_send_btc_amount">Bedrag</string>
 
     <string name="label_send_txid">Transactie-ID</string>
@@ -242,11 +239,9 @@
     <string name="tx_id">Transactie-ID</string>
     <string name="tx_key">Transactiesleutel</string>
     <string name="tx_destination">Bestemming</string>
-    <string name="tx_destination_btc">Bestemming\nBTC</string>
     <string name="tx_paymentId">Betalings-ID</string>
     <string name="tx_blockheight">Blok</string>
     <string name="tx_amount">Bedrag</string>
-    <string name="tx_amount_btc">Bedrag\nBTC</string>
     <string name="tx_fee">Vergoeding</string>
     <string name="tx_transfers">Betalingen</string>
     <string name="tx_notes">Opmerkingen</string>
@@ -356,11 +351,6 @@
     <!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
     <string name="send_address_hint">Ontvanger</string>
 
-    <string name="xmrto_error_001">SideShift.ai offline - try again later</string>
-    <string name="xmrto_error_004">BTC amount out of bounds</string>
-    <string name="xmrto_error_010">Invalid or outdated Payment URL</string>
-    <string name="xmrto_error_012">Too many requests</string>
-
     <string name="street_sweep_amount">EVERYTHING!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Convert Ledger Seed</string>
@@ -383,8 +373,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -408,4 +398,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index cd7f7200..7e42d762 100755
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -35,29 +35,26 @@
     <string name="info_ledger_enabled">Ledger ativada, toque para mais informações.</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Você colocou um endereço Bitcoin.</b><br/>
-        <i>Você enviará XMR e o destinatário receberá BTC via o serviço <b>SideShift.ai</b></i>
+        <b>Você colocou um endereço %1$s.</b><br/>
+        <i>Você enviará XMR e o destinatário receberá %1$s via o serviço <b>SideShift.ai</b></i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">Ordem no SideShift.ai</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
     <string name="info_send_xmrto_paid">Confirmação Pendente</string>
     <string name="info_send_xmrto_unpaid">Pagamento Pendente</string>
     <string name="info_send_xmrto_error">Erro SideShift.ai (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC Enviado!</string>
+    <string name="info_send_xmrto_sent">%1$s Enviado!</string>
     <string name="info_send_xmrto_query">Consultando &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Você pode enviar %1$s &#8212; %2$s BTC</b>.<br/>
-        <i><b>SideShift.ai</b> enviou a cotação de <b>%3$s BTC</b> <u>neste momento</u></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Quantias até <b>%1$s BTC</b> serão enviadas <u>instantaneamente</u>!</i>
+        <b>Você pode enviar %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> enviou a cotação de <b>%3$s %4$s/XMR</b> <u>neste momento</u></i>.
     ]]></string>
 
-    <string name="send_available_btc">Saldo: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Saldo: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; ID do pagamento integrado</string>
     <string name="info_prepare_tx">Preparando sua transação</string>
@@ -75,13 +72,13 @@
     <string name="text_noretry_monero">Opa, estamos travados aqui!</string>
     <string name="text_noretry">Hm, parece que o SideShift.ai não está disponível no momento</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Cotação: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Cotação: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Visite o SideShift.ai para suporte &amp; rastreio da ordem</string>
     <string name="label_send_btc_xmrto_key_lb">Chave secreta\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">Chave secreta SideShift.ai</string>
-    <string name="label_send_btc_address">Endereço BTC de destino</string>
+    <string name="label_send_btc_address">Endereço %1$s de destino</string>
     <string name="label_send_btc_amount">Valor</string>
 
     <string name="label_send_txid">ID da Transação</string>
@@ -244,11 +241,9 @@
     <string name="tx_id">ID TX</string>
     <string name="tx_key">Chave TX</string>
     <string name="tx_destination">Destino</string>
-    <string name="tx_destination_btc">Destino\n(BTC)</string>
     <string name="tx_paymentId">ID do Pagamento</string>
     <string name="tx_blockheight">Bloco</string>
     <string name="tx_amount">Valor</string>
-    <string name="tx_amount_btc">Valor\n(BTC)</string>
     <string name="tx_fee">Taxa</string>
     <string name="tx_transfers">Transferências</string>
     <string name="tx_notes">Notas</string>
@@ -348,11 +343,6 @@
 
     <string name="send_address_hint">Destinatário</string>
 
-    <string name="xmrto_error_001">SideShift.ai offline - tente novamente mais tarde</string>
-    <string name="xmrto_error_004">Valor BTC fora dos limites</string>
-    <string name="xmrto_error_010">URL de pagamento inválido</string>
-    <string name="xmrto_error_012">Solicitações em excesso</string>
-
     <string name="street_sweep_amount">TUDO!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Converter semente da Ledger</string>
@@ -375,8 +365,8 @@
     <string name="onboarding_welcome_information">Esse aplicativo permite que você crie e use carteiras Monero. Você poderá guardar seus queridos moneroj aqui.</string>
     <string name="onboarding_seed_title">Mantenha sua semente em segurança</string>
     <string name="onboarding_seed_information">A semente dá acesso total a qualquer pessoa que a tenha. Se você perdê-la, nós não conseguiremos lhe ajudar a recuperá-la e você perderá seus amados moneroj.</string>
-    <string name="onboarding_xmrto_title">Enviar Bitcoin</string>
-    <string name="onboarding_xmrto_information">A Monerujo possui o SideShift.ai integrado. Basta colar ou escaner um endereço Bitcoin e você estará enviando BTC, mas gastando em XMR.</string>
+    <string name="onboarding_xmrto_title">Enviar Crypto</string>
+    <string name="onboarding_xmrto_information">A Monerujo possui o SideShift.ai integrado. Basta colar ou escaner um endereço BTC, LTC, ETH, DASH ou DOGE e você estará enviando cripto, mas gastando em XMR.</string>
     <string name="onboarding_nodes_title">"Nós", do seu jeito</string>
     <string name="onboarding_nodes_information">Os nós conectam você à rede Monero. Escolha entre nós públicos ou seja completamente "cypherpunk" e utilize seu próprio nó.</string>
     <string name="onboarding_fpsend_title">Enviar usando a digital</string>
@@ -400,4 +390,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 9b6fea95..b6cc1d42 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -35,29 +35,26 @@
     <string name="info_ledger_enabled">Ledger activa, toca para mais informação.</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Introduziu um endereço Bitcoin.</b><br/>
-        <i>Vai enviar em XMR e o destinatário vai receber BTC através do serviço <b>SideShift.ai</b></i>
+        <b>Introduziu um endereço %1$s.</b><br/>
+        <i>Vai enviar em XMR e o destinatário vai receber %1$s através do serviço <b>SideShift.ai</b></i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">SideShift.ai Order</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
     <string name="info_send_xmrto_paid">Confirmação Pendente</string>
     <string name="info_send_xmrto_unpaid">Pagamento Pendente</string>
     <string name="info_send_xmrto_error">Erro SideShift.ai (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC Enviadas!</string>
+    <string name="info_send_xmrto_sent">%1$s Enviadas!</string>
     <string name="info_send_xmrto_query">A comunicar &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Pode enviar %1$s &#8212; %2$s BTC</b>.<br/>
-        <i><b>SideShift.ai</b> está com uma taxa de conversão de <b>%3$s BTC</b> <u>neste momento</u></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Quantidades até <b>%1$s BTC</b> serão enviadas <u>instantaneament</u>!</i>
+        <b>Pode enviar %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> está com uma taxa de conversão de <b>%3$s %4$s/XMR</b> <u>neste momento</u></i>.
     ]]></string>
 
-    <string name="send_available_btc">Saldo: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Saldo: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; ID do pagamento integrado</string>
     <string name="info_prepare_tx">A preparar a transacção</string>
@@ -75,13 +72,13 @@
     <string name="text_noretry_monero">Agora estamos emperrados aqui!</string>
     <string name="text_noretry">Ups, SideShift.ai não parece estar disponível neste momento!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Rácio: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Rácio: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Vai a SideShift.ai para suporte &amp; seguimento</string>
     <string name="label_send_btc_xmrto_key_lb">Chave secreta\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai Chave secreta</string>
-    <string name="label_send_btc_address">Endereço BTC de destino</string>
+    <string name="label_send_btc_address">Endereço %1$s de destino</string>
     <string name="label_send_btc_amount">Quantidade</string>
 
     <string name="label_send_txid">ID da Transacção</string>
@@ -244,11 +241,9 @@
     <string name="tx_id">ID TX</string>
     <string name="tx_key">Chave TX</string>
     <string name="tx_destination">Destino</string>
-    <string name="tx_destination_btc">Destino\n(BTC)</string>
     <string name="tx_paymentId">ID Pagamento</string>
     <string name="tx_blockheight">Bloco</string>
     <string name="tx_amount">Quantidade</string>
-    <string name="tx_amount_btc">Quantidade\n(BTC)</string>
     <string name="tx_fee">Taxa</string>
     <string name="tx_transfers">Transferências</string>
     <string name="tx_notes">Notas</string>
@@ -360,11 +355,6 @@
 
     <string name="send_address_hint">Receptor</string>
 
-    <string name="xmrto_error_001">SideShift.ai offline - tenta mais tarde</string>
-    <string name="xmrto_error_004">Montante de BTC fora dos limites</string>
-    <string name="xmrto_error_010">URL de pagamento invalido ou fora de prazo</string>
-    <string name="xmrto_error_012">Demasiadas solicitações</string>
-
     <string name="street_sweep_amount">A TOTALIDADE!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Converter semente do Ledger</string>
@@ -387,8 +377,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -412,4 +402,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index 6a37db66..5d2861cb 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -34,29 +34,26 @@
     <string name="info_ledger_enabled">Ledger activată, apasă pentru mai multe informații.</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Ai introdus o adresă de Bitcoin.</b><br/>
-        <i>Vei trimite XMR și destinatarul va primi BTC folosind serviciul <b>SideShift.ai</b>.</i>
+        <b>Ai introdus o adresă de %1$s.</b><br/>
+        <i>Vei trimite XMR și destinatarul va primi %1$s folosind serviciul <b>SideShift.ai</b>.</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">Ordin SideShift.ai</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
     <string name="info_send_xmrto_paid">Confirmare în așteptare</string>
     <string name="info_send_xmrto_unpaid">Plată în așteptare</string>
     <string name="info_send_xmrto_error">Eroare SideShift.ai (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC trimis!</string>
+    <string name="info_send_xmrto_sent">%1$s trimis!</string>
     <string name="info_send_xmrto_query">Interogare &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Poți trimite %1$s &#8212; %2$s BTC</b>.<br/>
-        <i><b>SideShift.ai</b> îți oferă un curs de <b>%3$s BTC</b> <u>în acest moment</u></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Sume până la <b>%1$s BTC</b> vor fi trimise <u>instantaneu</u>!</i>
+        <b>Poți trimite %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> îți oferă un curs de <b>%3$s %4$s/XMR</b> <u>în acest moment</u></i>.
     ]]></string>
 
-    <string name="send_available_btc">Balanță: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Balanță: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; Payment ID integrat</string>
     <string name="info_prepare_tx">Se pregătește tranzacția</string>
@@ -74,13 +71,13 @@
     <string name="text_noretry_monero">Pff.. ne-am blocat cum!</string>
     <string name="text_noretry">Oh, serviciul SideShift.ai este momentan indisponibil!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Rată: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Rată: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Vizitează SideShift.ai pentru suport &amp; interogare</string>
     <string name="label_send_btc_xmrto_key_lb">Cheia secretă \nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">Cheia secretă SideShift.ai </string>
-    <string name="label_send_btc_address">Destinație adresă BTC</string>
+    <string name="label_send_btc_address">Destinație adresă %1$s</string>
     <string name="label_send_btc_amount">Sumă</string>
 
     <string name="label_send_txid">ID Tranzacție </string>
@@ -220,11 +217,9 @@
     <string name="tx_id">ID Tranzacție</string>
     <string name="tx_key">Cheie tranzacție</string>
     <string name="tx_destination">Destinație</string>
-    <string name="tx_destination_btc">Destinație\n(BTC)</string>
     <string name="tx_paymentId">Payment ID</string>
     <string name="tx_blockheight">Monobloc</string>
     <string name="tx_amount">Sumă</string>
-    <string name="tx_amount_btc">Sumă\n(BTC)</string>
     <string name="tx_fee">Comision</string>
     <string name="tx_transfers">Transferuri</string>
     <string name="tx_notes">Notițe</string>
@@ -356,11 +351,6 @@
 
     <string name="send_address_hint">Receiver</string>
 
-    <string name="xmrto_error_001">SideShift.ai offline - try again later</string>
-    <string name="xmrto_error_004">BTC amount out of bounds</string>
-    <string name="xmrto_error_010">Invalid or outdated Payment URL</string>
-    <string name="xmrto_error_012">Too many requests</string>
-
     <string name="street_sweep_amount">EVERYTHING!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Convert Ledger Seed</string>
@@ -383,8 +373,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -408,4 +398,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index a04c2157..0d97e893 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -35,30 +35,27 @@
     <string name="info_ledger_enabled">Доступен Ledger, нажмите для доп. информации</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Вы ввели Bitcoin адрес.</b><br/>
-        <i>Отправляйте XMR, получатель получит BTC, используя сервис SideShift.ai</i>
+        <b>Вы ввели %1$s адрес.</b><br/>
+        <i>Отправляйте XMR, получатель получит %1$s, используя сервис SideShift.ai</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">Заказ SideShift.ai</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
 
     <string name="info_send_xmrto_paid">Ожидание подтверждения</string>
     <string name="info_send_xmrto_unpaid">Ожидание платежа</string>
     <string name="info_send_xmrto_error">Ошибка SideShift.ai (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC успешно отправлены!</string>
+    <string name="info_send_xmrto_sent">%1$s успешно отправлены!</string>
     <string name="info_send_xmrto_query">Запрос &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Вы можете отправить %1$s &#8212; %2$s BTC</b>.<br/>
-        <i><b>SideShift.ai</b> устанавливает курс обмена <b>%3$s BTC</b> <u>в данный момент</u></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Сумма до <b>%1$s BTC</b> будет отправлена <u>немедленно</u>!</i>
+        <b>Вы можете отправить %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> устанавливает курс обмена <b>%3$s %4$s/XMR</b> <u>в данный момент</u></i>.
     ]]></string>
 
-    <string name="send_available_btc">Баланс: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Баланс: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; Интегрированный ID платежа</string>
     <string name="info_prepare_tx">Подготовка транзакции</string>
@@ -76,13 +73,13 @@
     <string name="text_noretry_monero">Теперь мы застряли здесь!</string>
     <string name="text_noretry">Ой-ой! Кажется SideShift.ai недоступен в данный момент!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Курс: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Курс: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Посетите SideShift.ai для получения помощи &amp;</string>
     <string name="label_send_btc_xmrto_key_lb">Секретный ключ\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai секретный ключ</string>
-    <string name="label_send_btc_address">Адрес получателя BTC</string>
+    <string name="label_send_btc_address">Адрес получателя %1$s</string>
     <string name="label_send_btc_amount">Сумма</string>
 
     <string name="label_send_txid">ID транзакции</string>
@@ -246,11 +243,9 @@
     <string name="tx_id">TX ID</string>
     <string name="tx_key">Ключ TX</string>
     <string name="tx_destination">Адресат</string>
-    <string name="tx_destination_btc">Адресат\n(BTC)</string>
     <string name="tx_paymentId">ID платежа</string>
     <string name="tx_blockheight">Блок</string>
     <string name="tx_amount">Сумма</string>
-    <string name="tx_amount_btc">Сумма\n(BTC)</string>
     <string name="tx_fee">Комиссия</string>
     <string name="tx_transfers">Переводы</string>
     <string name="tx_notes">Заметки</string>
@@ -360,11 +355,6 @@
     <!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
     <string name="send_address_hint">Получатель</string>
 
-    <string name="xmrto_error_001">SideShift.ai недоступен - повторите попытку позже</string>
-    <string name="xmrto_error_004">Сумма BTC выходит за доступные пределы</string>
-    <string name="xmrto_error_010">Неверный или устаревший платежный URL</string>
-    <string name="xmrto_error_012">Превышен лимит запросов</string>
-
     <string name="street_sweep_amount">ВСЕ!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Преобразовать фразу Ledger</string>
@@ -387,8 +377,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -412,4 +402,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml
index 1384e297..86e720cb 100644
--- a/app/src/main/res/values-sk/strings.xml
+++ b/app/src/main/res/values-sk/strings.xml
@@ -35,30 +35,27 @@
     <string name="info_ledger_enabled">Ledger aktivovaný, klepni pre viac info.</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Vložil si Bitcoin adresu.</b><br/>
-        <i>Pošleš XMR a adresát dostane BTC cez službu <b>SideShift.ai</b>.</i>
+        <b>Vložil si %1$s adresu.</b><br/>
+        <i>Pošleš XMR a adresát dostane %1$s cez službu <b>SideShift.ai</b>.</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">SideShift.ai Objednávka</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
 
     <string name="info_send_xmrto_paid">Čaká na Potvrdenie</string>
     <string name="info_send_xmrto_unpaid">Čakajúca Platba</string>
     <string name="info_send_xmrto_error">SideShift.ai Chyba (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC Odoslané!</string>
+    <string name="info_send_xmrto_sent">%1$s Odoslané!</string>
     <string name="info_send_xmrto_query">Zisťujem &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Môžeš poslať %1$s &#8212; %2$s BTC</b>.<br/>
-        <i><b>SideShift.ai</b> ti dáva výmenný kurz of <b>%3$s BTC</b> <u>práve teraz</u></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>čiastka do <b>%1$s BTC</b> bude odoslaná <u>okamžite</u>!</i>
+        <b>Môžeš poslať %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> ti dáva výmenný kurz of <b>%3$s %4$s/XMR</b> <u>práve teraz</u></i>.
     ]]></string>
 
-    <string name="send_available_btc">Zostatok: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Zostatok: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; Payment ID integrované</string>
     <string name="info_prepare_tx">Pripravujem transakciu</string>
@@ -76,13 +73,13 @@
     <string name="text_noretry_monero">Uviazli sme tu!</string>
     <string name="text_noretry">Myslím, že služba SideShift.ai nie je momentálne dostupná!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Kurz: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Kurz: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Navštív SideShift.ai pre podporu &amp; tracking</string>
     <string name="label_send_btc_xmrto_key_lb">Tajný kľúč\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai Tajný kľúč</string>
-    <string name="label_send_btc_address">Cieľová BTC Adresa</string>
+    <string name="label_send_btc_address">Cieľová %1$s Adresa</string>
     <string name="label_send_btc_amount">Čiastka</string>
 
     <string name="label_send_txid">ID Transakcie</string>
@@ -243,11 +240,9 @@
     <string name="tx_id">TX ID</string>
     <string name="tx_key">Kľúč Transakcie</string>
     <string name="tx_destination">Cieľ</string>
-    <string name="tx_destination_btc">Cieľová (BTC)</string>
     <string name="tx_paymentId">ID Platby</string>
     <string name="tx_blockheight">Blok</string>
     <string name="tx_amount">Suma</string>
-    <string name="tx_amount_btc">Čiastka\n(BTC)</string>
     <string name="tx_fee">poplatok</string>
     <string name="tx_transfers">Poslaných</string>
     <string name="tx_notes">Poznámky</string>
@@ -357,11 +352,6 @@
     <!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
     <string name="send_address_hint">Príjemca</string>
 
-    <string name="xmrto_error_001">SideShift.ai je offline - skús neskôr</string>
-    <string name="xmrto_error_004">Množstvo BTC je mimo rámca</string>
-    <string name="xmrto_error_010">Neplatná alebo stará URL platby</string>
-    <string name="xmrto_error_012">Príliš veľa požiadaviek</string>
-
     <string name="street_sweep_amount">VŠETKO!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Konvertuj Ledger Seed</string>
@@ -384,8 +374,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -409,4 +399,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml
index 3a44afdf..ad42e37b 100644
--- a/app/src/main/res/values-sr/strings.xml
+++ b/app/src/main/res/values-sr/strings.xml
@@ -35,29 +35,26 @@
     <string name="info_ledger_enabled">Knjiga računa omogućena, tapni za više info.</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Ubacio/la si Bitkoin adresu.</b><br/>
-        <i>You&apos;će poslati XMR a primalac će dobiti BTC koristeći <b>SideShift.ai</b> servis.</i>
+        <b>Ubacio/la si %1$s adresu.</b><br/>
+        <i>You&apos;će poslati XMR a primalac će dobiti %1$s koristeći <b>SideShift.ai</b> servis.</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">SideShift.ai Nalog</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
     <string name="info_send_xmrto_paid">Potvrda u toku</string>
     <string name="info_send_xmrto_unpaid">Plaćanje u toku</string>
     <string name="info_send_xmrto_error">SideShift.ai Greška (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC Poslato!</string>
+    <string name="info_send_xmrto_sent">%1$s Poslato!</string>
     <string name="info_send_xmrto_query">Ispitivanje &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Možeš poslati %1$s &#8212; %2$s BTC</b>.<br/>
-        <i><b>SideShift.ai</b> daje ti devizni kurs od <b>%3$s BTC</b> <u>trenutno</u></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Sume do <b>%1$s BTC</b> biće poslate <u>instantly</u>!</i>
+        <b>Možeš poslati %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> daje ti devizni kurs od <b>%3$s %4$s/XMR</b> <u>trenutno</u></i>.
     ]]></string>
 
-    <string name="send_available_btc">Stanje: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Stanje: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; ID plaćanja integrisan</string>
     <string name="info_prepare_tx">Priprema tvoje transakcije</string>
@@ -75,13 +72,13 @@
     <string name="text_noretry_monero">Sada se zaglavismo!</string>
     <string name="text_noretry">Uh, SideShift.ai izgleda da sad nije dostupan!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Rate: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Rate: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Poseti SideShift.ai za bekap &amp; praćenje</string>
     <string name="label_send_btc_xmrto_key_lb">Tajna šifra\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai Tajna šifra</string>
-    <string name="label_send_btc_address">Odredište BTC adrese</string>
+    <string name="label_send_btc_address">Odredište %1$s adrese</string>
     <string name="label_send_btc_amount">Suma</string>
 
     <string name="label_send_txid">ID transakcije</string>
@@ -252,11 +249,9 @@
     <string name="tx_id">TX ID</string>
     <string name="tx_key">TX šifra</string>
     <string name="tx_destination">Odredište</string>
-    <string name="tx_destination_btc">Odredište\n(BTC)</string>
     <string name="tx_paymentId">ID plaćanja</string>
     <string name="tx_blockheight">Blok</string>
     <string name="tx_amount">Suma</string>
-    <string name="tx_amount_btc">Suma\n(BTC)</string>
     <string name="tx_fee">Naknada</string>
     <string name="tx_transfers">Transferi</string>
     <string name="tx_notes">Čvorovi</string>
@@ -355,11 +350,6 @@
 
     <string name="send_address_hint">Primalac</string>
 
-    <string name="xmrto_error_001">SideShift.ai van mreže - pokušajte kasnije ponovo</string>
-    <string name="xmrto_error_004">BTC iznos izvan granica</string>
-    <string name="xmrto_error_010">Nevalidan ili neažuriran URL plaćanja</string>
-    <string name="xmrto_error_012">Previše zahteva</string>
-
     <string name="street_sweep_amount">SVE!</string>
 
     <string name="menu_ledger_seed">Pretvori seme iz knjige računa</string>
@@ -382,8 +372,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -407,4 +397,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index c4680bc5..d11cfcbc 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -34,22 +34,27 @@
     <string name="info_xmrto_enabled">BTC-betalning aktiverad, tryck för mer info.</string>
     <string name="info_ledger_enabled">Ledger aktiverat, tryck för mer info.</string>
 
-    <string name="info_xmrto"><![CDATA[<b>Du har angivit en Bitcoin-adress.</b><br/> <i>Du kommer att skicka XMR och mottagaren får BTC via tjänsten <b>SideShift.ai</b>.</i>]]></string>
+    <string name="info_xmrto"><![CDATA[
+      <b>Du har angivit en %1$s-adress.</b><br/>
+      <i>Du kommer att skicka XMR och mottagaren får %1$s via tjänsten <b>SideShift.ai</b>.</i>
+    ]]></string>
 
     <string name="info_send_xmrto_success_order_label">SideShift.ai-beställning</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
     <string name="info_send_xmrto_paid">Väntar på bekräftelse</string>
     <string name="info_send_xmrto_unpaid">Väntar på betalning</string>
     <string name="info_send_xmrto_error">SideShift.ai-fel (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC skickades!</string>
+    <string name="info_send_xmrto_sent">%1$s skickades!</string>
     <string name="info_send_xmrto_query">Frågar …</string>
 
-    <string name="info_send_xmrto_parms"><![CDATA[<b>Du kan skicka %1$s &#8212; %2$s BTC</b>.<br/> <i><b>SideShift.ai</b> ger dig <u>just nu</u> en växelkurs på <b>%3$s BTC</b></i>.]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[<i>Belopp upp till <b>%1$s BTC</b> skickas <u>omedelbart</u>!</i>]]></string>
+    <string name="info_send_xmrto_parms"><![CDATA[
+        <b>Du kan skicka %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> ger dig <u>just nu</u> en växelkurs på <b>%3$s %4$s/XMR</b></i>.
+    ]]></string>
 
-    <string name="send_available_btc">Saldo: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Saldo: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; Betalnings-ID integrerat</string>
     <string name="info_prepare_tx">Förbereder din transaktion</string>
@@ -67,13 +72,13 @@
     <string name="text_noretry_monero">Nu har vi kört fast!</string>
     <string name="text_noretry">Åh nej, SideShift.ai verkar inte vara tillgänglig just nu!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Kurs: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Kurs: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Besök SideShift.ai för support &amp; spårning</string>
     <string name="label_send_btc_xmrto_key_lb">Hemlig nyckel\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai hemlig nyckel</string>
-    <string name="label_send_btc_address">Måladress för BTC</string>
+    <string name="label_send_btc_address">Måladress för %1$s</string>
     <string name="label_send_btc_amount">Belopp</string>
 
     <string name="label_send_txid">Transaktions-ID</string>
@@ -225,11 +230,9 @@
     <string name="tx_id">TX-ID</string>
     <string name="tx_key">TX-nyckel</string>
     <string name="tx_destination">Mål</string>
-    <string name="tx_destination_btc">Mål\n(BTC)</string>
     <string name="tx_paymentId">Betalnings-ID</string>
     <string name="tx_blockheight">Block</string>
     <string name="tx_amount">Belopp</string>
-    <string name="tx_amount_btc">Belopp\n(BTC)</string>
     <string name="tx_fee">Avgift</string>
     <string name="tx_transfers">Överföringar</string>
     <string name="tx_notes">Anteckningar</string>
@@ -340,11 +343,6 @@
     <!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
     <string name="send_address_hint">Mottagaren</string>
 
-    <string name="xmrto_error_001">SideShift.ai offline - try again later</string>
-    <string name="xmrto_error_004">BTC amount out of bounds</string>
-    <string name="xmrto_error_010">Invalid or outdated Payment URL</string>
-    <string name="xmrto_error_012">Too many requests</string>
-
     <string name="street_sweep_amount">EVERYTHING!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Convert Ledger Seed</string>
@@ -367,8 +365,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -392,4 +390,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 2489199e..bf66f77c 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -35,30 +35,27 @@
     <string name="info_ledger_enabled">Доступний Ledger, натисніть для доп. інформації</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>Ви ввели Bitcoin адресу.</b><br/>
-        <i>Надсилайте XMR, одержувач отримає BTC, використовуючи сервіс SideShift.ai</i>
+        <b>Ви ввели %1$s адресу.</b><br/>
+        <i>Надсилайте XMR, одержувач отримає %1$s, використовуючи сервіс SideShift.ai</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">Заявка SideShift.ai</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
 
     <string name="info_send_xmrto_paid">Очікування підтвердження</string>
     <string name="info_send_xmrto_unpaid">Очікування платежу</string>
     <string name="info_send_xmrto_error">Помилка SideShift.ai (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC успішно відправлені!</string>
+    <string name="info_send_xmrto_sent">%1$s успішно відправлені!</string>
     <string name="info_send_xmrto_query">Запит &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>Ви можете відправити %1$s &#8212; %2$s BTC</b>.<br/>
-        <i><b>SideShift.ai</b> встановлює курс обміну <b>%3$s BTC</b> <u>в даний момент</u></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Сума до <b>%1$s BTC</b> буде відправлена <u>негайно</u>!</i>
+        <b>Ви можете відправити %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> встановлює курс обміну <b>%3$s %4$s/XMR</b> <u>в даний момент</u></i>.
     ]]></string>
 
-    <string name="send_available_btc">Баланс: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Баланс: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; Інтегрований ID платежу</string>
     <string name="info_prepare_tx">Підготовка транзакції</string>
@@ -76,13 +73,13 @@
     <string name="text_noretry_monero">Тепер ми застрягли тут!</string>
     <string name="text_noretry">Ой ой! Здається SideShift.ai недоступний в даний момент!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Курс: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Курс: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Відвідайте SideShift.ai для отримання допомоги &amp;</string>
     <string name="label_send_btc_xmrto_key_lb">Секретний ключ\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai секретний ключ</string>
-    <string name="label_send_btc_address">Адреса отримувача BTC</string>
+    <string name="label_send_btc_address">Адреса отримувача %1$s</string>
     <string name="label_send_btc_amount">Сума</string>
 
     <string name="label_send_txid">ID транзакції</string>
@@ -246,11 +243,9 @@
     <string name="tx_id">TX ID</string>
     <string name="tx_key">Ключ TX</string>
     <string name="tx_destination">Адресат</string>
-    <string name="tx_destination_btc">Адресат\n(BTC)</string>
     <string name="tx_paymentId">ID платежу</string>
     <string name="tx_blockheight">Блок</string>
     <string name="tx_amount">Сума</string>
-    <string name="tx_amount_btc">Сума\n(BTC)</string>
     <string name="tx_fee">Комісія</string>
     <string name="tx_transfers">Перекази</string>
     <string name="tx_notes">Замітки</string>
@@ -360,11 +355,6 @@
     <!-- please verify this means "Receiver" or "Recipient" as in "Receiver in the transaction" -->
     <string name="send_address_hint">Отримувач</string>
 
-    <string name="xmrto_error_001">SideShift.ai недоступний - спробуйте пізніше</string>
-    <string name="xmrto_error_004">Сума BTC виходить за допустимі ліміти</string>
-    <string name="xmrto_error_010">Невірний або застарілий платіжний URL</string>
-    <string name="xmrto_error_012">Перевищено кількість запитів</string>
-
     <string name="street_sweep_amount">ВСЕ!</string> <!-- as in: "everything in the account" = "all the money" -->
 
     <string name="menu_ledger_seed">Конвертувати фразу Ledger</string>
@@ -387,8 +377,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -412,4 +402,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 6021d308..622c2a96 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -27,24 +27,21 @@
     <string name="info_xmrto_enabled">已支持比特币支付,点此了解更多</string>
     <string name="info_ledger_enabled">已支持Ledger硬件钱包,点此了解更多</string>
     <string name="info_xmrto"><![CDATA[
-<b>您输入了一个比特币地址</b><br/>
-<i>您发送的门罗币将通过<b>SideShift.ai</b>服务,转换为比特币发送给对方。</i>
-]]></string>
+      <b>您输入了一个%1$s地址</b><br/>
+      <i>您发送的门罗币将通过<b>SideShift.ai</b>服务,转换为%1$s发送给对方。</i>
+    ]]></string>
     <string name="info_send_xmrto_success_order_label">SideShift.ai订单</string>
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
     <string name="info_send_xmrto_paid">等待确认中</string>
     <string name="info_send_xmrto_unpaid">等待支付中</string>
     <string name="info_send_xmrto_error">SideShift.ai错误(%1$s)</string>
-    <string name="info_send_xmrto_sent">成功发送比特币!</string>
+    <string name="info_send_xmrto_sent">成功发送%1$s!</string>
     <string name="info_send_xmrto_query">查询中&#8230;</string>
     <string name="info_send_xmrto_parms"><![CDATA[
-<b>您可以发送%1$s &#8212; %2$s BTC</b>.<br/>
-<i><u>此刻</u><b>SideShift.ai</b>的汇率是<b>%3$s BTC</b> </i>.
-]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-<i>至多<b>%1$s BTC</b>将会<u>即刻</u>发送!</i>
-]]></string>
-    <string name="send_available_btc">余额: %2$s BTC (%1$s XMR)</string>
+        <b>您可以发送%1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><u>此刻</u><b>SideShift.ai</b>的汇率是<b>%3$s %4$s/XMR</b> </i>.
+    ]]></string>
+    <string name="send_available_btc">余额: %2$s %3$s (%1$s XMR)</string>
     <string name="info_paymentid_integrated">&#x2714; 支付ID已集成</string>
     <string name="info_prepare_tx">正在为您的交易做准备工作</string>
     <string name="label_send_progress_xmrto_create">创建SideShift.ai订单</string>
@@ -56,12 +53,12 @@
     <string name="text_retry">再次尝试</string>
     <string name="text_noretry_monero">我们遇到了困难!</string>
     <string name="text_noretry">抱歉, SideShift.ai服务现在似乎不可用</string>
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Rate: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Rate: %1$s %2$s/XMR)</string>
     <string name="label_send_btc_xmrto_info">访问SideShift.ai以获得更多支持</string>
     <string name="label_send_btc_xmrto_key_lb">密钥\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai密钥</string>
-    <string name="label_send_btc_address">比特币收款地址</string>
+    <string name="label_send_btc_address">%1$s收款地址</string>
     <string name="label_send_btc_amount">金额</string>
     <string name="label_send_txid">交易ID</string>
     <string name="label_send_address">收款地址</string>
@@ -196,11 +193,9 @@
     <string name="tx_id">交易ID</string>
     <string name="tx_key">交易密钥</string>
     <string name="tx_destination">目标地址</string>
-    <string name="tx_destination_btc">目标地址\n(BTC)</string>
     <string name="tx_paymentId">支付ID</string>
     <string name="tx_blockheight">区块</string>
     <string name="tx_amount">金额</string>
-    <string name="tx_amount_btc">金额\n(BTC)</string>
     <string name="tx_fee">手续费</string>
     <string name="tx_transfers">转账</string>
     <string name="tx_notes">备注</string>
@@ -281,10 +276,6 @@
     <string name="node_nobookmark">已自动将最佳%1$d节点加入书签</string>
     <string name="label_test">测试</string><!--note: as in "Test a network connection"-->
     <string name="send_address_hint">收款人</string>
-    <string name="xmrto_error_001">SideShift.ai离线-请稍后重试</string>
-    <string name="xmrto_error_004">比特币金额超出限制</string>
-    <string name="xmrto_error_010">无效或过期的支付URL</string>
-    <string name="xmrto_error_012">当前请求数过多</string>
     <string name="street_sweep_amount">全部资产!</string>
     <string name="menu_ledger_seed">转换Ledger种子密语</string>
     <string name="prompt_ledger_seed">Ledger种子密语</string>
@@ -306,8 +297,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -331,4 +322,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 98ea2481..12d518ab 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -35,30 +35,27 @@
     <string name="info_ledger_enabled">Ledger 已啟用,點選了解更多</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>你輸入了 Bitcoin 地址</b><br/>
-        <i>你將會發送 XMR 而收款方將會收到 BTC (由 <b>SideShift.ai</b> 提供轉換)</i>
+        <b>你輸入了 %1$s 地址</b><br/>
+        <i>你將會發送 XMR 而收款方將會收到 %1$s (由 <b>SideShift.ai</b> 提供轉換)</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">SideShift.ai 訂單</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
 
     <string name="info_send_xmrto_paid">等待確認中</string>
     <string name="info_send_xmrto_unpaid">等待付款中</string>
     <string name="info_send_xmrto_error">SideShift.ai 發生錯誤 (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC 已發送!</string>
+    <string name="info_send_xmrto_sent">%1$s 已發送!</string>
     <string name="info_send_xmrto_query">查詢中 &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>你可發送 %1$s &#8212; %2$s BTC</b>.<br/>
-        <i><b>SideShift.ai</b> 提供的<u>即時</u>匯率為 <b>%3$s BTC</b></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>金額少於 <b>%1$s BTC</b> ,將會<u>馬上</u>發送!</i>
+        <b>你可發送 %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> 提供的<u>即時</u>匯率為 <b>%3$s %4$s/XMR</b></i>.
     ]]></string>
 
-    <string name="send_available_btc">餘額:%2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">餘額:%2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; 已加入付款 ID</string>
     <string name="info_prepare_tx">正在準備你的交易</string>
@@ -76,13 +73,13 @@
     <string name="text_noretry_monero">我們卡住了!</string>
     <string name="text_noretry">不好,SideShift.ai 現在似乎無法提供服務!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(匯率:%1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(匯率:%1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">參訪 SideShift.ai 以獲得支援及追蹤交易</string>
     <string name="label_send_btc_xmrto_key_lb">私鑰\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai 私鑰</string>
-    <string name="label_send_btc_address">目的地 BTC 地址</string>
+    <string name="label_send_btc_address">目的地 %1$s 地址</string>
     <string name="label_send_btc_amount">金額</string>
 
     <string name="label_send_txid">交易 ID</string>
@@ -244,11 +241,9 @@
     <string name="tx_id">交易 ID (TXID)</string>
     <string name="tx_key">交易金鑰 (TX Key)</string>
     <string name="tx_destination">收款地址</string>
-    <string name="tx_destination_btc">收款地址\n(BTC)</string>
     <string name="tx_paymentId">付款 ID</string>
     <string name="tx_blockheight">區塊</string>
     <string name="tx_amount">金額</string>
-    <string name="tx_amount_btc">金額\n(BTC)</string>
     <string name="tx_fee">手續費</string>
     <string name="tx_transfers">轉帳</string>
     <string name="tx_notes">附註</string>
@@ -355,11 +350,6 @@
 
     <string name="send_address_hint">收款者</string>
 
-    <string name="xmrto_error_001">SideShift.ai 無法使用 - 請稍候再試</string>
-    <string name="xmrto_error_004">BTC 金額超出限制</string>
-    <string name="xmrto_error_010">無效或過期的付款網址</string>
-    <string name="xmrto_error_012">請求過於頻繁</string>
-
     <string name="street_sweep_amount">全部!</string>
 
     <string name="menu_ledger_seed">轉換 Ledger 種子碼</string>
@@ -382,8 +372,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -407,4 +397,18 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
 </resources>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 219f14d4..6157b4b6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -32,33 +32,30 @@
 
     <string name="label_receive_info_gen_qr_code">Touch for QR Code</string>
 
-    <string name="info_xmrto_enabled">BTC payment enabled, tap for more info.</string>
+    <string name="info_xmrto_enabled">Non-XMR payments enabled, tap for more info.</string>
     <string name="info_ledger_enabled">Ledger enabled, tap for more info.</string>
 
     <string name="info_xmrto"><![CDATA[
-        <b>You entered a Bitcoin address.</b><br/>
-        <i>You&apos;ll send XMR and the receiver will get BTC using the <b>SideShift.ai</b> service.</i>
+        <b>You entered a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %1$s using the <b>SideShift.ai</b> service.</i>
     ]]></string>
 
     <string name="info_send_xmrto_success_order_label">SideShift.ai Order</string>
 
-    <string name="info_send_xmrto_success_btc">%1$s BTC</string>
+    <string name="info_send_xmrto_success_btc">%1$s %2$s</string>
 
     <string name="info_send_xmrto_paid">Confirmation Pending</string>
     <string name="info_send_xmrto_unpaid">Payment Pending</string>
     <string name="info_send_xmrto_error">SideShift.ai Error (%1$s)</string>
-    <string name="info_send_xmrto_sent">BTC Sent!</string>
+    <string name="info_send_xmrto_sent">%1$s Sent!</string>
     <string name="info_send_xmrto_query">Querying &#8230;</string>
 
     <string name="info_send_xmrto_parms"><![CDATA[
-        <b>You can send %1$s &#8212; %2$s BTC</b>.<br/>
-        <i><b>SideShift.ai</b> is giving you an exchange rate of <b>%3$s BTC</b> <u>right now</u></i>.
-    ]]></string>
-    <string name="info_send_xmrto_zeroconf"><![CDATA[
-        <i>Amounts up to <b>%1$s BTC</b> will be sent <u>instantly</u>!</i>
+        <b>You can send %1$s &#8212; %2$s %4$s</b>.<br/>
+        <i><b>SideShift.ai</b> is giving you an exchange rate of <b>%3$s %4$s/XMR</b> <u>right now</u></i>.
     ]]></string>
 
-    <string name="send_available_btc">Balance: %2$s BTC (%1$s XMR)</string>
+    <string name="send_available_btc">Balance: %2$s %3$s (%1$s XMR)</string>
 
     <string name="info_paymentid_integrated">&#x2714; Payment ID integrated</string>
     <string name="info_prepare_tx">Preparing your transaction</string>
@@ -76,13 +73,13 @@
     <string name="text_noretry_monero">Now we\'re stuck here!</string>
     <string name="text_noretry">Uh-oh, SideShift.ai does not seem be available right now!</string>
 
-    <string name="text_send_btc_amount">%1$s BTC = %2$s XMR</string>
-    <string name="text_send_btc_rate">(Rate: %1$s BTC/XMR)</string>
+    <string name="text_send_btc_amount">%1$s %3$s = %2$s XMR</string>
+    <string name="text_send_btc_rate">(Rate: %1$s %2$s/XMR)</string>
 
     <string name="label_send_btc_xmrto_info">Visit SideShift.ai for support &amp; tracking</string>
     <string name="label_send_btc_xmrto_key_lb">Secret Key\nSideShift.ai</string>
     <string name="label_send_btc_xmrto_key">SideShift.ai Secret Key</string>
-    <string name="label_send_btc_address">Destination BTC Address</string>
+    <string name="label_send_btc_address">Destination %1$s Address</string>
     <string name="label_send_btc_amount">Amount</string>
 
     <string name="label_send_txid">Transaction ID</string>
@@ -256,11 +253,9 @@
     <string name="tx_id">TX ID</string>
     <string name="tx_key">TX Key</string>
     <string name="tx_destination">Destination</string>
-    <string name="tx_destination_btc">Destination\n(BTC)</string>
     <string name="tx_paymentId">Payment ID</string>
     <string name="tx_blockheight">Block</string>
     <string name="tx_amount">Amount</string>
-    <string name="tx_amount_btc">Amount\n(BTC)</string>
     <string name="tx_fee">Fee</string>
     <string name="tx_transfers">Transfers</string>
     <string name="tx_notes">Notes</string>
@@ -403,13 +398,6 @@
 
     <string name="send_address_hint">Receiver</string>
 
-    <string name="xmrto_error_001">SideShift.ai offline - try again later</string>
-    <string name="xmrto_error_004">BTC amount out of bounds</string>
-    <string name="xmrto_error_010">Invalid or outdated Payment URL</string>
-    <string name="xmrto_error_012">Too many requests</string>
-
-    <string name="xmrto_error" translatable="false">SideShift.ai Service Error</string>
-
     <string name="street_sweep_amount">EVERYTHING!</string>
 
     <string name="menu_ledger_seed">Convert Ledger Seed</string>
@@ -434,8 +422,8 @@
     <string name="onboarding_welcome_information">This app allows you to create and use Monero wallets. You can store your sweet moneroj in them.</string>
     <string name="onboarding_seed_title">Keep your seed safe</string>
     <string name="onboarding_seed_information">The seed grants full access to whoever has it. If you lose it, we cannot help you recover it and you lose your beloved moneroj.</string>
-    <string name="onboarding_xmrto_title">Send Bitcoin</string>
-    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a Bitcoin address and you\'ll be sending BTC by spending XMR.</string>
+    <string name="onboarding_xmrto_title">Send Crypto</string>
+    <string name="onboarding_xmrto_information">Monerujo has SideShift.ai support built-in. Just paste or scan a BTC, LTC, ETH, DASH or DOGE address and you\'ll be sending these cryptos by spending XMR.</string>
     <string name="onboarding_nodes_title">Nodes, your way</string>
     <string name="onboarding_nodes_information">Nodes connect you to the Monero network. Choose between public nodes or go full cypherpunk using your own.</string>
     <string name="onboarding_fpsend_title">Send with fingerprint</string>
@@ -459,4 +447,28 @@
 
     <string name="shift_noquote">Cannot get quote</string>
     <string name="shift_checkamount">Check amount and try again</string>
+
+    <string name="info_xmrto_ambiguous"><![CDATA[
+        <b>Ambiguous address.</b><br/>
+        <i>Please select the type above.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help"><![CDATA[
+        <b>Please enter or scan a %1$s address.</b><br/>
+        <i>You&apos;ll send XMR and the receiver will get %2$s using the <b>SideShift.ai</b> service.</i>
+    ]]></string>
+
+    <string name="info_xmrto_help_xmr"><![CDATA[
+        <b>Please enter or scan a Monero address.</b>
+    ]]></string>
+
+    <!-- order must be the same as in com.m2049r.xmrwallet.data.Crypto-->
+    <string-array name="cryptos" translatable="false">
+        <item>Monero</item>
+        <item>Bitcoin</item>
+        <item>Dash</item>
+        <item>Dogecoin</item>
+        <item>Ethereum</item>
+        <item>Litecoin</item>
+    </string-array>
 </resources>
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 7b58d137..9359a130 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -95,6 +95,11 @@
         <!--item name="android:textColor">@color/gradientOrange</item-->
     </style>
 
+    <style name="MoneroText.Balance.Orange.Smaller">
+        <item name="android:textSize">24sp</item>
+    </style>
+
+
     <style name="MoneroText.Unconfirmed">
         <item name="android:textSize">14sp</item>
         <!--item name="android:textColor">@color/moneroGray</item-->
diff --git a/app/src/test/java/com/m2049r/xmrwallet/util/BitcoinAddressValidatorTest.java b/app/src/test/java/com/m2049r/xmrwallet/util/BitcoinAddressValidatorTest.java
deleted file mode 100644
index c2502fb4..00000000
--- a/app/src/test/java/com/m2049r/xmrwallet/util/BitcoinAddressValidatorTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2017 m2049r
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.m2049r.xmrwallet.util;
-
-import org.junit.Test;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-
-public class BitcoinAddressValidatorTest {
-
-    @Test
-    public void validateBTC_shouldValidate() {
-        assertTrue(BitcoinAddressValidator.validate("2NBMEXXS4v8ubajzfQUjYvh2ptLkxzH8uTC", true));
-        assertTrue(BitcoinAddressValidator.validate("2N9fzq66uZYQXp7uqrPBH6jKBhjrgTzpGCy", true));
-        assertTrue(BitcoinAddressValidator.validate("1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i", false));
-        assertTrue(BitcoinAddressValidator.validate("1Q1pE5vPGEEMqRcVRMbtBK842Y6Pzo6nK9", false));
-        assertTrue(BitcoinAddressValidator.validate("3R2MPpTNQLCNs13qnHz89Rm82jQ27bAwft", false));
-        assertTrue(BitcoinAddressValidator.validate("34QjytsE8GVRbUBvYNheftqJ5CHfDHvQRD", false));
-        assertTrue(BitcoinAddressValidator.validate("3GsAUrD4dnCqtaTTUzzsQWoymHNkEFrgGF", false));
-        assertTrue(BitcoinAddressValidator.validate("3NagLCvw8fLwtoUrK7s2mJPy9k6hoyWvTU", false));
-        assertTrue(BitcoinAddressValidator.validate("mjn127C5wRQCULksMYMFHLp9UTdQuCfbZ9", true));
-    }
-
-    @Test
-    public void validateBTC_shouldNotValidate() {
-        assertTrue(BitcoinAddressValidator.validate("3NagLCvw8fLwtoUrK7s2mJPy9k6hoyWvTU", false));
-        assertTrue(BitcoinAddressValidator.validate("mjn127C5wRQCULksMYMFHLp9UTdQuCfbZ9", true));
-        assertTrue(!BitcoinAddressValidator.validate("1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62j", true));
-        assertTrue(!BitcoinAddressValidator.validate("1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62X", true));
-        assertTrue(!BitcoinAddressValidator.validate("1ANNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i", true));
-        assertTrue(!BitcoinAddressValidator.validate("1A Na15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i", true));
-        assertTrue(!BitcoinAddressValidator.validate("BZbvjr", true));
-        assertTrue(!BitcoinAddressValidator.validate("i55j", true));
-        assertTrue(!BitcoinAddressValidator.validate("1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62!", true));
-        assertTrue(!BitcoinAddressValidator.validate("1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62iz", false));
-        assertTrue(!BitcoinAddressValidator.validate("1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62izz", false));
-        assertTrue(!BitcoinAddressValidator.validate("1Q1pE5vPGEEMqRcVRMbtBK842Y6Pzo6nJ9", false));
-        assertTrue(!BitcoinAddressValidator.validate("1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62I", false));
-        assertTrue(!BitcoinAddressValidator.validate("3NagLCvw8fLwtoUrK7s2mJPy9k6hoyWvTU ", false));
-        assertTrue(!BitcoinAddressValidator.validate(" 3NagLCvw8fLwtoUrK7s2mJPy9k6hoyWvTU ", false));
-    }
-
-    @Test
-    public void validSegwit() {
-        // see https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki
-        assertTrue(BitcoinAddressValidator.validateBech32Segwit("bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4", false));
-        assertTrue(BitcoinAddressValidator.validateBech32Segwit("tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx", true));
-        assertTrue(BitcoinAddressValidator.validateBech32Segwit("bc1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3qccfmv3", false));
-        assertTrue(BitcoinAddressValidator.validateBech32Segwit("tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7", true));
-
-        assertTrue(BitcoinAddressValidator.validateBech32Segwit("BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4", false));
-        assertTrue(BitcoinAddressValidator.validateBech32Segwit("tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7", true));
-        assertTrue(BitcoinAddressValidator.validateBech32Segwit("bc1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7k7grplx", false));
-        assertTrue(BitcoinAddressValidator.validateBech32Segwit("BC1SW50QA3JX3S", false));
-        assertTrue(BitcoinAddressValidator.validateBech32Segwit("bc1zw508d6qejxtdg4y5r3zarvaryvg6kdaj", false));
-        assertTrue(BitcoinAddressValidator.validateBech32Segwit("tb1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesrxh6hy", true));
-
-        assertTrue(BitcoinAddressValidator.validateBech32Segwit("bc1q76awjp3nmklgnf0yyu0qncsekktf4e3qj248t4", false)); // electrum blog
-
-    }
-
-    @Test
-    public void invalidSegwit() {
-        // see https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki
-        assertFalse(BitcoinAddressValidator.validateBech32Segwit("tc1qw508d6qejxtdg4y5r3zarvary0c5xw7kg3g4ty", true)); // Invalid human-readable part
-        assertFalse(BitcoinAddressValidator.validateBech32Segwit("bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t5", true)); // Invalid checksum
-        assertFalse(BitcoinAddressValidator.validateBech32Segwit("BC13W508D6QEJXTDG4Y5R3ZARVARY0C5XW7KN40WF2", true)); // Invalid witness version
-        assertFalse(BitcoinAddressValidator.validateBech32Segwit("bc1rw5uspcuh", true)); // Invalid program length
-        assertFalse(BitcoinAddressValidator.validateBech32Segwit("bc10w508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7kw5rljs90", true)); // Invalid program length
-        assertFalse(BitcoinAddressValidator.validateBech32Segwit("BC1QR508D6QEJXTDG4Y5R3ZARVARYV98GJ9P", true)); // Invalid program length for witness version 0 (per BIP141)
-        assertFalse(BitcoinAddressValidator.validateBech32Segwit("tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sL5k7", true)); // Mixed case
-        assertFalse(BitcoinAddressValidator.validateBech32Segwit("bc1zw508d6qejxtdg4y5r3zarvaryvqyzf3du", true)); // zero padding of more than 4 bits
-        assertFalse(BitcoinAddressValidator.validateBech32Segwit("tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3pjxtptv", true)); // Non-zero padding in 8-to-5 conversion
-        assertFalse(BitcoinAddressValidator.validateBech32Segwit("bc1gmk9yu", true)); // Empty data section
-    }
-}
diff --git a/app/src/test/java/com/m2049r/xmrwallet/util/OpenAliasHelperTest.java b/app/src/test/java/com/m2049r/xmrwallet/util/OpenAliasHelperTest.java
index 2f7c5d20..b1062723 100644
--- a/app/src/test/java/com/m2049r/xmrwallet/util/OpenAliasHelperTest.java
+++ b/app/src/test/java/com/m2049r/xmrwallet/util/OpenAliasHelperTest.java
@@ -39,7 +39,7 @@ public class OpenAliasHelperTest {
     public void asset() {
         Map<String, String> attrs = OpenAliasHelper.parse(MONERUJO);
         assertNotNull(attrs);
-        assertTrue(BarcodeData.OA_XMR_ASSET.equals(attrs.get(OpenAliasHelper.OA1_ASSET)));
+        assertTrue("xmr".equals(attrs.get(OpenAliasHelper.OA1_ASSET)));
     }
 
     @Test
diff --git a/app/src/test/java/com/m2049r/xmrwallet/util/validator/BitcoinAddressValidatorTest.java b/app/src/test/java/com/m2049r/xmrwallet/util/validator/BitcoinAddressValidatorTest.java
new file mode 100644
index 00000000..9696d83d
--- /dev/null
+++ b/app/src/test/java/com/m2049r/xmrwallet/util/validator/BitcoinAddressValidatorTest.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) 2017 m2049r
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.m2049r.xmrwallet.util.validator;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+
+public class BitcoinAddressValidatorTest {
+
+    @Test
+    public void validateBTC_shouldValidate() {
+        assertTrue(BitcoinAddressValidator.validateBTC("2NBMEXXS4v8ubajzfQUjYvh2ptLkxzH8uTC", true));
+        assertTrue(BitcoinAddressValidator.validateBTC("2N9fzq66uZYQXp7uqrPBH6jKBhjrgTzpGCy", true));
+        assertTrue(BitcoinAddressValidator.validateBTC("1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i", false));
+        assertTrue(BitcoinAddressValidator.validateBTC("1Q1pE5vPGEEMqRcVRMbtBK842Y6Pzo6nK9", false));
+        assertTrue(BitcoinAddressValidator.validateBTC("3R2MPpTNQLCNs13qnHz89Rm82jQ27bAwft", false));
+        assertTrue(BitcoinAddressValidator.validateBTC("34QjytsE8GVRbUBvYNheftqJ5CHfDHvQRD", false));
+        assertTrue(BitcoinAddressValidator.validateBTC("3GsAUrD4dnCqtaTTUzzsQWoymHNkEFrgGF", false));
+        assertTrue(BitcoinAddressValidator.validateBTC("3NagLCvw8fLwtoUrK7s2mJPy9k6hoyWvTU", false));
+        assertTrue(BitcoinAddressValidator.validateBTC("mjn127C5wRQCULksMYMFHLp9UTdQuCfbZ9", true));
+    }
+
+    @Test
+    public void validateBTC_shouldNotValidate() {
+        assertTrue(BitcoinAddressValidator.validateBTC("3NagLCvw8fLwtoUrK7s2mJPy9k6hoyWvTU", false));
+        assertTrue(BitcoinAddressValidator.validateBTC("mjn127C5wRQCULksMYMFHLp9UTdQuCfbZ9", true));
+        assertTrue(!BitcoinAddressValidator.validateBTC("1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62j", true));
+        assertTrue(!BitcoinAddressValidator.validateBTC("1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62X", true));
+        assertTrue(!BitcoinAddressValidator.validateBTC("1ANNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i", true));
+        assertTrue(!BitcoinAddressValidator.validateBTC("1A Na15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i", true));
+        assertTrue(!BitcoinAddressValidator.validateBTC("BZbvjr", true));
+        assertTrue(!BitcoinAddressValidator.validateBTC("i55j", true));
+        assertTrue(!BitcoinAddressValidator.validateBTC("1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62!", true));
+        assertTrue(!BitcoinAddressValidator.validateBTC("1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62iz", false));
+        assertTrue(!BitcoinAddressValidator.validateBTC("1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62izz", false));
+        assertTrue(!BitcoinAddressValidator.validateBTC("1Q1pE5vPGEEMqRcVRMbtBK842Y6Pzo6nJ9", false));
+        assertTrue(!BitcoinAddressValidator.validateBTC("1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62I", false));
+        assertTrue(!BitcoinAddressValidator.validateBTC("3NagLCvw8fLwtoUrK7s2mJPy9k6hoyWvTU ", false));
+        assertTrue(!BitcoinAddressValidator.validateBTC(" 3NagLCvw8fLwtoUrK7s2mJPy9k6hoyWvTU ", false));
+    }
+
+    @Test
+    public void validSegwit() {
+        // see https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki
+        assertTrue(BitcoinAddressValidator.validateBTC("bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4", false));
+        assertTrue(BitcoinAddressValidator.validateBTC("tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx", true));
+        assertTrue(BitcoinAddressValidator.validateBTC("bc1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3qccfmv3", false));
+        assertTrue(BitcoinAddressValidator.validateBTC("tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7", true));
+
+        assertTrue(BitcoinAddressValidator.validateBTC("BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4", false));
+        assertTrue(BitcoinAddressValidator.validateBTC("tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sl5k7", true));
+        assertTrue(BitcoinAddressValidator.validateBTC("bc1pw508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7k7grplx", false));
+        assertTrue(BitcoinAddressValidator.validateBTC("BC1SW50QA3JX3S", false));
+        assertTrue(BitcoinAddressValidator.validateBTC("bc1zw508d6qejxtdg4y5r3zarvaryvg6kdaj", false));
+        assertTrue(BitcoinAddressValidator.validateBTC("tb1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesrxh6hy", true));
+
+        assertTrue(BitcoinAddressValidator.validateBTC("bc1q76awjp3nmklgnf0yyu0qncsekktf4e3qj248t4", false)); // electrum blog
+
+    }
+
+    @Test
+    public void invalidSegwit() {
+        // see https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki
+        assertFalse(BitcoinAddressValidator.validateBTC("tc1qw508d6qejxtdg4y5r3zarvary0c5xw7kg3g4ty", true)); // Invalid human-readable part
+        assertFalse(BitcoinAddressValidator.validateBTC("bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t5", true)); // Invalid checksum
+        assertFalse(BitcoinAddressValidator.validateBTC("BC13W508D6QEJXTDG4Y5R3ZARVARY0C5XW7KN40WF2", true)); // Invalid witness version
+        assertFalse(BitcoinAddressValidator.validateBTC("bc1rw5uspcuh", true)); // Invalid program length
+        assertFalse(BitcoinAddressValidator.validateBTC("bc10w508d6qejxtdg4y5r3zarvary0c5xw7kw508d6qejxtdg4y5r3zarvary0c5xw7kw5rljs90", true)); // Invalid program length
+        assertFalse(BitcoinAddressValidator.validateBTC("BC1QR508D6QEJXTDG4Y5R3ZARVARYV98GJ9P", true)); // Invalid program length for witness version 0 (per BIP141)
+        assertFalse(BitcoinAddressValidator.validateBTC("tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3q0sL5k7", true)); // Mixed case
+        assertFalse(BitcoinAddressValidator.validateBTC("bc1zw508d6qejxtdg4y5r3zarvaryvqyzf3du", true)); // zero padding of more than 4 bits
+        assertFalse(BitcoinAddressValidator.validateBTC("tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3pjxtptv", true)); // Non-zero padding in 8-to-5 conversion
+        assertFalse(BitcoinAddressValidator.validateBTC("bc1gmk9yu", true)); // Empty data section
+    }
+
+    @Test
+    public void validateLTC_shouldValidate() {
+        assertTrue(BitcoinAddressValidator.validate("ltc1qmgne2vzyk9c9zk7mak6u5gy02h242f5498pnsd", BitcoinAddressType.LTC, false));
+        assertTrue(BitcoinAddressValidator.validate("M9pTFxP6MPTZT61EeNJcmenqR5G8gD3m9a", BitcoinAddressType.LTC, false));
+        assertTrue(BitcoinAddressValidator.validate("LfiJ12PCWSFrRxoPiemiSXLUkT74oXWMv6", BitcoinAddressType.LTC, false));
+
+        assertTrue(BitcoinAddressValidator.validate("ltc1qwg8d8240h8y8mcrn7j56mz9896y24rzdevf978", BitcoinAddressType.LTC, false));
+        assertTrue(BitcoinAddressValidator.validate("ltc1qmqhg2ynwzdxphrw786xwkv5sl62xkwljpmas0y", BitcoinAddressType.LTC, false));
+        assertTrue(BitcoinAddressValidator.validate("ltc1qz67ddnsl92r6skfrxyk2u4dv7qdy9zxpepn0vm", BitcoinAddressType.LTC, false));
+        assertTrue(BitcoinAddressValidator.validate("ltc1qffjjuwfgylx685s00yfjk9l0mx4jsp7xvwwvqr", BitcoinAddressType.LTC, false));
+
+        assertTrue(BitcoinAddressValidator.validate("LZNhSpMWsczM4VWm7poPVCLHf1iwmXynAn", BitcoinAddressType.LTC, false));
+        assertTrue(BitcoinAddressValidator.validate("MFAECqt8RD3t4CeGLhteCCHAaK9KzNqvec", BitcoinAddressType.LTC, false));
+    }
+
+    @Test
+    public void validateLTC_shouldNotValidate() {
+        assertFalse(BitcoinAddressValidator.validate("bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4", BitcoinAddressType.LTC, false));
+        assertFalse(BitcoinAddressValidator.validate("2N9fzq66uZYQXp7uqrPBH6jKBhjrgTzpGCy", BitcoinAddressType.LTC, false));
+    }
+
+    @Test
+    public void validateDASH_shouldValidate() {
+        assertTrue(BitcoinAddressValidator.validate("XoSxpd5VYNQvKbXbEaDKt6P1aZANzAkXrJ", BitcoinAddressType.DASH, false));
+        assertTrue(BitcoinAddressValidator.validate("Xgxd38qtwqEJDLJK1gSyzLWVtgTV26foGK", BitcoinAddressType.DASH, false));
+        assertTrue(BitcoinAddressValidator.validate("XkfCmxuMwU8DSeUpEMqfmjz4QWyhebwPCD", BitcoinAddressType.DASH, false));
+    }
+
+    @Test
+    public void validateDASH_shouldNotValidate() {
+        assertFalse(BitcoinAddressValidator.validate("XkfCmxuMwU8DSeUpEMqfmjz4QWyhebwPCd", BitcoinAddressType.DASH, false));
+        assertFalse(BitcoinAddressValidator.validate("2N9fzq66uZYQXp7uqrPBH6jKBhjrgTzpGCy", BitcoinAddressType.DASH, false));
+    }
+
+    @Test
+    public void validateDOGE_shouldValidate() {
+        assertTrue(BitcoinAddressValidator.validate("DPpJVPpvPNP6i6tMj4rTycAGh8wReTqaSU", BitcoinAddressType.DOGE, false));
+        assertTrue(BitcoinAddressValidator.validate("DPS6iZj7roHquvwRYXNBua9QtKPzigUUhM", BitcoinAddressType.DOGE, false));
+        assertTrue(BitcoinAddressValidator.validate("DFs6qrdCp4K4evv6jU5R3y2WjaWQbXzGsX", BitcoinAddressType.DOGE, false));
+    }
+
+    @Test
+    public void validateDOGE_shouldNotValidate() {
+        assertFalse(BitcoinAddressValidator.validate("Xgxd38qtwqEJDLJK1gSyzLWVtgTV26foGK", BitcoinAddressType.DOGE, false));
+        assertFalse(BitcoinAddressValidator.validate("M9pTFxP6MPTZT61EeNJcmenqR5G8gD3m9a", BitcoinAddressType.DOGE, false));
+    }
+}
diff --git a/app/src/test/java/com/m2049r/xmrwallet/util/validator/EthAddressValidatorTest.java b/app/src/test/java/com/m2049r/xmrwallet/util/validator/EthAddressValidatorTest.java
new file mode 100644
index 00000000..4dfc2324
--- /dev/null
+++ b/app/src/test/java/com/m2049r/xmrwallet/util/validator/EthAddressValidatorTest.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 m2049r
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.m2049r.xmrwallet.util.validator;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+
+public class EthAddressValidatorTest {
+
+    @Test
+    public void validateETH_shouldValidate() {
+        assertTrue(EthAddressValidator.validate("0x52d1d0de32322ec51c923b3d4d6c5ffcfcfa01a4"));
+        assertTrue(EthAddressValidator.validate("0x74c287ad5328daca276c6a1c1f149415b12c148d"));
+        assertTrue(EthAddressValidator.validate("0x12ae66cdc592e10b60f9097a7b0d3c59fce29876"));
+        assertTrue(EthAddressValidator.validate("0x12AE66CDc592e10B60f9097a7b0D3C59fce29876"));
+        assertTrue(EthAddressValidator.validate("0x541071beFDD2e68deaFb4889c8fdf005Bfdf2fb7"));
+    }
+
+    @Test
+    public void validateETH_shouldNotValidate() {
+        assertFalse(EthAddressValidator.validate("0x12AE66CDc592e10B60f9097a7b0d3C59fce29876"));
+        assertFalse(EthAddressValidator.validate("052d1d0de32322ec51c923b3d4d6c5ffcfcfa01a4"));
+        assertFalse(EthAddressValidator.validate("x74c287ad5328daca276c6a1c1f149415b12c148d"));
+        assertFalse(EthAddressValidator.validate("12ae66cdc592e10b60f9097a7b0d3c59fce29876"));
+        assertFalse(EthAddressValidator.validate("0x12ae66cdc592e10b60f9097a7b0d3c59fce2987"));
+        assertFalse(EthAddressValidator.validate("0x12ae66cdc592e10b60f9097a7b0d3c59fce2987 "));
+        assertFalse(EthAddressValidator.validate(" x12ae66cdc592e10b60f9097a7b0d3c59fce2987 "));
+    }
+}