* Support accepting 0 amount bolt 11 invoices for payouts
* add test
* handle validation better
* fix case when we just want pp to provide amt
* Update BTCPayServer/HostedServices/PullPaymentHostedService.cs
* Update BTCPayServer/HostedServices/PullPaymentHostedService.cs
* Update BTCPayServer/Data/Payouts/LightningLike/UILightningLikePayoutController.cs
* Update UILightningLikePayoutController.cs
* fix null
* fix payments of payouts on cln
* add comment
* bump lightning lib
---------
Co-authored-by: Nicolas Dorier <nicolas.dorier@gmail.com>
* Quality of life improvements to payout processors
* Allows more fleixble intervals for payout processing from 10-60 mins to 1min-24hours(requested by users)
* Cancel ln payotus that expired (bolt11)
* Allow cancelling of ln payotus that have failed to be paid after x attempts
* Allow conifguring a threshold for when to process on-chain payouts (reduces fees)
# Conflicts:
# BTCPayServer.Tests/SeleniumTests.cs
* Simplify the code
* switch to concurrent dictionary
* Allow ProcessNewPayoutsInstantly
* refactor plugin hook service to have events available and change processor hooks to actions with better args
* add procesor extended tests
* Update BTCPayServer.Tests/GreenfieldAPITests.cs
* fix concurrency issue
* Update BTCPayServer/PayoutProcessors/BaseAutomatedPayoutProcessor.cs
---------
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
* Refactor logic for calculating due amount of invoices
* Remove Money type from the accounting
* Fix tests
* Fix a corner case
* fix bug
* Rename PaymentCurrency to Currency
* Fix bug
* Rename PaymentCurrency -> Currency
* Payment objects should have access to the InvoiceEntity
* Set Currency USD in tests
* Simplify some code
* Remove useless code
* Simplify code, kukks comment
* If loading addresses into the send wallet page using bip21 or address, (or clicking on "Send selected payouts" from the payotus page), existing labels will be pre-populated.
* Add the payout label to the address when the payoutis created instead of to the transaction when it is paid.
* Add the label attachments when adding labels from an address to the transaction.
closes#4830
If users want to deal with expired payout destinations, then they should be able to conifugre it that way. Some wallets simply do not allow customizing the bolt11 expiry and the defaults are much less than a day. I think we should merge #3857 if we introduce this as an automated payotu processor for lightning running every few minutes would work together with this and solve it.
* Plugins can now build apps
* fix tests
* fixup
* pluginize existing apps
* Test fixes part 1
* Test fixes part 2
* Fix Crowdfund namespace
* Syntax
* More namespace fixes
* Markup
* Test fix
* upstream fixes
* Add plugin icon
* Fix nullable build warnings
* allow pre popualting app creation
* Fixes after merge
* Make link methods async
* Use AppData as parameter for ConfigureLink
* GetApps by AppType
* Use ConfigureLink on dashboard
* Rename method
* Add properties to indicate stats support
* Property updates
* Test fixes
* Clean up imports
* Fixes after merge
---------
Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
* Update price display
As proposed by @dstrukt in #4364.
* Update format
* Unify price display across the app
* Add DisplayFormatter
* Replace DisplayFormatCurrency method
* Use symbol currency format for invoice
* Unify currency formats on backend pages
* Revert recent changes
* Do not show exchange rate and fiat order amount for crypto denominations
* Fix test and add test cases
* Label Manager component
closes#4464
* UI updates
* Test fix
* add test
* fix warnings
* fix select update bug
* add test
* fix test
* Increase payment box max-width
* add labels from address to tx on detection
* Exclude well known label from the dropdown
* Add test on transaction label attachement, tighten UpdateLabels method to only update address labels
---------
Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
* Editorconfig: Add space_before_self_closing setting
This was a difference between the way dotnet-format and Rider format code. See https://www.jetbrains.com/help/rider/EditorConfig_Index.html
* Editorconfig: Keep 4 spaces indentation for Swagger JSON files
They are all formatted that way, let's keep it like that.
* Apply dotnet-format, mostly white-space related changes
This allows external services to integrate with the payouts system to process payouts. This is also a step to allow plugins to provide payout processors.
* It provides the payment proof through the greenfield payoust api.
* It allows you to set the state of a payout outside of the usual flow:
* When state is awaiting payment, allow setting to In progess or completed
* When state is in progress, allow setting back to awaiting payment
* Payjoin label fixes
* When a payjoin label was applied, coin selection filter would not work
* When a payjoin happened with a receive address wallet, the payjoin label was not applied
* Coin selection shows when a utxo is currently reserved for a payjoin. Applies both to UI and to GF API
* remove reserved label
* Update BTCPayServer/Payments/PayJoin/PayJoinEndpointController.cs
* Enhance Store email capability
Currenty the new email rules can send an email when an invoice event occurs. However, there is currently no way to customize the email based on the invoice, making the feature a bit useless.
This PR:
* adds the rich text editor to the body input
* allows you to use some of the properties from the Invoice (based on greenfield api properties. I've taken a imple approach for now using just a string.replace mechanism, but we can update this to a dynamic linq approach so that users can customize further (e.g. `{Invoice.Metadata["something"].ToString().ToUpper()}`)
NOT READY:
Since this all takes place as a background service, there is an issue around how to handle items such as the "checkout link", as we are not aware of the btcpay url at that moment. Thoughts? @nicolasdorier
* fix typo and make it simpler for now
* remove dditor
* Store Emails
* fix test
* Update email rules layout
* Cleanups
* Test cleanups
* Add back comments
* Update view; add test
* Show email rules link even if email settings aren't completed
* Validate email addresses
* No redirect, display warning
* Fix test
* Refactoring: Change email argument types to MailAddress
* Test fix
* Refactoring: Use MailboxAddress
* Parse emails properly in controllers and backend
Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
* Fix labels not showing multiple payouts payments
* Improve label tooltip
Makes it more readable
* Cleanup code
* Fix overflowing text in order ID field in invoices table (#3765)
close#3714
Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
Co-authored-by: nicolas.dorier <nicolas.dorier@gmail.com>
Co-authored-by: Umar Bolatov <bolatovumar@gmail.com>
* Automated Transfer processors
This PR introduces a few things:
* Payouts can now be directly nested under a store instead of through a pull payment.
* The Wallet Send screen now has an option to "schedule" instead of simply creating a transaction. When you click on schedule, all transaction destinations are converted into approved payouts. Any options relating to fees or coin selection are discarded.
* There is a new concept introduced, called "Transfer Processors". Transfer Processors are services for stores that process payouts that are awaiting payment. Each processor specifies which payment methods it can handle. BTCPay Server will have some forms of transfer processors baked in but it has been designed to allow the Plugin System to provide additional processors.
* The initial transfer processors provided are "automated processors", for on chain and lightning payment methods. They can be configured to process payouts every X amount of minutes. For on-chain, this means payments are batched into one transaction, resulting in more efficient and cheaper fees for processing.
*
* fix build
* extract
* remove magic string stuff
* fix error message when scheduling
* Paginate migration
* add payout count to payment method tab
* remove unused var
* add protip
* optimzie payout migration dramatically
* Remove useless double condition
* Fix bunch of warnings
* Remove warning
* Remove warnigns
* Rename to Payout processors
* fix typo
Co-authored-by: Nicolas Dorier <nicolas.dorier@gmail.com>
* Payout Destination Handling
fixes#2765
This PR:
* reactivates the BIP21 support for payouts.
* allows LNUrl destinations to be reusable.
* allows addresses to be reused in claims as long as the other claims are in a final state
* Ensure bolt amount matches the payout amount
* fixes
* reduce duplicate parsing of bolt
* make hash the id of bolt
* better bolt11 tostring
* use cached payment request from lnurl
Currently invoice email notifications are only sent when the invoice is created via the API. This commit adds an option to set an email address for notifications when an invoice is created from the Web UI.
* Remove Bootstrap/Creative CSS file customizability
Customizations should be done using themes
* Remove deprecated Casa and Classic themes
They are still available in the design system repo and should be added as custom theme CSS file
* Use either standard or custom theme
* Remove deprecated themes
* Improve theme select UI
* Finish and refactor theme switching
* updates theme copy
* Update BTCPayServer/Views/Server/Theme.cshtml
Co-authored-by: Zaxounette <51208677+Zaxounette@users.noreply.github.com>
* Combine creative.css and site.css
Co-authored-by: dstrukt <gfxdsign@gmail.com>
Co-authored-by: Zaxounette <51208677+Zaxounette@users.noreply.github.com>
* Refactor and decouple Payout logic
So that we can support lightning + external payout payments
Fixes & refactoring
almost there
final
Remove uneeded payment method checks
Refactor payouts to handle custom payment method specific actions
External onchain payments to approved payouts will now require "confirmation" from the merchant that it was sent by them.
add pill tabs for payout status
* Improve some UX around feature
* add test and some fixes
* Only listen to address tracked source and determine based on wallet get tx call from nbx
* Simplify isInternal for Payout detection
* fix test
* Fix Noreferrer test
* Make EnsureNewLightningInvoiceOnPartialPayment more resilient
* Make notifications section test more resilient in CanUsePullPaymentsViaUI
* Mark Payouts as Paid
This PR allows users to mark payouts as paid manually through the UI and through the API. It also sets up the payout proof system to be able store a manual proof that will in a later PR allow you to specify a proof of payment (link or text)
* add docs, test and greenfield client
* remove extra docs stuff
* Update BTCPayServer.Tests/GreenfieldAPITests.cs
Co-authored-by: britttttk <39231115+britttttk@users.noreply.github.com>
* clean up pull payment/payouts fetch code
* Ensure payoutis are retrieved with pull payment
Co-authored-by: britttttk <39231115+britttttk@users.noreply.github.com>