diff --git a/.gitignore b/.gitignore
index c742db9..2b8868f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,4 @@ ui/node_modules/
nginx/certs/
backups/
+ui/tsconfig.tsbuildinfo
diff --git a/ui/app/i/[invoiceId]/page.tsx b/ui/app/i/[invoiceId]/page.tsx
index a5a6016..78d0259 100644
--- a/ui/app/i/[invoiceId]/page.tsx
+++ b/ui/app/i/[invoiceId]/page.tsx
@@ -6,6 +6,7 @@ import InvoicePaymentDetails from "../../../components/invoice-payment-details";
import InvoiceStatusAutoRefresh from "../../../components/invoice-status-auto-refresh";
import { formatRelativeTime } from "../../../components/relative-time";
import StatusRefreshButton from "../../../components/status-refresh-button";
+import BtcpayAutoReturn from "../../../components/btcpay-auto-return";
export const dynamic = "force-dynamic";
export const metadata: Metadata = {
@@ -149,7 +150,12 @@ export default async function BtcpayModalInvoicePage({
const isBtcpayInvoice = Boolean(invoice.btcpay_amount && invoice.btcpay_currency);
const useClassicCheckout =
isBtcpayInvoice && invoice.btcpay_checkout_style === "btcpay_classic";
- const shouldShowBtcpayActions = isBtcpayInvoice && invoice.status === "confirmed";
+ // The merchant's own order page is where a customer belongs once the payment has been seen, so
+ // the way back appears at detection. The receipt still waits for the confirmation target, because
+ // that is the point at which there is a settled payment to write one about.
+ const shouldShowBtcpayActions =
+ isBtcpayInvoice &&
+ (invoice.status === "payment_detected" || invoice.status === "confirmed");
const checkoutContinueAvailable =
!isBtcpayInvoice &&
invoice.status === "confirmed" &&
@@ -257,6 +263,11 @@ export default async function BtcpayModalInvoicePage({
) : null}
+
Payment request