GithubHelp home page GithubHelp logo

btcpayserver / btcpayserver Goto Github PK

View Code? Open in Web Editor NEW
6.0K 6.0K 1.6K 53.13 MB

Accept Bitcoin payments. Free, open-source & self-hosted, Bitcoin payment processor.

Home Page: https://btcpayserver.org/

License: MIT License

C# 76.42% CSS 1.48% JavaScript 3.67% PowerShell 0.06% Shell 0.20% Dockerfile 0.05% HTML 18.12%
bitcoin bitcoin-payment-gateway bitcoin-payment-processor crowdfunding lightning-network payment-gateway point-of-sale selfhosted

btcpayserver's Introduction

BTCPay Server

BTCPay Server

Accept Bitcoin payments โ‚ฟ

BTCPay Server is a free and open-source Bitcoin payment processor which allows you to accept bitcoin without fees or intermediaries.

"This is lies, my trust in you is broken, I will make you obsolete" ๐Ÿ’š

View Demo ยท Report a bug ยท Request a feature ยท FAQ

๐Ÿ’ผ Table of Contents

๐ŸŽจ Features

  • Direct, peer-to-peer Bitcoin payments
  • No transaction fees (other than the network fee)
  • No fees, middleman or KYC
  • Non-custodial (complete control over the private key)
  • Enhanced privacy & security
  • Self-hosted
  • SegWit support
  • Lightning Network support (LND, Core Lightning (CLN), Eclair)
  • Tor support
  • Share your instance with friends (multi-tenant)
  • Invoice management and Payment requests
  • Apps: Point of sale, crowdfunding, donation button
  • Full-node reliant wallet with hardware wallet integration and SegWit support
  • Bitcoin-only build, separate community-maintained altcoin build (supported altcoins)

๐Ÿš€ Getting Started

Firstly, decide if you want to host an instance yourself or use a third-party host. If you've chosen to self-host, there are plenty of documented ways to deploy BTCPay Server.

After successful deployment, make sure to check our getting started and walkthrough guides. In case you would like to use Lightning Network, see Lightning guide.

๐Ÿ“— Documentation

Please check out our official website, complete documentation and FAQ for more details.

If you have trouble using BTCPay Server, consider joining communities listed on the official website to get help from other contributors. Only create a GitHub issue for technical issues you can't resolve through other channels or feature requests you've validated with other members of the community.

๐Ÿค Contributing

BTCPay Server is built and maintained entirely by volunteer contributors around the internet. We welcome and appreciate new contributions.

If you're a developer looking to help, but you're not sure where to begin, check the good first issue label, which contains small pieces of work that have been specifically flagged as being friendly to new contributors.

Contributors looking to do something a bit more challenging, before opening a pull request, please join our community chat or start a GitHub discussion to get early feedback, discuss the best ways to tackle the problem, and ensure there is no work duplication.

There are many other ways to get involved with the project. Check our contribution guidelines. To get the big-picture of the project development, visit our evolving roadmap.

๐Ÿง‘โ€๐Ÿ’ป Developing

To begin developing locally, visit our local development guide. There are also several video-tutorials:

How to build

While the documentation advises using docker-compose, you may want to build BTCPay Server yourself.

First, install .NET SDK v8.0 as specified by the Microsoft website.

On Powershell:

.\build.ps1

On linux:

./build.sh

How to run

Use the run scripts to run BTCPay Server, this example shows how to print the available command-line arguments of BTCPay Server.

On Powershell:

.\run.ps1 --help

On linux:

./run.sh --help

How to debug

If you want to debug, use Jetbrain's Rider or Visual Studio 2022.

You need to run the development time docker-compose as described in the test guide.

You can then run the debugger by using the Launch Profile Docker-Regtest.

If you need to debug ledger wallet interaction, install the development time certificate with:

# Install development time certificate in the trust store
dotnet dev-certs https --trust

Then use the Docker-Regtest-https debug profile.

Other dependencies

For more information, see the documentation: How to deploy a BTCPay Server instance.

๐Ÿงช API

BTCPay Server has two APIs:

The Greenfield API is our brand-new API which is still in development. Once complete, it will allow you to run BTCPay Server headlessly. The Legacy API, is fully compatible with BitPay's API. It has limited features, but allows instant migration from BitPay.

๐Ÿ’š Community

Our community is the โค๏ธ of the project. To chat with other community members in real-time, join our Mattermost chat. We're also on GitHub discussions.

๐Ÿ“ License

BTCPay Server software, logo and designs are provided under MIT License.

๐Ÿ™ Supporters

The BTCPay Server Project is proudly supported by these entities through the BTCPay Server Foundation.

Spiral OpenSats Baillie Gifford Tether Human Rights Foundation Strike LunaNode Wallet of Satoshi Coincards IVPN

If you'd like to support the project, please visit the donation page.

btcpayserver's People

Contributors

2pac1 avatar bitcoinbrisbane avatar bolatovumar avatar britttttk avatar dalijolijo avatar daviogg avatar dennisreimann avatar dolu89 avatar dstrukt avatar eskyee avatar gruve-p avatar hugodoyon avatar junderw avatar kukks avatar linoxbe avatar mariodian avatar msafi avatar ndeet avatar nicolasdorier avatar pavlenex avatar radworx avatar rockstardev avatar romanornr avatar satwo avatar sipsorcery avatar sotblad avatar tchukwuleta avatar woutersamaey avatar xpayserver avatar zaxounette avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

btcpayserver's Issues

xpubkey masking via PGP

In my opinion the Xpub field should be secured with all available messures against unauthorized changes (so mail for approval & 2auth).

An additional nice security layer would to add the option for an user based setting for PGP in mails. Add a text field on user settings page - so user can paste his public PGP key & all mails send to that user should be encrypted.

On registration & login page should be a captcha, have user setting for IP whitelist (API & frontend) - last thing I think would round all up... deactivate accounts on X failed logins.

What do you think?

Adding DPOS Coins to BTCPAY

Hi Nicolas,

I was wondering if there was a way to add Dpos coins to your payment gateway like Oxycoin , Ark , Shift and Definetely Lisk to your BTCPay Infrastructure , Since they all use nearly the same codebase so implemnting only one of these coins with simple alteration would guarntee that everyone in the dpos community can use your payment gateway in their stores.

I really do think that this would add really a very high value to this project if this can happen.

I'm eager to hear your response!

Regards,
Mody1996

Add Underpaid order support

It's been discussed several times on the Slack that there should be the ability to add the support for underpaid orders since some users pay directly from exchanges and even though it rarely happens it would be a very useful feature.

accept-underpayments-automatically

Previous payment processor we used handled it in this way.

Remove Store

Need to create a way to remove stores which are no longer used in the BTCPay webui

Feature Request - Shapeshift / Changelly Integration

Would be nice to have an optional setting in BTCPay store settings to turn on/off shapeshift integration.

This allows BTCpay clients to use the BTCPay service, while accepting altcoins from customers.

This should be as easy as integrating a "shifty" button to the bottom of the Scan and Copy screens. Shifty button docs

Server settings should also include an affiliate key to be set, which can be passed in the URL.

  • Possible issue with Shapeshift is transactions often happen past the 15 minute counter.

Altering access to BTCPay server (access for pay)

Hello,

I have setup BTCPay server on a Linux instance.

We are interesting in altering the registration flow, in order to enable registration for a fee somehow.

Is this a possibility currently? We would prefer not to fork for this; I'd be happy to contribute some work to help put together an implementation.

Failed to load resource: the server responded with a status of 404 (Not Found)

https://btcpay-server-testnet.azurewebsites.net/vendor/bootstrap/css/bootstrap.css.map
https://btcpay-server-testnet.azurewebsites.net/vendor/popper/popper.min.js.map

So i found these errors with the Safari Develop Inspect Element tools,
which I'm sure, will also show up in Chrome etc etc browsers,

When Loading The Test Site.
same error in happens in the latest version update.

bootstrap.css.map
popper.min.js.map
I don't see these in the BTCPAYSERVER Source file ??

fail bootstrab css map

[Feature Request] Fine grained permissions

The idea is that a store owner can access to user to his store, but not access to settings.

Access should to the StoresController should be restricted by policy use. (Currently only the OwnStore policy is applied)

Export Invoices in CSV/JSON/XML

Add "Export" to invoices screen.

This will help shop owners gather raw data from their shop.

Export should include all fields from the "Invoice details" screens for all invoices exported.

If invoice screen has filters, then export should only export filtered types:
Sorting on "Invoices" Screen

Feature Request: bitpay.js

Bitpay has a script, bitpay.js which allow to easily have a payment popup to pay in-site.

This is very useful, even more with micro payment like ligthning.

Feature Request: Show the NodeInfo on Lightning page

@lepipele the unified invoice rfc is meant to make this useless, but meanwhile we need to expose how to create a channel with the merchant in the lightning payment method like:

02302abe6c40816525d43f5fd9352f3474dee5656786b26dba42b20369f2e4409a@52.232.97.9:9736

If you take care of the Checkout UX for exposing this data, I can easily plug this info in the page.

Add U2F verification to further secure the server login

Currently, there is 2FA authentication which is a great way to secure online accounts, but I would like to suggest adding U2F authentication (Ledger/Trezor support it) to further enhance the security of the server login.

Search bar barely functional

Search only works with the following:

storeid:id for filtering a specific store
status:(expired|invalid|complete|confirmed|paid|new) for filtering a specific status

All other fields within the invoices are not searchable, including invoice ID.

Example: Searching Invoice ID returns 0 results -

Before Searching:
image

After Search Attempt
image

Add/Remove BTCPay Users

Need the ability to add/remove users without having them register.

Also, possibly "lock down" server, not allowing anyone to attempt to register. Good for single organizations.

When adding user, perhaps grant them permissions to certain stores. Again, good for when multiple users from a single organization need access

Add support for ethereum

Considering Ethereum is the second largest coin in terms of market cap, it makes sense to integrate.
You have an amazing project going!

Add Store field on Invoices Screen / Invoices on Stores Screen

On the invoices screen, it will show all invoices generated. This will cause issue for users who have multiple stores running on one BTCPay instance. It is hard to tell without going into the invoice, which one came from which store. Two possible solutions:

  1. Add a "Store Field" to the invoices screen. This will allow the user to know which store generated which invoice.

  2. On the Stores page, add a link to each store which shows only the invoices for that store.

Automating bundling of JS/CSS files

We are currently not making distinction between different environments - development, staging, production. As described in #39 resources are linked statically... we link JS/CSS directly and that stays same between environments.

Ideally we want system where in development we would link full JS/CSS files which would help during development and debugging... but once project is deployed to production there should be automatic process of minimization and bundling of all referenced files so we ideally serve just one JS and one CSS file.

This way we will also resolve issue of versioning - if certain JS/CSS file is updated, server should automatically create new bundle with new version string (i.e. http://btcpay-server-url.com/renderjs?version_guid). That way you also prevent confusion with client browsers who'll always have latest versions of JS/CSS files (without requiring clients to CTRL+Refresh your page). See this url for example: https://stackoverflow.com/questions/16395595/mvc4-bundling-version-control

Feature Request: Add option to whitelist IPs for login

Hi,

I would like to make a feature request. Can we implement a security feature to allow us to whitelist IPs (individual or subnets) for logging in via the web interface. I don't know how hard it would be to implement this, but thank you for your consideration. Please let me know if you'd like additional information.

Best,
Melik

Add more options for "Consider the invoice confirmed when the payment transaction..."

I would like to see this field have a few more options for merchants.

Specifically, we would like to see the option for 2 confirmations to be deemed safe to ship. I don't feel confident in 1 confirmation, but 2 is safe for our needs. Some others might like 4 etc..

It might make sense to add all the options between 0-6 if it does not require a huge refactor

Lightning Payment max value

Would be nice for it be possible to allow a configurable amount at which anything below that amount is shown the option to checkout in lightning, but anything over is not.

For example, if I offer $25 amazon gift cards, and want to have those purchasable on lightning but not $50, I could set the threshold to $25 so anytime BTC pay needs more than $25 lightning simply doesn't show.

This would allow a few testers to start taking lightning with minimal risk. #reckless

Feedback on Invoices page

Not urgent

invoice-page

  1. Please add OrderId
  2. For confirmed/completed orders, Checkout link should go away
  3. Hyperlink few things: ORDER ID and BTC Addresses
    - In the BTCPay server settings, have a URL pattern so we can generate links that hyperlink direct to the view order link on WooCommerce (or whatever). For example https://oururl.com/?post=1234... in configuration we would put https://oururl.com/?post={order_id} and now {order_id} would be replaced for each valid hyper link
    • hyper link email addresses with mailto:
    • make the link Url Redirect - Clickable

Sending with BTCPay

Not sure whether this is currently possible with BTCPay, but can you also send payments out?

BTCPay offers a great way to programmatically generate invoices and receive payments for them.

What I'm trying to do is also send payments out programmatically for refunds, withdrawals etc.

Does BTCPay offer a way to do this, or am I best just interfacing directly with the bitcoin/litecoin daemon to send payments?

Add support for Ledger/Trezor Litecoin addresses (LTub and MTub)

Trezor and Ledger use a different derivation scheme for generating xpub addresses.

Ltub is used for legacy addresses, but Mtub is used for segwit addresses

More information:
"Officially Litecoin uses the same BIP32 prefixes as Bitcoin (see here). This is on purpose, as it makes sense to generate addresses for multiple cryptocurrencies from a single master key.

The Ltub/Ltpv prefixes were independently made up by the author of the website bip32.org before BIP32 was even discussed by the Litecoin development team. As far as I know they were never officially supported, but unfortunately some developers who believed they were official used them in their software, contributing to the confusion."

Currency does not show during checkout screen

Checkout is not shown, only currency. This could cause issues with users thinking they are paying in one currency when another is being used.

Currency Code should be added to checkout flow.

Error creating invoice after merging commit 2df60bd12187fe36ccfb556c892bc0f257bb2954

Here is full exception:

System.NullReferenceException: Object reference not set to an instance of an object.

   at BTCPayServer.Services.Wallets.BTCPayWallet.<ReserveAddressAsync>d__3.MoveNext() in D:\!Projects\BtcPayServer\btcpayserver\BTCPayServer\Services\Wallets\BTCPayWallet.cs:line 46

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

   at BTCPayServer.Controllers.InvoiceController.<CreateInvoiceCore>d__11.MoveNext() in D:\!Projects\BtcPayServer\btcpayserver\BTCPayServer\Controllers\InvoiceController.cs:line 138

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

   at BTCPayServer.Controllers.InvoiceController.<CreateInvoice>d__32.MoveNext() in D:\!Projects\BtcPayServer\btcpayserver\BTCPayServer\Controllers\InvoiceController.UI.cs:line 349

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeActionMethodAsync>d__12.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeNextActionFilterAsync>d__10.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)

   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)

   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeInnerFilterAsync>d__14.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.<InvokeNextResourceFilter>d__22.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)

   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)

   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.<InvokeFilterPipelineAsync>d__17.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.<InvokeAsync>d__15.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at Microsoft.AspNetCore.Builder.RouterMiddleware.<Invoke>d__4.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.<Invoke>d__3.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.<Invoke>d__6.MoveNext()

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at BTCPayServer.Hosting.BTCPayMiddleware.<Invoke>d__4.MoveNext() in D:\!Projects\BtcPayServer\btcpayserver\BTCPayServer\Hosting\BTCpayMiddleware.cs:line 96

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.<Invoke>d__7.MoveNext()

I assume it maybe has to do with newly added LTC - maybe I it is now required to define derivation scheme for LTC network. These are the lines:

        public async Task<BitcoinAddress> ReserveAddressAsync(DerivationStrategy derivationStrategy)
        {
            var client = _Client.GetExplorerClient(derivationStrategy.Network);
            var pathInfo = await client.GetUnusedAsync(derivationStrategy.DerivationStrategyBase, DerivationFeature.Deposit, 0, true).ConfigureAwait(false);
            return pathInfo.ScriptPubKey.GetDestinationAddress(client.Network); // this line fails
        }

So, yeah... probably that. Guess we should give better error to customers before pushing this to production or support specifying if customers want to enable LTC payments also.

Feature Request: Improve derivation scheme detection

Lot's of user get problem registering their xpubkey because different wallet present the same info differently.

This can be easily solved by parsing the xpub/tpub, whatever, ignoring the version bytes and asking the user to provide the first address of his wallet. BTCPay could then detect the right derivation scheme automatically.

Network cost configurable

Network cost is currently hard coded at .0001 BTC

This should be configurable to each store under the webui settings page, with the ability to turn off as well if it does not make sense for the business.

Also, currently with each payment additional network cost is added. This is by design, however perhaps this should also be an option.

Non-exact BTC payments issue

Looks like it's not possible to request bitcoin payments in exact amounts.

Using container: nicolasdorier/btcpayserver:1.0.0.49

Repro steps:

  1. Click "Create a new invoice" from the admin panel (e.g. http://localhost:49392/invoices)
  2. Set currency to "BTC", set Amount to 1
  3. Click "Create"
  4. Click "checkout" on the resulting invoice
  5. Observe that the amount charged is 1.00010000BTC, approx $1.50USD more than it should be

Expected outcome:
An invoice for exactly 1BTC

Actual outcome:
An invoice for slightly more than 1 BTC

Let me know if you need more info. Cool system by the way, I'm hoping to have it in production in a side-project I'm working on in a few months time ๐Ÿ˜„

Invoices not getting marked as confirmed (stuck in new) and not running CallBack sometimes

I had a customer who paid an invoice, the callback was supposed to be sent to my site and the invoice marked as confirmed, I checked on blockchain.info and I could see the payment there, however on BTCPay server it wasn't confirmed nor the callback was sent to my server.

My store's setting is set to consider the invoice confirmed when the payment is unconfirmed.

Store Setting

Here is the invoice

Invoice Screenshot
It's been more than 60 minutes and still stuck in "new".

On blockchain the payment has already 6 confirmations.

https://blockchain.info/address/39Ren1X75iViTtTLCa3nLMrU1oHB9a98Xz

Address reuse on same invoice

Currently BTCpay generates a new address for each payment. This can cause confusion for the customer and shop owner if the invoice is paid with multiple payments. It also potentially generates an unnecessary amount of addresses.

I think reusing the same BTC address for all payments to a single invoice should not be an issue and much cleaner.

Thoughts?

Manually set invoices in BTCpay to Paid/Completed

Sometimes an invoice expires and the customer has paid it after the fact (Exchanges) but the merchant would like to process the invoice anyways.

In order to have consistent records, we will need a way to manually change the invoice status to paid/completed.

Perhaps also setting these allows the cart to continue monitoring for confirmations?

Sorting on "Invoices" Screen

Add a way to be able to sort/display certain order status.

If the shop generates a lot of abandoned carts/unused addresses then it might become hard to find invoices needed.

Adding a "Status" selector, or the ability to filter multiple status types will help.

Invoice amount is not included in QR Code

Currently scanning the QR Code just returns the adress, not the due amount in BTC.

So the user has to manualy include the requested amount, instead of getting the value prefilled in his wallet.

This also applies to the button "open with wallet"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.