From 3fd66f38dad185c9b895beab66118cc7e2b1a2f4 Mon Sep 17 00:00:00 2001
From: callebtc <93376500+callebtc@users.noreply.github.com>
Date: Sat, 27 Nov 2021 12:42:19 +0100
Subject: [PATCH 01/46] rename endpoint to avoid collision

---
 lnbits/extensions/usermanager/views_api.py | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lnbits/extensions/usermanager/views_api.py b/lnbits/extensions/usermanager/views_api.py
index 26b9874b1..1439b6820 100644
--- a/lnbits/extensions/usermanager/views_api.py
+++ b/lnbits/extensions/usermanager/views_api.py
@@ -23,7 +23,7 @@ from .crud import (
 )
 from .models import CreateUserData, CreateUserWallet
 
-### Users
+# Users
 
 
 @usermanager_ext.get("/api/v1/users", status_code=HTTPStatus.OK)
@@ -72,7 +72,7 @@ async def api_usermanager_users_delete(
     raise HTTPException(status_code=HTTPStatus.NO_CONTENT)
 
 
-###Activate Extension
+# Activate Extension
 
 
 @usermanager_ext.post("/api/v1/extensions")
@@ -88,7 +88,7 @@ async def api_usermanager_activate_extension(
     return {"extension": "updated"}
 
 
-###Wallets
+# Wallets
 
 
 @usermanager_ext.post("/api/v1/wallets")
@@ -107,7 +107,7 @@ async def api_usermanager_wallets(wallet: WalletTypeInfo = Depends(get_key_type)
     return [wallet.dict() for wallet in await get_usermanager_wallets(admin_id)]
 
 
-@usermanager_ext.get("/api/v1/wallets/{wallet_id}")
+@usermanager_ext.get("/api/v1/transactions/{wallet_id}")
 async def api_usermanager_wallet_transactions(
     wallet_id, wallet: WalletTypeInfo = Depends(get_key_type)
 ):

From 2612e6064718dcab9049cf274ef9243dec7193e7 Mon Sep 17 00:00:00 2001
From: callebtc <93376500+callebtc@users.noreply.github.com>
Date: Sat, 27 Nov 2021 12:43:14 +0100
Subject: [PATCH 02/46] annotation for optional attributes

---
 lnbits/extensions/usermanager/models.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lnbits/extensions/usermanager/models.py b/lnbits/extensions/usermanager/models.py
index e65bdb52c..67facec68 100644
--- a/lnbits/extensions/usermanager/models.py
+++ b/lnbits/extensions/usermanager/models.py
@@ -2,6 +2,7 @@ from sqlite3 import Row
 
 from fastapi.param_functions import Query
 from pydantic import BaseModel
+from typing import Optional
 
 
 class CreateUserData(BaseModel):
@@ -22,8 +23,8 @@ class Users(BaseModel):
     id: str
     name: str
     admin: str
-    email: str
-    password: str
+    email: Optional[str] = None
+    password: Optional[str] = None
 
 
 class Wallets(BaseModel):

From 9b58bfe06a940aee9b101182aa5fb39d21474b06 Mon Sep 17 00:00:00 2001
From: callebtc <93376500+callebtc@users.noreply.github.com>
Date: Sat, 27 Nov 2021 12:54:01 +0100
Subject: [PATCH 03/46] remove trio_typing

---
 mypy.ini | 2 --
 1 file changed, 2 deletions(-)
 delete mode 100644 mypy.ini

diff --git a/mypy.ini b/mypy.ini
deleted file mode 100644
index b991c7cc2..000000000
--- a/mypy.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[mypy]
-plugins = trio_typing.plugin

From ad3942f844fc0657964598b5c12d2c50ad0a40be Mon Sep 17 00:00:00 2001
From: callebtc <93376500+callebtc@users.noreply.github.com>
Date: Sat, 27 Nov 2021 13:01:12 +0100
Subject: [PATCH 04/46] remove type comment

---
 lnbits/jinja2_templating.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lnbits/jinja2_templating.py b/lnbits/jinja2_templating.py
index f74f05c05..5abcd0bff 100644
--- a/lnbits/jinja2_templating.py
+++ b/lnbits/jinja2_templating.py
@@ -23,7 +23,7 @@ class Jinja2Templates(templating.Jinja2Templates):
     def get_environment(self, loader: "jinja2.BaseLoader") -> "jinja2.Environment":
         @jinja2.contextfunction
         def url_for(context: dict, name: str, **path_params: typing.Any) -> str:
-            request: Request = context["request"]  # type: starlette.requests.Request
+            request: Request = context["request"]
             return request.app.url_path_for(name, **path_params)
 
         def url_params_update(init: QueryParams, **new: typing.Any) -> QueryParams:

From b178d9a38d27730a294130c9b271e36d0faa573e Mon Sep 17 00:00:00 2001
From: callebtc <93376500+callebtc@users.noreply.github.com>
Date: Sat, 27 Nov 2021 13:11:29 +0100
Subject: [PATCH 05/46] readd mypy.ini

---
 mypy.ini | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 mypy.ini

diff --git a/mypy.ini b/mypy.ini
new file mode 100644
index 000000000..f8b1844b6
--- /dev/null
+++ b/mypy.ini
@@ -0,0 +1 @@
+[mypy]

From 12c2a04b2ac9567662132bd05cd1833b649dfb5b Mon Sep 17 00:00:00 2001
From: callebtc <93376500+callebtc@users.noreply.github.com>
Date: Mon, 29 Nov 2021 18:10:11 +0100
Subject: [PATCH 06/46] LNDRest fee limit

---
 lnbits/core/services.py   |  5 ++++-
 lnbits/core/views/api.py  | 17 +++++++++++------
 lnbits/wallets/lndrest.py | 21 ++++++++++++++++++---
 3 files changed, 33 insertions(+), 10 deletions(-)

diff --git a/lnbits/core/services.py b/lnbits/core/services.py
index 57722dfd5..3ce1248b8 100644
--- a/lnbits/core/services.py
+++ b/lnbits/core/services.py
@@ -170,6 +170,8 @@ async def pay_invoice(
                 )
                 await delete_payment(temp_id, conn=conn)
         else:
+            async with db.connect() as conn:
+                await delete_payment(temp_id, conn=conn)
             raise PaymentFailure(
                 payment.error_message
                 or "Payment failed, but backend didn't give us an error message."
@@ -314,7 +316,8 @@ async def check_invoice_status(
     if not payment.pending:
         return status
     if payment.is_out and status.failed:
-        print(f" - deleting outgoing failed payment {payment.checking_id}: {status}")
+        print(
+            f" - deleting outgoing failed payment {payment.checking_id}: {status}")
         await payment.delete()
     elif not status.pending:
         print(
diff --git a/lnbits/core/views/api.py b/lnbits/core/views/api.py
index b0ea56098..c919821ff 100644
--- a/lnbits/core/views/api.py
+++ b/lnbits/core/views/api.py
@@ -72,7 +72,7 @@ async def api_update_wallet(
 @core_app.get("/api/v1/payments")
 async def api_payments(wallet: WalletTypeInfo = Depends(get_key_type)):
     await get_payments(wallet_id=wallet.wallet.id, pending=True, complete=True)
-    pendingPayments = await get_payments(wallet_id=wallet.wallet.id, pending=True)
+    pendingPayments = await get_payments(wallet_id=wallet.wallet.id, pending=True, exclude_uncheckable=True)
     for payment in pendingPayments:
         await check_invoice_status(
             wallet_id=payment.wallet_id, payment_hash=payment.payment_hash
@@ -193,7 +193,8 @@ async def api_payments_create(
     invoiceData: CreateInvoiceData = Body(...),
 ):
     if wallet.wallet_type < 0 or wallet.wallet_type > 2:
-        raise HTTPException(status_code=HTTPStatus.BAD_REQUEST, detail="Key is invalid")
+        raise HTTPException(
+            status_code=HTTPStatus.BAD_REQUEST, detail="Key is invalid")
 
     if invoiceData.out is True and wallet.wallet_type == 0:
         if not invoiceData.bolt11:
@@ -204,7 +205,8 @@ async def api_payments_create(
         return await api_payments_pay_invoice(
             invoiceData.bolt11, wallet.wallet
         )  # admin key
-    return await api_payments_create_invoice(invoiceData, wallet.wallet)  # invoice key
+    # invoice key
+    return await api_payments_create_invoice(invoiceData, wallet.wallet)
 
 
 class CreateLNURLData(BaseModel):
@@ -372,14 +374,16 @@ async def api_lnurlscan(code: str):
         params.update(callback=url)  # with k1 already in it
 
         lnurlauth_key = g().wallet.lnurlauth_key(domain)
-        params.update(pubkey=lnurlauth_key.verifying_key.to_string("compressed").hex())
+        params.update(
+            pubkey=lnurlauth_key.verifying_key.to_string("compressed").hex())
     else:
         async with httpx.AsyncClient() as client:
             r = await client.get(url, timeout=5)
             if r.is_error:
                 raise HTTPException(
                     status_code=HTTPStatus.SERVICE_UNAVAILABLE,
-                    detail={"domain": domain, "message": "failed to get parameters"},
+                    detail={"domain": domain,
+                            "message": "failed to get parameters"},
                 )
 
         try:
@@ -409,7 +413,8 @@ async def api_lnurlscan(code: str):
 
             if tag == "withdrawRequest":
                 params.update(kind="withdraw")
-                params.update(fixed=data["minWithdrawable"] == data["maxWithdrawable"])
+                params.update(fixed=data["minWithdrawable"]
+                              == data["maxWithdrawable"])
 
                 # callback with k1 already in it
                 parsed_callback: ParseResult = urlparse(data["callback"])
diff --git a/lnbits/wallets/lndrest.py b/lnbits/wallets/lndrest.py
index f0824dacc..e3addfd68 100644
--- a/lnbits/wallets/lndrest.py
+++ b/lnbits/wallets/lndrest.py
@@ -5,6 +5,8 @@ import base64
 from os import getenv
 from typing import Optional, Dict, AsyncGenerator
 
+from lnbits import bolt11 as lnbits_bolt11
+
 from .base import (
     StatusResponse,
     InvoiceResponse,
@@ -21,7 +23,8 @@ class LndRestWallet(Wallet):
         endpoint = getenv("LND_REST_ENDPOINT")
         endpoint = endpoint[:-1] if endpoint.endswith("/") else endpoint
         endpoint = (
-            "https://" + endpoint if not endpoint.startswith("http") else endpoint
+            "https://" +
+            endpoint if not endpoint.startswith("http") else endpoint
         )
         self.endpoint = endpoint
 
@@ -89,10 +92,21 @@ class LndRestWallet(Wallet):
 
     async def pay_invoice(self, bolt11: str) -> PaymentResponse:
         async with httpx.AsyncClient(verify=self.cert) as client:
+            # set the fee limit for the payment
+            invoice = lnbits_bolt11.decode(bolt11)
+            lnrpcFeeLimit = dict()
+            if invoice.amount_msat > 1000_000:
+                lnrpcFeeLimit["percent"] = "1"  # in percent
+            else:
+                lnrpcFeeLimit["fixed"] = "10"  # in sat
+
             r = await client.post(
                 url=f"{self.endpoint}/v1/channels/transactions",
                 headers=self.auth,
-                json={"payment_request": bolt11},
+                json={
+                    "payment_request": bolt11,
+                    "fee_limit": lnrpcFeeLimit,
+                },
                 timeout=180,
             )
 
@@ -168,7 +182,8 @@ class LndRestWallet(Wallet):
                             except:
                                 continue
 
-                            payment_hash = base64.b64decode(inv["r_hash"]).hex()
+                            payment_hash = base64.b64decode(
+                                inv["r_hash"]).hex()
                             yield payment_hash
             except (OSError, httpx.ConnectError, httpx.ReadError):
                 pass

From 63546036bcfe9d2aee29ca9226c939f2ae0f6bd0 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Tue, 30 Nov 2021 14:12:01 +0000
Subject: [PATCH 07/46] fix purge

---
 lnbits/extensions/lnaddress/crud.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lnbits/extensions/lnaddress/crud.py b/lnbits/extensions/lnaddress/crud.py
index 4cfff2f9e..3bd636f19 100644
--- a/lnbits/extensions/lnaddress/crud.py
+++ b/lnbits/extensions/lnaddress/crud.py
@@ -176,7 +176,7 @@ async def purge_addresses(domain_id: str):
     now = datetime.now().timestamp()
 
     for row in rows:
-        r = Addresses(**row)._asdict()
+        r = Addresses(**row).dict()
 
         start = datetime.fromtimestamp(r["time"])
         paid = r["paid"]

From 5b01ee6879a2fe37b6668e474070eccd8b0ec939 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Tue, 30 Nov 2021 14:20:34 +0000
Subject: [PATCH 08/46] check for missing protocol

---
 lnbits/extensions/lnaddress/lnurl.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 30b8fc5a4..20ec7a964 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -15,6 +15,7 @@ from .crud import get_address, get_address_by_username, get_domain
 
 
 async def lnurl_response(username: str, domain: str, request: Request):
+    print("LNU", username, domain)
     address = await get_address_by_username(username, domain)
 
     if not address:
@@ -54,7 +55,7 @@ async def lnurl_callback(address_id, amount: int = Query(...)):
         if address.wallet_endpoint.endswith("/")
         else address.wallet_endpoint
     )
-
+    print("BASE", base_url)
     async with httpx.AsyncClient() as client:
         try:
             call = await client.post(

From f37af0ddf6102871c4a7bf0bcd061399514db42f Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Tue, 30 Nov 2021 14:41:25 +0000
Subject: [PATCH 09/46] fix request url default

---
 lnbits/extensions/lnaddress/lnurl.py                         | 2 +-
 lnbits/extensions/lnaddress/templates/lnaddress/display.html | 2 +-
 lnbits/extensions/lnaddress/templates/lnaddress/index.html   | 1 +
 lnbits/extensions/lnaddress/views.py                         | 5 ++++-
 4 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 20ec7a964..22e54b8a2 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -55,7 +55,7 @@ async def lnurl_callback(address_id, amount: int = Query(...)):
         if address.wallet_endpoint.endswith("/")
         else address.wallet_endpoint
     )
-    print("BASE", base_url)
+    print("BASE", base_url )
     async with httpx.AsyncClient() as client:
         try:
             call = await client.post(
diff --git a/lnbits/extensions/lnaddress/templates/lnaddress/display.html b/lnbits/extensions/lnaddress/templates/lnaddress/display.html
index 67745fa85..f820c81f6 100644
--- a/lnbits/extensions/lnaddress/templates/lnaddress/display.html
+++ b/lnbits/extensions/lnaddress/templates/lnaddress/display.html
@@ -370,7 +370,7 @@
         if (data.wallet_endpoint == '') {
           data.wallet_endpoint = null
         }
-        data.wallet_endpoint = data.wallet_endpoint ?? '{{ request.url_root }}'
+        data.wallet_endpoint = data.wallet_endpoint ?? '{{ root_url }}'
         data.duration = parseInt(data.duration)
         console.log('data', data)
 
diff --git a/lnbits/extensions/lnaddress/templates/lnaddress/index.html b/lnbits/extensions/lnaddress/templates/lnaddress/index.html
index ef04b5937..3969d6f56 100644
--- a/lnbits/extensions/lnaddress/templates/lnaddress/index.html
+++ b/lnbits/extensions/lnaddress/templates/lnaddress/index.html
@@ -489,6 +489,7 @@
         this.getDomains()
         this.getAddresses()
       }
+      console.log('{{ request.url.path }}')
       // var self = this
       //
       // // axios is available for making requests
diff --git a/lnbits/extensions/lnaddress/views.py b/lnbits/extensions/lnaddress/views.py
index cec12bf89..ef6d2b766 100644
--- a/lnbits/extensions/lnaddress/views.py
+++ b/lnbits/extensions/lnaddress/views.py
@@ -1,4 +1,5 @@
 from http import HTTPStatus
+from urllib.parse import urlparse
 
 from fastapi import Request
 from fastapi.params import Depends
@@ -34,7 +35,8 @@ async def display(domain_id, request: Request):
     await purge_addresses(domain_id)
 
     wallet = await get_wallet(domain.wallet)
-
+    url = urlparse(str(request.url))
+    
     return lnaddress_renderer().TemplateResponse(
         "lnaddress/display.html",
         {
@@ -43,5 +45,6 @@ async def display(domain_id, request: Request):
             "domain_domain": domain.domain,
             "domain_cost": domain.cost,
             "domain_wallet_inkey": wallet.inkey,
+            "root_url": f"{url.scheme}://{url.netloc}"
         },
     )

From d6f3c2f9c44d620c67b69885206cc5eeea1dfda5 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Tue, 30 Nov 2021 14:46:48 +0000
Subject: [PATCH 10/46] more debub

---
 lnbits/extensions/lnaddress/lnurl.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 22e54b8a2..f233b2911 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -55,7 +55,7 @@ async def lnurl_callback(address_id, amount: int = Query(...)):
         if address.wallet_endpoint.endswith("/")
         else address.wallet_endpoint
     )
-    print("BASE", base_url )
+    print("BASE", base_url, address )
     async with httpx.AsyncClient() as client:
         try:
             call = await client.post(

From ccd3a12ed34fc41a1453fdd47331991520dfcf40 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Tue, 30 Nov 2021 14:58:03 +0000
Subject: [PATCH 11/46] fix lnbits root url

---
 lnbits/extensions/lnaddress/lnurl.py                |  3 +--
 .../lnaddress/templates/lnaddress/display.html      |  3 +--
 .../lnaddress/templates/lnaddress/index.html        | 13 -------------
 3 files changed, 2 insertions(+), 17 deletions(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index f233b2911..30b8fc5a4 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -15,7 +15,6 @@ from .crud import get_address, get_address_by_username, get_domain
 
 
 async def lnurl_response(username: str, domain: str, request: Request):
-    print("LNU", username, domain)
     address = await get_address_by_username(username, domain)
 
     if not address:
@@ -55,7 +54,7 @@ async def lnurl_callback(address_id, amount: int = Query(...)):
         if address.wallet_endpoint.endswith("/")
         else address.wallet_endpoint
     )
-    print("BASE", base_url, address )
+
     async with httpx.AsyncClient() as client:
         try:
             call = await client.post(
diff --git a/lnbits/extensions/lnaddress/templates/lnaddress/display.html b/lnbits/extensions/lnaddress/templates/lnaddress/display.html
index f820c81f6..7164752c0 100644
--- a/lnbits/extensions/lnaddress/templates/lnaddress/display.html
+++ b/lnbits/extensions/lnaddress/templates/lnaddress/display.html
@@ -372,8 +372,7 @@
         }
         data.wallet_endpoint = data.wallet_endpoint ?? '{{ root_url }}'
         data.duration = parseInt(data.duration)
-        console.log('data', data)
-
+        
         axios
           .post('/lnaddress/api/v1/address/{{ domain_id }}', data)
           .then(response => {
diff --git a/lnbits/extensions/lnaddress/templates/lnaddress/index.html b/lnbits/extensions/lnaddress/templates/lnaddress/index.html
index 3969d6f56..54836a430 100644
--- a/lnbits/extensions/lnaddress/templates/lnaddress/index.html
+++ b/lnbits/extensions/lnaddress/templates/lnaddress/index.html
@@ -489,19 +489,6 @@
         this.getDomains()
         this.getAddresses()
       }
-      console.log('{{ request.url.path }}')
-      // var self = this
-      //
-      // // axios is available for making requests
-      // axios({
-      //   method: 'GET',
-      //   url: '/example/api/v1/tools',
-      //   headers: {
-      //     'X-example-header': 'not-used'
-      //   }
-      // }).then(function (response) {
-      //   self.tools = response.data
-      // })
     }
   })
 </script>

From e3360514cd4fb02c73497da51139005bbd47cbee Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Tue, 30 Nov 2021 15:12:13 +0000
Subject: [PATCH 12/46] add documentation reference

---
 lnbits/extensions/lnaddress/templates/lnaddress/index.html | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lnbits/extensions/lnaddress/templates/lnaddress/index.html b/lnbits/extensions/lnaddress/templates/lnaddress/index.html
index 54836a430..dffef837a 100644
--- a/lnbits/extensions/lnaddress/templates/lnaddress/index.html
+++ b/lnbits/extensions/lnaddress/templates/lnaddress/index.html
@@ -186,10 +186,14 @@
         <q-input
           filled
           dense
+          bottom-slots
           v-model.trim="domainDialog.data.cf_token"
           type="text"
           label="Cloudflare API token"
         >
+        <template v-slot:hint>
+          Check extension <a href="https://github.com/lnbits/lnbits-legend/tree/master/lnbits/extensions/lnaddress">documentation!</a>
+        </template>
           <q-tooltip class="bg-grey-8" anchor="bottom left" self="top left"
             >Your API key in cloudflare</q-tooltip
           >

From 290268885d6a3d41abad36d0a5c4dfa9ef2a9afd Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Tue, 30 Nov 2021 15:13:06 +0000
Subject: [PATCH 13/46] fix purge

check for missing protocol

fix request url default

more debub

fix lnbits root url

add documentation reference
---
 lnbits/extensions/lnaddress/crud.py              |  2 +-
 .../lnaddress/templates/lnaddress/display.html   |  5 ++---
 .../lnaddress/templates/lnaddress/index.html     | 16 ++++------------
 lnbits/extensions/lnaddress/views.py             |  5 ++++-
 4 files changed, 11 insertions(+), 17 deletions(-)

diff --git a/lnbits/extensions/lnaddress/crud.py b/lnbits/extensions/lnaddress/crud.py
index 4cfff2f9e..3bd636f19 100644
--- a/lnbits/extensions/lnaddress/crud.py
+++ b/lnbits/extensions/lnaddress/crud.py
@@ -176,7 +176,7 @@ async def purge_addresses(domain_id: str):
     now = datetime.now().timestamp()
 
     for row in rows:
-        r = Addresses(**row)._asdict()
+        r = Addresses(**row).dict()
 
         start = datetime.fromtimestamp(r["time"])
         paid = r["paid"]
diff --git a/lnbits/extensions/lnaddress/templates/lnaddress/display.html b/lnbits/extensions/lnaddress/templates/lnaddress/display.html
index 67745fa85..7164752c0 100644
--- a/lnbits/extensions/lnaddress/templates/lnaddress/display.html
+++ b/lnbits/extensions/lnaddress/templates/lnaddress/display.html
@@ -370,10 +370,9 @@
         if (data.wallet_endpoint == '') {
           data.wallet_endpoint = null
         }
-        data.wallet_endpoint = data.wallet_endpoint ?? '{{ request.url_root }}'
+        data.wallet_endpoint = data.wallet_endpoint ?? '{{ root_url }}'
         data.duration = parseInt(data.duration)
-        console.log('data', data)
-
+        
         axios
           .post('/lnaddress/api/v1/address/{{ domain_id }}', data)
           .then(response => {
diff --git a/lnbits/extensions/lnaddress/templates/lnaddress/index.html b/lnbits/extensions/lnaddress/templates/lnaddress/index.html
index ef04b5937..dffef837a 100644
--- a/lnbits/extensions/lnaddress/templates/lnaddress/index.html
+++ b/lnbits/extensions/lnaddress/templates/lnaddress/index.html
@@ -186,10 +186,14 @@
         <q-input
           filled
           dense
+          bottom-slots
           v-model.trim="domainDialog.data.cf_token"
           type="text"
           label="Cloudflare API token"
         >
+        <template v-slot:hint>
+          Check extension <a href="https://github.com/lnbits/lnbits-legend/tree/master/lnbits/extensions/lnaddress">documentation!</a>
+        </template>
           <q-tooltip class="bg-grey-8" anchor="bottom left" self="top left"
             >Your API key in cloudflare</q-tooltip
           >
@@ -489,18 +493,6 @@
         this.getDomains()
         this.getAddresses()
       }
-      // var self = this
-      //
-      // // axios is available for making requests
-      // axios({
-      //   method: 'GET',
-      //   url: '/example/api/v1/tools',
-      //   headers: {
-      //     'X-example-header': 'not-used'
-      //   }
-      // }).then(function (response) {
-      //   self.tools = response.data
-      // })
     }
   })
 </script>
diff --git a/lnbits/extensions/lnaddress/views.py b/lnbits/extensions/lnaddress/views.py
index cec12bf89..ef6d2b766 100644
--- a/lnbits/extensions/lnaddress/views.py
+++ b/lnbits/extensions/lnaddress/views.py
@@ -1,4 +1,5 @@
 from http import HTTPStatus
+from urllib.parse import urlparse
 
 from fastapi import Request
 from fastapi.params import Depends
@@ -34,7 +35,8 @@ async def display(domain_id, request: Request):
     await purge_addresses(domain_id)
 
     wallet = await get_wallet(domain.wallet)
-
+    url = urlparse(str(request.url))
+    
     return lnaddress_renderer().TemplateResponse(
         "lnaddress/display.html",
         {
@@ -43,5 +45,6 @@ async def display(domain_id, request: Request):
             "domain_domain": domain.domain,
             "domain_cost": domain.cost,
             "domain_wallet_inkey": wallet.inkey,
+            "root_url": f"{url.scheme}://{url.netloc}"
         },
     )

From c5d7b7f4113865e487f4a239dd88dd478dd2c4b4 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Tue, 30 Nov 2021 21:19:05 +0000
Subject: [PATCH 14/46] wos debugging

---
 lnbits/extensions/lnaddress/lnurl.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 30b8fc5a4..d14490720 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -34,7 +34,7 @@ async def lnurl_response(username: str, domain: str, request: Request):
         max_sendable=1000000000,
         metadata=await address.lnurlpay_metadata(),
     )
-
+    print("RESP", resp)
     return resp.dict()
 
 

From de2ebf90c79c65976204d2e1923e88a875d47bc2 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Tue, 30 Nov 2021 21:41:38 +0000
Subject: [PATCH 15/46] lnurl debug

---
 lnbits/extensions/lnaddress/lnurl.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index d14490720..6d4bd95bf 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -34,12 +34,13 @@ async def lnurl_response(username: str, domain: str, request: Request):
         max_sendable=1000000000,
         metadata=await address.lnurlpay_metadata(),
     )
-    print("RESP", resp)
+    print("RESP", resp.dict())
     return resp.dict()
 
 
 @lnaddress_ext.get("/lnurl/cb/{address_id}", name="lnaddress.lnurl_callback")
 async def lnurl_callback(address_id, amount: int = Query(...)):
+    print("PING")
     address = await get_address(address_id)
 
     if not address:

From 4ee86958b851a9aada085369d63e965fb2c25487 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 09:44:19 +0000
Subject: [PATCH 16/46] text identifier

---
 lnbits/extensions/lnaddress/models.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lnbits/extensions/lnaddress/models.py b/lnbits/extensions/lnaddress/models.py
index eb0984572..74161026b 100644
--- a/lnbits/extensions/lnaddress/models.py
+++ b/lnbits/extensions/lnaddress/models.py
@@ -51,6 +51,6 @@ class Addresses(BaseModel):
 
     async def lnurlpay_metadata(self) -> LnurlPayMetadata:
         text = f"Payment to {self.username}"
-        metadata = [["text/plain", text]]
+        metadata = [["text/identifier", text]]
 
         return LnurlPayMetadata(json.dumps(metadata))

From a628f125c9b50e7428f56f024dc92d4818cd49da Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 09:46:04 +0000
Subject: [PATCH 17/46] text

---
 lnbits/extensions/lnaddress/models.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lnbits/extensions/lnaddress/models.py b/lnbits/extensions/lnaddress/models.py
index 74161026b..65df395de 100644
--- a/lnbits/extensions/lnaddress/models.py
+++ b/lnbits/extensions/lnaddress/models.py
@@ -50,7 +50,7 @@ class Addresses(BaseModel):
     time: int
 
     async def lnurlpay_metadata(self) -> LnurlPayMetadata:
-        text = f"Payment to {self.username}"
+        text = f"Payment to {self.username}@{self.domain}"
         metadata = [["text/identifier", text]]
 
         return LnurlPayMetadata(json.dumps(metadata))

From 44e0dd4c92073548cb4fe8eb657c823f0476b732 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 09:53:00 +0000
Subject: [PATCH 18/46] try1

---
 lnbits/extensions/lnaddress/models.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lnbits/extensions/lnaddress/models.py b/lnbits/extensions/lnaddress/models.py
index 65df395de..a98d9beab 100644
--- a/lnbits/extensions/lnaddress/models.py
+++ b/lnbits/extensions/lnaddress/models.py
@@ -51,6 +51,6 @@ class Addresses(BaseModel):
 
     async def lnurlpay_metadata(self) -> LnurlPayMetadata:
         text = f"Payment to {self.username}@{self.domain}"
-        metadata = [["text/identifier", text]]
+        metadata = [["text/plain", text], ["text/identifier", "{self.username}@{self.domain}"]]
 
         return LnurlPayMetadata(json.dumps(metadata))

From 4411780f82e750464831f8bb1bbe340b4f44edeb Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 09:56:42 +0000
Subject: [PATCH 19/46] try2

---
 lnbits/extensions/lnaddress/models.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lnbits/extensions/lnaddress/models.py b/lnbits/extensions/lnaddress/models.py
index a98d9beab..bf124c99c 100644
--- a/lnbits/extensions/lnaddress/models.py
+++ b/lnbits/extensions/lnaddress/models.py
@@ -50,7 +50,8 @@ class Addresses(BaseModel):
     time: int
 
     async def lnurlpay_metadata(self) -> LnurlPayMetadata:
-        text = f"Payment to {self.username}@{self.domain}"
-        metadata = [["text/plain", text], ["text/identifier", "{self.username}@{self.domain}"]]
+        text = f"Payment to {self.username}"
+        identifier = f"{self.username}"
+        metadata = [["text/plain", text], ["text/identifier", identifier]]
 
         return LnurlPayMetadata(json.dumps(metadata))

From 52503c2ba9260ce3c59141492a41745d9fbef912 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 10:07:34 +0000
Subject: [PATCH 20/46] debugging

---
 lnbits/extensions/lnaddress/lnurl.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 6d4bd95bf..40d36e177 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -42,13 +42,14 @@ async def lnurl_response(username: str, domain: str, request: Request):
 async def lnurl_callback(address_id, amount: int = Query(...)):
     print("PING")
     address = await get_address(address_id)
-
     if not address:
         return LnurlErrorResponse(reason=f"Address not found").dict()
 
     amount_received = amount
 
     domain = await get_domain(address.domain)
+    print("ADR", address)
+    print("DOM", domain)
 
     base_url = (
         address.wallet_endpoint[:-1]

From d89d80c2458abeaba290921d8ddd9d8dd84fc226 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 10:19:59 +0000
Subject: [PATCH 21/46] more debug

---
 lnbits/extensions/lnaddress/models.py | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/lnbits/extensions/lnaddress/models.py b/lnbits/extensions/lnaddress/models.py
index bf124c99c..c2da2af84 100644
--- a/lnbits/extensions/lnaddress/models.py
+++ b/lnbits/extensions/lnaddress/models.py
@@ -3,7 +3,9 @@ from typing import Optional
 
 from fastapi.params import Query
 from lnurl.types import LnurlPayMetadata
-from pydantic.main import BaseModel  # type: ignore
+from pydantic.main import BaseModel
+
+from lnbits.extensions.lnaddress.crud import get_domain  # type: ignore
 
 
 class CreateDomain(BaseModel):
@@ -50,8 +52,9 @@ class Addresses(BaseModel):
     time: int
 
     async def lnurlpay_metadata(self) -> LnurlPayMetadata:
-        text = f"Payment to {self.username}"
-        identifier = f"{self.username}"
+        domain = await get_domain(self.domain)
+        text = f"Payment to {self.username}@{domain.domain}"
+        identifier = f"{self.username}@{domain.domain}"
         metadata = [["text/plain", text], ["text/identifier", identifier]]
 
         return LnurlPayMetadata(json.dumps(metadata))

From 16b6ae461a39a203004e9c3fb0b46da0da6af8ac Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 10:23:54 +0000
Subject: [PATCH 22/46] ...

---
 lnbits/extensions/lnaddress/lnurl.py  | 2 +-
 lnbits/extensions/lnaddress/models.py | 7 +++----
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 40d36e177..33e90a3ea 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -32,7 +32,7 @@ async def lnurl_response(username: str, domain: str, request: Request):
         callback=request.url_for("lnaddress.lnurl_callback", address_id=address.id),
         min_sendable=1000,
         max_sendable=1000000000,
-        metadata=await address.lnurlpay_metadata(),
+        metadata=await address.lnurlpay_metadata(domain=domain),
     )
     print("RESP", resp.dict())
     return resp.dict()
diff --git a/lnbits/extensions/lnaddress/models.py b/lnbits/extensions/lnaddress/models.py
index c2da2af84..857691ee3 100644
--- a/lnbits/extensions/lnaddress/models.py
+++ b/lnbits/extensions/lnaddress/models.py
@@ -51,10 +51,9 @@ class Addresses(BaseModel):
     paid: bool
     time: int
 
-    async def lnurlpay_metadata(self) -> LnurlPayMetadata:
-        domain = await get_domain(self.domain)
-        text = f"Payment to {self.username}@{domain.domain}"
-        identifier = f"{self.username}@{domain.domain}"
+    async def lnurlpay_metadata(self, domain) -> LnurlPayMetadata:
+        text = f"Payment to {self.username}@{domain}"
+        identifier = f"{self.username}@{domain}"
         metadata = [["text/plain", text], ["text/identifier", identifier]]
 
         return LnurlPayMetadata(json.dumps(metadata))

From 860c0258c2f70201996ae5151a5ef1679de132b9 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 10:25:21 +0000
Subject: [PATCH 23/46] ....

---
 lnbits/extensions/lnaddress/models.py | 2 --
 1 file changed, 2 deletions(-)

diff --git a/lnbits/extensions/lnaddress/models.py b/lnbits/extensions/lnaddress/models.py
index 857691ee3..b4d453bdf 100644
--- a/lnbits/extensions/lnaddress/models.py
+++ b/lnbits/extensions/lnaddress/models.py
@@ -5,8 +5,6 @@ from fastapi.params import Query
 from lnurl.types import LnurlPayMetadata
 from pydantic.main import BaseModel
 
-from lnbits.extensions.lnaddress.crud import get_domain  # type: ignore
-
 
 class CreateDomain(BaseModel):
     wallet: str = Query(...)

From 35eb8cd3137f9ab8ad42f1d01d7896e6cb69420f Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 10:32:37 +0000
Subject: [PATCH 24/46] hard code indentifier

---
 lnbits/extensions/lnaddress/models.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lnbits/extensions/lnaddress/models.py b/lnbits/extensions/lnaddress/models.py
index b4d453bdf..7922b598d 100644
--- a/lnbits/extensions/lnaddress/models.py
+++ b/lnbits/extensions/lnaddress/models.py
@@ -49,9 +49,9 @@ class Addresses(BaseModel):
     paid: bool
     time: int
 
-    async def lnurlpay_metadata(self, domain) -> LnurlPayMetadata:
-        text = f"Payment to {self.username}@{domain}"
-        identifier = f"{self.username}@{domain}"
+    async def lnurlpay_metadata(self) -> LnurlPayMetadata:
+        text = f"Payment to {self.username}"
+        identifier = f"{self.username}@lnto.name"
         metadata = [["text/plain", text], ["text/identifier", identifier]]
 
         return LnurlPayMetadata(json.dumps(metadata))

From f1394f369778570e9ea04103b7e42052d23cf4db Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 10:33:37 +0000
Subject: [PATCH 25/46] .

---
 lnbits/extensions/lnaddress/lnurl.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 33e90a3ea..40d36e177 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -32,7 +32,7 @@ async def lnurl_response(username: str, domain: str, request: Request):
         callback=request.url_for("lnaddress.lnurl_callback", address_id=address.id),
         min_sendable=1000,
         max_sendable=1000000000,
-        metadata=await address.lnurlpay_metadata(domain=domain),
+        metadata=await address.lnurlpay_metadata(),
     )
     print("RESP", resp.dict())
     return resp.dict()

From e21f850ef3125d3e83932afaa9331c91452f01de Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 10:37:40 +0000
Subject: [PATCH 26/46] more hard code

---
 lnbits/extensions/lnaddress/lnurl.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 40d36e177..358ac0aff 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -29,7 +29,8 @@ async def lnurl_response(username: str, domain: str, request: Request):
         return LnurlErrorResponse(reason="Address has expired.").dict()
 
     resp = LnurlPayResponse(
-        callback=request.url_for("lnaddress.lnurl_callback", address_id=address.id),
+        # callback=request.url_for("lnaddress.lnurl_callback", address_id=address.id),
+        callback=f"https://fastbits.lnto.me/lnurl/cb/{address.id}",
         min_sendable=1000,
         max_sendable=1000000000,
         metadata=await address.lnurlpay_metadata(),

From 395613040b963f5629204ffd206fed77f631bc25 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 10:39:12 +0000
Subject: [PATCH 27/46] .

---
 lnbits/extensions/lnaddress/lnurl.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 358ac0aff..d39cd7b43 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -30,7 +30,7 @@ async def lnurl_response(username: str, domain: str, request: Request):
 
     resp = LnurlPayResponse(
         # callback=request.url_for("lnaddress.lnurl_callback", address_id=address.id),
-        callback=f"https://fastbits.lnto.me/lnurl/cb/{address.id}",
+        callback=f"https://fastbits.lnto.me/lnaddress/lnurl/cb/{address.id}",
         min_sendable=1000,
         max_sendable=1000000000,
         metadata=await address.lnurlpay_metadata(),

From 177cdecabfbb93f6ea33519a96da786faeac7339 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 10:44:54 +0000
Subject: [PATCH 28/46] trying

---
 lnbits/extensions/lnaddress/lnurl.py  | 3 +--
 lnbits/extensions/lnaddress/models.py | 4 ++--
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index d39cd7b43..40d36e177 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -29,8 +29,7 @@ async def lnurl_response(username: str, domain: str, request: Request):
         return LnurlErrorResponse(reason="Address has expired.").dict()
 
     resp = LnurlPayResponse(
-        # callback=request.url_for("lnaddress.lnurl_callback", address_id=address.id),
-        callback=f"https://fastbits.lnto.me/lnaddress/lnurl/cb/{address.id}",
+        callback=request.url_for("lnaddress.lnurl_callback", address_id=address.id),
         min_sendable=1000,
         max_sendable=1000000000,
         metadata=await address.lnurlpay_metadata(),
diff --git a/lnbits/extensions/lnaddress/models.py b/lnbits/extensions/lnaddress/models.py
index 7922b598d..268831b38 100644
--- a/lnbits/extensions/lnaddress/models.py
+++ b/lnbits/extensions/lnaddress/models.py
@@ -51,7 +51,7 @@ class Addresses(BaseModel):
 
     async def lnurlpay_metadata(self) -> LnurlPayMetadata:
         text = f"Payment to {self.username}"
-        identifier = f"{self.username}@lnto.name"
+        identifier = f"{self.username}"
         metadata = [["text/plain", text], ["text/identifier", identifier]]
 
-        return LnurlPayMetadata(json.dumps(metadata))
+        return LnurlPayMetadata(metadata)

From 3e6a5b67201ead810f28513d71e843d9b94f04fd Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 10:47:39 +0000
Subject: [PATCH 29/46] revert

---
 lnbits/extensions/lnaddress/models.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lnbits/extensions/lnaddress/models.py b/lnbits/extensions/lnaddress/models.py
index 268831b38..f850271b0 100644
--- a/lnbits/extensions/lnaddress/models.py
+++ b/lnbits/extensions/lnaddress/models.py
@@ -54,4 +54,4 @@ class Addresses(BaseModel):
         identifier = f"{self.username}"
         metadata = [["text/plain", text], ["text/identifier", identifier]]
 
-        return LnurlPayMetadata(metadata)
+        return LnurlPayMetadata(json.dumps(metadata))

From a7ceae86b4ec7edbb56b1a5143d3b1c49e19643c Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 10:58:04 +0000
Subject: [PATCH 30/46] remove identifier

---
 lnbits/extensions/lnaddress/models.py | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/lnbits/extensions/lnaddress/models.py b/lnbits/extensions/lnaddress/models.py
index f850271b0..fe92473a9 100644
--- a/lnbits/extensions/lnaddress/models.py
+++ b/lnbits/extensions/lnaddress/models.py
@@ -51,7 +51,6 @@ class Addresses(BaseModel):
 
     async def lnurlpay_metadata(self) -> LnurlPayMetadata:
         text = f"Payment to {self.username}"
-        identifier = f"{self.username}"
-        metadata = [["text/plain", text], ["text/identifier", identifier]]
+        metadata = [["text/plain", text]]
 
         return LnurlPayMetadata(json.dumps(metadata))

From e6ec5603176880ce6182c662b139d17e5a423d98 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 11:06:56 +0000
Subject: [PATCH 31/46] adding identifier...again

---
 lnbits/extensions/lnaddress/lnurl.py  | 4 ++--
 lnbits/extensions/lnaddress/models.py | 5 +++--
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 40d36e177..66ddcba08 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -32,7 +32,7 @@ async def lnurl_response(username: str, domain: str, request: Request):
         callback=request.url_for("lnaddress.lnurl_callback", address_id=address.id),
         min_sendable=1000,
         max_sendable=1000000000,
-        metadata=await address.lnurlpay_metadata(),
+        metadata=await address.lnurlpay_metadata(domain=domain),
     )
     print("RESP", resp.dict())
     return resp.dict()
@@ -69,7 +69,7 @@ async def lnurl_callback(address_id, amount: int = Query(...)):
                     "out": False,
                     "amount": int(amount_received / 1000),
                     "description_hash": hashlib.sha256(
-                        (await address.lnurlpay_metadata()).encode("utf-8")
+                        (await address.lnurlpay_metadata(domain=domain.domain)).encode("utf-8")
                     ).hexdigest(),
                     "extra": {"tag": f"Payment to {address.username}@{domain.domain}"},
                 },
diff --git a/lnbits/extensions/lnaddress/models.py b/lnbits/extensions/lnaddress/models.py
index fe92473a9..330f04fc1 100644
--- a/lnbits/extensions/lnaddress/models.py
+++ b/lnbits/extensions/lnaddress/models.py
@@ -49,8 +49,9 @@ class Addresses(BaseModel):
     paid: bool
     time: int
 
-    async def lnurlpay_metadata(self) -> LnurlPayMetadata:
+    async def lnurlpay_metadata(self, domain) -> LnurlPayMetadata:
         text = f"Payment to {self.username}"
-        metadata = [["text/plain", text]]
+        identifier = f"{self.username}@{domain}"
+        metadata = [["text/plain", text], ["text/identifier"], identifier]
 
         return LnurlPayMetadata(json.dumps(metadata))

From 346e50cbb512f8de6fa9abb3ff4849f75e38cfd0 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 11:10:19 +0000
Subject: [PATCH 32/46] .

---
 lnbits/extensions/lnaddress/models.py | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lnbits/extensions/lnaddress/models.py b/lnbits/extensions/lnaddress/models.py
index 330f04fc1..1c73f30d8 100644
--- a/lnbits/extensions/lnaddress/models.py
+++ b/lnbits/extensions/lnaddress/models.py
@@ -53,5 +53,6 @@ class Addresses(BaseModel):
         text = f"Payment to {self.username}"
         identifier = f"{self.username}@{domain}"
         metadata = [["text/plain", text], ["text/identifier"], identifier]
+        print(json.dumps(metadata))
 
         return LnurlPayMetadata(json.dumps(metadata))

From 205c53d8e9d27b7fb161df0220ab02aee26e284b Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 11:11:51 +0000
Subject: [PATCH 33/46] stupid

---
 lnbits/extensions/lnaddress/models.py | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/lnbits/extensions/lnaddress/models.py b/lnbits/extensions/lnaddress/models.py
index 1c73f30d8..6f21278ef 100644
--- a/lnbits/extensions/lnaddress/models.py
+++ b/lnbits/extensions/lnaddress/models.py
@@ -52,7 +52,6 @@ class Addresses(BaseModel):
     async def lnurlpay_metadata(self, domain) -> LnurlPayMetadata:
         text = f"Payment to {self.username}"
         identifier = f"{self.username}@{domain}"
-        metadata = [["text/plain", text], ["text/identifier"], identifier]
-        print(json.dumps(metadata))
-
+        metadata = [["text/plain", text], ["text/identifier", identifier]]
+        
         return LnurlPayMetadata(json.dumps(metadata))

From 2a9a0bd7aa057794f475bbbe81cdb5f1e80ee0d6 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 11:21:54 +0000
Subject: [PATCH 34/46] return text instead of json

---
 lnbits/extensions/lnaddress/lnurl.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 66ddcba08..77eee507a 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -35,7 +35,7 @@ async def lnurl_response(username: str, domain: str, request: Request):
         metadata=await address.lnurlpay_metadata(domain=domain),
     )
     print("RESP", resp.dict())
-    return resp.dict()
+    return resp
 
 
 @lnaddress_ext.get("/lnurl/cb/{address_id}", name="lnaddress.lnurl_callback")
@@ -82,4 +82,4 @@ async def lnurl_callback(address_id, amount: int = Query(...)):
 
     resp = LnurlPayActionResponse(pr=r["payment_request"], routes=[])
 
-    return resp.dict()
+    return resp

From 8cdbd02a77d68dc5f51645972adf15b25176dfc5 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 11:27:43 +0000
Subject: [PATCH 35/46] htmlresponse

---
 lnbits/core/views/public_api.py      | 3 ++-
 lnbits/extensions/lnaddress/lnurl.py | 7 ++++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/lnbits/core/views/public_api.py b/lnbits/core/views/public_api.py
index 0f5c74e35..f8b48eccc 100644
--- a/lnbits/core/views/public_api.py
+++ b/lnbits/core/views/public_api.py
@@ -5,6 +5,7 @@ from urllib.parse import urlparse
 
 from fastapi import HTTPException
 from starlette.requests import Request
+from starlette.responses import HTMLResponse
 
 from lnbits import bolt11
 
@@ -13,7 +14,7 @@ from ..crud import get_standalone_payment
 from ..tasks import api_invoice_listeners
 
 
-@core_app.get("/.well-known/lnurlp/{username}")
+@core_app.get("/.well-known/lnurlp/{username}", response_class=HTMLResponse)
 async def lnaddress(username: str, request: Request):
     from lnbits.extensions.lnaddress.lnurl import lnurl_response
 
diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 77eee507a..ba3a53ea5 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -9,6 +9,7 @@ from lnurl import (  # type: ignore
     LnurlPayResponse,
 )
 from starlette.requests import Request
+from starlette.responses import HTMLResponse
 
 from . import lnaddress_ext
 from .crud import get_address, get_address_by_username, get_domain
@@ -35,10 +36,10 @@ async def lnurl_response(username: str, domain: str, request: Request):
         metadata=await address.lnurlpay_metadata(domain=domain),
     )
     print("RESP", resp.dict())
-    return resp
+    return resp.dict()
 
 
-@lnaddress_ext.get("/lnurl/cb/{address_id}", name="lnaddress.lnurl_callback")
+@lnaddress_ext.get("/lnurl/cb/{address_id}", name="lnaddress.lnurl_callback", response_class=HTMLResponse)
 async def lnurl_callback(address_id, amount: int = Query(...)):
     print("PING")
     address = await get_address(address_id)
@@ -82,4 +83,4 @@ async def lnurl_callback(address_id, amount: int = Query(...)):
 
     resp = LnurlPayActionResponse(pr=r["payment_request"], routes=[])
 
-    return resp
+    return resp.dict()

From c24d28bff45e9ce2f3f9defcb5bbec675d1a12de Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 11:31:47 +0000
Subject: [PATCH 36/46] on more spin

---
 lnbits/extensions/lnaddress/lnurl.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index ba3a53ea5..3f4b99330 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -1,4 +1,5 @@
 import hashlib
+import json
 from datetime import datetime, timedelta
 
 import httpx
@@ -36,7 +37,7 @@ async def lnurl_response(username: str, domain: str, request: Request):
         metadata=await address.lnurlpay_metadata(domain=domain),
     )
     print("RESP", resp.dict())
-    return resp.dict()
+    return json.dumps(resp)
 
 
 @lnaddress_ext.get("/lnurl/cb/{address_id}", name="lnaddress.lnurl_callback", response_class=HTMLResponse)
@@ -83,4 +84,4 @@ async def lnurl_callback(address_id, amount: int = Query(...)):
 
     resp = LnurlPayActionResponse(pr=r["payment_request"], routes=[])
 
-    return resp.dict()
+    return json.dumps(resp)

From b6498389bc93a596d2623ab99535c0200583e28a Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 11:33:38 +0000
Subject: [PATCH 37/46] .

---
 lnbits/extensions/lnaddress/lnurl.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 3f4b99330..8ddc59f75 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -37,7 +37,7 @@ async def lnurl_response(username: str, domain: str, request: Request):
         metadata=await address.lnurlpay_metadata(domain=domain),
     )
     print("RESP", resp.dict())
-    return json.dumps(resp)
+    return json.dumps(resp.dict())
 
 
 @lnaddress_ext.get("/lnurl/cb/{address_id}", name="lnaddress.lnurl_callback", response_class=HTMLResponse)
@@ -84,4 +84,4 @@ async def lnurl_callback(address_id, amount: int = Query(...)):
 
     resp = LnurlPayActionResponse(pr=r["payment_request"], routes=[])
 
-    return json.dumps(resp)
+    return json.dumps(resp.dict())

From 55cb78710b90c0768d5853012581024d8346e278 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 11:40:03 +0000
Subject: [PATCH 38/46] added tag

---
 lnbits/extensions/lnaddress/lnurl.py | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 8ddc59f75..995da0b43 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -31,6 +31,7 @@ async def lnurl_response(username: str, domain: str, request: Request):
         return LnurlErrorResponse(reason="Address has expired.").dict()
 
     resp = LnurlPayResponse(
+        tag="payRequest",
         callback=request.url_for("lnaddress.lnurl_callback", address_id=address.id),
         min_sendable=1000,
         max_sendable=1000000000,

From 3fd519e9dc2af68d3d829f4d5db656450647f9d1 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 11:49:04 +0000
Subject: [PATCH 39/46] revert to JSON return

---
 lnbits/extensions/lnaddress/lnurl.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 995da0b43..527898fd8 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -38,7 +38,7 @@ async def lnurl_response(username: str, domain: str, request: Request):
         metadata=await address.lnurlpay_metadata(domain=domain),
     )
     print("RESP", resp.dict())
-    return json.dumps(resp.dict())
+    return resp.dict()
 
 
 @lnaddress_ext.get("/lnurl/cb/{address_id}", name="lnaddress.lnurl_callback", response_class=HTMLResponse)
@@ -85,4 +85,4 @@ async def lnurl_callback(address_id, amount: int = Query(...)):
 
     resp = LnurlPayActionResponse(pr=r["payment_request"], routes=[])
 
-    return json.dumps(resp.dict())
+    return resp.dict()

From 9cc3aaa7a2bff8c76137b364d3628da810e17e8c Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 11:50:45 +0000
Subject: [PATCH 40/46] .

---
 lnbits/core/views/public_api.py      | 2 +-
 lnbits/extensions/lnaddress/lnurl.py | 3 +--
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/lnbits/core/views/public_api.py b/lnbits/core/views/public_api.py
index f8b48eccc..5f8be4e2f 100644
--- a/lnbits/core/views/public_api.py
+++ b/lnbits/core/views/public_api.py
@@ -14,7 +14,7 @@ from ..crud import get_standalone_payment
 from ..tasks import api_invoice_listeners
 
 
-@core_app.get("/.well-known/lnurlp/{username}", response_class=HTMLResponse)
+@core_app.get("/.well-known/lnurlp/{username}")
 async def lnaddress(username: str, request: Request):
     from lnbits.extensions.lnaddress.lnurl import lnurl_response
 
diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 527898fd8..22f4f33d6 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -31,7 +31,6 @@ async def lnurl_response(username: str, domain: str, request: Request):
         return LnurlErrorResponse(reason="Address has expired.").dict()
 
     resp = LnurlPayResponse(
-        tag="payRequest",
         callback=request.url_for("lnaddress.lnurl_callback", address_id=address.id),
         min_sendable=1000,
         max_sendable=1000000000,
@@ -41,7 +40,7 @@ async def lnurl_response(username: str, domain: str, request: Request):
     return resp.dict()
 
 
-@lnaddress_ext.get("/lnurl/cb/{address_id}", name="lnaddress.lnurl_callback", response_class=HTMLResponse)
+@lnaddress_ext.get("/lnurl/cb/{address_id}", name="lnaddress.lnurl_callback")
 async def lnurl_callback(address_id, amount: int = Query(...)):
     print("PING")
     address = await get_address(address_id)

From 7b8c9cfdc5d581aa50b511f2fd64d78db72ac12d Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 12:19:55 +0000
Subject: [PATCH 41/46] ditch lnurl lib

---
 lnbits/extensions/lnaddress/lnurl.py | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 22f4f33d6..855bfdd2f 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -30,14 +30,16 @@ async def lnurl_response(username: str, domain: str, request: Request):
     if now > expiration:
         return LnurlErrorResponse(reason="Address has expired.").dict()
 
-    resp = LnurlPayResponse(
-        callback=request.url_for("lnaddress.lnurl_callback", address_id=address.id),
-        min_sendable=1000,
-        max_sendable=1000000000,
-        metadata=await address.lnurlpay_metadata(domain=domain),
-    )
-    print("RESP", resp.dict())
-    return resp.dict()
+    resp = {
+        "tag": "payRequest",
+        "callback": request.url_for("lnaddress.lnurl_callback", address_id=address.id),
+        "metadata": await address.lnurlpay_metadata(domain=domain),
+        "minSendable": 1000,
+        "maxSendable": 1000000000,
+    }
+
+    print("RESP", resp)
+    return json.dumps(resp)
 
 
 @lnaddress_ext.get("/lnurl/cb/{address_id}", name="lnaddress.lnurl_callback")
@@ -82,6 +84,7 @@ async def lnurl_callback(address_id, amount: int = Query(...)):
         except AssertionError as e:
             return LnurlErrorResponse(reason="ERROR")
 
-    resp = LnurlPayActionResponse(pr=r["payment_request"], routes=[])
+    # resp = LnurlPayActionResponse(pr=r["payment_request"], routes=[])
+    resp = {"pr": r["payment_request"], "routes": []}
 
-    return resp.dict()
+    return json.dumps(resp)

From 35f24b828d4f8639c474806ef6c427a4cd129c92 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 12:25:51 +0000
Subject: [PATCH 42/46] .

---
 lnbits/extensions/lnaddress/lnurl.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 855bfdd2f..0e4534354 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -31,7 +31,6 @@ async def lnurl_response(username: str, domain: str, request: Request):
         return LnurlErrorResponse(reason="Address has expired.").dict()
 
     resp = {
-        "tag": "payRequest",
         "callback": request.url_for("lnaddress.lnurl_callback", address_id=address.id),
         "metadata": await address.lnurlpay_metadata(domain=domain),
         "minSendable": 1000,

From 4790bf21b2ed51dedfd0ab91b640395ea4471693 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 12:27:47 +0000
Subject: [PATCH 43/46] ..

---
 lnbits/extensions/lnaddress/lnurl.py | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 0e4534354..855bfdd2f 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -31,6 +31,7 @@ async def lnurl_response(username: str, domain: str, request: Request):
         return LnurlErrorResponse(reason="Address has expired.").dict()
 
     resp = {
+        "tag": "payRequest",
         "callback": request.url_for("lnaddress.lnurl_callback", address_id=address.id),
         "metadata": await address.lnurlpay_metadata(domain=domain),
         "minSendable": 1000,

From 2302937fc9a9fc7cc7ad572b10c79df5c1a06882 Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 12:28:42 +0000
Subject: [PATCH 44/46] ..

---
 lnbits/extensions/lnaddress/lnurl.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 855bfdd2f..1277c07ea 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -39,7 +39,7 @@ async def lnurl_response(username: str, domain: str, request: Request):
     }
 
     print("RESP", resp)
-    return json.dumps(resp)
+    return resp
 
 
 @lnaddress_ext.get("/lnurl/cb/{address_id}", name="lnaddress.lnurl_callback")
@@ -87,4 +87,4 @@ async def lnurl_callback(address_id, amount: int = Query(...)):
     # resp = LnurlPayActionResponse(pr=r["payment_request"], routes=[])
     resp = {"pr": r["payment_request"], "routes": []}
 
-    return json.dumps(resp)
+    return resp

From d1a9960acb5eecfecb2431cabac89eea040bd56c Mon Sep 17 00:00:00 2001
From: Tiago vasconcelos <talvasconcelos@gmail.com>
Date: Wed, 1 Dec 2021 19:41:17 +0000
Subject: [PATCH 45/46] clean prints

---
 lnbits/extensions/lnaddress/lnurl.py | 4 +---
 lnbits/extensions/lnaddress/tasks.py | 4 ++--
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 1277c07ea..471403153 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -52,9 +52,7 @@ async def lnurl_callback(address_id, amount: int = Query(...)):
     amount_received = amount
 
     domain = await get_domain(address.domain)
-    print("ADR", address)
-    print("DOM", domain)
-
+    
     base_url = (
         address.wallet_endpoint[:-1]
         if address.wallet_endpoint.endswith("/")
diff --git a/lnbits/extensions/lnaddress/tasks.py b/lnbits/extensions/lnaddress/tasks.py
index f962f4abb..9702c70b6 100644
--- a/lnbits/extensions/lnaddress/tasks.py
+++ b/lnbits/extensions/lnaddress/tasks.py
@@ -47,7 +47,7 @@ async def on_invoice_paid(payment: Payment) -> None:
 
         await payment.set_pending(False)
         await set_address_paid(payment_hash=payment.payment_hash)
-        await call_webhook_on_paid(payment.payment_hash)
+        await call_webhook_on_paid(payment_hash=payment.payment_hash)
 
     elif "renew lnaddress" == payment.extra.get("tag"):
 
@@ -55,7 +55,7 @@ async def on_invoice_paid(payment: Payment) -> None:
         await set_address_renewed(
             address_id=payment.extra["id"], duration=payment.extra["duration"]
         )
-        await call_webhook_on_paid(payment.payment_hash)
+        await call_webhook_on_paid(payment_hash=payment.payment_hash)
 
     else:
         return

From 69a4583203a30df27f343d2def9cab4acf2d6330 Mon Sep 17 00:00:00 2001
From: benarc <ben@arc.wales>
Date: Wed, 1 Dec 2021 21:55:04 +0000
Subject: [PATCH 46/46] wos debugging

lnurl debug

text identifier

text

try1

try2

debugging

more debug

...

....

hard code indentifier

.

more hard code

.

trying

revert

remove identifier

adding identifier...again

.

stupid

return text instead of json

htmlresponse

on more spin

.

added tag

revert to JSON return

.

ditch lnurl lib

.

..

..

clean prints
---
 lnbits/core/views/public_api.py       |  1 +
 lnbits/extensions/lnaddress/lnurl.py  | 29 ++++++++++++++++-----------
 lnbits/extensions/lnaddress/models.py |  9 +++++----
 lnbits/extensions/lnaddress/tasks.py  |  4 ++--
 4 files changed, 25 insertions(+), 18 deletions(-)

diff --git a/lnbits/core/views/public_api.py b/lnbits/core/views/public_api.py
index 0f5c74e35..5f8be4e2f 100644
--- a/lnbits/core/views/public_api.py
+++ b/lnbits/core/views/public_api.py
@@ -5,6 +5,7 @@ from urllib.parse import urlparse
 
 from fastapi import HTTPException
 from starlette.requests import Request
+from starlette.responses import HTMLResponse
 
 from lnbits import bolt11
 
diff --git a/lnbits/extensions/lnaddress/lnurl.py b/lnbits/extensions/lnaddress/lnurl.py
index 30b8fc5a4..471403153 100644
--- a/lnbits/extensions/lnaddress/lnurl.py
+++ b/lnbits/extensions/lnaddress/lnurl.py
@@ -1,4 +1,5 @@
 import hashlib
+import json
 from datetime import datetime, timedelta
 
 import httpx
@@ -9,6 +10,7 @@ from lnurl import (  # type: ignore
     LnurlPayResponse,
 )
 from starlette.requests import Request
+from starlette.responses import HTMLResponse
 
 from . import lnaddress_ext
 from .crud import get_address, get_address_by_username, get_domain
@@ -28,27 +30,29 @@ async def lnurl_response(username: str, domain: str, request: Request):
     if now > expiration:
         return LnurlErrorResponse(reason="Address has expired.").dict()
 
-    resp = LnurlPayResponse(
-        callback=request.url_for("lnaddress.lnurl_callback", address_id=address.id),
-        min_sendable=1000,
-        max_sendable=1000000000,
-        metadata=await address.lnurlpay_metadata(),
-    )
+    resp = {
+        "tag": "payRequest",
+        "callback": request.url_for("lnaddress.lnurl_callback", address_id=address.id),
+        "metadata": await address.lnurlpay_metadata(domain=domain),
+        "minSendable": 1000,
+        "maxSendable": 1000000000,
+    }
 
-    return resp.dict()
+    print("RESP", resp)
+    return resp
 
 
 @lnaddress_ext.get("/lnurl/cb/{address_id}", name="lnaddress.lnurl_callback")
 async def lnurl_callback(address_id, amount: int = Query(...)):
+    print("PING")
     address = await get_address(address_id)
-
     if not address:
         return LnurlErrorResponse(reason=f"Address not found").dict()
 
     amount_received = amount
 
     domain = await get_domain(address.domain)
-
+    
     base_url = (
         address.wallet_endpoint[:-1]
         if address.wallet_endpoint.endswith("/")
@@ -67,7 +71,7 @@ async def lnurl_callback(address_id, amount: int = Query(...)):
                     "out": False,
                     "amount": int(amount_received / 1000),
                     "description_hash": hashlib.sha256(
-                        (await address.lnurlpay_metadata()).encode("utf-8")
+                        (await address.lnurlpay_metadata(domain=domain.domain)).encode("utf-8")
                     ).hexdigest(),
                     "extra": {"tag": f"Payment to {address.username}@{domain.domain}"},
                 },
@@ -78,6 +82,7 @@ async def lnurl_callback(address_id, amount: int = Query(...)):
         except AssertionError as e:
             return LnurlErrorResponse(reason="ERROR")
 
-    resp = LnurlPayActionResponse(pr=r["payment_request"], routes=[])
+    # resp = LnurlPayActionResponse(pr=r["payment_request"], routes=[])
+    resp = {"pr": r["payment_request"], "routes": []}
 
-    return resp.dict()
+    return resp
diff --git a/lnbits/extensions/lnaddress/models.py b/lnbits/extensions/lnaddress/models.py
index eb0984572..6f21278ef 100644
--- a/lnbits/extensions/lnaddress/models.py
+++ b/lnbits/extensions/lnaddress/models.py
@@ -3,7 +3,7 @@ from typing import Optional
 
 from fastapi.params import Query
 from lnurl.types import LnurlPayMetadata
-from pydantic.main import BaseModel  # type: ignore
+from pydantic.main import BaseModel
 
 
 class CreateDomain(BaseModel):
@@ -49,8 +49,9 @@ class Addresses(BaseModel):
     paid: bool
     time: int
 
-    async def lnurlpay_metadata(self) -> LnurlPayMetadata:
+    async def lnurlpay_metadata(self, domain) -> LnurlPayMetadata:
         text = f"Payment to {self.username}"
-        metadata = [["text/plain", text]]
-
+        identifier = f"{self.username}@{domain}"
+        metadata = [["text/plain", text], ["text/identifier", identifier]]
+        
         return LnurlPayMetadata(json.dumps(metadata))
diff --git a/lnbits/extensions/lnaddress/tasks.py b/lnbits/extensions/lnaddress/tasks.py
index f962f4abb..9702c70b6 100644
--- a/lnbits/extensions/lnaddress/tasks.py
+++ b/lnbits/extensions/lnaddress/tasks.py
@@ -47,7 +47,7 @@ async def on_invoice_paid(payment: Payment) -> None:
 
         await payment.set_pending(False)
         await set_address_paid(payment_hash=payment.payment_hash)
-        await call_webhook_on_paid(payment.payment_hash)
+        await call_webhook_on_paid(payment_hash=payment.payment_hash)
 
     elif "renew lnaddress" == payment.extra.get("tag"):
 
@@ -55,7 +55,7 @@ async def on_invoice_paid(payment: Payment) -> None:
         await set_address_renewed(
             address_id=payment.extra["id"], duration=payment.extra["duration"]
         )
-        await call_webhook_on_paid(payment.payment_hash)
+        await call_webhook_on_paid(payment_hash=payment.payment_hash)
 
     else:
         return