diff --git a/Bitkit/Views/Wallets/Send/SendAmountView.swift b/Bitkit/Views/Wallets/Send/SendAmountView.swift
index b49c9288a..11bfe3641 100644
--- a/Bitkit/Views/Wallets/Send/SendAmountView.swift
+++ b/Bitkit/Views/Wallets/Send/SendAmountView.swift
@@ -165,11 +165,7 @@ struct SendAmountView: View {
BodySText(conversionError, textColor: .brandAccent).padding(.top, 12)
}
- if app.paykitUsesUsdt {
- Spacer().frame(height: 32)
- } else {
- Spacer()
- }
+ Spacer()
// Available balance section
HStack(alignment: .bottom) {
@@ -255,7 +251,6 @@ struct SendAmountView: View {
amountViewModel.handleNumberPadInput(key, currency: currency)
}
}
- .frame(maxHeight: app.paykitUsesUsdt ? .infinity : nil)
CustomButton(
title: t("common__continue"),
diff --git a/Bitkit/Views/Wallets/UsdtSendView.swift b/Bitkit/Views/Wallets/UsdtSendView.swift
index dd21dbb6a..93d11a3f7 100644
--- a/Bitkit/Views/Wallets/UsdtSendView.swift
+++ b/Bitkit/Views/Wallets/UsdtSendView.swift
@@ -337,7 +337,7 @@ struct UsdtSendView: View {
VStack(alignment: .leading, spacing: 0) {
UsdtAmountHeader(amount: amount.isEmpty ? "0" : amount)
.accessibilityIdentifier("UsdtAmount")
- .padding(.bottom, 32)
+ Spacer()
if let error {
BodySText(error, textColor: .brandAccent).accessibilityIdentifier("UsdtError").padding(.bottom, 16)
}
@@ -364,7 +364,6 @@ struct UsdtSendView: View {
onDeleteLongPress: { amount = ""; maximumQuote = nil; isMaximumAmount = false; error = nil },
onPress: enterAmount
)
- .frame(maxHeight: .infinity)
CustomButton(title: t("common__continue"), isDisabled: busy || (try? parsePaykitAmountInput(asset: .usdt, value: amount)) == nil,
isLoading: busy && !preparingMaximum, titleKerning: 0, titleLineHeight: 20)
{
diff --git a/changelog.d/next/1056.fixed.md b/changelog.d/next/1056.fixed.md
new file mode 100644
index 000000000..6548a033f
--- /dev/null
+++ b/changelog.d/next/1056.fixed.md
@@ -0,0 +1 @@
+The USDT amount keypad now sits right above Continue, as on the Bitcoin amount screen.
diff --git a/journeys/usdt-send-review-and-details.xml b/journeys/usdt-send-review-and-details.xml
index 9b4021e31..54d65fa3e 100644
--- a/journeys/usdt-send-review-and-details.xml
+++ b/journeys/usdt-send-review-and-details.xml
@@ -2,7 +2,7 @@
Use an onboarded wallet with USDT, a fresh BTC/USD rate, owned EVM and Solana recipients and existing sent/received activity. Save a linked contact that advertises Bitcoin, Lightning and USDT receiving methods. Have an unpaid one-time request and a due subscription payment from that contact, each permitting USDT. Pair a hardware wallet for the hardware-option check. Use the local USDT fixture for funding, controlled quotes and submitted-payment states. Quotes require the service with MAX support. No payment is submitted.
Enable USDT in the introductory sheet or Settings, General, Payments before starting this flow.
- Open USDT Send and enter the owned recipient. On Amount, verify the BTC equivalent above the dollar amount, 32-point gap before Available balance, USDT badge, MAX and network pill. Enter a six-decimal amount and verify no precision is lost. With a large available balance and BNB Smart Chain selected, verify both values remain fully readable; the controls may wrap onto a second row.
+ Open USDT Send and enter the owned recipient. On Amount, verify the BTC equivalent above the dollar amount at the top, then the free space, then Available balance, USDT badge, MAX and network pill right above the keypad, and Continue right below the keypad, laid out as on the Bitcoin Amount screen. Enter a six-decimal amount and verify no precision is lost. With a large available balance and BNB Smart Chain selected, verify both values remain fully readable; the controls may wrap onto a second row.
Open the network pill and verify the full USDT Network picker, Tether rows and selected teal check. Select another EVM network. Verify the amount and valid recipient remain. Change to Solana with an EVM recipient and verify recipient entry is required. Enter an owned plain Solana address and verify the previous amount remains. Return to Arbitrum, enter the owned EVM address and verify the amount still remains.
From recipient entry with another network selected, paste an explicit Arbitrum USDT URI. Verify the selected network becomes Arbitrum and the link amount is retained. A plain 0x address preserves the selected network.
Tap MAX. Verify it fills a positive amount below the balance and remains on Amount. Continue and verify the payment plus maximum fee fits within the balance. Back out without swiping.