diff --git a/core/archipelago/src/api/rpc/wallet.rs b/core/archipelago/src/api/rpc/wallet.rs
index a994081e..16b813fc 100644
--- a/core/archipelago/src/api/rpc/wallet.rs
+++ b/core/archipelago/src/api/rpc/wallet.rs
@@ -206,10 +206,17 @@ impl RpcHandler {
// (redeemed at the mint) or Fedimint notes (reissued via the fmcd
// sidecar). Detect by prefix and route accordingly.
if is_cashu_token(token) {
+ // Which mint issued it, for the success screen. Ecash leaves no
+ // public trace once redeemed, so the mint URL is the only thing a
+ // person can quote later if the payment is ever disputed.
+ let mint_url = crate::wallet::cashu::CashuToken::deserialize(token)
+ .ok()
+ .and_then(|t| t.mint_urls().first().map(|m| m.to_string()));
let amount = ecash::receive_token(&self.config.data_dir, token).await?;
return Ok(serde_json::json!({
"received_sats": amount,
"kind": "cashu",
+ "mint_url": mint_url,
}));
}
diff --git a/neode-ui/src/components/PaymentSuccessPane.vue b/neode-ui/src/components/PaymentSuccessPane.vue
new file mode 100644
index 00000000..8dca76a9
--- /dev/null
+++ b/neode-ui/src/components/PaymentSuccessPane.vue
@@ -0,0 +1,143 @@
+
+ {{ methodLabel }} {{ row.label }} {{ row.value }} {{ row.hint }} {{ note }}