diff --git a/integration/002_saas_invoice.jmx b/integration/002_saas_invoice.jmx
new file mode 100644
index 00000000..1a244b50
--- /dev/null
+++ b/integration/002_saas_invoice.jmx
@@ -0,0 +1,614 @@
+
+
+
+
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+ host
+ ${__property(host,,grumpyshads3.lnbits.com)}
+ =
+
+
+ scheme
+ ${__property(scheme,,https)}
+ =
+
+
+ port
+ ${__property(port,,)}
+ =
+
+
+ paymentCountPerLnurlp
+ 3
+ =
+
+
+ configPath
+ ${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}
+ =
+
+
+ lnurlLinkId
+ KJPijT
+ =
+
+
+ demoApiKey
+ 96fd9f927311455c902c790c343143bb
+ =
+
+
+ saasApiKey
+ 9e536d5f16274d82a56d2f4a19f31958
+ =
+
+
+
+
+
+
+
+
+ ${host}
+ ${port}
+ ${scheme}
+
+
+ 6
+
+
+
+
+
+ 20
+ 100
+ false
+ continue
+
+ false
+ 1
+
+ false
+
+
+
+
+
+
+ false
+ false
+
+
+
+ true
+ ${paymentCountPerLnurlp}
+
+
+
+ 1
+ ${paymentCountPerLnurlp}
+ 1
+ lnurlpPaymentCounter
+
+ true
+
+
+
+ true
+
+
+
+ false
+ {
+ "out": false,
+ "amount": 10,
+ "memo": "pay saas",
+ "unit": "sat",
+ "lnurl_withdraw": null,
+ "fiat_provider": "",
+ "payment_hash": null
+}
+ =
+
+
+
+ ${host}
+
+ https
+ utf-8
+ /api/v1/payments
+ POST
+ true
+ false
+ true
+ false
+ true
+
+ HttpClient4
+
+
+
+
+
+
+
+ Accept
+ application/json, text/plain, */*
+
+
+ X-Api-Key
+ ${saasApiKey}
+
+
+ Content-Type
+ application/json;charset=utf-8
+
+
+
+
+
+
+ 201
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+ bolt11
+ bolt11
+ 0
+ no-bolt11
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "out": true,
+ "bolt11": "${bolt11}"
+}
+ =
+
+
+
+ demo.lnbits.com
+
+ https
+ utf-8
+ /api/v1/payments
+ POST
+ true
+ false
+ true
+ false
+ true
+
+ HttpClient4
+
+
+
+
+
+
+
+ Accept
+ application/json, text/plain, */*
+
+
+ X-Api-Key
+ ${demoApiKey}
+
+
+ Content-Type
+ application/json;charset=utf-8
+
+
+
+
+
+
+ 201
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+ status
+ "success"
+ true
+ false
+ false
+ false
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "out": false,
+ "amount": 20,
+ "memo": "pay saas",
+ "unit": "sat",
+ "lnurl_withdraw": null,
+ "fiat_provider": "",
+ "payment_hash": null
+}
+ =
+
+
+
+ demo.lnbits.com
+
+ https
+ utf-8
+ /api/v1/payments
+ POST
+ true
+ false
+ true
+ false
+ true
+
+ HttpClient4
+
+
+
+
+
+
+
+ Accept
+ application/json, text/plain, */*
+
+
+ X-Api-Key
+ ${demoApiKey}
+
+
+ Content-Type
+ application/json;charset=utf-8
+
+
+
+
+
+
+ 201
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+ bolt11
+ bolt11
+ 0
+ no-bolt11
+
+
+
+
+ true
+
+
+
+ false
+ {
+ "out": true,
+ "bolt11": "${bolt11}"
+}
+ =
+
+
+
+ ${host}
+
+ https
+ utf-8
+ /api/v1/payments
+ POST
+ true
+ false
+ true
+ false
+ true
+
+ HttpClient4
+
+
+
+
+
+
+
+ Accept
+ application/json, text/plain, */*
+
+
+ X-Api-Key
+ ${saasApiKey}
+
+
+ Content-Type
+ application/json;charset=utf-8
+
+
+
+
+
+
+ 201
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+ status
+ "success"
+ true
+ false
+ false
+ false
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+ 100
+ true
+ (wallet){1}
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
diff --git a/integration/002_saas_lnurl.jmx b/integration/002_saas_lnurl.jmx
new file mode 100644
index 00000000..12340f27
--- /dev/null
+++ b/integration/002_saas_lnurl.jmx
@@ -0,0 +1,772 @@
+
+
+
+
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+ host
+ ${__property(host,,guiltyeland1.lnbits.com)}
+ =
+
+
+ scheme
+ ${__property(scheme,,https)}
+ =
+
+
+ port
+ ${__property(port,,)}
+ =
+
+
+ paymentCountPerLnurlp
+ 5
+ =
+
+
+ configPath
+ ${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}
+ =
+
+
+ lnurlLinkId
+ KJPijT
+ =
+
+
+ demoApiKey
+ 96fd9f927311455c902c790c343143bb
+ =
+
+
+ saasApiKey
+ 12084246eef14de2ac5b216ec49759ad
+ =
+
+
+
+
+
+
+
+
+ ${host}
+ ${port}
+ ${scheme}
+
+
+ 6
+
+
+
+
+
+ 1
+ 1
+ false
+ continue
+
+ false
+ 1
+
+ false
+
+
+
+
+
+
+ false
+ false
+
+
+
+ true
+ ${paymentCountPerLnurlp}
+
+
+
+ 1
+ ${paymentCountPerLnurlp}
+ 1
+ lnurlpPaymentCounter
+
+ true
+
+
+
+ true
+ false
+
+
+
+ true
+
+
+
+ false
+ {
+ "res": {
+ "tag": "payRequest",
+ "callback": "${scheme}://${host}/lnurlp/api/v1/lnurl/cb/${lnurlLinkId}",
+ "minSendable": 10000,
+ "maxSendable": 100000,
+ "metadata": "[[\"text/plain\", \"test many payments\"]]"
+ },
+ "lnurl": "LNURL1DP68GURN8GHJ7EM4D9K8G7T9D3SKUEP39EKXUCNFW3EJUCM0D5HKCMN4WFK8QTENDPCKVUEHX9JDQL",
+ "unit": "sat",
+ "amount": 10000,
+ "comment": "",
+ "internalMemo": null
+}
+ =
+
+
+
+ demo.lnbits.com
+
+ https
+ utf-8
+ /api/v1/payments/lnurl
+ POST
+ true
+ false
+ true
+ false
+ true
+
+ HttpClient4
+
+
+
+
+
+
+
+ Accept
+ application/json, text/plain, */*
+
+
+ X-Api-Key
+ ${demoApiKey}
+
+
+ Content-Type
+ application/json;charset=utf-8
+
+
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+ extra.success_action
+
+ false
+ false
+ false
+ false
+
+
+
+ paymenHash
+ payment_hash
+ 0
+ no-paymenthash
+
+
+
+
+
+ true
+ false
+
+
+
+ 5000
+ for the webhook to be called
+
+
+
+
+ true
+ false
+
+
+
+ 20000
+ for the webhook to be called
+
+
+
+
+
+
+ ${host}
+
+ https
+ UTF-8
+ /api/v1/payments/${paymenHash}
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ X-Api-Key
+ ${saasApiKey}
+
+
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+ $.details.extra.wh_success
+ true
+ true
+ false
+ false
+ false
+
+
+
+ $.details.extra.wh_message
+ OK
+ true
+ false
+ false
+ false
+
+
+
+ javascript
+
+ ${configPath}/scripts/lnurl_check_webhook_response.js
+ true
+
+
+
+
+
+
+ true
+ false
+
+
+
+ true
+
+
+
+ false
+ {
+ "res": {
+ "tag": "payRequest",
+ "callback": "${scheme}://${host}/lnurlp/api/v1/lnurl/cb/${lnurlLinkId}",
+ "minSendable": 10000,
+ "maxSendable": 100000,
+ "metadata": "[[\"text/plain\", \"test many payments\"]]"
+ },
+ "lnurl": "LNURL1DP68GURN8GHJ7EM4D9K8G7T9D3SKUEP39EKXUCNFW3EJUCM0D5HKCMN4WFK8QTENDPCKVUEHX9JDQL",
+ "unit": "sat",
+ "amount": 20000,
+ "comment": "",
+ "internalMemo": null
+}
+ =
+
+
+
+ demo.lnbits.com
+
+ https
+ utf-8
+ /api/v1/payments/lnurl
+ POST
+ true
+ false
+ true
+ false
+ true
+
+ HttpClient4
+
+
+
+
+
+
+
+ Accept
+ application/json, text/plain, */*
+
+
+ X-Api-Key
+ ${demoApiKey}
+
+
+ Content-Type
+ application/json;charset=utf-8
+
+
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+ extra.success_action
+
+ false
+ false
+ false
+ false
+
+
+
+ paymenHash
+ payment_hash
+ 0
+ no-paymenthash
+
+
+
+
+
+ true
+ false
+
+
+
+ 20000
+ for the webhook to be called
+
+
+
+
+
+
+ ${host}
+
+ https
+ UTF-8
+ /api/v1/payments/${paymenHash}
+ GET
+ true
+ false
+ true
+ false
+
+
+
+
+
+
+
+
+ X-Api-Key
+ ${saasApiKey}
+
+
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+ $.details.extra.wh_success
+ true
+ true
+ false
+ false
+ false
+
+
+
+ $.details.extra.wh_message
+ OK
+ true
+ false
+ false
+ false
+
+
+
+ javascript
+
+ ${configPath}/scripts/lnurl_check_webhook_response.js
+ true
+
+
+
+
+
+
+ true
+ false
+
+
+
+ true
+
+
+
+ false
+ {
+ "res": {
+ "tag": "payRequest",
+ "callback": "https://demo.lnbits.com/lnurlp/api/v1/lnurl/cb/et5tSf",
+ "minSendable": 10000,
+ "maxSendable": 100000,
+ "metadata": "[[\"text/plain\", \"SaaS instances pay me\"]]"
+ },
+ "lnurl": "LNURL1DP68GURN8GHJ7ER9D4HJUMRWVF5HGUEWVDHK6TMVDE6HYMRS9AJHGDT52DNQ97CEPF",
+ "unit": "sat",
+ "amount": 10000,
+ "comment": "",
+ "internalMemo": null
+}
+ =
+
+
+
+ ${host}
+
+ https
+ utf-8
+ /api/v1/payments/lnurl
+ POST
+ true
+ false
+ true
+ false
+ true
+
+ HttpClient4
+
+
+
+
+
+
+
+ Accept
+ application/json, text/plain, */*
+
+
+ X-Api-Key
+ ${saasApiKey}
+
+
+ Content-Type
+ application/json;charset=utf-8
+
+
+
+
+
+
+ 200
+
+
+ Assertion.response_code
+ false
+ 8
+
+
+
+ extra.success_action
+
+ false
+ false
+ false
+ false
+
+
+
+ paymenHash
+ payment_hash
+ 0
+ no-paymenthash
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+ 100
+ true
+ (wallet){1}
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+