diff --git a/1-0-3-128-released/index.html b/1-0-3-128-released/index.html index 2084b0f3..96ba0015 100644 --- a/1-0-3-128-released/index.html +++ b/1-0-3-128-released/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

New BTCPay version 1.0.3.128 is out! Besides new features (Inventory managment in Apps and allowing Lightning Network for non-admins), the brand-new release brings in a lot of small improvements and bug fixes.

# 1.0.3.128 Changelog (opens new window)

# Features

# Invetory Management in Apps

The ability to limit the contribution perks and products has been added to the Crowdfunding and Point Of Sale apps.

Crowdfunding App Inventory Management:

Point of Sale App Inventory Management:

Point of Sale App Perks Inventory Demo:

Crowdfunding App Perks Inventory Demo:

# Lightning Network for non-admins

Since the initial integration of the Lightning Network into BTCPay Server, the server owners (admins) were the only users able to accept payments via the built-in lightning node. With the new release, admins can now share their Lightning Network node with other users on their server.

This is a custodial feature which means funds received by those users will be under the control of the server owner. It is up to server owner to figure out the best way to distribute the incoming funds to merchants using the BTCPay instance. Currently, the management of those funds is quite difficult and distinguishing payments requires a lot of manual work and accounting. For that reason, we discourage open third-party hosts (opens new window) from using the feature until it’s further developed and adjusted for the use-case.

This option is particularly useful for those sharing their BTCPay instance across multiple businesses. For example, a user that owns 3 e-commerce stores and can accept lightning network payments for all 3 on a single self-hosted instance. Potentially, you may be able to create agreements with businesses so that they may enable their customers to pay with lightning through your managed lightning node, against a fee.

To enable Lightning Network node sharing with other users, go to Server Settings > Policies and tick the box which says “Allow non-admins to use the internal lightning node in their stores”.

# Thank you to our contributors

Huge thanks go to our contributors, who made their release possible. The MVP of the release is bolatovumar (opens new window) who did numerous fixes and improvements to the Point of Sale app.

How to update to 1.0.3.128?

To update (opens new window) to the latest version, go to your BTCPay > Server Settings > Maintenance > Update.

If you encounter any issues with this version, or need assistance, please report it on our community chat (opens new window) or on our GitHub (opens new window).

+ (opens new window)

New BTCPay version 1.0.3.128 is out! Besides new features (Inventory managment in Apps and allowing Lightning Network for non-admins), the brand-new release brings in a lot of small improvements and bug fixes.

# 1.0.3.128 Changelog (opens new window)

# Features

# Invetory Management in Apps

The ability to limit the contribution perks and products has been added to the Crowdfunding and Point Of Sale apps.

Crowdfunding App Inventory Management:

Point of Sale App Inventory Management:

Point of Sale App Perks Inventory Demo:

Crowdfunding App Perks Inventory Demo:

# Lightning Network for non-admins

Since the initial integration of the Lightning Network into BTCPay Server, the server owners (admins) were the only users able to accept payments via the built-in lightning node. With the new release, admins can now share their Lightning Network node with other users on their server.

This is a custodial feature which means funds received by those users will be under the control of the server owner. It is up to server owner to figure out the best way to distribute the incoming funds to merchants using the BTCPay instance. Currently, the management of those funds is quite difficult and distinguishing payments requires a lot of manual work and accounting. For that reason, we discourage open third-party hosts (opens new window) from using the feature until it’s further developed and adjusted for the use-case.

This option is particularly useful for those sharing their BTCPay instance across multiple businesses. For example, a user that owns 3 e-commerce stores and can accept lightning network payments for all 3 on a single self-hosted instance. Potentially, you may be able to create agreements with businesses so that they may enable their customers to pay with lightning through your managed lightning node, against a fee.

To enable Lightning Network node sharing with other users, go to Server Settings > Policies and tick the box which says “Allow non-admins to use the internal lightning node in their stores”.

# Thank you to our contributors

Huge thanks go to our contributors, who made their release possible. The MVP of the release is bolatovumar (opens new window) who did numerous fixes and improvements to the Point of Sale app.

How to update to 1.0.3.128?

To update (opens new window) to the latest version, go to your BTCPay > Server Settings > Maintenance > Update.

If you encounter any issues with this version, or need assistance, please report it on our community chat (opens new window) or on our GitHub (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/1-0-3-132-released/index.html b/1-0-3-132-released/index.html index f22fa8d4..66d0c06d 100644 --- a/1-0-3-132-released/index.html +++ b/1-0-3-132-released/index.html @@ -12,7 +12,7 @@ - + @@ -53,7 +53,7 @@ (opens new window) GitHub (opens new window)

New BTCPay version 1.0.3.132 is out! This version brings in a few improvements and minor bug fixes.

# 1.0.3.132 Release notes

# Docker deployment: Note on SSH settings

BTCPay Server is relying on SSH to execute scripts to for updating itself (only for docker deployments, like lunanode). For doing this, the BTCPayServer container connects to the host via SSH and runs btcpay-update.sh.

For this to work, during the setup, we were previously requiring user to:

Then, the script would copy the keypair to the container and BTCPay Server would use this to connect to the host.

However, this had significant downsides:

  1. If you deleted the keypair, you needed to run btcpay-setup.sh again.
  2. Issues if ssh-keygen on the host had some breaking change. (It happened to us)
  3. Required additional documentation to set up properly.
  4. In 1.0.3.132, we released a new feature which allows the modification of the authorized_keys file within BTCPayServer, and we wanted to prevent people from lock themselves out their machine by accidentally deleting the key btcpayserver was using.

For this reason, BTCPAY_HOST_SSHKEYFILE is now deprecated and replaced by a new setting called BTCPAY_ENABLE_SSH. This new settings will mount the host's authorized_keys file inside the btcpayserver container, and the btcpayserver container is now responsible to create the SSH keypair and add itself to the authorized_keys.

BTCPAY_HOST_SSHKEYFILE will keep working because keeping backward compatibility is of paramount importance, but we advise you to migrate to BTCPAY_ENABLE_SSH=true instead:

BTCPAY_ENABLE_SSH=true -. btcpay-setup.sh -i

If you still use the deprecated BTCPAY_HOST_SSHKEYFILE and accidentally break the authorized_keys file by using the new feature in Server Settings/SSH Service of BTCPay Server, you might lock yourself out of your server. This will not happen if you use BTCPAY_ENABLE_SSH=true.

If you feel uncomfortable with the command line or are confident you will not lock yourself out of your own VPS, you can choose not to update toBTCPAY_ENABLE_SSH and things will keep working and still be supported.

# Thank you to our contributors

Huge thanks go to our contributors, who made their release possible.

How to update to 1.0.3.132?

To update (opens new window) to the latest version, go to your BTCPay > Server Settings > Maintenance > Update.

If you encounter any issues with this version, or need assistance, please report it on our community chat (opens new window) or on our GitHub (opens new window).

+. btcpay-setup.sh -i

If you still use the deprecated BTCPAY_HOST_SSHKEYFILE and accidentally break the authorized_keys file by using the new feature in Server Settings/SSH Service of BTCPay Server, you might lock yourself out of your server. This will not happen if you use BTCPAY_ENABLE_SSH=true.

If you feel uncomfortable with the command line or are confident you will not lock yourself out of your own VPS, you can choose not to update toBTCPAY_ENABLE_SSH and things will keep working and still be supported.

# Thank you to our contributors

Huge thanks go to our contributors, who made their release possible.

How to update to 1.0.3.132?

To update (opens new window) to the latest version, go to your BTCPay > Server Settings > Maintenance > Update.

If you encounter any issues with this version, or need assistance, please report it on our community chat (opens new window) or on our GitHub (opens new window).

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

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

- + diff --git a/2019-year-in-review/index.html b/2019-year-in-review/index.html index 009159f7..d0ba7cba 100644 --- a/2019-year-in-review/index.html +++ b/2019-year-in-review/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

We like to say that every day, something is happening in BTCPay. With one more behind us, just like we did in 2018, (opens new window) we'd like reflect and remember the highlights from 2019.

Only by looking back at our failures and success, can we draw lessons for the future.

Today, we're reflecting at all the good, bad, ugly and crazy moments that happened in the past 365 days in BTCPay Server community.

# January

Telegram Group Launched

We've launched a Telegram group that now, nearly a year later has over 900 active members.

01/02/2019 (opens new window)

Lightning Joule Integration

Joule added an (opens new window)easy way to connect to a self-hosted BTCPay.

01/06/2019 (opens new window)

Running BTCPay Raspberry Pi 3 Guide

Step-by-step instructions for running BTCPay on Raspberry Pi 3.

01/07/2019 (opens new window)

New version 1.0.3.38 released

Introducing invoice search and better way to display LN node info

01/07/2019 (opens new window)

Better Invoice Accounting

A new way to export invoices in CSV for smoother accounting

01/10/2019 (opens new window)

Crowdfunding App

In 1.0.3.42 version, we introduced a brand-new app - Crowfunding

01/10/2019 (opens new window)

LibrePatron - Decentralized Patron

A third-party BTCPay plugin, called LibrePatron, released.

01/11/2019 (opens new window)

10 000 Twitter Followers

@BTCPayServer account on Twitter, reached 10k followers!

01/14/2019 (opens new window)

2 years since the stable release

On Jan 17th, we celebrated 2nd b-day of the stable BTCPay version.

01/17/2019 (opens new window)

The definite Guide to BTCPay Server

CoinCache.net released a 4-part series of articles on BTCPay Server.

01/21/2019 (opens new window)

New version 1.0.3.45 released

Better invoice pagination, fixed warnings and SMTP configurable on a store-level.

01/23/2019 (opens new window)

BTCPay Chat Migrated to Mattermost

Our community chat, migrated from Slack, to an open-source alternative - Mattermost.

01/07/2019 (opens new window)

Tutorial - Integrate Woo into Crowdfund app

Tutorial that enables integration of WooCommerce store and the Crowdfund app.

01/25/2019 (opens new window)

Woo integrated into BTCPay

Deploy WooCommerce store on top of the existing, self-hosted BTCPay Server.

01/27/2019 (opens new window)

# February

BTCPay Introductory video crowdfund campaign

3-day live-stream event where we successfully raised money for an introductory video,

02/02/2019 (opens new window)

People using Crowdfunding app to raise funds

People began using freshly-coded app in the wild, trying to raise funds for different causes.

02/05/2019 (opens new window)

BTCPay Workshop in Chicago

RockstarDev did a live-stream workshop in Chicago explaining the basics of BTCPay.

02/07/2019 (opens new window)

London Advancing Bitcoin 2019

Nicolas Dorier held a presentation in London, explaining the architecture of BTCPay Server.

02/08/2019 (opens new window)

Infographic - Common Merchant's problem

We created an infographic to showcase the common issues Bitcoin merchants face.

02/19/2019 (opens new window)

New version v1.0.3.55 released

This version introduced a lot of minor bug fixes and performance improvements.

02/27/2019 (opens new window)

Ride the Lightning integrated

RTL integration in BTCPay enabled easy-to-use UI for LND users.

02/27/2019 (opens new window)

1.0.3.65 - Payment Requests are here!

In 1.0.3.65 we released a new type of invoices, payment requests that became quite popular.

02/28/2019 (opens new window)

Interactive Mural by CryptoGraffity in Venezuela

Powered by BTCPay, raising money for daycare in Cúcuta for Venezuela refugee kids.

01/28/2019 (opens new window)

# March

Tor Support for BTCPay

We've integrated Tor Support for BTCPay as a default.

03/01/2019 (opens new window)

BTCPay HackDay

RockStarDev and Justin Moon organized a hackaton.

03/03/2019 (opens new window)

Host Bill App Software integrated BTCPay

All-in-One Hosting Command Center @hostbillappcom added BTCPay integration.

03/04/2019 (opens new window)

Guide - Running BTCPay on Digital Ocean

CoinCards founder Mike, created a guide on how to deploy BTCPay on a popular VPS provider - DO.

03/05/2019 (opens new window)

BTCPay Blog launched

We launched a blog so we can share stories, news and guides easily.

03/07/2019 (opens new window)

Mentioned on Canada Revenue Agency Audit

Canada Revenue Agency, released guidelines for crypto audit which mentions BTCPay.

03/08/2019 (opens new window)

Tutorial - How to Create Point of Sale

Tutorial explains how to use BTCPay Point Of Sale app in retail.

03/12/2019 (opens new window)

Article - Debunking BTCPay Server Myths

Article in which we tried to debunk some of the common misconceptions.

03/14/2019 (opens new window)

btcpayserver.org completely re-designed

Our main site went through an overhaul on March the 15th.

03/15/2019 (opens new window)

Python Client documentation refactored

Jeff V., the maintainer of the Python client, re-wrote the documentation.

03/17/2019 (opens new window)

# April

LN BIG Integration

A popular LN liquidity node provider developed an easy way to get inbound capacity from BTCPay nodes.

04/02/2019 (opens new window)

Jack followed @BTCPayServer

Jack gave our account a follow , which resulted in one of many poems we tweeted in 2019.

04/03/2019 (opens new window)

How BTCPay works Animated Video

In our efforts to show what happens behind the scenes, we created an animated video.

04/04/2019 (opens new window)

JooBar using BTCPay as their PoS

A bar based in Korea using btcpay web-point of sale as their main terminal.

04/08/2019 (opens new window)

Boltathon - Coding Session

RockstarDev and BritKelly participated in first-ever Boltathon conference.

04/10/2019 (opens new window)

WeAreAllHodlonaut

The crowdfunding campaign for the space cat from the community began

04/11/2019 (opens new window)

Over $30 000 raised for Hodlonaut

Crowdfunding campaign powered by BTCPay app, ended up raising over 30 000$.

04/13/2019 (opens new window)

BTCPay Intro video

After a successful crowdfunding, "What is BTCPay" animated video saw the light of day.

04/14/2019 (opens new window)

Article - How to accept Bitcoin Donations

Article explaining how to accept BTC donations privately and securely without middleman appeared on our blog.

04/25/2019 (opens new window)

# May

New big update 1.0.3.95

This version introduced a lot of new features (2F support, Bitcoin Full Node connect to mobile via QR code, external storage support)

05/07/2019 (opens new window)

PSBT Support added

Partially signed bitcoin transactions (PSBT) implemented for BTCPay Wallet.

05/08/2019 (opens new window)

ColdCard Integration

Version 1.0.3.99 introduced ColdCard integration for completely air-gapped wallet transactions.

05/13/2019 (opens new window)

Version 1.0.3.104

This released introduced tons of improvements in the wallet and added the ability to sign with xpriv if needed.

05/15/2019 (opens new window)

ACINQ - Eclair support

We've added the support for third LN implementation - Eclair.

05/15/2019 (opens new window)

NPM package for btcpay created

A NodeJS implementation for BTCPay was created.

05/17/2019 (opens new window)

Hello Bar - The first retail store to accept LN in Japan

By using BTCPay PoS, HelloBar became the first ever brick and mortar store to accept Lightning in Japan.

05/23/2019 (opens new window)

btcpayserver.org translated in over 15 languages

In less than 24 hours, our official site got translated in over 15 languages. To this day it's available in 24 languages.

05/30/2019 (opens new window)

# June

1.0.3.106 fixed a major vulnerability

Besides vulnerability fix, this release brought it BISQ integration, added Blockstream explorer

06/02/2019 (opens new window)

BTCPay and PayPal?

Some community members wanted PayPal integrated, we've put that on a vote, it ended up with a majority of users saying NO, and others freaking out.

06/06/2019 (opens new window)

# July

BitFlix - Streaming Service

One of our community members created a proof of concept app called Bitflix, Netflix alternative on the Lightning powered by BTCPay.

07/12/2019 (opens new window)

#BitcoinForTor

Crowdfunding campaign in partnership with the Tor Project, where community raised over 18k USD.

07/15/2019 (opens new window)

Stepan Livera Podcast Series

Stephan Livera interviewed BTCPay Server core contributors in a 4-part series.

07/16/2019 (opens new window)

BTCPay Server Directory launched

We created a BTCPay directory where merchants, developers and regular users can showcase their projects and shops.

07/21/2019 (opens new window)

BTCPay Integrated in a video game

A video game called Turbo '84 launched, which uses BTCPay as a back-end for receiving payments.

07/23/2019 (opens new window)

# August

Brainstorming the 2.0 UI

Early August, we began the initiative of including more UI/UX people on the project.

08/08/2019 (opens new window)

Version 1.0.3.127 released

1.0.3.127 introduced a vulnerability fix that affected third-party hosts and introduced wallet labels.

10/08/2019 (opens new window)

Tutorial Develop on Ubuntu

We released a video that explains how to develop BTCPay Server if you're using Ubuntu.

08/11/2019 (opens new window)

Tutorial BTCPay Docker under the hood

Detailed video series that explains in detail what happens under the hood in BTCPay Docke deployment.

08/14/2019 (opens new window)

XSS Vulnerability disclosure

On August 16th we published an XSS vulnerability disclosure.

08/16/2019 (opens new window)

This is lies! Our Second Birthday

August the 17th marked the two year anniversary of BTCPay. Happy Birthday!

08/17/2019 (opens new window)

# September

Version 1.0.3.128 is out

This release introduced a bunch of interesting features, including PoS app inventory management.

09/04/2019 (opens new window)

Lightning ATM

Lightning Network ATM, using BTCPay Server as a backend released.

08/09/2019 (opens new window)

Announcing BTCPay Server Foundation and Square Crypto Grant

One of the biggest 2019 highlights - BTCPay Foundation announced on BH2019 and our first grant from SquareCrypto.

09/14/2019 (opens new window)

First ever BTCPay Day

In Riga, we held our first BTCPay Day. A full-day event where community gathered. Over 70 members attended the first event in Latvia.

09/16/2019 (opens new window)

The Tor Project starts accepting donations via BTCPay

After a successful crowdfunding campaign, The Tor Project added donation button and started to accept Bitcoin donations directly.

09/19/2019 (opens new window)

# October

btcpayserver.org - redesigned again

We've been experimenting quite a lot and on October the 7nd, we polished our main site.

10/07/2019 (opens new window)

Hack0 - Plug and Play BTCPay node

Hack0, earlier announced in Riga, during the BTCPay Day exhibited at CEATEC, Tokyo.

10/08/2019 (opens new window)

Casa 2 announced with BTCPay Support

Popular plug and play full Bitcoin and Lightning Node Casa, announced Casa 2 wich arrives with BTCPay support.

10/08/2019 (opens new window)

Raspberry Pi 4 documentation

On October 9th, we've added documentation for Raspberry Pi 4 deployment.

10/09/2019 (opens new window)

Hong Kong Free Press

Hong Kong Free Press started using a self-hosted BTCPay Server to accept Bitcoin donations

10/10/2019 (opens new window)

LNConf Berlin

Large portion of our core team and community headed to Berlin for an amazing conference.

10/14/2019 (opens new window)

Lightnite Crowdfunding campaign

Satoshi Games launched a crowdfunding campaign powered by BTCPay for their PC game.

10/19/2019 (opens new window)

BTCPay Workshop

In Berlin, RockstarDev and Kukks held a workshop on how to obsolete Meetup app, by using BTCPay Transmuter.

10/20/2019 (opens new window)

Pretix - Ticketing System integrates BTCPay

An open-source ticket and event software Pretix starts using BTCPay Server.

10/20/2019 (opens new window)

Version 1.0.3.134

New version, 1.0.3.134 introduced recommended fee on the invoice page and tons UI improvements.

10/23/2019 (opens new window)

# November

Ruby Integration

Our community member wrote an in-depth tutorial on how to integrate Ruby's SDK and BTCPay.

11/06/2019 (opens new window)

ACINQ - BTCPay Foundation

ACINQ became the second company to support BTCPay Server Foundation with a 10k grant.

11/07/2019 (opens new window)

Version 1.0.3.137

This major version introduced front-page re-design, ElectrumX support and Fully Noded integration.

11/07/2019 (opens new window)

Hack0 - Plug and Play BTCPay node

Hack0, earlier announced in Riga, during the BTCPay Day exhibited at CEATEC, Tokyo.

11/08/2019 (opens new window)

DG Lab - BTCPay Foundation

DG became our third supported with 30k grant to BTCPay Foundation.

11/14/2019 (opens new window)

LND Migration tool

A long-awaited migration tool for LND legacy deployments introduced in v1.0.3.138.

11/16/2019 (opens new window)

LunaNode and Wallet of Satoshi

Two amazing companies, LunaNode and Wallet of Satoshi beacame the supporters of the BTCPay Foundation on November the 19th.

11/19/2019 (opens new window)

BTCPay Vault released

One of the most-exciting features of 2019, BTCPay Vault, released in the wild.

11/21/2019 (opens new window)

BTCPay Configurator preview

Early preview of the BTCPay Configuratior, a tool that will enable 1-click deployments in any enviroment.

11/22/2019 (opens new window)

# December

Russell Okung and BTCPay Cleats

Russell Okung, offensive tackle for the Los Angeles Chargers, announced he'll wear shoes with BTCPay logo.

12/04/2019 (opens new window)

Boltathon 2 - BTCPay and Lightnng

Brit Kelly and RockstarDev participated on second Boltathon.

12/07/2019 (opens new window)

BTCPay Community watching Chargers

Our community members gathered together and watched a stream of Chargers vs Eagles.

12/08/2019 (opens new window)

BTCPay Vault 1.0 released

After lots of testing, BTCPay Vault stable version released.

12/15/2019 (opens new window)

# Thank you!

Thank you for being here with us in 2019. We appreciate all the love, support and contributions.

Enjoy taking a look at 2019 highlights. Happy holidays, here's to another crazy year! 💚

+ (opens new window)

We like to say that every day, something is happening in BTCPay. With one more behind us, just like we did in 2018, (opens new window) we'd like reflect and remember the highlights from 2019.

Only by looking back at our failures and success, can we draw lessons for the future.

Today, we're reflecting at all the good, bad, ugly and crazy moments that happened in the past 365 days in BTCPay Server community.

# January

Telegram Group Launched

We've launched a Telegram group that now, nearly a year later has over 900 active members.

01/02/2019 (opens new window)

Lightning Joule Integration

Joule added an (opens new window)easy way to connect to a self-hosted BTCPay.

01/06/2019 (opens new window)

Running BTCPay Raspberry Pi 3 Guide

Step-by-step instructions for running BTCPay on Raspberry Pi 3.

01/07/2019 (opens new window)

New version 1.0.3.38 released

Introducing invoice search and better way to display LN node info

01/07/2019 (opens new window)

Better Invoice Accounting

A new way to export invoices in CSV for smoother accounting

01/10/2019 (opens new window)

Crowdfunding App

In 1.0.3.42 version, we introduced a brand-new app - Crowfunding

01/10/2019 (opens new window)

LibrePatron - Decentralized Patron

A third-party BTCPay plugin, called LibrePatron, released.

01/11/2019 (opens new window)

10 000 Twitter Followers

@BTCPayServer account on Twitter, reached 10k followers!

01/14/2019 (opens new window)

2 years since the stable release

On Jan 17th, we celebrated 2nd b-day of the stable BTCPay version.

01/17/2019 (opens new window)

The definite Guide to BTCPay Server

CoinCache.net released a 4-part series of articles on BTCPay Server.

01/21/2019 (opens new window)

New version 1.0.3.45 released

Better invoice pagination, fixed warnings and SMTP configurable on a store-level.

01/23/2019 (opens new window)

BTCPay Chat Migrated to Mattermost

Our community chat, migrated from Slack, to an open-source alternative - Mattermost.

01/07/2019 (opens new window)

Tutorial - Integrate Woo into Crowdfund app

Tutorial that enables integration of WooCommerce store and the Crowdfund app.

01/25/2019 (opens new window)

Woo integrated into BTCPay

Deploy WooCommerce store on top of the existing, self-hosted BTCPay Server.

01/27/2019 (opens new window)

# February

BTCPay Introductory video crowdfund campaign

3-day live-stream event where we successfully raised money for an introductory video,

02/02/2019 (opens new window)

People using Crowdfunding app to raise funds

People began using freshly-coded app in the wild, trying to raise funds for different causes.

02/05/2019 (opens new window)

BTCPay Workshop in Chicago

RockstarDev did a live-stream workshop in Chicago explaining the basics of BTCPay.

02/07/2019 (opens new window)

London Advancing Bitcoin 2019

Nicolas Dorier held a presentation in London, explaining the architecture of BTCPay Server.

02/08/2019 (opens new window)

Infographic - Common Merchant's problem

We created an infographic to showcase the common issues Bitcoin merchants face.

02/19/2019 (opens new window)

New version v1.0.3.55 released

This version introduced a lot of minor bug fixes and performance improvements.

02/27/2019 (opens new window)

Ride the Lightning integrated

RTL integration in BTCPay enabled easy-to-use UI for LND users.

02/27/2019 (opens new window)

1.0.3.65 - Payment Requests are here!

In 1.0.3.65 we released a new type of invoices, payment requests that became quite popular.

02/28/2019 (opens new window)

Interactive Mural by CryptoGraffity in Venezuela

Powered by BTCPay, raising money for daycare in Cúcuta for Venezuela refugee kids.

01/28/2019 (opens new window)

# March

Tor Support for BTCPay

We've integrated Tor Support for BTCPay as a default.

03/01/2019 (opens new window)

BTCPay HackDay

RockStarDev and Justin Moon organized a hackaton.

03/03/2019 (opens new window)

Host Bill App Software integrated BTCPay

All-in-One Hosting Command Center @hostbillappcom added BTCPay integration.

03/04/2019 (opens new window)

Guide - Running BTCPay on Digital Ocean

CoinCards founder Mike, created a guide on how to deploy BTCPay on a popular VPS provider - DO.

03/05/2019 (opens new window)

BTCPay Blog launched

We launched a blog so we can share stories, news and guides easily.

03/07/2019 (opens new window)

Mentioned on Canada Revenue Agency Audit

Canada Revenue Agency, released guidelines for crypto audit which mentions BTCPay.

03/08/2019 (opens new window)

Tutorial - How to Create Point of Sale

Tutorial explains how to use BTCPay Point Of Sale app in retail.

03/12/2019 (opens new window)

Article - Debunking BTCPay Server Myths

Article in which we tried to debunk some of the common misconceptions.

03/14/2019 (opens new window)

btcpayserver.org completely re-designed

Our main site went through an overhaul on March the 15th.

03/15/2019 (opens new window)

Python Client documentation refactored

Jeff V., the maintainer of the Python client, re-wrote the documentation.

03/17/2019 (opens new window)

# April

LN BIG Integration

A popular LN liquidity node provider developed an easy way to get inbound capacity from BTCPay nodes.

04/02/2019 (opens new window)

Jack followed @BTCPayServer

Jack gave our account a follow , which resulted in one of many poems we tweeted in 2019.

04/03/2019 (opens new window)

How BTCPay works Animated Video

In our efforts to show what happens behind the scenes, we created an animated video.

04/04/2019 (opens new window)

JooBar using BTCPay as their PoS

A bar based in Korea using btcpay web-point of sale as their main terminal.

04/08/2019 (opens new window)

Boltathon - Coding Session

RockstarDev and BritKelly participated in first-ever Boltathon conference.

04/10/2019 (opens new window)

WeAreAllHodlonaut

The crowdfunding campaign for the space cat from the community began

04/11/2019 (opens new window)

Over $30 000 raised for Hodlonaut

Crowdfunding campaign powered by BTCPay app, ended up raising over 30 000$.

04/13/2019 (opens new window)

BTCPay Intro video

After a successful crowdfunding, "What is BTCPay" animated video saw the light of day.

04/14/2019 (opens new window)

Article - How to accept Bitcoin Donations

Article explaining how to accept BTC donations privately and securely without middleman appeared on our blog.

04/25/2019 (opens new window)

# May

New big update 1.0.3.95

This version introduced a lot of new features (2F support, Bitcoin Full Node connect to mobile via QR code, external storage support)

05/07/2019 (opens new window)

PSBT Support added

Partially signed bitcoin transactions (PSBT) implemented for BTCPay Wallet.

05/08/2019 (opens new window)

ColdCard Integration

Version 1.0.3.99 introduced ColdCard integration for completely air-gapped wallet transactions.

05/13/2019 (opens new window)

Version 1.0.3.104

This released introduced tons of improvements in the wallet and added the ability to sign with xpriv if needed.

05/15/2019 (opens new window)

ACINQ - Eclair support

We've added the support for third LN implementation - Eclair.

05/15/2019 (opens new window)

NPM package for btcpay created

A NodeJS implementation for BTCPay was created.

05/17/2019 (opens new window)

Hello Bar - The first retail store to accept LN in Japan

By using BTCPay PoS, HelloBar became the first ever brick and mortar store to accept Lightning in Japan.

05/23/2019 (opens new window)

btcpayserver.org translated in over 15 languages

In less than 24 hours, our official site got translated in over 15 languages. To this day it's available in 24 languages.

05/30/2019 (opens new window)

# June

1.0.3.106 fixed a major vulnerability

Besides vulnerability fix, this release brought it BISQ integration, added Blockstream explorer

06/02/2019 (opens new window)

BTCPay and PayPal?

Some community members wanted PayPal integrated, we've put that on a vote, it ended up with a majority of users saying NO, and others freaking out.

06/06/2019 (opens new window)

# July

BitFlix - Streaming Service

One of our community members created a proof of concept app called Bitflix, Netflix alternative on the Lightning powered by BTCPay.

07/12/2019 (opens new window)

#BitcoinForTor

Crowdfunding campaign in partnership with the Tor Project, where community raised over 18k USD.

07/15/2019 (opens new window)

Stepan Livera Podcast Series

Stephan Livera interviewed BTCPay Server core contributors in a 4-part series.

07/16/2019 (opens new window)

BTCPay Server Directory launched

We created a BTCPay directory where merchants, developers and regular users can showcase their projects and shops.

07/21/2019 (opens new window)

BTCPay Integrated in a video game

A video game called Turbo '84 launched, which uses BTCPay as a back-end for receiving payments.

07/23/2019 (opens new window)

# August

Brainstorming the 2.0 UI

Early August, we began the initiative of including more UI/UX people on the project.

08/08/2019 (opens new window)

Version 1.0.3.127 released

1.0.3.127 introduced a vulnerability fix that affected third-party hosts and introduced wallet labels.

10/08/2019 (opens new window)

Tutorial Develop on Ubuntu

We released a video that explains how to develop BTCPay Server if you're using Ubuntu.

08/11/2019 (opens new window)

Tutorial BTCPay Docker under the hood

Detailed video series that explains in detail what happens under the hood in BTCPay Docke deployment.

08/14/2019 (opens new window)

XSS Vulnerability disclosure

On August 16th we published an XSS vulnerability disclosure.

08/16/2019 (opens new window)

This is lies! Our Second Birthday

August the 17th marked the two year anniversary of BTCPay. Happy Birthday!

08/17/2019 (opens new window)

# September

Version 1.0.3.128 is out

This release introduced a bunch of interesting features, including PoS app inventory management.

09/04/2019 (opens new window)

Lightning ATM

Lightning Network ATM, using BTCPay Server as a backend released.

08/09/2019 (opens new window)

Announcing BTCPay Server Foundation and Square Crypto Grant

One of the biggest 2019 highlights - BTCPay Foundation announced on BH2019 and our first grant from SquareCrypto.

09/14/2019 (opens new window)

First ever BTCPay Day

In Riga, we held our first BTCPay Day. A full-day event where community gathered. Over 70 members attended the first event in Latvia.

09/16/2019 (opens new window)

The Tor Project starts accepting donations via BTCPay

After a successful crowdfunding campaign, The Tor Project added donation button and started to accept Bitcoin donations directly.

09/19/2019 (opens new window)

# October

btcpayserver.org - redesigned again

We've been experimenting quite a lot and on October the 7nd, we polished our main site.

10/07/2019 (opens new window)

Hack0 - Plug and Play BTCPay node

Hack0, earlier announced in Riga, during the BTCPay Day exhibited at CEATEC, Tokyo.

10/08/2019 (opens new window)

Casa 2 announced with BTCPay Support

Popular plug and play full Bitcoin and Lightning Node Casa, announced Casa 2 wich arrives with BTCPay support.

10/08/2019 (opens new window)

Raspberry Pi 4 documentation

On October 9th, we've added documentation for Raspberry Pi 4 deployment.

10/09/2019 (opens new window)

Hong Kong Free Press

Hong Kong Free Press started using a self-hosted BTCPay Server to accept Bitcoin donations

10/10/2019 (opens new window)

LNConf Berlin

Large portion of our core team and community headed to Berlin for an amazing conference.

10/14/2019 (opens new window)

Lightnite Crowdfunding campaign

Satoshi Games launched a crowdfunding campaign powered by BTCPay for their PC game.

10/19/2019 (opens new window)

BTCPay Workshop

In Berlin, RockstarDev and Kukks held a workshop on how to obsolete Meetup app, by using BTCPay Transmuter.

10/20/2019 (opens new window)

Pretix - Ticketing System integrates BTCPay

An open-source ticket and event software Pretix starts using BTCPay Server.

10/20/2019 (opens new window)

Version 1.0.3.134

New version, 1.0.3.134 introduced recommended fee on the invoice page and tons UI improvements.

10/23/2019 (opens new window)

# November

Ruby Integration

Our community member wrote an in-depth tutorial on how to integrate Ruby's SDK and BTCPay.

11/06/2019 (opens new window)

ACINQ - BTCPay Foundation

ACINQ became the second company to support BTCPay Server Foundation with a 10k grant.

11/07/2019 (opens new window)

Version 1.0.3.137

This major version introduced front-page re-design, ElectrumX support and Fully Noded integration.

11/07/2019 (opens new window)

Hack0 - Plug and Play BTCPay node

Hack0, earlier announced in Riga, during the BTCPay Day exhibited at CEATEC, Tokyo.

11/08/2019 (opens new window)

DG Lab - BTCPay Foundation

DG became our third supported with 30k grant to BTCPay Foundation.

11/14/2019 (opens new window)

LND Migration tool

A long-awaited migration tool for LND legacy deployments introduced in v1.0.3.138.

11/16/2019 (opens new window)

LunaNode and Wallet of Satoshi

Two amazing companies, LunaNode and Wallet of Satoshi beacame the supporters of the BTCPay Foundation on November the 19th.

11/19/2019 (opens new window)

BTCPay Vault released

One of the most-exciting features of 2019, BTCPay Vault, released in the wild.

11/21/2019 (opens new window)

BTCPay Configurator preview

Early preview of the BTCPay Configuratior, a tool that will enable 1-click deployments in any enviroment.

11/22/2019 (opens new window)

# December

Russell Okung and BTCPay Cleats

Russell Okung, offensive tackle for the Los Angeles Chargers, announced he'll wear shoes with BTCPay logo.

12/04/2019 (opens new window)

Boltathon 2 - BTCPay and Lightnng

Brit Kelly and RockstarDev participated on second Boltathon.

12/07/2019 (opens new window)

BTCPay Community watching Chargers

Our community members gathered together and watched a stream of Chargers vs Eagles.

12/08/2019 (opens new window)

BTCPay Vault 1.0 released

After lots of testing, BTCPay Vault stable version released.

12/15/2019 (opens new window)

# Thank you!

Thank you for being here with us in 2019. We appreciate all the love, support and contributions.

Enjoy taking a look at 2019 highlights. Happy holidays, here's to another crazy year! 💚

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/404.html b/404.html index afa4fd78..9d2d85c6 100644 --- a/404.html +++ b/404.html @@ -12,13 +12,13 @@ - + -

404

How did we get here?
+ - + diff --git a/announcing-btcpay-directory/index.html b/announcing-btcpay-directory/index.html index e70bfd6e..1707d65e 100644 --- a/announcing-btcpay-directory/index.html +++ b/announcing-btcpay-directory/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window)
GitHub - (opens new window)

Today, we're releasing BTCPay Server Directory (opens new window). An index of businesses, non-profits organizations and individuals that use BTCPay Server and want to showcase their donation pages, apps, crowdfunding campaigns or projects.

BTCPay Server Directory

Promoting a Bitcoin business can be challenging. Advertising networks are notorious for censoring and blocking cryptocurrency ads. Merchants reported that their legit ad campaigns were getting shut down by Google, Facebook and even a portion of e-mail providers.

The idea of a Bitcoin directory isn't new. There are plenty of directories out there. Our focus is on showcasing self-sovereign businesses and projects that use our open-source payment processor and helping them get the word out.

BTCPay Server directory is a community effort. The idea was born on our Telegram Chat (opens new window) a few weeks ago. A small team called the "task force (opens new window)" volunteered and helped bring the project from idea to reality. We formed a #Directory channel on BTCPay Chat and started working.

As you know, BTCPay (opens new window) is free and open-source software that doesn't collect data on the users. The entries included in the directory are gathered from the tweets or our community chats, where community members shared their projects.

# Submitting your entry

If you're using BTCPay and want to be listed, submit your entry (opens new window) and we'll add you as soon as possible.

This community project is still a work in progress. If you have any feedback or you have the skills and want to help us improve it, install the Mattermost (opens new window) app on your mobile or desktop and join us in #directory (opens new window) channel.

# Thank you to our contributors

The following contributors helped bring BTCPay Directory to life:

VISIT DIRECTORY (opens new window)

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Today, we're releasing BTCPay Server Directory (opens new window). An index of businesses, non-profits organizations and individuals that use BTCPay Server and want to showcase their donation pages, apps, crowdfunding campaigns or projects.

BTCPay Server Directory

Promoting a Bitcoin business can be challenging. Advertising networks are notorious for censoring and blocking cryptocurrency ads. Merchants reported that their legit ad campaigns were getting shut down by Google, Facebook and even a portion of e-mail providers.

The idea of a Bitcoin directory isn't new. There are plenty of directories out there. Our focus is on showcasing self-sovereign businesses and projects that use our open-source payment processor and helping them get the word out.

BTCPay Server directory is a community effort. The idea was born on our Telegram Chat (opens new window) a few weeks ago. A small team called the "task force (opens new window)" volunteered and helped bring the project from idea to reality. We formed a #Directory channel on BTCPay Chat and started working.

As you know, BTCPay (opens new window) is free and open-source software that doesn't collect data on the users. The entries included in the directory are gathered from the tweets or our community chats, where community members shared their projects.

# Submitting your entry

If you're using BTCPay and want to be listed, submit your entry (opens new window) and we'll add you as soon as possible.

This community project is still a work in progress. If you have any feedback or you have the skills and want to help us improve it, install the Mattermost (opens new window) app on your mobile or desktop and join us in #directory (opens new window) channel.

# Thank you to our contributors

The following contributors helped bring BTCPay Directory to life:

VISIT DIRECTORY (opens new window)

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/assets/js/37.f5182182.js b/assets/js/37.bc7f151f.js similarity index 99% rename from assets/js/37.f5182182.js rename to assets/js/37.bc7f151f.js index 0d30c376..a3ba9c07 100644 --- a/assets/js/37.f5182182.js +++ b/assets/js/37.bc7f151f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{358:function(e,t,r){"use strict";r.r(t);var a=r(10),o=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("This tutorial shows you how to create a Bitcoin Point of Sale and accept BTC payments (on-chain and via the Lightning Network). When you complete it, hopefully, you'll have a web-based PoS that requires no additional hardware. It will run as a web app from a browser of your mobile phone or tablet.")]),e._v(" "),t("p",[e._v("Most importantly, there will be no fees or intermediary. Customers will be presented with an invoice they have to pay from their wallet. The BTC you receive will go straight to your wallet. Optionally, you can enable tips and customize the percentage as well as the overall appearance of the PoS.")]),e._v(" "),t("p",[t("em",[t("strong",[e._v("BTCPay Point Of Sale - a web-based app that allows you to receive Bitcoin payments with no intermediary or fees, from any old tablet or phone:")])])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Bitcoin-Point-Of-Sale-1024x768.jpg",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"requirements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#requirements"}},[e._v("#")]),e._v(" Requirements")]),e._v(" "),t("p",[e._v("Before we dive into the guide, here are some requirements:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"http://btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay Server"),t("OutboundLink")],1),e._v(" (self-hosted or hosted by a third-party)")]),e._v(" "),t("li",[e._v("Phone or a tablet, PC (Digital display)")]),e._v(" "),t("li",[e._v("Internet connection")])]),e._v(" "),t("h2",{attrs:{id:"steps"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#steps"}},[e._v("#")]),e._v(" Steps")]),e._v(" "),t("ol",[t("li",[e._v("Deploy BTCPay Server")]),e._v(" "),t("li",[e._v("Configure BTCPay (Register User, Create Store, Add Wallet)")]),e._v(" "),t("li",[e._v("Create a PoS app")]),e._v(" "),t("li",[e._v("Add PoS as to a home screen of your tablet or phone")])]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/Mz4uajz0z9Y/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=Mz4uajz0z9Y","data-id":"Mz4uajz0z9Y"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/Mz4uajz0z9Y?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("h2",{attrs:{id:"step-1-deploying-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-1-deploying-btcpay"}},[e._v("#")]),e._v(" Step 1 - Deploying BTCPay")]),e._v(" "),t("p",[e._v("BTCPay Server is a free and open-source cryptocurrency payment processor (Hey, you're reading our blog!).")]),e._v(" "),t("p",[e._v("You've heard of WordPress, the Content Management System that allows people to build sites with ease.")]),e._v(" "),t("p",[e._v("BTCPay is a WordPress of finance. It allows you to become your own bank or payment processor with a complete self-hosted technology stack. It's free and the entire source code can be found on "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("There are many ways in which one can deploy BTCPay. I recommend that you check out extensive "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/deployment",target:"_blank",rel:"noopener noreferrer"}},[e._v("deployment documentation"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Besides self-hosting, you can use someone else's server. That's called "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/thirdpartyhosting",target:"_blank",rel:"noopener noreferrer"}},[e._v("third-party hosting"),t("OutboundLink")],1),e._v(". Majority of community members allow people to use their servers for free.  Make sure to understand risks that trusting a third-party brings.")]),e._v(" "),t("p",[e._v("Make sure to read our third-party documentation to understand why chose one over the other. Third-party servers come with some limitations, but you can use them for testing purposes.")]),e._v(" "),t("p",[e._v("To deploy a self-hosted BTCPay you can follow a tutorial below.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/oce_fvRdLLY/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=oce_fvRdLLY","data-id":"oce_fvRdLLY"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/oce_fvRdLLY?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("If you don't want to invest time and efforts into self-hosting a server at this point, you can just hop on to our "),t("a",{attrs:{href:"https://mainnet.demo.btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("demo server"),t("OutboundLink")],1),e._v(" and go to step 2.")]),e._v(" "),t("h2",{attrs:{id:"step-2-registering-creating-a-store-connecting-a-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-2-registering-creating-a-store-connecting-a-wallet"}},[e._v("#")]),e._v(" Step 2 - Registering, creating a store, connecting a wallet")]),e._v(" "),t("p",[e._v("No matter if you decided to go with a self-hosted, a third-party host or our demo server, the rest of the setup is the same for all.")]),e._v(" "),t("h3",{attrs:{id:"21-creating-an-account"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#21-creating-an-account"}},[e._v("#")]),e._v(" 2.1 - Creating an account")]),e._v(" "),t("p",[e._v('Register an account on BTCPay Server by clicking the "Register" link in the top menu. Enter your credentials. Some hosts may require that you verify e-mail upon registration. For the self-hosted server, the first registered user is a server admin.')]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Register-on-BTCPay-Server.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Register-account-on-BTCPay-Server.png",alt:""}})]),e._v(" "),t("h3",{attrs:{id:"22-creating-a-store"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#22-creating-a-store"}},[e._v("#")]),e._v(" 2.2 - Creating a store")]),e._v(" "),t("p",[e._v("Now that you're logged in, create a store. In BTCPay you can create an unlimited amount of stores. Each stores is unique entity and can be customized. The store is later tied to your wallet and whatever app you're creating.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Snag_141f090.png",alt:""}})]),e._v(" "),t("p",[e._v("Create a new store and give it a name. You'll see the message that the store is successfully created. If you wish, you can configure your store settings. For most people, the default setup is okay. Do not navigate away from the store settings, scroll down to configure your wallet.")]),e._v(" "),t("p",[t("em",[t("strong",[e._v("Create a store and give it a name:")])])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-Create-A-store.png",alt:""}})]),e._v(" "),t("p",[t("em",[t("strong",[e._v("Store successfully created. If you wish you can customize basic settings, or just scroll down to connect your wallet:")])])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-Creating-A-store.png",alt:""}})]),e._v(" "),t("h3",{attrs:{id:"23-connecting-a-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#23-connecting-a-wallet"}},[e._v("#")]),e._v(" 2.3 - Connecting a wallet")]),e._v(" "),t("p",[e._v("As I already said, the beauty of using BTCPay is that there will be no fees on transaction, registration or membership. Furthermore, BTCPay does not require your private key. You're just adding an xpub key from your wallet.")]),e._v(" "),t("ul",[t("li",[e._v("BTCPay does not know nor has access to your private key")]),e._v(" "),t("li",[e._v("You're uploading xpubkey from external Bitcoin wallet - Electrum for example")])]),e._v(" "),t("p",[e._v("There are two ways in which you can connect your BTCPay to your wallet:")]),e._v(" "),t("ol",[t("li",[e._v("Automatic with Ledger Nano")]),e._v(" "),t("li",[e._v("Manual with any wallet supporting xpub ("),t("a",{attrs:{href:"https://electrum.org/#home",target:"_blank",rel:"noopener noreferrer"}},[e._v("Electrum"),t("OutboundLink")],1),e._v(" recommended)")])]),e._v(" "),t("p",[e._v("Input your xpub, then on the second screen, if you see a wrong address, input the first address of your wallet so that BTCPay can help you to configure correctly.")]),e._v(" "),t("p",[e._v("The video below explains how to connect your wallet to your BTCPay store.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/xX6LyQej0NQ/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=xX6LyQej0NQ","data-id":"xX6LyQej0NQ"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/xX6LyQej0NQ?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("If your BTCPay is self-hosted, you can "),t("a",{attrs:{href:"https://docs.btcpayserver.org/features/lightningnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("enable Lightning Network payments"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"step-3-creating-point-of-sale-app"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-3-creating-point-of-sale-app"}},[e._v("#")]),e._v(" Step 3 - Creating Point of Sale app")]),e._v(" "),t("p",[e._v("Once you created a store and connected a wallet to it, the fun part begins. In this step, we'll be creating a Point of Sale web-app.")]),e._v(" "),t("ol",[t("li",[e._v("Go to > Apps")]),e._v(" "),t("li",[e._v("Create a new App")]),e._v(" "),t("li",[e._v("Add the name of your app and associate it with a store you created earlier")]),e._v(" "),t("li",[e._v("Customize your PoS by adding your own items with prices, photos, and a description.")]),e._v(" "),t("li",[e._v('Click "Submit query".')]),e._v(" "),t("li",[e._v('Click "View" to preview your app (Your customers can access the PoS through that link).')])]),e._v(" "),t("p",[e._v("When creating a PoS app, it is essential that you "),t("strong",[e._v("enable cart option.")])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-PoS-App-1.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-PoS-App-2.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-PoS-App-3.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-PoS-App-4.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-PoS-App-5.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-PoS-App-6.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-PoS-App-7.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"step-4-adding-link-as-a-desktop-shortcut"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-4-adding-link-as-a-desktop-shortcut"}},[e._v("#")]),e._v(" Step 4 - Adding link as a desktop shortcut")]),e._v(" "),t("p",[e._v("Now that the PoS is created, the last step is to add it to the home screen. This allows you to quickly access your app.")]),e._v(" "),t("p",[e._v("You can further "),t("a",{attrs:{href:"https://docs.btcpayserver.org/faq-and-common-issues/faq-serversettings#how-to-modify-the-checkout-page",target:"_blank",rel:"noopener noreferrer"}},[e._v("customize the checkout"),t("OutboundLink")],1),e._v(" or "),t("a",{attrs:{href:"https://docs.btcpayserver.org/development/theme",target:"_blank",rel:"noopener noreferrer"}},[e._v("change the theme of the PoS"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[t("em",[t("strong",[e._v("Add PoS to homescreen iOS:")])])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/PoS-iOS-add-to-homescreen.jpg",alt:""}})]),e._v(" "),t("p",[t("em",[t("strong",[e._v("Add PoS to homescreen Android:")])])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/PoS-Android-add-to-homescreen.jpg",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"dont-buy-bitcoin-earn-it"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dont-buy-bitcoin-earn-it"}},[e._v("#")]),e._v(" Don't buy Bitcoin - earn it")]),e._v(" "),t("p",[e._v("There you have it. I really hope that this quick tutorial enabled you to create a Point Of Sale app and accept Bitcoin in your store or online. Payments go directly to your wallet with no fees and if you self-host BTCPay, you're increasing "),t("a",{attrs:{href:"https://en.bitcoin.it/wiki/Privacy",target:"_blank",rel:"noopener noreferrer"}},[e._v("privacy"),t("OutboundLink")],1),e._v(" and security for yourself and customers by "),t("a",{attrs:{href:"https://en.bitcoin.it/wiki/Full_node",target:"_blank",rel:"noopener noreferrer"}},[e._v("running a full node"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("If require more information, please refer to our extensive documentation. For questions, visit our "),t("a",{attrs:{href:"https://chat.btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat"),t("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{357:function(e,t,r){"use strict";r.r(t);var a=r(10),o=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("This tutorial shows you how to create a Bitcoin Point of Sale and accept BTC payments (on-chain and via the Lightning Network). When you complete it, hopefully, you'll have a web-based PoS that requires no additional hardware. It will run as a web app from a browser of your mobile phone or tablet.")]),e._v(" "),t("p",[e._v("Most importantly, there will be no fees or intermediary. Customers will be presented with an invoice they have to pay from their wallet. The BTC you receive will go straight to your wallet. Optionally, you can enable tips and customize the percentage as well as the overall appearance of the PoS.")]),e._v(" "),t("p",[t("em",[t("strong",[e._v("BTCPay Point Of Sale - a web-based app that allows you to receive Bitcoin payments with no intermediary or fees, from any old tablet or phone:")])])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Bitcoin-Point-Of-Sale-1024x768.jpg",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"requirements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#requirements"}},[e._v("#")]),e._v(" Requirements")]),e._v(" "),t("p",[e._v("Before we dive into the guide, here are some requirements:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"http://btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay Server"),t("OutboundLink")],1),e._v(" (self-hosted or hosted by a third-party)")]),e._v(" "),t("li",[e._v("Phone or a tablet, PC (Digital display)")]),e._v(" "),t("li",[e._v("Internet connection")])]),e._v(" "),t("h2",{attrs:{id:"steps"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#steps"}},[e._v("#")]),e._v(" Steps")]),e._v(" "),t("ol",[t("li",[e._v("Deploy BTCPay Server")]),e._v(" "),t("li",[e._v("Configure BTCPay (Register User, Create Store, Add Wallet)")]),e._v(" "),t("li",[e._v("Create a PoS app")]),e._v(" "),t("li",[e._v("Add PoS as to a home screen of your tablet or phone")])]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/Mz4uajz0z9Y/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=Mz4uajz0z9Y","data-id":"Mz4uajz0z9Y"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/Mz4uajz0z9Y?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("h2",{attrs:{id:"step-1-deploying-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-1-deploying-btcpay"}},[e._v("#")]),e._v(" Step 1 - Deploying BTCPay")]),e._v(" "),t("p",[e._v("BTCPay Server is a free and open-source cryptocurrency payment processor (Hey, you're reading our blog!).")]),e._v(" "),t("p",[e._v("You've heard of WordPress, the Content Management System that allows people to build sites with ease.")]),e._v(" "),t("p",[e._v("BTCPay is a WordPress of finance. It allows you to become your own bank or payment processor with a complete self-hosted technology stack. It's free and the entire source code can be found on "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("There are many ways in which one can deploy BTCPay. I recommend that you check out extensive "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/deployment",target:"_blank",rel:"noopener noreferrer"}},[e._v("deployment documentation"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Besides self-hosting, you can use someone else's server. That's called "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/thirdpartyhosting",target:"_blank",rel:"noopener noreferrer"}},[e._v("third-party hosting"),t("OutboundLink")],1),e._v(". Majority of community members allow people to use their servers for free.  Make sure to understand risks that trusting a third-party brings.")]),e._v(" "),t("p",[e._v("Make sure to read our third-party documentation to understand why chose one over the other. Third-party servers come with some limitations, but you can use them for testing purposes.")]),e._v(" "),t("p",[e._v("To deploy a self-hosted BTCPay you can follow a tutorial below.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/oce_fvRdLLY/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=oce_fvRdLLY","data-id":"oce_fvRdLLY"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/oce_fvRdLLY?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("If you don't want to invest time and efforts into self-hosting a server at this point, you can just hop on to our "),t("a",{attrs:{href:"https://mainnet.demo.btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("demo server"),t("OutboundLink")],1),e._v(" and go to step 2.")]),e._v(" "),t("h2",{attrs:{id:"step-2-registering-creating-a-store-connecting-a-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-2-registering-creating-a-store-connecting-a-wallet"}},[e._v("#")]),e._v(" Step 2 - Registering, creating a store, connecting a wallet")]),e._v(" "),t("p",[e._v("No matter if you decided to go with a self-hosted, a third-party host or our demo server, the rest of the setup is the same for all.")]),e._v(" "),t("h3",{attrs:{id:"21-creating-an-account"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#21-creating-an-account"}},[e._v("#")]),e._v(" 2.1 - Creating an account")]),e._v(" "),t("p",[e._v('Register an account on BTCPay Server by clicking the "Register" link in the top menu. Enter your credentials. Some hosts may require that you verify e-mail upon registration. For the self-hosted server, the first registered user is a server admin.')]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Register-on-BTCPay-Server.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Register-account-on-BTCPay-Server.png",alt:""}})]),e._v(" "),t("h3",{attrs:{id:"22-creating-a-store"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#22-creating-a-store"}},[e._v("#")]),e._v(" 2.2 - Creating a store")]),e._v(" "),t("p",[e._v("Now that you're logged in, create a store. In BTCPay you can create an unlimited amount of stores. Each stores is unique entity and can be customized. The store is later tied to your wallet and whatever app you're creating.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Snag_141f090.png",alt:""}})]),e._v(" "),t("p",[e._v("Create a new store and give it a name. You'll see the message that the store is successfully created. If you wish, you can configure your store settings. For most people, the default setup is okay. Do not navigate away from the store settings, scroll down to configure your wallet.")]),e._v(" "),t("p",[t("em",[t("strong",[e._v("Create a store and give it a name:")])])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-Create-A-store.png",alt:""}})]),e._v(" "),t("p",[t("em",[t("strong",[e._v("Store successfully created. If you wish you can customize basic settings, or just scroll down to connect your wallet:")])])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-Creating-A-store.png",alt:""}})]),e._v(" "),t("h3",{attrs:{id:"23-connecting-a-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#23-connecting-a-wallet"}},[e._v("#")]),e._v(" 2.3 - Connecting a wallet")]),e._v(" "),t("p",[e._v("As I already said, the beauty of using BTCPay is that there will be no fees on transaction, registration or membership. Furthermore, BTCPay does not require your private key. You're just adding an xpub key from your wallet.")]),e._v(" "),t("ul",[t("li",[e._v("BTCPay does not know nor has access to your private key")]),e._v(" "),t("li",[e._v("You're uploading xpubkey from external Bitcoin wallet - Electrum for example")])]),e._v(" "),t("p",[e._v("There are two ways in which you can connect your BTCPay to your wallet:")]),e._v(" "),t("ol",[t("li",[e._v("Automatic with Ledger Nano")]),e._v(" "),t("li",[e._v("Manual with any wallet supporting xpub ("),t("a",{attrs:{href:"https://electrum.org/#home",target:"_blank",rel:"noopener noreferrer"}},[e._v("Electrum"),t("OutboundLink")],1),e._v(" recommended)")])]),e._v(" "),t("p",[e._v("Input your xpub, then on the second screen, if you see a wrong address, input the first address of your wallet so that BTCPay can help you to configure correctly.")]),e._v(" "),t("p",[e._v("The video below explains how to connect your wallet to your BTCPay store.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/xX6LyQej0NQ/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=xX6LyQej0NQ","data-id":"xX6LyQej0NQ"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/xX6LyQej0NQ?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("If your BTCPay is self-hosted, you can "),t("a",{attrs:{href:"https://docs.btcpayserver.org/features/lightningnetwork",target:"_blank",rel:"noopener noreferrer"}},[e._v("enable Lightning Network payments"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"step-3-creating-point-of-sale-app"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-3-creating-point-of-sale-app"}},[e._v("#")]),e._v(" Step 3 - Creating Point of Sale app")]),e._v(" "),t("p",[e._v("Once you created a store and connected a wallet to it, the fun part begins. In this step, we'll be creating a Point of Sale web-app.")]),e._v(" "),t("ol",[t("li",[e._v("Go to > Apps")]),e._v(" "),t("li",[e._v("Create a new App")]),e._v(" "),t("li",[e._v("Add the name of your app and associate it with a store you created earlier")]),e._v(" "),t("li",[e._v("Customize your PoS by adding your own items with prices, photos, and a description.")]),e._v(" "),t("li",[e._v('Click "Submit query".')]),e._v(" "),t("li",[e._v('Click "View" to preview your app (Your customers can access the PoS through that link).')])]),e._v(" "),t("p",[e._v("When creating a PoS app, it is essential that you "),t("strong",[e._v("enable cart option.")])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-PoS-App-1.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-PoS-App-2.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-PoS-App-3.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-PoS-App-4.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-PoS-App-5.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-PoS-App-6.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-PoS-App-7.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"step-4-adding-link-as-a-desktop-shortcut"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#step-4-adding-link-as-a-desktop-shortcut"}},[e._v("#")]),e._v(" Step 4 - Adding link as a desktop shortcut")]),e._v(" "),t("p",[e._v("Now that the PoS is created, the last step is to add it to the home screen. This allows you to quickly access your app.")]),e._v(" "),t("p",[e._v("You can further "),t("a",{attrs:{href:"https://docs.btcpayserver.org/faq-and-common-issues/faq-serversettings#how-to-modify-the-checkout-page",target:"_blank",rel:"noopener noreferrer"}},[e._v("customize the checkout"),t("OutboundLink")],1),e._v(" or "),t("a",{attrs:{href:"https://docs.btcpayserver.org/development/theme",target:"_blank",rel:"noopener noreferrer"}},[e._v("change the theme of the PoS"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[t("em",[t("strong",[e._v("Add PoS to homescreen iOS:")])])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/PoS-iOS-add-to-homescreen.jpg",alt:""}})]),e._v(" "),t("p",[t("em",[t("strong",[e._v("Add PoS to homescreen Android:")])])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/PoS-Android-add-to-homescreen.jpg",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"dont-buy-bitcoin-earn-it"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dont-buy-bitcoin-earn-it"}},[e._v("#")]),e._v(" Don't buy Bitcoin - earn it")]),e._v(" "),t("p",[e._v("There you have it. I really hope that this quick tutorial enabled you to create a Point Of Sale app and accept Bitcoin in your store or online. Payments go directly to your wallet with no fees and if you self-host BTCPay, you're increasing "),t("a",{attrs:{href:"https://en.bitcoin.it/wiki/Privacy",target:"_blank",rel:"noopener noreferrer"}},[e._v("privacy"),t("OutboundLink")],1),e._v(" and security for yourself and customers by "),t("a",{attrs:{href:"https://en.bitcoin.it/wiki/Full_node",target:"_blank",rel:"noopener noreferrer"}},[e._v("running a full node"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("If require more information, please refer to our extensive documentation. For questions, visit our "),t("a",{attrs:{href:"https://chat.btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat"),t("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/38.c2ba7acc.js b/assets/js/38.06c0fd2f.js similarity index 99% rename from assets/js/38.c2ba7acc.js rename to assets/js/38.06c0fd2f.js index faeb86bc..65bb9e78 100644 --- a/assets/js/38.c2ba7acc.js +++ b/assets/js/38.06c0fd2f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{357:function(t,e,a){"use strict";a.r(e);var n=a(10),r=Object(n.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("figure",[e("img",{attrs:{src:"/images/BitPaint_Profil.gif",alt:"Bitpaint dancing for the BTCPay Server gods",title:"Bitpaint dancing for the BTCPay Server gods"}})]),t._v(" "),e("p",[t._v("Hi, I'm Bitpaint, a French Bitcoiner from the 2017 bubble.")]),t._v(" "),e("p",[t._v("I repair bicycles for a living, do graffiti as a hobby and recently discovered game development, which led me to what I do now: creating VR digital content & painting Bitcoin graffiti.")]),t._v(" "),e("p",[t._v("I also grow strawberries.")]),t._v(" "),e("h2",{attrs:{id:""}},[e("a",{staticClass:"header-anchor",attrs:{href:"#"}},[t._v("#")])]),t._v(" "),e("p",[e("strong",[t._v("Your History")])]),t._v(" "),e("hr"),t._v(" "),e("p",[e("strong",[t._v("Hi Bitpaint, thank you for accepting this interview.")]),t._v(" "),e("strong",[t._v("Let's start with the most classic of classic questions, how did you get in the Bitcoin space ?")])]),t._v(" "),e("p",[t._v("That's a question I keep asking myself.\nI've been searching my e-mail and browsing history to find out how I discovered Bitcoin but can't really find out.")]),t._v(" "),e("p",[t._v("It was certainly due to my curiosity. I think It was in early 2017 and I was in it for the money (like most of us at the beginning!) before understanding that there is something else going on ... I learned a lot during the “bear market”.")]),t._v(" "),e("p",[e("strong",[t._v("How did you connect your work, passions (Art, Virtual Reality) and family life with Bitcoin ?")])]),t._v(" "),e("blockquote",[e("p",[t._v('"[...]Artists will tell you that art is about “spreading a message” which I always thought was nonsense [...] until I had a message to spread: '),e("strong",[t._v("BITCOIN!")]),t._v('"')])]),t._v(" "),e("p",[t._v("Well I've been painting graffitis for 10 years and everybody in the graffiti space put his name on a wall.\nAgain, again and again.\nThis is how you gain “fame”, by being everywhere, know what I mean?\nSo yeah I was doing this for a long time and then I realized that instead of writing my name I can write something related to Bitcoin. A lot of artists will tell you that art is about “spreading a message” which I always thought was nonsense.\nAt least it was, until I had a message to spread: "),e("strong",[t._v("BITCOIN!")])]),t._v(" "),e("p",[t._v("When covid started, i got locked down like many others. I discovered VR while attending Bitcoin community meet-ups. I also discovered that I can create stuff with my computer, I had the pleasure to write an article called "),e("a",{attrs:{href:"https://www.citadel21.com/vr-for-bitcoiners",target:"_blank",rel:"noopener noreferrer"}},[t._v("VR for Bitcoiners"),e("OutboundLink")],1),t._v(' in CTDL21 about all of this "reorientation".\nI\'m still painting but i also create Bitcoin VR worlds.')]),t._v(" "),e("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/512gtbq1M48/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=512gtbq1M48","data-id":"512gtbq1M48"}},[e("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/512gtbq1M48?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),t._v(" "),e("p",[t._v("Bitcoin Campfire 1.10 - VR world by Bitpaint")]),t._v(" "),e("h2",{attrs:{id:"the-btcpay-server-encounter"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#the-btcpay-server-encounter"}},[t._v("#")]),t._v(" "),e("strong",[t._v("The BTCPay Server encounter")])]),t._v(" "),e("hr"),t._v(" "),e("p",[e("strong",[t._v("In your voyage through the Bitcoin space, when did you encounter BTCPay Server for the first time ?")])]),t._v(" "),e("p",[t._v("Well I was selling stuff on on my webshop with a Woocommerce plugin. I was running on Opennode, not BTCPay Server.\nBut then our friends at the “KYC” special unit said to Opennode:\n- You must KYC all the merchants.\nNo way I KYC this little online shop. At this point I really had to run the payment processor myself. So I switched to my own BTCPay Server instance hosted on Lunanode within 48hours. It was so easy to setup, amazing service by Lunanode, I recommend it to everybody.")]),t._v(" "),e("p",[e("strong",[t._v("How do you use and/or promote BTCPay Server ?")])]),t._v(" "),e("p",[t._v("For now my shop is closed since covid. So I only receive tips via BTCPay Server but that's working fine. I love lightning and I'm really happy to have this setup! I promote BTCPay as much as I can to merchants but nobody in my area seems to care about it, for now... Or It's just that I'm a bad salesman !\nI can't wait for “"),e("a",{attrs:{href:"https://twitter.com/DennisReimann/status/1318867853689454592",target:"_blank",rel:"noopener noreferrer"}},[t._v("Lightning Bank"),e("OutboundLink")],1),t._v("” to be able to setup Lightning wallets for my friends and family.")]),t._v(" "),e("figure",[e("img",{attrs:{src:"/images/Bitcoin.jpg",alt:"Bitcoin graffiti - By Bitpaint",title:"Bitcoin graffiti - By Bitpaint"}})]),t._v(" "),e("h2",{attrs:{id:"future-thoughts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#future-thoughts"}},[t._v("#")]),t._v(" Future thoughts")]),t._v(" "),e("hr"),t._v(" "),e("p",[e("strong",[t._v("In your opinion, as an Artist and Virtual World creator, does BTCPay Server have it's place in helping your community (Artists, content creators of all sorts) ?")])]),t._v(" "),e("p",[t._v("Well I think that a better Patreon-like page would be amazing!\nContent creators that don't really want to sell things but rather be funded by their community that are willing to pay a few sats per month just to support the work and make it possible. I think the BTCPay Server Foundation is a nice example of this kind of funding.")]),t._v(" "),e("p",[t._v("I'm always sad to see “Bitcoiners” asking their community to subscribe via Patreon, so maybe BTCPay Server can make this obsolete too.")]),t._v(" "),e("p",[e("strong",[t._v("What feature/use-case would you like to see implemented/developed in or on top of "),e("strong",[t._v("BTCPay Server")]),t._v(" for it to become (even more) suitable for the artistic scene ?")])]),t._v(" "),e("p",[t._v("I'd like to have a easier way to install BTCPay on a Raspberry Pi4 for less tech savvy users.\nAnd I already touched on this above, but I'm really bullish on "),e("a",{attrs:{href:"https://twitter.com/DennisReimann/status/1318867853689454592",target:"_blank",rel:"noopener noreferrer"}},[t._v("Lightning Bank"),e("OutboundLink")],1),t._v(", it's a huge feature!")]),t._v(" "),e("p",[e("strong",[t._v("Where can our readers find you ?")])]),t._v(" "),e("p",[t._v("You can find me on the internet:")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://bitpaint.club/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Bitpaint.club"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://twitter.com/Bitpaintclub",target:"_blank",rel:"noopener noreferrer"}},[t._v("Twitter.com"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://www.instagram.com/bitpaint.club/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Instagram"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://bitcoinhackers.org/@bitpaint",target:"_blank",rel:"noopener noreferrer"}},[t._v("Mastodon"),e("OutboundLink")],1)]),t._v(" "),e("li",[t._v("Tip me using BTCPay Server at "),e("a",{attrs:{href:"http://bitpaint.club",target:"_blank",rel:"noopener noreferrer"}},[t._v("bitpaint.club"),e("OutboundLink")],1)])]),t._v(" "),e("p",[t._v("DM's are opens!\nThank you a lot for this interview!")]),t._v(" "),e("hr"),t._v(" "),e("p",[t._v("If you’d like to help us tell your story next, join our "),e("a",{attrs:{href:"https://chat.btcpayserver.org/btcpayserver/channels/content-creation",target:"_blank",rel:"noopener noreferrer"}},[t._v("community chat"),e("OutboundLink")],1),t._v(" and let us know.")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{358:function(t,e,a){"use strict";a.r(e);var n=a(10),r=Object(n.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("figure",[e("img",{attrs:{src:"/images/BitPaint_Profil.gif",alt:"Bitpaint dancing for the BTCPay Server gods",title:"Bitpaint dancing for the BTCPay Server gods"}})]),t._v(" "),e("p",[t._v("Hi, I'm Bitpaint, a French Bitcoiner from the 2017 bubble.")]),t._v(" "),e("p",[t._v("I repair bicycles for a living, do graffiti as a hobby and recently discovered game development, which led me to what I do now: creating VR digital content & painting Bitcoin graffiti.")]),t._v(" "),e("p",[t._v("I also grow strawberries.")]),t._v(" "),e("h2",{attrs:{id:""}},[e("a",{staticClass:"header-anchor",attrs:{href:"#"}},[t._v("#")])]),t._v(" "),e("p",[e("strong",[t._v("Your History")])]),t._v(" "),e("hr"),t._v(" "),e("p",[e("strong",[t._v("Hi Bitpaint, thank you for accepting this interview.")]),t._v(" "),e("strong",[t._v("Let's start with the most classic of classic questions, how did you get in the Bitcoin space ?")])]),t._v(" "),e("p",[t._v("That's a question I keep asking myself.\nI've been searching my e-mail and browsing history to find out how I discovered Bitcoin but can't really find out.")]),t._v(" "),e("p",[t._v("It was certainly due to my curiosity. I think It was in early 2017 and I was in it for the money (like most of us at the beginning!) before understanding that there is something else going on ... I learned a lot during the “bear market”.")]),t._v(" "),e("p",[e("strong",[t._v("How did you connect your work, passions (Art, Virtual Reality) and family life with Bitcoin ?")])]),t._v(" "),e("blockquote",[e("p",[t._v('"[...]Artists will tell you that art is about “spreading a message” which I always thought was nonsense [...] until I had a message to spread: '),e("strong",[t._v("BITCOIN!")]),t._v('"')])]),t._v(" "),e("p",[t._v("Well I've been painting graffitis for 10 years and everybody in the graffiti space put his name on a wall.\nAgain, again and again.\nThis is how you gain “fame”, by being everywhere, know what I mean?\nSo yeah I was doing this for a long time and then I realized that instead of writing my name I can write something related to Bitcoin. A lot of artists will tell you that art is about “spreading a message” which I always thought was nonsense.\nAt least it was, until I had a message to spread: "),e("strong",[t._v("BITCOIN!")])]),t._v(" "),e("p",[t._v("When covid started, i got locked down like many others. I discovered VR while attending Bitcoin community meet-ups. I also discovered that I can create stuff with my computer, I had the pleasure to write an article called "),e("a",{attrs:{href:"https://www.citadel21.com/vr-for-bitcoiners",target:"_blank",rel:"noopener noreferrer"}},[t._v("VR for Bitcoiners"),e("OutboundLink")],1),t._v(' in CTDL21 about all of this "reorientation".\nI\'m still painting but i also create Bitcoin VR worlds.')]),t._v(" "),e("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/512gtbq1M48/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=512gtbq1M48","data-id":"512gtbq1M48"}},[e("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/512gtbq1M48?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),t._v(" "),e("p",[t._v("Bitcoin Campfire 1.10 - VR world by Bitpaint")]),t._v(" "),e("h2",{attrs:{id:"the-btcpay-server-encounter"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#the-btcpay-server-encounter"}},[t._v("#")]),t._v(" "),e("strong",[t._v("The BTCPay Server encounter")])]),t._v(" "),e("hr"),t._v(" "),e("p",[e("strong",[t._v("In your voyage through the Bitcoin space, when did you encounter BTCPay Server for the first time ?")])]),t._v(" "),e("p",[t._v("Well I was selling stuff on on my webshop with a Woocommerce plugin. I was running on Opennode, not BTCPay Server.\nBut then our friends at the “KYC” special unit said to Opennode:\n- You must KYC all the merchants.\nNo way I KYC this little online shop. At this point I really had to run the payment processor myself. So I switched to my own BTCPay Server instance hosted on Lunanode within 48hours. It was so easy to setup, amazing service by Lunanode, I recommend it to everybody.")]),t._v(" "),e("p",[e("strong",[t._v("How do you use and/or promote BTCPay Server ?")])]),t._v(" "),e("p",[t._v("For now my shop is closed since covid. So I only receive tips via BTCPay Server but that's working fine. I love lightning and I'm really happy to have this setup! I promote BTCPay as much as I can to merchants but nobody in my area seems to care about it, for now... Or It's just that I'm a bad salesman !\nI can't wait for “"),e("a",{attrs:{href:"https://twitter.com/DennisReimann/status/1318867853689454592",target:"_blank",rel:"noopener noreferrer"}},[t._v("Lightning Bank"),e("OutboundLink")],1),t._v("” to be able to setup Lightning wallets for my friends and family.")]),t._v(" "),e("figure",[e("img",{attrs:{src:"/images/Bitcoin.jpg",alt:"Bitcoin graffiti - By Bitpaint",title:"Bitcoin graffiti - By Bitpaint"}})]),t._v(" "),e("h2",{attrs:{id:"future-thoughts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#future-thoughts"}},[t._v("#")]),t._v(" Future thoughts")]),t._v(" "),e("hr"),t._v(" "),e("p",[e("strong",[t._v("In your opinion, as an Artist and Virtual World creator, does BTCPay Server have it's place in helping your community (Artists, content creators of all sorts) ?")])]),t._v(" "),e("p",[t._v("Well I think that a better Patreon-like page would be amazing!\nContent creators that don't really want to sell things but rather be funded by their community that are willing to pay a few sats per month just to support the work and make it possible. I think the BTCPay Server Foundation is a nice example of this kind of funding.")]),t._v(" "),e("p",[t._v("I'm always sad to see “Bitcoiners” asking their community to subscribe via Patreon, so maybe BTCPay Server can make this obsolete too.")]),t._v(" "),e("p",[e("strong",[t._v("What feature/use-case would you like to see implemented/developed in or on top of "),e("strong",[t._v("BTCPay Server")]),t._v(" for it to become (even more) suitable for the artistic scene ?")])]),t._v(" "),e("p",[t._v("I'd like to have a easier way to install BTCPay on a Raspberry Pi4 for less tech savvy users.\nAnd I already touched on this above, but I'm really bullish on "),e("a",{attrs:{href:"https://twitter.com/DennisReimann/status/1318867853689454592",target:"_blank",rel:"noopener noreferrer"}},[t._v("Lightning Bank"),e("OutboundLink")],1),t._v(", it's a huge feature!")]),t._v(" "),e("p",[e("strong",[t._v("Where can our readers find you ?")])]),t._v(" "),e("p",[t._v("You can find me on the internet:")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://bitpaint.club/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Bitpaint.club"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://twitter.com/Bitpaintclub",target:"_blank",rel:"noopener noreferrer"}},[t._v("Twitter.com"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://www.instagram.com/bitpaint.club/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Instagram"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://bitcoinhackers.org/@bitpaint",target:"_blank",rel:"noopener noreferrer"}},[t._v("Mastodon"),e("OutboundLink")],1)]),t._v(" "),e("li",[t._v("Tip me using BTCPay Server at "),e("a",{attrs:{href:"http://bitpaint.club",target:"_blank",rel:"noopener noreferrer"}},[t._v("bitpaint.club"),e("OutboundLink")],1)])]),t._v(" "),e("p",[t._v("DM's are opens!\nThank you a lot for this interview!")]),t._v(" "),e("hr"),t._v(" "),e("p",[t._v("If you’d like to help us tell your story next, join our "),e("a",{attrs:{href:"https://chat.btcpayserver.org/btcpayserver/channels/content-creation",target:"_blank",rel:"noopener noreferrer"}},[t._v("community chat"),e("OutboundLink")],1),t._v(" and let us know.")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/40.bc399f96.js b/assets/js/40.986c7347.js similarity index 98% rename from assets/js/40.bc399f96.js rename to assets/js/40.986c7347.js index 8381ce40..b07114d3 100644 --- a/assets/js/40.bc399f96.js +++ b/assets/js/40.986c7347.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{360:function(e,t,a){"use strict";a.r(t);var r=a(10),n=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Today, we're proud to announce another BTCPay Server release - "),t("strong",[e._v("1.0.3.127")]),e._v(".")]),e._v(" "),t("p",[e._v("The new version introduces a novelty feature - wallet labels and comments, fixes several minor bugs, brings UI/UX improvements and most importantly patches a security vulnerability that affects third-party hosts.")]),e._v(" "),t("p",[e._v("Notice")]),e._v(" "),t("p",[e._v("If you're a "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/thirdpartyhosting",target:"_blank",rel:"noopener noreferrer"}},[e._v("third-party BTCPay Server host"),t("OutboundLink")],1),e._v(" (User registration enabled in Server Settings > Policies) it's highly recommend that you "),t("a",{attrs:{href:"https://docs.btcpayserver.org/faq-and-common-issues/faq-serversettings#how-to-update-btcpay-server",target:"_blank",rel:"noopener noreferrer"}},[e._v("update"),t("OutboundLink")],1),e._v(" your BTCPay instance to the latest version.")]),e._v(" "),t("p",[e._v("We will post a full security vulnerability disclosure once we are sure enough time was given to third-party hosts to update.")]),e._v(" "),t("h2",{attrs:{id:"wallet-labels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#wallet-labels"}},[e._v("#")]),e._v(" Wallet labels")]),e._v(" "),t("p",[e._v("The highlight of the release are wallet labels and comments. We've enhanced user experience in the "),t("a",{attrs:{href:"https://docs.btcpayserver.org/features/wallet",target:"_blank",rel:"noopener noreferrer"}},[e._v("internal web wallet"),t("OutboundLink")],1),e._v(" by adding labeling option. Labels enables easier managmend, filtering and distiniqushing of the transactions in the wallet.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screen-Shot-2019-08-10-at-12.17.23-1024x378.png",alt:""}})]),e._v(" "),t("p",[e._v("In the future, we plan to add smart labels, which will automatically be assigned based on a certain filter, order or an app id. Eventually, the labels will be implemented in the wallet sending, allowing users better control of their UTXO and bringing privacy enchancements.")]),e._v(" "),t("h3",{attrs:{id:"wallet-comments"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#wallet-comments"}},[e._v("#")]),e._v(" Wallet Comments")]),e._v(" "),t("p",[e._v("Sometimes, labels don't give enough context, so we've added custom comments for each outgoing or incoming transaction in the wallet. By clicking on the comment icon, each transaction now has an optional text field.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screen-Shot-2019-08-10-at-12.18.35.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"103127-changelog"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#103127-changelog"}},[e._v("#")]),e._v(" 1.0.3.127 Changelog")]),e._v(" "),t("p",[e._v("BTCPay community keeps growing. With each release the number of contributors increases. We're thankful to our contributors who continuously improve ensuring an open future for businesses and individuals regardless of geographic, political or financial barriers.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screen-Shot-2019-08-10-at-12.39.08.png",alt:""}})]),e._v(" "),t("p",[e._v("If you're a new or an experienced developer willing to contribute to BTCPay, we're organizing free coding sessions this month, so join us on "),t("a",{attrs:{href:"https://chat.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("our chat in #development"),t("OutboundLink")],1),e._v(" channel.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{361:function(e,t,a){"use strict";a.r(t);var r=a(10),n=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Today, we're proud to announce another BTCPay Server release - "),t("strong",[e._v("1.0.3.127")]),e._v(".")]),e._v(" "),t("p",[e._v("The new version introduces a novelty feature - wallet labels and comments, fixes several minor bugs, brings UI/UX improvements and most importantly patches a security vulnerability that affects third-party hosts.")]),e._v(" "),t("p",[e._v("Notice")]),e._v(" "),t("p",[e._v("If you're a "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/thirdpartyhosting",target:"_blank",rel:"noopener noreferrer"}},[e._v("third-party BTCPay Server host"),t("OutboundLink")],1),e._v(" (User registration enabled in Server Settings > Policies) it's highly recommend that you "),t("a",{attrs:{href:"https://docs.btcpayserver.org/faq-and-common-issues/faq-serversettings#how-to-update-btcpay-server",target:"_blank",rel:"noopener noreferrer"}},[e._v("update"),t("OutboundLink")],1),e._v(" your BTCPay instance to the latest version.")]),e._v(" "),t("p",[e._v("We will post a full security vulnerability disclosure once we are sure enough time was given to third-party hosts to update.")]),e._v(" "),t("h2",{attrs:{id:"wallet-labels"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#wallet-labels"}},[e._v("#")]),e._v(" Wallet labels")]),e._v(" "),t("p",[e._v("The highlight of the release are wallet labels and comments. We've enhanced user experience in the "),t("a",{attrs:{href:"https://docs.btcpayserver.org/features/wallet",target:"_blank",rel:"noopener noreferrer"}},[e._v("internal web wallet"),t("OutboundLink")],1),e._v(" by adding labeling option. Labels enables easier managmend, filtering and distiniqushing of the transactions in the wallet.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screen-Shot-2019-08-10-at-12.17.23-1024x378.png",alt:""}})]),e._v(" "),t("p",[e._v("In the future, we plan to add smart labels, which will automatically be assigned based on a certain filter, order or an app id. Eventually, the labels will be implemented in the wallet sending, allowing users better control of their UTXO and bringing privacy enchancements.")]),e._v(" "),t("h3",{attrs:{id:"wallet-comments"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#wallet-comments"}},[e._v("#")]),e._v(" Wallet Comments")]),e._v(" "),t("p",[e._v("Sometimes, labels don't give enough context, so we've added custom comments for each outgoing or incoming transaction in the wallet. By clicking on the comment icon, each transaction now has an optional text field.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screen-Shot-2019-08-10-at-12.18.35.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"103127-changelog"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#103127-changelog"}},[e._v("#")]),e._v(" 1.0.3.127 Changelog")]),e._v(" "),t("p",[e._v("BTCPay community keeps growing. With each release the number of contributors increases. We're thankful to our contributors who continuously improve ensuring an open future for businesses and individuals regardless of geographic, political or financial barriers.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screen-Shot-2019-08-10-at-12.39.08.png",alt:""}})]),e._v(" "),t("p",[e._v("If you're a new or an experienced developer willing to contribute to BTCPay, we're organizing free coding sessions this month, so join us on "),t("a",{attrs:{href:"https://chat.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("our chat in #development"),t("OutboundLink")],1),e._v(" channel.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/41.3cd1f280.js b/assets/js/41.b5565525.js similarity index 99% rename from assets/js/41.3cd1f280.js rename to assets/js/41.b5565525.js index 6f86d9ba..eb896b6c 100644 --- a/assets/js/41.3cd1f280.js +++ b/assets/js/41.b5565525.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{361:function(e,t,r){"use strict";r.r(t);var a=r(10),o=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Today, we’re excited to release BTCPay Server "),t("strong",[e._v("1.0.3.137.")]),e._v(" The freshly-baked version introduces several new features together with several bug fixes and improvements.")]),e._v(" "),t("p",[e._v("With this release, BTCPay Server continues to be a tech-stack which glues many prominent projects built on top of Bitcoin and displays it in a coherent, unified interface for the end-user.")]),e._v(" "),t("h2",{attrs:{id:"103137-changelog"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#103137-changelog"}},[e._v("#")]),e._v(" 1.0.3.137 Changelog")]),e._v(" "),t("ul",[t("li",[e._v("Brand new kick-ass login and register page design from @taratan (@DennisReimann @NicolasDorier)")]),e._v(" "),t("li",[e._v("Exposing Bitcoin RPC on Tor v3 for Fully Noded integration (@NicolasDorier)")]),e._v(" "),t("li",[e._v("Eclair support (@Kukks @NicolasDorier)")]),e._v(" "),t("li",[e._v("Fix status message of PaymentRequest (@NicolasDorier)")]),e._v(" "),t("li",[e._v("Fix tx link in payment request (@NicolasDorier)")]),e._v(" "),t("li",[e._v("Make sure the recommended fee on the invoice target 1 block confirmation by default, make it configurable (@ubolator)")]),e._v(" "),t("li",[e._v("Improve pay button display options section (@ubolator)")]),e._v(" "),t("li",[e._v("More pay button improvements (@dennisreimann)")]),e._v(" "),t("li",[e._v('Fix Payment request "Cancel invoice" button always showing (@Kukks)')])]),e._v(" "),t("h3",{attrs:{id:"docker-deployment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#docker-deployment"}},[e._v("#")]),e._v(" Docker deployment:")]),e._v(" "),t("ul",[t("li",[e._v("Eclair support (@Kukks @NicolasDorier @araspitzu)")]),e._v(" "),t("li",[e._v("ElectrumX support, must not prune and txindex (@maltokyo)")]),e._v(" "),t("li",[e._v("Improved of error message if conflicting docker fragments are used (@NicolasDorier)")]),e._v(" "),t("li",[e._v("Expose Bitcoin RPC via Tor v3 (@NicolasDorier), safe as explained [here](http:// https://www.reddit.com/r/TOR/comments/dscw3l/are_tor_v3_hidden_service_are_discoverable_by/).")])]),e._v(" "),t("h2",{attrs:{id:"the-new-login-page"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-new-login-page"}},[e._v("#")]),e._v(" The new login page")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screenshot-2019-11-07-at-16.27.48-1024x573.png",alt:""}})]),e._v(" "),t("p",[e._v("The login page is now the first page you will see when you’re not logged into your instance. This page redesign is only just a small step towards a bigger effort for UX/UI improvements.")]),e._v(" "),t("p",[e._v("This UI was designed by @taratan and was implemented by @NicolasDorier, @DennisReimann and coordinated by @r0ckstardev. This version still requires improvements to achieve the ideal version and we will continue to improve the page based on user feedback.")]),e._v(" "),t("p",[e._v("We improve and grow thanks to your constant feedback. The changes on login page should now provide clear call-to-action and lead users towards the further setup.")]),e._v(" "),t("p",[e._v("We made the decision to improve things gradually and avoid overwhelming drastic UI modifications. What we can promise eventually is reorganized and easier to use BTCPay Server in the future. If you are a designer, web developer or simply a BTCPay Server user with interface ideas and are willing to help us, please reach out to make this happen.")]),e._v(" "),t("p",[e._v("Supporters of the "),t("a",{attrs:{href:"https://foundation.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay Foundation"),t("OutboundLink")],1),e._v(" are now proudly displayed. Thanks to partners like "),t("a",{attrs:{href:"https://twitter.com/sqcrypto",target:"_blank",rel:"noopener noreferrer"}},[e._v("SquareCrypto"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://acinq.co/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ACINQ"),t("OutboundLink")],1),e._v("m our most dedicated contributors are able to further fuel the development.")]),e._v(" "),t("h2",{attrs:{id:"fully-noded-integration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fully-noded-integration"}},[e._v("#")]),e._v(" Fully Noded Integration")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screenshot-2019-11-07-at-13.07.53-1024x538.png",alt:""}})]),e._v(" "),t("p",[e._v("We’re now exposing the "),t("strong",[e._v("Bitcoin RPC over Tor v3.")]),e._v(" This allows a very easy connection to external software such as "),t("a",{attrs:{href:"https://apps.apple.com/us/app/fully-noded/id1436425586",target:"_blank",rel:"noopener noreferrer"}},[e._v("Fully Noded"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Fully Noded is a versatile iOS app that allows you to connect and control multiple nodes using a client-side Tor thread making call sto your node's rpc via a tor hidden service.")]),e._v(" "),t("p",[e._v("For BTCPay users, this simply means you can remotely control your Bitcoin full node in your BTCPay from the external app.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/2019-11-07_13-55-30-1024x507.png",alt:""}})]),e._v(" "),t("p",[e._v("To connect your BTCPay node to Fully Noded:")]),e._v(" "),t("ol",[t("li",[e._v("If you're iOS user, "),t("a",{attrs:{href:"https://apps.apple.com/us/app/fully-noded/id1436425586",target:"_blank",rel:"noopener noreferrer"}},[e._v("download Fully Noded"),t("OutboundLink")],1),e._v(" from the App store.")]),e._v(" "),t("li",[e._v("In BTCPay, go to Server Settings > Services and click on the Full Node RPC.")]),e._v(" "),t("li",[e._v("Open your Fully noded app, Settings > Node Manager, Add new node.")]),e._v(" "),t("li",[e._v("Enable Tor in Fully noded and can a QR code displayed on your BTCPay.")]),e._v(" "),t("li",[e._v("Your Bitcoin full node is now connected to Fully Noded.")])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/IMG_3254-576x1024.jpg",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/IMG_3256-576x1024.jpg",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/IMG_3259-576x1024.jpg",alt:""}})]),e._v(" "),t("p",[e._v("Huge thanks for the integration goes to "),t("a",{attrs:{href:"https://github.com/Fonta1n3/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Fonta1n3"),t("OutboundLink")],1),e._v(", the lead developer of FullyNoded.")]),e._v(" "),t("h2",{attrs:{id:"eclair-support"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#eclair-support"}},[e._v("#")]),e._v(" Eclair support")]),e._v(" "),t("p",[e._v("Yet another Lightning Network implementation is now available – "),t("strong",[e._v("Eclair")]),e._v(". This is the forth implementation that we officially support besides "),t("a",{attrs:{href:"https://github.com/ElementsProject/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("c-lightning"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://github.com/lightningnetwork/lnd",target:"_blank",rel:"noopener noreferrer"}},[e._v("LND"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://github.com/nayutaco/ptarmigan",target:"_blank",rel:"noopener noreferrer"}},[e._v("ptarmigan"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("To add Eclair when setting up your BTCPay for the first time, apply the following command:")]),e._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v(" -\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" btcpayserver-docker\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_LIGHTNING")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"eclair"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" ./btcpay-setup.sh "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-i")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br")])]),t("p",[e._v("Please be aware that you currently need to enable txindex=1 to use the Eclair implementation however the Eclair(ACINQ) team is working towards removing that requirement.")]),e._v(" "),t("h2",{attrs:{id:"electrumx-support"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#electrumx-support"}},[e._v("#")]),e._v(" ElectrumX support")]),e._v(" "),t("p",[e._v("Our contributor "),t("a",{attrs:{href:"https://github.com/maltokyo",target:"_blank",rel:"noopener noreferrer"}},[e._v("Maltokyo"),t("OutboundLink")],1),e._v(" added "),t("a",{attrs:{href:"https://github.com/kyuupichan/electrumx",target:"_blank",rel:"noopener noreferrer"}},[e._v("ElectrumX"),t("OutboundLink")],1),e._v(" support to BTCPay docker. As a result, if you are using Electrum as an external wallet, you no longer have to leak information to random, public servers. Instead, you can connect your wallet to your own bitcoin full node within BTCPay. However, this will only work for non-pruned nodes. The documentation on how to connect Electrum to your BTCPay via ElectrumX will be released in the next few days.")]),e._v(" "),t("h2",{attrs:{id:"thank-you-to-our-contributors"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#thank-you-to-our-contributors"}},[e._v("#")]),e._v(" Thank you to our contributors")]),e._v(" "),t("p",[e._v("Huge thanks go to our contributors, supporters and community who made this release possible. We appreciate every single contribution, that comes in many different forms.")]),e._v(" "),t("p",[e._v("Special thanks to developers:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"http://github.com/araspitzu",target:"_blank",rel:"noopener noreferrer"}},[e._v("araspitzu"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://github.com/bolatovumar",target:"_blank",rel:"noopener noreferrer"}},[e._v("bolatovumar"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/dennisreimann/",target:"_blank",rel:"noopener noreferrer"}},[e._v("dennisreimann"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/maltokyo/",target:"_blank",rel:"noopener noreferrer"}},[e._v("maltokyo"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/Kukks/",target:"_blank",rel:"noopener noreferrer"}},[e._v("MrKukks"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/NicolasDorier/",target:"_blank",rel:"noopener noreferrer"}},[e._v("NicolasDorier"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/rockstardev/",target:"_blank",rel:"noopener noreferrer"}},[e._v("r0ckstarDev"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("How to update to 1.0.3.137?")]),e._v(" "),t("p",[e._v("To "),t("a",{attrs:{href:"https://docs.btcpayserver.org/faq-and-common-issues/faq-serversettings#how-to-update-btcpay-server",target:"_blank",rel:"noopener noreferrer"}},[e._v("update"),t("OutboundLink")],1),e._v(" to the latest version, go to your BTCPay > Server Settings > Maintenance > "),t("em",[t("strong",[e._v("Update")])]),e._v(".")]),e._v(" "),t("p",[e._v("If you encounter any issues with this version, or need assistance, please report it on our "),t("a",{attrs:{href:"https://chat.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat"),t("OutboundLink")],1),e._v(" or on our "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/issues",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{360:function(e,t,r){"use strict";r.r(t);var a=r(10),o=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Today, we’re excited to release BTCPay Server "),t("strong",[e._v("1.0.3.137.")]),e._v(" The freshly-baked version introduces several new features together with several bug fixes and improvements.")]),e._v(" "),t("p",[e._v("With this release, BTCPay Server continues to be a tech-stack which glues many prominent projects built on top of Bitcoin and displays it in a coherent, unified interface for the end-user.")]),e._v(" "),t("h2",{attrs:{id:"103137-changelog"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#103137-changelog"}},[e._v("#")]),e._v(" 1.0.3.137 Changelog")]),e._v(" "),t("ul",[t("li",[e._v("Brand new kick-ass login and register page design from @taratan (@DennisReimann @NicolasDorier)")]),e._v(" "),t("li",[e._v("Exposing Bitcoin RPC on Tor v3 for Fully Noded integration (@NicolasDorier)")]),e._v(" "),t("li",[e._v("Eclair support (@Kukks @NicolasDorier)")]),e._v(" "),t("li",[e._v("Fix status message of PaymentRequest (@NicolasDorier)")]),e._v(" "),t("li",[e._v("Fix tx link in payment request (@NicolasDorier)")]),e._v(" "),t("li",[e._v("Make sure the recommended fee on the invoice target 1 block confirmation by default, make it configurable (@ubolator)")]),e._v(" "),t("li",[e._v("Improve pay button display options section (@ubolator)")]),e._v(" "),t("li",[e._v("More pay button improvements (@dennisreimann)")]),e._v(" "),t("li",[e._v('Fix Payment request "Cancel invoice" button always showing (@Kukks)')])]),e._v(" "),t("h3",{attrs:{id:"docker-deployment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#docker-deployment"}},[e._v("#")]),e._v(" Docker deployment:")]),e._v(" "),t("ul",[t("li",[e._v("Eclair support (@Kukks @NicolasDorier @araspitzu)")]),e._v(" "),t("li",[e._v("ElectrumX support, must not prune and txindex (@maltokyo)")]),e._v(" "),t("li",[e._v("Improved of error message if conflicting docker fragments are used (@NicolasDorier)")]),e._v(" "),t("li",[e._v("Expose Bitcoin RPC via Tor v3 (@NicolasDorier), safe as explained [here](http:// https://www.reddit.com/r/TOR/comments/dscw3l/are_tor_v3_hidden_service_are_discoverable_by/).")])]),e._v(" "),t("h2",{attrs:{id:"the-new-login-page"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-new-login-page"}},[e._v("#")]),e._v(" The new login page")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screenshot-2019-11-07-at-16.27.48-1024x573.png",alt:""}})]),e._v(" "),t("p",[e._v("The login page is now the first page you will see when you’re not logged into your instance. This page redesign is only just a small step towards a bigger effort for UX/UI improvements.")]),e._v(" "),t("p",[e._v("This UI was designed by @taratan and was implemented by @NicolasDorier, @DennisReimann and coordinated by @r0ckstardev. This version still requires improvements to achieve the ideal version and we will continue to improve the page based on user feedback.")]),e._v(" "),t("p",[e._v("We improve and grow thanks to your constant feedback. The changes on login page should now provide clear call-to-action and lead users towards the further setup.")]),e._v(" "),t("p",[e._v("We made the decision to improve things gradually and avoid overwhelming drastic UI modifications. What we can promise eventually is reorganized and easier to use BTCPay Server in the future. If you are a designer, web developer or simply a BTCPay Server user with interface ideas and are willing to help us, please reach out to make this happen.")]),e._v(" "),t("p",[e._v("Supporters of the "),t("a",{attrs:{href:"https://foundation.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay Foundation"),t("OutboundLink")],1),e._v(" are now proudly displayed. Thanks to partners like "),t("a",{attrs:{href:"https://twitter.com/sqcrypto",target:"_blank",rel:"noopener noreferrer"}},[e._v("SquareCrypto"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://acinq.co/",target:"_blank",rel:"noopener noreferrer"}},[e._v("ACINQ"),t("OutboundLink")],1),e._v("m our most dedicated contributors are able to further fuel the development.")]),e._v(" "),t("h2",{attrs:{id:"fully-noded-integration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fully-noded-integration"}},[e._v("#")]),e._v(" Fully Noded Integration")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screenshot-2019-11-07-at-13.07.53-1024x538.png",alt:""}})]),e._v(" "),t("p",[e._v("We’re now exposing the "),t("strong",[e._v("Bitcoin RPC over Tor v3.")]),e._v(" This allows a very easy connection to external software such as "),t("a",{attrs:{href:"https://apps.apple.com/us/app/fully-noded/id1436425586",target:"_blank",rel:"noopener noreferrer"}},[e._v("Fully Noded"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Fully Noded is a versatile iOS app that allows you to connect and control multiple nodes using a client-side Tor thread making call sto your node's rpc via a tor hidden service.")]),e._v(" "),t("p",[e._v("For BTCPay users, this simply means you can remotely control your Bitcoin full node in your BTCPay from the external app.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/2019-11-07_13-55-30-1024x507.png",alt:""}})]),e._v(" "),t("p",[e._v("To connect your BTCPay node to Fully Noded:")]),e._v(" "),t("ol",[t("li",[e._v("If you're iOS user, "),t("a",{attrs:{href:"https://apps.apple.com/us/app/fully-noded/id1436425586",target:"_blank",rel:"noopener noreferrer"}},[e._v("download Fully Noded"),t("OutboundLink")],1),e._v(" from the App store.")]),e._v(" "),t("li",[e._v("In BTCPay, go to Server Settings > Services and click on the Full Node RPC.")]),e._v(" "),t("li",[e._v("Open your Fully noded app, Settings > Node Manager, Add new node.")]),e._v(" "),t("li",[e._v("Enable Tor in Fully noded and can a QR code displayed on your BTCPay.")]),e._v(" "),t("li",[e._v("Your Bitcoin full node is now connected to Fully Noded.")])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/IMG_3254-576x1024.jpg",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/IMG_3256-576x1024.jpg",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/IMG_3259-576x1024.jpg",alt:""}})]),e._v(" "),t("p",[e._v("Huge thanks for the integration goes to "),t("a",{attrs:{href:"https://github.com/Fonta1n3/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Fonta1n3"),t("OutboundLink")],1),e._v(", the lead developer of FullyNoded.")]),e._v(" "),t("h2",{attrs:{id:"eclair-support"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#eclair-support"}},[e._v("#")]),e._v(" Eclair support")]),e._v(" "),t("p",[e._v("Yet another Lightning Network implementation is now available – "),t("strong",[e._v("Eclair")]),e._v(". This is the forth implementation that we officially support besides "),t("a",{attrs:{href:"https://github.com/ElementsProject/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("c-lightning"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://github.com/lightningnetwork/lnd",target:"_blank",rel:"noopener noreferrer"}},[e._v("LND"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://github.com/nayutaco/ptarmigan",target:"_blank",rel:"noopener noreferrer"}},[e._v("ptarmigan"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("To add Eclair when setting up your BTCPay for the first time, apply the following command:")]),e._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v(" -\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" btcpayserver-docker\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_LIGHTNING")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"eclair"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" ./btcpay-setup.sh "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-i")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br")])]),t("p",[e._v("Please be aware that you currently need to enable txindex=1 to use the Eclair implementation however the Eclair(ACINQ) team is working towards removing that requirement.")]),e._v(" "),t("h2",{attrs:{id:"electrumx-support"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#electrumx-support"}},[e._v("#")]),e._v(" ElectrumX support")]),e._v(" "),t("p",[e._v("Our contributor "),t("a",{attrs:{href:"https://github.com/maltokyo",target:"_blank",rel:"noopener noreferrer"}},[e._v("Maltokyo"),t("OutboundLink")],1),e._v(" added "),t("a",{attrs:{href:"https://github.com/kyuupichan/electrumx",target:"_blank",rel:"noopener noreferrer"}},[e._v("ElectrumX"),t("OutboundLink")],1),e._v(" support to BTCPay docker. As a result, if you are using Electrum as an external wallet, you no longer have to leak information to random, public servers. Instead, you can connect your wallet to your own bitcoin full node within BTCPay. However, this will only work for non-pruned nodes. The documentation on how to connect Electrum to your BTCPay via ElectrumX will be released in the next few days.")]),e._v(" "),t("h2",{attrs:{id:"thank-you-to-our-contributors"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#thank-you-to-our-contributors"}},[e._v("#")]),e._v(" Thank you to our contributors")]),e._v(" "),t("p",[e._v("Huge thanks go to our contributors, supporters and community who made this release possible. We appreciate every single contribution, that comes in many different forms.")]),e._v(" "),t("p",[e._v("Special thanks to developers:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"http://github.com/araspitzu",target:"_blank",rel:"noopener noreferrer"}},[e._v("araspitzu"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"http://github.com/bolatovumar",target:"_blank",rel:"noopener noreferrer"}},[e._v("bolatovumar"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/dennisreimann/",target:"_blank",rel:"noopener noreferrer"}},[e._v("dennisreimann"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/maltokyo/",target:"_blank",rel:"noopener noreferrer"}},[e._v("maltokyo"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/Kukks/",target:"_blank",rel:"noopener noreferrer"}},[e._v("MrKukks"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/NicolasDorier/",target:"_blank",rel:"noopener noreferrer"}},[e._v("NicolasDorier"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/rockstardev/",target:"_blank",rel:"noopener noreferrer"}},[e._v("r0ckstarDev"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("How to update to 1.0.3.137?")]),e._v(" "),t("p",[e._v("To "),t("a",{attrs:{href:"https://docs.btcpayserver.org/faq-and-common-issues/faq-serversettings#how-to-update-btcpay-server",target:"_blank",rel:"noopener noreferrer"}},[e._v("update"),t("OutboundLink")],1),e._v(" to the latest version, go to your BTCPay > Server Settings > Maintenance > "),t("em",[t("strong",[e._v("Update")])]),e._v(".")]),e._v(" "),t("p",[e._v("If you encounter any issues with this version, or need assistance, please report it on our "),t("a",{attrs:{href:"https://chat.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat"),t("OutboundLink")],1),e._v(" or on our "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/issues",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/47.b5974064.js b/assets/js/47.6f586292.js similarity index 99% rename from assets/js/47.b5974064.js rename to assets/js/47.6f586292.js index d8e8d2d6..2e38e8ee 100644 --- a/assets/js/47.b5974064.js +++ b/assets/js/47.6f586292.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{367:function(e,t,n){"use strict";n.r(t);var r=n(10),o=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Today, we're happy to announce that all newly-deployed BTCPay Server instances running "),t("strong",[e._v("1.0.3.138")]),e._v(" and up, using LND as a lightning implementation, will be provisioned with a recovery seed for an on-chain wallet and static channel backups. This is a big improvement towards securing your funds in case of a problem.")]),e._v(" "),t("p",[e._v("Furthermore, we're introducing "),t("strong",[e._v("a migration tool")]),e._v(" for old legacy deployments that allows easy migration from "),t("code",[e._v("noseedbackup=1")]),e._v(". Old deployments won't be forced to migrate. They can continue to run LND with legacy option.")]),e._v(" "),t("h2",{attrs:{id:"the-history-behind-the-issue"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-history-behind-the-issue"}},[e._v("#")]),e._v(" The history behind the issue")]),e._v(" "),t("p",[e._v("Every time LND is started it expects user intervention (init on first run, wallet unlock on every subsequent run). This obviously works in certain settings: if you are a mobile wallet, it's reasonable to expect that user will unlock LND through GUI on every restart. But if you are running LND as part of tech stack, it's quite obvious you are not going to "),t("code",[e._v("ssh")]),e._v(" into every server during every cluster restart and unlock LND.")]),e._v(" "),t("p",[e._v("Those with prerequisite knowledge have already found ways to automate this task, but large part of BTCPayServer audience are merchants who can't worry about "),t("code",[e._v("ssh")]),e._v(" and unlocking LND on their web server.")]),e._v(" "),t("p",[e._v("So, back when we initially did LND integration (version 0.4.1), "),t("code",[e._v("noseedbackup=1")]),e._v(" served our purpose. There was no real downside to using it - LND would restart without intervention & instead of seed backup we suggested users do more complete backup of whole LND data directory from docker container and that was it. Furthermore, we believed that providing users with an on-chain wallet backup, without providing backups for channels would create a false sense of security, since in most cases, the majority of user's funds would be in the channels.")]),e._v(" "),t("p",[e._v("Fast forward a year and half, LND has functionality like static channel backup that depends seed presence. We have legacy installations that we can't force update to version with seed. So what we needed to do is keep old versions and have them keep working, while initializing new installations without "),t("code",[e._v("noseedbackup=1")]),e._v(" and have them auto-init and unlock on every restart.")]),e._v(" "),t("h2",{attrs:{id:"how-to-migrate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-to-migrate"}},[e._v("#")]),e._v(" How to migrate?")]),e._v(" "),t("p",[e._v("A few notes:")]),e._v(" "),t("ol",[t("li",[e._v("The instructions "),t("em",[e._v("are "),t("strong",[e._v("only")])]),e._v(" for users using "),t("strong",[e._v("LND")]),e._v(" as their lightning implementation.")]),e._v(" "),t("li",[e._v("All legacy installations will keep working without intervention. It's not required, but recommended to migrate.")]),e._v(" "),t("li",[e._v("Users who deployed a fresh BTCPay instance from 1.0.3.138 and up will be running new versions with a seed.")])]),e._v(" "),t("p",[e._v("IMPORTANT WARNING! REALLY IMPORTANT, DO NOT SKIP THIS NICE BOX.")]),e._v(" "),t("p",[e._v("If you're running a legacy version and decided to migrate, before proceeding, make sure to "),t("strong",[e._v("close all your lightning channels")]),e._v(".")]),e._v(" "),t("p",[e._v("Channels can be closed through:")]),e._v(" "),t("p",[e._v("• "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr/patron/blob/master/SSH.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSH"),t("OutboundLink")],1),e._v(" with "),t("code",[e._v("bitcoin-lncli.sh closeallchannels")]),e._v("\n• Server Setting > Services > LND (Ride the Lightning server)\n• External wallet that's connected to your LND node, such as Zap.")]),e._v(" "),t("p",[e._v("Once the channels are closed, it takes time for all the funds to settle. When there are no pending channels and all funds are visible on-chain, send them to an external wallet you have. For spending, you can use command line, RTL, Zap or other external wallet connected to your BTCPay.")]),e._v(" "),t("p",[e._v("If at any point you need assistance, visit our "),t("a",{attrs:{href:"https://chat.btcpayserver.org/btcpayserver/channels/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat"),t("OutboundLink")],1),e._v(" and ask a question in the "),t("a",{attrs:{href:"https://chat.btcpayserver.org/btcpayserver/channels/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("#Lightning"),t("OutboundLink")],1),e._v(" channel.")]),e._v(" "),t("p",[e._v("When funds are SAFU, the migration process can begin. The migration tool for old installations will essentially stop all the services, delete the volume of the old LND container, restart the services and recreate a new LND with seed.")]),e._v(" "),t("p",[e._v("Log in into your machine through "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr/patron/blob/master/SSH.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSH"),t("OutboundLink")],1),e._v(" and input the following command.")]),e._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v(" -\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" btcpayserver-docker/Tools/lnd\n./lnd_recreate_volume.sh\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br")])]),t("p",[e._v("You will be prompted a few times to confirm running the tool, by typing "),t("code",[e._v("yes")]),e._v(" in the terminal. When the script is done, go to your BTCPayServer. Server Settings > Services > "),t("strong",[e._v("LND Seed Backup")]),e._v(".")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Services-LND-Seed-Backup.jpg",alt:""}})]),e._v(" "),t("p",[e._v("Safely backup and store your recovery seed. The seed is a backup of your on-chain Lightning wallet, but is also necessary to perform static channel backups.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/LND-With-Seed-Example-1024x471.jpg",alt:""}})]),e._v(" "),t("p",[e._v("If you backed it up safely you can remove it from the server.")]),e._v(" "),t("p",[e._v("That's it now you have a backup for your LND. Go ahead, get some "),t("a",{attrs:{href:"https://lnbig.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("inbound liquidity"),t("OutboundLink")],1),e._v(" to your brand new node and enjoy.")]),e._v(" "),t("h2",{attrs:{id:"static-channel-backup-optional"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#static-channel-backup-optional"}},[e._v("#")]),e._v(" Static channel backup (optional)")]),e._v(" "),t("p",[e._v("TIP")]),e._v(" "),t("p",[e._v("Perform this step only when you want to back up your channels. Do not do it immediately after doing the steps above, since you have no channels to back up.")]),e._v(" "),t("p",[e._v("For backing up "),t("strong",[e._v("funds in the channels")]),e._v(" the Static Channel Backup is needed which will result into remote "),t("strong",[e._v("force closures")]),e._v(" when you restore the backup, returning the off-chain fund to the on-chain wallet.")]),e._v(" "),t("p",[e._v("The SCB can be obtained through the "),t("a",{attrs:{href:"https://blog.btcpayserver.org/ride-the-lightning-btcpay/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ride The Lightning App"),t("OutboundLink")],1),e._v(" and it's stored in the BTCPay filesystem.")]),e._v(" "),t("p",[e._v("To perform a SCB:")]),e._v(" "),t("ol",[t("li",[e._v("Server Setting > Services > LND (Ride the Lightning server)")]),e._v(" "),t("li",[e._v("Channels > Backup > "),t("strong",[e._v("Backup")])])]),e._v(" "),t("p",[e._v("Now, both your on-chain and funds in channels are backed up. For more information on recovery and restoring from the backup, "),t("a",{attrs:{href:"https://github.com/lightningnetwork/lnd/blob/master/docs/recovery.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("check LND documentation."),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"thank-you"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#thank-you"}},[e._v("#")]),e._v(" Thank you")]),e._v(" "),t("p",[e._v("The biggest attribution goes to "),t("a",{attrs:{href:"https://twitter.com/r0ckstardev/",target:"_blank",rel:"noopener noreferrer"}},[e._v("RockstarDev"),t("OutboundLink")],1),e._v(" who took over the entire task on himself and coded the migration tool and coordinated the entire testing process.")]),e._v(" "),t("p",[e._v("Thanks to "),t("a",{attrs:{href:"https://twitter.com/NicolasDorier",target:"_blank",rel:"noopener noreferrer"}},[e._v("@NicolasDorier"),t("OutboundLink")],1),e._v(" for idea; "),t("a",{attrs:{href:"https://twitter.com/MrKukks",target:"_blank",rel:"noopener noreferrer"}},[e._v("@MrKukks"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://twitter.com/pavlenex",target:"_blank",rel:"noopener noreferrer"}},[e._v("@pavlenex"),t("OutboundLink")],1),e._v(" for thorough review and testing. Credit also "),t("a",{attrs:{href:"https://twitter.com/junderwood4649",target:"_blank",rel:"noopener noreferrer"}},[e._v("@junderwood4649"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://twitter.com/maltokyo",target:"_blank",rel:"noopener noreferrer"}},[e._v("@maltokyo"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://twitter.com/ketominer",target:"_blank",rel:"noopener noreferrer"}},[e._v("@ketominer"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://twitter.com/roasbeef",target:"_blank",rel:"noopener noreferrer"}},[e._v("@roasbeef"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://twitter.com/bitconner",target:"_blank",rel:"noopener noreferrer"}},[e._v("@bitconner"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://twitter.com/woutersamaey",target:"_blank",rel:"noopener noreferrer"}},[e._v("@woutersamaey"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://twitter.com/openoms",target:"_blank",rel:"noopener noreferrer"}},[e._v("@openoms"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://twitter.com/21isenough/",target:"_blank",rel:"noopener noreferrer"}},[e._v("@21isenough"),t("OutboundLink")],1),e._v(" and others who helped throughout the process in various ways.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{368:function(e,t,n){"use strict";n.r(t);var r=n(10),o=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Today, we're happy to announce that all newly-deployed BTCPay Server instances running "),t("strong",[e._v("1.0.3.138")]),e._v(" and up, using LND as a lightning implementation, will be provisioned with a recovery seed for an on-chain wallet and static channel backups. This is a big improvement towards securing your funds in case of a problem.")]),e._v(" "),t("p",[e._v("Furthermore, we're introducing "),t("strong",[e._v("a migration tool")]),e._v(" for old legacy deployments that allows easy migration from "),t("code",[e._v("noseedbackup=1")]),e._v(". Old deployments won't be forced to migrate. They can continue to run LND with legacy option.")]),e._v(" "),t("h2",{attrs:{id:"the-history-behind-the-issue"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-history-behind-the-issue"}},[e._v("#")]),e._v(" The history behind the issue")]),e._v(" "),t("p",[e._v("Every time LND is started it expects user intervention (init on first run, wallet unlock on every subsequent run). This obviously works in certain settings: if you are a mobile wallet, it's reasonable to expect that user will unlock LND through GUI on every restart. But if you are running LND as part of tech stack, it's quite obvious you are not going to "),t("code",[e._v("ssh")]),e._v(" into every server during every cluster restart and unlock LND.")]),e._v(" "),t("p",[e._v("Those with prerequisite knowledge have already found ways to automate this task, but large part of BTCPayServer audience are merchants who can't worry about "),t("code",[e._v("ssh")]),e._v(" and unlocking LND on their web server.")]),e._v(" "),t("p",[e._v("So, back when we initially did LND integration (version 0.4.1), "),t("code",[e._v("noseedbackup=1")]),e._v(" served our purpose. There was no real downside to using it - LND would restart without intervention & instead of seed backup we suggested users do more complete backup of whole LND data directory from docker container and that was it. Furthermore, we believed that providing users with an on-chain wallet backup, without providing backups for channels would create a false sense of security, since in most cases, the majority of user's funds would be in the channels.")]),e._v(" "),t("p",[e._v("Fast forward a year and half, LND has functionality like static channel backup that depends seed presence. We have legacy installations that we can't force update to version with seed. So what we needed to do is keep old versions and have them keep working, while initializing new installations without "),t("code",[e._v("noseedbackup=1")]),e._v(" and have them auto-init and unlock on every restart.")]),e._v(" "),t("h2",{attrs:{id:"how-to-migrate"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-to-migrate"}},[e._v("#")]),e._v(" How to migrate?")]),e._v(" "),t("p",[e._v("A few notes:")]),e._v(" "),t("ol",[t("li",[e._v("The instructions "),t("em",[e._v("are "),t("strong",[e._v("only")])]),e._v(" for users using "),t("strong",[e._v("LND")]),e._v(" as their lightning implementation.")]),e._v(" "),t("li",[e._v("All legacy installations will keep working without intervention. It's not required, but recommended to migrate.")]),e._v(" "),t("li",[e._v("Users who deployed a fresh BTCPay instance from 1.0.3.138 and up will be running new versions with a seed.")])]),e._v(" "),t("p",[e._v("IMPORTANT WARNING! REALLY IMPORTANT, DO NOT SKIP THIS NICE BOX.")]),e._v(" "),t("p",[e._v("If you're running a legacy version and decided to migrate, before proceeding, make sure to "),t("strong",[e._v("close all your lightning channels")]),e._v(".")]),e._v(" "),t("p",[e._v("Channels can be closed through:")]),e._v(" "),t("p",[e._v("• "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr/patron/blob/master/SSH.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSH"),t("OutboundLink")],1),e._v(" with "),t("code",[e._v("bitcoin-lncli.sh closeallchannels")]),e._v("\n• Server Setting > Services > LND (Ride the Lightning server)\n• External wallet that's connected to your LND node, such as Zap.")]),e._v(" "),t("p",[e._v("Once the channels are closed, it takes time for all the funds to settle. When there are no pending channels and all funds are visible on-chain, send them to an external wallet you have. For spending, you can use command line, RTL, Zap or other external wallet connected to your BTCPay.")]),e._v(" "),t("p",[e._v("If at any point you need assistance, visit our "),t("a",{attrs:{href:"https://chat.btcpayserver.org/btcpayserver/channels/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat"),t("OutboundLink")],1),e._v(" and ask a question in the "),t("a",{attrs:{href:"https://chat.btcpayserver.org/btcpayserver/channels/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("#Lightning"),t("OutboundLink")],1),e._v(" channel.")]),e._v(" "),t("p",[e._v("When funds are SAFU, the migration process can begin. The migration tool for old installations will essentially stop all the services, delete the volume of the old LND container, restart the services and recreate a new LND with seed.")]),e._v(" "),t("p",[e._v("Log in into your machine through "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr/patron/blob/master/SSH.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSH"),t("OutboundLink")],1),e._v(" and input the following command.")]),e._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v(" -\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" btcpayserver-docker/Tools/lnd\n./lnd_recreate_volume.sh\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br")])]),t("p",[e._v("You will be prompted a few times to confirm running the tool, by typing "),t("code",[e._v("yes")]),e._v(" in the terminal. When the script is done, go to your BTCPayServer. Server Settings > Services > "),t("strong",[e._v("LND Seed Backup")]),e._v(".")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Services-LND-Seed-Backup.jpg",alt:""}})]),e._v(" "),t("p",[e._v("Safely backup and store your recovery seed. The seed is a backup of your on-chain Lightning wallet, but is also necessary to perform static channel backups.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/LND-With-Seed-Example-1024x471.jpg",alt:""}})]),e._v(" "),t("p",[e._v("If you backed it up safely you can remove it from the server.")]),e._v(" "),t("p",[e._v("That's it now you have a backup for your LND. Go ahead, get some "),t("a",{attrs:{href:"https://lnbig.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("inbound liquidity"),t("OutboundLink")],1),e._v(" to your brand new node and enjoy.")]),e._v(" "),t("h2",{attrs:{id:"static-channel-backup-optional"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#static-channel-backup-optional"}},[e._v("#")]),e._v(" Static channel backup (optional)")]),e._v(" "),t("p",[e._v("TIP")]),e._v(" "),t("p",[e._v("Perform this step only when you want to back up your channels. Do not do it immediately after doing the steps above, since you have no channels to back up.")]),e._v(" "),t("p",[e._v("For backing up "),t("strong",[e._v("funds in the channels")]),e._v(" the Static Channel Backup is needed which will result into remote "),t("strong",[e._v("force closures")]),e._v(" when you restore the backup, returning the off-chain fund to the on-chain wallet.")]),e._v(" "),t("p",[e._v("The SCB can be obtained through the "),t("a",{attrs:{href:"https://blog.btcpayserver.org/ride-the-lightning-btcpay/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ride The Lightning App"),t("OutboundLink")],1),e._v(" and it's stored in the BTCPay filesystem.")]),e._v(" "),t("p",[e._v("To perform a SCB:")]),e._v(" "),t("ol",[t("li",[e._v("Server Setting > Services > LND (Ride the Lightning server)")]),e._v(" "),t("li",[e._v("Channels > Backup > "),t("strong",[e._v("Backup")])])]),e._v(" "),t("p",[e._v("Now, both your on-chain and funds in channels are backed up. For more information on recovery and restoring from the backup, "),t("a",{attrs:{href:"https://github.com/lightningnetwork/lnd/blob/master/docs/recovery.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("check LND documentation."),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"thank-you"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#thank-you"}},[e._v("#")]),e._v(" Thank you")]),e._v(" "),t("p",[e._v("The biggest attribution goes to "),t("a",{attrs:{href:"https://twitter.com/r0ckstardev/",target:"_blank",rel:"noopener noreferrer"}},[e._v("RockstarDev"),t("OutboundLink")],1),e._v(" who took over the entire task on himself and coded the migration tool and coordinated the entire testing process.")]),e._v(" "),t("p",[e._v("Thanks to "),t("a",{attrs:{href:"https://twitter.com/NicolasDorier",target:"_blank",rel:"noopener noreferrer"}},[e._v("@NicolasDorier"),t("OutboundLink")],1),e._v(" for idea; "),t("a",{attrs:{href:"https://twitter.com/MrKukks",target:"_blank",rel:"noopener noreferrer"}},[e._v("@MrKukks"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://twitter.com/pavlenex",target:"_blank",rel:"noopener noreferrer"}},[e._v("@pavlenex"),t("OutboundLink")],1),e._v(" for thorough review and testing. Credit also "),t("a",{attrs:{href:"https://twitter.com/junderwood4649",target:"_blank",rel:"noopener noreferrer"}},[e._v("@junderwood4649"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://twitter.com/maltokyo",target:"_blank",rel:"noopener noreferrer"}},[e._v("@maltokyo"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://twitter.com/ketominer",target:"_blank",rel:"noopener noreferrer"}},[e._v("@ketominer"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://twitter.com/roasbeef",target:"_blank",rel:"noopener noreferrer"}},[e._v("@roasbeef"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://twitter.com/bitconner",target:"_blank",rel:"noopener noreferrer"}},[e._v("@bitconner"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://twitter.com/woutersamaey",target:"_blank",rel:"noopener noreferrer"}},[e._v("@woutersamaey"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://twitter.com/openoms",target:"_blank",rel:"noopener noreferrer"}},[e._v("@openoms"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://twitter.com/21isenough/",target:"_blank",rel:"noopener noreferrer"}},[e._v("@21isenough"),t("OutboundLink")],1),e._v(" and others who helped throughout the process in various ways.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/48.02e926cc.js b/assets/js/48.076a9c5d.js similarity index 99% rename from assets/js/48.02e926cc.js rename to assets/js/48.076a9c5d.js index 7abc7c9b..08bbca2f 100644 --- a/assets/js/48.02e926cc.js +++ b/assets/js/48.076a9c5d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{368:function(e,t,a){"use strict";a.r(t);var o=a(10),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Got my morning coffee. Started the morning workout.")]),e._v(" "),t("p",[e._v("Okay, I lied about the workout.")]),e._v(" "),t("p",[e._v("Checked Mattermost, then Telegram.")]),e._v(" "),t("p",[e._v("Quiet.")]),e._v(" "),t("p",[e._v("It appears we won't be making a new BTCPay release today. Strange. I got used to that routine. We make releases frequently.")]),e._v(" "),t("p",[e._v("We're one and a half year old open-source project with exactly "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("373 releases"),t("OutboundLink")],1),e._v(" at the time of writing. That's crazy!")]),e._v(" "),t("p",[e._v("Every day there's something to be done in BTCPay. Apparently, today is not that day.")]),e._v(" "),t("p",[e._v("That's why I decided to write a cringy titled article that will hopefully clear out some common misconceptions and confusion surrounding BTCPay. Hopefully, it will give you a better overview of who we are and why we do what we do.")]),e._v(" "),t("p",[e._v("Without further ado, here are 10 "),t("em",[e._v("shocking")]),e._v(" misconceptions.")]),e._v(" "),t("h2",{attrs:{id:"1-btcpay-only-runs-on-azure-and-lunanode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#1-btcpay-only-runs-on-azure-and-lunanode"}},[e._v("#")]),e._v(" 1. BTCPay only runs on Azure and LunaNode")]),e._v(" "),t("p",[e._v('Recently someone asked me: "When can I run BTCPay on something other than Azure or LunaNode".')]),e._v(" "),t("p",[e._v("I must admit the question caught me by surprise.  I wasn't aware of the perception people had, but I completely understand where that idea comes from.")]),e._v(" "),t("p",[e._v("First of all, BTCPay was "),t("strong",[e._v("never limited")]),e._v(" to only Azure or LunaNode. We just happened to create tutorials and 1-click deployments for those two providers.")]),e._v(" "),t("p",[e._v("In reality, it has "),t("strong",[e._v("always been")]),e._v(" possible to run BTCPay on a VPS of your choice. Due to a variety of providers, we can't document them all, but the community constantly tries to create a step by step "),t("a",{attrs:{href:"http://docs.btcpayserver.org/deployment/",target:"_blank",rel:"noopener noreferrer"}},[e._v("deployment tutorials"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/You-can-deploy-BTCPay-on-a-raspberry-pi.jpg",alt:""}})]),e._v(" "),t("p",[e._v("You can deploy BTCPay on any VPS which meets the minimal requirements:")]),e._v(" "),t("ol",[t("li",[e._v("Docker")]),e._v(" "),t("li",[e._v("2GB RAM (It's possible with 1GB)")]),e._v(" "),t("li",[e._v("at least 15 GB of storage (depending on the "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker#generated-docker-compose-",target:"_blank",rel:"noopener noreferrer"}},[e._v("pruning option"),t("OutboundLink")],1),e._v(" you select)")])]),e._v(" "),t("p",[e._v("To  deploy BTCPay you just have to run these 4 lines on any VPS:")]),e._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" clone https://github.com/btcpayserver/btcpayserver-docker\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" btcpayserver-docker\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_HOST")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btcpay.yourdomain.com"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" ./btcpay-setup.sh "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-i")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br")])]),t("p",[e._v("You can, of course, modify "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker#environment-variables",target:"_blank",rel:"noopener noreferrer"}},[e._v("the environment variables"),t("OutboundLink")],1),e._v(" to adjust the installation to your business' specific needs.")]),e._v(" "),t("p",[e._v("The fact that you can deploy "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/raspberrypideployment",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay on Raspberry Pi"),t("OutboundLink")],1),e._v(" speaks volumes about the countless optimizations we've done to make the entire stack less resource-intensive and easier to run. As a matter of fact, we encourage people to run BTCPay on their own hardware and use a variety of VPS providers to decentralize even more.")]),e._v(" "),t("p",[e._v("Soon with "),t("a",{attrs:{href:"https://medium.com/@BtcpayServer/about-tor-and-btcpay-server-2ec1e4bd5e51",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tor support coming,"),t("OutboundLink")],1),e._v(" the number of code lines needed to deploy will be 3, without the need to configure DNS or even have a domain name. Apart from that, we also have work being done on a web installation wizard that can guide you through the entire process in a sleek UI without needing to touch any code or SSH terminal. You can follow the progress on the web installer at this "),t("a",{attrs:{href:"https://github.com/Kukks/btcpayserver-installer",target:"_blank",rel:"noopener noreferrer"}},[e._v("github repository"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"2-btcpay-supports-shitcoins"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#2-btcpay-supports-shitcoins"}},[e._v("#")]),e._v(" 2. BTCPay supports shitcoins")]),e._v(" "),t("p",[e._v("Call it altcoin or shitcoin, whatever you prefer, but one thing is for sure, it's a never-ending debate.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/advancing-bitcoin-2019-btcpayserver-architecture-8-638.jpg",alt:""}})]),e._v(" "),t("p",[e._v("Like many other projects and companies, we were recently accused of being a shitcoin payment processor. I won't lie, it left an entire community with a bitter taste in mouth and a feeling of disappointment and sadness. At least, that's how I felt.")]),e._v(" "),t("p",[e._v("As a hard-core Bitcoiner, the words of some people I used to look up to in this space really stung. Mostly because all of the contributors and developers are Bitcoiners to the bone.")]),e._v(" "),t("p",[e._v("The reality is, BTCPay does not support anything. We allow people to integrate their projects into ours, which users may opt-in to using or completely ignore.")]),e._v(" "),t("p",[e._v("Not a single altcoin is supported out of the box in BTCPay. When you deploy BTCPay with the default setup, you get a Bitcoin full node & Lightning network node. If you wish to include any of the supported alts, you must manually edit your environment variables to enable them. Modifying these requires technical know-how of logging into ssh and executing a few lines of code. For example, to add LTC to an existing environment (besides increasing the size and capabilities of your virtual machine) you'd have to do:")]),e._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v(" -\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" btcpayserver-docker\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO2")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"ltc"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" ./btcpay-setup.sh "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-i")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br")])]),t("p",[e._v("Then add the derivation scheme in your wallet.")]),e._v(" "),t("p",[e._v("Altcoins are supported and maintained by their communities, not ourselves. BTCPay developers do not add alternative coins on request. Adding a new coin explicitly depends on the community and developers of those coins or their resources to hire developers to integrate it for them. Furthermore, BTCPay developers do not spend excessive time testing nor maintaining altcoins that have been integrated.")]),e._v(" "),t("p",[e._v("Our principles are very clear and simple and we emphasize them in our documentation.")]),e._v(" "),t("ul",[t("li",[e._v("We do not debug altcoins")]),e._v(" "),t("li",[e._v("We do not test it for devs who integrated it")]),e._v(" "),t("li",[e._v("We do not advertise or support it (outside of update announcement)")]),e._v(" "),t("li",[e._v("We don't make invasive changes in the code to accommodate the altcoin.")]),e._v(" "),t("li",[e._v("We don't fix breaking changes which may break the coin integration.")])]),e._v(" "),t("p",[e._v("We are Bitcoiners first because we believe Bitcoin is the best to achieve self-sovereignty.")]),e._v(" "),t("p",[e._v("The way in which we'll handle altcoins in the future is yet to be determined. It's really not our focus, but if it becomes any sort of bottleneck that prohibits our efficiency, we will isolate the altcoin code from the main codebase even more.")]),e._v(" "),t("p",[e._v("For now, it does not require effort on our part and it makes some communities happy. More importantly, we must admit that alt developers have helped us out with finding bugs, resolving them and improving performance, especially in NBxplorer.")]),e._v(" "),t("p",[e._v("If you'd like to understand our architecture and stance better just watch Nicolas' "),t("a",{attrs:{href:"https://www.youtube.com/watch?v=Up0dvorzSNM",target:"_blank",rel:"noopener noreferrer"}},[e._v("presentation"),t("OutboundLink")],1),e._v(" on Advancing Bitcoin 2019 conference in London.")]),e._v(" "),t("h2",{attrs:{id:"3-btcpay-is-expensive"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#3-btcpay-is-expensive"}},[e._v("#")]),e._v(" 3. BTCPay is expensive")]),e._v(" "),t("p",[e._v("BTCPay in itself is "),t("strong",[e._v("free")]),e._v(" and open-source software anyone can use. You can use a third-party BTCPay host or self-host a server.")]),e._v(" "),t("p",[e._v("If you decide to go with a self-hosted solution, which is highly recommended, you need to have it hosted somewhere, a cloud or on your own hardware. Cloud hosting costs money. As I mentioned in #2, the cost to run BTCPay depends on the deployment method you've chosen and the variables you set up which we have found to be as little as $3-5 USD monthly.")]),e._v(" "),t("p",[e._v("When making a decision whether to go with a "),t("a",{attrs:{href:"https://docs.btcpayserver.org/btcpay-basics/btcpayvsothers",target:"_blank",rel:"noopener noreferrer"}},[e._v("centralized payment processor vs BTCPay"),t("OutboundLink")],1),e._v(", it is worth to consider that in BTCPay there are no fees. Zero, zip, zilch, nada.")]),e._v(" "),t("p",[e._v("If you're a very small business or just want to test BTCPay, there are people who allow others to use their servers for free or a small fee. We call them "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/thirdpartyhosting",target:"_blank",rel:"noopener noreferrer"}},[e._v("third-party hosts"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("The majority of third-party hosts offer BTCPay for free. "),t("a",{attrs:{href:"https://btcpayjungle.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPayJungle"),t("OutboundLink")],1),e._v(", for example, hosts a BTCPay instance for over 400 users, merchants and developers and they maintain their server from user donations. "),t("a",{attrs:{href:"https://lightbo.lt/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lightbo.lt"),t("OutboundLink")],1),e._v(" is one more great host.")]),e._v(" "),t("h2",{attrs:{id:"4-btcpay-is-a-company"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#4-btcpay-is-a-company"}},[e._v("#")]),e._v(" 4. BTCPay is a company")]),e._v(" "),t("p",[e._v("BTCPayer Server is an "),t("strong",[e._v("open-source project")]),e._v(", not a company. We rely on a network of contributors and users to provide support. The project exists for and because of the community. People working on BTCPay are voluntarily spending their time to improve the software for themselves and others.")]),e._v(" "),t("p",[e._v("You may not know this, but one of the contributors, "),t("a",{attrs:{href:"https://github.com/Kukks/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Kukks"),t("OutboundLink")],1),e._v(", quit his day-job to work on BTCPay voluntarily full-time. It's just pure passion and ideology that pushes us. We want to eliminate the middleman and help individuals and businesses become self-sovereign.")]),e._v(" "),t("p",[e._v("We try to fund any expenses from community donations, and we're thankful for each and every satoshi we receive.")]),e._v(" "),t("p",[e._v("As the project grows, it requires more and more time to maintain not only the software and support but the community itself. We're still unsure what BTCPay is and what it may become in the future, but one thing is sure: it will always be free, open-source and made by the community for the community.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-Contributors.jpg",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"5-btcpay-does-not-have-a-conversion-to-fiat"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#5-btcpay-does-not-have-a-conversion-to-fiat"}},[e._v("#")]),e._v(" 5. BTCPay does not have a conversion to fiat")]),e._v(" "),t("p",[e._v("This statement is partially true. BTCPay does not have "),t("strong",[e._v("an instant")]),e._v(" conversion to fiat out of the box. Yet.")]),e._v(" "),t("p",[e._v("With BTCPay, you're your own payment processor and you own your keys. By owning the keys, you have the freedom to do whatever you like with your coins, because they're yours. That obviously means, that you can easily sell your coins to an exchange, but for now that's a manual process.")]),e._v(" "),t("p",[e._v("Good news is, that very soon we'll release a fiat bridge(currently codenamed "),t("a",{attrs:{href:"https://github.com/kukks/btctransmuter-vnext",target:"_blank",rel:"noopener noreferrer"}},[e._v("BtcTransmuter"),t("OutboundLink")],1),e._v(") that will allow users to not only instantly sell coins on an exchange but also provide an infinitely flexible system for a number of other use-cases. One of the additional use cases could be to provide liquidity to other users using their instance. That means, that if you want, you will be able to become a payment processor for others.")]),e._v(" "),t("p",[e._v("Until BtcTransmuter is ready for primetime, Blockonomics has made a "),t("a",{attrs:{href:"https://blockonomics.freshdesk.com/support/solutions/articles/33000234755-payment-forwarding-using-xpub-with-merchant-service",target:"_blank",rel:"noopener noreferrer"}},[e._v("payment forwarding service"),t("OutboundLink")],1),e._v(" that is compatible with BTCPay which you can use as a workaround to convert to fiat. We're seeing an increased interest from exchanges and businesses that would like to provide instant-conversion services that BTCPay merchants can use.")]),e._v(" "),t("h2",{attrs:{id:"6-btcpay-and-shopify"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#6-btcpay-and-shopify"}},[e._v("#")]),e._v(" 6. BTCPay and Shopify")]),e._v(" "),t("p",[e._v("BTCPay is a decentralized software, not a company. Shopify is centralized, walled garden. How can you get a decentralized software into a garden which not only does not accept new payment processors at this time but also requires a cut from processors?")]),e._v(" "),t("p",[e._v("You can't. BTCPay does not have Shopify integration. We tried really hard, but we were unable to get in there as an open-source project. That said, in future if someone wants to create a payment processor by using our technology stack and provide centralized service to merchants, that can be one way of getting into Shopify, but it's still going to require a lots of work.")]),e._v(" "),t("p",[e._v("This one is not a misconception nor a myth but deserves to be here as one of the most commonly asked questions and the fact people believe it's our fault we're not on Shopify yet.")]),e._v(" "),t("h2",{attrs:{id:"7-only-merchants-can-use-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#7-only-merchants-can-use-btcpay"}},[e._v("#")]),e._v(" 7. Only merchants can use BTCPay")]),e._v(" "),t("p",[e._v("BTCPay can be used by anyone who wants to receive payments on-chain or via the Lightning Network, without depending on a third party.")]),e._v(" "),t("p",[e._v("BTCPay has a "),t("a",{attrs:{href:"https://docs.btcpayserver.org/btcpay-basics/usecase",target:"_blank",rel:"noopener noreferrer"}},[e._v("wide-variety of use-cases"),t("OutboundLink")],1),e._v(", and with the applications that we build on top of it, we keep extending the list constantly.")]),e._v(" "),t("h3",{attrs:{id:"who-can-use-btcpay-anyone-anywhere-anytime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#who-can-use-btcpay-anyone-anywhere-anytime"}},[e._v("#")]),e._v(" Who can use BTCPay? - Anyone. Anywhere. Anytime.")]),e._v(" "),t("p",[e._v("Here are some of the most common users, besides retail or online merchants:")]),e._v(" "),t("ul",[t("li",[e._v("Developers integrate into their projects (wallets, games, applications, platforms)")]),e._v(" "),t("li",[e._v("Lightning Network users (BTCPay is one of the easiest ways to deploy a Lightning Node) who use integration to make their shopping easier and non-custodial thanks to our out of the box integration with wallets and extensions like Joule, Spark, Zap, ZeusLN, and Pebble.")]),e._v(" "),t("li",[e._v("Charities use "),t("a",{attrs:{href:"https://docs.btcpayserver.org/features/apps#payment-button",target:"_blank",rel:"noopener noreferrer"}},[e._v("payment buttons"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://docs.btcpayserver.org/features/apps#crowdfunding-app",target:"_blank",rel:"noopener noreferrer"}},[e._v("crowdfunding"),t("OutboundLink")],1),e._v(" app to raise money")]),e._v(" "),t("li",[e._v("Freelancers and small businesses use "),t("a",{attrs:{href:"https://blog.btcpayserver.org/payment-requests/",target:"_blank",rel:"noopener noreferrer"}},[e._v("payment requests"),t("OutboundLink")],1),e._v(" to invoice their clients and get paid in Bitcoin by sharing a simple link")]),e._v(" "),t("li",[e._v("People who want to offer BTCPay to become payment processors for local or global market")]),e._v(" "),t("li",[e._v("Enterprises that want a secure, non-custodial technology stack for their Bitcoin operations")]),e._v(" "),t("li",[e._v("Exchanges and payment forwarders that offer instant fiat conversion to users")]),e._v(" "),t("li",[e._v("Hosting providers that offer BTCPay hosting")])]),e._v(" "),t("p",[e._v("As you can see, BTCPay, similar to Bitcoin, can be anything to anyone, but most importantly it's there when you need it. Customize it, fork it, adjust it.")]),e._v(" "),t("h2",{attrs:{id:"8-btcpay-is-a-clone-of-bitpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#8-btcpay-is-a-clone-of-bitpay"}},[e._v("#")]),e._v(" 8. BTCPay is a clone of BitPay")]),e._v(" "),t("p",[e._v("BTCPay is not BitPay's clone. We only have a "),t("strong",[e._v("compatible API")]),e._v(", which means whoever uses BitPay can migrate to BTCPay with ease. Their API however, is far from perfect with a big list of inefficiencies from their model constantly reminding us to do better. That backwards compatibility is becoming a huge bottleneck, and we plan to roll out our own API, which will enable amazing extensibility options such as using BTCPay as a headless payment processor or managing your stores completely through an API. You can follow progress on the initial steps of this API work "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/pull/464",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"9-btcpay-is-a-competitor-to-centralized-payment-processors"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#9-btcpay-is-a-competitor-to-centralized-payment-processors"}},[e._v("#")]),e._v(" 9. BTCPay is a competitor to centralized payment processors")]),e._v(" "),t("p",[e._v("BTCPay is a technology stack and, as we earlier determined, is way more powerful than any other centralized payment processor.")]),e._v(" "),t("p",[e._v("BTCPay is a payment processor "),t("strong",[e._v("factory")]),e._v(", so how can you compare a single car to an entire factory? One thing people very often forget is that when you launch BTCPay, you're becoming a payment processor. It's up to you and your business to decide how you want to use BTCPay. You can use it as an internal, self-hosted solution to enhance privacy, security and save money or offer it as a service to other people and become a centralized processor yourself.")]),e._v(" "),t("h2",{attrs:{id:"10-btcpay-nodes-are-slow-to-sync-nobodys-going-to-wait"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#10-btcpay-nodes-are-slow-to-sync-nobodys-going-to-wait"}},[e._v("#")]),e._v(" 10. BTCPay nodes are slow to sync, nobody's going to wait")]),e._v(" "),t("p",[e._v("We covered the importance of full nodes and syncing, validation of transactions in our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/faq-and-common-issues/faq-synchronization",target:"_blank",rel:"noopener noreferrer"}},[e._v("Sync Documentation"),t("OutboundLink")],1),e._v(". Syncing a Bitcoin node takes time. We developed a solution called fast-sync which allows you to quickly sync your server from a trusted node's snapshot. There are lots of pros and cons to this solution, so it's recommended to read our "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/tree/master/contrib/FastSync",target:"_blank",rel:"noopener noreferrer"}},[e._v("Fast Sync"),t("OutboundLink")],1),e._v(" page to understand it fully.")]),e._v(" "),t("p",[e._v("But basically, if you really want to sync your full node quickly, you can use the fast sync and it will sync within a few hours(depending on snapshot date, network speed, and hardware specs).")]),e._v(" "),t("h2",{attrs:{id:"summary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),t("p",[e._v("There you have it. Hopefully, I managed to clear out some FUD and helped you understand BTCPay better. If you know any other myth we can add, "),t("a",{attrs:{href:"https://twitter.com/BtcpayServer",target:"_blank",rel:"noopener noreferrer"}},[e._v("ping us on Twitter"),t("OutboundLink")],1),e._v(" and we'll update the article accordingly.")]),e._v(" "),t("p",[e._v("At the beginning of the article I lied about the workout, but it appears I also lied about the boring day with no releases. Just as I was about to click publish, I saw this message.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screen-Shot-2019-03-13-at-15.21.12.png",alt:""}})]),e._v(" "),t("p",[e._v("It seems we did some improvements to our infrastructure after all.")]),e._v(" "),t("p",[e._v("There's definitely no boring day in BTCPay™.")]),e._v(" "),t("p",[e._v("Thanks for reading.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{367:function(e,t,a){"use strict";a.r(t);var o=a(10),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Got my morning coffee. Started the morning workout.")]),e._v(" "),t("p",[e._v("Okay, I lied about the workout.")]),e._v(" "),t("p",[e._v("Checked Mattermost, then Telegram.")]),e._v(" "),t("p",[e._v("Quiet.")]),e._v(" "),t("p",[e._v("It appears we won't be making a new BTCPay release today. Strange. I got used to that routine. We make releases frequently.")]),e._v(" "),t("p",[e._v("We're one and a half year old open-source project with exactly "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("373 releases"),t("OutboundLink")],1),e._v(" at the time of writing. That's crazy!")]),e._v(" "),t("p",[e._v("Every day there's something to be done in BTCPay. Apparently, today is not that day.")]),e._v(" "),t("p",[e._v("That's why I decided to write a cringy titled article that will hopefully clear out some common misconceptions and confusion surrounding BTCPay. Hopefully, it will give you a better overview of who we are and why we do what we do.")]),e._v(" "),t("p",[e._v("Without further ado, here are 10 "),t("em",[e._v("shocking")]),e._v(" misconceptions.")]),e._v(" "),t("h2",{attrs:{id:"1-btcpay-only-runs-on-azure-and-lunanode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#1-btcpay-only-runs-on-azure-and-lunanode"}},[e._v("#")]),e._v(" 1. BTCPay only runs on Azure and LunaNode")]),e._v(" "),t("p",[e._v('Recently someone asked me: "When can I run BTCPay on something other than Azure or LunaNode".')]),e._v(" "),t("p",[e._v("I must admit the question caught me by surprise.  I wasn't aware of the perception people had, but I completely understand where that idea comes from.")]),e._v(" "),t("p",[e._v("First of all, BTCPay was "),t("strong",[e._v("never limited")]),e._v(" to only Azure or LunaNode. We just happened to create tutorials and 1-click deployments for those two providers.")]),e._v(" "),t("p",[e._v("In reality, it has "),t("strong",[e._v("always been")]),e._v(" possible to run BTCPay on a VPS of your choice. Due to a variety of providers, we can't document them all, but the community constantly tries to create a step by step "),t("a",{attrs:{href:"http://docs.btcpayserver.org/deployment/",target:"_blank",rel:"noopener noreferrer"}},[e._v("deployment tutorials"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/You-can-deploy-BTCPay-on-a-raspberry-pi.jpg",alt:""}})]),e._v(" "),t("p",[e._v("You can deploy BTCPay on any VPS which meets the minimal requirements:")]),e._v(" "),t("ol",[t("li",[e._v("Docker")]),e._v(" "),t("li",[e._v("2GB RAM (It's possible with 1GB)")]),e._v(" "),t("li",[e._v("at least 15 GB of storage (depending on the "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker#generated-docker-compose-",target:"_blank",rel:"noopener noreferrer"}},[e._v("pruning option"),t("OutboundLink")],1),e._v(" you select)")])]),e._v(" "),t("p",[e._v("To  deploy BTCPay you just have to run these 4 lines on any VPS:")]),e._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" clone https://github.com/btcpayserver/btcpayserver-docker\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" btcpayserver-docker\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_HOST")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btcpay.yourdomain.com"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" ./btcpay-setup.sh "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-i")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br")])]),t("p",[e._v("You can, of course, modify "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker#environment-variables",target:"_blank",rel:"noopener noreferrer"}},[e._v("the environment variables"),t("OutboundLink")],1),e._v(" to adjust the installation to your business' specific needs.")]),e._v(" "),t("p",[e._v("The fact that you can deploy "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/raspberrypideployment",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay on Raspberry Pi"),t("OutboundLink")],1),e._v(" speaks volumes about the countless optimizations we've done to make the entire stack less resource-intensive and easier to run. As a matter of fact, we encourage people to run BTCPay on their own hardware and use a variety of VPS providers to decentralize even more.")]),e._v(" "),t("p",[e._v("Soon with "),t("a",{attrs:{href:"https://medium.com/@BtcpayServer/about-tor-and-btcpay-server-2ec1e4bd5e51",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tor support coming,"),t("OutboundLink")],1),e._v(" the number of code lines needed to deploy will be 3, without the need to configure DNS or even have a domain name. Apart from that, we also have work being done on a web installation wizard that can guide you through the entire process in a sleek UI without needing to touch any code or SSH terminal. You can follow the progress on the web installer at this "),t("a",{attrs:{href:"https://github.com/Kukks/btcpayserver-installer",target:"_blank",rel:"noopener noreferrer"}},[e._v("github repository"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"2-btcpay-supports-shitcoins"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#2-btcpay-supports-shitcoins"}},[e._v("#")]),e._v(" 2. BTCPay supports shitcoins")]),e._v(" "),t("p",[e._v("Call it altcoin or shitcoin, whatever you prefer, but one thing is for sure, it's a never-ending debate.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/advancing-bitcoin-2019-btcpayserver-architecture-8-638.jpg",alt:""}})]),e._v(" "),t("p",[e._v("Like many other projects and companies, we were recently accused of being a shitcoin payment processor. I won't lie, it left an entire community with a bitter taste in mouth and a feeling of disappointment and sadness. At least, that's how I felt.")]),e._v(" "),t("p",[e._v("As a hard-core Bitcoiner, the words of some people I used to look up to in this space really stung. Mostly because all of the contributors and developers are Bitcoiners to the bone.")]),e._v(" "),t("p",[e._v("The reality is, BTCPay does not support anything. We allow people to integrate their projects into ours, which users may opt-in to using or completely ignore.")]),e._v(" "),t("p",[e._v("Not a single altcoin is supported out of the box in BTCPay. When you deploy BTCPay with the default setup, you get a Bitcoin full node & Lightning network node. If you wish to include any of the supported alts, you must manually edit your environment variables to enable them. Modifying these requires technical know-how of logging into ssh and executing a few lines of code. For example, to add LTC to an existing environment (besides increasing the size and capabilities of your virtual machine) you'd have to do:")]),e._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v(" -\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" btcpayserver-docker\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO2")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"ltc"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" ./btcpay-setup.sh "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-i")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br")])]),t("p",[e._v("Then add the derivation scheme in your wallet.")]),e._v(" "),t("p",[e._v("Altcoins are supported and maintained by their communities, not ourselves. BTCPay developers do not add alternative coins on request. Adding a new coin explicitly depends on the community and developers of those coins or their resources to hire developers to integrate it for them. Furthermore, BTCPay developers do not spend excessive time testing nor maintaining altcoins that have been integrated.")]),e._v(" "),t("p",[e._v("Our principles are very clear and simple and we emphasize them in our documentation.")]),e._v(" "),t("ul",[t("li",[e._v("We do not debug altcoins")]),e._v(" "),t("li",[e._v("We do not test it for devs who integrated it")]),e._v(" "),t("li",[e._v("We do not advertise or support it (outside of update announcement)")]),e._v(" "),t("li",[e._v("We don't make invasive changes in the code to accommodate the altcoin.")]),e._v(" "),t("li",[e._v("We don't fix breaking changes which may break the coin integration.")])]),e._v(" "),t("p",[e._v("We are Bitcoiners first because we believe Bitcoin is the best to achieve self-sovereignty.")]),e._v(" "),t("p",[e._v("The way in which we'll handle altcoins in the future is yet to be determined. It's really not our focus, but if it becomes any sort of bottleneck that prohibits our efficiency, we will isolate the altcoin code from the main codebase even more.")]),e._v(" "),t("p",[e._v("For now, it does not require effort on our part and it makes some communities happy. More importantly, we must admit that alt developers have helped us out with finding bugs, resolving them and improving performance, especially in NBxplorer.")]),e._v(" "),t("p",[e._v("If you'd like to understand our architecture and stance better just watch Nicolas' "),t("a",{attrs:{href:"https://www.youtube.com/watch?v=Up0dvorzSNM",target:"_blank",rel:"noopener noreferrer"}},[e._v("presentation"),t("OutboundLink")],1),e._v(" on Advancing Bitcoin 2019 conference in London.")]),e._v(" "),t("h2",{attrs:{id:"3-btcpay-is-expensive"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#3-btcpay-is-expensive"}},[e._v("#")]),e._v(" 3. BTCPay is expensive")]),e._v(" "),t("p",[e._v("BTCPay in itself is "),t("strong",[e._v("free")]),e._v(" and open-source software anyone can use. You can use a third-party BTCPay host or self-host a server.")]),e._v(" "),t("p",[e._v("If you decide to go with a self-hosted solution, which is highly recommended, you need to have it hosted somewhere, a cloud or on your own hardware. Cloud hosting costs money. As I mentioned in #2, the cost to run BTCPay depends on the deployment method you've chosen and the variables you set up which we have found to be as little as $3-5 USD monthly.")]),e._v(" "),t("p",[e._v("When making a decision whether to go with a "),t("a",{attrs:{href:"https://docs.btcpayserver.org/btcpay-basics/btcpayvsothers",target:"_blank",rel:"noopener noreferrer"}},[e._v("centralized payment processor vs BTCPay"),t("OutboundLink")],1),e._v(", it is worth to consider that in BTCPay there are no fees. Zero, zip, zilch, nada.")]),e._v(" "),t("p",[e._v("If you're a very small business or just want to test BTCPay, there are people who allow others to use their servers for free or a small fee. We call them "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/thirdpartyhosting",target:"_blank",rel:"noopener noreferrer"}},[e._v("third-party hosts"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("The majority of third-party hosts offer BTCPay for free. "),t("a",{attrs:{href:"https://btcpayjungle.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPayJungle"),t("OutboundLink")],1),e._v(", for example, hosts a BTCPay instance for over 400 users, merchants and developers and they maintain their server from user donations. "),t("a",{attrs:{href:"https://lightbo.lt/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lightbo.lt"),t("OutboundLink")],1),e._v(" is one more great host.")]),e._v(" "),t("h2",{attrs:{id:"4-btcpay-is-a-company"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#4-btcpay-is-a-company"}},[e._v("#")]),e._v(" 4. BTCPay is a company")]),e._v(" "),t("p",[e._v("BTCPayer Server is an "),t("strong",[e._v("open-source project")]),e._v(", not a company. We rely on a network of contributors and users to provide support. The project exists for and because of the community. People working on BTCPay are voluntarily spending their time to improve the software for themselves and others.")]),e._v(" "),t("p",[e._v("You may not know this, but one of the contributors, "),t("a",{attrs:{href:"https://github.com/Kukks/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Kukks"),t("OutboundLink")],1),e._v(", quit his day-job to work on BTCPay voluntarily full-time. It's just pure passion and ideology that pushes us. We want to eliminate the middleman and help individuals and businesses become self-sovereign.")]),e._v(" "),t("p",[e._v("We try to fund any expenses from community donations, and we're thankful for each and every satoshi we receive.")]),e._v(" "),t("p",[e._v("As the project grows, it requires more and more time to maintain not only the software and support but the community itself. We're still unsure what BTCPay is and what it may become in the future, but one thing is sure: it will always be free, open-source and made by the community for the community.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BTCPay-Contributors.jpg",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"5-btcpay-does-not-have-a-conversion-to-fiat"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#5-btcpay-does-not-have-a-conversion-to-fiat"}},[e._v("#")]),e._v(" 5. BTCPay does not have a conversion to fiat")]),e._v(" "),t("p",[e._v("This statement is partially true. BTCPay does not have "),t("strong",[e._v("an instant")]),e._v(" conversion to fiat out of the box. Yet.")]),e._v(" "),t("p",[e._v("With BTCPay, you're your own payment processor and you own your keys. By owning the keys, you have the freedom to do whatever you like with your coins, because they're yours. That obviously means, that you can easily sell your coins to an exchange, but for now that's a manual process.")]),e._v(" "),t("p",[e._v("Good news is, that very soon we'll release a fiat bridge(currently codenamed "),t("a",{attrs:{href:"https://github.com/kukks/btctransmuter-vnext",target:"_blank",rel:"noopener noreferrer"}},[e._v("BtcTransmuter"),t("OutboundLink")],1),e._v(") that will allow users to not only instantly sell coins on an exchange but also provide an infinitely flexible system for a number of other use-cases. One of the additional use cases could be to provide liquidity to other users using their instance. That means, that if you want, you will be able to become a payment processor for others.")]),e._v(" "),t("p",[e._v("Until BtcTransmuter is ready for primetime, Blockonomics has made a "),t("a",{attrs:{href:"https://blockonomics.freshdesk.com/support/solutions/articles/33000234755-payment-forwarding-using-xpub-with-merchant-service",target:"_blank",rel:"noopener noreferrer"}},[e._v("payment forwarding service"),t("OutboundLink")],1),e._v(" that is compatible with BTCPay which you can use as a workaround to convert to fiat. We're seeing an increased interest from exchanges and businesses that would like to provide instant-conversion services that BTCPay merchants can use.")]),e._v(" "),t("h2",{attrs:{id:"6-btcpay-and-shopify"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#6-btcpay-and-shopify"}},[e._v("#")]),e._v(" 6. BTCPay and Shopify")]),e._v(" "),t("p",[e._v("BTCPay is a decentralized software, not a company. Shopify is centralized, walled garden. How can you get a decentralized software into a garden which not only does not accept new payment processors at this time but also requires a cut from processors?")]),e._v(" "),t("p",[e._v("You can't. BTCPay does not have Shopify integration. We tried really hard, but we were unable to get in there as an open-source project. That said, in future if someone wants to create a payment processor by using our technology stack and provide centralized service to merchants, that can be one way of getting into Shopify, but it's still going to require a lots of work.")]),e._v(" "),t("p",[e._v("This one is not a misconception nor a myth but deserves to be here as one of the most commonly asked questions and the fact people believe it's our fault we're not on Shopify yet.")]),e._v(" "),t("h2",{attrs:{id:"7-only-merchants-can-use-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#7-only-merchants-can-use-btcpay"}},[e._v("#")]),e._v(" 7. Only merchants can use BTCPay")]),e._v(" "),t("p",[e._v("BTCPay can be used by anyone who wants to receive payments on-chain or via the Lightning Network, without depending on a third party.")]),e._v(" "),t("p",[e._v("BTCPay has a "),t("a",{attrs:{href:"https://docs.btcpayserver.org/btcpay-basics/usecase",target:"_blank",rel:"noopener noreferrer"}},[e._v("wide-variety of use-cases"),t("OutboundLink")],1),e._v(", and with the applications that we build on top of it, we keep extending the list constantly.")]),e._v(" "),t("h3",{attrs:{id:"who-can-use-btcpay-anyone-anywhere-anytime"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#who-can-use-btcpay-anyone-anywhere-anytime"}},[e._v("#")]),e._v(" Who can use BTCPay? - Anyone. Anywhere. Anytime.")]),e._v(" "),t("p",[e._v("Here are some of the most common users, besides retail or online merchants:")]),e._v(" "),t("ul",[t("li",[e._v("Developers integrate into their projects (wallets, games, applications, platforms)")]),e._v(" "),t("li",[e._v("Lightning Network users (BTCPay is one of the easiest ways to deploy a Lightning Node) who use integration to make their shopping easier and non-custodial thanks to our out of the box integration with wallets and extensions like Joule, Spark, Zap, ZeusLN, and Pebble.")]),e._v(" "),t("li",[e._v("Charities use "),t("a",{attrs:{href:"https://docs.btcpayserver.org/features/apps#payment-button",target:"_blank",rel:"noopener noreferrer"}},[e._v("payment buttons"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://docs.btcpayserver.org/features/apps#crowdfunding-app",target:"_blank",rel:"noopener noreferrer"}},[e._v("crowdfunding"),t("OutboundLink")],1),e._v(" app to raise money")]),e._v(" "),t("li",[e._v("Freelancers and small businesses use "),t("a",{attrs:{href:"https://blog.btcpayserver.org/payment-requests/",target:"_blank",rel:"noopener noreferrer"}},[e._v("payment requests"),t("OutboundLink")],1),e._v(" to invoice their clients and get paid in Bitcoin by sharing a simple link")]),e._v(" "),t("li",[e._v("People who want to offer BTCPay to become payment processors for local or global market")]),e._v(" "),t("li",[e._v("Enterprises that want a secure, non-custodial technology stack for their Bitcoin operations")]),e._v(" "),t("li",[e._v("Exchanges and payment forwarders that offer instant fiat conversion to users")]),e._v(" "),t("li",[e._v("Hosting providers that offer BTCPay hosting")])]),e._v(" "),t("p",[e._v("As you can see, BTCPay, similar to Bitcoin, can be anything to anyone, but most importantly it's there when you need it. Customize it, fork it, adjust it.")]),e._v(" "),t("h2",{attrs:{id:"8-btcpay-is-a-clone-of-bitpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#8-btcpay-is-a-clone-of-bitpay"}},[e._v("#")]),e._v(" 8. BTCPay is a clone of BitPay")]),e._v(" "),t("p",[e._v("BTCPay is not BitPay's clone. We only have a "),t("strong",[e._v("compatible API")]),e._v(", which means whoever uses BitPay can migrate to BTCPay with ease. Their API however, is far from perfect with a big list of inefficiencies from their model constantly reminding us to do better. That backwards compatibility is becoming a huge bottleneck, and we plan to roll out our own API, which will enable amazing extensibility options such as using BTCPay as a headless payment processor or managing your stores completely through an API. You can follow progress on the initial steps of this API work "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/pull/464",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"9-btcpay-is-a-competitor-to-centralized-payment-processors"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#9-btcpay-is-a-competitor-to-centralized-payment-processors"}},[e._v("#")]),e._v(" 9. BTCPay is a competitor to centralized payment processors")]),e._v(" "),t("p",[e._v("BTCPay is a technology stack and, as we earlier determined, is way more powerful than any other centralized payment processor.")]),e._v(" "),t("p",[e._v("BTCPay is a payment processor "),t("strong",[e._v("factory")]),e._v(", so how can you compare a single car to an entire factory? One thing people very often forget is that when you launch BTCPay, you're becoming a payment processor. It's up to you and your business to decide how you want to use BTCPay. You can use it as an internal, self-hosted solution to enhance privacy, security and save money or offer it as a service to other people and become a centralized processor yourself.")]),e._v(" "),t("h2",{attrs:{id:"10-btcpay-nodes-are-slow-to-sync-nobodys-going-to-wait"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#10-btcpay-nodes-are-slow-to-sync-nobodys-going-to-wait"}},[e._v("#")]),e._v(" 10. BTCPay nodes are slow to sync, nobody's going to wait")]),e._v(" "),t("p",[e._v("We covered the importance of full nodes and syncing, validation of transactions in our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/faq-and-common-issues/faq-synchronization",target:"_blank",rel:"noopener noreferrer"}},[e._v("Sync Documentation"),t("OutboundLink")],1),e._v(". Syncing a Bitcoin node takes time. We developed a solution called fast-sync which allows you to quickly sync your server from a trusted node's snapshot. There are lots of pros and cons to this solution, so it's recommended to read our "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/tree/master/contrib/FastSync",target:"_blank",rel:"noopener noreferrer"}},[e._v("Fast Sync"),t("OutboundLink")],1),e._v(" page to understand it fully.")]),e._v(" "),t("p",[e._v("But basically, if you really want to sync your full node quickly, you can use the fast sync and it will sync within a few hours(depending on snapshot date, network speed, and hardware specs).")]),e._v(" "),t("h2",{attrs:{id:"summary"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#summary"}},[e._v("#")]),e._v(" Summary")]),e._v(" "),t("p",[e._v("There you have it. Hopefully, I managed to clear out some FUD and helped you understand BTCPay better. If you know any other myth we can add, "),t("a",{attrs:{href:"https://twitter.com/BtcpayServer",target:"_blank",rel:"noopener noreferrer"}},[e._v("ping us on Twitter"),t("OutboundLink")],1),e._v(" and we'll update the article accordingly.")]),e._v(" "),t("p",[e._v("At the beginning of the article I lied about the workout, but it appears I also lied about the boring day with no releases. Just as I was about to click publish, I saw this message.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screen-Shot-2019-03-13-at-15.21.12.png",alt:""}})]),e._v(" "),t("p",[e._v("It seems we did some improvements to our infrastructure after all.")]),e._v(" "),t("p",[e._v("There's definitely no boring day in BTCPay™.")]),e._v(" "),t("p",[e._v("Thanks for reading.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/64.f9b44021.js b/assets/js/64.82a9bcb1.js similarity index 99% rename from assets/js/64.f9b44021.js rename to assets/js/64.82a9bcb1.js index 34cc2e10..bae4cb6b 100644 --- a/assets/js/64.f9b44021.js +++ b/assets/js/64.82a9bcb1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{384:function(e,t,r){"use strict";r.r(t);var a=r(10),o=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("After a long wait, we're finally out of our coding cave, ready to introduce a new major BTCPay Server version - 1.5.0!")]),e._v(" "),t("p",[e._v("This release brings in a brand-new dashboard for easier analytics and better data visualization, payout processors and schedule for later for better payout management payments, batching your payments and refunds, several UX/UI improvements, Greenfield API additions and a few non-critical bug fixes.")]),e._v(" "),t("h2",{attrs:{id:"new-dashboard-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#new-dashboard-"}},[e._v("#")]),e._v(" New dashboard 📊")]),e._v(" "),t("p",[e._v("We know that having a quick glance at your store's performance is essential. Also we understand that as a user, you would like to have an easy way to access and manage recent invoices and refunds. That's why we're introducing a "),t("strong",[e._v("dashboard")]),e._v("!")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1-5-0-dashboard-1.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1-5-0-dashboard-2.png",alt:""}})]),e._v(" "),t("p",[e._v("Dashboard visually showcases critical store data, providing you with a way to better understand your store's performance, so that you take more informed decisions. Furthermore, a dashboard should help manage recent invoices, pending payouts, and refunds.")]),e._v(" "),t("p",[e._v("Currently, the dashboard shows data for an on-chain payment method, pending payouts and refunds, recent invoices & transactions, and the data for the crowdfunding app.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1-5-0-dashboard-3.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1-5-0-dashboard-4.png",alt:""}})]),e._v(" "),t("p",[e._v("For more information on dashboard functionality, "),t("a",{attrs:{href:"https://docs.btcpayserver.org/Dashboard/",target:"_blank",rel:"noopener noreferrer"}},[e._v("check our docs"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("We're building the dashboard with flexibility in mind, and the goal is extend its functionality via the plugin system.")]),e._v(" "),t("p",[e._v("We'd love to hear what you think about the dashboard and how it works for you. Let us know what kind of data would help you better manage your store.")]),e._v(" "),t("h2",{attrs:{id:"payout-processor-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#payout-processor-"}},[e._v("#")]),e._v(" Payout processor 🤖")]),e._v(" "),t("p",[e._v("Payout processors are a new concept that hooks into the "),t("a",{attrs:{href:"https://docs.btcpayserver.org/PullPayments/",target:"_blank",rel:"noopener noreferrer"}},[e._v("pull payment system"),t("OutboundLink")],1),e._v(", specifically the "),t("a",{attrs:{href:"https://docs.btcpayserver.org/PullPayments/#approve-and-pay-a-payout",target:"_blank",rel:"noopener noreferrer"}},[e._v("payout part of it"),t("OutboundLink")],1),e._v(". This new functionality allows you to automate the flow of the payouts.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1.5.0-payout-processor-1.png",alt:""}})]),e._v(" "),t("p",[e._v("For this release, we've baked into two payout processors for on-chain and off-chain payment methods, meaning they support bitcoin addresses, BOLT11, lightning address, and LNURL. Once configured, they run continuously and process any payout awaiting payment.")]),e._v(" "),t("p",[e._v("Set up a time interval in your store settings upon which your payouts will be batched and broadcasted to the network.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1.5.0-payout-processor-2.png",alt:""}})]),e._v(" "),t("p",[e._v("Payout processors, in their current state, allow you to save on transaction fees by batching the store's payments (wallet payments, refunds, payouts) and broadcasting them at a specific, pre-set time interval, for example, hourly, daily, weekly, and more. Additionally, it reduces the management overhead and lets payouts to your customers and users be paid out automatically as soon as they provide their bitcoin payment request.")]),e._v(" "),t("p",[e._v("But the best is yet to come. We've built this feature with plugins in mind. Opt-in payout processors plugins created by the community can open up additional ways to handle payments from your store, such as automated cold-storage forwarding, and "),t("a",{attrs:{href:"https://en.bitcoin.it/wiki/CoinJoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("coinjoins"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("We also have plans to create an additional payout processor in the coming versions of BTCPay Server that will enhance our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/Payjoin/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Payjoin "),t("OutboundLink")],1),e._v(" support to the "),t("a",{attrs:{href:"https://github.com/NicolasDorier/bips/pull/3#discussion_r422639395",target:"_blank",rel:"noopener noreferrer"}},[e._v("next level"),t("OutboundLink")],1),e._v(" to bring enhanced privacy and reduced fees.")]),e._v(" "),t("h3",{attrs:{id:"schedule-for-later-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#schedule-for-later-"}},[e._v("#")]),e._v(" Schedule for later 📆")]),e._v(" "),t("p",[e._v("We understand that 'payout processors' may sound a bit abstract, and that's why we've added a concrete use-case for it through our brand-new "),t("strong",[e._v("schedule for later")]),e._v(" function in the wallet.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1-5-0-schedule-transaction1.png",alt:""}})]),e._v(" "),t("p",[e._v("This means that now, instead of signing and broadcasting a transaction, you have the option to schedule it for later on at a pre-set time interval.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1-5-0-schedule-transaction2.png",alt:""}})]),e._v(" "),t("p",[e._v("And since our refunding system goes through the pull payments system, if payout processors are configured on your store, they can now automatically be paid out.")]),e._v(" "),t("h2",{attrs:{id:"enabledisable-users"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#enabledisable-users"}},[e._v("#")]),e._v(" Enable/disable users")]),e._v(" "),t("p",[e._v("Server admins now have the options to disable or re-enable users, allowing them to better manage people who use their instance.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1-5-0-enable-disable-users.png",alt:""}})]),e._v(" "),t("p",[e._v("This functionality can be handy for third-party hosts or services building on top of BTCPay Server or offering BTCPay third-party hosting.")]),e._v(" "),t("h2",{attrs:{id:"nbxplorer-updates-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nbxplorer-updates-"}},[e._v("#")]),e._v(" NBXplorer updates 🔎")]),e._v(" "),t("p",[e._v("In case you've missed it, our dependency NBXPlorer has undergone a major performance refactoring.")]),e._v(" "),t("p",[e._v("We did most of the refactoring in service of how data is handled in the dashboard and improved the performance for larger enterprise users.")]),e._v(" "),t("p",[e._v("You can read more about the NBXplorer updates "),t("a",{attrs:{href:"https://blog.btcpayserver.org/nbxplorer-postgres/",target:"_blank",rel:"noopener noreferrer"}},[e._v("in this blog post"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"uxui-improvements-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#uxui-improvements-"}},[e._v("#")]),e._v(" UX/UI improvements 🎨")]),e._v(" "),t("p",[e._v("As usual, we're ironing out the user interface with every release, making incremental changes based on our understanding of how you use BTCPay Server. Your feedback is always a critical factor when we're making such changes.")]),e._v(" "),t("ul",[t("li",[e._v("Better "),t("strong",[e._v("Lightning services access")]),e._v(" - access Lightning Network services with the click of a button.")]),e._v(" "),t("li",[t("strong",[e._v("Store default currency for entities")]),e._v(" - introduced in an earlier release, the default currency is now pre-set, but easily configurable when you're creating invoices, pull payments, pay button or payment requests.")]),e._v(" "),t("li",[e._v("Add additional rate providers supported by CoinGecko.")])]),e._v(" "),t("h2",{attrs:{id:"greenfield-api-‍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#greenfield-api-‍"}},[e._v("#")]),e._v(" Greenfield API 👩‍💻")]),e._v(" "),t("p",[e._v("In this release we added a few new functionalities to our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/API/Greenfield/v1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Greenfield API"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("ul",[t("li",[e._v("Add transaction info for on chain wallet")]),e._v(" "),t("li",[e._v("Add label filter for on chain wallet transaction")]),e._v(" "),t("li",[e._v("Add Lightning payment info")])]),e._v(" "),t("p",[e._v("We're noticing an uptrend in people building on top of BTCPay Server. If you're building something with our Greenfield API, we're always looking to get more feedback on how to improve it and we love to see what you've made!")]),e._v(" "),t("h2",{attrs:{id:"thank-you-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#thank-you-"}},[e._v("#")]),e._v(" Thank you 💚")]),e._v(" "),t("p",[e._v("As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our "),t("a",{attrs:{href:"https://chat.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat"),t("OutboundLink")],1),e._v(". We hope you enjoy what this update has to offer.")]),e._v(" "),t("p",[e._v("As always, thank you to our invaluable contributors, who directly participated in making 1.5.0 possible:")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/dafunction",target:"_blank",rel:"noopener noreferrer"}},[e._v("@dafunction"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/dennisreimann",target:"_blank",rel:"noopener noreferrer"}},[e._v("@dennisreimann"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/dstrukt",target:"_blank",rel:"noopener noreferrer"}},[e._v("@dstrukt"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/kukks/",target:"_blank",rel:"noopener noreferrer"}},[e._v("@Kukks"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/leesalminen/",target:"_blank",rel:"noopener noreferrer"}},[e._v("@leesalminen"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/nicolasdorier/",target:"_blank",rel:"noopener noreferrer"}},[e._v("@NicolasDorier"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/orangesurf",target:"_blank",rel:"noopener noreferrer"}},[e._v("orangesurf"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/bolatovumar",target:"_blank",rel:"noopener noreferrer"}},[e._v("@bolatovumar"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/woutersamaey",target:"_blank",rel:"noopener noreferrer"}},[e._v("@woutersamaey"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more!")]),e._v(" "),t("p",[e._v("BTCPay Server could never rapidly progress without your help!")]),e._v(" "),t("p",[e._v("The BTCPay Server team 💚")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{385:function(e,t,r){"use strict";r.r(t);var a=r(10),o=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("After a long wait, we're finally out of our coding cave, ready to introduce a new major BTCPay Server version - 1.5.0!")]),e._v(" "),t("p",[e._v("This release brings in a brand-new dashboard for easier analytics and better data visualization, payout processors and schedule for later for better payout management payments, batching your payments and refunds, several UX/UI improvements, Greenfield API additions and a few non-critical bug fixes.")]),e._v(" "),t("h2",{attrs:{id:"new-dashboard-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#new-dashboard-"}},[e._v("#")]),e._v(" New dashboard 📊")]),e._v(" "),t("p",[e._v("We know that having a quick glance at your store's performance is essential. Also we understand that as a user, you would like to have an easy way to access and manage recent invoices and refunds. That's why we're introducing a "),t("strong",[e._v("dashboard")]),e._v("!")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1-5-0-dashboard-1.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1-5-0-dashboard-2.png",alt:""}})]),e._v(" "),t("p",[e._v("Dashboard visually showcases critical store data, providing you with a way to better understand your store's performance, so that you take more informed decisions. Furthermore, a dashboard should help manage recent invoices, pending payouts, and refunds.")]),e._v(" "),t("p",[e._v("Currently, the dashboard shows data for an on-chain payment method, pending payouts and refunds, recent invoices & transactions, and the data for the crowdfunding app.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1-5-0-dashboard-3.png",alt:""}})]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1-5-0-dashboard-4.png",alt:""}})]),e._v(" "),t("p",[e._v("For more information on dashboard functionality, "),t("a",{attrs:{href:"https://docs.btcpayserver.org/Dashboard/",target:"_blank",rel:"noopener noreferrer"}},[e._v("check our docs"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("We're building the dashboard with flexibility in mind, and the goal is extend its functionality via the plugin system.")]),e._v(" "),t("p",[e._v("We'd love to hear what you think about the dashboard and how it works for you. Let us know what kind of data would help you better manage your store.")]),e._v(" "),t("h2",{attrs:{id:"payout-processor-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#payout-processor-"}},[e._v("#")]),e._v(" Payout processor 🤖")]),e._v(" "),t("p",[e._v("Payout processors are a new concept that hooks into the "),t("a",{attrs:{href:"https://docs.btcpayserver.org/PullPayments/",target:"_blank",rel:"noopener noreferrer"}},[e._v("pull payment system"),t("OutboundLink")],1),e._v(", specifically the "),t("a",{attrs:{href:"https://docs.btcpayserver.org/PullPayments/#approve-and-pay-a-payout",target:"_blank",rel:"noopener noreferrer"}},[e._v("payout part of it"),t("OutboundLink")],1),e._v(". This new functionality allows you to automate the flow of the payouts.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1.5.0-payout-processor-1.png",alt:""}})]),e._v(" "),t("p",[e._v("For this release, we've baked into two payout processors for on-chain and off-chain payment methods, meaning they support bitcoin addresses, BOLT11, lightning address, and LNURL. Once configured, they run continuously and process any payout awaiting payment.")]),e._v(" "),t("p",[e._v("Set up a time interval in your store settings upon which your payouts will be batched and broadcasted to the network.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1.5.0-payout-processor-2.png",alt:""}})]),e._v(" "),t("p",[e._v("Payout processors, in their current state, allow you to save on transaction fees by batching the store's payments (wallet payments, refunds, payouts) and broadcasting them at a specific, pre-set time interval, for example, hourly, daily, weekly, and more. Additionally, it reduces the management overhead and lets payouts to your customers and users be paid out automatically as soon as they provide their bitcoin payment request.")]),e._v(" "),t("p",[e._v("But the best is yet to come. We've built this feature with plugins in mind. Opt-in payout processors plugins created by the community can open up additional ways to handle payments from your store, such as automated cold-storage forwarding, and "),t("a",{attrs:{href:"https://en.bitcoin.it/wiki/CoinJoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("coinjoins"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("We also have plans to create an additional payout processor in the coming versions of BTCPay Server that will enhance our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/Payjoin/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Payjoin "),t("OutboundLink")],1),e._v(" support to the "),t("a",{attrs:{href:"https://github.com/NicolasDorier/bips/pull/3#discussion_r422639395",target:"_blank",rel:"noopener noreferrer"}},[e._v("next level"),t("OutboundLink")],1),e._v(" to bring enhanced privacy and reduced fees.")]),e._v(" "),t("h3",{attrs:{id:"schedule-for-later-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#schedule-for-later-"}},[e._v("#")]),e._v(" Schedule for later 📆")]),e._v(" "),t("p",[e._v("We understand that 'payout processors' may sound a bit abstract, and that's why we've added a concrete use-case for it through our brand-new "),t("strong",[e._v("schedule for later")]),e._v(" function in the wallet.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1-5-0-schedule-transaction1.png",alt:""}})]),e._v(" "),t("p",[e._v("This means that now, instead of signing and broadcasting a transaction, you have the option to schedule it for later on at a pre-set time interval.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1-5-0-schedule-transaction2.png",alt:""}})]),e._v(" "),t("p",[e._v("And since our refunding system goes through the pull payments system, if payout processors are configured on your store, they can now automatically be paid out.")]),e._v(" "),t("h2",{attrs:{id:"enabledisable-users"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#enabledisable-users"}},[e._v("#")]),e._v(" Enable/disable users")]),e._v(" "),t("p",[e._v("Server admins now have the options to disable or re-enable users, allowing them to better manage people who use their instance.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/1-5-0-enable-disable-users.png",alt:""}})]),e._v(" "),t("p",[e._v("This functionality can be handy for third-party hosts or services building on top of BTCPay Server or offering BTCPay third-party hosting.")]),e._v(" "),t("h2",{attrs:{id:"nbxplorer-updates-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#nbxplorer-updates-"}},[e._v("#")]),e._v(" NBXplorer updates 🔎")]),e._v(" "),t("p",[e._v("In case you've missed it, our dependency NBXPlorer has undergone a major performance refactoring.")]),e._v(" "),t("p",[e._v("We did most of the refactoring in service of how data is handled in the dashboard and improved the performance for larger enterprise users.")]),e._v(" "),t("p",[e._v("You can read more about the NBXplorer updates "),t("a",{attrs:{href:"https://blog.btcpayserver.org/nbxplorer-postgres/",target:"_blank",rel:"noopener noreferrer"}},[e._v("in this blog post"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"uxui-improvements-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#uxui-improvements-"}},[e._v("#")]),e._v(" UX/UI improvements 🎨")]),e._v(" "),t("p",[e._v("As usual, we're ironing out the user interface with every release, making incremental changes based on our understanding of how you use BTCPay Server. Your feedback is always a critical factor when we're making such changes.")]),e._v(" "),t("ul",[t("li",[e._v("Better "),t("strong",[e._v("Lightning services access")]),e._v(" - access Lightning Network services with the click of a button.")]),e._v(" "),t("li",[t("strong",[e._v("Store default currency for entities")]),e._v(" - introduced in an earlier release, the default currency is now pre-set, but easily configurable when you're creating invoices, pull payments, pay button or payment requests.")]),e._v(" "),t("li",[e._v("Add additional rate providers supported by CoinGecko.")])]),e._v(" "),t("h2",{attrs:{id:"greenfield-api-‍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#greenfield-api-‍"}},[e._v("#")]),e._v(" Greenfield API 👩‍💻")]),e._v(" "),t("p",[e._v("In this release we added a few new functionalities to our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/API/Greenfield/v1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Greenfield API"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("ul",[t("li",[e._v("Add transaction info for on chain wallet")]),e._v(" "),t("li",[e._v("Add label filter for on chain wallet transaction")]),e._v(" "),t("li",[e._v("Add Lightning payment info")])]),e._v(" "),t("p",[e._v("We're noticing an uptrend in people building on top of BTCPay Server. If you're building something with our Greenfield API, we're always looking to get more feedback on how to improve it and we love to see what you've made!")]),e._v(" "),t("h2",{attrs:{id:"thank-you-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#thank-you-"}},[e._v("#")]),e._v(" Thank you 💚")]),e._v(" "),t("p",[e._v("As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our "),t("a",{attrs:{href:"https://chat.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat"),t("OutboundLink")],1),e._v(". We hope you enjoy what this update has to offer.")]),e._v(" "),t("p",[e._v("As always, thank you to our invaluable contributors, who directly participated in making 1.5.0 possible:")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://github.com/dafunction",target:"_blank",rel:"noopener noreferrer"}},[e._v("@dafunction"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/dennisreimann",target:"_blank",rel:"noopener noreferrer"}},[e._v("@dennisreimann"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/dstrukt",target:"_blank",rel:"noopener noreferrer"}},[e._v("@dstrukt"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/kukks/",target:"_blank",rel:"noopener noreferrer"}},[e._v("@Kukks"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/leesalminen/",target:"_blank",rel:"noopener noreferrer"}},[e._v("@leesalminen"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/nicolasdorier/",target:"_blank",rel:"noopener noreferrer"}},[e._v("@NicolasDorier"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/orangesurf",target:"_blank",rel:"noopener noreferrer"}},[e._v("orangesurf"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/bolatovumar",target:"_blank",rel:"noopener noreferrer"}},[e._v("@bolatovumar"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://github.com/woutersamaey",target:"_blank",rel:"noopener noreferrer"}},[e._v("@woutersamaey"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more!")]),e._v(" "),t("p",[e._v("BTCPay Server could never rapidly progress without your help!")]),e._v(" "),t("p",[e._v("The BTCPay Server team 💚")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/65.d36a4247.js b/assets/js/65.81f4b18d.js similarity index 99% rename from assets/js/65.d36a4247.js rename to assets/js/65.81f4b18d.js index 765ac09e..9d3e37f1 100644 --- a/assets/js/65.d36a4247.js +++ b/assets/js/65.81f4b18d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{385:function(e,t,a){"use strict";a.r(t);var r=a(10),o=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("We're finally back from our coding caves! Now that we have vitamin D and a bit of fresh air, we're excited to show you the new BTCPay Server version - 1.6.0!")]),e._v(" "),t("p",[e._v("This release's highlights are the introduction of Lightning and point of sale data to the dashboard, customer receipt for customers, emails for invoice statuses, LNURL-withdraw support for refunds, and plenty of other UX improvements, bug fixes, and features. If you have a low-time preference, you can take a quick look at the changelog "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/releases/tag/v1.6.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"security-vulnerability-patch-️"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#security-vulnerability-patch-️"}},[e._v("#")]),e._v(" Security vulnerability patch 🛡️")]),e._v(" "),t("p",[e._v("Before we show you what's new in 1.6.0, we have an announcement.")]),e._v(" "),t("p",[e._v("In the past six months, we fixed a critical security vulnerability in one of BTCPay's versions. The security vulnerability has been disclosed responsibly, and we granted a bounty to the security researcher who discovered it. As far as we know, this particular vulnerability has not been exploited in the wild as it depends on multiple factors. For security reasons, we will not publicly disclose details yet. Timeframe for public disclosure is 6-12 months. We already have a CVE number reserved for it.")]),e._v(" "),t("p",[e._v("It's very likely that by updating BTCPay Server in the past six months, you've already patched this vulnerability. To be safe, update your instance if you haven't done so in a long time.")]),e._v(" "),t("p",[e._v("Let's see what new features and improvements this version brings us!")]),e._v(" "),t("h2",{attrs:{id:"dashboard-improvements-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dashboard-improvements-"}},[e._v("#")]),e._v(" Dashboard improvements 📊")]),e._v(" "),t("p",[e._v("We listened to your feedback carefully and added new functionality to the dashboard that will allow you to get essential insights about your store at a glance.")]),e._v(" "),t("p",[e._v("These improvements include the addition of:")]),e._v(" "),t("ul",[t("li",[e._v("Store currency balance toggle")]),e._v(" "),t("li",[e._v("Lightning Network data")]),e._v(" "),t("li",[e._v("Point of sale product data")])]),e._v(" "),t("h3",{attrs:{id:"balance-currency-toggle"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#balance-currency-toggle"}},[e._v("#")]),e._v(" Balance currency toggle")]),e._v(" "),t("p",[e._v("Firstly, you'll notice that the dashboard allows you to toggle between BTC and store default currency. You can change the default currency in your Store Settings.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/dashboard-currency-switch.gif",alt:""}})]),e._v(" "),t("h3",{attrs:{id:"lightning-dashboard-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lightning-dashboard-data"}},[e._v("#")]),e._v(" Lightning dashboard data")]),e._v(" "),t("p",[e._v("In "),t("a",{attrs:{href:"https://blog.btcpayserver.org/btcpay-server-1-5-0/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.5.0"),t("OutboundLink")],1),e._v(", we introduced a dashboard. However, it contained data for on-chain only. In 1.6.0, we're adding basic data for lightning. You'll now get information on how much funds in channels you have remote, locally, and even in the closing channels.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/dashboard-lightning-data.gif",alt:""}})]),e._v(" "),t("p",[e._v("Furthermore, Lightning services such as RTL, ThunderHub, Spark, and Lightning Terminal are now accessible from the dashboard.")]),e._v(" "),t("h3",{attrs:{id:"point-of-sale-product-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#point-of-sale-product-data"}},[e._v("#")]),e._v(" Point of sale product data")]),e._v(" "),t("p",[e._v("If you're selling your products through our point-of-sale app, you'll see information about the products you've sold and the amounts. The crowdfunding tile has also been re-designed to use the same style, so if you have added perks, they'll appear similarly.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/posdatanew.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"invoice-receipts-🧾"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#invoice-receipts-🧾"}},[e._v("#")]),e._v(" Invoice receipts 🧾")]),e._v(" "),t("p",[e._v("One of the most common requests we've heard from you is that you'd like to have a receipt once the invoice is settled. This version offers the ability to enable invoice receipts in your "),t("code",[e._v("Checkout Settings")]),e._v(".")]),e._v(" "),t("p",[e._v("When the invoice is settled, the view receipt button will lead the customer to a page that contains information about their payment. You can optionally add a QR code, which is convenient if the receipt is supposed to be printed (a ticket for an event).")]),e._v(" "),t("p",[e._v("On the API, you can toggle receipts when creating your invoices. You can also specify additional data to show on the receipt. For example, if you were selling licenses or software, you could add the license key to the receipt page or even a link to download the purchased software.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/receipt.png",alt:""}})]),e._v(" "),t("p",[e._v('In case you\'re wondering what happens with the "back to the store button" once the receipt is on, here are potential scenarios:')]),e._v(" "),t("ul",[t("li",[e._v('If the receipt is on and there is a redirect URL set, both "back to the store" and a "view receipt" buttons will be shown.')]),e._v(" "),t("li",[e._v('If the invoice shows in modal and the receipt is on, the "view receipt" button is shown and opens a new window.')]),e._v(" "),t("li",[e._v("Only the receipt button will be shown when you've set the receipt URL, similar to the redirect URL.")])]),e._v(" "),t("p",[e._v("If you have a specific use case for receipts or would like to suggest how to improve the functionality, let us know, we'd love to hear how you're using this feature.")]),e._v(" "),t("h2",{attrs:{id:"automated-customized-emails-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#automated-customized-emails-"}},[e._v("#")]),e._v(" Automated & customized emails 📧")]),e._v(" "),t("p",[e._v("We've added preliminary support for sending out emails to your customers based on invoice updates. You can now create email rules if you have an SMTP configured in your store settings. This means you can send follow-up emails after the invoice is settled (with a link to the new receipt feature)or an email to improve the bounce rate on your abandoned cart.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/customizedemails.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"lnurl-withdraw-support-for-payouts-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lnurl-withdraw-support-for-payouts-"}},[e._v("#")]),e._v(" LNURL-withdraw support for payouts 🔄")]),e._v(" "),t("p",[e._v("Issuing a refund via Bolt11 invoice can be a frustrating experience, especially when the expiration time is involved. For example, if you're a merchant creating a refund for your customer, they have an option to input bolt11. However, depending on their wallet, their expiration time can be significantly lower than your processing time. A merchant would see the refund request when it has already expired.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/lnurlwithdrawrefunds.gif",alt:""}})]),e._v(" "),t("p",[e._v("By implementing LNURL-withdraw into our payouts (and refunds), customers can now claim and withdraw funds by scanning a QR code from a compatible wallet. There are still some limitations in this flow.")]),e._v(" "),t("p",[e._v("For example, if you're issuing a refund and would like to offer LNURL-withdraw, the target currency must be BTC. Our wizards will be working hard on improving in the next release.")]),e._v(" "),t("h2",{attrs:{id:"greenfield-api-‍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#greenfield-api-‍"}},[e._v("#")]),e._v(" Greenfield API 👩‍💻")]),e._v(" "),t("p",[e._v("In this release we added a few new functionalities to our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/API/Greenfield/v1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Greenfield API"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("ul",[t("li",[e._v("Basic API Get and Delete operations for apps")]),e._v(" "),t("li",[e._v("Add Lightning balance endpoint")]),e._v(" "),t("li",[e._v("Allow excluding unconfirmed UTXOs when creating a new transaction")])]),e._v(" "),t("p",[e._v("We're noticing an uptrend in people building on top of BTCPay Server. If you're building something with our Greenfield API, we're always looking to get more feedback on how to improve it and we love to see what you've made!")]),e._v(" "),t("h2",{attrs:{id:"joomla-virtuemart-integration-️"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#joomla-virtuemart-integration-️"}},[e._v("#")]),e._v(" Joomla VirtueMart integration 🛍️")]),e._v(" "),t("p",[e._v("We're excited to add one more e-commerce plugin. While not explicitly tied to this release, we launched a Joomla VirtueMart integration that allows you to accept bitcoin in your Joomla VM store. If you'd like to help us test this out, you can check "),t("a",{attrs:{href:"https://docs.btcpayserver.org/VirtueMart/",target:"_blank",rel:"noopener noreferrer"}},[e._v("our documentation"),t("OutboundLink")],1),e._v(" and get started right away. We're really looking forward to getting feedback on how it works for you and what we can do to make that merchant experience even smoother!")]),e._v(" "),t("h2",{attrs:{id:"cloudflare-tunnel-support-☁️"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cloudflare-tunnel-support-☁️"}},[e._v("#")]),e._v(" Cloudflare tunnel support ☁️")]),e._v(" "),t("p",[e._v("People running BTCPay Server locally on home-devices like Raspberry Pi, will be happy that we finally figured out a way to safely expose it to your customers through Cloudflare.")]),e._v(" "),t("p",[e._v("Be aware that Cloudflare can see or modify all of your traffic, as it acts as a middleman between the client's browser and your local server. If you’re interested in learning how this works, check out our extensive doc on "),t("a",{attrs:{href:"https://docs.btcpayserver.org/Docker/cloudflare-tunnel/",target:"_blank",rel:"noopener noreferrer"}},[e._v("this link"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"plugins-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#plugins-"}},[e._v("#")]),e._v(" Plugins 🔌")]),e._v(" "),t("p",[e._v("Besides our beloved payment button becoming a plugin, here are a few more plugins to highlight.")]),e._v(" "),t("h3",{attrs:{id:"lnurl-nfc-support"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lnurl-nfc-support"}},[e._v("#")]),e._v(" LNURL NFC Support")]),e._v(" "),t("p",[e._v("If you have a "),t("a",{attrs:{href:"https://caniuse.com/webnfc",target:"_blank",rel:"noopener noreferrer"}},[e._v("browser-compatible"),t("OutboundLink")],1),e._v(" NFC phone, (ehm, currently only Chrome on Android, you can use our point-of-sale app to make NFC payments. "),t("a",{attrs:{href:"https://twitter.com/thedavidcoen",target:"_blank",rel:"noopener noreferrer"}},[e._v("David Cohen"),t("OutboundLink")],1),e._v(" made a few videos and tweets explaining how this works if you’d like to try it out. Bear in mind, it only works when LNURL is a payment method and only on Chrome on Android.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/4m-FQoUAs50/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=4m-FQoUAs50","data-id":"4m-FQoUAs50"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/4m-FQoUAs50?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("h3",{attrs:{id:"tickettailor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tickettailor"}},[e._v("#")]),e._v(" TicketTailor")]),e._v(" "),t("p",[e._v("In case you’re organizing a bitcoin event, a conference or a concert, TicketTailor is a ticket management system that handles everything for you. The TicketTailor plugin allows you to connect your BTCPay Store to their system and accept Bitcoin payments for your dream event!")]),e._v(" "),t("p",[e._v("This integration is already being used in the wild by "),t("a",{attrs:{href:"https://baltichoneybadger.com/buy-tickets",target:"_blank",rel:"noopener noreferrer"}},[e._v("Baltic HoneyBadger 2022"),t("OutboundLink")],1),e._v(" organizers.")]),e._v(" "),t("h3",{attrs:{id:"lnbank"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lnbank"}},[e._v("#")]),e._v(" LNBank")]),e._v(" "),t("p",[e._v("A plugin which allows server admins to enable wallets creation on top of their Lightning node, essentially creating another layer on top that allows everyone to accept lightning payments via BTCPay has received an update. V1.2.3 LNBank improves API responses and send error message handling and on top of that now allows zero confirmation invoices creation.")]),e._v(" "),t("h2",{attrs:{id:"thank-you-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#thank-you-"}},[e._v("#")]),e._v(" Thank you 💚")]),e._v(" "),t("p",[e._v("As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our "),t("a",{attrs:{href:"https://chat.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat"),t("OutboundLink")],1),e._v(". We hope you enjoy what this update has to offer.")]),e._v(" "),t("p",[e._v("As always, thank you to our invaluable contributors, who directly participated in making 1.6.0 possible.")]),e._v(" "),t("p",[e._v("Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more!")]),e._v(" "),t("p",[e._v("BTCPay Server could never rapidly progress without your help!")]),e._v(" "),t("p",[e._v("The BTCPay Server team 💚")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{384:function(e,t,a){"use strict";a.r(t);var r=a(10),o=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("We're finally back from our coding caves! Now that we have vitamin D and a bit of fresh air, we're excited to show you the new BTCPay Server version - 1.6.0!")]),e._v(" "),t("p",[e._v("This release's highlights are the introduction of Lightning and point of sale data to the dashboard, customer receipt for customers, emails for invoice statuses, LNURL-withdraw support for refunds, and plenty of other UX improvements, bug fixes, and features. If you have a low-time preference, you can take a quick look at the changelog "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/releases/tag/v1.6.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"security-vulnerability-patch-️"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#security-vulnerability-patch-️"}},[e._v("#")]),e._v(" Security vulnerability patch 🛡️")]),e._v(" "),t("p",[e._v("Before we show you what's new in 1.6.0, we have an announcement.")]),e._v(" "),t("p",[e._v("In the past six months, we fixed a critical security vulnerability in one of BTCPay's versions. The security vulnerability has been disclosed responsibly, and we granted a bounty to the security researcher who discovered it. As far as we know, this particular vulnerability has not been exploited in the wild as it depends on multiple factors. For security reasons, we will not publicly disclose details yet. Timeframe for public disclosure is 6-12 months. We already have a CVE number reserved for it.")]),e._v(" "),t("p",[e._v("It's very likely that by updating BTCPay Server in the past six months, you've already patched this vulnerability. To be safe, update your instance if you haven't done so in a long time.")]),e._v(" "),t("p",[e._v("Let's see what new features and improvements this version brings us!")]),e._v(" "),t("h2",{attrs:{id:"dashboard-improvements-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dashboard-improvements-"}},[e._v("#")]),e._v(" Dashboard improvements 📊")]),e._v(" "),t("p",[e._v("We listened to your feedback carefully and added new functionality to the dashboard that will allow you to get essential insights about your store at a glance.")]),e._v(" "),t("p",[e._v("These improvements include the addition of:")]),e._v(" "),t("ul",[t("li",[e._v("Store currency balance toggle")]),e._v(" "),t("li",[e._v("Lightning Network data")]),e._v(" "),t("li",[e._v("Point of sale product data")])]),e._v(" "),t("h3",{attrs:{id:"balance-currency-toggle"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#balance-currency-toggle"}},[e._v("#")]),e._v(" Balance currency toggle")]),e._v(" "),t("p",[e._v("Firstly, you'll notice that the dashboard allows you to toggle between BTC and store default currency. You can change the default currency in your Store Settings.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/dashboard-currency-switch.gif",alt:""}})]),e._v(" "),t("h3",{attrs:{id:"lightning-dashboard-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lightning-dashboard-data"}},[e._v("#")]),e._v(" Lightning dashboard data")]),e._v(" "),t("p",[e._v("In "),t("a",{attrs:{href:"https://blog.btcpayserver.org/btcpay-server-1-5-0/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.5.0"),t("OutboundLink")],1),e._v(", we introduced a dashboard. However, it contained data for on-chain only. In 1.6.0, we're adding basic data for lightning. You'll now get information on how much funds in channels you have remote, locally, and even in the closing channels.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/dashboard-lightning-data.gif",alt:""}})]),e._v(" "),t("p",[e._v("Furthermore, Lightning services such as RTL, ThunderHub, Spark, and Lightning Terminal are now accessible from the dashboard.")]),e._v(" "),t("h3",{attrs:{id:"point-of-sale-product-data"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#point-of-sale-product-data"}},[e._v("#")]),e._v(" Point of sale product data")]),e._v(" "),t("p",[e._v("If you're selling your products through our point-of-sale app, you'll see information about the products you've sold and the amounts. The crowdfunding tile has also been re-designed to use the same style, so if you have added perks, they'll appear similarly.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/posdatanew.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"invoice-receipts-🧾"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#invoice-receipts-🧾"}},[e._v("#")]),e._v(" Invoice receipts 🧾")]),e._v(" "),t("p",[e._v("One of the most common requests we've heard from you is that you'd like to have a receipt once the invoice is settled. This version offers the ability to enable invoice receipts in your "),t("code",[e._v("Checkout Settings")]),e._v(".")]),e._v(" "),t("p",[e._v("When the invoice is settled, the view receipt button will lead the customer to a page that contains information about their payment. You can optionally add a QR code, which is convenient if the receipt is supposed to be printed (a ticket for an event).")]),e._v(" "),t("p",[e._v("On the API, you can toggle receipts when creating your invoices. You can also specify additional data to show on the receipt. For example, if you were selling licenses or software, you could add the license key to the receipt page or even a link to download the purchased software.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/receipt.png",alt:""}})]),e._v(" "),t("p",[e._v('In case you\'re wondering what happens with the "back to the store button" once the receipt is on, here are potential scenarios:')]),e._v(" "),t("ul",[t("li",[e._v('If the receipt is on and there is a redirect URL set, both "back to the store" and a "view receipt" buttons will be shown.')]),e._v(" "),t("li",[e._v('If the invoice shows in modal and the receipt is on, the "view receipt" button is shown and opens a new window.')]),e._v(" "),t("li",[e._v("Only the receipt button will be shown when you've set the receipt URL, similar to the redirect URL.")])]),e._v(" "),t("p",[e._v("If you have a specific use case for receipts or would like to suggest how to improve the functionality, let us know, we'd love to hear how you're using this feature.")]),e._v(" "),t("h2",{attrs:{id:"automated-customized-emails-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#automated-customized-emails-"}},[e._v("#")]),e._v(" Automated & customized emails 📧")]),e._v(" "),t("p",[e._v("We've added preliminary support for sending out emails to your customers based on invoice updates. You can now create email rules if you have an SMTP configured in your store settings. This means you can send follow-up emails after the invoice is settled (with a link to the new receipt feature)or an email to improve the bounce rate on your abandoned cart.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/customizedemails.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"lnurl-withdraw-support-for-payouts-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lnurl-withdraw-support-for-payouts-"}},[e._v("#")]),e._v(" LNURL-withdraw support for payouts 🔄")]),e._v(" "),t("p",[e._v("Issuing a refund via Bolt11 invoice can be a frustrating experience, especially when the expiration time is involved. For example, if you're a merchant creating a refund for your customer, they have an option to input bolt11. However, depending on their wallet, their expiration time can be significantly lower than your processing time. A merchant would see the refund request when it has already expired.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/lnurlwithdrawrefunds.gif",alt:""}})]),e._v(" "),t("p",[e._v("By implementing LNURL-withdraw into our payouts (and refunds), customers can now claim and withdraw funds by scanning a QR code from a compatible wallet. There are still some limitations in this flow.")]),e._v(" "),t("p",[e._v("For example, if you're issuing a refund and would like to offer LNURL-withdraw, the target currency must be BTC. Our wizards will be working hard on improving in the next release.")]),e._v(" "),t("h2",{attrs:{id:"greenfield-api-‍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#greenfield-api-‍"}},[e._v("#")]),e._v(" Greenfield API 👩‍💻")]),e._v(" "),t("p",[e._v("In this release we added a few new functionalities to our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/API/Greenfield/v1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Greenfield API"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("ul",[t("li",[e._v("Basic API Get and Delete operations for apps")]),e._v(" "),t("li",[e._v("Add Lightning balance endpoint")]),e._v(" "),t("li",[e._v("Allow excluding unconfirmed UTXOs when creating a new transaction")])]),e._v(" "),t("p",[e._v("We're noticing an uptrend in people building on top of BTCPay Server. If you're building something with our Greenfield API, we're always looking to get more feedback on how to improve it and we love to see what you've made!")]),e._v(" "),t("h2",{attrs:{id:"joomla-virtuemart-integration-️"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#joomla-virtuemart-integration-️"}},[e._v("#")]),e._v(" Joomla VirtueMart integration 🛍️")]),e._v(" "),t("p",[e._v("We're excited to add one more e-commerce plugin. While not explicitly tied to this release, we launched a Joomla VirtueMart integration that allows you to accept bitcoin in your Joomla VM store. If you'd like to help us test this out, you can check "),t("a",{attrs:{href:"https://docs.btcpayserver.org/VirtueMart/",target:"_blank",rel:"noopener noreferrer"}},[e._v("our documentation"),t("OutboundLink")],1),e._v(" and get started right away. We're really looking forward to getting feedback on how it works for you and what we can do to make that merchant experience even smoother!")]),e._v(" "),t("h2",{attrs:{id:"cloudflare-tunnel-support-☁️"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cloudflare-tunnel-support-☁️"}},[e._v("#")]),e._v(" Cloudflare tunnel support ☁️")]),e._v(" "),t("p",[e._v("People running BTCPay Server locally on home-devices like Raspberry Pi, will be happy that we finally figured out a way to safely expose it to your customers through Cloudflare.")]),e._v(" "),t("p",[e._v("Be aware that Cloudflare can see or modify all of your traffic, as it acts as a middleman between the client's browser and your local server. If you’re interested in learning how this works, check out our extensive doc on "),t("a",{attrs:{href:"https://docs.btcpayserver.org/Docker/cloudflare-tunnel/",target:"_blank",rel:"noopener noreferrer"}},[e._v("this link"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"plugins-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#plugins-"}},[e._v("#")]),e._v(" Plugins 🔌")]),e._v(" "),t("p",[e._v("Besides our beloved payment button becoming a plugin, here are a few more plugins to highlight.")]),e._v(" "),t("h3",{attrs:{id:"lnurl-nfc-support"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lnurl-nfc-support"}},[e._v("#")]),e._v(" LNURL NFC Support")]),e._v(" "),t("p",[e._v("If you have a "),t("a",{attrs:{href:"https://caniuse.com/webnfc",target:"_blank",rel:"noopener noreferrer"}},[e._v("browser-compatible"),t("OutboundLink")],1),e._v(" NFC phone, (ehm, currently only Chrome on Android, you can use our point-of-sale app to make NFC payments. "),t("a",{attrs:{href:"https://twitter.com/thedavidcoen",target:"_blank",rel:"noopener noreferrer"}},[e._v("David Cohen"),t("OutboundLink")],1),e._v(" made a few videos and tweets explaining how this works if you’d like to try it out. Bear in mind, it only works when LNURL is a payment method and only on Chrome on Android.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/4m-FQoUAs50/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=4m-FQoUAs50","data-id":"4m-FQoUAs50"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/4m-FQoUAs50?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("h3",{attrs:{id:"tickettailor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tickettailor"}},[e._v("#")]),e._v(" TicketTailor")]),e._v(" "),t("p",[e._v("In case you’re organizing a bitcoin event, a conference or a concert, TicketTailor is a ticket management system that handles everything for you. The TicketTailor plugin allows you to connect your BTCPay Store to their system and accept Bitcoin payments for your dream event!")]),e._v(" "),t("p",[e._v("This integration is already being used in the wild by "),t("a",{attrs:{href:"https://baltichoneybadger.com/buy-tickets",target:"_blank",rel:"noopener noreferrer"}},[e._v("Baltic HoneyBadger 2022"),t("OutboundLink")],1),e._v(" organizers.")]),e._v(" "),t("h3",{attrs:{id:"lnbank"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lnbank"}},[e._v("#")]),e._v(" LNBank")]),e._v(" "),t("p",[e._v("A plugin which allows server admins to enable wallets creation on top of their Lightning node, essentially creating another layer on top that allows everyone to accept lightning payments via BTCPay has received an update. V1.2.3 LNBank improves API responses and send error message handling and on top of that now allows zero confirmation invoices creation.")]),e._v(" "),t("h2",{attrs:{id:"thank-you-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#thank-you-"}},[e._v("#")]),e._v(" Thank you 💚")]),e._v(" "),t("p",[e._v("As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our "),t("a",{attrs:{href:"https://chat.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat"),t("OutboundLink")],1),e._v(". We hope you enjoy what this update has to offer.")]),e._v(" "),t("p",[e._v("As always, thank you to our invaluable contributors, who directly participated in making 1.6.0 possible.")]),e._v(" "),t("p",[e._v("Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more!")]),e._v(" "),t("p",[e._v("BTCPay Server could never rapidly progress without your help!")]),e._v(" "),t("p",[e._v("The BTCPay Server team 💚")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/69.3bca8749.js b/assets/js/69.3bca8749.js deleted file mode 100644 index e07f0b66..00000000 --- a/assets/js/69.3bca8749.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{389:function(e,t,r){"use strict";r.r(t);var a=r(10),o=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("We are thrilled to announce the release of "),t("strong",[e._v("BTCPay Server 2.0")]),e._v(", our most significant update since the project began in 2017!")]),e._v(" "),t("p",[e._v("This version is packed with new features, bug fixes, and crucial backend updates designed to set a solid foundation for the future and make BTCPay more powerful than ever before.")]),e._v(" "),t("p",[e._v("BTCPay Server 2.0 realigns the internal architecture with the lessons we’ve learned since 2017, positioning us to better support both plugin developers and ourselves as we implement new features. While it may not seem immediately obvious, we expect users to see the full potential of 2.0 in the upcoming months, as the ecosystem continues to thrive and build on top of it.")]),e._v(" "),t("h2",{attrs:{id:"-key-features"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-key-features"}},[e._v("#")]),e._v(" 🔑 Key features")]),e._v(" "),t("ul",[t("li",[e._v("New interface localization")]),e._v(" "),t("li",[e._v("New sidebar-only navigation")]),e._v(" "),t("li",[e._v("New onboarding flow for new users and Point Of Sale")]),e._v(" "),t("li",[e._v("Three new e-commerce integrations (Wix, Odoo & BigCommerce)")]),e._v(" "),t("li",[e._v("Checkout v2 default (removal of the legacy checkout)")]),e._v(" "),t("li",[e._v("Branding enhancements")])]),e._v(" "),t("p",[e._v("Full changelog can be found "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/releases/tag/v2.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"⚠️-20-breaking-changes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#⚠️-20-breaking-changes"}},[e._v("#")]),e._v(" ⚠️ 2.0 breaking changes")]),e._v(" "),t("p",[e._v("With BTCPay Server 2.0, we’re introducing breaking changes in our API that allow us to get rid of technical debt that accumulated over the years. While these changes are necessary to future-proof BTCPay and enable exciting new features, we understand that they may affect some users.")]),e._v(" "),t("p",[e._v("For most, the transition to 2.0 will be seamless, but if you rely on "),t("strong",[e._v("custom integrations or plugins")]),e._v(", you will need to update them to ensure compatibility with our 2.0 API.")]),e._v(" "),t("p",[e._v("We’ve done our best to make this process as straightforward as possible, and we strongly recommend updating your integrations immediately after the BTCPay Server update. If you're unsure whether these changes will impact you, please check our "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/issues/5964",target:"_blank",rel:"noopener noreferrer"}},[e._v("breaking changes documentation"),t("OutboundLink")],1),e._v(" for detailed guidance.")]),e._v(" "),t("p",[e._v("BTCPay Server started in 2017, and over the past seven years, we’ve learned a lot as a community. New protocols have emerged, and users have continuously requested new features. Throughout this journey, our main challenge in product development has been to move slowly and steadily, ensuring we avoid breaking changes for our users. Stability is critical because it allows merchants to focus on running their businesses without worrying about infrastructure or payment integrations.")]),e._v(" "),t("p",[e._v('Commitment to stability meant that BTCPay evolved organically, always maintaining backward compatibility. While this benefits users, it has placed increasing pressure on our developers and plugin creators, making it harder and slower to meet new expectations, a challenge known as the "technical debt tax"; that we will now eliminate.')]),e._v(" "),t("p",[e._v("During the transition from 1.0 to 2.0, larger instances may experience "),t("strong",[e._v("a few minutes of database migration")]),e._v(". Once this initial migration is complete, BTCPay will be fully operational, though it will continue migrating some data in the background. For instance, some invoices may not immediately appear in reports or searches, but newer data is migrated first, so we expect minimal disruption.")]),e._v(" "),t("p",[e._v("As an example, our mainnet demo database, containing around 400,000 invoices, took one to two minutes to start and about 15-20 minutes to fully update all invoices in the background.")]),e._v(" "),t("h2",{attrs:{id:"-updating-to-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-updating-to-20"}},[e._v("#")]),e._v(" 🔄 Updating to 2.0")]),e._v(" "),t("p",[e._v("Updating to BTCPay Server 2.0 is a one-way process with no option for rolling back. Because of that, we're making it opt-in, requiring that you "),t("a",{attrs:{href:"https://docs.btcpayserver.org/FAQ/ServerSettings/#how-to-ssh-into-my-btcpay-running-on-vps",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSH into your server"),t("OutboundLink")],1),e._v(" and run:")]),e._v(" "),t("div",{staticClass:"language-ssh line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("git fetch\ngit checkout 2.0\nbtcpay-update.sh\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br")])]),t("p",[e._v("Please note that the database migration might take a few minutes, depending on the size of your installation. Enjoy BTCPay 2.0 and "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/discussions/6294",target:"_blank",rel:"noopener noreferrer"}},[e._v("let us know your thoughts"),t("OutboundLink")],1),e._v("!")]),e._v(" "),t("h3",{attrs:{id:"✔-post-update-checklist"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#✔-post-update-checklist"}},[e._v("#")]),e._v(" ✔ Post-update checklist")]),e._v(" "),t("ul",[t("li",[e._v("If your server "),t("strong",[e._v("crashed")]),e._v(" during the update (it shouldn’t, we’ve done extensive testing), please post server logs "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/discussions/6296",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(", we will prioritize support for instances that experienced problems during migration")]),e._v(" "),t("li",[e._v("If you use "),t("strong",[e._v("plugins in BTCPay")]),e._v(", not all of them are 2.0 compatible yet. We automatically deactivate the incompatible plugins (communicate this to a plugin dev and kindly ask them to update their plugins, once they’re compatible you can update them)")]),e._v(" "),t("li",[e._v("If you use "),t("strong",[e._v("e-commerce integrations")]),e._v(" (Woocommerce, Shopify, etc) update those plugins to their latest version in their dedicated stores as they ensure 2.0 compatibility")]),e._v(" "),t("li",[e._v("If you’re a "),t("strong",[e._v("developer")]),e._v(" leveraging BTCPay’s Greenfield API, check our "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/issues/5964",target:"_blank",rel:"noopener noreferrer"}},[e._v("breaking changes"),t("OutboundLink")],1),e._v(" to ensure 2.0 compatibility")]),e._v(" "),t("li",[e._v("If you’re a "),t("strong",[e._v("plugin developer")]),e._v(", make sure your plugins are 2.0 compatible. To start, bump plugin to 2.0 submodule and fix errors")]),e._v(" "),t("li",[e._v("If you’re using "),t("strong",[e._v("Translations")]),e._v(", report any missing strings "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/discussions/6295",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1)])]),e._v(" "),t("h2",{attrs:{id:"-interface-localization"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-interface-localization"}},[e._v("#")]),e._v(" 🌍 Interface localization")]),e._v(" "),t("p",[e._v("BTCPay 2.0 introduces a "),t("strong",[e._v("full interface translation")]),e._v(". While customer-facing parts of the UI have been multilingual for some time, this update allows you to translate the entire BTCPay Server back office with ease. All translation strings are in a single text box, easy to copy over to AI tools like ChatGPT, making the process of translating strings and pasting them back super-easy. This gives you full control to localize your BTCPay Server in any language quickly and efficiently.")]),e._v(" "),t("p",[e._v("If you come across any missing strings, please report them "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/discussions/6295",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(". We’ll continue to refine and complete all translations in the next few minor releases, and we’re adding several predefined languages to further enhance your experience.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/2-0-Translation.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"🧭-new-sidebar-navigation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#🧭-new-sidebar-navigation"}},[e._v("#")]),e._v(" 🧭 New sidebar navigation")]),e._v(" "),t("p",[e._v("In BTCPay Server 2.0, we have moved all navigation elements into a "),t("strong",[e._v("unified sidebar")]),e._v(". This redesign ensures a clear information hierarchy and provides consistency when navigating different pages, allowing us to standardize all call-to-action buttons by keeping them prominently accessible at the top of the page.")]),e._v(" "),t("p",[e._v("We understand that navigational changes can be sensitive and may require an adjustment period. However, feedback from our early beta testers suggests that the new sidebar navigation improves efficiency once you become familiar with it.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/2-0-SidebarNav.png",alt:""}})]),e._v(" "),t("p",[e._v("We value your input and invite you to share your thoughts on this new feature "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/discussions/6293",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"🫂-improved-onboarding-flow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#🫂-improved-onboarding-flow"}},[e._v("#")]),e._v(" 🫂 Improved onboarding flow")]),e._v(" "),t("p",[e._v("As part of our "),t("a",{attrs:{href:"https://blog.btcpayserver.org/bitcoin-2024-the-year-of-ambassadors/",target:"_blank",rel:"noopener noreferrer"}},[e._v("mission"),t("OutboundLink")],1),e._v(" to help ambassadors onboard local communities to BTCPay Server faster, we have enhanced the onboarding experience and added personalization features to user profiles. If you're hosting BTCPay for others, they can get up and running by scanning a QR code or clicking the link.")]),e._v(" "),t("p",[e._v("Additionally, users can now upload a profile photo and set a nickname for their accounts, adding a personal touch to the whole experience. We’re not adding these just for fun, we plan to leverage them in our upcoming BTCPay App.")]),e._v(" "),t("h2",{attrs:{id:"️-point-of-sale-qr-onboarding"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#️-point-of-sale-qr-onboarding"}},[e._v("#")]),e._v(" 🛍️ Point of sale QR onboarding")]),e._v(" "),t("p",[e._v("Our recent testing of BTCPay Point of Sale in "),t("a",{attrs:{href:"https://blog.btcpayserver.org/case-study-bhb24-nostriga/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Riga"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://x.com/BtcpayServer/status/1816205569612804267",target:"_blank",rel:"noopener noreferrer"}},[e._v("Nashville"),t("OutboundLink")],1),e._v(" allowed us to dog food our own product and make further improvements. With 2.0 you can now even easier onboard existing users to the POS app, again just by scanning a QR from the point of sale. This allows ambassadors who onboard merchants to log in users instantly on POS devices.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/2-0-POS-QR.gif",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"-checkout-20-default"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-checkout-20-default"}},[e._v("#")]),e._v(" 🚀 Checkout 2.0 default")]),e._v(" "),t("p",[e._v("In 2.0 we’re discontinuing our legacy checkout page and our new checkout becomes the standard for all the stores. The 2.0 checkout has been battle-tested for a while now, and we’re fully confident it brings not only more functionality through features like NFC but also much better and tailored UX through our new branding options.")]),e._v(" "),t("h2",{attrs:{id:"-backend-branding"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-backend-branding"}},[e._v("#")]),e._v(" 🎨 Backend branding")]),e._v(" "),t("p",[e._v("We believe branding your instance should give you the ability to customize the experience, with just the ability to select a color or a logo. And while this applies to all public-facing pages, such as checkout and payment requests for customers, we’ve now added an optional feature that allows you to apply your branding colors to the back office as well.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/2-0-Branding.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"-new-e-commerce-integrations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-new-e-commerce-integrations"}},[e._v("#")]),e._v(" 🛒 New e-commerce integrations")]),e._v(" "),t("p",[e._v("Seamless integration into existing systems remains one of our top priorities, and we’re excited to introduce three new e-commerce integrations that expand the possibilities for merchants:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Wix")])]),e._v(" "),t("li",[t("strong",[e._v("Odoo")])]),e._v(" "),t("li",[t("strong",[e._v("BigCommerce")])])]),e._v(" "),t("p",[e._v("These integrations offer enhanced flexibility and an easy way for businesses to adopt Bitcoin in their existing e-commerce stores.")]),e._v(" "),t("h3",{attrs:{id:"wix"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#wix"}},[e._v("#")]),e._v(" Wix")]),e._v(" "),t("p",[e._v("Wix is one of the world’s largest website-building platforms, powering over 200 million websites globally. Known for its ease of use and flexibility, Wix enables businesses of all sizes to create fully customizable websites, including e-commerce stores. With our new BTCPay integration, Wix users can now accept Bitcoin payments, offering their customers more payment options and expanding their reach to the growing Bitcoin economy. This integration is a game-changer for small to medium-sized businesses looking to embrace Bitcoin, bringing it into the mainstream for millions of merchants worldwide.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/4b00htzxA7k/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=4b00htzxA7k","data-id":"4b00htzxA7k"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/4b00htzxA7k?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("Follow our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/Wix/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Wix setup guide"),t("OutboundLink")],1),e._v(" to install it to your Wix store.")]),e._v(" "),t("h3",{attrs:{id:"odoo"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#odoo"}},[e._v("#")]),e._v(" Odoo")]),e._v(" "),t("p",[e._v("Odoo, an open-source business management software with a vast user base, is a comprehensive suite that covers everything from inventory management, point of sale to e-commerce. Our new plugin for Odoo versions "),t("a",{attrs:{href:"https://github.com/btcpayserver/odoo/blob/16.0/payment_btcpayserver/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("16"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://apps.odoo.com/apps/modules/17.0/payment_btcpayserver",target:"_blank",rel:"noopener noreferrer"}},[e._v("17"),t("OutboundLink")],1),e._v(" allows you to easily connect BTCPay with your Odoo store, enabling Bitcoin payments with minimal setup. You can even use it for ticket sales or any other module using online payment methods. It’s even possible to use it in Odoo Point Of Sale (PoS) by enabling online payments there.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/DnASnEdegn4/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=DnASnEdegn4","data-id":"DnASnEdegn4"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/DnASnEdegn4?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("Get started by downloading the "),t("a",{attrs:{href:"https://github.com/btcpayserver/odoo",target:"_blank",rel:"noopener noreferrer"}},[e._v("plugin on GitHub"),t("OutboundLink")],1),e._v(" and following our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/Odoo/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Odoo documentation"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"bigcommerce"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bigcommerce"}},[e._v("#")]),e._v(" BigCommerce")]),e._v(" "),t("p",[e._v("BigCommerce is a leading e-commerce platform designed for scalability and focused on enterprise-level merchants. We’re bringing Bitcoin payments to BigCommerce users with our latest integration.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/lSsk80P91Jo/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=lSsk80P91Jo","data-id":"lSsk80P91Jo"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/lSsk80P91Jo?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("To start accepting Bitcoin for your BigCommerce store, check our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/BigCommerce/",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"other-integration-updates"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#other-integration-updates"}},[e._v("#")]),e._v(" Other integration updates")]),e._v(" "),t("p",[e._v("We’ve done extensive tests for all of our ecommerce integrations. Kudos to our integration expert "),t("strong",[e._v("Ndeet")]),e._v(" for conducting comprehensive hard field work, "),t("a",{attrs:{href:"https://docs.google.com/spreadsheets/d/1nfrZhchAm7AIk1dTvSSnFvnHdJ8con8XvJQqQ29khA4/edit?gid=0#gid=0",target:"_blank",rel:"noopener noreferrer"}},[e._v("testing"),t("OutboundLink")],1),e._v(" each and every one of them.")]),e._v(" "),t("p",[t("strong",[e._v("All of our official e-commerce integrations are 2.0 compatible.")])]),e._v(" "),t("p",[e._v("However, if you face issues with 2.0 and any official e-commerce integration, please "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/discussions/6300",target:"_blank",rel:"noopener noreferrer"}},[e._v("report it here"),t("OutboundLink")],1),e._v(", and we’ll prioritize those reports. We continue to monitor feedback from the community and ensure existing integrations stay up-to-date.")]),e._v(" "),t("p",[e._v("If you're using our "),t("strong",[e._v("Shopify")]),e._v(" plugin, rest assured that it’s not impacted by recent API changes, and you can continue to use it without issues. We’re aware of Shopify discounting certain API calls at the end of this year, and we’re already working on shipping a brand new plugin before that happens.")]),e._v(" "),t("p",[e._v("Additionally, our "),t("strong",[e._v("PrestaShop")]),e._v(" plugin received a "),t("a",{attrs:{href:"https://github.com/btcpayserver/prestashop-plugin/releases/",target:"_blank",rel:"noopener noreferrer"}},[e._v("new update"),t("OutboundLink")],1),e._v(", thanks to our contributor BitcoinMitchell, and the PHP Library has been updated to be "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-greenfield-php/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("compatible with BTCPay 2.0"),t("OutboundLink")],1),e._v(" as well.")]),e._v(" "),t("h2",{attrs:{id:"-plugins"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-plugins"}},[e._v("#")]),e._v(" 🔌 Plugins")]),e._v(" "),t("p",[e._v("If you use plugins with your BTCPay Server, you may notice that some are disabled following updates - we do this to prevent server crashes. If you rely heavily on plugins for your BTCPay operations, we recommend that you double-check compatibility and look for announcements from plugin developers regarding their support for version 2.0 before proceeding with the upgrade.")]),e._v(" "),t("p",[e._v("Plugin developers should update their submodules to 2.0 and fix any errors to ensure compatibility. Review the "),t("a",{attrs:{href:"https://github.com/rockstardev/BTCPayServerPlugins.RockstarDev/pull/45",target:"_blank",rel:"noopener noreferrer"}},[e._v("example PR from Nicolas on Payroll plugin"),t("OutboundLink")],1),e._v(" or take a look at how "),t("a",{attrs:{href:"https://github.com/BoltzExchange/boltz-btcpay-plugin/commit/326d13b7e600a81784b1c64cb7363b4566b1411a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Boltz updated their plugin"),t("OutboundLink")],1),e._v(". After resolving issues and thoroughly testing their plugin, developers should publish an updated release on "),t("a",{attrs:{href:"https://plugin-builder.btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("plugin-builder.btcpayserver.org"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Currently, maintaining multiple versions of a plugin (for example, one branch for version 1.x and another for version 2.0) is not possible. If you need to publish updates, continue with the 1.x version and release new versions of the plugin until you reach a feature freeze. Once you've achieved this, you can update the submodule reference and release a new version of the plugin starting from 2.0.")]),e._v(" "),t("p",[e._v("We strongly urge all developers to prioritize upgrading to version 2.0.")]),e._v(" "),t("h3",{attrs:{id:"list-of-currently-incompatible-plugins"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#list-of-currently-incompatible-plugins"}},[e._v("#")]),e._v(" List of currently incompatible plugins")]),e._v(" "),t("p",[e._v("List of currently incompatible plugins, at the time of publishing this blog post, "),t("strong",[e._v("all other plugins are 2.0 compatible")]),e._v(".")]),e._v(" "),t("ul",[t("li",[e._v("BTCPayServer.Plugins.Strike (1.3.2.0)")]),e._v(" "),t("li",[e._v("BTCPayServer.Plugins.B2PCentral (1.0.1.0)")]),e._v(" "),t("li",[e._v("BTCPayServer.Plugins.Trocador (1.2.5.0)")])]),e._v(" "),t("h2",{attrs:{id:"-thank-you"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-thank-you"}},[e._v("#")]),e._v(" 💚 Thank you")]),e._v(" "),t("p",[e._v("With 2.0 we wanted to do all the hard work, most of which may be invisible, but it sets a great base on what we’re aiming to do in 2025. Keep an eye on the upcoming minor releases that we’ll ship if we notice any bugs. In the next few big releases we’re hoping to ship some of the most requested features that further enhance our mission.")]),e._v(" "),t("p",[e._v("Super-special shout out goes to our community testers, who went beyond and above testing the 2.0: decentralizedb, djuri, j7tx21 & stc786.")]),e._v(" "),t("p",[e._v("We hope you enjoy what this update has to offer. As always, thank you to our invaluable contributors, who directly participated in making 2.0 possible: dennisreimann, dstrukt, jackstar12, kukks, ndeet, nicolasdorier, nisaba, pavlenex, rockstardev, tchukwuleta, and webworthy.")]),e._v(" "),t("p",[e._v("The BTCPay Server team 💚")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/69.b31fc145.js b/assets/js/69.b31fc145.js new file mode 100644 index 00000000..00c5a69a --- /dev/null +++ b/assets/js/69.b31fc145.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{389:function(e,t,a){"use strict";a.r(t);var r=a(10),o=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("We are thrilled to announce the release of "),t("strong",[e._v("BTCPay Server 2.0")]),e._v(", our most significant update since the project began in 2017!")]),e._v(" "),t("p",[e._v("This version is packed with new features, bug fixes, and crucial backend updates designed to set a solid foundation for the future and make BTCPay more powerful than ever before.")]),e._v(" "),t("p",[e._v("BTCPay Server 2.0 realigns the internal architecture with the lessons we’ve learned since 2017, positioning us to better support both plugin developers and ourselves as we implement new features. While it may not seem immediately obvious, we expect users to see the full potential of 2.0 in the upcoming months, as the ecosystem continues to thrive and build on top of it.")]),e._v(" "),t("h2",{attrs:{id:"-key-features"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-key-features"}},[e._v("#")]),e._v(" 🔑 Key features")]),e._v(" "),t("ul",[t("li",[e._v("New interface localization")]),e._v(" "),t("li",[e._v("New sidebar-only navigation")]),e._v(" "),t("li",[e._v("New onboarding flow for new users and Point Of Sale")]),e._v(" "),t("li",[e._v("Three new e-commerce integrations (Wix, Odoo & BigCommerce)")]),e._v(" "),t("li",[e._v("Checkout v2 default (removal of the legacy checkout)")]),e._v(" "),t("li",[e._v("Branding enhancements")])]),e._v(" "),t("p",[e._v("Full changelog can be found "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/releases/tag/v2.0.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"⚠️-20-breaking-changes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#⚠️-20-breaking-changes"}},[e._v("#")]),e._v(" ⚠️ 2.0 breaking changes")]),e._v(" "),t("p",[e._v("With BTCPay Server 2.0, we’re introducing breaking changes in our API that allow us to get rid of technical debt that accumulated over the years. While these changes are necessary to future-proof BTCPay and enable exciting new features, we understand that they may affect some users.")]),e._v(" "),t("p",[e._v("For most, the transition to 2.0 will be seamless, but if you rely on "),t("strong",[e._v("custom integrations or plugins")]),e._v(", you will need to update them to ensure compatibility with our 2.0 API.")]),e._v(" "),t("p",[e._v("We’ve done our best to make this process as straightforward as possible, and we strongly recommend updating your integrations immediately after the BTCPay Server update. If you're unsure whether these changes will impact you, please check our "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/issues/5964",target:"_blank",rel:"noopener noreferrer"}},[e._v("breaking changes documentation"),t("OutboundLink")],1),e._v(" for detailed guidance.")]),e._v(" "),t("p",[e._v("BTCPay Server started in 2017, and over the past seven years, we’ve learned a lot as a community. New protocols have emerged, and users have continuously requested new features. Throughout this journey, our main challenge in product development has been to move slowly and steadily, ensuring we avoid breaking changes for our users. Stability is critical because it allows merchants to focus on running their businesses without worrying about infrastructure or payment integrations.")]),e._v(" "),t("p",[e._v('Commitment to stability meant that BTCPay evolved organically, always maintaining backward compatibility. While this benefits users, it has placed increasing pressure on our developers and plugin creators, making it harder and slower to meet new expectations, a challenge known as the "technical debt tax"; that we will now eliminate.')]),e._v(" "),t("p",[e._v("During the transition from 1.0 to 2.0, larger instances may experience "),t("strong",[e._v("a few minutes of database migration")]),e._v(". Once this initial migration is complete, BTCPay will be fully operational, though it will continue migrating some data in the background. For instance, some invoices may not immediately appear in reports or searches, but newer data is migrated first, so we expect minimal disruption.")]),e._v(" "),t("p",[e._v("As an example, our mainnet demo database, containing around 400,000 invoices, took one to two minutes to start and about 15-20 minutes to fully update all invoices in the background.")]),e._v(" "),t("h2",{attrs:{id:"-updating-to-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-updating-to-20"}},[e._v("#")]),e._v(" 🔄 Updating to 2.0")]),e._v(" "),t("p",[e._v("Updating to BTCPay Server 2.0 is a one-way process with no option for rolling back. Because of that, we're making it opt-in, requiring that you "),t("a",{attrs:{href:"https://docs.btcpayserver.org/FAQ/ServerSettings/#how-to-ssh-into-my-btcpay-running-on-vps",target:"_blank",rel:"noopener noreferrer"}},[e._v("SSH into your server"),t("OutboundLink")],1),e._v(" and run:")]),e._v(" "),t("div",{staticClass:"language-bash line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAY_BASE_DIRECTORY")]),e._v("/btcpayserver-docker\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" fetch "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-a")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" checkout "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("2.0")]),e._v("\n./btcpay-update.sh\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br")])]),t("p",[e._v("Please note that the database migration might take a few minutes, depending on the size of your installation. Enjoy BTCPay 2.0 and "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/discussions/6294",target:"_blank",rel:"noopener noreferrer"}},[e._v("let us know your thoughts"),t("OutboundLink")],1),e._v("!")]),e._v(" "),t("h3",{attrs:{id:"✔-post-update-checklist"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#✔-post-update-checklist"}},[e._v("#")]),e._v(" ✔ Post-update checklist")]),e._v(" "),t("ul",[t("li",[e._v("If your server "),t("strong",[e._v("crashed")]),e._v(" during the update (it shouldn’t, we’ve done extensive testing), please post server logs "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/discussions/6296",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(", we will prioritize support for instances that experienced problems during migration")]),e._v(" "),t("li",[e._v("If you use "),t("strong",[e._v("plugins in BTCPay")]),e._v(", not all of them are 2.0 compatible yet. We automatically deactivate the incompatible plugins (communicate this to a plugin dev and kindly ask them to update their plugins, once they’re compatible you can update them)")]),e._v(" "),t("li",[e._v("If you use "),t("strong",[e._v("e-commerce integrations")]),e._v(" (Woocommerce, Shopify, etc) update those plugins to their latest version in their dedicated stores as they ensure 2.0 compatibility")]),e._v(" "),t("li",[e._v("If you’re a "),t("strong",[e._v("developer")]),e._v(" leveraging BTCPay’s Greenfield API, check our "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/issues/5964",target:"_blank",rel:"noopener noreferrer"}},[e._v("breaking changes"),t("OutboundLink")],1),e._v(" to ensure 2.0 compatibility")]),e._v(" "),t("li",[e._v("If you’re a "),t("strong",[e._v("plugin developer")]),e._v(", make sure your plugins are 2.0 compatible. To start, bump plugin to 2.0 submodule and fix errors")]),e._v(" "),t("li",[e._v("If you’re using "),t("strong",[e._v("Translations")]),e._v(", report any missing strings "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/discussions/6295",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1)])]),e._v(" "),t("h2",{attrs:{id:"-interface-localization"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-interface-localization"}},[e._v("#")]),e._v(" 🌍 Interface localization")]),e._v(" "),t("p",[e._v("BTCPay 2.0 introduces a "),t("strong",[e._v("full interface translation")]),e._v(". While customer-facing parts of the UI have been multilingual for some time, this update allows you to translate the entire BTCPay Server back office with ease. All translation strings are in a single text box, easy to copy over to AI tools like ChatGPT, making the process of translating strings and pasting them back super-easy. This gives you full control to localize your BTCPay Server in any language quickly and efficiently.")]),e._v(" "),t("p",[e._v("If you come across any missing strings, please report them "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/discussions/6295",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(". We’ll continue to refine and complete all translations in the next few minor releases, and we’re adding several predefined languages to further enhance your experience.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/2-0-Translation.png",alt:"Interface localization"}})]),e._v(" "),t("h2",{attrs:{id:"🧭-new-sidebar-navigation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#🧭-new-sidebar-navigation"}},[e._v("#")]),e._v(" 🧭 New sidebar navigation")]),e._v(" "),t("p",[e._v("In BTCPay Server 2.0, we have moved all navigation elements into a "),t("strong",[e._v("unified sidebar")]),e._v(". This redesign ensures a clear information hierarchy and provides consistency when navigating different pages, allowing us to standardize all call-to-action buttons by keeping them prominently accessible at the top of the page.")]),e._v(" "),t("p",[e._v("We understand that navigational changes can be sensitive and may require an adjustment period. However, feedback from our early beta testers suggests that the new sidebar navigation improves efficiency once you become familiar with it.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/2-0-SidebarNav.png",alt:"New sidebar navigation"}})]),e._v(" "),t("p",[e._v("We value your input and invite you to share your thoughts on this new feature "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/discussions/6293",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"🫂-improved-onboarding-flow"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#🫂-improved-onboarding-flow"}},[e._v("#")]),e._v(" 🫂 Improved onboarding flow")]),e._v(" "),t("p",[e._v("As part of our "),t("a",{attrs:{href:"https://blog.btcpayserver.org/bitcoin-2024-the-year-of-ambassadors/",target:"_blank",rel:"noopener noreferrer"}},[e._v("mission"),t("OutboundLink")],1),e._v(" to help ambassadors onboard local communities to BTCPay Server faster, we have enhanced the onboarding experience and added personalization features to user profiles. If you're hosting BTCPay for others, they can get up and running by scanning a QR code or clicking the link.")]),e._v(" "),t("p",[e._v("Additionally, users can now upload a profile photo and set a nickname for their accounts, adding a personal touch to the whole experience. We’re not adding these just for fun, we plan to leverage them in our upcoming BTCPay App.")]),e._v(" "),t("h2",{attrs:{id:"️-point-of-sale-qr-onboarding"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#️-point-of-sale-qr-onboarding"}},[e._v("#")]),e._v(" 🛍️ Point of sale QR onboarding")]),e._v(" "),t("p",[e._v("Our recent testing of BTCPay Point of Sale in "),t("a",{attrs:{href:"https://blog.btcpayserver.org/case-study-bhb24-nostriga/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Riga"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://x.com/BtcpayServer/status/1816205569612804267",target:"_blank",rel:"noopener noreferrer"}},[e._v("Nashville"),t("OutboundLink")],1),e._v(" allowed us to dog food our own product and make further improvements. With 2.0 you can now even easier onboard existing users to the POS app, again just by scanning a QR from the point of sale. This allows ambassadors who onboard merchants to log in users instantly on POS devices.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/2-0-POS-QR.gif",alt:"Point of sale QR onboarding"}})]),e._v(" "),t("h2",{attrs:{id:"-checkout-20-default"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-checkout-20-default"}},[e._v("#")]),e._v(" 🚀 Checkout 2.0 default")]),e._v(" "),t("p",[e._v("In 2.0 we’re discontinuing our legacy checkout page and our new checkout becomes the standard for all the stores. The 2.0 checkout has been battle-tested for a while now, and we’re fully confident it brings not only more functionality through features like NFC but also much better and tailored UX through our new branding options.")]),e._v(" "),t("h2",{attrs:{id:"-backend-branding"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-backend-branding"}},[e._v("#")]),e._v(" 🎨 Backend branding")]),e._v(" "),t("p",[e._v("We believe branding your instance should give you the ability to customize the experience, with just the ability to select a color or a logo. And while this applies to all public-facing pages, such as checkout and payment requests for customers, we’ve now added an optional feature that allows you to apply your branding colors to the back office as well.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/2-0-Branding.png",alt:"Backend branding"}})]),e._v(" "),t("h2",{attrs:{id:"-new-e-commerce-integrations"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-new-e-commerce-integrations"}},[e._v("#")]),e._v(" 🛒 New e-commerce integrations")]),e._v(" "),t("p",[e._v("Seamless integration into existing systems remains one of our top priorities, and we’re excited to introduce three new e-commerce integrations that expand the possibilities for merchants:")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("Wix")])]),e._v(" "),t("li",[t("strong",[e._v("Odoo")])]),e._v(" "),t("li",[t("strong",[e._v("BigCommerce")])])]),e._v(" "),t("p",[e._v("These integrations offer enhanced flexibility and an easy way for businesses to adopt Bitcoin in their existing e-commerce stores.")]),e._v(" "),t("h3",{attrs:{id:"wix"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#wix"}},[e._v("#")]),e._v(" Wix")]),e._v(" "),t("p",[e._v("Wix is one of the world’s largest website-building platforms, powering over 200 million websites globally. Known for its ease of use and flexibility, Wix enables businesses of all sizes to create fully customizable websites, including e-commerce stores. With our new BTCPay integration, Wix users can now accept Bitcoin payments, offering their customers more payment options and expanding their reach to the growing Bitcoin economy. This integration is a game-changer for small to medium-sized businesses looking to embrace Bitcoin, bringing it into the mainstream for millions of merchants worldwide.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/4b00htzxA7k/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=4b00htzxA7k","data-id":"4b00htzxA7k"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/4b00htzxA7k?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("Follow our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/Wix/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Wix setup guide"),t("OutboundLink")],1),e._v(" to install it to your Wix store.")]),e._v(" "),t("h3",{attrs:{id:"odoo"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#odoo"}},[e._v("#")]),e._v(" Odoo")]),e._v(" "),t("p",[e._v("Odoo, an open-source business management software with a vast user base, is a comprehensive suite that covers everything from inventory management, point of sale to e-commerce. Our new plugin for Odoo versions "),t("a",{attrs:{href:"https://github.com/btcpayserver/odoo/blob/16.0/payment_btcpayserver/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("16"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://apps.odoo.com/apps/modules/17.0/payment_btcpayserver",target:"_blank",rel:"noopener noreferrer"}},[e._v("17"),t("OutboundLink")],1),e._v(" allows you to easily connect BTCPay with your Odoo store, enabling Bitcoin payments with minimal setup. You can even use it for ticket sales or any other module using online payment methods. It’s even possible to use it in Odoo Point Of Sale (PoS) by enabling online payments there.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/DnASnEdegn4/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=DnASnEdegn4","data-id":"DnASnEdegn4"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/DnASnEdegn4?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("Get started by downloading the "),t("a",{attrs:{href:"https://github.com/btcpayserver/odoo",target:"_blank",rel:"noopener noreferrer"}},[e._v("plugin on GitHub"),t("OutboundLink")],1),e._v(" and following our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/Odoo/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Odoo documentation"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"bigcommerce"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#bigcommerce"}},[e._v("#")]),e._v(" BigCommerce")]),e._v(" "),t("p",[e._v("BigCommerce is a leading e-commerce platform designed for scalability and focused on enterprise-level merchants. We’re bringing Bitcoin payments to BigCommerce users with our latest integration.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/lSsk80P91Jo/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=lSsk80P91Jo","data-id":"lSsk80P91Jo"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/lSsk80P91Jo?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("To start accepting Bitcoin for your BigCommerce store, check our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/BigCommerce/",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h3",{attrs:{id:"other-integration-updates"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#other-integration-updates"}},[e._v("#")]),e._v(" Other integration updates")]),e._v(" "),t("p",[e._v("We’ve done extensive tests for all of our ecommerce integrations. Kudos to our integration expert "),t("strong",[e._v("Ndeet")]),e._v(" for conducting comprehensive hard field work, "),t("a",{attrs:{href:"https://docs.google.com/spreadsheets/d/1nfrZhchAm7AIk1dTvSSnFvnHdJ8con8XvJQqQ29khA4/edit?gid=0#gid=0",target:"_blank",rel:"noopener noreferrer"}},[e._v("testing"),t("OutboundLink")],1),e._v(" each and every one of them.")]),e._v(" "),t("p",[t("strong",[e._v("All of our official e-commerce integrations are 2.0 compatible.")])]),e._v(" "),t("p",[e._v("However, if you face issues with 2.0 and any official e-commerce integration, please "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/discussions/6300",target:"_blank",rel:"noopener noreferrer"}},[e._v("report it here"),t("OutboundLink")],1),e._v(", and we’ll prioritize those reports. We continue to monitor feedback from the community and ensure existing integrations stay up-to-date.")]),e._v(" "),t("p",[e._v("If you're using our "),t("strong",[e._v("Shopify")]),e._v(" plugin, rest assured that it’s not impacted by recent API changes, and you can continue to use it without issues. We’re aware of Shopify discounting certain API calls at the end of this year, and we’re already working on shipping a brand new plugin before that happens.")]),e._v(" "),t("p",[e._v("Additionally, our "),t("strong",[e._v("PrestaShop")]),e._v(" plugin received a "),t("a",{attrs:{href:"https://github.com/btcpayserver/prestashop-plugin/releases/",target:"_blank",rel:"noopener noreferrer"}},[e._v("new update"),t("OutboundLink")],1),e._v(", thanks to our contributor BitcoinMitchell, and the PHP Library has been updated to be "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-greenfield-php/releases",target:"_blank",rel:"noopener noreferrer"}},[e._v("compatible with BTCPay 2.0"),t("OutboundLink")],1),e._v(" as well.")]),e._v(" "),t("h2",{attrs:{id:"-plugins"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-plugins"}},[e._v("#")]),e._v(" 🔌 Plugins")]),e._v(" "),t("p",[e._v("If you use plugins with your BTCPay Server, you may notice that some are disabled following updates - we do this to prevent server crashes. If you rely heavily on plugins for your BTCPay operations, we recommend that you double-check compatibility and look for announcements from plugin developers regarding their support for version 2.0 before proceeding with the upgrade.")]),e._v(" "),t("p",[e._v("Plugin developers should update their submodules to 2.0 and fix any errors to ensure compatibility. Review the "),t("a",{attrs:{href:"https://github.com/rockstardev/BTCPayServerPlugins.RockstarDev/pull/45",target:"_blank",rel:"noopener noreferrer"}},[e._v("example PR from Nicolas on Payroll plugin"),t("OutboundLink")],1),e._v(" or take a look at how "),t("a",{attrs:{href:"https://github.com/BoltzExchange/boltz-btcpay-plugin/commit/326d13b7e600a81784b1c64cb7363b4566b1411a",target:"_blank",rel:"noopener noreferrer"}},[e._v("Boltz updated their plugin"),t("OutboundLink")],1),e._v(". After resolving issues and thoroughly testing their plugin, developers should publish an updated release on "),t("a",{attrs:{href:"https://plugin-builder.btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("plugin-builder.btcpayserver.org"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("Currently, maintaining multiple versions of a plugin (for example, one branch for version 1.x and another for version 2.0) is not possible. If you need to publish updates, continue with the 1.x version and release new versions of the plugin until you reach a feature freeze. Once you've achieved this, you can update the submodule reference and release a new version of the plugin starting from 2.0.")]),e._v(" "),t("p",[e._v("We strongly urge all developers to prioritize upgrading to version 2.0.")]),e._v(" "),t("h3",{attrs:{id:"list-of-currently-incompatible-plugins"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#list-of-currently-incompatible-plugins"}},[e._v("#")]),e._v(" List of currently incompatible plugins")]),e._v(" "),t("p",[e._v("List of currently incompatible plugins, at the time of publishing this blog post, "),t("strong",[e._v("all other plugins are 2.0 compatible")]),e._v(".")]),e._v(" "),t("ul",[t("li",[e._v("BTCPayServer.Plugins.Strike (1.3.2.0)")]),e._v(" "),t("li",[e._v("BTCPayServer.Plugins.B2PCentral (1.0.1.0)")]),e._v(" "),t("li",[e._v("BTCPayServer.Plugins.Trocador (1.2.5.0)")])]),e._v(" "),t("h2",{attrs:{id:"-thank-you"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#-thank-you"}},[e._v("#")]),e._v(" 💚 Thank you")]),e._v(" "),t("p",[e._v("With 2.0 we wanted to do all the hard work, most of which may be invisible, but it sets a great base on what we’re aiming to do in 2025. Keep an eye on the upcoming minor releases that we’ll ship if we notice any bugs. In the next few big releases we’re hoping to ship some of the most requested features that further enhance our mission.")]),e._v(" "),t("p",[e._v("Super-special shout out goes to our community testers, who went beyond and above testing the 2.0: decentralizedb, djuri, j7tx21 & stc786.")]),e._v(" "),t("p",[e._v("We hope you enjoy what this update has to offer. As always, thank you to our invaluable contributors, who directly participated in making 2.0 possible: dennisreimann, dstrukt, jackstar12, kukks, ndeet, nicolasdorier, nisaba, pavlenex, rockstardev, tchukwuleta, and webworthy.")]),e._v(" "),t("p",[e._v("The BTCPay Server team 💚")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/73.17f51317.js b/assets/js/73.634852cf.js similarity index 97% rename from assets/js/73.17f51317.js rename to assets/js/73.634852cf.js index fc1d8cbf..7355f63a 100644 --- a/assets/js/73.17f51317.js +++ b/assets/js/73.634852cf.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[73],{393:function(e,t,o){"use strict";o.r(t);var r=o(10),n=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("figure",[t("img",{attrs:{src:"/images/btcpay-okcoin-article-1024x335-1.png",alt:""}})]),e._v(" "),t("p",[e._v("We're thrilled to announce that the BTCPay Server Foundation has received grant #7 from "),t("a",{attrs:{href:"https://www.okcoin.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("OKCoin"),t("OutboundLink")],1),e._v(". OKCoin is matching our biggest supporter to date and will be donating a total of 100,000 USD over the next 12 months.")]),e._v(" "),t("p",[e._v("Founded in 2013 and headquartered in San Francisco with offices spanning across the world, "),t("strong",[e._v("OKCoin")]),e._v(" is one of the largest digital assets and virtual currencies exchanges. Their mission is to make it easy and safe to buy and sell crypto assets using local currencies globally.")]),e._v(" "),t("p",[e._v("When we were first introduced to OKCoin, it was clear that they deeply care for open-source and understand its importance for the entire ecosystem. The focus of our conversations was on improving user-education and user-experience of BTCPay Server.")]),e._v(" "),t("p",[e._v("With that in mind, a portion of this grant will be used on funding contributors who improve our documentation, ease of deployment, video materials UI and UX. Another part will go towards the new GreenField API, which will allow enterprises and developers to build on BTCPay Server with greater flexibility.")]),e._v(" "),t("p",[e._v("This is not their first grant of this type. Earlier this year, they provided an individual developer grant to a well-known Bitcoin core developer, "),t("a",{attrs:{href:"https://blog.okcoin.com/2020/02/10/fabian-jahr-receives-independent-developer-grant/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Fabian Jahr"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("We would like to thank "),t("a",{attrs:{href:"https://twitter.com/sqcrypto",target:"_blank",rel:"noopener noreferrer"}},[e._v("Square Crypto"),t("OutboundLink")],1),e._v(" for introducing us to OKCoin and sharing the documentation that helped us speed up the process.")]),e._v(" "),t("p",[e._v("Thanks to OKCoin's philanthropic gesture, our vision lives. We remain committed to making an open-financial ecosystem for everyone, free, forever.")]),e._v(" "),t("p",[e._v("Thank you for your support OKCoin💚!")]),e._v(" "),t("p",[t("em",[e._v("If you're a business that would like to support BTCPay Server contributors please get in touch via the "),t("a",{attrs:{href:"https://foundation.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("contact form on the foundation's website"),t("OutboundLink")],1),e._v(".")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[73],{394:function(e,t,o){"use strict";o.r(t);var r=o(10),n=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("figure",[t("img",{attrs:{src:"/images/btcpay-okcoin-article-1024x335-1.png",alt:""}})]),e._v(" "),t("p",[e._v("We're thrilled to announce that the BTCPay Server Foundation has received grant #7 from "),t("a",{attrs:{href:"https://www.okcoin.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("OKCoin"),t("OutboundLink")],1),e._v(". OKCoin is matching our biggest supporter to date and will be donating a total of 100,000 USD over the next 12 months.")]),e._v(" "),t("p",[e._v("Founded in 2013 and headquartered in San Francisco with offices spanning across the world, "),t("strong",[e._v("OKCoin")]),e._v(" is one of the largest digital assets and virtual currencies exchanges. Their mission is to make it easy and safe to buy and sell crypto assets using local currencies globally.")]),e._v(" "),t("p",[e._v("When we were first introduced to OKCoin, it was clear that they deeply care for open-source and understand its importance for the entire ecosystem. The focus of our conversations was on improving user-education and user-experience of BTCPay Server.")]),e._v(" "),t("p",[e._v("With that in mind, a portion of this grant will be used on funding contributors who improve our documentation, ease of deployment, video materials UI and UX. Another part will go towards the new GreenField API, which will allow enterprises and developers to build on BTCPay Server with greater flexibility.")]),e._v(" "),t("p",[e._v("This is not their first grant of this type. Earlier this year, they provided an individual developer grant to a well-known Bitcoin core developer, "),t("a",{attrs:{href:"https://blog.okcoin.com/2020/02/10/fabian-jahr-receives-independent-developer-grant/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Fabian Jahr"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("We would like to thank "),t("a",{attrs:{href:"https://twitter.com/sqcrypto",target:"_blank",rel:"noopener noreferrer"}},[e._v("Square Crypto"),t("OutboundLink")],1),e._v(" for introducing us to OKCoin and sharing the documentation that helped us speed up the process.")]),e._v(" "),t("p",[e._v("Thanks to OKCoin's philanthropic gesture, our vision lives. We remain committed to making an open-financial ecosystem for everyone, free, forever.")]),e._v(" "),t("p",[e._v("Thank you for your support OKCoin💚!")]),e._v(" "),t("p",[t("em",[e._v("If you're a business that would like to support BTCPay Server contributors please get in touch via the "),t("a",{attrs:{href:"https://foundation.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("contact form on the foundation's website"),t("OutboundLink")],1),e._v(".")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/74.dd05eed6.js b/assets/js/74.7712a224.js similarity index 96% rename from assets/js/74.dd05eed6.js rename to assets/js/74.7712a224.js index 695c758e..bcc03de0 100644 --- a/assets/js/74.dd05eed6.js +++ b/assets/js/74.7712a224.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[74],{394:function(e,o,t){"use strict";t.r(o);var r=t(10),n=Object(r.a)({},(function(){var e=this,o=e._self._c;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("Baillie Gifford, an investment management partnership is providing an annual grant over four years to the BTCPay Server Foundation.")]),e._v(" "),o("p",[e._v("Founded in 1908 in Edinburgh, Scotland, Baillie Gifford has US$487bn of assets under management and advice for a global client base. Focused on long-term growth, Baillie Gifford is wholly owned by its partners, all of whom work within the firm.")]),e._v(" "),o("p",[e._v("We would like to thank Baillie Gifford for supporting us and the Bitcoin open-source environment. With this grant, Baillie Gifford became one of our largest supporters, allowing the BTCPay Server contributors to continue working on creating free and open-source payment processor for anybody in the world to use.")]),e._v(" "),o("p",[e._v("This grant will help us further achieve our "),o("a",{attrs:{href:"https://github.com/orgs/btcpayserver/projects/9",target:"_blank",rel:"noopener noreferrer"}},[e._v("roadmap"),o("OutboundLink")],1),e._v(" goals for this year centered around a visual overhaul of BTCPay Server, mobile app development and the transition from a self-hosted payment processor to a modular Bitcoin payment platform.")]),e._v(" "),o("p",[e._v("Baillie Gifford, welcome to the BTCPay Server family!")]),e._v(" "),o("p",[e._v("We also thank our dedicated and passionate community for their daily support in making BTCPay Server the best Bitcoin merchant solution possible.")]),e._v(" "),o("p",[o("em",[e._v("If you're a business that would like to support BTCPay Server contributors please get in touch via the "),o("a",{attrs:{href:"https://foundation.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("contact form on the foundation's website"),o("OutboundLink")],1),e._v(".")])])])}),[],!1,null,null,null);o.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[74],{393:function(e,o,t){"use strict";t.r(o);var r=t(10),n=Object(r.a)({},(function(){var e=this,o=e._self._c;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("p",[e._v("Baillie Gifford, an investment management partnership is providing an annual grant over four years to the BTCPay Server Foundation.")]),e._v(" "),o("p",[e._v("Founded in 1908 in Edinburgh, Scotland, Baillie Gifford has US$487bn of assets under management and advice for a global client base. Focused on long-term growth, Baillie Gifford is wholly owned by its partners, all of whom work within the firm.")]),e._v(" "),o("p",[e._v("We would like to thank Baillie Gifford for supporting us and the Bitcoin open-source environment. With this grant, Baillie Gifford became one of our largest supporters, allowing the BTCPay Server contributors to continue working on creating free and open-source payment processor for anybody in the world to use.")]),e._v(" "),o("p",[e._v("This grant will help us further achieve our "),o("a",{attrs:{href:"https://github.com/orgs/btcpayserver/projects/9",target:"_blank",rel:"noopener noreferrer"}},[e._v("roadmap"),o("OutboundLink")],1),e._v(" goals for this year centered around a visual overhaul of BTCPay Server, mobile app development and the transition from a self-hosted payment processor to a modular Bitcoin payment platform.")]),e._v(" "),o("p",[e._v("Baillie Gifford, welcome to the BTCPay Server family!")]),e._v(" "),o("p",[e._v("We also thank our dedicated and passionate community for their daily support in making BTCPay Server the best Bitcoin merchant solution possible.")]),e._v(" "),o("p",[o("em",[e._v("If you're a business that would like to support BTCPay Server contributors please get in touch via the "),o("a",{attrs:{href:"https://foundation.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("contact form on the foundation's website"),o("OutboundLink")],1),e._v(".")])])])}),[],!1,null,null,null);o.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/80.5bcb7c4a.js b/assets/js/80.0cb36912.js similarity index 99% rename from assets/js/80.5bcb7c4a.js rename to assets/js/80.0cb36912.js index ce5f504e..c7faccbb 100644 --- a/assets/js/80.5bcb7c4a.js +++ b/assets/js/80.0cb36912.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{400:function(e,t,a){"use strict";a.r(t);var n=a(10),r=Object(n.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Held on the island of Madeira, known for its breathtaking landscapes, the "),t("a",{attrs:{href:"http://bitcoinatlantis.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bitcoin Atlantis"),t("OutboundLink")],1),e._v(" conference marked a milestone as the first of its kind hosted in a football stadium. Featuring a rich agenda across four stages, 3 workshop rooms, 200 speakers, and an array of satellite events, the conference attracted over 3,000 attendees, united by a keen interest in Bitcoin and its potential to give freedom and empower individuals and businesses around the world.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/9xDPJRgdZhs/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=9xDPJRgdZhs","data-id":"9xDPJRgdZhs"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/9xDPJRgdZhs?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("This case study explores the collaborative efforts of the conference organizers, BTCPay Server, Bitcoinize, Blink, and HodlHodl to onboard merchants and locals to adopt Bitcoin at the event, streamlining the payment experience resulting in over "),t("strong",[e._v("8,750 transactions")]),e._v(" with a volume of "),t("strong",[e._v("2.029416")]),e._v(" BTC valued "),t("strong",[e._v("115,100€")]),e._v(", on "),t("strong",[e._v("60 point-of-sale devices")]),e._v(" and "),t("strong",[e._v("18 merchant")]),e._v("s in just 3 days.")]),e._v(" "),t("p",[e._v("You can "),t("a",{attrs:{href:"https://btcpayserver.org/case-studies/BitcoinAtlantis.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("download a PDF of this case study on this link"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinAtlantis-2.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"background-and-challenge"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#background-and-challenge"}},[e._v("#")]),e._v(" Background and challenge")]),e._v(" "),t("p",[e._v("Leveraging the success of the "),t("a",{attrs:{href:"https://blog.btcpayserver.org/case-study-hodlhodl-2023/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Baltic Honeybadger"),t("OutboundLink")],1),e._v(" conference, the organizers aimed to scale this model to an even wider audience with unique challenges:")]),e._v(" "),t("ul",[t("li",[e._v("For merchants: Creating an experience on par with traditional credit card payments, minimizing Bitcoin's technical complexities whilst ensuring smooth operations and uptime.")]),e._v(" "),t("li",[e._v("For customers: Make the system accessible to novices, ensuring a speedy, interoperable, user-friendly, and cost-effective experience.")])]),e._v(" "),t("h3",{attrs:{id:"objectives"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#objectives"}},[e._v("#")]),e._v(" Objectives")]),e._v(" "),t("ul",[t("li",[e._v("Demonstrate Bitcoin’s everyday utility and potential as a medium of exchange")]),e._v(" "),t("li",[e._v("Introduce Bitcoin to Madeiran locals and empower them to adopt it in their everyday life or business")])]),e._v(" "),t("h2",{attrs:{id:"solution-implementation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#solution-implementation"}},[e._v("#")]),e._v(" Solution implementation")]),e._v(" "),t("p",[e._v("Implementing a seamless payment experience while navigating challenges involved several key technical and user experience innovations, complemented by open collaboration between multiple projects.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinAtlantis-3.png",alt:""}})]),e._v(" "),t("h3",{attrs:{id:"the-infrastructure"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-infrastructure"}},[e._v("#")]),e._v(" The infrastructure")]),e._v(" "),t("p",[e._v("A reliable payment processing system that could handle a large transaction volume without hiccups was achieved through the deployment of a dedicated "),t("a",{attrs:{href:"https://btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay Server"),t("OutboundLink")],1),e._v(" instance. The lightning Network was used for instant and low-cost transaction settlement. Each merchant, had a dedicated store within BTCPay Server created. Each store had a wallet, and a web "),t("a",{attrs:{href:"https://docs.btcpayserver.org/Apps/#point-of-sale-app",target:"_blank",rel:"noopener noreferrer"}},[e._v("point of sale app"),t("OutboundLink")],1),e._v(" which was loaded on Bitcoinize Point of Sale devices – enabling invoice generation, transaction previews, receipt printing, and refunds.")]),e._v(" "),t("h4",{attrs:{id:"lightning-network"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lightning-network"}},[e._v("#")]),e._v(" Lightning Network")]),e._v(" "),t("p",[e._v("Liquidity issues and channel management on the Lightning Network were addressed by connecting stores to an external "),t("a",{attrs:{href:"http://blink.sv",target:"_blank",rel:"noopener noreferrer"}},[e._v("Blink wallet"),t("OutboundLink")],1),e._v(" account via a BTCPay & Blink "),t("a",{attrs:{href:"https://www.blink.sv/blog/introducing-the-blink-plugin-for-btcpay-server",target:"_blank",rel:"noopener noreferrer"}},[e._v("plugin"),t("OutboundLink")],1),e._v(", a custodial convenience option for Lightning payments available since BTCPay Server "),t("a",{attrs:{href:"https://blog.btcpayserver.org/btcpay-server-1-12-0/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.12.0"),t("OutboundLink")],1),e._v(". The Blink team ensured node uptime and liquidity. This setup abstracted the complexities from end-users and merchants in particular.")]),e._v(" "),t("h4",{attrs:{id:"point-of-sale-terminals"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#point-of-sale-terminals"}},[e._v("#")]),e._v(" Point of sale terminals")]),e._v(" "),t("p",[e._v("To ensure familiarity and ease of use, every merchant received a dedicated point of sale device, provided by "),t("a",{attrs:{href:"https://bitcoinize.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bitcoinize"),t("OutboundLink")],1),e._v(". These devices are heavily optimized for BTCPay Server users and allow several key functionalities such as NFC reading and receipt printing. With this combination, customers can tap-to-pay with NFC cards (BoltCards), resulting in familiar UX and a seamless checkout experience as with credit cards.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinAtlantis-4.png",alt:""}})]),e._v(" "),t("h4",{attrs:{id:"boltcards"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#boltcards"}},[e._v("#")]),e._v(" BoltCards")]),e._v(" "),t("p",[e._v("The introduction of "),t("a",{attrs:{href:"https://www.boltcard.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("BoltCards"),t("OutboundLink")],1),e._v(" provided by "),t("a",{attrs:{href:"https://www.coincorner.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("CoinCorner"),t("OutboundLink")],1),e._v(" was an enhancement in user-experience. It allowed quicker onboarding for the locals who had no access to bitcoin, it also reduced their fear of using an unknown technology. Since BoltCards look the same as credit cards, the tangibility and familiarity provided a quicker checkout process.")]),e._v(" "),t("p",[e._v("The biggest innovation, at this conference, was that the entire process from initializing, topping up, and even resetting of the BoltCards was done within the BTCPay Server instance on the Point of Sale terminals. Five dedicated terminals were set up as Top-Up-Stations where attendees could check their card balance and top them up.")]),e._v(" "),t("p",[e._v("The technical foundations for the BoltCard setup were established by "),t("a",{attrs:{href:"https://docs.btcpayserver.org/PullPayments/",target:"_blank",rel:"noopener noreferrer"}},[e._v("pull payments"),t("OutboundLink")],1),e._v(" and the new Bolt Cards Factory plugin by Nicolas Dorier, all running within the BTCPay Server. The plugin allowed organizers to pre-set certain parameters – for example, the value on the card and the mass-write of over 2,000 NFC cards at scale through a very simple UI. Since the plugin creates a web-page, any NFC-compatible device could generate Bitcoin cards. The only requirement there was to download the "),t("a",{attrs:{href:"https://play.google.com/store/apps/details?id=com.lightningnfcapp",target:"_blank",rel:"noopener noreferrer"}},[e._v("Boltcard NFC Programmer app"),t("OutboundLink")],1),e._v(", which in combination with Bolt Factory generated a unique card for every attendee.")]),e._v(" "),t("p",[e._v("This demonstrates that BTCPay Server was an end-to-end solution, for receiving payments, and generating the BoltCards that attendees used to pay, top them up, and even reset them for repurposing them later on.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinAtlantis-6.png",alt:""}})]),e._v(" "),t("h4",{attrs:{id:"onboarding-and-support"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#onboarding-and-support"}},[e._v("#")]),e._v(" Onboarding and support")]),e._v(" "),t("p",[e._v("An important part of the project's success lay in efficiently onboarding merchants and familiarizing them with the new technology. Through a hands-on demo and continuous support during the event, merchants were able to adapt to the process smoothly, enhancing the overall experience for both vendors and attendees.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinAtlantis-7.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"results"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#results"}},[e._v("#")]),e._v(" Results")]),e._v(" "),t("p",[e._v("The collaborative effort culminated in an enriching experience for both merchants and customers, manifesting in "),t("strong",[e._v("8,750 transactions")]),e._v(", averaging "),t("strong",[e._v("13,20 € per transaction")]),e._v(", aggregating to a value greater than "),t("strong",[e._v("2.2 BTC")]),e._v(" or "),t("strong",[e._v("115,100 €")]),e._v(".")]),e._v(" "),t("p",[e._v("In a survey conducted with 8 merchants after the conference:")]),e._v(" "),t("ul",[t("li",[e._v("100% of participants said that they would be willing to accept bitcoin at next year’s conference.")]),e._v(" "),t("li",[e._v("100% replied they would be open to offering bitcoin as a payment option in their business in the future.")]),e._v(" "),t("li",[e._v("80% said accepting bitcoin had a positive reaction from their customers.")]),e._v(" "),t("li",[e._v("The transaction speed received very high average rating of 4.5/5.")])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinAtlantis-8.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"conclusion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),t("p",[e._v("The Bitcoin Atlantis Conference in Madeira has set a new benchmark in the practical application of Bitcoin as a medium of exchange, demonstrating that with the right collaboration and technology, Bitcoin can seamlessly integrate into everyday life. This event has proven that the barriers to adoption can be overcome through innovation, education, and community engagement. Paving the way for a future where bitcoin transactions are as commonplace and user-friendlier as traditional payment methods.")]),e._v(" "),t("p",[e._v("The overwhelmingly positive feedback from merchants and attendees signals a growing readiness and enthusiasm for Bitcoin, suggesting a bright future for its adoption in commerce and beyond. This case study showcases the success of Bitcoin Atlantis, and it serves as a model for future events and businesses looking to embrace Bitcoin, underscoring its potential to empower and liberate in the digital age.")]),e._v(" "),t("blockquote",[t("p",[e._v("The BTCPay Server system provided a smooth and reliable paying experience throughout the entire conference. It guaranteed service with no interruptions and minimal friction. - Merchant")])]),e._v(" "),t("blockquote",[t("p",[e._v("The lightning infrastructure that was created for the conference worked like a charm. Fast and reliable! It was one of the highlights, not only at the main venue but also on all the satellite events, including the Atlas Music Festival! - André Loja, Bitcoin Atlantis")])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinAtlantis-9.png",alt:""}})]),e._v(" "),t("p",[e._v("You can "),t("a",{attrs:{href:"https://btcpayserver.org/case-studies/BitcoinAtlantis.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("download a PDF of this case study on this link"),t("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{401:function(e,t,a){"use strict";a.r(t);var n=a(10),r=Object(n.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Held on the island of Madeira, known for its breathtaking landscapes, the "),t("a",{attrs:{href:"http://bitcoinatlantis.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bitcoin Atlantis"),t("OutboundLink")],1),e._v(" conference marked a milestone as the first of its kind hosted in a football stadium. Featuring a rich agenda across four stages, 3 workshop rooms, 200 speakers, and an array of satellite events, the conference attracted over 3,000 attendees, united by a keen interest in Bitcoin and its potential to give freedom and empower individuals and businesses around the world.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/9xDPJRgdZhs/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=9xDPJRgdZhs","data-id":"9xDPJRgdZhs"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/9xDPJRgdZhs?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("This case study explores the collaborative efforts of the conference organizers, BTCPay Server, Bitcoinize, Blink, and HodlHodl to onboard merchants and locals to adopt Bitcoin at the event, streamlining the payment experience resulting in over "),t("strong",[e._v("8,750 transactions")]),e._v(" with a volume of "),t("strong",[e._v("2.029416")]),e._v(" BTC valued "),t("strong",[e._v("115,100€")]),e._v(", on "),t("strong",[e._v("60 point-of-sale devices")]),e._v(" and "),t("strong",[e._v("18 merchant")]),e._v("s in just 3 days.")]),e._v(" "),t("p",[e._v("You can "),t("a",{attrs:{href:"https://btcpayserver.org/case-studies/BitcoinAtlantis.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("download a PDF of this case study on this link"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinAtlantis-2.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"background-and-challenge"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#background-and-challenge"}},[e._v("#")]),e._v(" Background and challenge")]),e._v(" "),t("p",[e._v("Leveraging the success of the "),t("a",{attrs:{href:"https://blog.btcpayserver.org/case-study-hodlhodl-2023/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Baltic Honeybadger"),t("OutboundLink")],1),e._v(" conference, the organizers aimed to scale this model to an even wider audience with unique challenges:")]),e._v(" "),t("ul",[t("li",[e._v("For merchants: Creating an experience on par with traditional credit card payments, minimizing Bitcoin's technical complexities whilst ensuring smooth operations and uptime.")]),e._v(" "),t("li",[e._v("For customers: Make the system accessible to novices, ensuring a speedy, interoperable, user-friendly, and cost-effective experience.")])]),e._v(" "),t("h3",{attrs:{id:"objectives"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#objectives"}},[e._v("#")]),e._v(" Objectives")]),e._v(" "),t("ul",[t("li",[e._v("Demonstrate Bitcoin’s everyday utility and potential as a medium of exchange")]),e._v(" "),t("li",[e._v("Introduce Bitcoin to Madeiran locals and empower them to adopt it in their everyday life or business")])]),e._v(" "),t("h2",{attrs:{id:"solution-implementation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#solution-implementation"}},[e._v("#")]),e._v(" Solution implementation")]),e._v(" "),t("p",[e._v("Implementing a seamless payment experience while navigating challenges involved several key technical and user experience innovations, complemented by open collaboration between multiple projects.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinAtlantis-3.png",alt:""}})]),e._v(" "),t("h3",{attrs:{id:"the-infrastructure"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-infrastructure"}},[e._v("#")]),e._v(" The infrastructure")]),e._v(" "),t("p",[e._v("A reliable payment processing system that could handle a large transaction volume without hiccups was achieved through the deployment of a dedicated "),t("a",{attrs:{href:"https://btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay Server"),t("OutboundLink")],1),e._v(" instance. The lightning Network was used for instant and low-cost transaction settlement. Each merchant, had a dedicated store within BTCPay Server created. Each store had a wallet, and a web "),t("a",{attrs:{href:"https://docs.btcpayserver.org/Apps/#point-of-sale-app",target:"_blank",rel:"noopener noreferrer"}},[e._v("point of sale app"),t("OutboundLink")],1),e._v(" which was loaded on Bitcoinize Point of Sale devices – enabling invoice generation, transaction previews, receipt printing, and refunds.")]),e._v(" "),t("h4",{attrs:{id:"lightning-network"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#lightning-network"}},[e._v("#")]),e._v(" Lightning Network")]),e._v(" "),t("p",[e._v("Liquidity issues and channel management on the Lightning Network were addressed by connecting stores to an external "),t("a",{attrs:{href:"http://blink.sv",target:"_blank",rel:"noopener noreferrer"}},[e._v("Blink wallet"),t("OutboundLink")],1),e._v(" account via a BTCPay & Blink "),t("a",{attrs:{href:"https://www.blink.sv/blog/introducing-the-blink-plugin-for-btcpay-server",target:"_blank",rel:"noopener noreferrer"}},[e._v("plugin"),t("OutboundLink")],1),e._v(", a custodial convenience option for Lightning payments available since BTCPay Server "),t("a",{attrs:{href:"https://blog.btcpayserver.org/btcpay-server-1-12-0/",target:"_blank",rel:"noopener noreferrer"}},[e._v("1.12.0"),t("OutboundLink")],1),e._v(". The Blink team ensured node uptime and liquidity. This setup abstracted the complexities from end-users and merchants in particular.")]),e._v(" "),t("h4",{attrs:{id:"point-of-sale-terminals"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#point-of-sale-terminals"}},[e._v("#")]),e._v(" Point of sale terminals")]),e._v(" "),t("p",[e._v("To ensure familiarity and ease of use, every merchant received a dedicated point of sale device, provided by "),t("a",{attrs:{href:"https://bitcoinize.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bitcoinize"),t("OutboundLink")],1),e._v(". These devices are heavily optimized for BTCPay Server users and allow several key functionalities such as NFC reading and receipt printing. With this combination, customers can tap-to-pay with NFC cards (BoltCards), resulting in familiar UX and a seamless checkout experience as with credit cards.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinAtlantis-4.png",alt:""}})]),e._v(" "),t("h4",{attrs:{id:"boltcards"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#boltcards"}},[e._v("#")]),e._v(" BoltCards")]),e._v(" "),t("p",[e._v("The introduction of "),t("a",{attrs:{href:"https://www.boltcard.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("BoltCards"),t("OutboundLink")],1),e._v(" provided by "),t("a",{attrs:{href:"https://www.coincorner.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("CoinCorner"),t("OutboundLink")],1),e._v(" was an enhancement in user-experience. It allowed quicker onboarding for the locals who had no access to bitcoin, it also reduced their fear of using an unknown technology. Since BoltCards look the same as credit cards, the tangibility and familiarity provided a quicker checkout process.")]),e._v(" "),t("p",[e._v("The biggest innovation, at this conference, was that the entire process from initializing, topping up, and even resetting of the BoltCards was done within the BTCPay Server instance on the Point of Sale terminals. Five dedicated terminals were set up as Top-Up-Stations where attendees could check their card balance and top them up.")]),e._v(" "),t("p",[e._v("The technical foundations for the BoltCard setup were established by "),t("a",{attrs:{href:"https://docs.btcpayserver.org/PullPayments/",target:"_blank",rel:"noopener noreferrer"}},[e._v("pull payments"),t("OutboundLink")],1),e._v(" and the new Bolt Cards Factory plugin by Nicolas Dorier, all running within the BTCPay Server. The plugin allowed organizers to pre-set certain parameters – for example, the value on the card and the mass-write of over 2,000 NFC cards at scale through a very simple UI. Since the plugin creates a web-page, any NFC-compatible device could generate Bitcoin cards. The only requirement there was to download the "),t("a",{attrs:{href:"https://play.google.com/store/apps/details?id=com.lightningnfcapp",target:"_blank",rel:"noopener noreferrer"}},[e._v("Boltcard NFC Programmer app"),t("OutboundLink")],1),e._v(", which in combination with Bolt Factory generated a unique card for every attendee.")]),e._v(" "),t("p",[e._v("This demonstrates that BTCPay Server was an end-to-end solution, for receiving payments, and generating the BoltCards that attendees used to pay, top them up, and even reset them for repurposing them later on.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinAtlantis-6.png",alt:""}})]),e._v(" "),t("h4",{attrs:{id:"onboarding-and-support"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#onboarding-and-support"}},[e._v("#")]),e._v(" Onboarding and support")]),e._v(" "),t("p",[e._v("An important part of the project's success lay in efficiently onboarding merchants and familiarizing them with the new technology. Through a hands-on demo and continuous support during the event, merchants were able to adapt to the process smoothly, enhancing the overall experience for both vendors and attendees.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinAtlantis-7.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"results"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#results"}},[e._v("#")]),e._v(" Results")]),e._v(" "),t("p",[e._v("The collaborative effort culminated in an enriching experience for both merchants and customers, manifesting in "),t("strong",[e._v("8,750 transactions")]),e._v(", averaging "),t("strong",[e._v("13,20 € per transaction")]),e._v(", aggregating to a value greater than "),t("strong",[e._v("2.2 BTC")]),e._v(" or "),t("strong",[e._v("115,100 €")]),e._v(".")]),e._v(" "),t("p",[e._v("In a survey conducted with 8 merchants after the conference:")]),e._v(" "),t("ul",[t("li",[e._v("100% of participants said that they would be willing to accept bitcoin at next year’s conference.")]),e._v(" "),t("li",[e._v("100% replied they would be open to offering bitcoin as a payment option in their business in the future.")]),e._v(" "),t("li",[e._v("80% said accepting bitcoin had a positive reaction from their customers.")]),e._v(" "),t("li",[e._v("The transaction speed received very high average rating of 4.5/5.")])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinAtlantis-8.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"conclusion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),t("p",[e._v("The Bitcoin Atlantis Conference in Madeira has set a new benchmark in the practical application of Bitcoin as a medium of exchange, demonstrating that with the right collaboration and technology, Bitcoin can seamlessly integrate into everyday life. This event has proven that the barriers to adoption can be overcome through innovation, education, and community engagement. Paving the way for a future where bitcoin transactions are as commonplace and user-friendlier as traditional payment methods.")]),e._v(" "),t("p",[e._v("The overwhelmingly positive feedback from merchants and attendees signals a growing readiness and enthusiasm for Bitcoin, suggesting a bright future for its adoption in commerce and beyond. This case study showcases the success of Bitcoin Atlantis, and it serves as a model for future events and businesses looking to embrace Bitcoin, underscoring its potential to empower and liberate in the digital age.")]),e._v(" "),t("blockquote",[t("p",[e._v("The BTCPay Server system provided a smooth and reliable paying experience throughout the entire conference. It guaranteed service with no interruptions and minimal friction. - Merchant")])]),e._v(" "),t("blockquote",[t("p",[e._v("The lightning infrastructure that was created for the conference worked like a charm. Fast and reliable! It was one of the highlights, not only at the main venue but also on all the satellite events, including the Atlas Music Festival! - André Loja, Bitcoin Atlantis")])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinAtlantis-9.png",alt:""}})]),e._v(" "),t("p",[e._v("You can "),t("a",{attrs:{href:"https://btcpayserver.org/case-studies/BitcoinAtlantis.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("download a PDF of this case study on this link"),t("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/81.cefde2ea.js b/assets/js/81.40917c35.js similarity index 98% rename from assets/js/81.cefde2ea.js rename to assets/js/81.40917c35.js index b3ac1c78..e20aa961 100644 --- a/assets/js/81.cefde2ea.js +++ b/assets/js/81.40917c35.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{401:function(e,t,a){"use strict";a.r(t);var n=a(10),i=Object(n.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[t("a",{attrs:{href:"https://www.bitcoinjungle.app/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bitcoin Jungle"),t("OutboundLink")],1),e._v(" is a community project in Costa Rica that provides the education, technology & resources needed for local businesses to accept Bitcoin as payment. Our goal is to create, expand & maintain a circular Bitcoin economy in Costa Rica. We want to make it as easy as possible for merchants to accept Bitcoin as payment, both on-chain and over lightning. This includes both physical retail & e-commerce, sole proprietors & large enterprises, long-time hodlers & first time users, and everything in between.")]),e._v(" "),t("p",[e._v("You can "),t("a",{attrs:{href:"https://btcpayserver.org/case-studies/BitcoinJungleCR2023.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("download a PDF of this case study on this link"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("BTCPay Server was a natural choice for us. It’s a well-designed & mature product that “just works”. It’s intuitive enough that anyone can use it, while having the depth needed to satisfy more advanced users. It’s stable enough to deploy without constant worrying, yet innovate enough to continue adding new features without making the product worse overall.")]),e._v(" "),t("p",[e._v("Whenever a payment is collected on BTCPay Server, it should be immediately forwarded to that user’s Bitcoin Jungle wallet. To achieve this, we leveraged BTCPay Server’s Webhooks feature. Each time an "),t("strong",[e._v("invoice is paid")]),e._v(", a "),t("strong",[e._v("webhook is triggered")]),e._v(". This webhook is responsible for forwarding the Bitcoin received in the merchant’s wallet using the LNURL protocol. The webhook also allows us to split up the Bitcoin in various ways - the service provider can "),t("strong",[e._v("optionally retain a processing fee & tips received")]),e._v(" can be split up and delivered amongst staff members evenly. This happens in under a second and is perceived to be “real-time” by the merchant.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinJunglecr1.jpg",alt:""}})]),e._v(" "),t("p",[e._v("We also wanted our BTCPay Server to use the BTC/CRC price set by Bitcoin Jungle Wallet, to avoid mis-match in fiat calculations between the Point of Sale and the Wallet. To achieve this, we created a "),t("strong",[e._v("custom rate provider")]),e._v(" in our BTCPay Server instance. This was a straightforward process - copy an existing rate provider & then modify the code to make a RPC call to Bitcoin Jungle to retrieve the current price of BTC.")]),e._v(" "),t("p",[e._v("Overall, the integration was very straight-forward. The main challenge we faced was the handling of on-chain payments received, as we decided to forward all payments over Lightning Network. We automated this case utilizing "),t("strong",[e._v("Lightning Loop")]),e._v(".")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinJunglecr2.jpg",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"features-and-benefits"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#features-and-benefits"}},[e._v("#")]),e._v(" Features and Benefits")]),e._v(" "),t("p",[e._v("Prior to our BTCPay Server integration, we only offered a Payment Link to our users (e.g. https://pay.bitcoinjungle.app/username), which is powered by Galoy.\nThis integration greatly enhanced the user experience for merchants. BTCPay Server allows them to create multiple Point of Sales (say if they have multiple locations) and track them separately, integrate with popular ecommerce platforms, have a login to view/export invoices to Excel for accounting, and accept payments on-chain in addition to Lightning.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinJunglecr3.jpg",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"results"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#results"}},[e._v("#")]),e._v(" Results")]),e._v(" "),t("p",[e._v("We have received far fewer support requests than expected after our integration with BTCPay Server. The whole process is pretty seamless & intuitive. "),t("strong",[e._v("Any business owner can start accepting Bitcoin payments in <2 minutes")]),e._v(". To date, we haven’t received any feature requests that were not already planned by the BTCPay Server dev team (and almost all have already been implemented).")]),e._v(" "),t("p",[e._v("Our single BTCPay Server instance ~"),t("strong",[e._v("200 stores")]),e._v(" supports , totalling ~5k invoices to date. It continues scaling efficiently without any issue.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinJunglecr4.jpg",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"conclusion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),t("p",[e._v("One thing we learned was that it’s crucial to allow users to pay on-chain, even if you prefer Lightning Network. We’ve found some visitors to our circular economy don’t yet have a Lightning wallet. They see the Bitcoin Accepted Here sticker at a store, get excited because they have Bitcoin (usually on Coinbase), but then scan a Lightning QR and can’t pay the merchant. Once we added On-chain capabilities for merchants using BTCPay Server, we noticed an uptick in payments.")]),e._v(" "),t("p",[e._v("You can "),t("a",{attrs:{href:"https://btcpayserver.org/case-studies/BitcoinJungleCR2023.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("download a PDF of this case study on this link"),t("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{400:function(e,t,a){"use strict";a.r(t);var n=a(10),i=Object(n.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[t("a",{attrs:{href:"https://www.bitcoinjungle.app/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bitcoin Jungle"),t("OutboundLink")],1),e._v(" is a community project in Costa Rica that provides the education, technology & resources needed for local businesses to accept Bitcoin as payment. Our goal is to create, expand & maintain a circular Bitcoin economy in Costa Rica. We want to make it as easy as possible for merchants to accept Bitcoin as payment, both on-chain and over lightning. This includes both physical retail & e-commerce, sole proprietors & large enterprises, long-time hodlers & first time users, and everything in between.")]),e._v(" "),t("p",[e._v("You can "),t("a",{attrs:{href:"https://btcpayserver.org/case-studies/BitcoinJungleCR2023.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("download a PDF of this case study on this link"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("BTCPay Server was a natural choice for us. It’s a well-designed & mature product that “just works”. It’s intuitive enough that anyone can use it, while having the depth needed to satisfy more advanced users. It’s stable enough to deploy without constant worrying, yet innovate enough to continue adding new features without making the product worse overall.")]),e._v(" "),t("p",[e._v("Whenever a payment is collected on BTCPay Server, it should be immediately forwarded to that user’s Bitcoin Jungle wallet. To achieve this, we leveraged BTCPay Server’s Webhooks feature. Each time an "),t("strong",[e._v("invoice is paid")]),e._v(", a "),t("strong",[e._v("webhook is triggered")]),e._v(". This webhook is responsible for forwarding the Bitcoin received in the merchant’s wallet using the LNURL protocol. The webhook also allows us to split up the Bitcoin in various ways - the service provider can "),t("strong",[e._v("optionally retain a processing fee & tips received")]),e._v(" can be split up and delivered amongst staff members evenly. This happens in under a second and is perceived to be “real-time” by the merchant.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinJunglecr1.jpg",alt:""}})]),e._v(" "),t("p",[e._v("We also wanted our BTCPay Server to use the BTC/CRC price set by Bitcoin Jungle Wallet, to avoid mis-match in fiat calculations between the Point of Sale and the Wallet. To achieve this, we created a "),t("strong",[e._v("custom rate provider")]),e._v(" in our BTCPay Server instance. This was a straightforward process - copy an existing rate provider & then modify the code to make a RPC call to Bitcoin Jungle to retrieve the current price of BTC.")]),e._v(" "),t("p",[e._v("Overall, the integration was very straight-forward. The main challenge we faced was the handling of on-chain payments received, as we decided to forward all payments over Lightning Network. We automated this case utilizing "),t("strong",[e._v("Lightning Loop")]),e._v(".")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinJunglecr2.jpg",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"features-and-benefits"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#features-and-benefits"}},[e._v("#")]),e._v(" Features and Benefits")]),e._v(" "),t("p",[e._v("Prior to our BTCPay Server integration, we only offered a Payment Link to our users (e.g. https://pay.bitcoinjungle.app/username), which is powered by Galoy.\nThis integration greatly enhanced the user experience for merchants. BTCPay Server allows them to create multiple Point of Sales (say if they have multiple locations) and track them separately, integrate with popular ecommerce platforms, have a login to view/export invoices to Excel for accounting, and accept payments on-chain in addition to Lightning.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinJunglecr3.jpg",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"results"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#results"}},[e._v("#")]),e._v(" Results")]),e._v(" "),t("p",[e._v("We have received far fewer support requests than expected after our integration with BTCPay Server. The whole process is pretty seamless & intuitive. "),t("strong",[e._v("Any business owner can start accepting Bitcoin payments in <2 minutes")]),e._v(". To date, we haven’t received any feature requests that were not already planned by the BTCPay Server dev team (and almost all have already been implemented).")]),e._v(" "),t("p",[e._v("Our single BTCPay Server instance ~"),t("strong",[e._v("200 stores")]),e._v(" supports , totalling ~5k invoices to date. It continues scaling efficiently without any issue.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/BitcoinJunglecr4.jpg",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"conclusion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),t("p",[e._v("One thing we learned was that it’s crucial to allow users to pay on-chain, even if you prefer Lightning Network. We’ve found some visitors to our circular economy don’t yet have a Lightning wallet. They see the Bitcoin Accepted Here sticker at a store, get excited because they have Bitcoin (usually on Coinbase), but then scan a Lightning QR and can’t pay the merchant. Once we added On-chain capabilities for merchants using BTCPay Server, we noticed an uptick in payments.")]),e._v(" "),t("p",[e._v("You can "),t("a",{attrs:{href:"https://btcpayserver.org/case-studies/BitcoinJungleCR2023.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("download a PDF of this case study on this link"),t("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/88.a9b2e921.js b/assets/js/88.a0cff54e.js similarity index 99% rename from assets/js/88.a9b2e921.js rename to assets/js/88.a0cff54e.js index 599c337c..35d1fb17 100644 --- a/assets/js/88.a9b2e921.js +++ b/assets/js/88.a0cff54e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[88],{408:function(e,t,a){"use strict";a.r(t);var o=a(10),r=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Voltage is a Bitcoin Development Platform and infrastructure provider that enables engineers, developers, and business owners to take full control over their Bitcoin experience.")]),e._v(" "),t("p",[e._v("You can "),t("a",{attrs:{href:"https://btcpayserver.org/case-studies/voltage2023.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("download a PDF of this case study on this link"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://voltage.cloud/?utm_source=BTCPay&utm_medium=Case-Study-BTC-Pay&utm_id=BTC-Pay-Case-Study-Voltager",target:"_blank",rel:"noopener noreferrer"}},[e._v("Voltage"),t("OutboundLink")],1),e._v(" offers BTCPay Server instances to anyone with a Voltage account. When you have a BTCPay Server with Voltage, you can build a donation button, webshop, crowdfund, and more. Further, if you have a lightning node on Voltage, it will connect to your BTCPay Server instance seamlessly, providing a near frictionless non-custodial bitcoin-native commerce platform.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/VoltageCaseStudy-1.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"needs-and-goals"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#needs-and-goals"}},[e._v("#")]),e._v(" Needs and Goals")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://voltage.cloud/?utm_source=BTCPay&utm_medium=Case-Study-BTC-Pay&utm_id=BTC-Pay-Case-Study-Voltager",target:"_blank",rel:"noopener noreferrer"}},[e._v("Voltage"),t("OutboundLink")],1),e._v(" is a bitcoin-focused business. As such, there needs to be a way to accept Bitcoin from customers for Voltage billing and give customers the maximum amount of freedom in a non-custodial manner to utilize their lightning node infrastructure. We believe that BTCPay Server is the most robust solution for commerce on Bitcoin while maintaining the core Bitcoin ethos of permissionless, censorship-resistant payments.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/VoltageCaseStudy-2.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"choice-of-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#choice-of-btcpay-server"}},[e._v("#")]),e._v(" Choice of BTCPay Server")]),e._v(" "),t("p",[e._v("Nearly all other Bitcoin commerce solutions have some custodial KYC component. This is something that we wish to avoid at Voltage. With those services put aside, the competition for Bitcoin native commerce platforms that are open source is relatively slim. BTCPay Server’s core ethos and mission align perfectly with our own, and that made the choice to use BTCPay Server fairly easy. On top of that, the sheer amount of features and customizability of BTCPay Server is unmatched in the industry.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/VoltageCaseStudy-3.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"implementation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#implementation"}},[e._v("#")]),e._v(" Implementation")]),e._v(" "),t("ul",[t("li",[e._v("Integrating BTCPay Server into Voltage was fairly easy. We use the standard open source tools, like the Docker Compose "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker",target:"_blank",rel:"noopener noreferrer"}},[e._v("repository"),t("OutboundLink")],1),e._v(". We use the "),t("a",{attrs:{href:"https://docs.btcpayserver.org/API/Greenfield/v1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("APIs"),t("OutboundLink")],1),e._v(" that come default with BTCPay Server to administer the server on behalf of our users. BTCPay Server comes with all the features and settings needed out of the box. It’s been simple and easy to use.")]),e._v(" "),t("li",[e._v("Challenges: At Voltage, we experience scale beyond the standard deployment of BTCPay Server. For those reasons, we had to be prepared. To best ensure our customer’s data, we switched out the default deployment of the Postgres database for our own Postgres installation which is highly available and takes frequent backups.")])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/VoltageCaseStudy-4.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"features-and-benefits"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#features-and-benefits"}},[e._v("#")]),e._v(" Features and Benefits")]),e._v(" "),t("p",[t("strong",[e._v("An improvement over the previous system")]),e._v(": BTCPay Server has been a part of Voltage since day one. It was deployed as the primary software to accept Bitcoin payments from Voltage’s first customers and has stayed with us ever since. Shortly after launch, BTCPay Server user accounts were offered as an additional service to Voltage users at a low cost and we still do to this day.")]),e._v(" "),t("h2",{attrs:{id:"results"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#results"}},[e._v("#")]),e._v(" Results")]),e._v(" "),t("ul",[t("li",[e._v("Outcomes: Simple BTC payment checkout for our customers + now all of our customers can spin up a BTCPay instance in minutes and deploy without technical know-how.")]),e._v(" "),t("li",[e._v("Data: As of October 2023 Voltage is doing 45,000+ transactions monthly.")]),e._v(" "),t("li",[e._v("User Feedback: We made a video series from some of our customers. You can watch those "),t("a",{attrs:{href:"https://www.youtube.com/watch?v=1W8FixsefHY",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(", and "),t("a",{attrs:{href:"https://www.youtube.com/watch?v=mL7mZ542Vhs&t=118s",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/VoltageCaseStudy-5.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"conclusion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),t("p",[t("strong",[e._v("Learnings")]),e._v(": The fastest and easiest way for us to accept payments is BTCPay Server. We also have found that customers love being able to spin up BTCPay quickly without having to learn the process of doing it themselves. It is a very popular product that we get new users for daily.")]),e._v(" "),t("p",[t("strong",[e._v("Future Prospects")]),e._v(": BTCPay will continue to be the bitcoin payment infra we use to accept bitcoin-denominated payment processing. We are also excited for updates that our customers can use and experience.")]),e._v(" "),t("p",[e._v("You can "),t("a",{attrs:{href:"https://btcpayserver.org/case-studies/voltage2023.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("download a PDF of this case study on this link"),t("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[88],{409:function(e,t,a){"use strict";a.r(t);var o=a(10),r=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("Voltage is a Bitcoin Development Platform and infrastructure provider that enables engineers, developers, and business owners to take full control over their Bitcoin experience.")]),e._v(" "),t("p",[e._v("You can "),t("a",{attrs:{href:"https://btcpayserver.org/case-studies/voltage2023.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("download a PDF of this case study on this link"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://voltage.cloud/?utm_source=BTCPay&utm_medium=Case-Study-BTC-Pay&utm_id=BTC-Pay-Case-Study-Voltager",target:"_blank",rel:"noopener noreferrer"}},[e._v("Voltage"),t("OutboundLink")],1),e._v(" offers BTCPay Server instances to anyone with a Voltage account. When you have a BTCPay Server with Voltage, you can build a donation button, webshop, crowdfund, and more. Further, if you have a lightning node on Voltage, it will connect to your BTCPay Server instance seamlessly, providing a near frictionless non-custodial bitcoin-native commerce platform.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/VoltageCaseStudy-1.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"needs-and-goals"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#needs-and-goals"}},[e._v("#")]),e._v(" Needs and Goals")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://voltage.cloud/?utm_source=BTCPay&utm_medium=Case-Study-BTC-Pay&utm_id=BTC-Pay-Case-Study-Voltager",target:"_blank",rel:"noopener noreferrer"}},[e._v("Voltage"),t("OutboundLink")],1),e._v(" is a bitcoin-focused business. As such, there needs to be a way to accept Bitcoin from customers for Voltage billing and give customers the maximum amount of freedom in a non-custodial manner to utilize their lightning node infrastructure. We believe that BTCPay Server is the most robust solution for commerce on Bitcoin while maintaining the core Bitcoin ethos of permissionless, censorship-resistant payments.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/VoltageCaseStudy-2.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"choice-of-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#choice-of-btcpay-server"}},[e._v("#")]),e._v(" Choice of BTCPay Server")]),e._v(" "),t("p",[e._v("Nearly all other Bitcoin commerce solutions have some custodial KYC component. This is something that we wish to avoid at Voltage. With those services put aside, the competition for Bitcoin native commerce platforms that are open source is relatively slim. BTCPay Server’s core ethos and mission align perfectly with our own, and that made the choice to use BTCPay Server fairly easy. On top of that, the sheer amount of features and customizability of BTCPay Server is unmatched in the industry.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/VoltageCaseStudy-3.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"implementation"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#implementation"}},[e._v("#")]),e._v(" Implementation")]),e._v(" "),t("ul",[t("li",[e._v("Integrating BTCPay Server into Voltage was fairly easy. We use the standard open source tools, like the Docker Compose "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker",target:"_blank",rel:"noopener noreferrer"}},[e._v("repository"),t("OutboundLink")],1),e._v(". We use the "),t("a",{attrs:{href:"https://docs.btcpayserver.org/API/Greenfield/v1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("APIs"),t("OutboundLink")],1),e._v(" that come default with BTCPay Server to administer the server on behalf of our users. BTCPay Server comes with all the features and settings needed out of the box. It’s been simple and easy to use.")]),e._v(" "),t("li",[e._v("Challenges: At Voltage, we experience scale beyond the standard deployment of BTCPay Server. For those reasons, we had to be prepared. To best ensure our customer’s data, we switched out the default deployment of the Postgres database for our own Postgres installation which is highly available and takes frequent backups.")])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/VoltageCaseStudy-4.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"features-and-benefits"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#features-and-benefits"}},[e._v("#")]),e._v(" Features and Benefits")]),e._v(" "),t("p",[t("strong",[e._v("An improvement over the previous system")]),e._v(": BTCPay Server has been a part of Voltage since day one. It was deployed as the primary software to accept Bitcoin payments from Voltage’s first customers and has stayed with us ever since. Shortly after launch, BTCPay Server user accounts were offered as an additional service to Voltage users at a low cost and we still do to this day.")]),e._v(" "),t("h2",{attrs:{id:"results"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#results"}},[e._v("#")]),e._v(" Results")]),e._v(" "),t("ul",[t("li",[e._v("Outcomes: Simple BTC payment checkout for our customers + now all of our customers can spin up a BTCPay instance in minutes and deploy without technical know-how.")]),e._v(" "),t("li",[e._v("Data: As of October 2023 Voltage is doing 45,000+ transactions monthly.")]),e._v(" "),t("li",[e._v("User Feedback: We made a video series from some of our customers. You can watch those "),t("a",{attrs:{href:"https://www.youtube.com/watch?v=1W8FixsefHY",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(", and "),t("a",{attrs:{href:"https://www.youtube.com/watch?v=mL7mZ542Vhs&t=118s",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/VoltageCaseStudy-5.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"conclusion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#conclusion"}},[e._v("#")]),e._v(" Conclusion")]),e._v(" "),t("p",[t("strong",[e._v("Learnings")]),e._v(": The fastest and easiest way for us to accept payments is BTCPay Server. We also have found that customers love being able to spin up BTCPay quickly without having to learn the process of doing it themselves. It is a very popular product that we get new users for daily.")]),e._v(" "),t("p",[t("strong",[e._v("Future Prospects")]),e._v(": BTCPay will continue to be the bitcoin payment infra we use to accept bitcoin-denominated payment processing. We are also excited for updates that our customers can use and experience.")]),e._v(" "),t("p",[e._v("You can "),t("a",{attrs:{href:"https://btcpayserver.org/case-studies/voltage2023.pdf",target:"_blank",rel:"noopener noreferrer"}},[e._v("download a PDF of this case study on this link"),t("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/89.9bc4066a.js b/assets/js/89.b775c1c3.js similarity index 98% rename from assets/js/89.9bc4066a.js rename to assets/js/89.b775c1c3.js index bd2fd7c3..3cdd840b 100644 --- a/assets/js/89.9bc4066a.js +++ b/assets/js/89.b775c1c3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[89],{409:function(e,t,r){"use strict";r.r(t);var o=r(10),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("figure",[t("img",{attrs:{src:"/images/dg-btcpay-2-1024x310.png",alt:""}})]),e._v(" "),t("p",[e._v("I am proud to announce that "),t("a",{attrs:{href:"https://foundation.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay Foundation"),t("OutboundLink")],1),e._v(" have just received our third grant of 30 000 USD from "),t("strong",[e._v("Digital Garage Inc. (DG).")])]),e._v(" "),t("p",[e._v("I briefly announced the DG support in Riga during the Baltic Honeybadger conference. Funny enough, I learned of the agreement 10 minutes before going "),t("a",{attrs:{href:"https://youtu.be/2IpZWSWUIVE?t=33232",target:"_blank",rel:"noopener noreferrer"}},[e._v("on stage"),t("OutboundLink")],1),e._v(", which got our entire community in Riga quite excited.")]),e._v(" "),t("p",[e._v("This partnership touches me personally, as for those who still don't know, DG is the mother company of the company I am working for in Japan: "),t("a",{attrs:{href:"https://www.dglab.com/en/",target:"_blank",rel:"noopener noreferrer"}},[e._v("DG Lab"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("DG Lab provided me the much needed freedom, time and support to work on BTCPayServer. I even wrote the famous "),t("a",{attrs:{href:"https://twitter.com/NicolasDorier/status/898378514256207872",target:"_blank",rel:"noopener noreferrer"}},[e._v("tweet"),t("OutboundLink")],1),e._v(" that kicked off BTCPayServer while I was in our office.")]),e._v(" "),t("p",[e._v("Another project on which BTCPayServer depends for tracking bitcoin payments, "),t("a",{attrs:{href:"https://github.com/dgarage/NBXplorer",target:"_blank",rel:"noopener noreferrer"}},[e._v("NBXplorer"),t("OutboundLink")],1),e._v(", is a project that originated from DG Lab around 8 months before BTCPayServer was born. Actually, not only BTCPayServer, but "),t("a",{attrs:{href:"https://github.com/dgarage/NBXplorer",target:"_blank",rel:"noopener noreferrer"}},[e._v("NBXplorer"),t("OutboundLink")],1),e._v(", the UTXO tracker BTCPayServer is depending on, was originally a block explorer for a multi asset Elements mobile wallet that DG Lab team created for the BC² conference.")]),e._v(" "),t("p",[e._v("A fair (most) amount of code written for BTCPayServer has been written thanks to DG Lab. I could not be more happy that they not only continue to support the project, but double down on it.")]),e._v(" "),t("p",[e._v("DG is not only supporting BTCPay Server and myself, but also a whole team of Bitcoin contributors as well as advocating Bitcoin development in Japan. We are making (almost) yearly conference in Tokyo called BC² aimed to get more developers into Bitcoin. The next BC² will be held in Tokyo, and will include BTCPayServer and hack0 development. If you plan a trip to Tokyo during the first semester of 2020, stay tuned on that!")]),e._v(" "),t("p",[e._v("In the end, I am just happy that the structure around the project is improving and that everything grows organically. We've managed to partner up with businesses that truly believe in BTCPayServer and we're humbled by the opportunity to work on improving it every single day 💚.")]),e._v(" "),t("p",[e._v("Nicolas.")]),e._v(" "),t("p",[t("em",[e._v("If you're a business and would like to become a supporter of BTCPay Server Foundation and help us create an open-financial future for everyone, please get in touch via a "),t("a",{attrs:{href:"https://foundation.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("contact form on the foundation's website"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("p",[t("a",{attrs:{href:"https://foundation.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("SUPPORT THE FOUNDATION"),t("OutboundLink")],1)])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[89],{408:function(e,t,r){"use strict";r.r(t);var o=r(10),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("figure",[t("img",{attrs:{src:"/images/dg-btcpay-2-1024x310.png",alt:""}})]),e._v(" "),t("p",[e._v("I am proud to announce that "),t("a",{attrs:{href:"https://foundation.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay Foundation"),t("OutboundLink")],1),e._v(" have just received our third grant of 30 000 USD from "),t("strong",[e._v("Digital Garage Inc. (DG).")])]),e._v(" "),t("p",[e._v("I briefly announced the DG support in Riga during the Baltic Honeybadger conference. Funny enough, I learned of the agreement 10 minutes before going "),t("a",{attrs:{href:"https://youtu.be/2IpZWSWUIVE?t=33232",target:"_blank",rel:"noopener noreferrer"}},[e._v("on stage"),t("OutboundLink")],1),e._v(", which got our entire community in Riga quite excited.")]),e._v(" "),t("p",[e._v("This partnership touches me personally, as for those who still don't know, DG is the mother company of the company I am working for in Japan: "),t("a",{attrs:{href:"https://www.dglab.com/en/",target:"_blank",rel:"noopener noreferrer"}},[e._v("DG Lab"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("DG Lab provided me the much needed freedom, time and support to work on BTCPayServer. I even wrote the famous "),t("a",{attrs:{href:"https://twitter.com/NicolasDorier/status/898378514256207872",target:"_blank",rel:"noopener noreferrer"}},[e._v("tweet"),t("OutboundLink")],1),e._v(" that kicked off BTCPayServer while I was in our office.")]),e._v(" "),t("p",[e._v("Another project on which BTCPayServer depends for tracking bitcoin payments, "),t("a",{attrs:{href:"https://github.com/dgarage/NBXplorer",target:"_blank",rel:"noopener noreferrer"}},[e._v("NBXplorer"),t("OutboundLink")],1),e._v(", is a project that originated from DG Lab around 8 months before BTCPayServer was born. Actually, not only BTCPayServer, but "),t("a",{attrs:{href:"https://github.com/dgarage/NBXplorer",target:"_blank",rel:"noopener noreferrer"}},[e._v("NBXplorer"),t("OutboundLink")],1),e._v(", the UTXO tracker BTCPayServer is depending on, was originally a block explorer for a multi asset Elements mobile wallet that DG Lab team created for the BC² conference.")]),e._v(" "),t("p",[e._v("A fair (most) amount of code written for BTCPayServer has been written thanks to DG Lab. I could not be more happy that they not only continue to support the project, but double down on it.")]),e._v(" "),t("p",[e._v("DG is not only supporting BTCPay Server and myself, but also a whole team of Bitcoin contributors as well as advocating Bitcoin development in Japan. We are making (almost) yearly conference in Tokyo called BC² aimed to get more developers into Bitcoin. The next BC² will be held in Tokyo, and will include BTCPayServer and hack0 development. If you plan a trip to Tokyo during the first semester of 2020, stay tuned on that!")]),e._v(" "),t("p",[e._v("In the end, I am just happy that the structure around the project is improving and that everything grows organically. We've managed to partner up with businesses that truly believe in BTCPayServer and we're humbled by the opportunity to work on improving it every single day 💚.")]),e._v(" "),t("p",[e._v("Nicolas.")]),e._v(" "),t("p",[t("em",[e._v("If you're a business and would like to become a supporter of BTCPay Server Foundation and help us create an open-financial future for everyone, please get in touch via a "),t("a",{attrs:{href:"https://foundation.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("contact form on the foundation's website"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("p",[t("a",{attrs:{href:"https://foundation.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("SUPPORT THE FOUNDATION"),t("OutboundLink")],1)])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/94.c6a21754.js b/assets/js/94.b4792d92.js similarity index 99% rename from assets/js/94.c6a21754.js rename to assets/js/94.b4792d92.js index 8688ae1b..f0beb8f7 100644 --- a/assets/js/94.c6a21754.js +++ b/assets/js/94.b4792d92.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{414:function(e,t,r){"use strict";r.r(t);var o=r(10),a=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("You've probably heard of Patreon. An online membership service which enables content creators to be paid on a recurring basis by the communities that supports them. While Patreon works well for some people, it's notorious for its censorship of free speech. But like any centralized service, it has a single point of failure where administrators have the power to shut you down at any moment if they deem you a liability. The alternatives for Patreon is growing exponentially but there are still not many existing solutions that are truly censorship-resistant. Patreon also takes a significant chunk of content creators revenue.")]),e._v(" "),t("p",[e._v("LibrePatron is a self-hosted Patreon competitor where creators are owners of the entire platform. The software is free and open-source for anyone to use. LibrePatron uses "),t("a",{attrs:{href:"https://btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay Server"),t("OutboundLink")],1),e._v(" to receive Bitcoin payments on a recurring basis.")]),e._v(" "),t("p",[e._v("Deploy it, configure it to your needs and receive donations from your supporters. It's that simple. You can accept Bitcoin payments (Lightning Network or on-chain) combined with credit cards payments via Square which makes LibrePatron the only real censorship resistant solution independent of any third-parties.")]),e._v(" "),t("p",[e._v("In this article, I'd like to teach you how to launch your own Patreon-alternative on your BTCPay Server. Whether you're a content creator or an open-source developer looking for a way to fund your work on an open-source project, I hope you'll find it useful.")]),e._v(" "),t("p",[e._v("Before we begin, I would like to mention "),t("a",{attrs:{href:"https://blog.btcpayserver.org/interview-with-jeff-vandrew-jr/",target:"_blank",rel:"noopener noreferrer"}},[e._v("an earlier post"),t("OutboundLink")],1),e._v(" where I had an interview with the creator of LibrePatron. Feel free to check out that interview if you're interested in learning why Jeff decided to launch the project in the first place.")]),e._v(" "),t("h2",{attrs:{id:"requirements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#requirements"}},[e._v("#")]),e._v(" Requirements")]),e._v(" "),t("p",[e._v("Before we go down the rabbit hole there are just two things you'll need:")]),e._v(" "),t("ul",[t("li",[e._v("A self-hosted BTCPay Server")]),e._v(" "),t("li",[e._v("Domain name")])]),e._v(" "),t("p",[e._v("This guide assumes that you are familiar with BTCPay Server and that you have a self-hosted BTCPay. Librepatron does not work with any "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/thirdpartyhosting",target:"_blank",rel:"noopener noreferrer"}},[e._v("third-party hosts"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("If you're unfamiliar with BTCPay, it's highly recommended that you take a look at our official "),t("a",{attrs:{href:"https://btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("website"),t("OutboundLink")],1),e._v(" and our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation"),t("OutboundLink")],1),e._v(" to find the most appropriate "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/deployment",target:"_blank",rel:"noopener noreferrer"}},[e._v("way to deploy BTCPay"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("The easiest way to get started with BTCPay is by using "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/deployment",target:"_blank",rel:"noopener noreferrer"}},[e._v("1-click web deployment"),t("OutboundLink")],1),e._v(" which requires no technical knowledge whatsoever. Once you deploy your server, wait for it to sync, create an account, a store and configure your wallet as described in the "),t("a",{attrs:{href:"https://docs.btcpayserver.org/btcpay-basics/gettingstarted",target:"_blank",rel:"noopener noreferrer"}},[e._v("getting started guide."),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"configuring-dns"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuring-dns"}},[e._v("#")]),e._v(" Configuring DNS")]),e._v(" "),t("p",[e._v("LibrePatron runs on a domain of your choice on your BTCPay. In my case, that's librepatron.btcpay.ninja.")]),e._v(" "),t("p",[e._v("For a proper deployment of Librepatron you need to point the external IP of our virtual machine and point it to the domain or subdomain.")]),e._v(" "),t("p",[e._v("I've set up LibrePatron as the a-record domain.")]),e._v(" "),t("p",[t("em",[t("strong",[e._v("Adding an A-record domain name and pointing our BTCPay Virtual Machine IP address to the domain where LibrePatreon will appear:")])])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screen-Shot-2019-04-02-at-17.17.57.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"deploying-librepatron-on-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#deploying-librepatron-on-btcpay-server"}},[e._v("#")]),e._v(" Deploying LibrePatron on BTCPay Server")]),e._v(" "),t("p",[e._v("Now that we set up our BTCPay Server and configured our DNS, it's time to launch LibrePatron on our BTCPay instance.")]),e._v(" "),t("p",[e._v("Log in into your virtual machine via SSH. If you don't know how to do that you can "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr/patron/blob/master/SSH.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("follow this guide."),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("Add the following commands. Please make sure to replace example.com with a domain you configured in advance.")]),e._v(" "),t("div",{staticClass:"language-js line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-js"}},[t("code",[t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("script src"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"https://gist.github.com/pavlenex/9474997e9da9cc88ef2fbe3b494d8697.js"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("/")]),e._v("script"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("h2",{attrs:{id:"configuring-librepatron"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuring-librepatron"}},[e._v("#")]),e._v(" Configuring LibrePatron")]),e._v(" "),t("p",[e._v("When deploying LibrePatron on your BTCPay, you need to visit the domain name you configured earlier. In my example it's "),t("code",[e._v("librepatron.mydomain.com")]),e._v(". The first time you open a page you'll be prompted to register an administrator account.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/LibrePatreon-Admin-Setup.png",alt:""}})]),e._v(" "),t("p",[e._v("Next, sign in to your LibrePatron and go to Admin Panel.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/LibrePatreon-Admin-Setup2.png",alt:""}})]),e._v(" "),t("p",[e._v("There are plenty of settings that you can adjust in the admin panel. In this tutorial, we'll go through the essentials only but feel free to explore and adjust LibrePatron to your requirements and needs. The first thing we have to do is connect LibrePatron to our BTCPay Server. Enter the URL of your BTCPay (it will most likely be pre-filled) and click on the link "),t("code",[e._v("here")]),e._v(" at the bottom of the page. You'll be redirected to your BTCPay instance access token creation wizard.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Configuring-BTCPay-Server-LibrePatreon.png",alt:""}})]),e._v(" "),t("p",[e._v("Create the access token and copy the server-initiated pairing code. Paste the code into the "),t("code",[e._v("Pairing Code")]),e._v(" field and click submit. If your BTCPay and LibrePatron are successfully paired, you'll see a notification message.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Pairing-BTCPay.png",alt:""}})]),e._v(" "),t("p",[e._v("As you probably know, Bitcoin is a push-only protocol meaning that recurring payments are very hard to achieve without access to your wallet. LibrePatron uses e-mails to remind supporters that their subscription should be renewed. This means there's no way to automatically charge your supporters but at least you can remind them to make a payment to support you and access the content you produce.")]),e._v(" "),t("p",[e._v("It's very important that you properly set up your SMTP server so that emails can be sent automatically. Navigate to the "),t("code",[e._v("Email Setup")]),e._v(" page and enter your SMTP credentials. The author of LibrePatron recommends "),t("a",{attrs:{href:"https://reachmail.com/solutions/email-relay/",target:"_blank",rel:"noopener noreferrer"}},[e._v("easy-smtp"),t("OutboundLink")],1),e._v(" as an e-mail provider which gives you up to 10,000 free emails per month. Another alternative is "),t("a",{attrs:{href:"https://www.mailgun.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mailgun"),t("OutboundLink")],1),e._v(" which also gives you 10,000 emails free per month.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Configuring-E-mail-LibrePatron.png",alt:""}})]),e._v(" "),t("p",[e._v("Finally, the "),t("code",[e._v("price levels")]),e._v(" page allows you to set up your subscription levels. Configure them to your needs.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/LibrePatron-Pricing-Setup.png",alt:""}})]),e._v(" "),t("p",[e._v("And that's it, you now have a self-hosted Patreon alternative that allows you to receive Bitcoin and credit card payments. As mentioned, there are lots of options to play around with so start experimenting on how to make your LibrePatron page appealing to your supporters.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screen-Shot-2019-04-02-at-17.59.17-1024x519.png",alt:""}})]),e._v(" "),t("p",[e._v("If you have any questions, suggestions or if you're experiencing any problems with LibrePatron you can open an issue on their "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr/patron/issues",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(" or ask questions on their "),t("a",{attrs:{href:"https://librepatron.slack.com/join/shared_invite/enQtNTE0OTA3MjM2NDAyLTU4NDcyZGJiODBlYTA3OGMzZGQ2MjMxMTQxZWYzYmIzMDE4ZjM4OGQ0YjY3MjMzYjhiMTY0Yzc1ZDhhNzNjNjk",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),t("OutboundLink")],1),e._v(" group.")]),e._v(" "),t("p",[e._v("For those of you looking for a Kickstarter and crowdfunding alternative, make sure to check out the "),t("a",{attrs:{href:"https://www.youtube.com/watch?v=tFbfyneDj88&",target:"_blank",rel:"noopener noreferrer"}},[e._v("Crowdfunding app"),t("OutboundLink")],1),e._v(" that's built into BTCPay.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{415:function(e,t,r){"use strict";r.r(t);var o=r(10),a=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("You've probably heard of Patreon. An online membership service which enables content creators to be paid on a recurring basis by the communities that supports them. While Patreon works well for some people, it's notorious for its censorship of free speech. But like any centralized service, it has a single point of failure where administrators have the power to shut you down at any moment if they deem you a liability. The alternatives for Patreon is growing exponentially but there are still not many existing solutions that are truly censorship-resistant. Patreon also takes a significant chunk of content creators revenue.")]),e._v(" "),t("p",[e._v("LibrePatron is a self-hosted Patreon competitor where creators are owners of the entire platform. The software is free and open-source for anyone to use. LibrePatron uses "),t("a",{attrs:{href:"https://btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay Server"),t("OutboundLink")],1),e._v(" to receive Bitcoin payments on a recurring basis.")]),e._v(" "),t("p",[e._v("Deploy it, configure it to your needs and receive donations from your supporters. It's that simple. You can accept Bitcoin payments (Lightning Network or on-chain) combined with credit cards payments via Square which makes LibrePatron the only real censorship resistant solution independent of any third-parties.")]),e._v(" "),t("p",[e._v("In this article, I'd like to teach you how to launch your own Patreon-alternative on your BTCPay Server. Whether you're a content creator or an open-source developer looking for a way to fund your work on an open-source project, I hope you'll find it useful.")]),e._v(" "),t("p",[e._v("Before we begin, I would like to mention "),t("a",{attrs:{href:"https://blog.btcpayserver.org/interview-with-jeff-vandrew-jr/",target:"_blank",rel:"noopener noreferrer"}},[e._v("an earlier post"),t("OutboundLink")],1),e._v(" where I had an interview with the creator of LibrePatron. Feel free to check out that interview if you're interested in learning why Jeff decided to launch the project in the first place.")]),e._v(" "),t("h2",{attrs:{id:"requirements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#requirements"}},[e._v("#")]),e._v(" Requirements")]),e._v(" "),t("p",[e._v("Before we go down the rabbit hole there are just two things you'll need:")]),e._v(" "),t("ul",[t("li",[e._v("A self-hosted BTCPay Server")]),e._v(" "),t("li",[e._v("Domain name")])]),e._v(" "),t("p",[e._v("This guide assumes that you are familiar with BTCPay Server and that you have a self-hosted BTCPay. Librepatron does not work with any "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/thirdpartyhosting",target:"_blank",rel:"noopener noreferrer"}},[e._v("third-party hosts"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("If you're unfamiliar with BTCPay, it's highly recommended that you take a look at our official "),t("a",{attrs:{href:"https://btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("website"),t("OutboundLink")],1),e._v(" and our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("documentation"),t("OutboundLink")],1),e._v(" to find the most appropriate "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/deployment",target:"_blank",rel:"noopener noreferrer"}},[e._v("way to deploy BTCPay"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("The easiest way to get started with BTCPay is by using "),t("a",{attrs:{href:"https://docs.btcpayserver.org/deployment/deployment",target:"_blank",rel:"noopener noreferrer"}},[e._v("1-click web deployment"),t("OutboundLink")],1),e._v(" which requires no technical knowledge whatsoever. Once you deploy your server, wait for it to sync, create an account, a store and configure your wallet as described in the "),t("a",{attrs:{href:"https://docs.btcpayserver.org/btcpay-basics/gettingstarted",target:"_blank",rel:"noopener noreferrer"}},[e._v("getting started guide."),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"configuring-dns"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuring-dns"}},[e._v("#")]),e._v(" Configuring DNS")]),e._v(" "),t("p",[e._v("LibrePatron runs on a domain of your choice on your BTCPay. In my case, that's librepatron.btcpay.ninja.")]),e._v(" "),t("p",[e._v("For a proper deployment of Librepatron you need to point the external IP of our virtual machine and point it to the domain or subdomain.")]),e._v(" "),t("p",[e._v("I've set up LibrePatron as the a-record domain.")]),e._v(" "),t("p",[t("em",[t("strong",[e._v("Adding an A-record domain name and pointing our BTCPay Virtual Machine IP address to the domain where LibrePatreon will appear:")])])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screen-Shot-2019-04-02-at-17.17.57.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"deploying-librepatron-on-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#deploying-librepatron-on-btcpay-server"}},[e._v("#")]),e._v(" Deploying LibrePatron on BTCPay Server")]),e._v(" "),t("p",[e._v("Now that we set up our BTCPay Server and configured our DNS, it's time to launch LibrePatron on our BTCPay instance.")]),e._v(" "),t("p",[e._v("Log in into your virtual machine via SSH. If you don't know how to do that you can "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr/patron/blob/master/SSH.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("follow this guide."),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("Add the following commands. Please make sure to replace example.com with a domain you configured in advance.")]),e._v(" "),t("div",{staticClass:"language-js line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-js"}},[t("code",[t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("script src"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"https://gist.github.com/pavlenex/9474997e9da9cc88ef2fbe3b494d8697.js"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("/")]),e._v("script"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v("\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br")])]),t("h2",{attrs:{id:"configuring-librepatron"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuring-librepatron"}},[e._v("#")]),e._v(" Configuring LibrePatron")]),e._v(" "),t("p",[e._v("When deploying LibrePatron on your BTCPay, you need to visit the domain name you configured earlier. In my example it's "),t("code",[e._v("librepatron.mydomain.com")]),e._v(". The first time you open a page you'll be prompted to register an administrator account.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/LibrePatreon-Admin-Setup.png",alt:""}})]),e._v(" "),t("p",[e._v("Next, sign in to your LibrePatron and go to Admin Panel.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/LibrePatreon-Admin-Setup2.png",alt:""}})]),e._v(" "),t("p",[e._v("There are plenty of settings that you can adjust in the admin panel. In this tutorial, we'll go through the essentials only but feel free to explore and adjust LibrePatron to your requirements and needs. The first thing we have to do is connect LibrePatron to our BTCPay Server. Enter the URL of your BTCPay (it will most likely be pre-filled) and click on the link "),t("code",[e._v("here")]),e._v(" at the bottom of the page. You'll be redirected to your BTCPay instance access token creation wizard.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Configuring-BTCPay-Server-LibrePatreon.png",alt:""}})]),e._v(" "),t("p",[e._v("Create the access token and copy the server-initiated pairing code. Paste the code into the "),t("code",[e._v("Pairing Code")]),e._v(" field and click submit. If your BTCPay and LibrePatron are successfully paired, you'll see a notification message.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Pairing-BTCPay.png",alt:""}})]),e._v(" "),t("p",[e._v("As you probably know, Bitcoin is a push-only protocol meaning that recurring payments are very hard to achieve without access to your wallet. LibrePatron uses e-mails to remind supporters that their subscription should be renewed. This means there's no way to automatically charge your supporters but at least you can remind them to make a payment to support you and access the content you produce.")]),e._v(" "),t("p",[e._v("It's very important that you properly set up your SMTP server so that emails can be sent automatically. Navigate to the "),t("code",[e._v("Email Setup")]),e._v(" page and enter your SMTP credentials. The author of LibrePatron recommends "),t("a",{attrs:{href:"https://reachmail.com/solutions/email-relay/",target:"_blank",rel:"noopener noreferrer"}},[e._v("easy-smtp"),t("OutboundLink")],1),e._v(" as an e-mail provider which gives you up to 10,000 free emails per month. Another alternative is "),t("a",{attrs:{href:"https://www.mailgun.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mailgun"),t("OutboundLink")],1),e._v(" which also gives you 10,000 emails free per month.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Configuring-E-mail-LibrePatron.png",alt:""}})]),e._v(" "),t("p",[e._v("Finally, the "),t("code",[e._v("price levels")]),e._v(" page allows you to set up your subscription levels. Configure them to your needs.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/LibrePatron-Pricing-Setup.png",alt:""}})]),e._v(" "),t("p",[e._v("And that's it, you now have a self-hosted Patreon alternative that allows you to receive Bitcoin and credit card payments. As mentioned, there are lots of options to play around with so start experimenting on how to make your LibrePatron page appealing to your supporters.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screen-Shot-2019-04-02-at-17.59.17-1024x519.png",alt:""}})]),e._v(" "),t("p",[e._v("If you have any questions, suggestions or if you're experiencing any problems with LibrePatron you can open an issue on their "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr/patron/issues",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub"),t("OutboundLink")],1),e._v(" or ask questions on their "),t("a",{attrs:{href:"https://librepatron.slack.com/join/shared_invite/enQtNTE0OTA3MjM2NDAyLTU4NDcyZGJiODBlYTA3OGMzZGQ2MjMxMTQxZWYzYmIzMDE4ZjM4OGQ0YjY3MjMzYjhiMTY0Yzc1ZDhhNzNjNjk",target:"_blank",rel:"noopener noreferrer"}},[e._v("Slack"),t("OutboundLink")],1),e._v(" group.")]),e._v(" "),t("p",[e._v("For those of you looking for a Kickstarter and crowdfunding alternative, make sure to check out the "),t("a",{attrs:{href:"https://www.youtube.com/watch?v=tFbfyneDj88&",target:"_blank",rel:"noopener noreferrer"}},[e._v("Crowdfunding app"),t("OutboundLink")],1),e._v(" that's built into BTCPay.")])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/95.7c3af24b.js b/assets/js/95.584815bf.js similarity index 99% rename from assets/js/95.7c3af24b.js rename to assets/js/95.584815bf.js index 957ee931..285ad23a 100644 --- a/assets/js/95.7c3af24b.js +++ b/assets/js/95.584815bf.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{415:function(e,t,o){"use strict";o.r(t);var a=o(10),n=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("In this interview, we're joined by Mike Olthoff. His business, "),t("a",{attrs:{href:"https://coincards.ca/",target:"_blank",rel:"noopener noreferrer"}},[e._v("CoinCards"),t("OutboundLink")],1),e._v(" was the first company to implement and use BTCPay Server. They were also among the first few merchants to accept payments via the Lightning Network.")]),e._v(" "),t("p",[e._v("Mike helped a lot in the early days of BTCPay by providing priceless feedback. We can easily say that without Mike, "),t("a",{attrs:{href:"http://btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay"),t("OutboundLink")],1),e._v(" would never be what it is today.")]),e._v(" "),t("p",[e._v("Before we dive deep into the interview, I'd like to thank Mike for his contribution to the project and for helping other merchants in the community.")]),e._v(" "),t("h2",{attrs:{id:"who-is-mike-olthoff"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#who-is-mike-olthoff"}},[e._v("#")]),e._v(" Who is Mike Olthoff?")]),e._v(" "),t("p",[e._v("Mike Olthoff is a Canadian Bitcoin Entrepreneur from Vancouver, Canada. He has been involved in the local Bitcoin scene since 2013 and has run Coincards since 2014, helping thousands of bitcoiners turn cryptocurrencies into real-world uses.")]),e._v(" "),t("h2",{attrs:{id:"how-did-you-get-into-bitcoin"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-did-you-get-into-bitcoin"}},[e._v("#")]),e._v(" How did you get into Bitcoin?")]),e._v(" "),t("p",[e._v("I originally started learning about bitcoin in 2012. At the time, I was running a small web hosting company and many of my customers started asking for payments in Bitcoin. After looking into it, I found Bitpay (eww) and at the time I figured “If these guys will give me real money for coins, sure, new revenue streams”.")]),e._v(" "),t("p",[e._v("In 2013, I attended a small gathering in Vancouver, where a now longtime friend was speaking about Bitcoin and its potential impact on the world. I was completely enlightened within an hour and needed to know more, so I connected with the local scene and grew from there.")]),e._v(" "),t("h2",{attrs:{id:"what-is-coincards"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-is-coincards"}},[e._v("#")]),e._v(" What is Coincards?")]),e._v(" "),t("p",[e._v("Coincards is Canada’s “Digital Currency to Branded Currency exchange service.” Basically, we are a webshop that lists gift cards of hundreds of Canada’s top brands, Mobile Top-ups and more. Our mission is to spread the mainstream adoption of cryptocurrencies as a payment method by bridging the gap between merchants and consumers until merchants are willing and able to accept cryptocurrencies natively.")]),e._v(" "),t("p",[e._v("Coincards is one of the top go-to places in Canada for anyone who needs a quick swap of Bitcoin to real-world uses. Often we are able to issue gift cards within minutes, without intensive or intrusive KYC roadblocks. As more and more people come to rely on cryptocurrencies in everyday life, our service fills a much-needed gap when living on crypto.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screen-Shot-2019-03-05-at-11.03.52.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"what-are-the-struggles-of-being-a-cryptocurrency-business"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-struggles-of-being-a-cryptocurrency-business"}},[e._v("#")]),e._v(" What are the struggles of being a cryptocurrency business?")]),e._v(" "),t("p",[e._v("We have been around long enough that we have pretty much seen it all from banking issues to hard-forks, from “Everyone Loves Bitcoin” to “Bitcoin’s Dead Again” headlines. We rode out some massive price swings and price highs.")]),e._v(" "),t("p",[e._v("One of our biggest roadblocks is simply getting the word out there that we exist. With the ICO craze of 2018, we encountered a lot of hostility towards Bitcoin-based businesses in the advertising space. We have basically been banned from advertising on all the main channels: Google, Twitter, Facebook, and even Reddit.")]),e._v(" "),t("p",[e._v("The other main roadblock we see is that the “HODL” mentality is really starting to become entrenched into people’s minds during the bear markets. Everyone at our company believes that bitcoin should be the internet's money and that you should treat crypto like any other bank account: save some & spend what you need to. Unfortunately, the current culture has aggressively pushed the “HODL” narrative to the point where users are afraid to spend it.")]),e._v(" "),t("h2",{attrs:{id:"which-payment-providers-have-you-used-before-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#which-payment-providers-have-you-used-before-btcpay-server"}},[e._v("#")]),e._v(" Which payment providers have you used before BTCPay Server?")]),e._v(" "),t("p",[e._v("Originally we started with Bitpay in 2014, however, we operate on very low margins and we needed to look into something where we controlled our own keys and weren’t giving away a significant chunk of our profits to our payment processors.")]),e._v(" "),t("p",[e._v("With that, we switched to Mycelium gear. At the time this was really the only option for an open-source payment processor where you controlled your own keys. Unfortunately, Mycelium gear was a complete mess especially because they reused addresses so we would be spending most of our day manually applying payments to orders.")]),e._v(" "),t("p",[e._v("Finally, we discovered BTCPay.")]),e._v(" "),t("h2",{attrs:{id:"how-did-you-discover-btcpay-and-what-made-you-decide-to-switch"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-did-you-discover-btcpay-and-what-made-you-decide-to-switch"}},[e._v("#")]),e._v(" How did you discover BTCPay and what made you decide to switch?")]),e._v(" "),t("p",[e._v("Discovering BTCPay was a fluke I think, just a random chance encounter on Twitter by someone retweeting Nicolas’ hate towards Bitpay.")]),e._v(" "),t("p",[e._v("I remember joining the slack channel with maybe a total of ~40 people total almost no activity. This allowed me to ask Nicolas way too many questions but also be one of the first to guide what merchants would be looking for.")]),e._v(" "),t("p",[e._v("Nicolas was able to get a really good product up and running very quickly. At the same time, Mycelium gear decided they would be instituting a “post-pay” fee on all transactions. Since their server barely worked, we made the switch pretty quickly to BTCPay and never looked back.")]),e._v(" "),t("h2",{attrs:{id:"the-early-days-of-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-early-days-of-btcpay"}},[e._v("#")]),e._v(" The early days of BTCPay?")]),e._v(" "),t("p",[e._v("The early days were very much just “Can we have this feature?” and Nicolas building it into BTCPay. I think Coincards and Halong Mining were the first of the larger vendors who utilized BTCPay, so we were able to quickly push a lot of feedback to Nicolas on what was going wrong and why. He also was a star with fixing issues and most issues from the first few weeks of going live were fixed within a day.")]),e._v(" "),t("p",[e._v("For the most part, the core of BTCPay has stayed the same: A really amazing payment processor. BTCPay has had so many improvements over the last year it really turned into something that can be almost everything to everyone who needs payments processed.")]),e._v(" "),t("p",[e._v("I also love how big the community has grown. Typically, Slack was just myself and Nicolas, and maybe a few people who would join and leave but then it started to grow and now I can’t even keep up with all the amazing contributors. I love seeing open source projects like this grow so fast because so many people are using it in different ways!")]),e._v(" "),t("h2",{attrs:{id:"youre-your-own-payment-processor-does-that-help-your-business-save-money-what-are-the-disadvantages-of-using-a-self-hosted-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#youre-your-own-payment-processor-does-that-help-your-business-save-money-what-are-the-disadvantages-of-using-a-self-hosted-btcpay"}},[e._v("#")]),e._v(" You're your own payment processor. Does that help your business save money? What are the disadvantages of using a self-hosted BTCPay?")]),e._v(" "),t("p",[e._v("We love being able to host our payment solution on our own, it gives us complete control and saves us at least 1% on all transactions, something we very much need in our low margin industry.")]),e._v(" "),t("p",[e._v("Volatility is our biggest challenge. When you are your own payment processor, you are constantly holding funds and if you have FIAT requirements, you need a way of transferring funds to an exchange and selling those funds before the rates dip below what you effectively bought that BTC for.")]),e._v(" "),t("h2",{attrs:{id:"the-fiat-bridge-is-coming-soon-to-btcpay-but-you-developed-an-in-house-fiat-conversion-solution-can-you-explain-how-it-works"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-fiat-bridge-is-coming-soon-to-btcpay-but-you-developed-an-in-house-fiat-conversion-solution-can-you-explain-how-it-works"}},[e._v("#")]),e._v(" The fiat bridge is coming soon to BTCPay but you developed an in-house fiat conversion solution. Can you explain how it works?")]),e._v(" "),t("p",[e._v("As mentioned volatility is a huge risk, especially when you have low margins and swings that can effectively make you lose money within 10 minutes. To combat this, we needed instant fiat conversion.")]),e._v(" "),t("p",[e._v("Our own system is an in-house API connection to the leading Canadian exchanges. We hold a small balance on these exchanges and as orders come in, we simply sell the held BTC for fiat at the rate we just gave to our customer. This eliminates any volatility risk, but of course opens us up to lose on exchanges, if an exchange goes down. We usually limit our volumes on these exchanges and only replace coins as needed to that our loses when the exchanges disappear is minimal.")]),e._v(" "),t("p",[e._v("I’m excited to see BTCPay’s solution, as I think it might be useful to other merchants who want to do the same thing. Developing custom applications is expensive so for those merchants who are just starting out and need fiat this will be a lifesaver.")]),e._v(" "),t("h2",{attrs:{id:"what-kind-of-reaction-do-you-get-from-the-customers-when-they-see-youre-using-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-kind-of-reaction-do-you-get-from-the-customers-when-they-see-youre-using-btcpay"}},[e._v("#")]),e._v(" What kind of reaction do you get from the customers when they see you're using BTCPay?")]),e._v(" "),t("p",[e._v("One of the great things about BTCPay is we typically don’t need to hear feedback on it from customers, it just works. Our customers are used to the intuitive design of BTCPay and are able to pay without any issues almost 100% of the time.")]),e._v(" "),t("h2",{attrs:{id:"as-one-of-the-lightning-network-pioneer-merchants-describe-your-experience-with-the-off-chain-so-far"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#as-one-of-the-lightning-network-pioneer-merchants-describe-your-experience-with-the-off-chain-so-far"}},[e._v("#")]),e._v(" As one of the Lightning Network pioneer merchants, describe your experience with the off-chain so far?")]),e._v(" "),t("p",[e._v("We have actually had a lot of issues with our node running C-lightning lately so I cannot say that it’s quite there yet. We were indeed one of the first merchants to accept lightning, but adoption for payments simply hasn't taken took off for us yet. We ran a few months with a test product of $0.01, however, once we enabled real products we only see a couple of transaction a month on the lightning network.")]),e._v(" "),t("p",[e._v("We believe that the lightning network will get there one day, but it still has a long way to go before it's used in everyday transactions.")]),e._v(" "),t("p",[t("em",[t("strong",[e._v("CoinCards - Early Lightning Network days:")])])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/CoinCardsLightningNetwork.jpg",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"what-problem-does-lightning-solve-for-merchants"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-problem-does-lightning-solve-for-merchants"}},[e._v("#")]),e._v(" What problem does Lightning solve for merchants?")]),e._v(" "),t("p",[e._v("The main problem I see being solved is confirmation times. Right now, we must wait for at least 2 confirmations in our own processes to be considered “safe”. With the lightning network, we can see the transaction instantly, which allows us to deliver our products faster and risk-free.")]),e._v(" "),t("h2",{attrs:{id:"from-your-perspective-what-is-needed-for-merchants-who-currently-use-ln"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-your-perspective-what-is-needed-for-merchants-who-currently-use-ln"}},[e._v("#")]),e._v(" From your perspective, what is needed for merchants who currently use LN?")]),e._v(" "),t("p",[e._v("It would be nice to see exchanges adopt LN as an inbound funding method. I think it's important to have the same off ramps for LN as we do for on-chain transactions. That being said, I can see no one wants to be the “first” to risk a large sum of funds on what I would consider still in an experimental stage.")]),e._v(" "),t("h2",{attrs:{id:"what-tools-do-you-use-for-bookkeeping"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-tools-do-you-use-for-bookkeeping"}},[e._v("#")]),e._v(" What tools do you use for bookkeeping?")]),e._v(" "),t("p",[e._v("We actually use Quickbooks online for most of our day-to-day bookkeeping. We found that this was one of the few programs to actually offer BTC as a native currency. Unfortunately, they only offer 2 decimal places, so we have to convert all of our transactions to mBTC before entry but it works pretty well.")]),e._v(" "),t("h2",{attrs:{id:"what-piece-of-advice-would-you-give-to-someone-looking-to-start-a-bitcoin-business"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-piece-of-advice-would-you-give-to-someone-looking-to-start-a-bitcoin-business"}},[e._v("#")]),e._v(" What piece of advice would you give to someone looking to start a Bitcoin business?")]),e._v(" "),t("p",[e._v("Starting a bitcoin business is just the same as any other business really: find a niche that no one is serving or have a kickass product. With most cases, if you are selling a product, I would say don’t expect to survive on BTC transactions alone, at least not to start. Your volumes will likely be really low but stick to it and people will find you!")]),e._v(" "),t("h2",{attrs:{id:"whats-in-store-for-you-and-coincards-in-2019"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#whats-in-store-for-you-and-coincards-in-2019"}},[e._v("#")]),e._v(" What's in store for you and Coincards in 2019?")]),e._v(" "),t("p",[e._v("2019 is a year of “buidling” for us. We are working hard on getting as many relationships built with merchants as we can this year and ultimately expanding our selection. We are also working hard on our own backend to ensure we have efficiencies in place for the next bull run. Ultimately we are also looking at expanding past Canada and moving into new markets, solidifying the Coincards brand.")]),e._v(" "),t("h2",{attrs:{id:"is-there-anything-we-have-not-covered-that-you-d-like-readers-to-know"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#is-there-anything-we-have-not-covered-that-you-d-like-readers-to-know"}},[e._v("#")]),e._v(" Is there anything we have not covered that you’d like readers to know?")]),e._v(" "),t("p",[e._v("I’d like to urge merchants to keep a portion of their earning/profits in BTC and then start offering those profits as payment to suppliers. We really need to push adoption through use. Our company pays every supplier we possibly can in crypto when the opportunity shows itself. We have “Skin in the game”.")]),e._v(" "),t("p",[e._v("By using any of the merchants using BTCPay and buying their products, including at Coincards, you are fostering the crypto economy and helping us in our mission for mass merchant adoption.")]),e._v(" "),t("h2",{attrs:{id:"where-can-people-find-you"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#where-can-people-find-you"}},[e._v("#")]),e._v(" Where can people find you?")]),e._v(" "),t("ul",[t("li",[e._v("Personally: I can be found on twitter, "),t("a",{attrs:{href:"https://twitter.com/olthoff",target:"_blank",rel:"noopener noreferrer"}},[e._v("@olthoff"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("CoinCards Website: "),t("a",{attrs:{href:"https://coincards.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Coincards.com"),t("OutboundLink")],1),e._v(" | "),t("a",{attrs:{href:"https://coincards.ca",target:"_blank",rel:"noopener noreferrer"}},[e._v("Coincards.ca"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://twitter.com/CoinCards/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),t("OutboundLink")],1),e._v(" | "),t("a",{attrs:{href:"https://www.facebook.com/coincards",target:"_blank",rel:"noopener noreferrer"}},[e._v("Facebook"),t("OutboundLink")],1),e._v(" | "),t("a",{attrs:{href:"https://www.reddit.com/r/coincards/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reddit|"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://t.me/CoincardsOfficial",target:"_blank",rel:"noopener noreferrer"}},[e._v("Telegram"),t("OutboundLink")],1),e._v(" |")]),e._v(" "),t("li",[e._v("WhatsApp/Signal/SMS: 778-819-0480")])]),e._v(" "),t("p",[e._v("That was Mike's story. I hope you enjoyed it. Support businesses that foster true adoption. If you're in Canada and need gift-cards, make sure to check their website.")]),e._v(" "),t("p",[e._v("This is just the first in the series of stories of BTCPay people that we plan to publish regularly. If you'd like to help us tell your story next, join our "),t("a",{attrs:{href:"https://chat.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat"),t("OutboundLink")],1),e._v(" and let us know.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{414:function(e,t,o){"use strict";o.r(t);var a=o(10),n=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("p",[e._v("In this interview, we're joined by Mike Olthoff. His business, "),t("a",{attrs:{href:"https://coincards.ca/",target:"_blank",rel:"noopener noreferrer"}},[e._v("CoinCards"),t("OutboundLink")],1),e._v(" was the first company to implement and use BTCPay Server. They were also among the first few merchants to accept payments via the Lightning Network.")]),e._v(" "),t("p",[e._v("Mike helped a lot in the early days of BTCPay by providing priceless feedback. We can easily say that without Mike, "),t("a",{attrs:{href:"http://btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay"),t("OutboundLink")],1),e._v(" would never be what it is today.")]),e._v(" "),t("p",[e._v("Before we dive deep into the interview, I'd like to thank Mike for his contribution to the project and for helping other merchants in the community.")]),e._v(" "),t("h2",{attrs:{id:"who-is-mike-olthoff"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#who-is-mike-olthoff"}},[e._v("#")]),e._v(" Who is Mike Olthoff?")]),e._v(" "),t("p",[e._v("Mike Olthoff is a Canadian Bitcoin Entrepreneur from Vancouver, Canada. He has been involved in the local Bitcoin scene since 2013 and has run Coincards since 2014, helping thousands of bitcoiners turn cryptocurrencies into real-world uses.")]),e._v(" "),t("h2",{attrs:{id:"how-did-you-get-into-bitcoin"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-did-you-get-into-bitcoin"}},[e._v("#")]),e._v(" How did you get into Bitcoin?")]),e._v(" "),t("p",[e._v("I originally started learning about bitcoin in 2012. At the time, I was running a small web hosting company and many of my customers started asking for payments in Bitcoin. After looking into it, I found Bitpay (eww) and at the time I figured “If these guys will give me real money for coins, sure, new revenue streams”.")]),e._v(" "),t("p",[e._v("In 2013, I attended a small gathering in Vancouver, where a now longtime friend was speaking about Bitcoin and its potential impact on the world. I was completely enlightened within an hour and needed to know more, so I connected with the local scene and grew from there.")]),e._v(" "),t("h2",{attrs:{id:"what-is-coincards"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-is-coincards"}},[e._v("#")]),e._v(" What is Coincards?")]),e._v(" "),t("p",[e._v("Coincards is Canada’s “Digital Currency to Branded Currency exchange service.” Basically, we are a webshop that lists gift cards of hundreds of Canada’s top brands, Mobile Top-ups and more. Our mission is to spread the mainstream adoption of cryptocurrencies as a payment method by bridging the gap between merchants and consumers until merchants are willing and able to accept cryptocurrencies natively.")]),e._v(" "),t("p",[e._v("Coincards is one of the top go-to places in Canada for anyone who needs a quick swap of Bitcoin to real-world uses. Often we are able to issue gift cards within minutes, without intensive or intrusive KYC roadblocks. As more and more people come to rely on cryptocurrencies in everyday life, our service fills a much-needed gap when living on crypto.")]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/Screen-Shot-2019-03-05-at-11.03.52.png",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"what-are-the-struggles-of-being-a-cryptocurrency-business"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-are-the-struggles-of-being-a-cryptocurrency-business"}},[e._v("#")]),e._v(" What are the struggles of being a cryptocurrency business?")]),e._v(" "),t("p",[e._v("We have been around long enough that we have pretty much seen it all from banking issues to hard-forks, from “Everyone Loves Bitcoin” to “Bitcoin’s Dead Again” headlines. We rode out some massive price swings and price highs.")]),e._v(" "),t("p",[e._v("One of our biggest roadblocks is simply getting the word out there that we exist. With the ICO craze of 2018, we encountered a lot of hostility towards Bitcoin-based businesses in the advertising space. We have basically been banned from advertising on all the main channels: Google, Twitter, Facebook, and even Reddit.")]),e._v(" "),t("p",[e._v("The other main roadblock we see is that the “HODL” mentality is really starting to become entrenched into people’s minds during the bear markets. Everyone at our company believes that bitcoin should be the internet's money and that you should treat crypto like any other bank account: save some & spend what you need to. Unfortunately, the current culture has aggressively pushed the “HODL” narrative to the point where users are afraid to spend it.")]),e._v(" "),t("h2",{attrs:{id:"which-payment-providers-have-you-used-before-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#which-payment-providers-have-you-used-before-btcpay-server"}},[e._v("#")]),e._v(" Which payment providers have you used before BTCPay Server?")]),e._v(" "),t("p",[e._v("Originally we started with Bitpay in 2014, however, we operate on very low margins and we needed to look into something where we controlled our own keys and weren’t giving away a significant chunk of our profits to our payment processors.")]),e._v(" "),t("p",[e._v("With that, we switched to Mycelium gear. At the time this was really the only option for an open-source payment processor where you controlled your own keys. Unfortunately, Mycelium gear was a complete mess especially because they reused addresses so we would be spending most of our day manually applying payments to orders.")]),e._v(" "),t("p",[e._v("Finally, we discovered BTCPay.")]),e._v(" "),t("h2",{attrs:{id:"how-did-you-discover-btcpay-and-what-made-you-decide-to-switch"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-did-you-discover-btcpay-and-what-made-you-decide-to-switch"}},[e._v("#")]),e._v(" How did you discover BTCPay and what made you decide to switch?")]),e._v(" "),t("p",[e._v("Discovering BTCPay was a fluke I think, just a random chance encounter on Twitter by someone retweeting Nicolas’ hate towards Bitpay.")]),e._v(" "),t("p",[e._v("I remember joining the slack channel with maybe a total of ~40 people total almost no activity. This allowed me to ask Nicolas way too many questions but also be one of the first to guide what merchants would be looking for.")]),e._v(" "),t("p",[e._v("Nicolas was able to get a really good product up and running very quickly. At the same time, Mycelium gear decided they would be instituting a “post-pay” fee on all transactions. Since their server barely worked, we made the switch pretty quickly to BTCPay and never looked back.")]),e._v(" "),t("h2",{attrs:{id:"the-early-days-of-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-early-days-of-btcpay"}},[e._v("#")]),e._v(" The early days of BTCPay?")]),e._v(" "),t("p",[e._v("The early days were very much just “Can we have this feature?” and Nicolas building it into BTCPay. I think Coincards and Halong Mining were the first of the larger vendors who utilized BTCPay, so we were able to quickly push a lot of feedback to Nicolas on what was going wrong and why. He also was a star with fixing issues and most issues from the first few weeks of going live were fixed within a day.")]),e._v(" "),t("p",[e._v("For the most part, the core of BTCPay has stayed the same: A really amazing payment processor. BTCPay has had so many improvements over the last year it really turned into something that can be almost everything to everyone who needs payments processed.")]),e._v(" "),t("p",[e._v("I also love how big the community has grown. Typically, Slack was just myself and Nicolas, and maybe a few people who would join and leave but then it started to grow and now I can’t even keep up with all the amazing contributors. I love seeing open source projects like this grow so fast because so many people are using it in different ways!")]),e._v(" "),t("h2",{attrs:{id:"youre-your-own-payment-processor-does-that-help-your-business-save-money-what-are-the-disadvantages-of-using-a-self-hosted-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#youre-your-own-payment-processor-does-that-help-your-business-save-money-what-are-the-disadvantages-of-using-a-self-hosted-btcpay"}},[e._v("#")]),e._v(" You're your own payment processor. Does that help your business save money? What are the disadvantages of using a self-hosted BTCPay?")]),e._v(" "),t("p",[e._v("We love being able to host our payment solution on our own, it gives us complete control and saves us at least 1% on all transactions, something we very much need in our low margin industry.")]),e._v(" "),t("p",[e._v("Volatility is our biggest challenge. When you are your own payment processor, you are constantly holding funds and if you have FIAT requirements, you need a way of transferring funds to an exchange and selling those funds before the rates dip below what you effectively bought that BTC for.")]),e._v(" "),t("h2",{attrs:{id:"the-fiat-bridge-is-coming-soon-to-btcpay-but-you-developed-an-in-house-fiat-conversion-solution-can-you-explain-how-it-works"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#the-fiat-bridge-is-coming-soon-to-btcpay-but-you-developed-an-in-house-fiat-conversion-solution-can-you-explain-how-it-works"}},[e._v("#")]),e._v(" The fiat bridge is coming soon to BTCPay but you developed an in-house fiat conversion solution. Can you explain how it works?")]),e._v(" "),t("p",[e._v("As mentioned volatility is a huge risk, especially when you have low margins and swings that can effectively make you lose money within 10 minutes. To combat this, we needed instant fiat conversion.")]),e._v(" "),t("p",[e._v("Our own system is an in-house API connection to the leading Canadian exchanges. We hold a small balance on these exchanges and as orders come in, we simply sell the held BTC for fiat at the rate we just gave to our customer. This eliminates any volatility risk, but of course opens us up to lose on exchanges, if an exchange goes down. We usually limit our volumes on these exchanges and only replace coins as needed to that our loses when the exchanges disappear is minimal.")]),e._v(" "),t("p",[e._v("I’m excited to see BTCPay’s solution, as I think it might be useful to other merchants who want to do the same thing. Developing custom applications is expensive so for those merchants who are just starting out and need fiat this will be a lifesaver.")]),e._v(" "),t("h2",{attrs:{id:"what-kind-of-reaction-do-you-get-from-the-customers-when-they-see-youre-using-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-kind-of-reaction-do-you-get-from-the-customers-when-they-see-youre-using-btcpay"}},[e._v("#")]),e._v(" What kind of reaction do you get from the customers when they see you're using BTCPay?")]),e._v(" "),t("p",[e._v("One of the great things about BTCPay is we typically don’t need to hear feedback on it from customers, it just works. Our customers are used to the intuitive design of BTCPay and are able to pay without any issues almost 100% of the time.")]),e._v(" "),t("h2",{attrs:{id:"as-one-of-the-lightning-network-pioneer-merchants-describe-your-experience-with-the-off-chain-so-far"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#as-one-of-the-lightning-network-pioneer-merchants-describe-your-experience-with-the-off-chain-so-far"}},[e._v("#")]),e._v(" As one of the Lightning Network pioneer merchants, describe your experience with the off-chain so far?")]),e._v(" "),t("p",[e._v("We have actually had a lot of issues with our node running C-lightning lately so I cannot say that it’s quite there yet. We were indeed one of the first merchants to accept lightning, but adoption for payments simply hasn't taken took off for us yet. We ran a few months with a test product of $0.01, however, once we enabled real products we only see a couple of transaction a month on the lightning network.")]),e._v(" "),t("p",[e._v("We believe that the lightning network will get there one day, but it still has a long way to go before it's used in everyday transactions.")]),e._v(" "),t("p",[t("em",[t("strong",[e._v("CoinCards - Early Lightning Network days:")])])]),e._v(" "),t("figure",[t("img",{attrs:{src:"/images/CoinCardsLightningNetwork.jpg",alt:""}})]),e._v(" "),t("h2",{attrs:{id:"what-problem-does-lightning-solve-for-merchants"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-problem-does-lightning-solve-for-merchants"}},[e._v("#")]),e._v(" What problem does Lightning solve for merchants?")]),e._v(" "),t("p",[e._v("The main problem I see being solved is confirmation times. Right now, we must wait for at least 2 confirmations in our own processes to be considered “safe”. With the lightning network, we can see the transaction instantly, which allows us to deliver our products faster and risk-free.")]),e._v(" "),t("h2",{attrs:{id:"from-your-perspective-what-is-needed-for-merchants-who-currently-use-ln"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-your-perspective-what-is-needed-for-merchants-who-currently-use-ln"}},[e._v("#")]),e._v(" From your perspective, what is needed for merchants who currently use LN?")]),e._v(" "),t("p",[e._v("It would be nice to see exchanges adopt LN as an inbound funding method. I think it's important to have the same off ramps for LN as we do for on-chain transactions. That being said, I can see no one wants to be the “first” to risk a large sum of funds on what I would consider still in an experimental stage.")]),e._v(" "),t("h2",{attrs:{id:"what-tools-do-you-use-for-bookkeeping"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-tools-do-you-use-for-bookkeeping"}},[e._v("#")]),e._v(" What tools do you use for bookkeeping?")]),e._v(" "),t("p",[e._v("We actually use Quickbooks online for most of our day-to-day bookkeeping. We found that this was one of the few programs to actually offer BTC as a native currency. Unfortunately, they only offer 2 decimal places, so we have to convert all of our transactions to mBTC before entry but it works pretty well.")]),e._v(" "),t("h2",{attrs:{id:"what-piece-of-advice-would-you-give-to-someone-looking-to-start-a-bitcoin-business"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-piece-of-advice-would-you-give-to-someone-looking-to-start-a-bitcoin-business"}},[e._v("#")]),e._v(" What piece of advice would you give to someone looking to start a Bitcoin business?")]),e._v(" "),t("p",[e._v("Starting a bitcoin business is just the same as any other business really: find a niche that no one is serving or have a kickass product. With most cases, if you are selling a product, I would say don’t expect to survive on BTC transactions alone, at least not to start. Your volumes will likely be really low but stick to it and people will find you!")]),e._v(" "),t("h2",{attrs:{id:"whats-in-store-for-you-and-coincards-in-2019"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#whats-in-store-for-you-and-coincards-in-2019"}},[e._v("#")]),e._v(" What's in store for you and Coincards in 2019?")]),e._v(" "),t("p",[e._v("2019 is a year of “buidling” for us. We are working hard on getting as many relationships built with merchants as we can this year and ultimately expanding our selection. We are also working hard on our own backend to ensure we have efficiencies in place for the next bull run. Ultimately we are also looking at expanding past Canada and moving into new markets, solidifying the Coincards brand.")]),e._v(" "),t("h2",{attrs:{id:"is-there-anything-we-have-not-covered-that-you-d-like-readers-to-know"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#is-there-anything-we-have-not-covered-that-you-d-like-readers-to-know"}},[e._v("#")]),e._v(" Is there anything we have not covered that you’d like readers to know?")]),e._v(" "),t("p",[e._v("I’d like to urge merchants to keep a portion of their earning/profits in BTC and then start offering those profits as payment to suppliers. We really need to push adoption through use. Our company pays every supplier we possibly can in crypto when the opportunity shows itself. We have “Skin in the game”.")]),e._v(" "),t("p",[e._v("By using any of the merchants using BTCPay and buying their products, including at Coincards, you are fostering the crypto economy and helping us in our mission for mass merchant adoption.")]),e._v(" "),t("h2",{attrs:{id:"where-can-people-find-you"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#where-can-people-find-you"}},[e._v("#")]),e._v(" Where can people find you?")]),e._v(" "),t("ul",[t("li",[e._v("Personally: I can be found on twitter, "),t("a",{attrs:{href:"https://twitter.com/olthoff",target:"_blank",rel:"noopener noreferrer"}},[e._v("@olthoff"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("CoinCards Website: "),t("a",{attrs:{href:"https://coincards.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Coincards.com"),t("OutboundLink")],1),e._v(" | "),t("a",{attrs:{href:"https://coincards.ca",target:"_blank",rel:"noopener noreferrer"}},[e._v("Coincards.ca"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://twitter.com/CoinCards/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Twitter"),t("OutboundLink")],1),e._v(" | "),t("a",{attrs:{href:"https://www.facebook.com/coincards",target:"_blank",rel:"noopener noreferrer"}},[e._v("Facebook"),t("OutboundLink")],1),e._v(" | "),t("a",{attrs:{href:"https://www.reddit.com/r/coincards/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Reddit|"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://t.me/CoincardsOfficial",target:"_blank",rel:"noopener noreferrer"}},[e._v("Telegram"),t("OutboundLink")],1),e._v(" |")]),e._v(" "),t("li",[e._v("WhatsApp/Signal/SMS: 778-819-0480")])]),e._v(" "),t("p",[e._v("That was Mike's story. I hope you enjoyed it. Support businesses that foster true adoption. If you're in Canada and need gift-cards, make sure to check their website.")]),e._v(" "),t("p",[e._v("This is just the first in the series of stories of BTCPay people that we plan to publish regularly. If you'd like to help us tell your story next, join our "),t("a",{attrs:{href:"https://chat.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("community chat"),t("OutboundLink")],1),e._v(" and let us know.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/app.ee8d4fb2.js b/assets/js/app.62d2990b.js similarity index 62% rename from assets/js/app.ee8d4fb2.js rename to assets/js/app.62d2990b.js index 9092e523..dfb97898 100644 --- a/assets/js/app.ee8d4fb2.js +++ b/assets/js/app.62d2990b.js @@ -1,16 +1,16 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function t(t){for(var r,i,s=t[0],l=t[1],c=t[2],p=0,d=[];p
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var l=n.render(!t),c=l.querySelector(r.barSelector),u=r.speed,p=r.easing;return l.offsetWidth,i((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,function(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}(e,u,p)),1===e?(s(l,{transition:"none",opacity:1}),l.offsetWidth,setTimeout((function(){s(l,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&d(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&d(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var i=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(n){return n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()})),t[n]||(t[n]=function(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}(n))}function r(e,t,r){t=n(t),e.style[t]=r}return function(e,t){var n,a,o=arguments;if(2==o.length)for(n in t)void 0!==(a=t[n])&&t.hasOwnProperty(n)&&r(e,n,a);else r(e,o[1],o[2])}}();function l(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;l(n,t)||(e.className=r.substring(1))}function u(e,t){var n,r=p(e);l(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function d(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n})?r.call(t,n,t,e):r)||(e.exports=a)},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t){e.exports=function(e){return e}},function(e,t,n){"use strict";var r=n(0),a=n(54).f,o=n(13),i=n(105),s=n(35),l=n(70),c=n(132);e.exports=function(e,t){var n,u,p,d,h,f=e.target,v=e.global,g=e.stat;if(n=v?r:g?r[f]||s(f,{}):r[f]&&r[f].prototype)for(u in t){if(d=t[u],p=e.dontCallGetSet?(h=a(n,u))&&h.value:n[u],!c(v?u:f+(g?".":"#")+u,e.forced)&&void 0!==p){if(typeof d==typeof p)continue;l(d,p)}(e.sham||p&&p.sham)&&o(d,"sham",!0),i(n,u,d,e)}}},function(e,t,n){"use strict";var r=n(27),a=Function.prototype.call;e.exports=r?a.bind(a):function(){return a.apply(a,arguments)}},function(e,t,n){"use strict";var r=n(3);e.exports=!r((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},function(e,t,n){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var r=n(55),a=n(30);e.exports=function(e){return r(a(e))}},function(e,t,n){"use strict";var r=n(56),a=TypeError;e.exports=function(e){if(r(e))throw new a("Can't call method on "+e);return e}},function(e,t,n){"use strict";var r=n(0),a=n(1),o=function(e){return a(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e]):r[e]&&r[e][t]}},function(e,t,n){"use strict";var r=n(1),a=n(114),o=TypeError;e.exports=function(e){if(r(e))return e;throw new o(a(e)+" is not a function")}},function(e,t,n){"use strict";var r=n(0),a=n(64),o=n(8),i=n(66),s=n(61),l=n(60),c=r.Symbol,u=a("wks"),p=l?c.for||c:c&&c.withoutSetter||i;e.exports=function(e){return o(u,e)||(u[e]=s&&o(c,e)?c[e]:p("Symbol."+e)),u[e]}},function(e,t,n){"use strict";var r=n(65),a=n(0),o=n(35),i=e.exports=a["__core-js_shared__"]||o("__core-js_shared__",{});(i.versions||(i.versions=[])).push({version:"3.38.1",mode:r?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE",source:"https://github.com/zloirock/core-js"})},function(e,t,n){"use strict";var r=n(0),a=Object.defineProperty;e.exports=function(e,t){try{a(r,e,{value:t,configurable:!0,writable:!0})}catch(n){r[e]=t}return t}},function(e,t,n){"use strict";var r=n(30),a=Object;e.exports=function(e){return a(r(e))}},function(e,t,n){"use strict";var r=n(129);e.exports=function(e){return r(e.length)}},function(e,t,n){var r=n(157),a=n(11),o=Object.prototype,i=o.hasOwnProperty,s=o.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(e){return a(e)&&i.call(e,"callee")&&!s.call(e,"callee")};e.exports=l},function(e,t,n){var r=n(9)(n(7),"Map");e.exports=r},function(e,t,n){var r=n(176),a=n(183),o=n(185),i=n(186),s=n(187);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=9007199254740991}},function(e,t,n){var r=n(4),a=n(44),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!a(e))||(i.test(e)||!o.test(e)||null!=t&&e in Object(t))}},function(e,t,n){var r=n(12),a=n(11);e.exports=function(e){return"symbol"==typeof e||a(e)&&"[object Symbol]"==r(e)}},function(e,t,n){e.exports=function(){"use strict";var e=6e4,t=36e5,n="millisecond",r="second",a="minute",o="hour",i="day",s="week",l="month",c="quarter",u="year",p="date",d="Invalid Date",h=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,f=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,v={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},g=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},m={s:g,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),a=n%60;return(t<=0?"+":"-")+g(r,2,"0")+":"+g(a,2,"0")},m:function e(t,n){if(t.date()1)return e(i[0])}else{var s=t.name;b[s]=t,a=s}return!r&&a&&(y=a),a||!r&&y},_=function(e,t){if(w(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new T(n)},k=m;k.l=x,k.i=w,k.w=function(e,t){return _(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var T=function(){function v(e){this.$L=x(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[P]=!0}var g=v.prototype;return g.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(k.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(h);if(r){var a=r[2]-1||0,o=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)):new Date(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(t)}(e),this.init()},g.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},g.$utils=function(){return k},g.isValid=function(){return!(this.$d.toString()===d)},g.isSame=function(e,t){var n=_(e);return this.startOf(t)<=n&&n<=this.endOf(t)},g.isAfter=function(e,t){return _(e)-1&&e%1==0&&e79&&i<83||!o("reduce")},{reduce:function(e){var t=arguments.length;return a(this,e,t,t>1?arguments[1]:void 0)}})},function(e,t,n){"use strict";var r=n(5),a=n(26),o=n(111),i=n(28),s=n(29),l=n(57),c=n(8),u=n(67),p=Object.getOwnPropertyDescriptor;t.f=r?p:function(e,t){if(e=s(e),t=l(t),u)try{return p(e,t)}catch(e){}if(c(e,t))return i(!a(o.f,e,t),e[t])}},function(e,t,n){"use strict";var r=n(2),a=n(3),o=n(17),i=Object,s=r("".split);e.exports=a((function(){return!i("z").propertyIsEnumerable(0)}))?function(e){return"String"===o(e)?s(e,""):i(e)}:i},function(e,t,n){"use strict";e.exports=function(e){return null==e}},function(e,t,n){"use strict";var r=n(112),a=n(58);e.exports=function(e){var t=r(e,"string");return a(t)?t:t+""}},function(e,t,n){"use strict";var r=n(31),a=n(1),o=n(59),i=n(60),s=Object;e.exports=i?function(e){return"symbol"==typeof e}:function(e){var t=r("Symbol");return a(t)&&o(t.prototype,s(e))}},function(e,t,n){"use strict";var r=n(2);e.exports=r({}.isPrototypeOf)},function(e,t,n){"use strict";var r=n(61);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,n){"use strict";var r=n(62),a=n(3),o=n(0).String;e.exports=!!Object.getOwnPropertySymbols&&!a((function(){var e=Symbol("symbol detection");return!o(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},function(e,t,n){"use strict";var r,a,o=n(0),i=n(63),s=o.process,l=o.Deno,c=s&&s.versions||l&&l.version,u=c&&c.v8;u&&(a=(r=u.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!a&&i&&(!(r=i.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=i.match(/Chrome\/(\d+)/))&&(a=+r[1]),e.exports=a},function(e,t,n){"use strict";var r=n(0).navigator,a=r&&r.userAgent;e.exports=a?String(a):""},function(e,t,n){"use strict";var r=n(34);e.exports=function(e,t){return r[e]||(r[e]=t||{})}},function(e,t,n){"use strict";e.exports=!1},function(e,t,n){"use strict";var r=n(2),a=0,o=Math.random(),i=r(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+i(++a+o,36)}},function(e,t,n){"use strict";var r=n(5),a=n(3),o=n(116);e.exports=!r&&!a((function(){return 7!==Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var r=n(6),a=String,o=TypeError;e.exports=function(e){if(r(e))return e;throw new o(a(e)+" is not an object")}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var r=n(8),a=n(123),o=n(54),i=n(16);e.exports=function(e,t,n){for(var s=a(t),l=i.f,c=o.f,u=0;uu))return!1;var d=l.get(e),h=l.get(t);if(d&&h)return d==t&&h==e;var f=-1,v=!0,g=2&n?new r:void 0;for(l.set(e,t),l.set(t,e);++f
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var l=n.render(!t),c=l.querySelector(r.barSelector),u=r.speed,p=r.easing;return l.offsetWidth,i((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,function(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}(e,u,p)),1===e?(s(l,{transition:"none",opacity:1}),l.offsetWidth,setTimeout((function(){s(l,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&d(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&d(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var i=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(n){return n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()})),t[n]||(t[n]=function(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}(n))}function r(e,t,r){t=n(t),e.style[t]=r}return function(e,t){var n,a,o=arguments;if(2==o.length)for(n in t)void 0!==(a=t[n])&&t.hasOwnProperty(n)&&r(e,n,a);else r(e,o[1],o[2])}}();function l(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;l(n,t)||(e.className=r.substring(1))}function u(e,t){var n,r=p(e);l(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function d(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n})?r.call(t,n,t,e):r)||(e.exports=a)},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t){e.exports=function(e){return e}},function(e,t,n){"use strict";var r=n(0),a=n(54).f,o=n(13),i=n(105),s=n(35),l=n(70),c=n(132);e.exports=function(e,t){var n,u,p,d,h,f=e.target,v=e.global,g=e.stat;if(n=v?r:g?r[f]||s(f,{}):r[f]&&r[f].prototype)for(u in t){if(d=t[u],p=e.dontCallGetSet?(h=a(n,u))&&h.value:n[u],!c(v?u:f+(g?".":"#")+u,e.forced)&&void 0!==p){if(typeof d==typeof p)continue;l(d,p)}(e.sham||p&&p.sham)&&o(d,"sham",!0),i(n,u,d,e)}}},function(e,t,n){"use strict";var r=n(27),a=Function.prototype.call;e.exports=r?a.bind(a):function(){return a.apply(a,arguments)}},function(e,t,n){"use strict";var r=n(3);e.exports=!r((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},function(e,t,n){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var r=n(55),a=n(30);e.exports=function(e){return r(a(e))}},function(e,t,n){"use strict";var r=n(56),a=TypeError;e.exports=function(e){if(r(e))throw new a("Can't call method on "+e);return e}},function(e,t,n){"use strict";var r=n(0),a=n(1),o=function(e){return a(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?o(r[e]):r[e]&&r[e][t]}},function(e,t,n){"use strict";var r=n(1),a=n(114),o=TypeError;e.exports=function(e){if(r(e))return e;throw new o(a(e)+" is not a function")}},function(e,t,n){"use strict";var r=n(0),a=n(64),o=n(8),i=n(66),s=n(61),l=n(60),c=r.Symbol,u=a("wks"),p=l?c.for||c:c&&c.withoutSetter||i;e.exports=function(e){return o(u,e)||(u[e]=s&&o(c,e)?c[e]:p("Symbol."+e)),u[e]}},function(e,t,n){"use strict";var r=n(65),a=n(0),o=n(35),i=e.exports=a["__core-js_shared__"]||o("__core-js_shared__",{});(i.versions||(i.versions=[])).push({version:"3.38.1",mode:r?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE",source:"https://github.com/zloirock/core-js"})},function(e,t,n){"use strict";var r=n(0),a=Object.defineProperty;e.exports=function(e,t){try{a(r,e,{value:t,configurable:!0,writable:!0})}catch(n){r[e]=t}return t}},function(e,t,n){"use strict";var r=n(30),a=Object;e.exports=function(e){return a(r(e))}},function(e,t,n){"use strict";var r=n(129);e.exports=function(e){return r(e.length)}},function(e,t,n){var r=n(157),a=n(11),o=Object.prototype,i=o.hasOwnProperty,s=o.propertyIsEnumerable,l=r(function(){return arguments}())?r:function(e){return a(e)&&i.call(e,"callee")&&!s.call(e,"callee")};e.exports=l},function(e,t,n){var r=n(9)(n(7),"Map");e.exports=r},function(e,t,n){var r=n(176),a=n(183),o=n(185),i=n(186),s=n(187);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=9007199254740991}},function(e,t,n){var r=n(4),a=n(44),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!a(e))||(i.test(e)||!o.test(e)||null!=t&&e in Object(t))}},function(e,t,n){var r=n(12),a=n(11);e.exports=function(e){return"symbol"==typeof e||a(e)&&"[object Symbol]"==r(e)}},function(e,t,n){e.exports=function(){"use strict";var e=6e4,t=36e5,n="millisecond",r="second",a="minute",o="hour",i="day",s="week",l="month",c="quarter",u="year",p="date",d="Invalid Date",h=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,f=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,v={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},g=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},m={s:g,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),a=n%60;return(t<=0?"+":"-")+g(r,2,"0")+":"+g(a,2,"0")},m:function e(t,n){if(t.date()1)return e(i[0])}else{var s=t.name;b[s]=t,a=s}return!r&&a&&(y=a),a||!r&&y},_=function(e,t){if(x(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new T(n)},k=m;k.l=P,k.i=x,k.w=function(e,t){return _(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var T=function(){function v(e){this.$L=P(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[w]=!0}var g=v.prototype;return g.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(k.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(h);if(r){var a=r[2]-1||0,o=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)):new Date(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,o)}}return new Date(t)}(e),this.init()},g.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},g.$utils=function(){return k},g.isValid=function(){return!(this.$d.toString()===d)},g.isSame=function(e,t){var n=_(e);return this.startOf(t)<=n&&n<=this.endOf(t)},g.isAfter=function(e,t){return _(e)-1&&e%1==0&&e79&&i<83||!o("reduce")},{reduce:function(e){var t=arguments.length;return a(this,e,t,t>1?arguments[1]:void 0)}})},function(e,t,n){"use strict";var r=n(5),a=n(26),o=n(111),i=n(28),s=n(29),l=n(57),c=n(8),u=n(67),p=Object.getOwnPropertyDescriptor;t.f=r?p:function(e,t){if(e=s(e),t=l(t),u)try{return p(e,t)}catch(e){}if(c(e,t))return i(!a(o.f,e,t),e[t])}},function(e,t,n){"use strict";var r=n(2),a=n(3),o=n(17),i=Object,s=r("".split);e.exports=a((function(){return!i("z").propertyIsEnumerable(0)}))?function(e){return"String"===o(e)?s(e,""):i(e)}:i},function(e,t,n){"use strict";e.exports=function(e){return null==e}},function(e,t,n){"use strict";var r=n(112),a=n(58);e.exports=function(e){var t=r(e,"string");return a(t)?t:t+""}},function(e,t,n){"use strict";var r=n(31),a=n(1),o=n(59),i=n(60),s=Object;e.exports=i?function(e){return"symbol"==typeof e}:function(e){var t=r("Symbol");return a(t)&&o(t.prototype,s(e))}},function(e,t,n){"use strict";var r=n(2);e.exports=r({}.isPrototypeOf)},function(e,t,n){"use strict";var r=n(61);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,n){"use strict";var r=n(62),a=n(3),o=n(0).String;e.exports=!!Object.getOwnPropertySymbols&&!a((function(){var e=Symbol("symbol detection");return!o(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},function(e,t,n){"use strict";var r,a,o=n(0),i=n(63),s=o.process,l=o.Deno,c=s&&s.versions||l&&l.version,u=c&&c.v8;u&&(a=(r=u.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!a&&i&&(!(r=i.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=i.match(/Chrome\/(\d+)/))&&(a=+r[1]),e.exports=a},function(e,t,n){"use strict";var r=n(0).navigator,a=r&&r.userAgent;e.exports=a?String(a):""},function(e,t,n){"use strict";var r=n(34);e.exports=function(e,t){return r[e]||(r[e]=t||{})}},function(e,t,n){"use strict";e.exports=!1},function(e,t,n){"use strict";var r=n(2),a=0,o=Math.random(),i=r(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+i(++a+o,36)}},function(e,t,n){"use strict";var r=n(5),a=n(3),o=n(116);e.exports=!r&&!a((function(){return 7!==Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var r=n(6),a=String,o=TypeError;e.exports=function(e){if(r(e))return e;throw new o(a(e)+" is not an object")}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var r=n(8),a=n(123),o=n(54),i=n(16);e.exports=function(e,t,n){for(var s=a(t),l=i.f,c=o.f,u=0;uu))return!1;var d=l.get(e),h=l.get(t);if(d&&h)return d==t&&h==e;var f=-1,v=!0,g=2&n?new r:void 0;for(l.set(e,t),l.set(t,e);++f]/;e.exports=function(e){var t,n=""+e,a=r.exec(n);if(!a)return n;var o="",i=0,s=0;for(i=a.index;i=t||n<0||g&&e-c>=o}function w(){var e=h();if(P(e))return x(e);s=setTimeout(w,function(e){var n=t-(e-l);return g?d(n,o-(e-c)):n}(e))}function x(e){return s=void 0,m&&r?y(e):(r=a=void 0,i)}function _(){var e=h(),n=P(e);if(r=arguments,a=this,l=e,n){if(void 0===s)return b(l);if(g)return s=setTimeout(w,t),y(l)}return void 0===s&&(s=setTimeout(w,t)),i}return t=v(t)||0,f(n)&&(u=!!n.leading,o=(g="maxWait"in n)?p(v(n.maxWait)||0,t):o,m="trailing"in n?!!n.trailing:m),_.cancel=function(){void 0!==s&&clearTimeout(s),c=0,r=l=a=s=void 0},_.flush=function(){return void 0===s?i:x(h())},_}},function(e,t,n){function r(){var e;try{e=t.storage.debug}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e}(t=e.exports=n(245)).log=function(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},t.formatArgs=function(e){var n=this.useColors;if(e[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+e[0]+(n?"%c ":" ")+"+"+t.humanize(this.diff),!n)return;var r="color: "+this.color;e.splice(1,0,r,"color: inherit");var a=0,o=0;e[0].replace(/%[a-zA-Z%]/g,(function(e){"%%"!==e&&(a++,"%c"===e&&(o=a))})),e.splice(o,0,r)},t.save=function(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}},t.load=r,t.useColors=function(){if("undefined"!=typeof window&&window.process&&"renderer"===window.process.type)return!0;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(r())},function(e,t){e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},function(e,t,n){var r=n(160),a=n(210),o=n(24),i=n(4),s=n(219);e.exports=function(e){return"function"==typeof e?e:null==e?o:"object"==typeof e?i(e)?a(e[0],e[1]):r(e):s(e)}},function(e,t,n){var r=n(48),a=n(4);e.exports=function(e,t,n){var o=t(e);return a(e)?o:r(o,n(e))}},function(e,t,n){var r=n(197),a=n(99),o=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,s=i?function(e){return null==e?[]:(e=Object(e),r(i(e),(function(t){return o.call(e,t)})))}:a;e.exports=s},function(e,t){e.exports=function(){return[]}},function(e,t,n){var r=n(198),a=n(38),o=n(4),i=n(82),s=n(50),l=n(84),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),u=!n&&a(e),p=!n&&!u&&i(e),d=!n&&!u&&!p&&l(e),h=n||u||p||d,f=h?r(e.length,String):[],v=f.length;for(var g in e)!t&&!c.call(e,g)||h&&("length"==g||p&&("offset"==g||"parent"==g)||d&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||s(g,v))||f.push(g);return f}},function(e,t){var n=Object.prototype;e.exports=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||n)}},function(e,t){e.exports=function(e,t){return function(n){return e(t(n))}}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=Array(r);++nc;)a(r,n=t[c++])&&(~i(u,n)||l(u,n));return u}},function(e,t,n){"use strict";var r=n(29),a=n(127),o=n(37),i=function(e){return function(t,n,i){var s=r(t),l=o(s);if(0===l)return!e&&-1;var c,u=a(i,l);if(e&&n!=n){for(;l>u;)if((c=s[u++])!=c)return!0}else for(;l>u;u++)if((e||u in s)&&s[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:i(!0),indexOf:i(!1)}},function(e,t,n){"use strict";var r=n(71),a=Math.max,o=Math.min;e.exports=function(e,t){var n=r(e);return n<0?a(n+t,0):o(n,t)}},function(e,t,n){"use strict";var r=Math.ceil,a=Math.floor;e.exports=Math.trunc||function(e){var t=+e;return(t>0?a:r)(t)}},function(e,t,n){"use strict";var r=n(71),a=Math.min;e.exports=function(e){var t=r(e);return t>0?a(t,9007199254740991):0}},function(e,t,n){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";t.f=Object.getOwnPropertySymbols},function(e,t,n){"use strict";var r=n(3),a=n(1),o=/#|\.prototype\./,i=function(e,t){var n=l[s(e)];return n===u||n!==c&&(a(t)?r(t):!!t)},s=i.normalize=function(e){return String(e).replace(o,".").toLowerCase()},l=i.data={},c=i.NATIVE="N",u=i.POLYFILL="P";e.exports=i},function(e,t,n){"use strict";var r=n(32),a=n(36),o=n(55),i=n(37),s=TypeError,l="Reduce of empty array with no initial value",c=function(e){return function(t,n,c,u){var p=a(t),d=o(p),h=i(p);if(r(n),0===h&&c<2)throw new s(l);var f=e?h-1:0,v=e?-1:1;if(c<2)for(;;){if(f in d){u=d[f],f+=v;break}if(f+=v,e?f<0:h<=f)throw new s(l)}for(;e?f>=0:h>f;f+=v)f in d&&(u=n(u,d[f],f,p));return u}};e.exports={left:c(!1),right:c(!0)}},function(e,t,n){"use strict";var r=n(3);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){return 1},1)}))}},function(e,t,n){"use strict";var r=n(136);e.exports="NODE"===r},function(e,t,n){"use strict";var r=n(0),a=n(63),o=n(17),i=function(e){return a.slice(0,e.length)===e};e.exports=i("Bun/")?"BUN":i("Cloudflare-Workers")?"CLOUDFLARE":i("Deno/")?"DENO":i("Node.js/")?"NODE":r.Bun&&"string"==typeof Bun.version?"BUN":r.Deno&&"object"==typeof Deno.version?"DENO":"process"===o(r.process)?"NODE":r.window&&r.document?"BROWSER":"REST"},function(e,t,n){"use strict";var r=n(25),a=n(0),o=n(138),i=n(139),s=a.WebAssembly,l=7!==new Error("e",{cause:7}).cause,c=function(e,t){var n={};n[e]=i(e,t,l),r({global:!0,constructor:!0,arity:1,forced:l},n)},u=function(e,t){if(s&&s[e]){var n={};n[e]=i("WebAssembly."+e,t,l),r({target:"WebAssembly",stat:!0,constructor:!0,arity:1,forced:l},n)}};c("Error",(function(e){return function(t){return o(e,this,arguments)}})),c("EvalError",(function(e){return function(t){return o(e,this,arguments)}})),c("RangeError",(function(e){return function(t){return o(e,this,arguments)}})),c("ReferenceError",(function(e){return function(t){return o(e,this,arguments)}})),c("SyntaxError",(function(e){return function(t){return o(e,this,arguments)}})),c("TypeError",(function(e){return function(t){return o(e,this,arguments)}})),c("URIError",(function(e){return function(t){return o(e,this,arguments)}})),u("CompileError",(function(e){return function(t){return o(e,this,arguments)}})),u("LinkError",(function(e){return function(t){return o(e,this,arguments)}})),u("RuntimeError",(function(e){return function(t){return o(e,this,arguments)}}))},function(e,t,n){"use strict";var r=n(27),a=Function.prototype,o=a.apply,i=a.call;e.exports="object"==typeof Reflect&&Reflect.apply||(r?i.bind(o):function(){return i.apply(o,arguments)})},function(e,t,n){"use strict";var r=n(31),a=n(8),o=n(13),i=n(59),s=n(72),l=n(70),c=n(143),u=n(144),p=n(145),d=n(148),h=n(149),f=n(5),v=n(65);e.exports=function(e,t,n,g){var m=g?2:1,y=e.split("."),b=y[y.length-1],P=r.apply(null,y);if(P){var w=P.prototype;if(!v&&a(w,"cause")&&delete w.cause,!n)return P;var x=r("Error"),_=t((function(e,t){var n=p(g?t:e,void 0),r=g?new P(e):new P;return void 0!==n&&o(r,"message",n),h(r,_,r.stack,2),this&&i(w,this)&&u(r,this,_),arguments.length>m&&d(r,arguments[m]),r}));if(_.prototype=w,"Error"!==b?s?s(_,x):l(_,x,{name:!0}):f&&"stackTraceLimit"in P&&(c(_,P,"stackTraceLimit"),c(_,P,"prepareStackTrace")),l(_,P),!v)try{w.name!==b&&o(w,"name",b),w.constructor=_}catch(e){}return _}}},function(e,t,n){"use strict";var r=n(2),a=n(32);e.exports=function(e,t,n){try{return r(a(Object.getOwnPropertyDescriptor(e,t)[n]))}catch(e){}}},function(e,t,n){"use strict";var r=n(142),a=String,o=TypeError;e.exports=function(e){if(r(e))return e;throw new o("Can't set "+a(e)+" as a prototype")}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e){return r(e)||null===e}},function(e,t,n){"use strict";var r=n(16).f;e.exports=function(e,t,n){n in e||r(e,n,{configurable:!0,get:function(){return t[n]},set:function(e){t[n]=e}})}},function(e,t,n){"use strict";var r=n(1),a=n(6),o=n(72);e.exports=function(e,t,n){var i,s;return o&&r(i=t.constructor)&&i!==n&&a(s=i.prototype)&&s!==n.prototype&&o(e,s),e}},function(e,t,n){"use strict";var r=n(106);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:r(e)}},function(e,t,n){"use strict";var r=n(147),a=n(1),o=n(17),i=n(33)("toStringTag"),s=Object,l="Arguments"===o(function(){return arguments}());e.exports=r?o:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=s(e),i))?n:l?o(t):"Object"===(r=o(t))&&a(t.callee)?"Arguments":r}},function(e,t,n){"use strict";var r={};r[n(33)("toStringTag")]="z",e.exports="[object z]"===String(r)},function(e,t,n){"use strict";var r=n(6),a=n(13);e.exports=function(e,t){r(t)&&"cause"in t&&a(e,"cause",t.cause)}},function(e,t,n){"use strict";var r=n(13),a=n(150),o=n(151),i=Error.captureStackTrace;e.exports=function(e,t,n,s){o&&(i?i(e,t):r(e,"stack",a(n,s)))}},function(e,t,n){"use strict";var r=n(2),a=Error,o=r("".replace),i=String(new a("zxcasd").stack),s=/\n\s*at [^:]*:[^\n]*/,l=s.test(i);e.exports=function(e,t){if(l&&"string"==typeof e&&!a.prepareStackTrace)for(;t--;)e=o(e,s,"");return e}},function(e,t,n){"use strict";var r=n(3),a=n(28);e.exports=!r((function(){var e=new Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",a(1,7)),7!==e.stack)}))},function(e,t,n){"use strict";var r=n(5),a=n(153),o=TypeError,i=Object.getOwnPropertyDescriptor,s=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=s?function(e,t){if(a(e)&&!i(e,"length").writable)throw new o("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},function(e,t,n){"use strict";var r=n(17);e.exports=Array.isArray||function(e){return"Array"===r(e)}},function(e,t,n){"use strict";var r=TypeError;e.exports=function(e){if(e>9007199254740991)throw r("Maximum allowed index exceeded");return e}},function(e,t,n){var r=n(48),a=n(156);e.exports=function e(t,n,o,i,s){var l=-1,c=t.length;for(o||(o=a),s||(s=[]);++l0&&o(u)?n>1?e(u,n-1,o,i,s):r(s,u):i||(s[s.length]=u)}return s}},function(e,t,n){var r=n(14),a=n(38),o=n(4),i=r?r.isConcatSpreadable:void 0;e.exports=function(e){return o(e)||a(e)||!!(i&&e&&e[i])}},function(e,t,n){var r=n(12),a=n(11);e.exports=function(e){return a(e)&&"[object Arguments]"==r(e)}},function(e,t,n){var r=n(14),a=Object.prototype,o=a.hasOwnProperty,i=a.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(e){}var a=i.call(e);return r&&(t?e[s]=n:delete e[s]),a}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){var r=n(161),a=n(209),o=n(87);e.exports=function(e){var t=a(e);return 1==t.length&&t[0][2]?o(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},function(e,t,n){var r=n(74),a=n(77);e.exports=function(e,t,n,o){var i=n.length,s=i,l=!o;if(null==e)return!s;for(e=Object(e);i--;){var c=n[i];if(l&&c[2]?c[1]!==e[c[0]]:!(c[0]in e))return!1}for(;++i-1}},function(e,t,n){var r=n(19);e.exports=function(e,t){var n=this.__data__,a=r(n,e);return a<0?(++this.size,n.push([e,t])):n[a][1]=t,this}},function(e,t,n){var r=n(18);e.exports=function(){this.__data__=new r,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(18),a=n(39),o=n(40);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var i=n.__data__;if(!a||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(i)}return n.set(e,t),this.size=n.size,this}},function(e,t,n){var r=n(75),a=n(173),o=n(23),i=n(76),s=/^\[object .+?Constructor\]$/,l=Function.prototype,c=Object.prototype,u=l.toString,p=c.hasOwnProperty,d=RegExp("^"+u.call(p).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||a(e))&&(r(e)?d:s).test(i(e))}},function(e,t,n){var r,a=n(174),o=(r=/[^.]+$/.exec(a&&a.keys&&a.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!o&&o in e}},function(e,t,n){var r=n(7)["__core-js_shared__"];e.exports=r},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t,n){var r=n(177),a=n(18),o=n(39);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(o||a),string:new r}}},function(e,t,n){var r=n(178),a=n(179),o=n(180),i=n(181),s=n(182);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,n){var r=n(79),a=n(230),o=n(235),i=n(80),s=n(236),l=n(41);e.exports=function(e,t,n){var c=-1,u=a,p=e.length,d=!0,h=[],f=h;if(n)d=!1,u=o;else if(p>=200){var v=t?null:s(e);if(v)return l(v);d=!1,u=i,f=new r}else f=t?[]:h;e:for(;++c-1}},function(e,t,n){var r=n(232),a=n(233),o=n(234);e.exports=function(e,t,n){return t==t?o(e,t,n):r(e,a,n)}},function(e,t){e.exports=function(e,t,n,r){for(var a=e.length,o=n+(r?1:-1);r?o--:++o0)return function(e){if((e=String(e)).length>100)return;var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(!t)return;var i=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"days":case"day":case"d":return i*o;case"hours":case"hour":case"hrs":case"hr":case"h":return i*a;case"minutes":case"minute":case"mins":case"min":case"m":return i*r;case"seconds":case"second":case"secs":case"sec":case"s":return i*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}(e);if("number"===l&&!1===isNaN(e))return t.long?i(s=e,o,"day")||i(s,a,"hour")||i(s,r,"minute")||i(s,n,"second")||s+" ms":function(e){if(e>=o)return Math.round(e/o)+"d";if(e>=a)return Math.round(e/a)+"h";if(e>=r)return Math.round(e/r)+"m";if(e>=n)return Math.round(e/n)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},function(e,t,n){"use strict";n(89)},function(e,t,n){"use strict";n(90)},function(e,t,n){"use strict";n.r(t); + */var r=/["'&<>]/;e.exports=function(e){var t,n=""+e,a=r.exec(n);if(!a)return n;var o="",i=0,s=0;for(i=a.index;i=t||n<0||g&&e-c>=o}function x(){var e=h();if(w(e))return P(e);s=setTimeout(x,function(e){var n=t-(e-l);return g?d(n,o-(e-c)):n}(e))}function P(e){return s=void 0,m&&r?y(e):(r=a=void 0,i)}function _(){var e=h(),n=w(e);if(r=arguments,a=this,l=e,n){if(void 0===s)return b(l);if(g)return s=setTimeout(x,t),y(l)}return void 0===s&&(s=setTimeout(x,t)),i}return t=v(t)||0,f(n)&&(u=!!n.leading,o=(g="maxWait"in n)?p(v(n.maxWait)||0,t):o,m="trailing"in n?!!n.trailing:m),_.cancel=function(){void 0!==s&&clearTimeout(s),c=0,r=l=a=s=void 0},_.flush=function(){return void 0===s?i:P(h())},_}},function(e,t,n){function r(){var e;try{e=t.storage.debug}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e}(t=e.exports=n(245)).log=function(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},t.formatArgs=function(e){var n=this.useColors;if(e[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+e[0]+(n?"%c ":" ")+"+"+t.humanize(this.diff),!n)return;var r="color: "+this.color;e.splice(1,0,r,"color: inherit");var a=0,o=0;e[0].replace(/%[a-zA-Z%]/g,(function(e){"%%"!==e&&(a++,"%c"===e&&(o=a))})),e.splice(o,0,r)},t.save=function(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}},t.load=r,t.useColors=function(){if("undefined"!=typeof window&&window.process&&"renderer"===window.process.type)return!0;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(r())},function(e,t){e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},function(e,t,n){var r=n(160),a=n(210),o=n(24),i=n(4),s=n(219);e.exports=function(e){return"function"==typeof e?e:null==e?o:"object"==typeof e?i(e)?a(e[0],e[1]):r(e):s(e)}},function(e,t,n){var r=n(48),a=n(4);e.exports=function(e,t,n){var o=t(e);return a(e)?o:r(o,n(e))}},function(e,t,n){var r=n(197),a=n(99),o=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,s=i?function(e){return null==e?[]:(e=Object(e),r(i(e),(function(t){return o.call(e,t)})))}:a;e.exports=s},function(e,t){e.exports=function(){return[]}},function(e,t,n){var r=n(198),a=n(38),o=n(4),i=n(82),s=n(50),l=n(84),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),u=!n&&a(e),p=!n&&!u&&i(e),d=!n&&!u&&!p&&l(e),h=n||u||p||d,f=h?r(e.length,String):[],v=f.length;for(var g in e)!t&&!c.call(e,g)||h&&("length"==g||p&&("offset"==g||"parent"==g)||d&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||s(g,v))||f.push(g);return f}},function(e,t){var n=Object.prototype;e.exports=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||n)}},function(e,t){e.exports=function(e,t){return function(n){return e(t(n))}}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=Array(r);++nc;)a(r,n=t[c++])&&(~i(u,n)||l(u,n));return u}},function(e,t,n){"use strict";var r=n(29),a=n(127),o=n(37),i=function(e){return function(t,n,i){var s=r(t),l=o(s);if(0===l)return!e&&-1;var c,u=a(i,l);if(e&&n!=n){for(;l>u;)if((c=s[u++])!=c)return!0}else for(;l>u;u++)if((e||u in s)&&s[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:i(!0),indexOf:i(!1)}},function(e,t,n){"use strict";var r=n(71),a=Math.max,o=Math.min;e.exports=function(e,t){var n=r(e);return n<0?a(n+t,0):o(n,t)}},function(e,t,n){"use strict";var r=Math.ceil,a=Math.floor;e.exports=Math.trunc||function(e){var t=+e;return(t>0?a:r)(t)}},function(e,t,n){"use strict";var r=n(71),a=Math.min;e.exports=function(e){var t=r(e);return t>0?a(t,9007199254740991):0}},function(e,t,n){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";t.f=Object.getOwnPropertySymbols},function(e,t,n){"use strict";var r=n(3),a=n(1),o=/#|\.prototype\./,i=function(e,t){var n=l[s(e)];return n===u||n!==c&&(a(t)?r(t):!!t)},s=i.normalize=function(e){return String(e).replace(o,".").toLowerCase()},l=i.data={},c=i.NATIVE="N",u=i.POLYFILL="P";e.exports=i},function(e,t,n){"use strict";var r=n(32),a=n(36),o=n(55),i=n(37),s=TypeError,l="Reduce of empty array with no initial value",c=function(e){return function(t,n,c,u){var p=a(t),d=o(p),h=i(p);if(r(n),0===h&&c<2)throw new s(l);var f=e?h-1:0,v=e?-1:1;if(c<2)for(;;){if(f in d){u=d[f],f+=v;break}if(f+=v,e?f<0:h<=f)throw new s(l)}for(;e?f>=0:h>f;f+=v)f in d&&(u=n(u,d[f],f,p));return u}};e.exports={left:c(!1),right:c(!0)}},function(e,t,n){"use strict";var r=n(3);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){return 1},1)}))}},function(e,t,n){"use strict";var r=n(136);e.exports="NODE"===r},function(e,t,n){"use strict";var r=n(0),a=n(63),o=n(17),i=function(e){return a.slice(0,e.length)===e};e.exports=i("Bun/")?"BUN":i("Cloudflare-Workers")?"CLOUDFLARE":i("Deno/")?"DENO":i("Node.js/")?"NODE":r.Bun&&"string"==typeof Bun.version?"BUN":r.Deno&&"object"==typeof Deno.version?"DENO":"process"===o(r.process)?"NODE":r.window&&r.document?"BROWSER":"REST"},function(e,t,n){"use strict";var r=n(25),a=n(0),o=n(138),i=n(139),s=a.WebAssembly,l=7!==new Error("e",{cause:7}).cause,c=function(e,t){var n={};n[e]=i(e,t,l),r({global:!0,constructor:!0,arity:1,forced:l},n)},u=function(e,t){if(s&&s[e]){var n={};n[e]=i("WebAssembly."+e,t,l),r({target:"WebAssembly",stat:!0,constructor:!0,arity:1,forced:l},n)}};c("Error",(function(e){return function(t){return o(e,this,arguments)}})),c("EvalError",(function(e){return function(t){return o(e,this,arguments)}})),c("RangeError",(function(e){return function(t){return o(e,this,arguments)}})),c("ReferenceError",(function(e){return function(t){return o(e,this,arguments)}})),c("SyntaxError",(function(e){return function(t){return o(e,this,arguments)}})),c("TypeError",(function(e){return function(t){return o(e,this,arguments)}})),c("URIError",(function(e){return function(t){return o(e,this,arguments)}})),u("CompileError",(function(e){return function(t){return o(e,this,arguments)}})),u("LinkError",(function(e){return function(t){return o(e,this,arguments)}})),u("RuntimeError",(function(e){return function(t){return o(e,this,arguments)}}))},function(e,t,n){"use strict";var r=n(27),a=Function.prototype,o=a.apply,i=a.call;e.exports="object"==typeof Reflect&&Reflect.apply||(r?i.bind(o):function(){return i.apply(o,arguments)})},function(e,t,n){"use strict";var r=n(31),a=n(8),o=n(13),i=n(59),s=n(72),l=n(70),c=n(143),u=n(144),p=n(145),d=n(148),h=n(149),f=n(5),v=n(65);e.exports=function(e,t,n,g){var m=g?2:1,y=e.split("."),b=y[y.length-1],w=r.apply(null,y);if(w){var x=w.prototype;if(!v&&a(x,"cause")&&delete x.cause,!n)return w;var P=r("Error"),_=t((function(e,t){var n=p(g?t:e,void 0),r=g?new w(e):new w;return void 0!==n&&o(r,"message",n),h(r,_,r.stack,2),this&&i(x,this)&&u(r,this,_),arguments.length>m&&d(r,arguments[m]),r}));if(_.prototype=x,"Error"!==b?s?s(_,P):l(_,P,{name:!0}):f&&"stackTraceLimit"in w&&(c(_,w,"stackTraceLimit"),c(_,w,"prepareStackTrace")),l(_,w),!v)try{x.name!==b&&o(x,"name",b),x.constructor=_}catch(e){}return _}}},function(e,t,n){"use strict";var r=n(2),a=n(32);e.exports=function(e,t,n){try{return r(a(Object.getOwnPropertyDescriptor(e,t)[n]))}catch(e){}}},function(e,t,n){"use strict";var r=n(142),a=String,o=TypeError;e.exports=function(e){if(r(e))return e;throw new o("Can't set "+a(e)+" as a prototype")}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e){return r(e)||null===e}},function(e,t,n){"use strict";var r=n(16).f;e.exports=function(e,t,n){n in e||r(e,n,{configurable:!0,get:function(){return t[n]},set:function(e){t[n]=e}})}},function(e,t,n){"use strict";var r=n(1),a=n(6),o=n(72);e.exports=function(e,t,n){var i,s;return o&&r(i=t.constructor)&&i!==n&&a(s=i.prototype)&&s!==n.prototype&&o(e,s),e}},function(e,t,n){"use strict";var r=n(106);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:r(e)}},function(e,t,n){"use strict";var r=n(147),a=n(1),o=n(17),i=n(33)("toStringTag"),s=Object,l="Arguments"===o(function(){return arguments}());e.exports=r?o:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=s(e),i))?n:l?o(t):"Object"===(r=o(t))&&a(t.callee)?"Arguments":r}},function(e,t,n){"use strict";var r={};r[n(33)("toStringTag")]="z",e.exports="[object z]"===String(r)},function(e,t,n){"use strict";var r=n(6),a=n(13);e.exports=function(e,t){r(t)&&"cause"in t&&a(e,"cause",t.cause)}},function(e,t,n){"use strict";var r=n(13),a=n(150),o=n(151),i=Error.captureStackTrace;e.exports=function(e,t,n,s){o&&(i?i(e,t):r(e,"stack",a(n,s)))}},function(e,t,n){"use strict";var r=n(2),a=Error,o=r("".replace),i=String(new a("zxcasd").stack),s=/\n\s*at [^:]*:[^\n]*/,l=s.test(i);e.exports=function(e,t){if(l&&"string"==typeof e&&!a.prepareStackTrace)for(;t--;)e=o(e,s,"");return e}},function(e,t,n){"use strict";var r=n(3),a=n(28);e.exports=!r((function(){var e=new Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",a(1,7)),7!==e.stack)}))},function(e,t,n){"use strict";var r=n(5),a=n(153),o=TypeError,i=Object.getOwnPropertyDescriptor,s=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=s?function(e,t){if(a(e)&&!i(e,"length").writable)throw new o("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},function(e,t,n){"use strict";var r=n(17);e.exports=Array.isArray||function(e){return"Array"===r(e)}},function(e,t,n){"use strict";var r=TypeError;e.exports=function(e){if(e>9007199254740991)throw r("Maximum allowed index exceeded");return e}},function(e,t,n){var r=n(48),a=n(156);e.exports=function e(t,n,o,i,s){var l=-1,c=t.length;for(o||(o=a),s||(s=[]);++l0&&o(u)?n>1?e(u,n-1,o,i,s):r(s,u):i||(s[s.length]=u)}return s}},function(e,t,n){var r=n(14),a=n(38),o=n(4),i=r?r.isConcatSpreadable:void 0;e.exports=function(e){return o(e)||a(e)||!!(i&&e&&e[i])}},function(e,t,n){var r=n(12),a=n(11);e.exports=function(e){return a(e)&&"[object Arguments]"==r(e)}},function(e,t,n){var r=n(14),a=Object.prototype,o=a.hasOwnProperty,i=a.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(e){}var a=i.call(e);return r&&(t?e[s]=n:delete e[s]),a}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){var r=n(161),a=n(209),o=n(87);e.exports=function(e){var t=a(e);return 1==t.length&&t[0][2]?o(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},function(e,t,n){var r=n(74),a=n(77);e.exports=function(e,t,n,o){var i=n.length,s=i,l=!o;if(null==e)return!s;for(e=Object(e);i--;){var c=n[i];if(l&&c[2]?c[1]!==e[c[0]]:!(c[0]in e))return!1}for(;++i-1}},function(e,t,n){var r=n(19);e.exports=function(e,t){var n=this.__data__,a=r(n,e);return a<0?(++this.size,n.push([e,t])):n[a][1]=t,this}},function(e,t,n){var r=n(18);e.exports=function(){this.__data__=new r,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(18),a=n(39),o=n(40);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var i=n.__data__;if(!a||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(i)}return n.set(e,t),this.size=n.size,this}},function(e,t,n){var r=n(75),a=n(173),o=n(23),i=n(76),s=/^\[object .+?Constructor\]$/,l=Function.prototype,c=Object.prototype,u=l.toString,p=c.hasOwnProperty,d=RegExp("^"+u.call(p).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||a(e))&&(r(e)?d:s).test(i(e))}},function(e,t,n){var r,a=n(174),o=(r=/[^.]+$/.exec(a&&a.keys&&a.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!o&&o in e}},function(e,t,n){var r=n(7)["__core-js_shared__"];e.exports=r},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t,n){var r=n(177),a=n(18),o=n(39);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(o||a),string:new r}}},function(e,t,n){var r=n(178),a=n(179),o=n(180),i=n(181),s=n(182);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,n){var r=n(79),a=n(230),o=n(235),i=n(80),s=n(236),l=n(41);e.exports=function(e,t,n){var c=-1,u=a,p=e.length,d=!0,h=[],f=h;if(n)d=!1,u=o;else if(p>=200){var v=t?null:s(e);if(v)return l(v);d=!1,u=i,f=new r}else f=t?[]:h;e:for(;++c-1}},function(e,t,n){var r=n(232),a=n(233),o=n(234);e.exports=function(e,t,n){return t==t?o(e,t,n):r(e,a,n)}},function(e,t){e.exports=function(e,t,n,r){for(var a=e.length,o=n+(r?1:-1);r?o--:++o0)return function(e){if((e=String(e)).length>100)return;var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(!t)return;var i=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"days":case"day":case"d":return i*o;case"hours":case"hour":case"hrs":case"hr":case"h":return i*a;case"minutes":case"minute":case"mins":case"min":case"m":return i*r;case"seconds":case"second":case"secs":case"sec":case"s":return i*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}(e);if("number"===l&&!1===isNaN(e))return t.long?i(s=e,o,"day")||i(s,a,"hour")||i(s,r,"minute")||i(s,n,"second")||s+" ms":function(e){if(e>=o)return Math.round(e/o)+"d";if(e>=a)return Math.round(e/a)+"h";if(e>=r)return Math.round(e/r)+"m";if(e>=n)return Math.round(e/n)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},function(e,t,n){"use strict";n(89)},function(e,t,n){"use strict";n(90)},function(e,t,n){"use strict";n.r(t); /*! * Vue.js v2.7.16 * (c) 2014-2023 Evan You * Released under the MIT License. */ -var r=Object.freeze({}),a=Array.isArray;function o(e){return null==e}function i(e){return null!=e}function s(e){return!0===e}function l(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function c(e){return"function"==typeof e}function u(e){return null!==e&&"object"==typeof e}var p=Object.prototype.toString;function d(e){return"[object Object]"===p.call(e)}function h(e){return"[object RegExp]"===p.call(e)}function f(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function v(e){return i(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function g(e){return null==e?"":Array.isArray(e)||d(e)&&e.toString===p?JSON.stringify(e,m,2):String(e)}function m(e,t){return t&&t.__v_isRef?t.value:t}function y(e){var t=parseFloat(e);return isNaN(t)?e:t}function b(e,t){for(var n=Object.create(null),r=e.split(","),a=0;a-1)return e.splice(r,1)}}var x=Object.prototype.hasOwnProperty;function _(e,t){return x.call(e,t)}function k(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var T=/-(\w)/g,C=k((function(e){return e.replace(T,(function(e,t){return t?t.toUpperCase():""}))})),S=k((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})),E=/\B([A-Z])/g,O=k((function(e){return e.replace(E,"-$1").toLowerCase()}));var $=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function B(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function j(e,t){for(var n in t)e[n]=t[n];return e}function A(e){for(var t={},n=0;n0,Q=Y&&Y.indexOf("edge/")>0;Y&&Y.indexOf("android");var ee=Y&&/iphone|ipad|ipod|ios/.test(Y);Y&&/chrome\/\d+/.test(Y),Y&&/phantomjs/.test(Y);var te,ne=Y&&Y.match(/firefox\/(\d+)/),re={}.watch,ae=!1;if(G)try{var oe={};Object.defineProperty(oe,"passive",{get:function(){ae=!0}}),window.addEventListener("test-passive",null,oe)}catch(e){}var ie=function(){return void 0===te&&(te=!G&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),te},se=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function le(e){return"function"==typeof e&&/native code/.test(e.toString())}var ce,ue="undefined"!=typeof Symbol&&le(Symbol)&&"undefined"!=typeof Reflect&&le(Reflect.ownKeys);ce="undefined"!=typeof Set&&le(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var pe=null;function de(e){void 0===e&&(e=null),e||pe&&pe._scope.off(),pe=e,e&&e._scope.on()}var he=function(){function e(e,t,n,r,a,o,i,s){this.tag=e,this.data=t,this.children=n,this.text=r,this.elm=a,this.ns=void 0,this.context=o,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=i,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(e.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),e}(),fe=function(e){void 0===e&&(e="");var t=new he;return t.text=e,t.isComment=!0,t};function ve(e){return new he(void 0,void 0,void 0,String(e))}function ge(e){var t=new he(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}"function"==typeof SuppressedError&&SuppressedError;var me=0,ye=[],be=function(){function e(){this._pending=!1,this.id=me++,this.subs=[]}return e.prototype.addSub=function(e){this.subs.push(e)},e.prototype.removeSub=function(e){this.subs[this.subs.indexOf(e)]=null,this._pending||(this._pending=!0,ye.push(this))},e.prototype.depend=function(t){e.target&&e.target.addDep(this)},e.prototype.notify=function(e){var t=this.subs.filter((function(e){return e}));for(var n=0,r=t.length;n0&&(Ye((c=e(c,"".concat(n||"","_").concat(r)))[0])&&Ye(p)&&(d[u]=ve(p.text+c[0].text),c.shift()),d.push.apply(d,c)):l(c)?Ye(p)?d[u]=ve(p.text+c):""!==c&&d.push(ve(c)):Ye(c)&&Ye(p)?d[u]=ve(p.text+c.text):(s(t._isVList)&&i(c.tag)&&o(c.key)&&i(n)&&(c.key="__vlist".concat(n,"_").concat(r,"__")),d.push(c)));return d}(e):void 0}function Ye(e){return i(e)&&i(e.text)&&!1===e.isComment}function Je(e,t){var n,r,o,s,l=null;if(a(e)||"string"==typeof e)for(l=new Array(e.length),n=0,r=e.length;n0,s=t?!!t.$stable:!i,l=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(s&&a&&a!==r&&l===a.$key&&!i&&!a.$hasNormal)return a;for(var c in o={},t)t[c]&&"$"!==c[0]&&(o[c]=gt(e,n,c,t[c]))}else o={};for(var u in n)u in o||(o[u]=mt(n,u));return t&&Object.isExtensible(t)&&(t._normalized=o),Z(o,"$stable",s),Z(o,"$key",l),Z(o,"$hasNormal",i),o}function gt(e,t,n,r){var o=function(){var t=pe;de(e);var n=arguments.length?r.apply(null,arguments):r({}),o=(n=n&&"object"==typeof n&&!a(n)?[n]:Ge(n))&&n[0];return de(t),n&&(!o||1===n.length&&o.isComment&&!ft(o))?void 0:n};return r.proxy&&Object.defineProperty(t,n,{get:o,enumerable:!0,configurable:!0}),o}function mt(e,t){return function(){return e[t]}}function yt(e){return{get attrs(){if(!e._attrsProxy){var t=e._attrsProxy={};Z(t,"_v_attr_proxy",!0),bt(t,e.$attrs,r,e,"$attrs")}return e._attrsProxy},get listeners(){e._listenersProxy||bt(e._listenersProxy={},e.$listeners,r,e,"$listeners");return e._listenersProxy},get slots(){return function(e){e._slotsProxy||wt(e._slotsProxy={},e.$scopedSlots);return e._slotsProxy}(e)},emit:$(e.$emit,e),expose:function(t){t&&Object.keys(t).forEach((function(n){return Re(e,t,n)}))}}}function bt(e,t,n,r,a){var o=!1;for(var i in t)i in e?t[i]!==n[i]&&(o=!0):(o=!0,Pt(e,i,r,a));for(var i in e)i in t||(o=!0,delete e[i]);return o}function Pt(e,t,n,r){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){return n[r][t]}})}function wt(e,t){for(var n in t)e[n]=t[n];for(var n in e)n in t||delete e[n]}var xt=null;function _t(e,t){return(e.__esModule||ue&&"Module"===e[Symbol.toStringTag])&&(e=e.default),u(e)?t.extend(e):e}function kt(e){if(a(e))for(var t=0;tdocument.createEvent("Event").timeStamp&&(cn=function(){return un.now()})}var pn=function(e,t){if(e.post){if(!t.post)return 1}else if(t.post)return-1;return e.id-t.id};function dn(){var e,t;for(ln=cn(),on=!0,tn.sort(pn),sn=0;snsn&&tn[n].id>e.id;)n--;tn.splice(n+1,0,e)}else tn.push(e);an||(an=!0,Nt(dn))}}function fn(e,t){if(e){for(var n=Object.create(null),r=ue?Reflect.ownKeys(e):Object.keys(e),a=0;a-1)if(o&&!_(a,"default"))i=!1;else if(""===i||i===O(e)){var l=Dn(String,a.type);(l<0||s-1:"string"==typeof e?e.split(",").indexOf(t)>-1:!!h(e)&&e.test(t)}function Jn(e,t){var n=e.cache,r=e.keys,a=e._vnode,o=e.$vnode;for(var i in n){var s=n[i];if(s){var l=s.name;l&&!t(l)&&Xn(n,i,r,a)}}o.componentOptions.children=void 0}function Xn(e,t,n,r){var a=e[t];!a||r&&a.tag===r.tag||a.componentInstance.$destroy(),e[t]=null,w(n,t)}qn.prototype._init=function(e){var t=this;t._uid=Vn++,t._isVue=!0,t.__v_skip=!0,t._scope=new We(!0),t._scope.parent=void 0,t._scope._vm=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var a=r.componentOptions;n.propsData=a.propsData,n._parentListeners=a.listeners,n._renderChildren=a.children,n._componentTag=a.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=$n(Zn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._provided=n?n._provided:Object.create(null),e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Gt(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,a=n&&n.context;e.$slots=dt(t._renderChildren,a),e.$scopedSlots=n?vt(e.$parent,n.data.scopedSlots,e.$slots):r,e._c=function(t,n,r,a){return Tt(e,t,n,r,a,!1)},e.$createElement=function(t,n,r,a){return Tt(e,t,n,r,a,!0)};var o=n&&n.data;je(e,"$attrs",o&&o.attrs||r,null,!0),je(e,"$listeners",t._parentListeners||r,null,!0)}(t),en(t,"beforeCreate",void 0,!1),function(e){var t=fn(e.$options.inject,e);t&&(Ee(!1),Object.keys(t).forEach((function(n){je(e,n,t[n])})),Ee(!0))}(t),Nn(t),function(e){var t=e.$options.provide;if(t){var n=c(t)?t.call(e):t;if(!u(n))return;for(var r=Fe(e),a=ue?Reflect.ownKeys(n):Object.keys(n),o=0;o1?B(n):n;for(var r=B(arguments,1),a='event handler for "'.concat(e,'"'),o=0,i=n.length;oparseInt(this.max)&&Xn(e,t[0],t,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)Xn(this.cache,e,this.keys)},mounted:function(){var e=this;this.cacheVNode(),this.$watch("include",(function(t){Jn(e,(function(e){return Yn(t,e)}))})),this.$watch("exclude",(function(t){Jn(e,(function(e){return!Yn(t,e)}))}))},updated:function(){this.cacheVNode()},render:function(){var e=this.$slots.default,t=kt(e),n=t&&t.componentOptions;if(n){var r=Gn(n),a=this.include,o=this.exclude;if(a&&(!r||!Yn(a,r))||o&&r&&Yn(o,r))return t;var i=this.cache,s=this.keys,l=null==t.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):t.key;i[l]?(t.componentInstance=i[l].componentInstance,w(s,l),s.push(l)):(this.vnodeToCache=t,this.keyToCache=l),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return F}};Object.defineProperty(e,"config",t),e.util={warn:_n,extend:j,mergeOptions:$n,defineReactive:je},e.set=Ae,e.delete=Ie,e.nextTick=Nt,e.observable=function(e){return Be(e),e},e.options=Object.create(null),z.forEach((function(t){e.options[t+"s"]=Object.create(null)})),e.options._base=e,j(e.options.components,er),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=B(arguments,1);return n.unshift(this),c(e.install)?e.install.apply(e,n):c(e)&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=$n(this.options,e),this}}(e),Kn(e),function(e){z.forEach((function(t){e[t]=function(e,n){return n?("component"===t&&d(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&c(n)&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(qn),Object.defineProperty(qn.prototype,"$isServer",{get:ie}),Object.defineProperty(qn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(qn,"FunctionalRenderContext",{value:vn}),qn.version="2.7.16";var tr=b("style,class"),nr=b("input,textarea,option,select,progress"),rr=b("contenteditable,draggable,spellcheck"),ar=b("events,caret,typing,plaintext-only"),or=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),ir="http://www.w3.org/1999/xlink",sr=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},lr=function(e){return sr(e)?e.slice(6,e.length):""},cr=function(e){return null==e||!1===e};function ur(e){for(var t=e.data,n=e,r=e;i(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(t=pr(r.data,t));for(;i(n=n.parent);)n&&n.data&&(t=pr(t,n.data));return function(e,t){if(i(e)||i(t))return dr(e,hr(t));return""}(t.staticClass,t.class)}function pr(e,t){return{staticClass:dr(e.staticClass,t.staticClass),class:i(e.class)?[e.class,t.class]:t.class}}function dr(e,t){return e?t?e+" "+t:e:t||""}function hr(e){return Array.isArray(e)?function(e){for(var t,n="",r=0,a=e.length;r-1?Lr(e,t,n):or(t)?cr(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):rr(t)?e.setAttribute(t,function(e,t){return cr(t)||"false"===t?"false":"contenteditable"===e&&ar(t)?t:"true"}(t,n)):sr(t)?cr(n)?e.removeAttributeNS(ir,lr(t)):e.setAttributeNS(ir,t,n):Lr(e,t,n)}function Lr(e,t,n){if(cr(n))e.removeAttribute(t);else{if(J&&!X&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var Ur={create:Mr,update:Mr};function Nr(e,t){var n=t.elm,r=t.data,a=e.data;if(!(o(r.staticClass)&&o(r.class)&&(o(a)||o(a.staticClass)&&o(a.class)))){var s=ur(t),l=n._transitionClasses;i(l)&&(s=dr(s,hr(l))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Rr,zr={create:Nr,update:Nr};function Wr(e,t,n){var r=Rr;return function a(){var o=t.apply(null,arguments);null!==o&&Vr(e,a,n,r)}}var Fr=Bt&&!(ne&&Number(ne[1])<=53);function Hr(e,t,n,r){if(Fr){var a=ln,o=t;t=o._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=a||e.timeStamp<=0||e.target.ownerDocument!==document)return o.apply(this,arguments)}}Rr.addEventListener(e,t,ae?{capture:n,passive:r}:n)}function Vr(e,t,n,r){(r||Rr).removeEventListener(e,t._wrapper||t,n)}function Zr(e,t){if(!o(e.data.on)||!o(t.data.on)){var n=t.data.on||{},r=e.data.on||{};Rr=t.elm||e.elm,function(e){if(i(e.__r)){var t=J?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}i(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(n),Ze(n,r,Hr,Vr,Wr,t.context),Rr=void 0}}var qr,Kr={create:Zr,update:Zr,destroy:function(e){return Zr(e,kr)}};function Gr(e,t){if(!o(e.data.domProps)||!o(t.data.domProps)){var n,r,a=t.elm,l=e.data.domProps||{},c=t.data.domProps||{};for(n in(i(c.__ob__)||s(c._v_attr_proxy))&&(c=t.data.domProps=j({},c)),l)n in c||(a[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),r===l[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=r;var u=o(r)?"":String(r);Yr(a,u)&&(a.value=u)}else if("innerHTML"===n&&gr(a.tagName)&&o(a.innerHTML)){(qr=qr||document.createElement("div")).innerHTML="".concat(r,"");for(var p=qr.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;p.firstChild;)a.appendChild(p.firstChild)}else if(r!==l[n])try{a[n]=r}catch(e){}}}}function Yr(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,r=e._vModifiers;if(i(r)){if(r.number)return y(n)!==y(t);if(r.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var Jr={create:Gr,update:Gr},Xr=k((function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}})),t}));function Qr(e){var t=ea(e.style);return e.staticStyle?j(e.staticStyle,t):t}function ea(e){return Array.isArray(e)?A(e):"string"==typeof e?Xr(e):e}var ta,na=/^--/,ra=/\s*!important$/,aa=function(e,t,n){if(na.test(t))e.style.setProperty(t,n);else if(ra.test(n))e.style.setProperty(O(t),n.replace(ra,""),"important");else{var r=ia(t);if(Array.isArray(n))for(var a=0,o=n.length;a-1?t.split(ca).forEach((function(t){return e.classList.add(t)})):e.classList.add(t);else{var n=" ".concat(e.getAttribute("class")||""," ");n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function pa(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(ca).forEach((function(t){return e.classList.remove(t)})):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" ".concat(e.getAttribute("class")||""," "),r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function da(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&j(t,ha(e.name||"v")),j(t,e),t}return"string"==typeof e?ha(e):void 0}}var ha=k((function(e){return{enterClass:"".concat(e,"-enter"),enterToClass:"".concat(e,"-enter-to"),enterActiveClass:"".concat(e,"-enter-active"),leaveClass:"".concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-to"),leaveActiveClass:"".concat(e,"-leave-active")}})),fa=G&&!X,va="transition",ga="transitionend",ma="animation",ya="animationend";fa&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(va="WebkitTransition",ga="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(ma="WebkitAnimation",ya="webkitAnimationEnd"));var ba=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function Pa(e){ba((function(){ba(e)}))}function wa(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),ua(e,t))}function xa(e,t){e._transitionClasses&&w(e._transitionClasses,t),pa(e,t)}function _a(e,t,n){var r=Ta(e,t),a=r.type,o=r.timeout,i=r.propCount;if(!a)return n();var s="transition"===a?ga:ya,l=0,c=function(){e.removeEventListener(s,u),n()},u=function(t){t.target===e&&++l>=i&&c()};setTimeout((function(){l0&&(n="transition",u=i,p=o.length):"animation"===t?c>0&&(n="animation",u=c,p=l.length):p=(n=(u=Math.max(i,c))>0?i>c?"transition":"animation":null)?"transition"===n?o.length:l.length:0,{type:n,timeout:u,propCount:p,hasTransform:"transition"===n&&ka.test(r[va+"Property"])}}function Ca(e,t){for(;e.length1}function ja(e,t){!0!==t.data.show&&Ea(t)}var Aa=function(e){var t,n,r={},c=e.modules,u=e.nodeOps;for(t=0;tf?P(e,o(n[m+1])?null:n[m+1].elm,n,h,m,r):h>m&&x(t,p,f)}(p,v,m,n,c):i(m)?(i(e.text)&&u.setTextContent(p,""),P(p,null,m,0,m.length-1,n)):i(v)?x(v,0,v.length-1):i(e.text)&&u.setTextContent(p,""):e.text!==t.text&&u.setTextContent(p,t.text),i(f)&&i(h=f.hook)&&i(h=h.postpatch)&&h(e,t)}}}function C(e,t,n){if(s(n)&&i(e.parent))e.parent.data.pendingInsert=t;else for(var r=0;r-1,i.selected!==o&&(i.selected=o);else if(L(Ua(i),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));a||(e.selectedIndex=-1)}}function La(e,t){return t.every((function(t){return!L(t,e)}))}function Ua(e){return"_value"in e?e._value:e.value}function Na(e){e.target.composing=!0}function Ra(e){e.target.composing&&(e.target.composing=!1,za(e.target,"input"))}function za(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Wa(e){return!e.componentInstance||e.data&&e.data.transition?e:Wa(e.componentInstance._vnode)}var Fa={model:Ia,show:{bind:function(e,t,n){var r=t.value,a=(n=Wa(n)).data&&n.data.transition,o=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&a?(n.data.show=!0,Ea(n,(function(){e.style.display=o}))):e.style.display=r?o:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Wa(n)).data&&n.data.transition?(n.data.show=!0,r?Ea(n,(function(){e.style.display=e.__vOriginalDisplay})):Oa(n,(function(){e.style.display="none"}))):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,a){a||(e.style.display=e.__vOriginalDisplay)}}},Ha={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Va(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?Va(kt(t.children)):e}function Za(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var a=n._parentListeners;for(var r in a)t[C(r)]=a[r];return t}function qa(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var Ka=function(e){return e.tag||ft(e)},Ga=function(e){return"show"===e.name},Ya={name:"transition",props:Ha,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(Ka)).length){0;var r=this.mode;0;var a=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return a;var o=Va(a);if(!o)return a;if(this._leaving)return qa(e,a);var i="__transition-".concat(this._uid,"-");o.key=null==o.key?o.isComment?i+"comment":i+o.tag:l(o.key)?0===String(o.key).indexOf(i)?o.key:i+o.key:o.key;var s=(o.data||(o.data={})).transition=Za(this),c=this._vnode,u=Va(c);if(o.data.directives&&o.data.directives.some(Ga)&&(o.data.show=!0),u&&u.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(o,u)&&!ft(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var p=u.data.transition=j({},s);if("out-in"===r)return this._leaving=!0,qe(p,"afterLeave",(function(){t._leaving=!1,t.$forceUpdate()})),qa(e,a);if("in-out"===r){if(ft(o))return c;var d,h=function(){d()};qe(s,"afterEnter",h),qe(s,"enterCancelled",h),qe(p,"delayLeave",(function(e){d=e}))}}return a}}},Ja=j({tag:String,moveClass:String},Ha);function Xa(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function Qa(e){e.data.newPos=e.elm.getBoundingClientRect()}function eo(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,a=t.top-n.top;if(r||a){e.data.moved=!0;var o=e.elm.style;o.transform=o.WebkitTransform="translate(".concat(r,"px,").concat(a,"px)"),o.transitionDuration="0s"}}delete Ja.mode;var to={Transition:Ya,TransitionGroup:{props:Ja,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var a=Jt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,a(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,a=this.$slots.default||[],o=this.children=[],i=Za(this),s=0;s-1?yr[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:yr[e]=/HTMLUnknownElement/.test(t.toString())},j(qn.options.directives,Fa),j(qn.options.components,to),qn.prototype.__patch__=G?Aa:I,qn.prototype.$mount=function(e,t){return function(e,t,n){var r;e.$el=t,e.$options.render||(e.$options.render=fe),en(e,"beforeMount"),r=function(){e._update(e._render(),n)},new Vt(e,r,I,{before:function(){e._isMounted&&!e._isDestroyed&&en(e,"beforeUpdate")}},!0),n=!1;var a=e._preWatchers;if(a)for(var o=0;o=0&&(t=e.slice(r),e=e.slice(0,r));var a=e.indexOf("?");return a>=0&&(n=e.slice(a+1),e=e.slice(0,a)),{path:e,query:n,hash:t}}(a.path||""),c=t&&t.path||"/",u=l.path?_o(l.path,c,n||a.append):c,p=function(e,t,n){void 0===t&&(t={});var r,a=n||co;try{r=a(e||"")}catch(e){r={}}for(var o in t){var i=t[o];r[o]=Array.isArray(i)?i.map(lo):lo(i)}return r}(l.query,a.query,r&&r.options.parseQuery),d=a.hash||l.hash;return d&&"#"!==d.charAt(0)&&(d="#"+d),{_normalized:!0,path:u,query:p,hash:d}}var Ho,Vo=function(){},Zo={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,a=n.resolve(this.to,r,this.append),o=a.location,i=a.route,s=a.href,l={},c=n.options.linkActiveClass,u=n.options.linkExactActiveClass,p=null==c?"router-link-active":c,d=null==u?"router-link-exact-active":u,h=null==this.activeClass?p:this.activeClass,f=null==this.exactActiveClass?d:this.exactActiveClass,v=i.redirectedFrom?ho(null,Fo(i.redirectedFrom),null,n):i;l[f]=yo(r,v,this.exactPath),l[h]=this.exact||this.exactPath?l[f]:function(e,t){return 0===e.path.replace(po,"/").indexOf(t.path.replace(po,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,v);var g=l[f]?this.ariaCurrentValue:null,m=function(e){qo(e)&&(t.replace?n.replace(o,Vo):n.push(o,Vo))},y={click:qo};Array.isArray(this.event)?this.event.forEach((function(e){y[e]=m})):y[this.event]=m;var b={class:l},P=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:i,navigate:m,isActive:l[h],isExactActive:l[f]});if(P){if(1===P.length)return P[0];if(P.length>1||!P.length)return 0===P.length?e():e("span",{},P)}if("a"===this.tag)b.on=y,b.attrs={href:s,"aria-current":g};else{var w=function e(t){var n;if(t)for(var r=0;r-1&&(s.params[d]=n.params[d]);return s.path=Wo(u.path,s.params),l(u,s,i)}if(s.path){s.params={};for(var h=0;h-1}function ki(e,t){return _i(e)&&e._isRouter&&(null==t||e.type===t)}function Ti(e,t,n){var r=function(a){a>=e.length?n():e[a]?t(e[a],(function(){r(a+1)})):r(a+1)};r(0)}function Ci(e){return function(t,n,r){var a=!1,o=0,i=null;Si(e,(function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){a=!0,o++;var l,c=$i((function(t){var a;((a=t).__esModule||Oi&&"Module"===a[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:Ho.extend(t),n.components[s]=t,--o<=0&&r()})),u=$i((function(e){var t="Failed to resolve async component "+s+": "+e;i||(i=_i(e)?e:new Error(t),r(i))}));try{l=e(c,u)}catch(e){u(e)}if(l)if("function"==typeof l.then)l.then(c,u);else{var p=l.component;p&&"function"==typeof p.then&&p.then(c,u)}}})),a||r()}}function Si(e,t){return Ei(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function Ei(e){return Array.prototype.concat.apply([],e)}var Oi="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function $i(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var Bi=function(e,t){this.router=e,this.base=function(e){if(!e)if(Ko){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=vo,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function ji(e,t,n,r){var a=Si(e,(function(e,r,a,o){var i=function(e,t){"function"!=typeof e&&(e=Ho.extend(e));return e.options[t]}(e,t);if(i)return Array.isArray(i)?i.map((function(e){return n(e,r,a,o)})):n(i,r,a,o)}));return Ei(r?a.reverse():a)}function Ai(e,t){if(t)return function(){return e.apply(t,arguments)}}Bi.prototype.listen=function(e){this.cb=e},Bi.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},Bi.prototype.onError=function(e){this.errorCbs.push(e)},Bi.prototype.transitionTo=function(e,t,n){var r,a=this;try{r=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var o=this.current;this.confirmTransition(r,(function(){a.updateRoute(r),t&&t(r),a.ensureURL(),a.router.afterHooks.forEach((function(e){e&&e(r,o)})),a.ready||(a.ready=!0,a.readyCbs.forEach((function(e){e(r)})))}),(function(e){n&&n(e),e&&!a.ready&&(ki(e,yi.redirected)&&o===vo||(a.ready=!0,a.readyErrorCbs.forEach((function(t){t(e)}))))}))},Bi.prototype.confirmTransition=function(e,t,n){var r=this,a=this.current;this.pending=e;var o,i,s=function(e){!ki(e)&&_i(e)&&(r.errorCbs.length?r.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},l=e.matched.length-1,c=a.matched.length-1;if(yo(e,a)&&l===c&&e.matched[l]===a.matched[c])return this.ensureURL(),e.hash&&ii(this.router,a,e,!1),s(((i=wi(o=a,e,yi.duplicated,'Avoided redundant navigation to current location: "'+o.fullPath+'".')).name="NavigationDuplicated",i));var u=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,r=vi&&n;r&&this.listeners.push(oi());var a=function(){var n=e.current,a=Mi(e.base);e.current===vo&&a===e._startLocation||e.transitionTo(a,(function(e){r&&ii(t,e,n,!0)}))};window.addEventListener("popstate",a),this.listeners.push((function(){window.removeEventListener("popstate",a)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var r=this,a=this.current;this.transitionTo(e,(function(e){gi(ko(r.base+e.fullPath)),ii(r.router,e,a,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,a=this.current;this.transitionTo(e,(function(e){mi(ko(r.base+e.fullPath)),ii(r.router,e,a,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(Mi(this.base)!==this.current.fullPath){var t=ko(this.base+this.current.fullPath);e?gi(t):mi(t)}},t.prototype.getCurrentLocation=function(){return Mi(this.base)},t}(Bi);function Mi(e){var t=window.location.pathname,n=t.toLowerCase(),r=e.toLowerCase();return!e||n!==r&&0!==n.indexOf(ko(r+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var Di=function(e){function t(t,n,r){e.call(this,t,n),r&&function(e){var t=Mi(e);if(!/^\/#/.test(t))return window.location.replace(ko(e+"/#"+t)),!0}(this.base)||Li()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=vi&&t;n&&this.listeners.push(oi());var r=function(){var t=e.current;Li()&&e.transitionTo(Ui(),(function(r){n&&ii(e.router,r,t,!0),vi||zi(r.fullPath)}))},a=vi?"popstate":"hashchange";window.addEventListener(a,r),this.listeners.push((function(){window.removeEventListener(a,r)}))}},t.prototype.push=function(e,t,n){var r=this,a=this.current;this.transitionTo(e,(function(e){Ri(e.fullPath),ii(r.router,e,a,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,a=this.current;this.transitionTo(e,(function(e){zi(e.fullPath),ii(r.router,e,a,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;Ui()!==t&&(e?Ri(t):zi(t))},t.prototype.getCurrentLocation=function(){return Ui()},t}(Bi);function Li(){var e=Ui();return"/"===e.charAt(0)||(zi("/"+e),!1)}function Ui(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function Ni(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function Ri(e){vi?gi(Ni(e)):window.location.hash=e}function zi(e){vi?mi(Ni(e)):window.location.replace(Ni(e))}var Wi=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var e=t.current;t.index=n,t.updateRoute(r),t.router.afterHooks.forEach((function(t){t&&t(r,e)}))}),(function(e){ki(e,yi.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(Bi),Fi=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Jo(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!vi&&!1!==e.fallback,this.fallback&&(t="hash"),Ko||(t="abstract"),this.mode=t,t){case"history":this.history=new Ii(this,e.base);break;case"hash":this.history=new Di(this,e.base,this.fallback);break;case"abstract":this.history=new Wi(this,e.base);break;default:0}},Hi={currentRoute:{configurable:!0}};Fi.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},Hi.currentRoute.get=function(){return this.history&&this.history.current},Fi.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof Ii||n instanceof Di){var r=function(e){n.setupListeners(),function(e){var r=n.current,a=t.options.scrollBehavior;vi&&a&&"fullPath"in e&&ii(t,e,r,!1)}(e)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},Fi.prototype.beforeEach=function(e){return Zi(this.beforeHooks,e)},Fi.prototype.beforeResolve=function(e){return Zi(this.resolveHooks,e)},Fi.prototype.afterEach=function(e){return Zi(this.afterHooks,e)},Fi.prototype.onReady=function(e,t){this.history.onReady(e,t)},Fi.prototype.onError=function(e){this.history.onError(e)},Fi.prototype.push=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.push(e,t,n)}));this.history.push(e,t,n)},Fi.prototype.replace=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.replace(e,t,n)}));this.history.replace(e,t,n)},Fi.prototype.go=function(e){this.history.go(e)},Fi.prototype.back=function(){this.go(-1)},Fi.prototype.forward=function(){this.go(1)},Fi.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},Fi.prototype.resolve=function(e,t,n){var r=Fo(e,t=t||this.history.current,n,this),a=this.match(r,t),o=a.redirectedFrom||a.fullPath;return{location:r,route:a,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?ko(e+"/"+r):r}(this.history.base,o,this.mode),normalizedTo:r,resolved:a}},Fi.prototype.getRoutes=function(){return this.matcher.getRoutes()},Fi.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==vo&&this.history.transitionTo(this.history.getCurrentLocation())},Fi.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==vo&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Fi.prototype,Hi);var Vi=Fi;function Zi(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}Fi.install=function e(t){if(!e.installed||Ho!==t){e.installed=!0,Ho=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",wo),t.component("RouterLink",Zo);var a=t.config.optionMergeStrategies;a.beforeRouteEnter=a.beforeRouteLeave=a.beforeRouteUpdate=a.created}},Fi.version="3.6.5",Fi.isNavigationFailure=ki,Fi.NavigationFailureType=yi,Fi.START_LOCATION=vo,Ko&&window.Vue&&window.Vue.use(Fi);n(53);n(137),n(46);var qi={"components/AlgoliaSearchBox":()=>Promise.all([n.e(0),n.e(20)]).then(n.bind(null,341)),"components/DropdownLink":()=>Promise.all([n.e(0),n.e(21)]).then(n.bind(null,271)),"components/DropdownTransition":()=>Promise.all([n.e(0),n.e(28)]).then(n.bind(null,258)),"components/Home":()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,321)),"components/NavLink":()=>n.e(30).then(n.bind(null,254)),"components/NavLinks":()=>Promise.all([n.e(0),n.e(19)]).then(n.bind(null,297)),"components/Navbar":()=>Promise.all([n.e(0),n.e(17)]).then(n.bind(null,320)),"components/Page":()=>Promise.all([n.e(0),n.e(18)]).then(n.bind(null,322)),"components/PageEdit":()=>Promise.all([n.e(0),n.e(24)]).then(n.bind(null,299)),"components/PageNav":()=>Promise.all([n.e(0),n.e(22)]).then(n.bind(null,300)),"components/Sidebar":()=>Promise.all([n.e(0),n.e(1)]).then(n.bind(null,336)),"components/SidebarButton":()=>Promise.all([n.e(0),n.e(29)]).then(n.bind(null,302)),"components/SidebarGroup":()=>Promise.all([n.e(0),n.e(7)]).then(n.bind(null,309)),"components/SidebarLink":()=>Promise.all([n.e(0),n.e(27)]).then(n.bind(null,303)),"components/SidebarLinks":()=>Promise.all([n.e(0),n.e(7)]).then(n.bind(null,301)),"global-components/Badge":()=>Promise.all([n.e(0),n.e(10)]).then(n.bind(null,350)),"global-components/CodeBlock":()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,342)),"global-components/CodeGroup":()=>Promise.all([n.e(0),n.e(12)]).then(n.bind(null,343)),"layouts/404":()=>n.e(13).then(n.bind(null,344)),"layouts/Layout":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3)]).then(n.bind(null,345)),NotFound:()=>n.e(13).then(n.bind(null,344)),Layout:()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3)]).then(n.bind(null,345)),"components/Categories":()=>Promise.all([n.e(0),n.e(25)]).then(n.bind(null,272)),"components/PostMeta":()=>Promise.all([n.e(0),n.e(26)]).then(n.bind(null,268)),"components/Sponsors":()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,337)),"layouts/DirectoryPagination":()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,346)),"layouts/FrontmatterKey":()=>Promise.all([n.e(0),n.e(9)]).then(n.bind(null,347)),"layouts/FrontmatterPagination":()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,348)),"layouts/IndexPost":()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,298)),"layouts/Post":()=>Promise.all([n.e(0),n.e(8)]).then(n.bind(null,349)),DirectoryPagination:()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,346)),FrontmatterKey:()=>Promise.all([n.e(0),n.e(9)]).then(n.bind(null,347)),FrontmatterPagination:()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,348)),IndexPost:()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,298)),Post:()=>Promise.all([n.e(0),n.e(8)]).then(n.bind(null,349))},Ki={"v-499e2aec":()=>n.e(31).then(n.bind(null,351)),"v-1921d58c":()=>n.e(32).then(n.bind(null,352)),"v-6c585c80":()=>n.e(33).then(n.bind(null,353)),"v-19d2659c":()=>n.e(34).then(n.bind(null,354)),"v-cd62a5a8":()=>n.e(35).then(n.bind(null,355)),"v-6028760c":()=>n.e(36).then(n.bind(null,356)),"v-1db83acc":()=>n.e(38).then(n.bind(null,357)),"v-105c3aa4":()=>n.e(37).then(n.bind(null,358)),"v-72ecdccc":()=>n.e(39).then(n.bind(null,359)),"v-69792af4":()=>n.e(40).then(n.bind(null,360)),"v-78e3a332":()=>n.e(41).then(n.bind(null,361)),"v-5923a558":()=>n.e(42).then(n.bind(null,362)),"v-00e62a0c":()=>n.e(43).then(n.bind(null,363)),"v-cc0c9ce8":()=>n.e(44).then(n.bind(null,364)),"v-48df8fa8":()=>n.e(45).then(n.bind(null,365)),"v-1245cc68":()=>n.e(46).then(n.bind(null,366)),"v-272b7c8c":()=>n.e(47).then(n.bind(null,367)),"v-9ed1236c":()=>n.e(48).then(n.bind(null,368)),"v-7d95c994":()=>n.e(49).then(n.bind(null,369)),"v-ebc87668":()=>n.e(50).then(n.bind(null,370)),"v-45843d5a":()=>n.e(51).then(n.bind(null,371)),"v-04835b18":()=>n.e(52).then(n.bind(null,372)),"v-debd9fe0":()=>n.e(53).then(n.bind(null,373)),"v-56b01a8c":()=>n.e(54).then(n.bind(null,374)),"v-78fb0e54":()=>n.e(55).then(n.bind(null,375)),"v-222d4f66":()=>n.e(56).then(n.bind(null,376)),"v-529e392c":()=>n.e(57).then(n.bind(null,377)),"v-f8ff4568":()=>n.e(58).then(n.bind(null,378)),"v-973afd28":()=>n.e(59).then(n.bind(null,379)),"v-b5151f96":()=>n.e(60).then(n.bind(null,380)),"v-293dce38":()=>n.e(61).then(n.bind(null,381)),"v-96d63b3c":()=>n.e(62).then(n.bind(null,382)),"v-7dc8abe0":()=>n.e(63).then(n.bind(null,383)),"v-46fc755e":()=>n.e(64).then(n.bind(null,384)),"v-10303edc":()=>n.e(65).then(n.bind(null,385)),"v-4d37ef4c":()=>n.e(66).then(n.bind(null,386)),"v-bad05c50":()=>n.e(67).then(n.bind(null,387)),"v-6bcb9b56":()=>n.e(68).then(n.bind(null,388)),"v-8a7ea4a8":()=>n.e(69).then(n.bind(null,389)),"v-2bdfe6a8":()=>n.e(70).then(n.bind(null,390)),"v-347df1ac":()=>n.e(71).then(n.bind(null,391)),"v-511f408c":()=>n.e(72).then(n.bind(null,392)),"v-42608e28":()=>n.e(73).then(n.bind(null,393)),"v-db861df0":()=>n.e(74).then(n.bind(null,394)),"v-3ef1982c":()=>n.e(75).then(n.bind(null,395)),"v-127af38c":()=>n.e(76).then(n.bind(null,396)),"v-4071114c":()=>n.e(77).then(n.bind(null,397)),"v-67eac528":()=>n.e(78).then(n.bind(null,398)),"v-636cee68":()=>n.e(79).then(n.bind(null,399)),"v-5cd1fdc4":()=>n.e(80).then(n.bind(null,400)),"v-75a17a68":()=>n.e(81).then(n.bind(null,401)),"v-7ed5a5a0":()=>n.e(82).then(n.bind(null,402)),"v-0d961d0c":()=>n.e(83).then(n.bind(null,403)),"v-3b4a92e8":()=>n.e(84).then(n.bind(null,404)),"v-194aa16c":()=>n.e(85).then(n.bind(null,405)),"v-75f7bbe8":()=>n.e(86).then(n.bind(null,406)),"v-fc399aa8":()=>n.e(87).then(n.bind(null,407)),"v-d31850e8":()=>n.e(88).then(n.bind(null,408)),"v-f6ea4c28":()=>n.e(89).then(n.bind(null,409)),"v-312de42c":()=>n.e(90).then(n.bind(null,410)),"v-492b1fe8":()=>n.e(91).then(n.bind(null,411)),"v-8e8a67e8":()=>n.e(92).then(n.bind(null,412)),"v-2fcedaac":()=>n.e(93).then(n.bind(null,413)),"v-45be51d2":()=>n.e(94).then(n.bind(null,414)),"v-22bca8a8":()=>n.e(95).then(n.bind(null,415)),"v-03c118ec":()=>n.e(96).then(n.bind(null,416)),"v-1df6814c":()=>n.e(97).then(n.bind(null,417)),"v-1627eb18":()=>n.e(98).then(n.bind(null,418)),"v-4ec352bc":()=>n.e(99).then(n.bind(null,419)),"v-d8f9098c":()=>n.e(100).then(n.bind(null,420)),"v-3b36bdf4":()=>n.e(101).then(n.bind(null,421)),"v-281f49ca":()=>n.e(102).then(n.bind(null,422))};function Gi(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const Yi=/-(\w)/g,Ji=Gi(e=>e.replace(Yi,(e,t)=>t?t.toUpperCase():"")),Xi=/\B([A-Z])/g,Qi=Gi(e=>e.replace(Xi,"-$1").toLowerCase()),es=Gi(e=>e.charAt(0).toUpperCase()+e.slice(1));function ts(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(es(Ji(t))):e(es(t))||e(Qi(t))}const ns=Object.assign({},qi,Ki),rs=e=>ns[e],as=e=>Ki[e],os=e=>qi[e],is=e=>qn.component(e);function ss(e){return ts(as,e)}function ls(e){return ts(os,e)}function cs(e){return ts(rs,e)}function us(e){return ts(is,e)}function ps(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!us(e)&&cs(e)){const t=await cs(e)();qn.component(e,t.default)}}))}function ds(e,t){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[e]=t)}var hs=n(91),fs=n.n(hs),vs=n(92),gs=n.n(vs),ms={created(){if(this.siteMeta=this.$site.headTags.filter(([e])=>"meta"===e).map(([e,t])=>t),this.$ssrContext){const t=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(e=t)?e.map(e=>{let t="{t+=` ${n}="${gs()(e[n])}"`}),t+">"}).join("\n "):"",this.$ssrContext.canonicalLink=bs(this.$canonicalUrl)}var e},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.getMergedMetaTags();this.currentMetaTags=Ps(e,this.currentMetaTags)},getMergedMetaTags(){const e=this.$page.frontmatter.meta||[];return fs()([{name:"description",content:this.$description}],e,this.siteMeta,ws)},updateCanonicalLink(){ys(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",bs(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){Ps(null,this.currentMetaTags),ys()}};function ys(){const e=document.querySelector("link[rel='canonical']");e&&e.remove()}function bs(e=""){return e?``:""}function Ps(e,t){if(t&&[...t].filter(e=>e.parentNode===document.head).forEach(e=>document.head.removeChild(e)),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(n=>{t.setAttribute(n,e[n])}),document.head.appendChild(t),t})}function ws(e){for(const t of["name","property","itemprop"])if(e.hasOwnProperty(t))return e[t]+t;return JSON.stringify(e)}var xs=n(93),_s={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:n.n(xs)()((function(){this.setActiveHash()}),300),setActiveHash(){const e=[].slice.call(document.querySelectorAll(".sidebar-link")),t=[].slice.call(document.querySelectorAll(".header-anchor")).filter(t=>e.some(e=>e.hash===t.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),a=window.innerHeight+n;for(let e=0;e=o.parentElement.offsetTop+10&&(!i||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},ks=n(22),Ts=n.n(ks),Cs={mounted(){Ts.a.configure({showSpinner:!1}),this.$router.beforeEach((e,t,n)=>{e.path===t.path||qn.component(e.name)||Ts.a.start(),n()}),this.$router.afterEach(()=>{Ts.a.done(),this.isSidebarOpen=!1})}},Ss={props:{parent:Object,code:String,options:{align:String,color:String,backgroundTransition:Boolean,backgroundColor:String,successText:String,staticIcon:Boolean}},data:()=>({success:!1,originalBackground:null,originalTransition:null}),computed:{alignStyle(){let e={};return e[this.options.align]="7.5px",e},iconClass(){return this.options.staticIcon?"":"hover"}},mounted(){this.originalTransition=this.parent.style.transition,this.originalBackground=this.parent.style.background},beforeDestroy(){this.parent.style.transition=this.originalTransition,this.parent.style.background=this.originalBackground},methods:{hexToRgb(e){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null},copyToClipboard(e){if(navigator.clipboard)navigator.clipboard.writeText(this.code).then(()=>{this.setSuccessTransitions()},()=>{});else{let e=document.createElement("textarea");document.body.appendChild(e),e.value=this.code,e.select(),document.execCommand("Copy"),e.remove(),this.setSuccessTransitions()}},setSuccessTransitions(){if(clearTimeout(this.successTimeout),this.options.backgroundTransition){this.parent.style.transition="background 350ms";let e=this.hexToRgb(this.options.backgroundColor);this.parent.style.background=`rgba(${e.r}, ${e.g}, ${e.b}, 0.1)`}this.success=!0,this.successTimeout=setTimeout(()=>{this.options.backgroundTransition&&(this.parent.style.background=this.originalBackground,this.parent.style.transition=this.originalTransition),this.success=!1},500)}}},Es=(n(239),n(10)),Os=Object(Es.a)(Ss,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"code-copy"},[t("svg",{class:e.iconClass,style:e.alignStyle,attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},on:{click:e.copyToClipboard}},[t("path",{attrs:{fill:"none",d:"M0 0h24v24H0z"}}),e._v(" "),t("path",{attrs:{fill:e.options.color,d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4l6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2h7zm-1 7h5.5L14 6.5V12z"}})]),e._v(" "),t("span",{class:e.success?"success":"",style:e.alignStyle},[e._v("\n "+e._s(e.options.successText)+"\n ")])])}),[],!1,null,"49140617",null).exports,$s=(n(240),{updated(){this.update()},methods:{update(){setTimeout(()=>{document.querySelectorAll('div[class*="language-"] pre').forEach(e=>{if(e.classList.contains("code-copy-added"))return;let t=new(qn.extend(Os));t.options={align:"bottom",color:"#8F979E",backgroundTransition:!1,backgroundColor:"#0075b8",successText:"Copied!",staticIcon:!0},t.code=e.innerText,t.parent=e,t.$mount(),e.classList.add("code-copy-added"),e.appendChild(t.$el)})},100)}}}),Bs=(n(241),Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},r=window.Promise||function(e){function t(){}e(t,t)},a=function(e){var t=e.target;t!==T?-1!==b.indexOf(t)&&v({target:t}):f()},o=function(){if(!w&&k.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(x-e)>_.scrollOffset&&setTimeout(f,150)}},i=function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||f()},s=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e;if(e.background&&(T.style.background=e.background),e.container&&e.container instanceof Object&&(t.container=Bs({},_.container,e.container)),e.template){var n=As(e.template)?e.template:document.querySelector(e.template);t.template=n}return _=Bs({},_,t),b.forEach((function(e){e.dispatchEvent(Us("medium-zoom:update",{detail:{zoom:C}}))})),C},l=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e(Bs({},_,t))},c=function(){for(var e=arguments.length,t=Array(e),n=0;n0?t.reduce((function(e,t){return[].concat(e,Ms(t))}),[]):b;return r.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(Us("medium-zoom:detach",{detail:{zoom:C}}))})),b=b.filter((function(e){return-1===r.indexOf(e)})),C},p=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.addEventListener("medium-zoom:"+e,t,n)})),P.push({type:"medium-zoom:"+e,listener:t,options:n}),C},d=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.removeEventListener("medium-zoom:"+e,t,n)})),P=P.filter((function(n){return!(n.type==="medium-zoom:"+e&&n.listener.toString()===t.toString())})),C},h=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target,n=function(){var e={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},t=void 0,n=void 0;if(_.container)if(_.container instanceof Object)t=(e=Bs({},e,_.container)).width-e.left-e.right-2*_.margin,n=e.height-e.top-e.bottom-2*_.margin;else{var r=(As(_.container)?_.container:document.querySelector(_.container)).getBoundingClientRect(),a=r.width,o=r.height,i=r.left,s=r.top;e=Bs({},e,{width:a,height:o,left:i,top:s})}t=t||e.width-2*_.margin,n=n||e.height-2*_.margin;var l=k.zoomedHd||k.original,c=Is(l)?t:l.naturalWidth||t,u=Is(l)?n:l.naturalHeight||n,p=l.getBoundingClientRect(),d=p.top,h=p.left,f=p.width,v=p.height,g=Math.min(Math.max(f,c),t)/f,m=Math.min(Math.max(v,u),n)/v,y=Math.min(g,m),b="scale("+y+") translate3d("+((t-f)/2-h+_.margin+e.left)/y+"px, "+((n-v)/2-d+_.margin+e.top)/y+"px, 0)";k.zoomed.style.transform=b,k.zoomedHd&&(k.zoomedHd.style.transform=b)};return new r((function(e){if(t&&-1===b.indexOf(t))e(C);else{if(k.zoomed)e(C);else{if(t)k.original=t;else{if(!(b.length>0))return void e(C);var r=b;k.original=r[0]}if(k.original.dispatchEvent(Us("medium-zoom:open",{detail:{zoom:C}})),x=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,w=!0,k.zoomed=Ls(k.original),document.body.appendChild(T),_.template){var a=As(_.template)?_.template:document.querySelector(_.template);k.template=document.createElement("div"),k.template.appendChild(a.content.cloneNode(!0)),document.body.appendChild(k.template)}if(k.original.parentElement&&"PICTURE"===k.original.parentElement.tagName&&k.original.currentSrc&&(k.zoomed.src=k.original.currentSrc),document.body.appendChild(k.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),k.original.classList.add("medium-zoom-image--hidden"),k.zoomed.classList.add("medium-zoom-image--opened"),k.zoomed.addEventListener("click",f),k.zoomed.addEventListener("transitionend",(function t(){w=!1,k.zoomed.removeEventListener("transitionend",t),k.original.dispatchEvent(Us("medium-zoom:opened",{detail:{zoom:C}})),e(C)})),k.original.getAttribute("data-zoom-src")){k.zoomedHd=k.zoomed.cloneNode(),k.zoomedHd.removeAttribute("srcset"),k.zoomedHd.removeAttribute("sizes"),k.zoomedHd.removeAttribute("loading"),k.zoomedHd.src=k.zoomed.getAttribute("data-zoom-src"),k.zoomedHd.onerror=function(){clearInterval(o),console.warn("Unable to reach the zoom image target "+k.zoomedHd.src),k.zoomedHd=null,n()};var o=setInterval((function(){k.zoomedHd.complete&&(clearInterval(o),k.zoomedHd.classList.add("medium-zoom-image--opened"),k.zoomedHd.addEventListener("click",f),document.body.appendChild(k.zoomedHd),n())}),10)}else if(k.original.hasAttribute("srcset")){k.zoomedHd=k.zoomed.cloneNode(),k.zoomedHd.removeAttribute("sizes"),k.zoomedHd.removeAttribute("loading");var i=k.zoomedHd.addEventListener("load",(function(){k.zoomedHd.removeEventListener("load",i),k.zoomedHd.classList.add("medium-zoom-image--opened"),k.zoomedHd.addEventListener("click",f),document.body.appendChild(k.zoomedHd),n()}))}else n()}}}))},f=function(){return new r((function(e){if(!w&&k.original){w=!0,document.body.classList.remove("medium-zoom--opened"),k.zoomed.style.transform="",k.zoomedHd&&(k.zoomedHd.style.transform=""),k.template&&(k.template.style.transition="opacity 150ms",k.template.style.opacity=0),k.original.dispatchEvent(Us("medium-zoom:close",{detail:{zoom:C}})),k.zoomed.addEventListener("transitionend",(function t(){k.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(k.zoomed),k.zoomedHd&&document.body.removeChild(k.zoomedHd),document.body.removeChild(T),k.zoomed.classList.remove("medium-zoom-image--opened"),k.template&&document.body.removeChild(k.template),w=!1,k.zoomed.removeEventListener("transitionend",t),k.original.dispatchEvent(Us("medium-zoom:closed",{detail:{zoom:C}})),k.original=null,k.zoomed=null,k.zoomedHd=null,k.template=null,e(C)}))}else e(C)}))},v=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target;return k.original?f():h({target:t})},g=function(){return _},m=function(){return b},y=function(){return k.original},b=[],P=[],w=!1,x=0,_=n,k={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(t)?_=t:(t||"string"==typeof t)&&c(t),_=Bs({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},_);var T=Ds(_.background);document.addEventListener("click",a),document.addEventListener("keyup",i),document.addEventListener("scroll",o),window.addEventListener("resize",f);var C={open:h,close:f,toggle:v,update:s,clone:l,attach:c,detach:u,on:p,off:d,getOptions:g,getImages:m,getZoomedImage:y};return C},Rs=[ms,_s,Cs,$s,{data:()=>({zoom:null}),mounted(){this.updateZoom()},updated(){this.updateZoom()},methods:{updateZoom(){setTimeout(()=>{this.zoom&&this.zoom.detach(),this.zoom=Ns(".theme-default-content :not(a) > img",void 0)},1e3)}}}],zs={name:"GlobalLayout",computed:{layout(){const e=this.getLayout();return ds("layout",e),qn.component(e)}},methods:{getLayout(){if(this.$page.path){const e=this.$page.frontmatter.layout;return e&&(this.$vuepress.getLayoutAsyncComponent(e)||this.$vuepress.getVueComponent(e))?e:"Layout"}return"NotFound"}}},Ws=Object(Es.a)(zs,(function(){return(0,this._self._c)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(e,t,n){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],n);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...n);break;default:throw new Error("Unknown option name.")}}(Ws,"mixins",Rs);const Fs=[{name:"v-499e2aec",path:"/1-0-3-128-released/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-499e2aec").then(n)}},{path:"/1-0-3-128-released/index.html",redirect:"/1-0-3-128-released/"},{path:"/_posts/1-0-3-128-released.html",redirect:"/1-0-3-128-released/"},{name:"v-1921d58c",path:"/1-0-3-132-released/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-1921d58c").then(n)}},{path:"/1-0-3-132-released/index.html",redirect:"/1-0-3-132-released/"},{path:"/_posts/1-0-3-132-released.html",redirect:"/1-0-3-132-released/"},{name:"v-6c585c80",path:"/2019-year-in-review/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-6c585c80").then(n)}},{path:"/2019-year-in-review/index.html",redirect:"/2019-year-in-review/"},{path:"/_posts/2019-year-in-review.html",redirect:"/2019-year-in-review/"},{name:"v-19d2659c",path:"/announcing-btcpay-directory/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-19d2659c").then(n)}},{path:"/announcing-btcpay-directory/index.html",redirect:"/announcing-btcpay-directory/"},{path:"/_posts/announcing-btcpay-directory.html",redirect:"/announcing-btcpay-directory/"},{name:"v-cd62a5a8",path:"/bitcoin-2024-the-year-of-ambassadors/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-cd62a5a8").then(n)}},{path:"/bitcoin-2024-the-year-of-ambassadors/index.html",redirect:"/bitcoin-2024-the-year-of-ambassadors/"},{path:"/_posts/bitcoin-2024-the-year-of-ambassadors.html",redirect:"/bitcoin-2024-the-year-of-ambassadors/"},{name:"v-6028760c",path:"/bitcoin-bonus-scam/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-6028760c").then(n)}},{path:"/bitcoin-bonus-scam/index.html",redirect:"/bitcoin-bonus-scam/"},{path:"/_posts/bitcoin-bonus-scam.html",redirect:"/bitcoin-bonus-scam/"},{name:"v-1db83acc",path:"/bitpaint-btcpay-server-stories/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-1db83acc").then(n)}},{path:"/bitpaint-btcpay-server-stories/index.html",redirect:"/bitpaint-btcpay-server-stories/"},{path:"/_posts/bitpaint-btcpay-server-stories.html",redirect:"/bitpaint-btcpay-server-stories/"},{name:"v-105c3aa4",path:"/bitcoin-pos/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-105c3aa4").then(n)}},{path:"/bitcoin-pos/index.html",redirect:"/bitcoin-pos/"},{path:"/_posts/bitcoin-pos.html",redirect:"/bitcoin-pos/"},{name:"v-72ecdccc",path:"/brian-harrington-btcpay-server-stories/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-72ecdccc").then(n)}},{path:"/brian-harrington-btcpay-server-stories/index.html",redirect:"/brian-harrington-btcpay-server-stories/"},{path:"/_posts/brian-harrington-btcpay-server-stories.html",redirect:"/brian-harrington-btcpay-server-stories/"},{name:"v-69792af4",path:"/btcpay-1-0-3-127-released/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-69792af4").then(n)}},{path:"/btcpay-1-0-3-127-released/index.html",redirect:"/btcpay-1-0-3-127-released/"},{path:"/_posts/btcpay-1-0-3-127-released.html",redirect:"/btcpay-1-0-3-127-released/"},{name:"v-78e3a332",path:"/btcpay-1-0-3-137-released/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-78e3a332").then(n)}},{path:"/btcpay-1-0-3-137-released/index.html",redirect:"/btcpay-1-0-3-137-released/"},{path:"/_posts/btcpay-1-0-3-137-released.html",redirect:"/btcpay-1-0-3-137-released/"},{name:"v-5923a558",path:"/btcpay-day-2019/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-5923a558").then(n)}},{path:"/btcpay-day-2019/index.html",redirect:"/btcpay-day-2019/"},{path:"/_posts/btcpay-day-2019.html",redirect:"/btcpay-day-2019/"},{name:"v-00e62a0c",path:"/btcpay-day-2022-riga/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-00e62a0c").then(n)}},{path:"/btcpay-day-2022-riga/index.html",redirect:"/btcpay-day-2022-riga/"},{path:"/_posts/btcpay-day-2022-riga.html",redirect:"/btcpay-day-2022-riga/"},{name:"v-cc0c9ce8",path:"/btcpay-day-riga-2019-recap/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-cc0c9ce8").then(n)}},{path:"/btcpay-day-riga-2019-recap/index.html",redirect:"/btcpay-day-riga-2019-recap/"},{path:"/_posts/btcpay-day-riga-2019-recap.html",redirect:"/btcpay-day-riga-2019-recap/"},{name:"v-48df8fa8",path:"/btcpay-documentary-my-trust-in-you-is-broken/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-48df8fa8").then(n)}},{path:"/btcpay-documentary-my-trust-in-you-is-broken/index.html",redirect:"/btcpay-documentary-my-trust-in-you-is-broken/"},{path:"/_posts/btcpay-documentary-my-trust-in-you-is-broken.html",redirect:"/btcpay-documentary-my-trust-in-you-is-broken/"},{name:"v-1245cc68",path:"/btcpay-foundation-announcement/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-1245cc68").then(n)}},{path:"/btcpay-foundation-announcement/index.html",redirect:"/btcpay-foundation-announcement/"},{path:"/_posts/btcpay-foundation-announcement.html",redirect:"/btcpay-foundation-announcement/"},{name:"v-272b7c8c",path:"/btcpay-lnd-migration/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-272b7c8c").then(n)}},{path:"/btcpay-lnd-migration/index.html",redirect:"/btcpay-lnd-migration/"},{path:"/_posts/btcpay-lnd-migration.html",redirect:"/btcpay-lnd-migration/"},{name:"v-9ed1236c",path:"/btcpay-misconceptions/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-9ed1236c").then(n)}},{path:"/btcpay-misconceptions/index.html",redirect:"/btcpay-misconceptions/"},{path:"/_posts/btcpay-misconceptions.html",redirect:"/btcpay-misconceptions/"},{name:"v-7d95c994",path:"/btcpay-server-1-0-3-147/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-7d95c994").then(n)}},{path:"/btcpay-server-1-0-3-147/index.html",redirect:"/btcpay-server-1-0-3-147/"},{path:"/_posts/btcpay-server-1-0-3-147.html",redirect:"/btcpay-server-1-0-3-147/"},{name:"v-ebc87668",path:"/btcpay-server-1-0-3-95/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-ebc87668").then(n)}},{path:"/btcpay-server-1-0-3-95/index.html",redirect:"/btcpay-server-1-0-3-95/"},{path:"/_posts/btcpay-server-1-0-3-95.html",redirect:"/btcpay-server-1-0-3-95/"},{name:"v-45843d5a",path:"/btcpay-server-1-0-4-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-45843d5a").then(n)}},{path:"/btcpay-server-1-0-4-0/index.html",redirect:"/btcpay-server-1-0-4-0/"},{path:"/_posts/btcpay-server-1-0-4-0.html",redirect:"/btcpay-server-1-0-4-0/"},{name:"v-04835b18",path:"/btcpay-server-1-0-5-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-04835b18").then(n)}},{path:"/btcpay-server-1-0-5-0/index.html",redirect:"/btcpay-server-1-0-5-0/"},{path:"/_posts/btcpay-server-1-0-5-0.html",redirect:"/btcpay-server-1-0-5-0/"},{name:"v-debd9fe0",path:"/btcpay-server-1-0-5-4/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-debd9fe0").then(n)}},{path:"/btcpay-server-1-0-5-4/index.html",redirect:"/btcpay-server-1-0-5-4/"},{path:"/_posts/btcpay-server-1-0-5-4.html",redirect:"/btcpay-server-1-0-5-4/"},{name:"v-56b01a8c",path:"/btcpay-server-1-0-5-6/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-56b01a8c").then(n)}},{path:"/btcpay-server-1-0-5-6/index.html",redirect:"/btcpay-server-1-0-5-6/"},{path:"/_posts/btcpay-server-1-0-5-6.html",redirect:"/btcpay-server-1-0-5-6/"},{name:"v-78fb0e54",path:"/btcpay-server-1-0-6-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-78fb0e54").then(n)}},{path:"/btcpay-server-1-0-6-0/index.html",redirect:"/btcpay-server-1-0-6-0/"},{path:"/_posts/btcpay-server-1-0-6-0.html",redirect:"/btcpay-server-1-0-6-0/"},{name:"v-222d4f66",path:"/btcpay-server-1-1-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-222d4f66").then(n)}},{path:"/btcpay-server-1-1-0/index.html",redirect:"/btcpay-server-1-1-0/"},{path:"/_posts/btcpay-server-1-1-0.html",redirect:"/btcpay-server-1-1-0/"},{name:"v-529e392c",path:"/btcpay-server-1-10-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-529e392c").then(n)}},{path:"/btcpay-server-1-10-0/index.html",redirect:"/btcpay-server-1-10-0/"},{path:"/_posts/btcpay-server-1-10-0.html",redirect:"/btcpay-server-1-10-0/"},{name:"v-f8ff4568",path:"/btcpay-server-1-11-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-f8ff4568").then(n)}},{path:"/btcpay-server-1-11-0/index.html",redirect:"/btcpay-server-1-11-0/"},{path:"/_posts/btcpay-server-1-11-0.html",redirect:"/btcpay-server-1-11-0/"},{name:"v-973afd28",path:"/btcpay-server-1-12-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-973afd28").then(n)}},{path:"/btcpay-server-1-12-0/index.html",redirect:"/btcpay-server-1-12-0/"},{path:"/_posts/btcpay-server-1-12-0.html",redirect:"/btcpay-server-1-12-0/"},{name:"v-b5151f96",path:"/btcpay-server-1-13-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-b5151f96").then(n)}},{path:"/btcpay-server-1-13-0/index.html",redirect:"/btcpay-server-1-13-0/"},{path:"/_posts/btcpay-server-1-13-0 .html",redirect:"/btcpay-server-1-13-0/"},{name:"v-293dce38",path:"/btcpay-server-1-2-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-293dce38").then(n)}},{path:"/btcpay-server-1-2-0/index.html",redirect:"/btcpay-server-1-2-0/"},{path:"/_posts/btcpay-server-1-2-0.html",redirect:"/btcpay-server-1-2-0/"},{name:"v-96d63b3c",path:"/btcpay-server-1-3-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-96d63b3c").then(n)}},{path:"/btcpay-server-1-3-0/index.html",redirect:"/btcpay-server-1-3-0/"},{path:"/_posts/btcpay-server-1-3-0.html",redirect:"/btcpay-server-1-3-0/"},{name:"v-7dc8abe0",path:"/btcpay-server-1-4-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-7dc8abe0").then(n)}},{path:"/btcpay-server-1-4-0/index.html",redirect:"/btcpay-server-1-4-0/"},{path:"/_posts/btcpay-server-1-4-0.html",redirect:"/btcpay-server-1-4-0/"},{name:"v-46fc755e",path:"/btcpay-server-1-5-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-46fc755e").then(n)}},{path:"/btcpay-server-1-5-0/index.html",redirect:"/btcpay-server-1-5-0/"},{path:"/_posts/btcpay-server-1-5-0.html",redirect:"/btcpay-server-1-5-0/"},{name:"v-10303edc",path:"/btcpay-server-1-6-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-10303edc").then(n)}},{path:"/btcpay-server-1-6-0/index.html",redirect:"/btcpay-server-1-6-0/"},{path:"/_posts/btcpay-server-1-6-0.html",redirect:"/btcpay-server-1-6-0/"},{name:"v-4d37ef4c",path:"/btcpay-server-1-7-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-4d37ef4c").then(n)}},{path:"/btcpay-server-1-7-0/index.html",redirect:"/btcpay-server-1-7-0/"},{path:"/_posts/btcpay-server-1-7-0.html",redirect:"/btcpay-server-1-7-0/"},{name:"v-bad05c50",path:"/btcpay-server-1-8-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-bad05c50").then(n)}},{path:"/btcpay-server-1-8-0/index.html",redirect:"/btcpay-server-1-8-0/"},{path:"/_posts/btcpay-server-1-8-0.html",redirect:"/btcpay-server-1-8-0/"},{name:"v-6bcb9b56",path:"/btcpay-server-1-9-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-6bcb9b56").then(n)}},{path:"/btcpay-server-1-9-0/index.html",redirect:"/btcpay-server-1-9-0/"},{path:"/_posts/btcpay-server-1-9-0.html",redirect:"/btcpay-server-1-9-0/"},{name:"v-8a7ea4a8",path:"/btcpay-server-2-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-8a7ea4a8").then(n)}},{path:"/btcpay-server-2-0/index.html",redirect:"/btcpay-server-2-0/"},{path:"/_posts/btcpay-server-2-0.html",redirect:"/btcpay-server-2-0/"},{name:"v-2bdfe6a8",path:"/btcpay-server-cve-2022-32984/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-2bdfe6a8").then(n)}},{path:"/btcpay-server-cve-2022-32984/index.html",redirect:"/btcpay-server-cve-2022-32984/"},{path:"/_posts/btcpay-server-CVE-2022-32984.html",redirect:"/btcpay-server-cve-2022-32984/"},{name:"v-347df1ac",path:"/btcpay-server-btse/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-347df1ac").then(n)}},{path:"/btcpay-server-btse/index.html",redirect:"/btcpay-server-btse/"},{path:"/_posts/btcpay-server-btse.html",redirect:"/btcpay-server-btse/"},{name:"v-511f408c",path:"/btcpay-server-foundation-introspective/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-511f408c").then(n)}},{path:"/btcpay-server-foundation-introspective/index.html",redirect:"/btcpay-server-foundation-introspective/"},{path:"/_posts/btcpay-server-foundation-introspective.html",redirect:"/btcpay-server-foundation-introspective/"},{name:"v-42608e28",path:"/btcpay-server-grant-7-okcoin/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-42608e28").then(n)}},{path:"/btcpay-server-grant-7-okcoin/index.html",redirect:"/btcpay-server-grant-7-okcoin/"},{path:"/_posts/btcpay-server-grant-7-okcoin.html",redirect:"/btcpay-server-grant-7-okcoin/"},{name:"v-db861df0",path:"/btcpay-server-grant-baillie-gifford/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-db861df0").then(n)}},{path:"/btcpay-server-grant-baillie-gifford/index.html",redirect:"/btcpay-server-grant-baillie-gifford/"},{path:"/_posts/btcpay-server-grant-baillie-gifford.html",redirect:"/btcpay-server-grant-baillie-gifford/"},{name:"v-3ef1982c",path:"/btcpay-server-grant-pnxbet/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-3ef1982c").then(n)}},{path:"/btcpay-server-grant-pnxbet/index.html",redirect:"/btcpay-server-grant-pnxbet/"},{path:"/_posts/btcpay-server-grant-pnxbet.html",redirect:"/btcpay-server-grant-pnxbet/"},{name:"v-127af38c",path:"/btcpay-server-kraken-grant/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-127af38c").then(n)}},{path:"/btcpay-server-kraken-grant/index.html",redirect:"/btcpay-server-kraken-grant/"},{path:"/_posts/btcpay-server-kraken-grant.html",redirect:"/btcpay-server-kraken-grant/"},{name:"v-4071114c",path:"/btcpay-server-v1-0-7-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-4071114c").then(n)}},{path:"/btcpay-server-v1-0-7-0/index.html",redirect:"/btcpay-server-v1-0-7-0/"},{path:"/_posts/btcpay-server-v1-0-7-0.html",redirect:"/btcpay-server-v1-0-7-0/"},{name:"v-67eac528",path:"/btcpay-vault/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-67eac528").then(n)}},{path:"/btcpay-vault/index.html",redirect:"/btcpay-vault/"},{path:"/_posts/btcpay-vault.html",redirect:"/btcpay-vault/"},{name:"v-636cee68",path:"/case-study-bhb24-nostriga/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-636cee68").then(n)}},{path:"/case-study-bhb24-nostriga/index.html",redirect:"/case-study-bhb24-nostriga/"},{path:"/_posts/case-study-bhb24-nostriga.html",redirect:"/case-study-bhb24-nostriga/"},{name:"v-5cd1fdc4",path:"/case-study-bitcoin-atlantis/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-5cd1fdc4").then(n)}},{path:"/case-study-bitcoin-atlantis/index.html",redirect:"/case-study-bitcoin-atlantis/"},{path:"/_posts/case-study-bitcoin-atlantis.html",redirect:"/case-study-bitcoin-atlantis/"},{name:"v-75a17a68",path:"/case-study-bitcoin-jungle-cr/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-75a17a68").then(n)}},{path:"/case-study-bitcoin-jungle-cr/index.html",redirect:"/case-study-bitcoin-jungle-cr/"},{path:"/_posts/case-study-bitcoin-jungle-cr.html",redirect:"/case-study-bitcoin-jungle-cr/"},{name:"v-7ed5a5a0",path:"/case-study-bitcoin-people/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-7ed5a5a0").then(n)}},{path:"/case-study-bitcoin-people/index.html",redirect:"/case-study-bitcoin-people/"},{path:"/_posts/case-study-bitcoin-people.html",redirect:"/case-study-bitcoin-people/"},{name:"v-0d961d0c",path:"/case-study-coincards/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-0d961d0c").then(n)}},{path:"/case-study-coincards/index.html",redirect:"/case-study-coincards/"},{path:"/_posts/case-study-coincards.html",redirect:"/case-study-coincards/"},{name:"v-3b4a92e8",path:"/case-study-hodlhodl-2023/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-3b4a92e8").then(n)}},{path:"/case-study-hodlhodl-2023/index.html",redirect:"/case-study-hodlhodl-2023/"},{path:"/_posts/case-study-hodlhodl-2023.html",redirect:"/case-study-hodlhodl-2023/"},{name:"v-194aa16c",path:"/case-study-opensubtitles/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-194aa16c").then(n)}},{path:"/case-study-opensubtitles/index.html",redirect:"/case-study-opensubtitles/"},{path:"/_posts/case-study-opensubtitles.html",redirect:"/case-study-opensubtitles/"},{name:"v-75f7bbe8",path:"/case-study-strainly/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-75f7bbe8").then(n)}},{path:"/case-study-strainly/index.html",redirect:"/case-study-strainly/"},{path:"/_posts/case-study-strainly.html",redirect:"/case-study-strainly/"},{name:"v-fc399aa8",path:"/case-study-technical-prism-sideshift/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-fc399aa8").then(n)}},{path:"/case-study-technical-prism-sideshift/index.html",redirect:"/case-study-technical-prism-sideshift/"},{path:"/_posts/case-study-technical-prism-sideshift.html",redirect:"/case-study-technical-prism-sideshift/"},{name:"v-d31850e8",path:"/case-study-voltage/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-d31850e8").then(n)}},{path:"/case-study-voltage/index.html",redirect:"/case-study-voltage/"},{path:"/_posts/case-study-voltage.html",redirect:"/case-study-voltage/"},{name:"v-f6ea4c28",path:"/dg-grant-2019/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-f6ea4c28").then(n)}},{path:"/dg-grant-2019/index.html",redirect:"/dg-grant-2019/"},{path:"/_posts/dg-grant-2019.html",redirect:"/dg-grant-2019/"},{name:"v-312de42c",path:"/how-to-accept-bitcoin-donations/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-312de42c").then(n)}},{path:"/how-to-accept-bitcoin-donations/index.html",redirect:"/how-to-accept-bitcoin-donations/"},{path:"/_posts/how-to-accept-bitcoin-donations.html",redirect:"/how-to-accept-bitcoin-donations/"},{name:"v-492b1fe8",path:"/how-to-earn-bitcoin-btcpayserver/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-492b1fe8").then(n)}},{path:"/how-to-earn-bitcoin-btcpayserver/index.html",redirect:"/how-to-earn-bitcoin-btcpayserver/"},{path:"/_posts/how-to-earn-bitcoin-btcpayserver.html",redirect:"/how-to-earn-bitcoin-btcpayserver/"},{name:"v-8e8a67e8",path:"/interview-with-jeff-vandrew-jr/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-8e8a67e8").then(n)}},{path:"/interview-with-jeff-vandrew-jr/index.html",redirect:"/interview-with-jeff-vandrew-jr/"},{path:"/_posts/interview-with-jeff-vandrew-jr.html",redirect:"/interview-with-jeff-vandrew-jr/"},{name:"v-2fcedaac",path:"/jamie-lim-sticky-singapore/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-2fcedaac").then(n)}},{path:"/jamie-lim-sticky-singapore/index.html",redirect:"/jamie-lim-sticky-singapore/"},{path:"/_posts/jamie-lim-sticky-singapore.html",redirect:"/jamie-lim-sticky-singapore/"},{name:"v-45be51d2",path:"/librepatron-patreon-alternative/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-45be51d2").then(n)}},{path:"/librepatron-patreon-alternative/index.html",redirect:"/librepatron-patreon-alternative/"},{path:"/_posts/librepatron-patreon-alternative.html",redirect:"/librepatron-patreon-alternative/"},{name:"v-22bca8a8",path:"/mike-olthoff-coincards/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-22bca8a8").then(n)}},{path:"/mike-olthoff-coincards/index.html",redirect:"/mike-olthoff-coincards/"},{path:"/_posts/mike-olthoff-coincards.html",redirect:"/mike-olthoff-coincards/"},{name:"v-03c118ec",path:"/nbxplorer-postgres/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-03c118ec").then(n)}},{path:"/nbxplorer-postgres/index.html",redirect:"/nbxplorer-postgres/"},{path:"/_posts/nbxplorer-postgres.html",redirect:"/nbxplorer-postgres/"},{name:"v-1df6814c",path:"/payment-requests/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-1df6814c").then(n)}},{path:"/payment-requests/index.html",redirect:"/payment-requests/"},{path:"/_posts/payment-requests.html",redirect:"/payment-requests/"},{name:"v-1627eb18",path:"/ride-the-lightning-btcpay/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-1627eb18").then(n)}},{path:"/ride-the-lightning-btcpay/index.html",redirect:"/ride-the-lightning-btcpay/"},{path:"/_posts/ride-the-lightning-btcpay.html",redirect:"/ride-the-lightning-btcpay/"},{name:"v-4ec352bc",path:"/this-is-lies-youre-now-obsolete/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-4ec352bc").then(n)}},{path:"/this-is-lies-youre-now-obsolete/index.html",redirect:"/this-is-lies-youre-now-obsolete/"},{path:"/_posts/this-is-lies-youre-now-obsolete.html",redirect:"/this-is-lies-youre-now-obsolete/"},{name:"v-d8f9098c",path:"/vulnerability-disclosure-v1-0-7-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-d8f9098c").then(n)}},{path:"/vulnerability-disclosure-v1-0-7-0/index.html",redirect:"/vulnerability-disclosure-v1-0-7-0/"},{path:"/_posts/vulnerability-disclosure-v1-0-7-0.html",redirect:"/vulnerability-disclosure-v1-0-7-0/"},{name:"v-3b36bdf4",path:"/xss-vulnerability-disclosure-doyensec/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-3b36bdf4").then(n)}},{path:"/xss-vulnerability-disclosure-doyensec/index.html",redirect:"/xss-vulnerability-disclosure-doyensec/"},{path:"/_posts/xss-vulnerability-disclosure-doyensec.html",redirect:"/xss-vulnerability-disclosure-doyensec/"},{name:"v-281f49ca",path:"/privacy-policy/",component:Ws,beforeEnter:(e,t,n)=>{ps("Layout","v-281f49ca").then(n)}},{path:"/privacy-policy/index.html",redirect:"/privacy-policy/"},{path:"/privacy-policy.html",redirect:"/privacy-policy/"},{name:"v-b2754d56",path:"/",component:Ws,beforeEnter:(e,t,n)=>{ps("IndexPost","v-b2754d56").then(n)},meta:{pid:"post",id:"post"}},{path:"/index.html",redirect:"/"},{name:"v-28e6393c",path:"/category/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterKey","v-28e6393c").then(n)},meta:{pid:"category",id:"category"}},{path:"/category/index.html",redirect:"/category/"},{name:"v-7d2105e2",path:"/author/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterKey","v-7d2105e2").then(n)},meta:{pid:"author",id:"author"}},{path:"/author/index.html",redirect:"/author/"},{name:"v-1a97baa7",path:"/category/releases/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-1a97baa7").then(n)},meta:{pid:"category",id:"releases"}},{path:"/category/releases/index.html",redirect:"/category/releases/"},{name:"v-4602e778",path:"/category/stories/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-4602e778").then(n)},meta:{pid:"category",id:"stories"}},{path:"/category/stories/index.html",redirect:"/category/stories/"},{name:"v-c614f442",path:"/category/announcements/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-c614f442").then(n)},meta:{pid:"category",id:"announcements"}},{path:"/category/announcements/index.html",redirect:"/category/announcements/"},{name:"v-8b44b548",path:"/category/guides/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-8b44b548").then(n)},meta:{pid:"category",id:"guides"}},{path:"/category/guides/index.html",redirect:"/category/guides/"},{name:"v-079fe454",path:"/category/features/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-079fe454").then(n)},meta:{pid:"category",id:"features"}},{path:"/category/features/index.html",redirect:"/category/features/"},{name:"v-3945bb29",path:"/category/case-studies/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-3945bb29").then(n)},meta:{pid:"category",id:"case-studies"}},{path:"/category/case-studies/index.html",redirect:"/category/case-studies/"},{name:"v-70cfb9cb",path:"/category/plugins/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-70cfb9cb").then(n)},meta:{pid:"category",id:"plugins"}},{path:"/category/plugins/index.html",redirect:"/category/plugins/"},{name:"v-1b2a4f46",path:"/author/pavlenex/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-1b2a4f46").then(n)},meta:{pid:"author",id:"pavlenex"}},{path:"/author/pavlenex/index.html",redirect:"/author/pavlenex/"},{name:"v-04ed8067",path:"/author/Nicolas/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-04ed8067").then(n)},meta:{pid:"author",id:"Nicolas"}},{path:"/author/Nicolas/index.html",redirect:"/author/Nicolas/"},{name:"v-a7039020",path:"/author/RockstarDev, Pavlenex, WebWorthy/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-a7039020").then(n)},meta:{pid:"author",id:"RockstarDev, Pavlenex, WebWorthy"}},{path:"/author/RockstarDev, Pavlenex, WebWorthy/index.html",redirect:"/author/RockstarDev, Pavlenex, WebWorthy/"},{name:"v-0cca2b78",path:"/author/ndeet, petzsch/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-0cca2b78").then(n)},meta:{pid:"author",id:"ndeet, petzsch"}},{path:"/author/ndeet, petzsch/index.html",redirect:"/author/ndeet, petzsch/"},{name:"v-3403a1ae",path:"/author/Zaxounette/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-3403a1ae").then(n)},meta:{pid:"author",id:"Zaxounette"}},{path:"/author/Zaxounette/index.html",redirect:"/author/Zaxounette/"},{name:"v-6daaf85f",path:"/author/WebWorthy/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-6daaf85f").then(n)},meta:{pid:"author",id:"WebWorthy"}},{path:"/author/WebWorthy/index.html",redirect:"/author/WebWorthy/"},{name:"v-545bd84a",path:"/author/Bas/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-545bd84a").then(n)},meta:{pid:"author",id:"Bas"}},{path:"/author/Bas/index.html",redirect:"/author/Bas/"},{name:"v-69dcf83d",path:"/author/Pavlenex/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-69dcf83d").then(n)},meta:{pid:"author",id:"Pavlenex"}},{path:"/author/Pavlenex/index.html",redirect:"/author/Pavlenex/"},{name:"v-0ace2199",path:"/author/Pavlenex, Webworthy/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-0ace2199").then(n)},meta:{pid:"author",id:"Pavlenex, Webworthy"}},{path:"/author/Pavlenex, Webworthy/index.html",redirect:"/author/Pavlenex, Webworthy/"},{name:"v-754df0d0",path:"/author/Elha, Pavlenex, Webworthy/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-754df0d0").then(n)},meta:{pid:"author",id:"Elha, Pavlenex, Webworthy"}},{path:"/author/Elha, Pavlenex, Webworthy/index.html",redirect:"/author/Elha, Pavlenex, Webworthy/"},{name:"v-72fc62d1",path:"/author/RockstarDev, MrKukks/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-72fc62d1").then(n)},meta:{pid:"author",id:"RockstarDev, MrKukks"}},{path:"/author/RockstarDev, MrKukks/index.html",redirect:"/author/RockstarDev, MrKukks/"},{name:"v-08cfd63a",path:"/author/Pavlenex, Webworthy, Bobby Shell/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-08cfd63a").then(n)},meta:{pid:"author",id:"Pavlenex, Webworthy, Bobby Shell"}},{path:"/author/Pavlenex, Webworthy, Bobby Shell/index.html",redirect:"/author/Pavlenex, Webworthy, Bobby Shell/"},{name:"v-6033dbf8",path:"/author/NicolasDorier/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-6033dbf8").then(n)},meta:{pid:"author",id:"NicolasDorier"}},{path:"/author/NicolasDorier/index.html",redirect:"/author/NicolasDorier/"},{name:"v-8fdafa70",path:"/page/2/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-8fdafa70").then(n)},meta:{pid:"post",id:"post"}},{path:"/page/2/index.html",redirect:"/page/2/"},{name:"v-8fdafa32",path:"/page/3/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-8fdafa32").then(n)},meta:{pid:"post",id:"post"}},{path:"/page/3/index.html",redirect:"/page/3/"},{name:"v-8fdaf9f4",path:"/page/4/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-8fdaf9f4").then(n)},meta:{pid:"post",id:"post"}},{path:"/page/4/index.html",redirect:"/page/4/"},{name:"v-8fdaf9b6",path:"/page/5/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-8fdaf9b6").then(n)},meta:{pid:"post",id:"post"}},{path:"/page/5/index.html",redirect:"/page/5/"},{name:"v-8fdaf978",path:"/page/6/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-8fdaf978").then(n)},meta:{pid:"post",id:"post"}},{path:"/page/6/index.html",redirect:"/page/6/"},{name:"v-8fdaf93a",path:"/page/7/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-8fdaf93a").then(n)},meta:{pid:"post",id:"post"}},{path:"/page/7/index.html",redirect:"/page/7/"},{name:"v-8fdaf8fc",path:"/page/8/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-8fdaf8fc").then(n)},meta:{pid:"post",id:"post"}},{path:"/page/8/index.html",redirect:"/page/8/"},{name:"v-4c216136",path:"/category/releases/page/2/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-4c216136").then(n)},meta:{pid:"category",id:"releases"}},{path:"/category/releases/page/2/index.html",redirect:"/category/releases/page/2/"},{name:"v-4c216155",path:"/category/releases/page/3/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-4c216155").then(n)},meta:{pid:"category",id:"releases"}},{path:"/category/releases/page/3/index.html",redirect:"/category/releases/page/3/"},{name:"v-04e25745",path:"/category/stories/page/2/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-04e25745").then(n)},meta:{pid:"category",id:"stories"}},{path:"/category/stories/page/2/index.html",redirect:"/category/stories/page/2/"},{name:"v-1efb06fe",path:"/category/announcements/page/2/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-1efb06fe").then(n)},meta:{pid:"category",id:"announcements"}},{path:"/category/announcements/page/2/index.html",redirect:"/category/announcements/page/2/"},{name:"v-25ccea80",path:"/author/pavlenex/page/2/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-25ccea80").then(n)},meta:{pid:"author",id:"pavlenex"}},{path:"/author/pavlenex/page/2/index.html",redirect:"/author/pavlenex/page/2/"},{name:"v-25ccea42",path:"/author/pavlenex/page/3/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-25ccea42").then(n)},meta:{pid:"author",id:"pavlenex"}},{path:"/author/pavlenex/page/3/index.html",redirect:"/author/pavlenex/page/3/"},{name:"v-25ccea04",path:"/author/pavlenex/page/4/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-25ccea04").then(n)},meta:{pid:"author",id:"pavlenex"}},{path:"/author/pavlenex/page/4/index.html",redirect:"/author/pavlenex/page/4/"},{path:"*",component:Ws}],Hs={title:"BTCPay Server Blog",description:"Official BTCPay Server Blog",base:"/",headTags:[["link",{rel:"stylesheet",href:"/styles/btcpayserver-variables.css"}],["link",{rel:"shortcut icon",href:"/favicon.ico"}],["link",{rel:"alternate",type:"application/rss+xml",href:"https://blog.btcpayserver.org/rss.xml",title:"BTCPay Server Blog RSS Feed"}],["link",{rel:"alternate",type:"application/atom+xml",href:"https://blog.btcpayserver.org/feed.atom",title:"BTCPay Server Blog Atom Feed"}],["link",{rel:"alternate",type:"application/json",href:"https://blog.btcpayserver.org/feed.json",title:"BTCPay Server Blog JSON Feed"}]],pages:[{title:"BTCPay Server 1.0.3.128 released - Inventory management, LN for non-admins, polishing PoS and more!",frontmatter:{title:"BTCPay Server 1.0.3.128 released - Inventory management, LN for non-admins, polishing PoS and more!",date:"2019-09-04T00:00:00.000Z",author:"pavlenex",category:"releases",permalink:"/1-0-3-128-released",coverImage:"/images/1.0.3.128.jpg",layout:"Post"},regularPath:"/_posts/1-0-3-128-released.html",relativePath:"_posts/1-0-3-128-released.md",key:"v-499e2aec",path:"/1-0-3-128-released/",headers:[{level:2,title:"1.0.3.128 Changelog",slug:"103128-changelog"},{level:2,title:"Features",slug:"features"},{level:3,title:"Invetory Management in Apps",slug:"invetory-management-in-apps"},{level:3,title:"Lightning Network for non-admins",slug:"lightning-network-for-non-admins"},{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server version 1.0.3.132 released",frontmatter:{title:"BTCPay Server version 1.0.3.132 released",date:"2019-09-23T00:00:00.000Z",author:"Nicolas",category:["releases"],coverImage:"/images/1.0.3.132.jpg",permalink:"/1-0-3-132-released",layout:"Post"},regularPath:"/_posts/1-0-3-132-released.html",relativePath:"_posts/1-0-3-132-released.md",key:"v-1921d58c",path:"/1-0-3-132-released/",headers:[{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 2019 Year in Review",frontmatter:{title:"BTCPay Server 2019 Year in Review",date:"2019-12-29T00:00:00.000Z",author:"pavlenex",category:["stories"],coverImage:"/images/BTCPAY-2019-1024x576.png",permalink:"/2019-year-in-review",layout:"Post"},regularPath:"/_posts/2019-year-in-review.html",relativePath:"_posts/2019-year-in-review.md",key:"v-6c585c80",path:"/2019-year-in-review/",headers:[{level:2,title:"January",slug:"january"},{level:2,title:"February",slug:"february"},{level:2,title:"March",slug:"march"},{level:2,title:"April",slug:"april"},{level:2,title:"May",slug:"may"},{level:2,title:"June",slug:"june"},{level:2,title:"July",slug:"july"},{level:2,title:"August",slug:"august"},{level:2,title:"September",slug:"september"},{level:2,title:"October",slug:"october"},{level:2,title:"November",slug:"november"},{level:2,title:"December",slug:"december"},{level:2,title:"Thank you!",slug:"thank-you-"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Directory - Showcasing merchants, charities, apps and projects using BTCPay Server",frontmatter:{title:"BTCPay Directory - Showcasing merchants, charities, apps and projects using BTCPay Server",date:"2019-07-21T00:00:00.000Z",author:"pavlenex",category:["announcements"],tags:["bitcoin-merchants"],coverImage:"/images/btcpay-directory.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/announcing-btcpay-directory.html",relativePath:"_posts/announcing-btcpay-directory.md",key:"v-19d2659c",path:"/announcing-btcpay-directory/",headers:[{level:2,title:"Submitting your entry",slug:"submitting-your-entry"},{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 2024, The Year of Ambassadors",frontmatter:{title:"BTCPay Server 2024, The Year of Ambassadors",date:"2024-01-18T00:00:00.000Z",author:"RockstarDev, Pavlenex, WebWorthy",category:["stories"],tags:["bitcoin","ambassadors","merchants","FOSS","btcpay app","circular economies"],coverImage:"/images/bitcoin-2024-the-year-of-ambassadors/cover.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/bitcoin-2024-the-year-of-ambassadors.html",relativePath:"_posts/bitcoin-2024-the-year-of-ambassadors.md",key:"v-cd62a5a8",path:"/bitcoin-2024-the-year-of-ambassadors/",id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Bitcoin Bonus Scam",frontmatter:{title:"Bitcoin Bonus Scam",date:"2023-03-10T00:00:00.000Z",author:"ndeet, petzsch",category:["stories"],tags:["bitcoin bonus","scam"],coverImage:"/images/bitcoinbonus-header.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/bitcoin-bonus-scam.html",relativePath:"_posts/bitcoin-bonus-scam.md",key:"v-6028760c",path:"/bitcoin-bonus-scam/",headers:[{level:2,title:"What happened",slug:"what-happened"},{level:2,title:"What is BTCPay Server and why we can’t help",slug:"what-is-btcpay-server-and-why-we-can-t-help"},{level:2,title:"How the scam works",slug:"how-the-scam-works"},{level:2,title:"What we’ve done to mitigate it",slug:"what-we-ve-done-to-mitigate-it"},{level:2,title:"What to do if you were affected by the scam",slug:"what-to-do-if-you-were-affected-by-the-scam"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Bitpaint - BTCPay Server Stories",frontmatter:{title:"Bitpaint - BTCPay Server Stories",date:"2020-11-06T00:00:00.000Z",author:"Zaxounette",category:["stories"],tags:["art","btcpay-server","france","interview","stories"],coverImage:"/images/BTCPS_Bitpaint_Featured_Edited.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/bitpaint-btcpay-server-stories.html",relativePath:"_posts/bitpaint-btcpay-server-stories.md",key:"v-1db83acc",path:"/bitpaint-btcpay-server-stories/",headers:[{level:2,title:"",slug:""},{level:2,title:"The BTCPay Server encounter",slug:"the-btcpay-server-encounter"},{level:2,title:"Future thoughts",slug:"future-thoughts"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"How to create a Bitcoin Point of Sale (PoS)",frontmatter:{title:"How to create a Bitcoin Point of Sale (PoS)",author:"pavlenex",date:"2019-03-12T00:00:00.000Z",category:"guides",tags:["apps","pos"],coverImage:"/images/Bitcoin-Point-Of-Sale-1024x768.jpg",permalink:"/bitcoin-pos",layout:"Post"},regularPath:"/_posts/bitcoin-pos.html",relativePath:"_posts/bitcoin-pos.md",key:"v-105c3aa4",path:"/bitcoin-pos/",headers:[{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Steps",slug:"steps"},{level:2,title:"Step 1 - Deploying BTCPay",slug:"step-1-deploying-btcpay"},{level:2,title:"Step 2 - Registering, creating a store, connecting a wallet",slug:"step-2-registering-creating-a-store-connecting-a-wallet"},{level:3,title:"2.1 - Creating an account",slug:"21-creating-an-account"},{level:3,title:"2.2 - Creating a store",slug:"22-creating-a-store"},{level:3,title:"2.3 - Connecting a wallet",slug:"23-connecting-a-wallet"},{level:2,title:"Step 3 - Creating Point of Sale app",slug:"step-3-creating-point-of-sale-app"},{level:2,title:"Step 4 - Adding link as a desktop shortcut",slug:"step-4-adding-link-as-a-desktop-shortcut"},{level:2,title:"Don't buy Bitcoin - earn it",slug:"dont-buy-bitcoin-earn-it"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Brian Harrington - BTCPay Server Stories",frontmatter:{title:"Brian Harrington - BTCPay Server Stories",date:"2020-10-10T00:00:00.000Z",author:"Zaxounette",category:["stories"],tags:["bitcoin-circular-economy","btcpay-server","interview","stories","usa"],coverImage:"/images/Group-49.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/brian-harrington-btcpay-server-stories.html",relativePath:"_posts/brian-harrington-btcpay-server-stories.md",key:"v-72ecdccc",path:"/brian-harrington-btcpay-server-stories/",headers:[{level:2,title:"",slug:""},{level:2,title:"Meeting BTCPay Server",slug:"meeting-btcpay-server"},{level:2,title:"BTCPay Server's future",slug:"btcpay-servers-future"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay 1.0.3.127 released - Fixing a vulnerability, introducing wallet labels, comments and more",frontmatter:{title:"BTCPay 1.0.3.127 released - Fixing a vulnerability, introducing wallet labels, comments and more",date:"2019-08-10T00:00:00.000Z",author:"pavlenex",category:["features","releases"],coverImage:"/images/1.0.3.127.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-1-0-3-127-released.html",relativePath:"_posts/btcpay-1-0-3-127-released.md",key:"v-69792af4",path:"/btcpay-1-0-3-127-released/",headers:[{level:2,title:"Wallet labels",slug:"wallet-labels"},{level:3,title:"Wallet Comments",slug:"wallet-comments"},{level:2,title:"1.0.3.127 Changelog",slug:"103127-changelog"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server version 1.0.3.137 released",frontmatter:{title:"BTCPay Server version 1.0.3.137 released",date:"2019-11-07T00:00:00.000Z",author:"pavlenex",category:["features","releases"],coverImage:"/images/1.0.3.137.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-1-0-3-137-released.html",relativePath:"_posts/btcpay-1-0-3-137-released.md",key:"v-78e3a332",path:"/btcpay-1-0-3-137-released/",headers:[{level:2,title:"1.0.3.137 Changelog",slug:"103137-changelog"},{level:3,title:"Docker deployment:",slug:"docker-deployment"},{level:2,title:"The new login page",slug:"the-new-login-page"},{level:2,title:"Fully Noded Integration",slug:"fully-noded-integration"},{level:2,title:"Eclair support",slug:"eclair-support"},{level:2,title:"ElectrumX support",slug:"electrumx-support"},{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Announcing BTCPay Day on the 16th of September in Riga",frontmatter:{title:"Announcing BTCPay Day on the 16th of September in Riga",date:"2019-08-20T00:00:00.000Z",author:"pavlenex",category:["announcements"],coverImage:"/images/BTCPay-Day-Riga-2019-Featured.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-day-2019.html",relativePath:"_posts/btcpay-day-2019.md",key:"v-5923a558",path:"/btcpay-day-2019/",headers:[{level:2,title:"Location and Time",slug:"location-and-time"},{level:2,title:"Agenda",slug:"agenda"},{level:2,title:"Early Bird Tickets available",slug:"early-bird-tickets-available"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Announcing BTCPay Day 2022 Riga 💚🇱🇻",frontmatter:{title:"Announcing BTCPay Day 2022 Riga 💚🇱🇻",date:"2022-08-04T00:00:00.000Z",author:"pavlenex",category:["announcements"],coverImage:"/images/btcpay-day-riga-2022-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-day-2022-riga.html",relativePath:"_posts/btcpay-day-2022-riga.md",key:"v-00e62a0c",path:"/btcpay-day-2022-riga/",headers:[{level:2,title:"BTCPay Day Riga 2022",slug:"btcpay-day-riga-2022"},{level:3,title:"Location and Time",slug:"location-and-time"},{level:2,title:"Early Bird Tickets available",slug:"early-bird-tickets-available"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"First BTCPay Day Riga 2019 Recap",frontmatter:{title:"First BTCPay Day Riga 2019 Recap",date:"2019-09-19T00:00:00.000Z",author:"pavlenex",category:["stories"],tags:["btcpayday","events"],coverImage:"/images/btcpaydayriga2019.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-day-riga-2019-recap.html",relativePath:"_posts/btcpay-day-riga-2019-recap.md",key:"v-cc0c9ce8",path:"/btcpay-day-riga-2019-recap/",id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"MY TRUST IN YOU IS BROKEN, BTCPay Server Feature Documentary Premiere",frontmatter:{title:"MY TRUST IN YOU IS BROKEN, BTCPay Server Feature Documentary Premiere",date:"2024-04-04T00:00:00.000Z",author:"WebWorthy",category:["stories"],tags:["bitcoin","documentary","FOSS","blocksize wars","Nicolas Dorier"],coverImage:"/images/2024-btcpay-documentary/btcpay-documentary-cover.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-documentary-my-trust-in-you-is-broken.html",relativePath:"_posts/btcpay-documentary-my-trust-in-you-is-broken.md",key:"v-48df8fa8",path:"/btcpay-documentary-my-trust-in-you-is-broken/",headers:[{level:3,title:"Description for Press",slug:"description-for-press"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Announcing the BTCPay Server Foundation and our first grant from Square Crypto",frontmatter:{title:"Announcing the BTCPay Server Foundation and our first grant from Square Crypto",date:"2019-09-14T00:00:00.000Z",author:"pavlenex",category:["announcements"],coverImage:"/images/BTCPayFoundation.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-foundation-announcement.html",relativePath:"_posts/btcpay-foundation-announcement.md",key:"v-1245cc68",path:"/btcpay-foundation-announcement/",headers:[{level:2,title:"BTCPay Server Foundation",slug:"btcpay-server-foundation"},{level:2,title:"Square Crypto Grant",slug:"square-crypto-grant"},{level:2,title:"Supporting the foundation",slug:"supporting-the-foundation"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Migration from noseedbackup=1 to LND with seed",frontmatter:{title:"Migration from noseedbackup=1 to LND with seed",date:"2019-11-16T00:00:00.000Z",author:"pavlenex",category:["features"],tags:["lightning-network"],coverImage:"/images/LND-Migration-BTCPay.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-lnd-migration.html",relativePath:"_posts/btcpay-lnd-migration.md",key:"v-272b7c8c",path:"/btcpay-lnd-migration/",headers:[{level:2,title:"The history behind the issue",slug:"the-history-behind-the-issue"},{level:2,title:"How to migrate?",slug:"how-to-migrate"},{level:2,title:"Static channel backup (optional)",slug:"static-channel-backup-optional"},{level:2,title:"Thank you",slug:"thank-you"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Debunking BTCPay Server misconceptions",frontmatter:{title:"Debunking BTCPay Server misconceptions",author:"pavlenex",date:"2019-03-13T00:00:00.000Z",category:"announcements",coverImage:"/images/BTCPay-Server-Myths.jpg",permalink:"/btcpay-misconceptions",layout:"Post"},regularPath:"/_posts/btcpay-misconceptions.html",relativePath:"_posts/btcpay-misconceptions.md",key:"v-9ed1236c",path:"/btcpay-misconceptions/",headers:[{level:2,title:"1\\. BTCPay only runs on Azure and LunaNode",slug:"1-btcpay-only-runs-on-azure-and-lunanode"},{level:2,title:"2\\. BTCPay supports shitcoins",slug:"2-btcpay-supports-shitcoins"},{level:2,title:"3\\. BTCPay is expensive",slug:"3-btcpay-is-expensive"},{level:2,title:"4\\. BTCPay is a company",slug:"4-btcpay-is-a-company"},{level:2,title:"5\\. BTCPay does not have a conversion to fiat",slug:"5-btcpay-does-not-have-a-conversion-to-fiat"},{level:2,title:"6\\. BTCPay and Shopify",slug:"6-btcpay-and-shopify"},{level:2,title:"7\\. Only merchants can use BTCPay",slug:"7-only-merchants-can-use-btcpay"},{level:3,title:"Who can use BTCPay? - Anyone. Anywhere. Anytime.",slug:"who-can-use-btcpay-anyone-anywhere-anytime"},{level:2,title:"8\\. BTCPay is a clone of BitPay",slug:"8-btcpay-is-a-clone-of-bitpay"},{level:2,title:"9\\. BTCPay is a competitor to centralized payment processors",slug:"9-btcpay-is-a-competitor-to-centralized-payment-processors"},{level:2,title:"10\\. BTCPay nodes are slow to sync, nobody's going to wait",slug:"10-btcpay-nodes-are-slow-to-sync-nobodys-going-to-wait"},{level:2,title:"Summary",slug:"summary"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server version 1.0.3.147 is out!",frontmatter:{title:"BTCPay Server version 1.0.3.147 is out!",date:"2020-01-14T00:00:00.000Z",author:"pavlenex",category:["releases"],coverImage:"/images/1.0.3.147.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-0-3-147.html",relativePath:"_posts/btcpay-server-1-0-3-147.md",key:"v-7d95c994",path:"/btcpay-server-1-0-3-147/",headers:[{level:2,title:"Migration to .NET Core 3.1.",slug:"migration-to-net-core-31"},{level:2,title:"BitcoinAverage replaced with CoinGecko",slug:"bitcoinaverage-replaced-with-coingecko"},{level:3,title:"Do not preemptively fetch rates of all exchanges",slug:"do-not-preemptively-fetch-rates-of-all-exchanges"},{level:2,title:"Hot Wallet",slug:"hot-wallet"},{level:2,title:"A thank you to our contributors",slug:"a-thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.0.3.95 Released (Invoice improvements, U2F support, Bitcoin Full Node connect to mobile via QR code, external storage support and more!)",frontmatter:{title:"BTCPay Server 1.0.3.95 Released (Invoice improvements, U2F support, Bitcoin Full Node connect to mobile via QR code, external storage support and more!)",date:"2019-05-07T00:00:00.000Z",author:"pavlenex",category:["releases"],coverImage:"/images/BTCPay-New-Version-1.0.3.95-.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-0-3-95.html",relativePath:"_posts/btcpay-server-1-0-3-95.md",key:"v-ebc87668",path:"/btcpay-server-1-0-3-95/",headers:[{level:2,title:"Invoice list updates",slug:"invoice-list-updates"},{level:2,title:"U2F Support added",slug:"u2f-support-added"},{level:2,title:"External storage service support",slug:"external-storage-service-support"},{level:2,title:"Internal Wallet improvements",slug:"internal-wallet-improvements"},{level:2,title:"Various bug fixes and UX improvements",slug:"various-bug-fixes-and-ux-improvements"},{level:2,title:"Known Issues",slug:"known-issues"},{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Introducing BTCPay Server 1.0.4.0",frontmatter:{title:"Introducing BTCPay Server 1.0.4.0",date:"2020-04-16T00:00:00.000Z",author:"pavlenex",category:["releases"],coverImage:"/images/v10040.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-0-4-0.html",relativePath:"_posts/btcpay-server-1-0-4-0.md",key:"v-45843d5a",path:"/btcpay-server-1-0-4-0/",headers:[{level:2,title:"What's new?",slug:"whats-new"},{level:3,title:"🕵️‍♂️ Payjoin (P2EP) Support",slug:"️‍♂️-payjoin-p2ep-support"},{level:3,title:"🌚 New Theme & Dark mode",slug:"-new-theme-dark-mode"},{level:3,title:"🧾 Re-designed Invoices",slug:"🧾-re-designed-invoices"},{level:3,title:"📷 New Wallet Features",slug:"-new-wallet-features"},{level:3,title:"👨‍💻 API improvements",slug:"‍-api-improvements"},{level:2,title:"🐛 Bug fixes and improvements",slug:"-bug-fixes-and-improvements"},{level:2,title:"How to update?",slug:"how-to-update"},{level:2,title:"🏪 New website & merchant directory",slug:"-new-website-merchant-directory"},{level:3,title:"🗺️ Translators needed",slug:"️-translators-needed"},{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.0.5.0 is out!",frontmatter:{title:"BTCPay Server 1.0.5.0 is out!",date:"2020-06-26T00:00:00.000Z",author:"pavlenex",category:["releases"],coverImage:"/images/v10050-1024x576-1.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-0-5-0.html",relativePath:"_posts/btcpay-server-1-0-5-0.md",key:"v-04835b18",path:"/btcpay-server-1-0-5-0/",headers:[{level:2,title:"What’s new?",slug:"what-s-new"},{level:3,title:"🔔Notifications",slug:"notifications"},{level:3,title:"🧾Pull payments",slug:"🧾pull-payments"},{level:3,title:"💰Wallet improvements",slug:"wallet-improvements"},{level:3,title:"👨‍💻Greenfield API lift-off!🚀",slug:"‍greenfield-api-lift-off-"},{level:3,title:"🐛 Bug fixes and improvements",slug:"-bug-fixes-and-improvements"},{level:2,title:"How to update?",slug:"how-to-update"},{level:2,title:"📄New Documentation",slug:"new-documentation"},{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.0.5.4 is out!",frontmatter:{title:"BTCPay Server 1.0.5.4 is out!",date:"2020-08-05T00:00:00.000Z",author:"pavlenex",category:["releases"],coverImage:"/images/v10050-1024x576-1.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-0-5-4.html",relativePath:"_posts/btcpay-server-1-0-5-4.md",key:"v-debd9fe0",path:"/btcpay-server-1-0-5-4/",headers:[{level:2,title:"🆕What's new in v1.0.5.4?",slug:"whats-new-in-v1054"},{level:3,title:"⚒️ Bitcoin-only build",slug:"⚒️-bitcoin-only-build"},{level:3,title:"What does this mean for BTCPay Server developers?",slug:"what-does-this-mean-for-btcpay-server-developers"},{level:3,title:"👨‍💻Login page re-designed",slug:"‍login-page-re-designed"},{level:3,title:"✔️Recovery phrase page",slug:"✔️recovery-phrase-page"},{level:3,title:"🔔Multi-selection of invoices and notifications",slug:"multi-selection-of-invoices-and-notifications"},{level:2,title:"🐛Bug Fixes",slug:"bug-fixes"},{level:2,title:"🔐Security fixes",slug:"security-fixes"},{level:2,title:"How to update?",slug:"how-to-update"},{level:2,title:"BTCPay Server Foundation website",slug:"btcpay-server-foundation-website"},{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.0.5.6 is here!",frontmatter:{title:"BTCPay Server 1.0.5.6 is here!",date:"2020-10-01T00:00:00.000Z",author:"pavlenex",category:["releases"],coverImage:"/images/BTCPay10506.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-0-5-6.html",relativePath:"_posts/btcpay-server-1-0-5-6.md",key:"v-56b01a8c",path:"/btcpay-server-1-0-5-6/",headers:[{level:2,title:"What's new in 1.0.5.6? 🆕",slug:"whats-new-in-1056-"},{level:3,title:"Shopify Support 🛍️",slug:"shopify-support-️"},{level:3,title:"Simple Point Of Sale 🛒",slug:"simple-point-of-sale-"},{level:3,title:"Partial Invoice Refund 🧾",slug:"partial-invoice-refund-🧾"},{level:3,title:"New labels for payment requests, apps and payouts 🏷️",slug:"new-labels-for-payment-requests-apps-and-payouts-️"},{level:3,title:"Fiat entry in wallet 💲",slug:"fiat-entry-in-wallet-"},{level:3,title:"Invoice log severity 🚨",slug:"invoice-log-severity-"},{level:3,title:"Invoice API 🧑‍💻",slug:"invoice-api-🧑‍"},{level:2,title:"Improvements and bug fixes 🐛",slug:"improvements-and-bug-fixes-"},{level:2,title:"How to update?",slug:"how-to-update"},{level:2,title:"Thank you to our contributors!",slug:"thank-you-to-our-contributors-"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"New version of BTCPay Server - v1.0.6.0 is out!",frontmatter:{title:"New version of BTCPay Server - v1.0.6.0 is out!",date:"2020-11-25T00:00:00.000Z",author:"pavlenex",category:["releases"],coverImage:"/images/BTCPay1060png.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-0-6-0.html",relativePath:"_posts/btcpay-server-1-0-6-0.md",key:"v-78fb0e54",path:"/btcpay-server-1-0-6-0/",headers:[{level:2,title:"🆕What's new in v1.0.6.0?",slug:"whats-new-in-v1060"},{level:3,title:"🏪Store Setup Improvements",slug:"store-setup-improvements"},{level:3,title:"🧾Unified QR Code for on-chain and off-chain payment",slug:"🧾unified-qr-code-for-on-chain-and-off-chain-payment"},{level:3,title:"🎨Re-designed payment requests, pull payments and refunds pages",slug:"re-designed-payment-requests-pull-payments-and-refunds-pages"},{level:3,title:"🆒Pay Button - QR Code",slug:"pay-button-qr-code"},{level:3,title:"⚠️Zero-confirmation invoices warning",slug:"⚠️zero-confirmation-invoices-warning"},{level:3,title:"🔔Notifications Preferences",slug:"notifications-preferences"},{level:3,title:"Greenfield Invoice API",slug:"greenfield-invoice-api"},{level:3,title:"Greenfield API Webhooks",slug:"greenfield-api-webhooks"},{level:3,title:"Payment Button Vulnerability fix",slug:"payment-button-vulnerability-fix"},{level:2,title:"BTCPay Server Plugins",slug:"btcpay-server-plugins"},{level:2,title:"Thank you to our contributors!",slug:"thank-you-to-our-contributors-"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.1.0 - UI smoothing, Gap Limit, Fido2, and Greenfield",frontmatter:{title:"BTCPay Server 1.1.0 - UI smoothing, Gap Limit, Fido2, and Greenfield",date:"2021-04-29T00:00:00.000Z",author:"Zaxounette",category:["releases"],tags:["btcpay-server","release","ui-ux","update"],coverImage:"/images/BTCPayServer_1.1.0.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-1-0.html",relativePath:"_posts/btcpay-server-1-1-0.md",key:"v-222d4f66",path:"/btcpay-server-1-1-0/",headers:[{level:2,title:"⚡Lightning Wallet Setup UI Improvements",slug:"⚡lightning-wallet-setup-ui-improvements"},{level:2,title:"LND v0.12.1-beta and Loop",slug:"lnd-v0121-beta-and-loop"},{level:2,title:"🧾 Reduce the address gap during the invoice creation",slug:"🧾-reduce-the-address-gap-during-the-invoice-creation"},{level:2,title:"🔑 WebAuthN/FIDO2 support",slug:"-webauthnfido2-support"},{level:2,title:"🔐 Disable the SSH key modification",slug:"-disable-the-ssh-key-modification"},{level:2,title:"🔌 Extracting features as plugins",slug:"-extracting-features-as-plugins"},{level:2,title:"👩‍💻Greenfield API improvements:",slug:"‍greenfield-api-improvements"},{level:2,title:"A (mini) call to our translators !",slug:"a-mini-call-to-our-translators-"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.10.0 - Formbuilder UI, custom Roles and a lurking wife mode!?",frontmatter:{title:"BTCPay Server 1.10.0 - Formbuilder UI, custom Roles and a lurking wife mode!?",date:"2023-06-01T00:00:00.000Z",author:"Bas",category:["releases"],tags:["btcpay-server","release","Forms","LNBank","Roles"],coverImage:"/images/BTCPayServer-1-10-thumbnail.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-10-0.html",relativePath:"_posts/btcpay-server-1-10-0.md",key:"v-529e392c",path:"/btcpay-server-1-10-0/",headers:[{level:2,title:"🧾 New Form Builder Drag and Drop UI!",slug:"🧾-new-form-builder-drag-and-drop-ui-"},{level:2,title:"🔒 Custom role system",slug:"-custom-role-system"},{level:2,title:"🥷 Hide sensitive information",slug:"🥷-hide-sensitive-information"},{level:2,title:"📝 Improved Invoice filtering.",slug:"-improved-invoice-filtering"},{level:2,title:"📒 Plugin updates",slug:"-plugin-updates"},{level:3,title:"LNbank",slug:"lnbank"},{level:3,title:"Nostr plugin",slug:"nostr-plugin"},{level:3,title:"Auto-forward Payments",slug:"auto-forward-payments"},{level:2,title:"📚 General quality of life improvements",slug:"-general-quality-of-life-improvements"},{level:3,title:"Point of Sale and Crowdfund settings move from YAML to JSON",slug:"point-of-sale-and-crowdfund-settings-move-from-yaml-to-json"},{level:3,title:"Creating your first store",slug:"creating-your-first-store"},{level:3,title:"Improved refund flow",slug:"improved-refund-flow"},{level:2,title:"🪲 Bugs squashing spree",slug:"🪲-bugs-squashing-spree"},{level:2,title:"🚨 Beware of scammers!",slug:"-beware-of-scammers-"},{level:2,title:"🫶 Donate via OpenSats",slug:"🫶-donate-via-opensats"},{level:2,title:"💚 Thank you",slug:"-thank-you"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.11.0 - Reports, sounds and forms 4 all",frontmatter:{title:"BTCPay Server 1.11.0 - Reports, sounds and forms 4 all",date:"2023-07-27T00:00:00.000Z",author:"Pavlenex",category:["releases"],tags:["btcpay-server","release","Forms","Reports"],coverImage:"/images/1-11/image1.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-11-0.html",relativePath:"_posts/btcpay-server-1-11-0.md",key:"v-f8ff4568",path:"/btcpay-server-1-11-0/",headers:[{level:2,title:"📊Brand-new reporting feature",slug:"brand-new-reporting-feature"},{level:2,title:"🛍️ Point of sale card redesign, categories and more",slug:"️-point-of-sale-card-redesign-categories-and-more"},{level:2,title:"🔊 Payment sounds",slug:"-payment-sounds"},{level:2,title:"🏪Improved store creation flow",slug:"improved-store-creation-flow"},{level:2,title:"💪Forms on steroids",slug:"forms-on-steroids"},{level:2,title:"🖇️Integrations",slug:"️integrations"},{level:2,title:"🪲 Bugs squashing spree",slug:"🪲-bugs-squashing-spree"},{level:2,title:"🚨 Beware of scammers!",slug:"-beware-of-scammers-"},{level:2,title:"🫶 OpenSats Grant",slug:"🫶-opensats-grant"},{level:2,title:"💚 Thank you",slug:"-thank-you"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.12.0 - Under the hood updates, POS improvements and BoltCards issuance at scale",frontmatter:{title:"BTCPay Server 1.12.0 - Under the hood updates, POS improvements and BoltCards issuance at scale",date:"2023-12-19T00:00:00.000Z",author:"Pavlenex",category:["releases"],tags:["btcpay-server","release","pos","boltcard"],coverImage:"/images/btcpay1-9-0-thumbnail.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-12-0.html",relativePath:"_posts/btcpay-server-1-12-0.md",key:"v-973afd28",path:"/btcpay-server-1-12-0/",headers:[{level:2,title:"🥷 Under the hood enhancements",slug:"🥷-under-the-hood-enhancements"},{level:3,title:"Upgrade to .NET 8",slug:"upgrade-to-net-8"},{level:3,title:"Breaking changes for some plugins",slug:"breaking-changes-for-some-plugins"},{level:3,title:"End of Support for Postgresql 11",slug:"end-of-support-for-postgresql-11"},{level:2,title:"🎉 New features",slug:"-new-features"},{level:3,title:"🛍️ Point of Sale improvements",slug:"️-point-of-sale-improvements"},{level:3,title:"⚡ Generate BoltCards at scale through BTCPay directly!",slug:"⚡-generate-boltcards-at-scale-through-btcpay-directly-"},{level:3,title:"📧 Enhancing email form functionality",slug:"-enhancing-email-form-functionality"},{level:3,title:"👛 Wallet improvements",slug:"-wallet-improvements"},{level:2,title:"🖇️ Integrations",slug:"️-integrations"},{level:2,title:"🔌 Plugins",slug:"-plugins"},{level:2,title:"🚨 Beware of scammers!",slug:"-beware-of-scammers-"},{level:2,title:"🫶 Support BTCPay",slug:"🫶-support-btcpay"},{level:2,title:"💚 Thank you",slug:"-thank-you"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.13.0 - Easy user onboarding, admin store view, new store roles & keypad item mode",frontmatter:{title:"BTCPay Server 1.13.0 - Easy user onboarding, admin store view, new store roles & keypad item mode",date:"2024-03-28T00:00:00.000Z",author:"Pavlenex",category:["releases"],tags:["btcpay-server","release","pos"],coverImage:"/images/btcpay1-13-0-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-13-0%20.html",relativePath:"_posts/btcpay-server-1-13-0 .md",key:"v-b5151f96",path:"/btcpay-server-1-13-0/",headers:[{level:2,title:"🎉 Key features",slug:"-key-features"},{level:3,title:"🎨 Server Branding",slug:"-server-branding"},{level:3,title:"🏪 Overview of stores",slug:"-overview-of-stores"},{level:3,title:"👥 Invite new users via email/link",slug:"-invite-new-users-via-emaillink"},{level:3,title:"💁🏻 New store roles: Manager and Employee",slug:"-new-store-roles-manager-and-employee"},{level:3,title:"🛍 Items list for keypad Point of Sale",slug:"-items-list-for-keypad-point-of-sale"},{level:3,title:"🤳🏻 Better Bitcoin QR Support",slug:"-better-bitcoin-qr-support"},{level:2,title:"🖇️ Integrations",slug:"️-integrations"},{level:3,title:"🚚 nopCommerce",slug:"-nopcommerce"},{level:3,title:"🛍️ GrandNode",slug:"️-grandnode"},{level:3,title:"💬 XenForo",slug:"-xenforo"},{level:3,title:"ℹ Other integrations",slug:"ℹ-other-integrations"},{level:2,title:"🔌 Plugins",slug:"-plugins"},{level:3,title:"💶 Bringin",slug:"-bringin"},{level:3,title:"⚡ Breez",slug:"⚡-breez"},{level:3,title:"⚠️ Breaking changes for some plugins",slug:"⚠️-breaking-changes-for-some-plugins"},{level:2,title:"❌ Deprecating custodian",slug:"❌-deprecating-custodian"},{level:2,title:"🚨 Beware of scammers!",slug:"-beware-of-scammers-"},{level:2,title:"🫶 Support us",slug:"🫶-support-us"},{level:2,title:"💚 Thank you",slug:"-thank-you"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.2.0 - Bootstrapping and paving roads",frontmatter:{title:"BTCPay Server 1.2.0 - Bootstrapping and paving roads",date:"2021-08-10T00:00:00.000Z",author:"Zaxounette",category:["releases"],tags:["btcpay-server","release","ui-ux","greenfield","api","update"],coverImage:"/images/BTCPayServer1.2.0.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-2-0.html",relativePath:"_posts/btcpay-server-1-2-0.md",key:"v-293dce38",path:"/btcpay-server-1-2-0/",headers:[{level:2,title:"Continuation of our UI updates 🎨",slug:"continuation-of-our-ui-updates-"},{level:3,title:"Wallet Signing Wizard 🧙",slug:"wallet-signing-wizard-🧙"},{level:3,title:"Apps UI Improved 💻",slug:"apps-ui-improved-"},{level:3,title:"BTCPay Vault notification 🔐",slug:"btcpay-vault-notification-"},{level:2,title:"Top-up invoices 🧾",slug:"top-up-invoices-🧾"},{level:2,title:"BTCPay Plugins - Paving the road 🔌",slug:"btcpay-plugins-paving-the-road-"},{level:2,title:"Greenfield API 🏗️",slug:"greenfield-api-️"},{level:2,title:"NBXplorer specifics 🔍",slug:"nbxplorer-specifics-"},{level:2,title:"Lightning Network implementation bumps ⚡",slug:"lightning-network-implementation-bumps-⚡"},{level:2,title:"Translations 🌐",slug:"translations-"},{level:2,title:"New Blog 📝",slug:"new-blog-"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.3.0 - LNURL, Lightning Address, Taproot and UI goodies",frontmatter:{title:"BTCPay Server 1.3.0 - LNURL, Lightning Address, Taproot and UI goodies",date:"2021-10-29T00:00:00.000Z",author:"Zaxounette",category:["releases"],tags:["taproot","btcpay-server","release","LNURL","greenfield","api","lightningaddress"],coverImage:"/images/BTCPayServer1.3.0.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-3-0.html",relativePath:"_posts/btcpay-server-1-3-0.md",key:"v-96d63b3c",path:"/btcpay-server-1-3-0/",headers:[{level:2,title:"LNURL and Lightning Addresses ⚡",slug:"lnurl-and-lightning-addresses-⚡"},{level:3,title:"LNURL-Pay 🔥",slug:"lnurl-pay-"},{level:3,title:"Lightning Addresses 📧",slug:"lightning-addresses-"},{level:2,title:"Taproot woot woot 🌱",slug:"taproot-woot-woot-"},{level:2,title:"Lightning network topup invoices 🧾",slug:"lightning-network-topup-invoices-🧾"},{level:2,title:"Pull Payments, but Lightning fast! 🚄",slug:"pull-payments-but-lightning-fast-"},{level:2,title:"Continuation of our UI updates 🎨",slug:"continuation-of-our-ui-updates-"},{level:3,title:"Crowdfunding with love 💚",slug:"crowdfunding-with-love-"},{level:3,title:"Payment and Store settings changes ⚙️",slug:"payment-and-store-settings-changes-⚙️"},{level:2,title:"Greenfield API 🏗️",slug:"greenfield-api-️"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.4.0 - The Year of Change",frontmatter:{title:"BTCPay Server 1.4.0 - The Year of Change",date:"2022-01-27T00:00:00.000Z",author:"Zaxounette",category:["releases"],tags:["btcpay-server","release","ui-ux","greenfield","api","update"],coverImage:"/images/BTCPayServer1.4.0.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-4-0.html",relativePath:"_posts/btcpay-server-1-4-0.md",key:"v-7dc8abe0",path:"/btcpay-server-1-4-0/",headers:[{level:2,title:"Easier onboarding 🎨",slug:"easier-onboarding-"},{level:2,title:"New navigation 🏪",slug:"new-navigation-"},{level:2,title:"Logging in improvements 🔐",slug:"logging-in-improvements-"},{level:3,title:"Two-step Lightning authentication ⚡",slug:"two-step-lightning-authentication-⚡"},{level:3,title:"Login codes 📱",slug:"login-codes-"},{level:2,title:"Plugins 🔌",slug:"plugins-"},{level:2,title:"Invoice states 🧾",slug:"invoice-states-🧾"},{level:2,title:"Geeky improvements 🧑‍💻",slug:"geeky-improvements-🧑‍"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Introducing BTCPay Server 1.5.0 - Dashboard and payout processors",frontmatter:{title:"Introducing BTCPay Server 1.5.0 - Dashboard and payout processors",date:"2022-04-28T00:00:00.000Z",author:"pavlenex",category:["releases"],tags:["btcpay-server","release","payouts","dashboard","payout processors","update"],coverImage:"/images/BTCPay1-5-0-desk.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-5-0.html",relativePath:"_posts/btcpay-server-1-5-0.md",key:"v-46fc755e",path:"/btcpay-server-1-5-0/",headers:[{level:2,title:"New dashboard 📊",slug:"new-dashboard-"},{level:2,title:"Payout processor 🤖",slug:"payout-processor-"},{level:3,title:"Schedule for later 📆",slug:"schedule-for-later-"},{level:2,title:"Enable/disable users",slug:"enabledisable-users"},{level:2,title:"NBXplorer updates 🔎",slug:"nbxplorer-updates-"},{level:2,title:"UX/UI improvements 🎨",slug:"uxui-improvements-"},{level:2,title:"Greenfield API 👩‍💻",slug:"greenfield-api-‍"},{level:2,title:"Thank you 💚",slug:"thank-you-"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.6.0 - Lightning dashboard, receipts and automated emails",frontmatter:{title:"BTCPay Server 1.6.0 - Lightning dashboard, receipts and automated emails",date:"2022-07-08T00:00:00.000Z",author:"pavlenex",category:["releases"],tags:["btcpay-server","release","payouts","dashboard","payout processors","update"],coverImage:"/images/BTCPay1-6-0.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-6-0.html",relativePath:"_posts/btcpay-server-1-6-0.md",key:"v-10303edc",path:"/btcpay-server-1-6-0/",headers:[{level:2,title:"Security vulnerability patch 🛡️",slug:"security-vulnerability-patch-️"},{level:2,title:"Dashboard improvements 📊",slug:"dashboard-improvements-"},{level:3,title:"Balance currency toggle",slug:"balance-currency-toggle"},{level:3,title:"Lightning dashboard data",slug:"lightning-dashboard-data"},{level:3,title:"Point of sale product data",slug:"point-of-sale-product-data"},{level:2,title:"Invoice receipts 🧾",slug:"invoice-receipts-🧾"},{level:2,title:"Automated & customized emails 📧",slug:"automated-customized-emails-"},{level:2,title:"LNURL-withdraw support for payouts 🔄",slug:"lnurl-withdraw-support-for-payouts-"},{level:2,title:"Greenfield API 👩‍💻",slug:"greenfield-api-‍"},{level:2,title:"Joomla VirtueMart integration 🛍️",slug:"joomla-virtuemart-integration-️"},{level:2,title:"Cloudflare tunnel support ☁️",slug:"cloudflare-tunnel-support-☁️"},{level:2,title:"Plugins 🔌",slug:"plugins-"},{level:3,title:"LNURL NFC Support",slug:"lnurl-nfc-support"},{level:3,title:"TicketTailor",slug:"tickettailor"},{level:3,title:"LNBank",slug:"lnbank"},{level:2,title:"Thank you 💚",slug:"thank-you-"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.7.0 - Brand-new checkout, store branding, form builder (request shipping address)",frontmatter:{title:"BTCPay Server 1.7.0 - Brand-new checkout, store branding, form builder (request shipping address)",date:"2022-11-25T00:00:00.000Z",author:"pavlenex",category:["releases"],tags:["btcpay-server","release","checkout","form builder","shipping information","update"],coverImage:"/images/1.7.0-V2Checkout.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-7-0.html",relativePath:"_posts/btcpay-server-1-7-0.md",key:"v-4d37ef4c",path:"/btcpay-server-1-7-0/",headers:[{level:2,title:"🛒 New checkout",slug:"-new-checkout"},{level:2,title:"🧾 Unified QR code for on-chain and lightning",slug:"🧾-unified-qr-code-for-on-chain-and-lightning"},{level:2,title:"🎨 Store and server branding",slug:"-store-and-server-branding"},{level:2,title:"🚚 Form Builder (request shipping address)",slug:"-form-builder-request-shipping-address"},{level:2,title:"🏪 OpenCart ecommerce integration",slug:"-opencart-ecommerce-integration"},{level:2,title:"Greenfield API 👩‍💻",slug:"greenfield-api-‍"},{level:2,title:"🫶 Donate via OpenSats",slug:"🫶-donate-via-opensats"},{level:2,title:"Thank you 💚",slug:"thank-you-"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.8.0 - Custom checkout forms, store branding and much much more!",frontmatter:{title:"BTCPay Server 1.8.0 - Custom checkout forms, store branding and much much more!",date:"2023-03-01T00:00:00.000Z",author:"Bas",category:["releases"],tags:["btcpay-server","release","checkout","form builder","shipping information","update"],coverImage:"/images/btcpayserver-storebranding.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-8-0.html",relativePath:"_posts/btcpay-server-1-8-0.md",key:"v-bad05c50",path:"/btcpay-server-1-8-0/",headers:[{level:2,title:"👷 Custom checkout forms",slug:"-custom-checkout-forms"},{level:3,title:"Example: Nostr pubkey and comment",slug:"example-nostr-pubkey-and-comment"},{level:3,title:"Example: Table booking at a restaurant",slug:"example-table-booking-at-a-restaurant"},{level:2,title:"⚡ Lightning NFC plugin becoming core",slug:"⚡-lightning-nfc-plugin-becoming-core"},{level:2,title:"🏷️ Labeling addresses",slug:"️-labeling-addresses"},{level:2,title:"🔔 Rehauled Notifications icon set",slug:"-rehauled-notifications-icon-set"},{level:2,title:"👩‍💻 Greenfield API updates",slug:"‍-greenfield-api-updates"},{level:2,title:"🏪 Store Branding",slug:"-store-branding"},{level:2,title:"🛍️ Checkout has copy addresses back!",slug:"️-checkout-has-copy-addresses-back-"},{level:2,title:"📠 Keypad in the PoS app got some extra love",slug:"-keypad-in-the-pos-app-got-some-extra-love"},{level:2,title:"📠 Keypad POS tracks values individually",slug:"-keypad-pos-tracks-values-individually"},{level:2,title:"🔌 Plugins are here to stay!",slug:"-plugins-are-here-to-stay-"},{level:2,title:"🔌 BTCPay Server X Coinjoin",slug:"-btcpay-server-x-coinjoin"},{level:2,title:"🚨 Phasing out MySQL and SQLite",slug:"-phasing-out-mysql-and-sqlite"},{level:2,title:"🫶 Donate via OpenSats",slug:"🫶-donate-via-opensats"},{level:2,title:"💚 Thank you",slug:"-thank-you"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 1.9.0 - The year of Plugins continues, Point of Sales touch-ups and much more!",frontmatter:{title:"BTCPay Server 1.9.0 - The year of Plugins continues, Point of Sales touch-ups and much more!",date:"2023-04-13T00:00:00.000Z",author:"Bas",category:["releases"],tags:["btcpay-server","release","checkout","NFC","BIP-329","Kraken-plugin"],coverImage:"/images/btcpay1-9-0-thumbnail.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-9-0.html",relativePath:"_posts/btcpay-server-1-9-0.md",key:"v-6bcb9b56",path:"/btcpay-server-1-9-0/",headers:[{level:2,title:"👛 Exchange integration via plugins!",slug:"-exchange-integration-via-plugins-"},{level:2,title:"🛍️ Point of Sale, NFC and receipts",slug:"️-point-of-sale-nfc-and-receipts"},{level:3,title:"Receipts",slug:"receipts"},{level:3,title:"Improved NFC experience",slug:"improved-nfc-experience"},{level:2,title:"🎉 Checkout v2 gets further improvements",slug:"-checkout-v2-gets-further-improvements"},{level:2,title:"📒 New recovery seed phrase view!",slug:"-new-recovery-seed-phrase-view-"},{level:2,title:"📚 Wallet Labels export - BIP-329",slug:"-wallet-labels-export-bip-329"},{level:2,title:"🏷️ Label management got refined further.",slug:"️-label-management-got-refined-further"},{level:2,title:"🤝 Restructuring how metadata is viewed",slug:"-restructuring-how-metadata-is-viewed"},{level:2,title:"🚨 Deprecating MySQL and SQLite",slug:"-deprecating-mysql-and-sqlite"},{level:2,title:"👾 We squashed plenty of bugs again!",slug:"-we-squashed-plenty-of-bugs-again-"},{level:2,title:"🚨 Beware of scammers!",slug:"-beware-of-scammers-"},{level:2,title:"🫶 Donate via OpenSats",slug:"🫶-donate-via-opensats"},{level:2,title:"💚 Thank you",slug:"-thank-you"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server 2.0: our biggest update yet!",frontmatter:{title:"BTCPay Server 2.0: our biggest update yet!",date:"2024-10-29T00:00:00.000Z",author:"Pavlenex",category:["releases"],tags:["btcpay-server","release","2.0"],coverImage:"/images/btcpay2-0-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-2-0.html",relativePath:"_posts/btcpay-server-2-0.md",key:"v-8a7ea4a8",path:"/btcpay-server-2-0/",headers:[{level:2,title:"🔑 Key features",slug:"-key-features"},{level:2,title:"⚠️ 2.0 breaking changes",slug:"⚠️-20-breaking-changes"},{level:2,title:"🔄 Updating to 2.0",slug:"-updating-to-20"},{level:3,title:"✔ Post-update checklist",slug:"✔-post-update-checklist"},{level:2,title:"🌍 Interface localization",slug:"-interface-localization"},{level:2,title:"🧭 New sidebar navigation",slug:"🧭-new-sidebar-navigation"},{level:2,title:"🫂 Improved onboarding flow",slug:"🫂-improved-onboarding-flow"},{level:2,title:"🛍️ Point of sale QR onboarding",slug:"️-point-of-sale-qr-onboarding"},{level:2,title:"🚀 Checkout 2.0 default",slug:"-checkout-20-default"},{level:2,title:"🎨 Backend branding",slug:"-backend-branding"},{level:2,title:"🛒 New e-commerce integrations",slug:"-new-e-commerce-integrations"},{level:3,title:"Wix",slug:"wix"},{level:3,title:"Odoo",slug:"odoo"},{level:3,title:"BigCommerce",slug:"bigcommerce"},{level:3,title:"Other integration updates",slug:"other-integration-updates"},{level:2,title:"🔌 Plugins",slug:"-plugins"},{level:3,title:"List of currently incompatible plugins",slug:"list-of-currently-incompatible-plugins"},{level:2,title:"💚 Thank you",slug:"-thank-you"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server CVE-2022-32984 Vulnerability disclosure affecting BTCPay Server V1.3.0 through V1.5.3",frontmatter:{title:"BTCPay Server CVE-2022-32984 Vulnerability disclosure affecting BTCPay Server V1.3.0 through V1.5.3",date:"2023-01-26T00:00:00.000Z",author:"Bas",category:["announcements"],tags:["security"],coverImage:"/images/BTCPay_Vuln_Disc_1.3.0-1.5.3.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-CVE-2022-32984.html",relativePath:"_posts/btcpay-server-CVE-2022-32984.md",key:"v-2bdfe6a8",path:"/btcpay-server-cve-2022-32984/",headers:[{level:2,title:"⏱️ Timeline",slug:"⏱️-timeline"},{level:2,title:"CVE-2022-32984 (allows a remote attacker to obtain sensitive information if a publicly exposed POS app is available)",slug:"cve-2022-32984-allows-a-remote-attacker-to-obtain-sensitive-information-if-a-publicly-exposed-pos-app-is-available"},{level:2,title:"Summary",slug:"summary"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server Grant #6 - BTSE",frontmatter:{title:"BTCPay Server Grant #6 - BTSE",date:"2020-03-10T00:00:00.000Z",author:"pavlenex",category:["announcements"],coverImage:"/images/btcpay-btse-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-btse.html",relativePath:"_posts/btcpay-server-btse.md",key:"v-347df1ac",path:"/btcpay-server-btse/",id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server Foundation - Introspective",frontmatter:{title:"BTCPay Server Foundation - Introspective",date:"2020-03-07T00:00:00.000Z",author:"Nicolas",category:["announcements"],tags:["foundation"],coverImage:"/images/YT_05.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-foundation-introspective.html",relativePath:"_posts/btcpay-server-foundation-introspective.md",key:"v-511f408c",path:"/btcpay-server-foundation-introspective/",id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server Grant #7 – OKCoin",frontmatter:{title:"BTCPay Server Grant #7 – OKCoin",date:"2020-05-28T00:00:00.000Z",author:"pavlenex",category:["announcements"],tags:["foundation"],coverImage:"/images/btcpay-okcoinfeatured-1024x576-1.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-grant-7-okcoin.html",relativePath:"_posts/btcpay-server-grant-7-okcoin.md",key:"v-42608e28",path:"/btcpay-server-grant-7-okcoin/",id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server Grant - Baillie Gifford",frontmatter:{title:"BTCPay Server Grant - Baillie Gifford",date:"2021-07-28T00:00:00.000Z",author:"Zaxounette",category:["announcements"],tags:["foundation"],coverImage:"/images/btcpay-baillie-gifford-1024x576-1.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-grant-baillie-gifford.html",relativePath:"_posts/btcpay-server-grant-baillie-gifford.md",key:"v-db861df0",path:"/btcpay-server-grant-baillie-gifford/",id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server grant - PNXBET",frontmatter:{title:"BTCPay Server grant - PNXBET",date:"2021-06-09T00:00:00.000Z",author:"Zaxounette",category:["announcements"],tags:["btcpay-server","grant"],coverImage:"/images/btcpayy-PNXBETfeatured-1024x576-1.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-grant-pnxbet.html",relativePath:"_posts/btcpay-server-grant-pnxbet.md",key:"v-3ef1982c",path:"/btcpay-server-grant-pnxbet/",id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server Grant #8 – Kraken",frontmatter:{title:"BTCPay Server Grant #8 – Kraken",date:"2020-06-25T00:00:00.000Z",author:"pavlenex",category:["announcements"],tags:["foundation"],coverImage:"/images/btcpay-krakenfeatured-1024x576-1.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-kraken-grant.html",relativePath:"_posts/btcpay-server-kraken-grant.md",key:"v-127af38c",path:"/btcpay-server-kraken-grant/",id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server v1.0.7.0 - UI polishing, API calls, spring cleaning, and bug fixing",frontmatter:{title:"BTCPay Server v1.0.7.0 - UI polishing, API calls, spring cleaning, and bug fixing",date:"2021-03-11T00:00:00.000Z",author:"Zaxounette",category:["releases"],tags:["btcpay-server","release","ui-ux","update"],coverImage:"/images/1.0.7.0_update_thumbnail.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-v1-0-7-0.html",relativePath:"_posts/btcpay-server-v1-0-7-0.md",key:"v-4071114c",path:"/btcpay-server-v1-0-7-0/",headers:[{level:2,title:"UI polishing 🎨",slug:"ui-polishing-"},{level:2,title:"API calling 🛠️",slug:"api-calling-️"},{level:2,title:"Spring cleaning 🧹",slug:"spring-cleaning-🧹"},{level:2,title:"Improvements ✨",slug:"improvements-✨"},{level:2,title:"Bug Fixing 🐛",slug:"bug-fixing-"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Introducing BTCPay Vault – use any hardware wallet with BTCPay and its full node",frontmatter:{title:"Introducing BTCPay Vault – use any hardware wallet with BTCPay and its full node",date:"2020-01-21T00:00:00.000Z",author:"pavlenex",category:["features"],coverImage:"/images/EJ0JwsbX0AEuAUC-scaled.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-vault.html",relativePath:"_posts/btcpay-vault.md",key:"v-67eac528",path:"/btcpay-vault/",headers:[{level:2,title:"Why?",slug:"why"},{level:2,title:"How does it work?",slug:"how-does-it-work"},{level:2,title:"Getting Started with BTCPay Vault",slug:"getting-started-with-btcpay-vault"},{level:3,title:"Connecting your wallet to a store",slug:"connecting-your-wallet-to-a-store"},{level:3,title:"Spending funds with BTCPay Wallet",slug:"spending-funds-with-btcpay-wallet"},{level:3,title:"Supported Hardware Wallets",slug:"supported-hardware-wallets"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Two Conferences, One MoE: €27,582 in Bitcoin Revenue from 2,998 Lightning Network Payments During Riga Bitcoin Week",frontmatter:{title:"Two Conferences, One MoE: €27,582 in Bitcoin Revenue from 2,998 Lightning Network Payments During Riga Bitcoin Week",date:"2024-09-25T00:00:00.000Z",author:"Pavlenex, Webworthy",category:["case-studies"],tags:["case-study","point of sale","conference","research"],coverImage:"/images/BHB24-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-bhb24-nostriga.html",relativePath:"_posts/case-study-bhb24-nostriga.md",key:"v-636cee68",path:"/case-study-bhb24-nostriga/",headers:[{level:2,title:"Background and challenges",slug:"background-and-challenges"},{level:2,title:"Solution implementation",slug:"solution-implementation"},{level:3,title:"Merchant onboarding",slug:"merchant-onboarding"},{level:3,title:"Payment infrastructure",slug:"payment-infrastructure"},{level:3,title:"Continuous support",slug:"continuous-support"},{level:2,title:"Survey insights",slug:"survey-insights"},{level:2,title:"Results",slug:"results"},{level:2,title:"Summary",slug:"summary"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Bitcoin Atlantis Conference: €115,100 from 8,750 Transactions in 3 Days, Showcasing Bitcoin's Role as a Payment Method",frontmatter:{title:"Bitcoin Atlantis Conference: €115,100 from 8,750 Transactions in 3 Days, Showcasing Bitcoin's Role as a Payment Method",date:"2024-03-20T00:00:00.000Z",author:"Pavlenex, Webworthy",category:["case-studies"],tags:["case-study","point-of-sale","terminals","conference"],coverImage:"/images/bitcoin-atlantis-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-bitcoin-atlantis.html",relativePath:"_posts/case-study-bitcoin-atlantis.md",key:"v-5cd1fdc4",path:"/case-study-bitcoin-atlantis/",headers:[{level:2,title:"Background and challenge",slug:"background-and-challenge"},{level:3,title:"Objectives",slug:"objectives"},{level:2,title:"Solution implementation",slug:"solution-implementation"},{level:3,title:"The infrastructure",slug:"the-infrastructure"},{level:2,title:"Results",slug:"results"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Bitcoin Jungle enables 200+ stores in Costa Rica to embrace Bitcoin",frontmatter:{title:"Bitcoin Jungle enables 200+ stores in Costa Rica to embrace Bitcoin",date:"2023-12-1",author:"Pavlenex, Webworthy",category:["case-studies"],tags:["case-study","ambasadors","circular-economy","point of sale"],coverImage:"/images/bitcoin-jungle-cr-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-bitcoin-jungle-cr.html",relativePath:"_posts/case-study-bitcoin-jungle-cr.md",key:"v-75a17a68",path:"/case-study-bitcoin-jungle-cr/",headers:[{level:2,title:"Features and Benefits",slug:"features-and-benefits"},{level:2,title:"Results",slug:"results"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Bitcoin People built a mobile app on top of BTCPay’s API to scale bitcoin to 270 merchants in Italy with a total of €406,283 in transaction volumes",frontmatter:{title:"Bitcoin People built a mobile app on top of BTCPay’s API to scale bitcoin to 270 merchants in Italy with a total of €406,283 in transaction volumes",date:"2024-02-08T00:00:00.000Z",author:"Elha, Pavlenex, Webworthy",category:["case-studies"],tags:["case-study","ambasador","API","mobile-app"],coverImage:"/images/bitcoin-people-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-bitcoin-people.html",relativePath:"_posts/case-study-bitcoin-people.md",key:"v-7ed5a5a0",path:"/case-study-bitcoin-people/",headers:[{level:2,title:"Why an app, can’t merchants just use one of many wallets?",slug:"why-an-app-can-t-merchants-just-use-one-of-many-wallets"},{level:2,title:"App Features",slug:"app-features"},{level:2,title:"Choice of BTCPay Server",slug:"choice-of-btcpay-server"},{level:2,title:"Implementation",slug:"implementation"},{level:2,title:"Merchant stories",slug:"merchant-stories"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Coincards: Pioneering BTCPay Server Integration and Pushing Bitcoin Adoption",frontmatter:{title:"Coincards: Pioneering BTCPay Server Integration and Pushing Bitcoin Adoption",date:"2023-10-20T00:00:00.000Z",author:"Pavlenex, Webworthy",category:["stories"],tags:["case-study","woocommerce","merchants","research"],coverImage:"/images/coincardscasestudy-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-coincards.html",relativePath:"_posts/case-study-coincards.md",key:"v-0d961d0c",path:"/case-study-coincards/",headers:[{level:2,title:"Needs and Goals:",slug:"needs-and-goals"},{level:2,title:"Choice of BTCPay Server:",slug:"choice-of-btcpay-server"},{level:2,title:"The Process:",slug:"the-process"},{level:2,title:"Challenges:",slug:"challenges"},{level:2,title:"Features and benefits",slug:"features-and-benefits"},{level:2,title:"New Possibilities:",slug:"new-possibilities"},{level:2,title:"Results",slug:"results"},{level:2,title:"User Feedback:",slug:"user-feedback"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Case Study: How Hodl Hodl used BTCPay to accept bitcoin payments at a conference",frontmatter:{title:"Case Study: How Hodl Hodl used BTCPay to accept bitcoin payments at a conference",date:"2023-09-21T00:00:00.000Z",author:"Pavlenex, Webworthy",category:["case-studies"],tags:["case-study","point of sale","conference","research"],coverImage:"/images/CaseStudyHodlHodl-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-hodlhodl-2023.html",relativePath:"_posts/case-study-hodlhodl-2023.md",key:"v-3b4a92e8",path:"/case-study-hodlhodl-2023/",headers:[{level:2,title:"Background and Challenge",slug:"background-and-challenge"},{level:2,title:"Solution Implementation",slug:"solution-implementation"},{level:2,title:"Streamlining the payment process",slug:"streamlining-the-payment-process"},{level:3,title:"How much do you agree that the point-of-sale machine facilitated a smoother payment process?",slug:"how-much-do-you-agree-that-the-point-of-sale-machine-facilitated-a-smoother-payment-process"},{level:2,title:"Ensuring customers have bitcoin to pay",slug:"ensuring-customers-have-bitcoin-to-pay"},{level:2,title:"Onboarding and Training Merchants",slug:"onboarding-and-training-merchants"},{level:2,title:"Results",slug:"results"},{level:3,title:"Would you be open to accepting bitcoin payments at next years conference?",slug:"would-you-be-open-to-accepting-bitcoin-payments-at-next-years-conference"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"How OpenSubtitles, home to over 7 Million subtitles and 8,000 contributors, utilizes BTCPay to facilitate bitcoin payments for memberships and donations",frontmatter:{title:"How OpenSubtitles, home to over 7 Million subtitles and 8,000 contributors, utilizes BTCPay to facilitate bitcoin payments for memberships and donations",date:"2024-06-10T00:00:00.000Z",author:"Pavlenex, Webworthy",category:["case-studies"],tags:["case-study","API","merchants","ai"],coverImage:"/images/opensubtitles-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-opensubtitles.html",relativePath:"_posts/case-study-opensubtitles.md",key:"v-194aa16c",path:"/case-study-opensubtitles/",headers:[{level:2,title:"Choice of BTCPay Server",slug:"choice-of-btcpay-server"},{level:2,title:"Implementation",slug:"implementation"},{level:2,title:"Features and benefits",slug:"features-and-benefits"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Empowering hemp growers and breeders: How Strainly leveraged BTCPay Server to enable peer-to-peer and private payments at scale",frontmatter:{title:"Empowering hemp growers and breeders: How Strainly leveraged BTCPay Server to enable peer-to-peer and private payments at scale",date:"2023-12-18T00:00:00.000Z",author:"Pavlenex, Webworthy",category:["case-studies"],tags:["case-study","privacy","API","development"],coverImage:"/images/strainly-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-strainly.html",relativePath:"_posts/case-study-strainly.md",key:"v-75f7bbe8",path:"/case-study-strainly/",headers:[{level:2,title:"Needs and Goals",slug:"needs-and-goals"},{level:2,title:"Choice of BTCPay Server",slug:"choice-of-btcpay-server"},{level:2,title:"Implementation",slug:"implementation"},{level:2,title:"Features and Benefits",slug:"features-and-benefits"},{level:2,title:"Results",slug:"results"},{level:2,title:"Features and Benefits",slug:"features-and-benefits-2"},{level:2,title:"Results",slug:"results-2"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Technical Case Study: How to enable Bitcoin payments for merchants at events using BTCPay Server",frontmatter:{title:"Technical Case Study: How to enable Bitcoin payments for merchants at events using BTCPay Server",date:"2023-10-03T00:00:00.000Z",author:"RockstarDev, MrKukks",category:["case-studies"],tags:["case-study","point of sale","research","merchants","sideshift","prism"],coverImage:"/images/case-study-technical-prism-sideshift/technical-case-study-cover.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-technical-prism-sideshift.html",relativePath:"_posts/case-study-technical-prism-sideshift.md",key:"v-fc399aa8",path:"/case-study-technical-prism-sideshift/",headers:[{level:2,title:"Video Guide",slug:"video-guide"},{level:2,title:"Launch Your BTCPay Server Instance",slug:"launch-your-btcpay-server-instance"},{level:2,title:"Account Creation and Plugin Installation",slug:"account-creation-and-plugin-installation"},{level:2,title:"Setting Up Your Demo Store",slug:"setting-up-your-demo-store"},{level:2,title:"Harnessing the Power of Lightning Payments",slug:"harnessing-the-power-of-lightning-payments"},{level:2,title:"Setting Up a Wallet for Stablecoins & Creating a Prism Destination for Conversion",slug:"setting-up-a-wallet-for-stablecoins-creating-a-prism-destination-for-conversion"},{level:2,title:"Setting up Prism",slug:"setting-up-prism"},{level:2,title:"Test your payments with Point of Sale app",slug:"test-your-payments-with-point-of-sale-app"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"World's Fastest BTCPay Deployments with Voltage - generating over 45,000 invoices per month!",frontmatter:{title:"World's Fastest BTCPay Deployments with Voltage - generating over 45,000 invoices per month!",date:"2023-11-17T00:00:00.000Z",author:"Pavlenex, Webworthy, Bobby Shell",category:["case-studies"],tags:["case-study","hosting","providers","infrastracture"],coverImage:"/images/voltagecasestudy-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-voltage.html",relativePath:"_posts/case-study-voltage.md",key:"v-d31850e8",path:"/case-study-voltage/",headers:[{level:2,title:"Needs and Goals",slug:"needs-and-goals"},{level:2,title:"Choice of BTCPay Server",slug:"choice-of-btcpay-server"},{level:2,title:"Implementation",slug:"implementation"},{level:2,title:"Features and Benefits",slug:"features-and-benefits"},{level:2,title:"Results",slug:"results"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"BTCPay Server Grant #3 From Digital Garage, Inc.",frontmatter:{title:"BTCPay Server Grant #3 From Digital Garage, Inc.",date:"2019-11-14T00:00:00.000Z",author:"Nicolas",category:["announcements"],tags:["foundation"],coverImage:"/images/btcpay-dg-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/dg-grant-2019.html",relativePath:"_posts/dg-grant-2019.md",key:"v-f6ea4c28",path:"/dg-grant-2019/",id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"How to accept Bitcoin Donations - privately, securely and without middleman",frontmatter:{title:"How to accept Bitcoin Donations - privately, securely and without middleman",date:"2019-04-25T00:00:00.000Z",author:"pavlenex",category:["guides"],tags:["apps","plugins","pos"],coverImage:"/images/How-to-accept-Bitcoin-donations-1024x576.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/how-to-accept-bitcoin-donations.html",relativePath:"_posts/how-to-accept-bitcoin-donations.md",key:"v-312de42c",path:"/how-to-accept-bitcoin-donations/",headers:[{level:2,title:"Donation Button",slug:"donation-button"},{level:2,title:"Crowdfunding",slug:"crowdfunding"},{level:2,title:"Payment Requests",slug:"payment-requests"},{level:2,title:"LibrePatron (for recurring payments)",slug:"librepatron-for-recurring-payments"},{level:2,title:"Modified Web Point of Sale",slug:"modified-web-point-of-sale"},{level:3,title:"Example 1: The Donation Page",slug:"example-1-the-donation-page"},{level:3,title:"Example 2: Social Media Donation Page",slug:"example-2-social-media-donation-page"},{level:2,title:"Summary",slug:"summary"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"How to earn Bitcoin by using BTCPay Server",frontmatter:{title:"How to earn Bitcoin by using BTCPay Server",date:"2019-03-17T00:00:00.000Z",author:"pavlenex",category:["guides"],tags:["apps","bitcoin-merchants","pos"],coverImage:"/images/YouTube-Thumbnail-BTCPay-Basics-Template.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/how-to-earn-bitcoin-btcpayserver.html",relativePath:"_posts/how-to-earn-bitcoin-btcpayserver.md",key:"v-492b1fe8",path:"/how-to-earn-bitcoin-btcpayserver/",headers:[{level:2,title:"Create Bitcoin invoices",slug:"create-bitcoin-invoices"},{level:2,title:"Accepting Bitcoin in an online store",slug:"accepting-bitcoin-in-an-online-store"},{level:2,title:"Accept Bitcoin in retail",slug:"accept-bitcoin-in-retail"},{level:2,title:"Accepting Bitcoin Donations",slug:"accepting-bitcoin-donations"},{level:2,title:"Launch a crowdfunding campaign",slug:"launch-a-crowdfunding-campaign"},{level:2,title:"Pay Per Article (Journalists and bloggers)",slug:"pay-per-article-journalists-and-bloggers"},{level:2,title:"Become a payment processor",slug:"become-a-payment-processor"},{level:2,title:"Sell BTCPay Hardware devices",slug:"sell-btcpay-hardware-devices"},{level:2,title:"Host BTCPay Servers in a cloud",slug:"host-btcpay-servers-in-a-cloud"},{level:2,title:"Develop and provide BTCPay Services",slug:"develop-and-provide-btcpay-services"},{level:2,title:"Stacking sats - the self-sovereign way",slug:"stacking-sats-the-self-sovereign-way"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Jeff Vandrew Jr - creator of LibrePatron, Keykeeper IRA, BTCQBO",frontmatter:{title:"Jeff Vandrew Jr - creator of LibrePatron, Keykeeper IRA, BTCQBO",date:"2019-03-26T00:00:00.000Z",author:"pavlenex",category:["stories"],tags:["interview","plugins"],coverImage:"/images/YouTube-Thumbnail-BTCPay-Accountig-Template-1024x576.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/interview-with-jeff-vandrew-jr.html",relativePath:"_posts/interview-with-jeff-vandrew-jr.md",key:"v-8e8a67e8",path:"/interview-with-jeff-vandrew-jr/",headers:[{level:2,title:"How did you get into Bitcoin?",slug:"how-did-you-get-into-bitcoin"},{level:2,title:"How did you manage to connect all of your passions: finance, law, bodybuilding and development?",slug:"how-did-you-manage-to-connect-all-of-your-passions-finance-law-bodybuilding-and-development"},{level:2,title:"What is the Keykeeper IRA?",slug:"what-is-the-keykeeper-ira"},{level:2,title:"How did you discover BTCPay and what made you create the QuickBooks plugin?",slug:"how-did-you-discover-btcpay-and-what-made-you-create-the-quickbooks-plugin"},{level:2,title:"What is LibrePatron?",slug:"what-is-librepatron"},{level:2,title:"How are recurring payments handled in LibrePatron?",slug:"how-are-recurring-payments-handled-in-librepatron"},{level:2,title:"Software development",slug:"software-development"},{level:2,title:"The Future",slug:"the-future"},{level:2,title:"Where can readers find you?",slug:"where-can-readers-find-you"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Interview with Jamie Lim, the founder of Sticky Singapore, Joo Bar, 8 Korean BBQ and Juju Coffee",frontmatter:{title:"Interview with Jamie Lim, the founder of Sticky Singapore, Joo Bar, 8 Korean BBQ and Juju Coffee",date:"2019-04-10T00:00:00.000Z",author:"pavlenex",category:["stories"],tags:["interview","lightning-network","pos"],coverImage:"/images/stickyfeatured.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/jamie-lim-sticky-singapore.html",relativePath:"_posts/jamie-lim-sticky-singapore.md",key:"v-2fcedaac",path:"/jamie-lim-sticky-singapore/",headers:[{level:2,title:"How did you get into Bitcoin?",slug:"how-did-you-get-into-bitcoin"},{level:2,title:"Cryptocurrency adoption in Singapore and Asia?",slug:"cryptocurrency-adoption-in-singapore-and-asia"},{level:2,title:"Bitcoin projects that you like?",slug:"bitcoin-projects-that-you-like"},{level:2,title:"What is Sticky Singapore?",slug:"what-is-sticky-singapore"},{level:2,title:"What kind of products do you offer?",slug:"what-kind-of-products-do-you-offer"},{level:2,title:"What ingredients do you use to make candy?",slug:"what-ingredients-do-you-use-to-make-candy"},{level:2,title:"Customized candy sounds like a perfect promo product for companies, even in the crypto space. Who is it for, how long does it take to make a fully customized candy?",slug:"customized-candy-sounds-like-a-perfect-promo-product-for-companies-even-in-the-crypto-space-who-is-it-for-how-long-does-it-take-to-make-a-fully-customized-candy"},{level:2,title:"How you discovered BTCPay and why you decided to use it?",slug:"how-you-discovered-btcpay-and-why-you-decided-to-use-it"},{level:2,title:"How hard/easy it was to integrate it into your online store?",slug:"how-hardeasy-it-was-to-integrate-it-into-your-online-store"},{level:2,title:"Are there any features missing in BTCPay that would help you and your business?",slug:"are-there-any-features-missing-in-btcpay-that-would-help-you-and-your-business"},{level:2,title:"How do customers react when they see that you accept Bitcoin?",slug:"how-do-customers-react-when-they-see-that-you-accept-bitcoin"},{level:2,title:"How frequently do your customers pay in Bitcoin?",slug:"how-frequently-do-your-customers-pay-in-bitcoin"},{level:2,title:"What are some of the difficulties of being a business accepting Bitcoin?",slug:"what-are-some-of-the-difficulties-of-being-a-business-accepting-bitcoin"},{level:2,title:"You accept Lightning Network payments as well. Can you tell me about the integration process? How hard/easy it was to connect the external node in BTCPay?",slug:"you-accept-lightning-network-payments-as-well-can-you-tell-me-about-the-integration-process-how-hardeasy-it-was-to-connect-the-external-node-in-btcpay"},{level:2,title:"Your Lightning Network experience so far?",slug:"your-lightning-network-experience-so-far"},{level:2,title:"What's next for Sticky Singapore and yourself?",slug:"whats-next-for-sticky-singapore-and-yourself"},{level:2,title:"Where can people find you?",slug:"where-can-people-find-you"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Launching LibrePatron a Self-Hosted Patreon Alternative powered by Bitcoin",frontmatter:{title:"Launching LibrePatron a Self-Hosted Patreon Alternative powered by Bitcoin",date:"2019-04-08T00:00:00.000Z",author:"pavlenex",category:["guides","plugins"],tags:["services"],coverImage:"/images/LibrePatron-BTCPay-Featured.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/librepatron-patreon-alternative.html",relativePath:"_posts/librepatron-patreon-alternative.md",key:"v-45be51d2",path:"/librepatron-patreon-alternative/",headers:[{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Configuring DNS",slug:"configuring-dns"},{level:2,title:"Deploying LibrePatron on BTCPay Server",slug:"deploying-librepatron-on-btcpay-server"},{level:2,title:"Configuring LibrePatron",slug:"configuring-librepatron"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Mike Olthoff from CoinCards.ca is the first ever merchant to use BTCPay. This is his story.",frontmatter:{title:"Mike Olthoff from CoinCards.ca is the first ever merchant to use BTCPay. This is his story.",author:"pavlenex",date:"2019-03-05T00:00:00.000Z",category:"stories",tags:["bitcoin-merchants","interview","lightning-network"],coverImage:"/images/Screen-Shot-2019-03-05-at-11.03.52.png",permalink:"/mike-olthoff-coincards",layout:"Post"},regularPath:"/_posts/mike-olthoff-coincards.html",relativePath:"_posts/mike-olthoff-coincards.md",key:"v-22bca8a8",path:"/mike-olthoff-coincards/",headers:[{level:2,title:"Who is Mike Olthoff?",slug:"who-is-mike-olthoff"},{level:2,title:"How did you get into Bitcoin?",slug:"how-did-you-get-into-bitcoin"},{level:2,title:"What is Coincards?",slug:"what-is-coincards"},{level:2,title:"What are the struggles of being a cryptocurrency business?",slug:"what-are-the-struggles-of-being-a-cryptocurrency-business"},{level:2,title:"Which payment providers have you used before BTCPay Server?",slug:"which-payment-providers-have-you-used-before-btcpay-server"},{level:2,title:"How did you discover BTCPay and what made you decide to switch?",slug:"how-did-you-discover-btcpay-and-what-made-you-decide-to-switch"},{level:2,title:"The early days of BTCPay?",slug:"the-early-days-of-btcpay"},{level:2,title:"You're your own payment processor. Does that help your business save money? What are the disadvantages of using a self-hosted BTCPay?",slug:"youre-your-own-payment-processor-does-that-help-your-business-save-money-what-are-the-disadvantages-of-using-a-self-hosted-btcpay"},{level:2,title:"The fiat bridge is coming soon to BTCPay but you developed an in-house fiat conversion solution. Can you explain how it works?",slug:"the-fiat-bridge-is-coming-soon-to-btcpay-but-you-developed-an-in-house-fiat-conversion-solution-can-you-explain-how-it-works"},{level:2,title:"What kind of reaction do you get from the customers when they see you're using BTCPay?",slug:"what-kind-of-reaction-do-you-get-from-the-customers-when-they-see-youre-using-btcpay"},{level:2,title:"As one of the Lightning Network pioneer merchants, describe your experience with the off-chain so far?",slug:"as-one-of-the-lightning-network-pioneer-merchants-describe-your-experience-with-the-off-chain-so-far"},{level:2,title:"What problem does Lightning solve for merchants?",slug:"what-problem-does-lightning-solve-for-merchants"},{level:2,title:"From your perspective, what is needed for merchants who currently use LN?",slug:"from-your-perspective-what-is-needed-for-merchants-who-currently-use-ln"},{level:2,title:"What tools do you use for bookkeeping?",slug:"what-tools-do-you-use-for-bookkeeping"},{level:2,title:"What piece of advice would you give to someone looking to start a Bitcoin business?",slug:"what-piece-of-advice-would-you-give-to-someone-looking-to-start-a-bitcoin-business"},{level:2,title:"What's in store for you and Coincards in 2019?",slug:"whats-in-store-for-you-and-coincards-in-2019"},{level:2,title:"Is there anything we have not covered that you’d like readers to know?",slug:"is-there-anything-we-have-not-covered-that-you-d-like-readers-to-know"},{level:2,title:"Where can people find you?",slug:"where-can-people-find-you"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Big improvements in NBXplorer!",frontmatter:{title:"Big improvements in NBXplorer!",author:"NicolasDorier",date:"2022-04-01T00:00:00.000Z",category:"features",tags:["nbxplorer"],coverImage:"/images/nxplorer-schema.png",permalink:"/nbxplorer-postgres",layout:"Post"},regularPath:"/_posts/nbxplorer-postgres.html",relativePath:"_posts/nbxplorer-postgres.md",key:"v-03c118ec",path:"/nbxplorer-postgres/",id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Introducing Pay Request - Get paid in BTC by sharing a link",frontmatter:{title:"Introducing Pay Request - Get paid in BTC by sharing a link",author:"pavlenex",date:"2019-02-22T00:00:00.000Z",category:"features",coverImage:"/images/Screen-Shot-2019-03-05-at-14.01.58.png",permalink:"/payment-requests",layout:"Post"},regularPath:"/_posts/payment-requests.html",relativePath:"_posts/payment-requests.md",key:"v-1df6814c",path:"/payment-requests/",headers:[{level:3,title:"The Problem",slug:"the-problem"},{level:3,title:"The Solution",slug:"the-solution"},{level:3,title:"How it works?",slug:"how-it-works"},{level:3,title:"Features",slug:"features"},{level:3,title:"Roadmap",slug:"roadmap"},{level:3,title:"Try it out",slug:"try-it-out"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Ride The Lightning: An open-source project making node management easy for everyone",frontmatter:{title:"Ride The Lightning: An open-source project making node management easy for everyone",author:"pavlenex",date:"2019-03-09T00:00:00.000Z",category:"plugins",tags:["lightning-network","services"],coverImage:"/images/RTL-BTCPay.png",permalink:"/ride-the-lightning-btcpay",layout:"Post"},regularPath:"/_posts/ride-the-lightning-btcpay.html",relativePath:"_posts/ride-the-lightning-btcpay.md",key:"v-1627eb18",path:"/ride-the-lightning-btcpay/",headers:[{level:2,title:"What is Ride the Lightning?",slug:"what-is-ride-the-lightning"},{level:2,title:"What's the story behind it?",slug:"whats-the-story-behind-it"},{level:2,title:"Features",slug:"features"},{level:3,title:"Dashboard",slug:"dashboard"},{level:3,title:"LND",slug:"lnd"},{level:2,title:"Integrating RTL into BTCPay?",slug:"integrating-rtl-into-btcpay"},{level:2,title:"Getting Started with Lightning Network Node management and RTL",slug:"getting-started-with-lightning-network-node-management-and-rtl"},{level:2,title:"What are some of the security risks, attack vectors users should be aware?",slug:"what-are-some-of-the-security-risks-attack-vectors-users-should-be-aware"},{level:2,title:"What's in store next for RTL?",slug:"whats-in-store-next-for-rtl"},{level:2,title:"How to help and contribute to RTL",slug:"how-to-help-and-contribute-to-rtl"},{level:2,title:"Wrapping it up",slug:"wrapping-it-up"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"This is lies - you're obsolete.",frontmatter:{title:"This is lies - you're obsolete.",date:"2019-08-17T00:00:00.000Z",author:"Nicolas",category:["announcements"],coverImage:"/images/BTCPayB-day.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/this-is-lies-youre-now-obsolete.html",relativePath:"_posts/this-is-lies-youre-now-obsolete.md",key:"v-4ec352bc",path:"/this-is-lies-youre-now-obsolete/",id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Vulnerability Disclosure affecting BTCPay Server <= v1.0.7.0",frontmatter:{title:"Vulnerability Disclosure affecting BTCPay Server <= v1.0.7.0",date:"2021-04-29T00:00:00.000Z",author:"pavlenex",category:["announcements"],coverImage:"/images/BTCPay_Vuln_Disc_1.0.7.0.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/vulnerability-disclosure-v1-0-7-0.html",relativePath:"_posts/vulnerability-disclosure-v1-0-7-0.md",key:"v-d8f9098c",path:"/vulnerability-disclosure-v1-0-7-0/",headers:[{level:2,title:"⏱️ Timeline",slug:"⏱️-timeline"},{level:2,title:"CVE-2021-29251 (Account takeover)",slug:"cve-2021-29251-account-takeover"},{level:2,title:"CVE-2021-29246 (Path Traversal)",slug:"cve-2021-29246-path-traversal"},{level:2,title:"CVE-2021-29250 (Stored XSS)",slug:"cve-2021-29250-stored-xss"},{level:2,title:"CVE-2021-29245 (Insufficient Randomness)",slug:"cve-2021-29245-insufficient-randomness"},{level:2,title:"CVE-2021-29247 (Lack of httponly)",slug:"cve-2021-29247-lack-of-httponly"},{level:2,title:"CVE-2021-29248 (Lack of secure)",slug:"cve-2021-29248-lack-of-secure"},{level:2,title:"CVE-2021-29250 (Stored XSS)",slug:"cve-2021-29250-stored-xss-2"},{level:2,title:"No rate limit of forget password page",slug:"no-rate-limit-of-forget-password-page"},{level:2,title:"Summary",slug:"summary"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"XSS Vulnerability Disclosure by Doyensec",frontmatter:{title:"XSS Vulnerability Disclosure by Doyensec",date:"2019-08-15T00:00:00.000Z",author:"Nicolas",category:["announcements"],tags:["vulnerability-disclosure"],coverImage:"/images/btcpay-vulnerability-disclosure-1.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/xss-vulnerability-disclosure-doyensec.html",relativePath:"_posts/xss-vulnerability-disclosure-doyensec.md",key:"v-3b36bdf4",path:"/xss-vulnerability-disclosure-doyensec/",headers:[{level:2,title:"Impact",slug:"impact"},{level:2,title:"How to fix it",slug:"how-to-fix-it"},{level:3,title:"Attack Vector",slug:"attack-vector"},{level:2,title:"How did it happen:",slug:"how-did-it-happen"},{level:2,title:"Timeline",slug:"timeline"},{level:2,title:"What we will do:",slug:"what-we-will-do"},{level:2,title:"Recommendation:",slug:"recommendation"}],id:"post",pid:"post",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{title:"Privacy Policy",frontmatter:{title:"Privacy Policy",date:"2019-03-01",permalink:"/privacy-policy"},regularPath:"/privacy-policy.html",relativePath:"privacy-policy.md",key:"v-281f49ca",path:"/privacy-policy/",lastUpdated:"10/30/2024, 2:38:33 PM",lastUpdatedTimestamp:1730299113e3},{frontmatter:{layout:"IndexPost",title:""},regularPath:"/",key:"v-b2754d56",path:"/"},{frontmatter:{layout:"FrontmatterKey",title:"Categories"},regularPath:"/category/",key:"v-28e6393c",path:"/category/"},{frontmatter:{layout:"FrontmatterKey",title:"Authors"},regularPath:"/author/",key:"v-7d2105e2",path:"/author/"},{frontmatter:{layout:"FrontmatterPagination",title:"releases "},regularPath:"/category/releases/",key:"v-1a97baa7",path:"/category/releases/"},{frontmatter:{layout:"FrontmatterPagination",title:"stories "},regularPath:"/category/stories/",key:"v-4602e778",path:"/category/stories/"},{frontmatter:{layout:"FrontmatterPagination",title:"announcements "},regularPath:"/category/announcements/",key:"v-c614f442",path:"/category/announcements/"},{frontmatter:{layout:"FrontmatterPagination",title:"guides "},regularPath:"/category/guides/",key:"v-8b44b548",path:"/category/guides/"},{frontmatter:{layout:"FrontmatterPagination",title:"features "},regularPath:"/category/features/",key:"v-079fe454",path:"/category/features/"},{frontmatter:{layout:"FrontmatterPagination",title:"case-studies "},regularPath:"/category/case-studies/",key:"v-3945bb29",path:"/category/case-studies/"},{frontmatter:{layout:"FrontmatterPagination",title:"plugins "},regularPath:"/category/plugins/",key:"v-70cfb9cb",path:"/category/plugins/"},{frontmatter:{layout:"FrontmatterPagination",title:"pavlenex "},regularPath:"/author/pavlenex/",key:"v-1b2a4f46",path:"/author/pavlenex/"},{frontmatter:{layout:"FrontmatterPagination",title:"Nicolas "},regularPath:"/author/Nicolas/",key:"v-04ed8067",path:"/author/Nicolas/"},{frontmatter:{layout:"FrontmatterPagination",title:"RockstarDev, Pavlenex, WebWorthy "},regularPath:"/author/RockstarDev,%20Pavlenex,%20WebWorthy/",key:"v-a7039020",path:"/author/RockstarDev, Pavlenex, WebWorthy/"},{frontmatter:{layout:"FrontmatterPagination",title:"ndeet, petzsch "},regularPath:"/author/ndeet,%20petzsch/",key:"v-0cca2b78",path:"/author/ndeet, petzsch/"},{frontmatter:{layout:"FrontmatterPagination",title:"Zaxounette "},regularPath:"/author/Zaxounette/",key:"v-3403a1ae",path:"/author/Zaxounette/"},{frontmatter:{layout:"FrontmatterPagination",title:"WebWorthy "},regularPath:"/author/WebWorthy/",key:"v-6daaf85f",path:"/author/WebWorthy/"},{frontmatter:{layout:"FrontmatterPagination",title:"Bas "},regularPath:"/author/Bas/",key:"v-545bd84a",path:"/author/Bas/"},{frontmatter:{layout:"FrontmatterPagination",title:"Pavlenex "},regularPath:"/author/Pavlenex/",key:"v-69dcf83d",path:"/author/Pavlenex/"},{frontmatter:{layout:"FrontmatterPagination",title:"Pavlenex, Webworthy "},regularPath:"/author/Pavlenex,%20Webworthy/",key:"v-0ace2199",path:"/author/Pavlenex, Webworthy/"},{frontmatter:{layout:"FrontmatterPagination",title:"Elha, Pavlenex, Webworthy "},regularPath:"/author/Elha,%20Pavlenex,%20Webworthy/",key:"v-754df0d0",path:"/author/Elha, Pavlenex, Webworthy/"},{frontmatter:{layout:"FrontmatterPagination",title:"RockstarDev, MrKukks "},regularPath:"/author/RockstarDev,%20MrKukks/",key:"v-72fc62d1",path:"/author/RockstarDev, MrKukks/"},{frontmatter:{layout:"FrontmatterPagination",title:"Pavlenex, Webworthy, Bobby Shell "},regularPath:"/author/Pavlenex,%20Webworthy,%20Bobby%20Shell/",key:"v-08cfd63a",path:"/author/Pavlenex, Webworthy, Bobby Shell/"},{frontmatter:{layout:"FrontmatterPagination",title:"NicolasDorier "},regularPath:"/author/NicolasDorier/",key:"v-6033dbf8",path:"/author/NicolasDorier/"},{frontmatter:{layout:"DirectoryPagination",title:"Page 2"},regularPath:"/page/2/",key:"v-8fdafa70",path:"/page/2/"},{frontmatter:{layout:"DirectoryPagination",title:"Page 3"},regularPath:"/page/3/",key:"v-8fdafa32",path:"/page/3/"},{frontmatter:{layout:"DirectoryPagination",title:"Page 4"},regularPath:"/page/4/",key:"v-8fdaf9f4",path:"/page/4/"},{frontmatter:{layout:"DirectoryPagination",title:"Page 5"},regularPath:"/page/5/",key:"v-8fdaf9b6",path:"/page/5/"},{frontmatter:{layout:"DirectoryPagination",title:"Page 6"},regularPath:"/page/6/",key:"v-8fdaf978",path:"/page/6/"},{frontmatter:{layout:"DirectoryPagination",title:"Page 7"},regularPath:"/page/7/",key:"v-8fdaf93a",path:"/page/7/"},{frontmatter:{layout:"DirectoryPagination",title:"Page 8"},regularPath:"/page/8/",key:"v-8fdaf8fc",path:"/page/8/"},{frontmatter:{layout:"DirectoryPagination",title:"Releases - Page 2"},regularPath:"/category/releases/page/2/",key:"v-4c216136",path:"/category/releases/page/2/"},{frontmatter:{layout:"DirectoryPagination",title:"Releases - Page 3"},regularPath:"/category/releases/page/3/",key:"v-4c216155",path:"/category/releases/page/3/"},{frontmatter:{layout:"DirectoryPagination",title:"Stories - Page 2"},regularPath:"/category/stories/page/2/",key:"v-04e25745",path:"/category/stories/page/2/"},{frontmatter:{layout:"DirectoryPagination",title:"Announcements - Page 2"},regularPath:"/category/announcements/page/2/",key:"v-1efb06fe",path:"/category/announcements/page/2/"},{frontmatter:{layout:"DirectoryPagination",title:"pavlenex - Page 2"},regularPath:"/author/pavlenex/page/2/",key:"v-25ccea80",path:"/author/pavlenex/page/2/"},{frontmatter:{layout:"DirectoryPagination",title:"pavlenex - Page 3"},regularPath:"/author/pavlenex/page/3/",key:"v-25ccea42",path:"/author/pavlenex/page/3/"},{frontmatter:{layout:"DirectoryPagination",title:"pavlenex - Page 4"},regularPath:"/author/pavlenex/page/4/",key:"v-25ccea04",path:"/author/pavlenex/page/4/"}],themeConfig:{domain:"https://blog.btcpayserver.org",logo:"/images/btcpay-logo.svg",displayAllHeaders:!1,repo:"btcpayserver/blog",docsDir:"blog",nav:[{text:"Website",link:"https://btcpayserver.org/",rel:"noopener noreferrer website"},{text:"Chat",link:"https://chat.btcpayserver.org/",rel:"noopener noreferrer chat"},{text:"GitHub",link:"https://github.com/btcpayserver/",rel:"noopener noreferrer github"},{text:"Twitter",link:"https://twitter.com/BtcpayServer",rel:"noopener noreferrer twitter"}],sidebarDepth:0,sidebar:[["/","Home"],["/category/releases/","Releases"],["/category/case-studies/","Case Studies"],["/category/stories/","Stories"],["/category/guides/","Guides"],["/category/announcements/","Announcements"],["/category/features/","Features"],["/category/plugins/","Plugins"]]}},Vs=n(242),{COLOR_MODES:Zs,STORE_ATTR:qs,setColorMode:Ks}=n(108),Gs=e=>"Enter"===e.code||13===(e.keyCode||e.which),Ys=e=>{const t=e.target.matches("#algolia-search-input")&&Gs(e);(e.target.matches(".ds-dropdown-menu *")||t)&&document.getElementById("algolia-search-input").blur(),e.target.matches(".ytEmbed")&&(e.preventDefault(),(e=>{const t=e.querySelector("iframe[data-src]");if(t){const e=t.getAttribute("data-src");t.setAttribute("src",e)}})(e.target))};if("undefined"==typeof process||"server"!==process.env.VUE_ENV){const e=window.matchMedia("(prefers-color-scheme: dark)").matches?Zs[1]:Zs[0],t=window.localStorage.getItem(qs);Ks(Zs.includes(t)?t:e)}n(243);qn.component("Badge",()=>Promise.all([n.e(0),n.e(10)]).then(n.bind(null,350))),qn.component("CodeBlock",()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,342))),qn.component("CodeGroup",()=>Promise.all([n.e(0),n.e(12)]).then(n.bind(null,343)));n(244);var Js={category:{releases:{key:"releases",scope:"category",path:"/category/releases/",pageKeys:["v-499e2aec","v-1921d58c","v-69792af4","v-78e3a332","v-7d95c994","v-ebc87668","v-45843d5a","v-04835b18","v-debd9fe0","v-56b01a8c","v-78fb0e54","v-222d4f66","v-529e392c","v-f8ff4568","v-973afd28","v-b5151f96","v-293dce38","v-96d63b3c","v-7dc8abe0","v-46fc755e","v-10303edc","v-4d37ef4c","v-bad05c50","v-6bcb9b56","v-8a7ea4a8","v-4071114c"]},stories:{key:"stories",scope:"category",path:"/category/stories/",pageKeys:["v-6c585c80","v-cd62a5a8","v-6028760c","v-1db83acc","v-72ecdccc","v-cc0c9ce8","v-48df8fa8","v-0d961d0c","v-8e8a67e8","v-2fcedaac","v-22bca8a8"]},announcements:{key:"announcements",scope:"category",path:"/category/announcements/",pageKeys:["v-19d2659c","v-5923a558","v-00e62a0c","v-1245cc68","v-9ed1236c","v-2bdfe6a8","v-347df1ac","v-511f408c","v-42608e28","v-db861df0","v-3ef1982c","v-127af38c","v-f6ea4c28","v-4ec352bc","v-d8f9098c","v-3b36bdf4"]},guides:{key:"guides",scope:"category",path:"/category/guides/",pageKeys:["v-105c3aa4","v-312de42c","v-492b1fe8","v-45be51d2"]},features:{key:"features",scope:"category",path:"/category/features/",pageKeys:["v-69792af4","v-78e3a332","v-272b7c8c","v-67eac528","v-03c118ec","v-1df6814c"]},"case-studies":{key:"case-studies",scope:"category",path:"/category/case-studies/",pageKeys:["v-636cee68","v-5cd1fdc4","v-75a17a68","v-7ed5a5a0","v-3b4a92e8","v-194aa16c","v-75f7bbe8","v-fc399aa8","v-d31850e8"]},plugins:{key:"plugins",scope:"category",path:"/category/plugins/",pageKeys:["v-45be51d2","v-1627eb18"]}},author:{pavlenex:{key:"pavlenex",scope:"author",path:"/author/pavlenex/",pageKeys:["v-499e2aec","v-6c585c80","v-19d2659c","v-105c3aa4","v-69792af4","v-78e3a332","v-5923a558","v-00e62a0c","v-cc0c9ce8","v-1245cc68","v-272b7c8c","v-9ed1236c","v-7d95c994","v-ebc87668","v-45843d5a","v-04835b18","v-debd9fe0","v-56b01a8c","v-78fb0e54","v-46fc755e","v-10303edc","v-4d37ef4c","v-347df1ac","v-42608e28","v-127af38c","v-67eac528","v-312de42c","v-492b1fe8","v-8e8a67e8","v-2fcedaac","v-45be51d2","v-22bca8a8","v-1df6814c","v-1627eb18","v-d8f9098c"]},Nicolas:{key:"Nicolas",scope:"author",path:"/author/Nicolas/",pageKeys:["v-1921d58c","v-511f408c","v-f6ea4c28","v-4ec352bc","v-3b36bdf4"]},"RockstarDev, Pavlenex, WebWorthy":{key:"RockstarDev, Pavlenex, WebWorthy",scope:"author",path:"/author/RockstarDev, Pavlenex, WebWorthy/",pageKeys:["v-cd62a5a8"]},"ndeet, petzsch":{key:"ndeet, petzsch",scope:"author",path:"/author/ndeet, petzsch/",pageKeys:["v-6028760c"]},Zaxounette:{key:"Zaxounette",scope:"author",path:"/author/Zaxounette/",pageKeys:["v-1db83acc","v-72ecdccc","v-222d4f66","v-293dce38","v-96d63b3c","v-7dc8abe0","v-db861df0","v-3ef1982c","v-4071114c"]},WebWorthy:{key:"WebWorthy",scope:"author",path:"/author/WebWorthy/",pageKeys:["v-48df8fa8"]},Bas:{key:"Bas",scope:"author",path:"/author/Bas/",pageKeys:["v-529e392c","v-bad05c50","v-6bcb9b56","v-2bdfe6a8"]},Pavlenex:{key:"Pavlenex",scope:"author",path:"/author/Pavlenex/",pageKeys:["v-f8ff4568","v-973afd28","v-b5151f96","v-8a7ea4a8"]},"Pavlenex, Webworthy":{key:"Pavlenex, Webworthy",scope:"author",path:"/author/Pavlenex, Webworthy/",pageKeys:["v-636cee68","v-5cd1fdc4","v-75a17a68","v-0d961d0c","v-3b4a92e8","v-194aa16c","v-75f7bbe8"]},"Elha, Pavlenex, Webworthy":{key:"Elha, Pavlenex, Webworthy",scope:"author",path:"/author/Elha, Pavlenex, Webworthy/",pageKeys:["v-7ed5a5a0"]},"RockstarDev, MrKukks":{key:"RockstarDev, MrKukks",scope:"author",path:"/author/RockstarDev, MrKukks/",pageKeys:["v-fc399aa8"]},"Pavlenex, Webworthy, Bobby Shell":{key:"Pavlenex, Webworthy, Bobby Shell",scope:"author",path:"/author/Pavlenex, Webworthy, Bobby Shell/",pageKeys:["v-d31850e8"]},NicolasDorier:{key:"NicolasDorier",scope:"author",path:"/author/NicolasDorier/",pageKeys:["v-03c118ec"]}}};class Xs{constructor(e,t){this._metaMap=Object.assign({},e),Object.keys(this._metaMap).forEach(e=>{const{pageKeys:n}=this._metaMap[e];this._metaMap[e].pages=n.map(e=>function(e,t){for(let n=0;n{const{pages:n,path:r}=this._metaMap[t];e.push({name:t,pages:n,path:r})}),e}getItemByName(e){return this._metaMap[e]}}var Qs={post:(e,t)=>{const r=n(45);return r(e.frontmatter.date)-r(t.frontmatter.date)>0?-1:1},category:(e,t)=>{const r=n(45);return r(e.frontmatter.date)-r(t.frontmatter.date)>0?-1:1},author:(e,t)=>{const r=n(45);return r(e.frontmatter.date)-r(t.frontmatter.date)>0?-1:1}},el={post:function(e,t,n){return e.pid===n&&e.id===t},category:function(e,t,n){const r=t;return["category","categories"].some(t=>{const n=e.frontmatter[t];return Array.isArray(n)?n.some(e=>e==r):n==r})},author:function(e,t,n){const r=t;return["author","authors"].some(t=>{const n=e.frontmatter[t];return Array.isArray(n)?n.some(e=>e==r):n==r})}},tl=[{pid:"post",id:"post",filter:el.post,sorter:Qs.post,pages:[{path:"/",interval:[0,9]},{path:"/page/2/",interval:[10,19]},{path:"/page/3/",interval:[20,29]},{path:"/page/4/",interval:[30,39]},{path:"/page/5/",interval:[40,49]},{path:"/page/6/",interval:[50,59]},{path:"/page/7/",interval:[60,69]},{path:"/page/8/",interval:[70,71]}],prevText:"Prev",nextText:"Next"},{pid:"category",id:"releases",filter:el.category,sorter:Qs.category,pages:[{path:"/category/releases/",interval:[0,9]},{path:"/category/releases/page/2/",interval:[10,19]},{path:"/category/releases/page/3/",interval:[20,26]}],prevText:"Prev",nextText:"Next"},{pid:"category",id:"stories",filter:el.category,sorter:Qs.category,pages:[{path:"/category/stories/",interval:[0,9]},{path:"/category/stories/page/2/",interval:[10,11]}],prevText:"Prev",nextText:"Next"},{pid:"category",id:"announcements",filter:el.category,sorter:Qs.category,pages:[{path:"/category/announcements/",interval:[0,9]},{path:"/category/announcements/page/2/",interval:[10,16]}],prevText:"Prev",nextText:"Next"},{pid:"category",id:"guides",filter:el.category,sorter:Qs.category,pages:[{path:"/category/guides/",interval:[0,4]}],prevText:"Prev",nextText:"Next"},{pid:"category",id:"features",filter:el.category,sorter:Qs.category,pages:[{path:"/category/features/",interval:[0,6]}],prevText:"Prev",nextText:"Next"},{pid:"category",id:"case-studies",filter:el.category,sorter:Qs.category,pages:[{path:"/category/case-studies/",interval:[0,9]}],prevText:"Prev",nextText:"Next"},{pid:"category",id:"plugins",filter:el.category,sorter:Qs.category,pages:[{path:"/category/plugins/",interval:[0,2]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"pavlenex",filter:el.author,sorter:Qs.author,pages:[{path:"/author/pavlenex/",interval:[0,9]},{path:"/author/pavlenex/page/2/",interval:[10,19]},{path:"/author/pavlenex/page/3/",interval:[20,29]},{path:"/author/pavlenex/page/4/",interval:[30,35]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"Nicolas",filter:el.author,sorter:Qs.author,pages:[{path:"/author/Nicolas/",interval:[0,5]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"RockstarDev, Pavlenex, WebWorthy",filter:el.author,sorter:Qs.author,pages:[{path:"/author/RockstarDev, Pavlenex, WebWorthy/",interval:[0,1]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"ndeet, petzsch",filter:el.author,sorter:Qs.author,pages:[{path:"/author/ndeet, petzsch/",interval:[0,1]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"Zaxounette",filter:el.author,sorter:Qs.author,pages:[{path:"/author/Zaxounette/",interval:[0,9]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"WebWorthy",filter:el.author,sorter:Qs.author,pages:[{path:"/author/WebWorthy/",interval:[0,1]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"Bas",filter:el.author,sorter:Qs.author,pages:[{path:"/author/Bas/",interval:[0,4]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"Pavlenex",filter:el.author,sorter:Qs.author,pages:[{path:"/author/Pavlenex/",interval:[0,4]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"Pavlenex, Webworthy",filter:el.author,sorter:Qs.author,pages:[{path:"/author/Pavlenex, Webworthy/",interval:[0,7]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"Elha, Pavlenex, Webworthy",filter:el.author,sorter:Qs.author,pages:[{path:"/author/Elha, Pavlenex, Webworthy/",interval:[0,1]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"RockstarDev, MrKukks",filter:el.author,sorter:Qs.author,pages:[{path:"/author/RockstarDev, MrKukks/",interval:[0,1]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"Pavlenex, Webworthy, Bobby Shell",filter:el.author,sorter:Qs.author,pages:[{path:"/author/Pavlenex, Webworthy, Bobby Shell/",interval:[0,1]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"NicolasDorier",filter:el.author,sorter:Qs.author,pages:[{path:"/author/NicolasDorier/",interval:[0,1]}],prevText:"Prev",nextText:"Next"}],nl=n(94);const rl=n.n(nl)()("plugin-blog:pagination");class al{constructor(e,t,n){rl("pagination",e);const{pages:r,prevText:a,nextText:o}=e,{path:i}=n;this._prevText=a,this._nextText=o;for(let e=0,t=r.length;ee.filter(t,e.id,e.pid)).sort(e.sorter)}setIndexPage(e){this._indexPage=e}get length(){return this._paginationPages.length}get pages(){const[e,t]=this._currentPage.interval;return this._matchedPages.slice(e,t+1)}get hasPrev(){return 0!==this.paginationIndex}get prevLink(){return this.hasPrev?this.paginationIndex-1==0&&this._indexPage?this._indexPage:this._paginationPages[this.paginationIndex-1].path:null}get hasNext(){return this.paginationIndex!==this.length-1}get nextLink(){return this.hasNext?this._paginationPages[this.paginationIndex+1].path:null}get prevText(){return this._prevText}get nextText(){return this._nextText}getSpecificPageLink(e){return this._paginationPages[e].path}}const ol=new class{constructor(e){this.paginations=e}get pages(){return qn.$vuepress.$get("siteData").pages}getPagination(e,t,n){rl("id",t),rl("pid",e);const r=this.paginations.filter(n=>n.id===t&&n.pid===e)[0];return new al(r,this.pages,n)}}(tl);var il={comment:{enabled:!1,service:""},email:{enabled:!1},feed:{rss:!0,atom:!0,json:!0}},sl=[({router:e})=>{"undefined"!=typeof process&&"server"===process.env.VUE_ENV||e.onReady(()=>{const{app:t}=e;Vs.forEach(t=>e.addRoute(t)),t.$once("hook:mounted",()=>{setTimeout(()=>{const{hash:e}=document.location;if(e.length>1){const t=e.substring(1),n=document.getElementById(t);n&&n.scrollIntoView()}},500)}),document.addEventListener("click",Ys),document.addEventListener("keyup",e=>{Gs(e)&&Ys(e)})})},{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},{},({Vue:e})=>{e.component("CodeCopy",Os)},({Vue:e})=>{const t=Object.keys(Js).map(e=>{const t=Js[e],n="$"+e;return{[n](){const{pages:e}=this.$site;return new Xs(t,e)},["$current"+(e.charAt(0).toUpperCase()+e.slice(1))](){const e=this.$route.meta.id;return this[n].getItemByName(e)}}}).reduce((e,t)=>(Object.assign(e,t),e),{});t.$frontmatterKey=function(){const e=this["$"+this.$route.meta.id];return e||null},e.mixin({computed:t})},({Vue:e})=>{e.mixin({computed:{$pagination(){return this.$route.meta.pid&&this.$route.meta.id?this.$getPagination(this.$route.meta.pid,this.$route.meta.id):null}},methods:{$getPagination(e,t){return t=t||e,ol.getPagination(e,t,this.$route)}}})},({Vue:e})=>{const t={$service:()=>il};e.mixin({computed:t})}],ll=[];class cl extends class{constructor(){this.store=new qn({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){qn.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}{}Object.assign(cl.prototype,{getPageAsyncComponent:ss,getLayoutAsyncComponent:ls,getAsyncComponent:cs,getVueComponent:us});var ul={install(e){const t=new cl;e.$vuepress=t,e.prototype.$vuepress=t}};function pl(e,t){const n=t.toLowerCase();return e.options.routes.some(e=>e.path.toLowerCase()===n)}var dl={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;return ds("pageKey",t),qn.component(t)||qn.component(t,ss(t)),qn.component(t)?e(t):e("")}},hl={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:n})=>e("div",{class:["content__"+t.slotKey]},n()[t.slotKey])},fl={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},vl=(n(247),n(248),Object(Es.a)(fl,(function(){var e=this._self._c;return e("span",[e("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[e("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),e("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),e("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),gl={functional:!0,render(e,{parent:t,children:n}){if(t._isMounted)return n;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};qn.config.productionTip=!1,qn.use(Vi),qn.use(ul),qn.mixin(function(e,t,n=qn){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t});Object.freeze(e)}(t),n.$vuepress.$set("siteData",t);const r=new(e(n.$vuepress.$get("siteData"))),a=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),o={};return Object.keys(a).reduce((e,t)=>(t.startsWith("$")&&(e[t]=a[t].get),e),o),{computed:o}}(e=>class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,n;for(const r in e)"/"===r?n=e[r]:0===this.$page.path.indexOf(r)&&(t=e[r]);return t||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:e}=this.$page.frontmatter;return"string"==typeof e&&e}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const n=this.$siteTitle,r=e.frontmatter.home?null:e.frontmatter.title||e.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let n=0;nn||(e.hash?!qn.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(e.hash)}:{x:0,y:0})});!function(e){e.beforeEach((t,n,r)=>{if(pl(e,t.path))r();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const n=t.path.replace(/\/$/,"")+".html";pl(e,n)?r(n):r()}else r();else{const n=t.path+"/",a=t.path+".html";pl(e,a)?r(a):pl(e,n)?r(n):r()}})}(n);const r={};try{await Promise.all(sl.filter(e=>"function"==typeof e).map(t=>t({Vue:qn,options:r,router:n,siteData:Hs,isServer:e})))}catch(e){console.error(e)}return{app:new qn(Object.assign(r,{router:n,render:e=>e("div",{attrs:{id:"app"}},[e("RouterView",{ref:"layout"}),e("div",{class:"global-ui"},ll.map(t=>e(t)))])})),router:n}}(!1).then(({app:e,router:t})=>{t.onReady(()=>{e.$mount("#app")})})}]); \ No newline at end of file +var r=Object.freeze({}),a=Array.isArray;function o(e){return null==e}function i(e){return null!=e}function s(e){return!0===e}function l(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function c(e){return"function"==typeof e}function u(e){return null!==e&&"object"==typeof e}var p=Object.prototype.toString;function d(e){return"[object Object]"===p.call(e)}function h(e){return"[object RegExp]"===p.call(e)}function f(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function v(e){return i(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function g(e){return null==e?"":Array.isArray(e)||d(e)&&e.toString===p?JSON.stringify(e,m,2):String(e)}function m(e,t){return t&&t.__v_isRef?t.value:t}function y(e){var t=parseFloat(e);return isNaN(t)?e:t}function b(e,t){for(var n=Object.create(null),r=e.split(","),a=0;a-1)return e.splice(r,1)}}var P=Object.prototype.hasOwnProperty;function _(e,t){return P.call(e,t)}function k(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var T=/-(\w)/g,C=k((function(e){return e.replace(T,(function(e,t){return t?t.toUpperCase():""}))})),S=k((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})),E=/\B([A-Z])/g,O=k((function(e){return e.replace(E,"-$1").toLowerCase()}));var $=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function B(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function j(e,t){for(var n in t)e[n]=t[n];return e}function A(e){for(var t={},n=0;n0,Q=Y&&Y.indexOf("edge/")>0;Y&&Y.indexOf("android");var ee=Y&&/iphone|ipad|ipod|ios/.test(Y);Y&&/chrome\/\d+/.test(Y),Y&&/phantomjs/.test(Y);var te,ne=Y&&Y.match(/firefox\/(\d+)/),re={}.watch,ae=!1;if(G)try{var oe={};Object.defineProperty(oe,"passive",{get:function(){ae=!0}}),window.addEventListener("test-passive",null,oe)}catch(e){}var ie=function(){return void 0===te&&(te=!G&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),te},se=G&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function le(e){return"function"==typeof e&&/native code/.test(e.toString())}var ce,ue="undefined"!=typeof Symbol&&le(Symbol)&&"undefined"!=typeof Reflect&&le(Reflect.ownKeys);ce="undefined"!=typeof Set&&le(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var pe=null;function de(e){void 0===e&&(e=null),e||pe&&pe._scope.off(),pe=e,e&&e._scope.on()}var he=function(){function e(e,t,n,r,a,o,i,s){this.tag=e,this.data=t,this.children=n,this.text=r,this.elm=a,this.ns=void 0,this.context=o,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=i,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(e.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),e}(),fe=function(e){void 0===e&&(e="");var t=new he;return t.text=e,t.isComment=!0,t};function ve(e){return new he(void 0,void 0,void 0,String(e))}function ge(e){var t=new he(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}"function"==typeof SuppressedError&&SuppressedError;var me=0,ye=[],be=function(){function e(){this._pending=!1,this.id=me++,this.subs=[]}return e.prototype.addSub=function(e){this.subs.push(e)},e.prototype.removeSub=function(e){this.subs[this.subs.indexOf(e)]=null,this._pending||(this._pending=!0,ye.push(this))},e.prototype.depend=function(t){e.target&&e.target.addDep(this)},e.prototype.notify=function(e){var t=this.subs.filter((function(e){return e}));for(var n=0,r=t.length;n0&&(Ye((c=e(c,"".concat(n||"","_").concat(r)))[0])&&Ye(p)&&(d[u]=ve(p.text+c[0].text),c.shift()),d.push.apply(d,c)):l(c)?Ye(p)?d[u]=ve(p.text+c):""!==c&&d.push(ve(c)):Ye(c)&&Ye(p)?d[u]=ve(p.text+c.text):(s(t._isVList)&&i(c.tag)&&o(c.key)&&i(n)&&(c.key="__vlist".concat(n,"_").concat(r,"__")),d.push(c)));return d}(e):void 0}function Ye(e){return i(e)&&i(e.text)&&!1===e.isComment}function Je(e,t){var n,r,o,s,l=null;if(a(e)||"string"==typeof e)for(l=new Array(e.length),n=0,r=e.length;n0,s=t?!!t.$stable:!i,l=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(s&&a&&a!==r&&l===a.$key&&!i&&!a.$hasNormal)return a;for(var c in o={},t)t[c]&&"$"!==c[0]&&(o[c]=gt(e,n,c,t[c]))}else o={};for(var u in n)u in o||(o[u]=mt(n,u));return t&&Object.isExtensible(t)&&(t._normalized=o),Z(o,"$stable",s),Z(o,"$key",l),Z(o,"$hasNormal",i),o}function gt(e,t,n,r){var o=function(){var t=pe;de(e);var n=arguments.length?r.apply(null,arguments):r({}),o=(n=n&&"object"==typeof n&&!a(n)?[n]:Ge(n))&&n[0];return de(t),n&&(!o||1===n.length&&o.isComment&&!ft(o))?void 0:n};return r.proxy&&Object.defineProperty(t,n,{get:o,enumerable:!0,configurable:!0}),o}function mt(e,t){return function(){return e[t]}}function yt(e){return{get attrs(){if(!e._attrsProxy){var t=e._attrsProxy={};Z(t,"_v_attr_proxy",!0),bt(t,e.$attrs,r,e,"$attrs")}return e._attrsProxy},get listeners(){e._listenersProxy||bt(e._listenersProxy={},e.$listeners,r,e,"$listeners");return e._listenersProxy},get slots(){return function(e){e._slotsProxy||xt(e._slotsProxy={},e.$scopedSlots);return e._slotsProxy}(e)},emit:$(e.$emit,e),expose:function(t){t&&Object.keys(t).forEach((function(n){return Re(e,t,n)}))}}}function bt(e,t,n,r,a){var o=!1;for(var i in t)i in e?t[i]!==n[i]&&(o=!0):(o=!0,wt(e,i,r,a));for(var i in e)i in t||(o=!0,delete e[i]);return o}function wt(e,t,n,r){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){return n[r][t]}})}function xt(e,t){for(var n in t)e[n]=t[n];for(var n in e)n in t||delete e[n]}var Pt=null;function _t(e,t){return(e.__esModule||ue&&"Module"===e[Symbol.toStringTag])&&(e=e.default),u(e)?t.extend(e):e}function kt(e){if(a(e))for(var t=0;tdocument.createEvent("Event").timeStamp&&(cn=function(){return un.now()})}var pn=function(e,t){if(e.post){if(!t.post)return 1}else if(t.post)return-1;return e.id-t.id};function dn(){var e,t;for(ln=cn(),on=!0,tn.sort(pn),sn=0;snsn&&tn[n].id>e.id;)n--;tn.splice(n+1,0,e)}else tn.push(e);an||(an=!0,Nt(dn))}}function fn(e,t){if(e){for(var n=Object.create(null),r=ue?Reflect.ownKeys(e):Object.keys(e),a=0;a-1)if(o&&!_(a,"default"))i=!1;else if(""===i||i===O(e)){var l=Dn(String,a.type);(l<0||s-1:"string"==typeof e?e.split(",").indexOf(t)>-1:!!h(e)&&e.test(t)}function Jn(e,t){var n=e.cache,r=e.keys,a=e._vnode,o=e.$vnode;for(var i in n){var s=n[i];if(s){var l=s.name;l&&!t(l)&&Xn(n,i,r,a)}}o.componentOptions.children=void 0}function Xn(e,t,n,r){var a=e[t];!a||r&&a.tag===r.tag||a.componentInstance.$destroy(),e[t]=null,x(n,t)}qn.prototype._init=function(e){var t=this;t._uid=Vn++,t._isVue=!0,t.__v_skip=!0,t._scope=new We(!0),t._scope.parent=void 0,t._scope._vm=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var a=r.componentOptions;n.propsData=a.propsData,n._parentListeners=a.listeners,n._renderChildren=a.children,n._componentTag=a.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=$n(Zn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._provided=n?n._provided:Object.create(null),e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Gt(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,a=n&&n.context;e.$slots=dt(t._renderChildren,a),e.$scopedSlots=n?vt(e.$parent,n.data.scopedSlots,e.$slots):r,e._c=function(t,n,r,a){return Tt(e,t,n,r,a,!1)},e.$createElement=function(t,n,r,a){return Tt(e,t,n,r,a,!0)};var o=n&&n.data;je(e,"$attrs",o&&o.attrs||r,null,!0),je(e,"$listeners",t._parentListeners||r,null,!0)}(t),en(t,"beforeCreate",void 0,!1),function(e){var t=fn(e.$options.inject,e);t&&(Ee(!1),Object.keys(t).forEach((function(n){je(e,n,t[n])})),Ee(!0))}(t),Nn(t),function(e){var t=e.$options.provide;if(t){var n=c(t)?t.call(e):t;if(!u(n))return;for(var r=Fe(e),a=ue?Reflect.ownKeys(n):Object.keys(n),o=0;o1?B(n):n;for(var r=B(arguments,1),a='event handler for "'.concat(e,'"'),o=0,i=n.length;oparseInt(this.max)&&Xn(e,t[0],t,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)Xn(this.cache,e,this.keys)},mounted:function(){var e=this;this.cacheVNode(),this.$watch("include",(function(t){Jn(e,(function(e){return Yn(t,e)}))})),this.$watch("exclude",(function(t){Jn(e,(function(e){return!Yn(t,e)}))}))},updated:function(){this.cacheVNode()},render:function(){var e=this.$slots.default,t=kt(e),n=t&&t.componentOptions;if(n){var r=Gn(n),a=this.include,o=this.exclude;if(a&&(!r||!Yn(a,r))||o&&r&&Yn(o,r))return t;var i=this.cache,s=this.keys,l=null==t.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):t.key;i[l]?(t.componentInstance=i[l].componentInstance,x(s,l),s.push(l)):(this.vnodeToCache=t,this.keyToCache=l),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return F}};Object.defineProperty(e,"config",t),e.util={warn:_n,extend:j,mergeOptions:$n,defineReactive:je},e.set=Ae,e.delete=Ie,e.nextTick=Nt,e.observable=function(e){return Be(e),e},e.options=Object.create(null),z.forEach((function(t){e.options[t+"s"]=Object.create(null)})),e.options._base=e,j(e.options.components,er),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=B(arguments,1);return n.unshift(this),c(e.install)?e.install.apply(e,n):c(e)&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=$n(this.options,e),this}}(e),Kn(e),function(e){z.forEach((function(t){e[t]=function(e,n){return n?("component"===t&&d(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&c(n)&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(qn),Object.defineProperty(qn.prototype,"$isServer",{get:ie}),Object.defineProperty(qn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(qn,"FunctionalRenderContext",{value:vn}),qn.version="2.7.16";var tr=b("style,class"),nr=b("input,textarea,option,select,progress"),rr=b("contenteditable,draggable,spellcheck"),ar=b("events,caret,typing,plaintext-only"),or=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),ir="http://www.w3.org/1999/xlink",sr=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},lr=function(e){return sr(e)?e.slice(6,e.length):""},cr=function(e){return null==e||!1===e};function ur(e){for(var t=e.data,n=e,r=e;i(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(t=pr(r.data,t));for(;i(n=n.parent);)n&&n.data&&(t=pr(t,n.data));return function(e,t){if(i(e)||i(t))return dr(e,hr(t));return""}(t.staticClass,t.class)}function pr(e,t){return{staticClass:dr(e.staticClass,t.staticClass),class:i(e.class)?[e.class,t.class]:t.class}}function dr(e,t){return e?t?e+" "+t:e:t||""}function hr(e){return Array.isArray(e)?function(e){for(var t,n="",r=0,a=e.length;r-1?Lr(e,t,n):or(t)?cr(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):rr(t)?e.setAttribute(t,function(e,t){return cr(t)||"false"===t?"false":"contenteditable"===e&&ar(t)?t:"true"}(t,n)):sr(t)?cr(n)?e.removeAttributeNS(ir,lr(t)):e.setAttributeNS(ir,t,n):Lr(e,t,n)}function Lr(e,t,n){if(cr(n))e.removeAttribute(t);else{if(J&&!X&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var Ur={create:Mr,update:Mr};function Nr(e,t){var n=t.elm,r=t.data,a=e.data;if(!(o(r.staticClass)&&o(r.class)&&(o(a)||o(a.staticClass)&&o(a.class)))){var s=ur(t),l=n._transitionClasses;i(l)&&(s=dr(s,hr(l))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Rr,zr={create:Nr,update:Nr};function Wr(e,t,n){var r=Rr;return function a(){var o=t.apply(null,arguments);null!==o&&Vr(e,a,n,r)}}var Fr=Bt&&!(ne&&Number(ne[1])<=53);function Hr(e,t,n,r){if(Fr){var a=ln,o=t;t=o._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=a||e.timeStamp<=0||e.target.ownerDocument!==document)return o.apply(this,arguments)}}Rr.addEventListener(e,t,ae?{capture:n,passive:r}:n)}function Vr(e,t,n,r){(r||Rr).removeEventListener(e,t._wrapper||t,n)}function Zr(e,t){if(!o(e.data.on)||!o(t.data.on)){var n=t.data.on||{},r=e.data.on||{};Rr=t.elm||e.elm,function(e){if(i(e.__r)){var t=J?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}i(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(n),Ze(n,r,Hr,Vr,Wr,t.context),Rr=void 0}}var qr,Kr={create:Zr,update:Zr,destroy:function(e){return Zr(e,kr)}};function Gr(e,t){if(!o(e.data.domProps)||!o(t.data.domProps)){var n,r,a=t.elm,l=e.data.domProps||{},c=t.data.domProps||{};for(n in(i(c.__ob__)||s(c._v_attr_proxy))&&(c=t.data.domProps=j({},c)),l)n in c||(a[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),r===l[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=r;var u=o(r)?"":String(r);Yr(a,u)&&(a.value=u)}else if("innerHTML"===n&&gr(a.tagName)&&o(a.innerHTML)){(qr=qr||document.createElement("div")).innerHTML="".concat(r,"");for(var p=qr.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;p.firstChild;)a.appendChild(p.firstChild)}else if(r!==l[n])try{a[n]=r}catch(e){}}}}function Yr(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,r=e._vModifiers;if(i(r)){if(r.number)return y(n)!==y(t);if(r.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var Jr={create:Gr,update:Gr},Xr=k((function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}})),t}));function Qr(e){var t=ea(e.style);return e.staticStyle?j(e.staticStyle,t):t}function ea(e){return Array.isArray(e)?A(e):"string"==typeof e?Xr(e):e}var ta,na=/^--/,ra=/\s*!important$/,aa=function(e,t,n){if(na.test(t))e.style.setProperty(t,n);else if(ra.test(n))e.style.setProperty(O(t),n.replace(ra,""),"important");else{var r=ia(t);if(Array.isArray(n))for(var a=0,o=n.length;a-1?t.split(ca).forEach((function(t){return e.classList.add(t)})):e.classList.add(t);else{var n=" ".concat(e.getAttribute("class")||""," ");n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function pa(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(ca).forEach((function(t){return e.classList.remove(t)})):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" ".concat(e.getAttribute("class")||""," "),r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function da(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&j(t,ha(e.name||"v")),j(t,e),t}return"string"==typeof e?ha(e):void 0}}var ha=k((function(e){return{enterClass:"".concat(e,"-enter"),enterToClass:"".concat(e,"-enter-to"),enterActiveClass:"".concat(e,"-enter-active"),leaveClass:"".concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-to"),leaveActiveClass:"".concat(e,"-leave-active")}})),fa=G&&!X,va="transition",ga="transitionend",ma="animation",ya="animationend";fa&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(va="WebkitTransition",ga="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(ma="WebkitAnimation",ya="webkitAnimationEnd"));var ba=G?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function wa(e){ba((function(){ba(e)}))}function xa(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),ua(e,t))}function Pa(e,t){e._transitionClasses&&x(e._transitionClasses,t),pa(e,t)}function _a(e,t,n){var r=Ta(e,t),a=r.type,o=r.timeout,i=r.propCount;if(!a)return n();var s="transition"===a?ga:ya,l=0,c=function(){e.removeEventListener(s,u),n()},u=function(t){t.target===e&&++l>=i&&c()};setTimeout((function(){l0&&(n="transition",u=i,p=o.length):"animation"===t?c>0&&(n="animation",u=c,p=l.length):p=(n=(u=Math.max(i,c))>0?i>c?"transition":"animation":null)?"transition"===n?o.length:l.length:0,{type:n,timeout:u,propCount:p,hasTransform:"transition"===n&&ka.test(r[va+"Property"])}}function Ca(e,t){for(;e.length1}function ja(e,t){!0!==t.data.show&&Ea(t)}var Aa=function(e){var t,n,r={},c=e.modules,u=e.nodeOps;for(t=0;tf?w(e,o(n[m+1])?null:n[m+1].elm,n,h,m,r):h>m&&P(t,p,f)}(p,v,m,n,c):i(m)?(i(e.text)&&u.setTextContent(p,""),w(p,null,m,0,m.length-1,n)):i(v)?P(v,0,v.length-1):i(e.text)&&u.setTextContent(p,""):e.text!==t.text&&u.setTextContent(p,t.text),i(f)&&i(h=f.hook)&&i(h=h.postpatch)&&h(e,t)}}}function C(e,t,n){if(s(n)&&i(e.parent))e.parent.data.pendingInsert=t;else for(var r=0;r-1,i.selected!==o&&(i.selected=o);else if(L(Ua(i),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));a||(e.selectedIndex=-1)}}function La(e,t){return t.every((function(t){return!L(t,e)}))}function Ua(e){return"_value"in e?e._value:e.value}function Na(e){e.target.composing=!0}function Ra(e){e.target.composing&&(e.target.composing=!1,za(e.target,"input"))}function za(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Wa(e){return!e.componentInstance||e.data&&e.data.transition?e:Wa(e.componentInstance._vnode)}var Fa={model:Ia,show:{bind:function(e,t,n){var r=t.value,a=(n=Wa(n)).data&&n.data.transition,o=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&a?(n.data.show=!0,Ea(n,(function(){e.style.display=o}))):e.style.display=r?o:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Wa(n)).data&&n.data.transition?(n.data.show=!0,r?Ea(n,(function(){e.style.display=e.__vOriginalDisplay})):Oa(n,(function(){e.style.display="none"}))):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,a){a||(e.style.display=e.__vOriginalDisplay)}}},Ha={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Va(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?Va(kt(t.children)):e}function Za(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var a=n._parentListeners;for(var r in a)t[C(r)]=a[r];return t}function qa(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var Ka=function(e){return e.tag||ft(e)},Ga=function(e){return"show"===e.name},Ya={name:"transition",props:Ha,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(Ka)).length){0;var r=this.mode;0;var a=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return a;var o=Va(a);if(!o)return a;if(this._leaving)return qa(e,a);var i="__transition-".concat(this._uid,"-");o.key=null==o.key?o.isComment?i+"comment":i+o.tag:l(o.key)?0===String(o.key).indexOf(i)?o.key:i+o.key:o.key;var s=(o.data||(o.data={})).transition=Za(this),c=this._vnode,u=Va(c);if(o.data.directives&&o.data.directives.some(Ga)&&(o.data.show=!0),u&&u.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(o,u)&&!ft(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var p=u.data.transition=j({},s);if("out-in"===r)return this._leaving=!0,qe(p,"afterLeave",(function(){t._leaving=!1,t.$forceUpdate()})),qa(e,a);if("in-out"===r){if(ft(o))return c;var d,h=function(){d()};qe(s,"afterEnter",h),qe(s,"enterCancelled",h),qe(p,"delayLeave",(function(e){d=e}))}}return a}}},Ja=j({tag:String,moveClass:String},Ha);function Xa(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function Qa(e){e.data.newPos=e.elm.getBoundingClientRect()}function eo(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,a=t.top-n.top;if(r||a){e.data.moved=!0;var o=e.elm.style;o.transform=o.WebkitTransform="translate(".concat(r,"px,").concat(a,"px)"),o.transitionDuration="0s"}}delete Ja.mode;var to={Transition:Ya,TransitionGroup:{props:Ja,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var a=Jt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,a(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,a=this.$slots.default||[],o=this.children=[],i=Za(this),s=0;s-1?yr[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:yr[e]=/HTMLUnknownElement/.test(t.toString())},j(qn.options.directives,Fa),j(qn.options.components,to),qn.prototype.__patch__=G?Aa:I,qn.prototype.$mount=function(e,t){return function(e,t,n){var r;e.$el=t,e.$options.render||(e.$options.render=fe),en(e,"beforeMount"),r=function(){e._update(e._render(),n)},new Vt(e,r,I,{before:function(){e._isMounted&&!e._isDestroyed&&en(e,"beforeUpdate")}},!0),n=!1;var a=e._preWatchers;if(a)for(var o=0;o=0&&(t=e.slice(r),e=e.slice(0,r));var a=e.indexOf("?");return a>=0&&(n=e.slice(a+1),e=e.slice(0,a)),{path:e,query:n,hash:t}}(a.path||""),c=t&&t.path||"/",u=l.path?_o(l.path,c,n||a.append):c,p=function(e,t,n){void 0===t&&(t={});var r,a=n||co;try{r=a(e||"")}catch(e){r={}}for(var o in t){var i=t[o];r[o]=Array.isArray(i)?i.map(lo):lo(i)}return r}(l.query,a.query,r&&r.options.parseQuery),d=a.hash||l.hash;return d&&"#"!==d.charAt(0)&&(d="#"+d),{_normalized:!0,path:u,query:p,hash:d}}var Ho,Vo=function(){},Zo={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,a=n.resolve(this.to,r,this.append),o=a.location,i=a.route,s=a.href,l={},c=n.options.linkActiveClass,u=n.options.linkExactActiveClass,p=null==c?"router-link-active":c,d=null==u?"router-link-exact-active":u,h=null==this.activeClass?p:this.activeClass,f=null==this.exactActiveClass?d:this.exactActiveClass,v=i.redirectedFrom?ho(null,Fo(i.redirectedFrom),null,n):i;l[f]=yo(r,v,this.exactPath),l[h]=this.exact||this.exactPath?l[f]:function(e,t){return 0===e.path.replace(po,"/").indexOf(t.path.replace(po,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,v);var g=l[f]?this.ariaCurrentValue:null,m=function(e){qo(e)&&(t.replace?n.replace(o,Vo):n.push(o,Vo))},y={click:qo};Array.isArray(this.event)?this.event.forEach((function(e){y[e]=m})):y[this.event]=m;var b={class:l},w=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:i,navigate:m,isActive:l[h],isExactActive:l[f]});if(w){if(1===w.length)return w[0];if(w.length>1||!w.length)return 0===w.length?e():e("span",{},w)}if("a"===this.tag)b.on=y,b.attrs={href:s,"aria-current":g};else{var x=function e(t){var n;if(t)for(var r=0;r-1&&(s.params[d]=n.params[d]);return s.path=Wo(u.path,s.params),l(u,s,i)}if(s.path){s.params={};for(var h=0;h-1}function ki(e,t){return _i(e)&&e._isRouter&&(null==t||e.type===t)}function Ti(e,t,n){var r=function(a){a>=e.length?n():e[a]?t(e[a],(function(){r(a+1)})):r(a+1)};r(0)}function Ci(e){return function(t,n,r){var a=!1,o=0,i=null;Si(e,(function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){a=!0,o++;var l,c=$i((function(t){var a;((a=t).__esModule||Oi&&"Module"===a[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:Ho.extend(t),n.components[s]=t,--o<=0&&r()})),u=$i((function(e){var t="Failed to resolve async component "+s+": "+e;i||(i=_i(e)?e:new Error(t),r(i))}));try{l=e(c,u)}catch(e){u(e)}if(l)if("function"==typeof l.then)l.then(c,u);else{var p=l.component;p&&"function"==typeof p.then&&p.then(c,u)}}})),a||r()}}function Si(e,t){return Ei(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function Ei(e){return Array.prototype.concat.apply([],e)}var Oi="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function $i(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var Bi=function(e,t){this.router=e,this.base=function(e){if(!e)if(Ko){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=vo,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function ji(e,t,n,r){var a=Si(e,(function(e,r,a,o){var i=function(e,t){"function"!=typeof e&&(e=Ho.extend(e));return e.options[t]}(e,t);if(i)return Array.isArray(i)?i.map((function(e){return n(e,r,a,o)})):n(i,r,a,o)}));return Ei(r?a.reverse():a)}function Ai(e,t){if(t)return function(){return e.apply(t,arguments)}}Bi.prototype.listen=function(e){this.cb=e},Bi.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},Bi.prototype.onError=function(e){this.errorCbs.push(e)},Bi.prototype.transitionTo=function(e,t,n){var r,a=this;try{r=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var o=this.current;this.confirmTransition(r,(function(){a.updateRoute(r),t&&t(r),a.ensureURL(),a.router.afterHooks.forEach((function(e){e&&e(r,o)})),a.ready||(a.ready=!0,a.readyCbs.forEach((function(e){e(r)})))}),(function(e){n&&n(e),e&&!a.ready&&(ki(e,yi.redirected)&&o===vo||(a.ready=!0,a.readyErrorCbs.forEach((function(t){t(e)}))))}))},Bi.prototype.confirmTransition=function(e,t,n){var r=this,a=this.current;this.pending=e;var o,i,s=function(e){!ki(e)&&_i(e)&&(r.errorCbs.length?r.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},l=e.matched.length-1,c=a.matched.length-1;if(yo(e,a)&&l===c&&e.matched[l]===a.matched[c])return this.ensureURL(),e.hash&&ii(this.router,a,e,!1),s(((i=xi(o=a,e,yi.duplicated,'Avoided redundant navigation to current location: "'+o.fullPath+'".')).name="NavigationDuplicated",i));var u=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,r=vi&&n;r&&this.listeners.push(oi());var a=function(){var n=e.current,a=Mi(e.base);e.current===vo&&a===e._startLocation||e.transitionTo(a,(function(e){r&&ii(t,e,n,!0)}))};window.addEventListener("popstate",a),this.listeners.push((function(){window.removeEventListener("popstate",a)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var r=this,a=this.current;this.transitionTo(e,(function(e){gi(ko(r.base+e.fullPath)),ii(r.router,e,a,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,a=this.current;this.transitionTo(e,(function(e){mi(ko(r.base+e.fullPath)),ii(r.router,e,a,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(Mi(this.base)!==this.current.fullPath){var t=ko(this.base+this.current.fullPath);e?gi(t):mi(t)}},t.prototype.getCurrentLocation=function(){return Mi(this.base)},t}(Bi);function Mi(e){var t=window.location.pathname,n=t.toLowerCase(),r=e.toLowerCase();return!e||n!==r&&0!==n.indexOf(ko(r+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var Di=function(e){function t(t,n,r){e.call(this,t,n),r&&function(e){var t=Mi(e);if(!/^\/#/.test(t))return window.location.replace(ko(e+"/#"+t)),!0}(this.base)||Li()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=vi&&t;n&&this.listeners.push(oi());var r=function(){var t=e.current;Li()&&e.transitionTo(Ui(),(function(r){n&&ii(e.router,r,t,!0),vi||zi(r.fullPath)}))},a=vi?"popstate":"hashchange";window.addEventListener(a,r),this.listeners.push((function(){window.removeEventListener(a,r)}))}},t.prototype.push=function(e,t,n){var r=this,a=this.current;this.transitionTo(e,(function(e){Ri(e.fullPath),ii(r.router,e,a,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,a=this.current;this.transitionTo(e,(function(e){zi(e.fullPath),ii(r.router,e,a,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;Ui()!==t&&(e?Ri(t):zi(t))},t.prototype.getCurrentLocation=function(){return Ui()},t}(Bi);function Li(){var e=Ui();return"/"===e.charAt(0)||(zi("/"+e),!1)}function Ui(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function Ni(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function Ri(e){vi?gi(Ni(e)):window.location.hash=e}function zi(e){vi?mi(Ni(e)):window.location.replace(Ni(e))}var Wi=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var e=t.current;t.index=n,t.updateRoute(r),t.router.afterHooks.forEach((function(t){t&&t(r,e)}))}),(function(e){ki(e,yi.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(Bi),Fi=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Jo(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!vi&&!1!==e.fallback,this.fallback&&(t="hash"),Ko||(t="abstract"),this.mode=t,t){case"history":this.history=new Ii(this,e.base);break;case"hash":this.history=new Di(this,e.base,this.fallback);break;case"abstract":this.history=new Wi(this,e.base);break;default:0}},Hi={currentRoute:{configurable:!0}};Fi.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},Hi.currentRoute.get=function(){return this.history&&this.history.current},Fi.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof Ii||n instanceof Di){var r=function(e){n.setupListeners(),function(e){var r=n.current,a=t.options.scrollBehavior;vi&&a&&"fullPath"in e&&ii(t,e,r,!1)}(e)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},Fi.prototype.beforeEach=function(e){return Zi(this.beforeHooks,e)},Fi.prototype.beforeResolve=function(e){return Zi(this.resolveHooks,e)},Fi.prototype.afterEach=function(e){return Zi(this.afterHooks,e)},Fi.prototype.onReady=function(e,t){this.history.onReady(e,t)},Fi.prototype.onError=function(e){this.history.onError(e)},Fi.prototype.push=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.push(e,t,n)}));this.history.push(e,t,n)},Fi.prototype.replace=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.replace(e,t,n)}));this.history.replace(e,t,n)},Fi.prototype.go=function(e){this.history.go(e)},Fi.prototype.back=function(){this.go(-1)},Fi.prototype.forward=function(){this.go(1)},Fi.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},Fi.prototype.resolve=function(e,t,n){var r=Fo(e,t=t||this.history.current,n,this),a=this.match(r,t),o=a.redirectedFrom||a.fullPath;return{location:r,route:a,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?ko(e+"/"+r):r}(this.history.base,o,this.mode),normalizedTo:r,resolved:a}},Fi.prototype.getRoutes=function(){return this.matcher.getRoutes()},Fi.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==vo&&this.history.transitionTo(this.history.getCurrentLocation())},Fi.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==vo&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Fi.prototype,Hi);var Vi=Fi;function Zi(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}Fi.install=function e(t){if(!e.installed||Ho!==t){e.installed=!0,Ho=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",xo),t.component("RouterLink",Zo);var a=t.config.optionMergeStrategies;a.beforeRouteEnter=a.beforeRouteLeave=a.beforeRouteUpdate=a.created}},Fi.version="3.6.5",Fi.isNavigationFailure=ki,Fi.NavigationFailureType=yi,Fi.START_LOCATION=vo,Ko&&window.Vue&&window.Vue.use(Fi);n(53);n(137),n(46);var qi={"components/AlgoliaSearchBox":()=>Promise.all([n.e(0),n.e(20)]).then(n.bind(null,341)),"components/DropdownLink":()=>Promise.all([n.e(0),n.e(21)]).then(n.bind(null,271)),"components/DropdownTransition":()=>Promise.all([n.e(0),n.e(28)]).then(n.bind(null,258)),"components/Home":()=>Promise.all([n.e(0),n.e(23)]).then(n.bind(null,321)),"components/NavLink":()=>n.e(30).then(n.bind(null,254)),"components/NavLinks":()=>Promise.all([n.e(0),n.e(19)]).then(n.bind(null,297)),"components/Navbar":()=>Promise.all([n.e(0),n.e(17)]).then(n.bind(null,320)),"components/Page":()=>Promise.all([n.e(0),n.e(18)]).then(n.bind(null,322)),"components/PageEdit":()=>Promise.all([n.e(0),n.e(24)]).then(n.bind(null,299)),"components/PageNav":()=>Promise.all([n.e(0),n.e(22)]).then(n.bind(null,300)),"components/Sidebar":()=>Promise.all([n.e(0),n.e(1)]).then(n.bind(null,336)),"components/SidebarButton":()=>Promise.all([n.e(0),n.e(29)]).then(n.bind(null,302)),"components/SidebarGroup":()=>Promise.all([n.e(0),n.e(7)]).then(n.bind(null,309)),"components/SidebarLink":()=>Promise.all([n.e(0),n.e(27)]).then(n.bind(null,303)),"components/SidebarLinks":()=>Promise.all([n.e(0),n.e(7)]).then(n.bind(null,301)),"global-components/Badge":()=>Promise.all([n.e(0),n.e(10)]).then(n.bind(null,350)),"global-components/CodeBlock":()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,342)),"global-components/CodeGroup":()=>Promise.all([n.e(0),n.e(12)]).then(n.bind(null,343)),"layouts/404":()=>n.e(13).then(n.bind(null,344)),"layouts/Layout":()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3)]).then(n.bind(null,345)),NotFound:()=>n.e(13).then(n.bind(null,344)),Layout:()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(3)]).then(n.bind(null,345)),"components/Categories":()=>Promise.all([n.e(0),n.e(25)]).then(n.bind(null,272)),"components/PostMeta":()=>Promise.all([n.e(0),n.e(26)]).then(n.bind(null,268)),"components/Sponsors":()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,337)),"layouts/DirectoryPagination":()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,346)),"layouts/FrontmatterKey":()=>Promise.all([n.e(0),n.e(9)]).then(n.bind(null,347)),"layouts/FrontmatterPagination":()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,348)),"layouts/IndexPost":()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,298)),"layouts/Post":()=>Promise.all([n.e(0),n.e(8)]).then(n.bind(null,349)),DirectoryPagination:()=>Promise.all([n.e(0),n.e(4)]).then(n.bind(null,346)),FrontmatterKey:()=>Promise.all([n.e(0),n.e(9)]).then(n.bind(null,347)),FrontmatterPagination:()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,348)),IndexPost:()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,298)),Post:()=>Promise.all([n.e(0),n.e(8)]).then(n.bind(null,349))},Ki={"v-499e2aec":()=>n.e(31).then(n.bind(null,351)),"v-1921d58c":()=>n.e(32).then(n.bind(null,352)),"v-6c585c80":()=>n.e(33).then(n.bind(null,353)),"v-19d2659c":()=>n.e(34).then(n.bind(null,354)),"v-cd62a5a8":()=>n.e(35).then(n.bind(null,355)),"v-6028760c":()=>n.e(36).then(n.bind(null,356)),"v-105c3aa4":()=>n.e(37).then(n.bind(null,357)),"v-1db83acc":()=>n.e(38).then(n.bind(null,358)),"v-72ecdccc":()=>n.e(39).then(n.bind(null,359)),"v-78e3a332":()=>n.e(41).then(n.bind(null,360)),"v-69792af4":()=>n.e(40).then(n.bind(null,361)),"v-5923a558":()=>n.e(42).then(n.bind(null,362)),"v-00e62a0c":()=>n.e(43).then(n.bind(null,363)),"v-cc0c9ce8":()=>n.e(44).then(n.bind(null,364)),"v-48df8fa8":()=>n.e(45).then(n.bind(null,365)),"v-1245cc68":()=>n.e(46).then(n.bind(null,366)),"v-9ed1236c":()=>n.e(48).then(n.bind(null,367)),"v-272b7c8c":()=>n.e(47).then(n.bind(null,368)),"v-7d95c994":()=>n.e(49).then(n.bind(null,369)),"v-ebc87668":()=>n.e(50).then(n.bind(null,370)),"v-45843d5a":()=>n.e(51).then(n.bind(null,371)),"v-04835b18":()=>n.e(52).then(n.bind(null,372)),"v-debd9fe0":()=>n.e(53).then(n.bind(null,373)),"v-56b01a8c":()=>n.e(54).then(n.bind(null,374)),"v-78fb0e54":()=>n.e(55).then(n.bind(null,375)),"v-222d4f66":()=>n.e(56).then(n.bind(null,376)),"v-529e392c":()=>n.e(57).then(n.bind(null,377)),"v-f8ff4568":()=>n.e(58).then(n.bind(null,378)),"v-973afd28":()=>n.e(59).then(n.bind(null,379)),"v-b5151f96":()=>n.e(60).then(n.bind(null,380)),"v-293dce38":()=>n.e(61).then(n.bind(null,381)),"v-96d63b3c":()=>n.e(62).then(n.bind(null,382)),"v-7dc8abe0":()=>n.e(63).then(n.bind(null,383)),"v-10303edc":()=>n.e(65).then(n.bind(null,384)),"v-46fc755e":()=>n.e(64).then(n.bind(null,385)),"v-4d37ef4c":()=>n.e(66).then(n.bind(null,386)),"v-bad05c50":()=>n.e(67).then(n.bind(null,387)),"v-6bcb9b56":()=>n.e(68).then(n.bind(null,388)),"v-8a7ea4a8":()=>n.e(69).then(n.bind(null,389)),"v-2bdfe6a8":()=>n.e(70).then(n.bind(null,390)),"v-347df1ac":()=>n.e(71).then(n.bind(null,391)),"v-511f408c":()=>n.e(72).then(n.bind(null,392)),"v-db861df0":()=>n.e(74).then(n.bind(null,393)),"v-42608e28":()=>n.e(73).then(n.bind(null,394)),"v-3ef1982c":()=>n.e(75).then(n.bind(null,395)),"v-127af38c":()=>n.e(76).then(n.bind(null,396)),"v-4071114c":()=>n.e(77).then(n.bind(null,397)),"v-67eac528":()=>n.e(78).then(n.bind(null,398)),"v-636cee68":()=>n.e(79).then(n.bind(null,399)),"v-75a17a68":()=>n.e(81).then(n.bind(null,400)),"v-5cd1fdc4":()=>n.e(80).then(n.bind(null,401)),"v-7ed5a5a0":()=>n.e(82).then(n.bind(null,402)),"v-0d961d0c":()=>n.e(83).then(n.bind(null,403)),"v-3b4a92e8":()=>n.e(84).then(n.bind(null,404)),"v-194aa16c":()=>n.e(85).then(n.bind(null,405)),"v-75f7bbe8":()=>n.e(86).then(n.bind(null,406)),"v-fc399aa8":()=>n.e(87).then(n.bind(null,407)),"v-f6ea4c28":()=>n.e(89).then(n.bind(null,408)),"v-d31850e8":()=>n.e(88).then(n.bind(null,409)),"v-312de42c":()=>n.e(90).then(n.bind(null,410)),"v-492b1fe8":()=>n.e(91).then(n.bind(null,411)),"v-8e8a67e8":()=>n.e(92).then(n.bind(null,412)),"v-2fcedaac":()=>n.e(93).then(n.bind(null,413)),"v-22bca8a8":()=>n.e(95).then(n.bind(null,414)),"v-45be51d2":()=>n.e(94).then(n.bind(null,415)),"v-03c118ec":()=>n.e(96).then(n.bind(null,416)),"v-1df6814c":()=>n.e(97).then(n.bind(null,417)),"v-1627eb18":()=>n.e(98).then(n.bind(null,418)),"v-4ec352bc":()=>n.e(99).then(n.bind(null,419)),"v-d8f9098c":()=>n.e(100).then(n.bind(null,420)),"v-3b36bdf4":()=>n.e(101).then(n.bind(null,421)),"v-281f49ca":()=>n.e(102).then(n.bind(null,422))};function Gi(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const Yi=/-(\w)/g,Ji=Gi(e=>e.replace(Yi,(e,t)=>t?t.toUpperCase():"")),Xi=/\B([A-Z])/g,Qi=Gi(e=>e.replace(Xi,"-$1").toLowerCase()),es=Gi(e=>e.charAt(0).toUpperCase()+e.slice(1));function ts(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(es(Ji(t))):e(es(t))||e(Qi(t))}const ns=Object.assign({},qi,Ki),rs=e=>ns[e],as=e=>Ki[e],os=e=>qi[e],is=e=>qn.component(e);function ss(e){return ts(as,e)}function ls(e){return ts(os,e)}function cs(e){return ts(rs,e)}function us(e){return ts(is,e)}function ps(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!us(e)&&cs(e)){const t=await cs(e)();qn.component(e,t.default)}}))}function ds(e,t){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[e]=t)}var hs=n(91),fs=n.n(hs),vs=n(92),gs=n.n(vs),ms={created(){if(this.siteMeta=this.$site.headTags.filter(([e])=>"meta"===e).map(([e,t])=>t),this.$ssrContext){const t=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(e=t)?e.map(e=>{let t="{t+=` ${n}="${gs()(e[n])}"`}),t+">"}).join("\n "):"",this.$ssrContext.canonicalLink=bs(this.$canonicalUrl)}var e},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.getMergedMetaTags();this.currentMetaTags=ws(e,this.currentMetaTags)},getMergedMetaTags(){const e=this.$page.frontmatter.meta||[];return fs()([{name:"description",content:this.$description}],e,this.siteMeta,xs)},updateCanonicalLink(){ys(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",bs(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){ws(null,this.currentMetaTags),ys()}};function ys(){const e=document.querySelector("link[rel='canonical']");e&&e.remove()}function bs(e=""){return e?``:""}function ws(e,t){if(t&&[...t].filter(e=>e.parentNode===document.head).forEach(e=>document.head.removeChild(e)),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(n=>{t.setAttribute(n,e[n])}),document.head.appendChild(t),t})}function xs(e){for(const t of["name","property","itemprop"])if(e.hasOwnProperty(t))return e[t]+t;return JSON.stringify(e)}var Ps=n(93),_s={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:n.n(Ps)()((function(){this.setActiveHash()}),300),setActiveHash(){const e=[].slice.call(document.querySelectorAll(".sidebar-link")),t=[].slice.call(document.querySelectorAll(".header-anchor")).filter(t=>e.some(e=>e.hash===t.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),a=window.innerHeight+n;for(let e=0;e=o.parentElement.offsetTop+10&&(!i||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},ks=n(22),Ts=n.n(ks),Cs={mounted(){Ts.a.configure({showSpinner:!1}),this.$router.beforeEach((e,t,n)=>{e.path===t.path||qn.component(e.name)||Ts.a.start(),n()}),this.$router.afterEach(()=>{Ts.a.done(),this.isSidebarOpen=!1})}},Ss={props:{parent:Object,code:String,options:{align:String,color:String,backgroundTransition:Boolean,backgroundColor:String,successText:String,staticIcon:Boolean}},data:()=>({success:!1,originalBackground:null,originalTransition:null}),computed:{alignStyle(){let e={};return e[this.options.align]="7.5px",e},iconClass(){return this.options.staticIcon?"":"hover"}},mounted(){this.originalTransition=this.parent.style.transition,this.originalBackground=this.parent.style.background},beforeDestroy(){this.parent.style.transition=this.originalTransition,this.parent.style.background=this.originalBackground},methods:{hexToRgb(e){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null},copyToClipboard(e){if(navigator.clipboard)navigator.clipboard.writeText(this.code).then(()=>{this.setSuccessTransitions()},()=>{});else{let e=document.createElement("textarea");document.body.appendChild(e),e.value=this.code,e.select(),document.execCommand("Copy"),e.remove(),this.setSuccessTransitions()}},setSuccessTransitions(){if(clearTimeout(this.successTimeout),this.options.backgroundTransition){this.parent.style.transition="background 350ms";let e=this.hexToRgb(this.options.backgroundColor);this.parent.style.background=`rgba(${e.r}, ${e.g}, ${e.b}, 0.1)`}this.success=!0,this.successTimeout=setTimeout(()=>{this.options.backgroundTransition&&(this.parent.style.background=this.originalBackground,this.parent.style.transition=this.originalTransition),this.success=!1},500)}}},Es=(n(239),n(10)),Os=Object(Es.a)(Ss,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"code-copy"},[t("svg",{class:e.iconClass,style:e.alignStyle,attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},on:{click:e.copyToClipboard}},[t("path",{attrs:{fill:"none",d:"M0 0h24v24H0z"}}),e._v(" "),t("path",{attrs:{fill:e.options.color,d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4l6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2h7zm-1 7h5.5L14 6.5V12z"}})]),e._v(" "),t("span",{class:e.success?"success":"",style:e.alignStyle},[e._v("\n "+e._s(e.options.successText)+"\n ")])])}),[],!1,null,"49140617",null).exports,$s=(n(240),{updated(){this.update()},methods:{update(){setTimeout(()=>{document.querySelectorAll('div[class*="language-"] pre').forEach(e=>{if(e.classList.contains("code-copy-added"))return;let t=new(qn.extend(Os));t.options={align:"bottom",color:"#8F979E",backgroundTransition:!1,backgroundColor:"#0075b8",successText:"Copied!",staticIcon:!0},t.code=e.innerText,t.parent=e,t.$mount(),e.classList.add("code-copy-added"),e.appendChild(t.$el)})},100)}}}),Bs=(n(241),Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},r=window.Promise||function(e){function t(){}e(t,t)},a=function(e){var t=e.target;t!==T?-1!==b.indexOf(t)&&v({target:t}):f()},o=function(){if(!x&&k.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(P-e)>_.scrollOffset&&setTimeout(f,150)}},i=function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||f()},s=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e;if(e.background&&(T.style.background=e.background),e.container&&e.container instanceof Object&&(t.container=Bs({},_.container,e.container)),e.template){var n=As(e.template)?e.template:document.querySelector(e.template);t.template=n}return _=Bs({},_,t),b.forEach((function(e){e.dispatchEvent(Us("medium-zoom:update",{detail:{zoom:C}}))})),C},l=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e(Bs({},_,t))},c=function(){for(var e=arguments.length,t=Array(e),n=0;n0?t.reduce((function(e,t){return[].concat(e,Ms(t))}),[]):b;return r.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(Us("medium-zoom:detach",{detail:{zoom:C}}))})),b=b.filter((function(e){return-1===r.indexOf(e)})),C},p=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.addEventListener("medium-zoom:"+e,t,n)})),w.push({type:"medium-zoom:"+e,listener:t,options:n}),C},d=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.removeEventListener("medium-zoom:"+e,t,n)})),w=w.filter((function(n){return!(n.type==="medium-zoom:"+e&&n.listener.toString()===t.toString())})),C},h=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target,n=function(){var e={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},t=void 0,n=void 0;if(_.container)if(_.container instanceof Object)t=(e=Bs({},e,_.container)).width-e.left-e.right-2*_.margin,n=e.height-e.top-e.bottom-2*_.margin;else{var r=(As(_.container)?_.container:document.querySelector(_.container)).getBoundingClientRect(),a=r.width,o=r.height,i=r.left,s=r.top;e=Bs({},e,{width:a,height:o,left:i,top:s})}t=t||e.width-2*_.margin,n=n||e.height-2*_.margin;var l=k.zoomedHd||k.original,c=Is(l)?t:l.naturalWidth||t,u=Is(l)?n:l.naturalHeight||n,p=l.getBoundingClientRect(),d=p.top,h=p.left,f=p.width,v=p.height,g=Math.min(Math.max(f,c),t)/f,m=Math.min(Math.max(v,u),n)/v,y=Math.min(g,m),b="scale("+y+") translate3d("+((t-f)/2-h+_.margin+e.left)/y+"px, "+((n-v)/2-d+_.margin+e.top)/y+"px, 0)";k.zoomed.style.transform=b,k.zoomedHd&&(k.zoomedHd.style.transform=b)};return new r((function(e){if(t&&-1===b.indexOf(t))e(C);else{if(k.zoomed)e(C);else{if(t)k.original=t;else{if(!(b.length>0))return void e(C);var r=b;k.original=r[0]}if(k.original.dispatchEvent(Us("medium-zoom:open",{detail:{zoom:C}})),P=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,x=!0,k.zoomed=Ls(k.original),document.body.appendChild(T),_.template){var a=As(_.template)?_.template:document.querySelector(_.template);k.template=document.createElement("div"),k.template.appendChild(a.content.cloneNode(!0)),document.body.appendChild(k.template)}if(k.original.parentElement&&"PICTURE"===k.original.parentElement.tagName&&k.original.currentSrc&&(k.zoomed.src=k.original.currentSrc),document.body.appendChild(k.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),k.original.classList.add("medium-zoom-image--hidden"),k.zoomed.classList.add("medium-zoom-image--opened"),k.zoomed.addEventListener("click",f),k.zoomed.addEventListener("transitionend",(function t(){x=!1,k.zoomed.removeEventListener("transitionend",t),k.original.dispatchEvent(Us("medium-zoom:opened",{detail:{zoom:C}})),e(C)})),k.original.getAttribute("data-zoom-src")){k.zoomedHd=k.zoomed.cloneNode(),k.zoomedHd.removeAttribute("srcset"),k.zoomedHd.removeAttribute("sizes"),k.zoomedHd.removeAttribute("loading"),k.zoomedHd.src=k.zoomed.getAttribute("data-zoom-src"),k.zoomedHd.onerror=function(){clearInterval(o),console.warn("Unable to reach the zoom image target "+k.zoomedHd.src),k.zoomedHd=null,n()};var o=setInterval((function(){k.zoomedHd.complete&&(clearInterval(o),k.zoomedHd.classList.add("medium-zoom-image--opened"),k.zoomedHd.addEventListener("click",f),document.body.appendChild(k.zoomedHd),n())}),10)}else if(k.original.hasAttribute("srcset")){k.zoomedHd=k.zoomed.cloneNode(),k.zoomedHd.removeAttribute("sizes"),k.zoomedHd.removeAttribute("loading");var i=k.zoomedHd.addEventListener("load",(function(){k.zoomedHd.removeEventListener("load",i),k.zoomedHd.classList.add("medium-zoom-image--opened"),k.zoomedHd.addEventListener("click",f),document.body.appendChild(k.zoomedHd),n()}))}else n()}}}))},f=function(){return new r((function(e){if(!x&&k.original){x=!0,document.body.classList.remove("medium-zoom--opened"),k.zoomed.style.transform="",k.zoomedHd&&(k.zoomedHd.style.transform=""),k.template&&(k.template.style.transition="opacity 150ms",k.template.style.opacity=0),k.original.dispatchEvent(Us("medium-zoom:close",{detail:{zoom:C}})),k.zoomed.addEventListener("transitionend",(function t(){k.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(k.zoomed),k.zoomedHd&&document.body.removeChild(k.zoomedHd),document.body.removeChild(T),k.zoomed.classList.remove("medium-zoom-image--opened"),k.template&&document.body.removeChild(k.template),x=!1,k.zoomed.removeEventListener("transitionend",t),k.original.dispatchEvent(Us("medium-zoom:closed",{detail:{zoom:C}})),k.original=null,k.zoomed=null,k.zoomedHd=null,k.template=null,e(C)}))}else e(C)}))},v=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target;return k.original?f():h({target:t})},g=function(){return _},m=function(){return b},y=function(){return k.original},b=[],w=[],x=!1,P=0,_=n,k={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(t)?_=t:(t||"string"==typeof t)&&c(t),_=Bs({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},_);var T=Ds(_.background);document.addEventListener("click",a),document.addEventListener("keyup",i),document.addEventListener("scroll",o),window.addEventListener("resize",f);var C={open:h,close:f,toggle:v,update:s,clone:l,attach:c,detach:u,on:p,off:d,getOptions:g,getImages:m,getZoomedImage:y};return C},Rs=[ms,_s,Cs,$s,{data:()=>({zoom:null}),mounted(){this.updateZoom()},updated(){this.updateZoom()},methods:{updateZoom(){setTimeout(()=>{this.zoom&&this.zoom.detach(),this.zoom=Ns(".theme-default-content :not(a) > img",void 0)},1e3)}}}],zs={name:"GlobalLayout",computed:{layout(){const e=this.getLayout();return ds("layout",e),qn.component(e)}},methods:{getLayout(){if(this.$page.path){const e=this.$page.frontmatter.layout;return e&&(this.$vuepress.getLayoutAsyncComponent(e)||this.$vuepress.getVueComponent(e))?e:"Layout"}return"NotFound"}}},Ws=Object(Es.a)(zs,(function(){return(0,this._self._c)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(e,t,n){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],n);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...n);break;default:throw new Error("Unknown option name.")}}(Ws,"mixins",Rs);const Fs=[{name:"v-499e2aec",path:"/1-0-3-128-released/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-499e2aec").then(n)}},{path:"/1-0-3-128-released/index.html",redirect:"/1-0-3-128-released/"},{path:"/_posts/1-0-3-128-released.html",redirect:"/1-0-3-128-released/"},{name:"v-1921d58c",path:"/1-0-3-132-released/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-1921d58c").then(n)}},{path:"/1-0-3-132-released/index.html",redirect:"/1-0-3-132-released/"},{path:"/_posts/1-0-3-132-released.html",redirect:"/1-0-3-132-released/"},{name:"v-6c585c80",path:"/2019-year-in-review/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-6c585c80").then(n)}},{path:"/2019-year-in-review/index.html",redirect:"/2019-year-in-review/"},{path:"/_posts/2019-year-in-review.html",redirect:"/2019-year-in-review/"},{name:"v-19d2659c",path:"/announcing-btcpay-directory/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-19d2659c").then(n)}},{path:"/announcing-btcpay-directory/index.html",redirect:"/announcing-btcpay-directory/"},{path:"/_posts/announcing-btcpay-directory.html",redirect:"/announcing-btcpay-directory/"},{name:"v-cd62a5a8",path:"/bitcoin-2024-the-year-of-ambassadors/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-cd62a5a8").then(n)}},{path:"/bitcoin-2024-the-year-of-ambassadors/index.html",redirect:"/bitcoin-2024-the-year-of-ambassadors/"},{path:"/_posts/bitcoin-2024-the-year-of-ambassadors.html",redirect:"/bitcoin-2024-the-year-of-ambassadors/"},{name:"v-6028760c",path:"/bitcoin-bonus-scam/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-6028760c").then(n)}},{path:"/bitcoin-bonus-scam/index.html",redirect:"/bitcoin-bonus-scam/"},{path:"/_posts/bitcoin-bonus-scam.html",redirect:"/bitcoin-bonus-scam/"},{name:"v-105c3aa4",path:"/bitcoin-pos/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-105c3aa4").then(n)}},{path:"/bitcoin-pos/index.html",redirect:"/bitcoin-pos/"},{path:"/_posts/bitcoin-pos.html",redirect:"/bitcoin-pos/"},{name:"v-1db83acc",path:"/bitpaint-btcpay-server-stories/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-1db83acc").then(n)}},{path:"/bitpaint-btcpay-server-stories/index.html",redirect:"/bitpaint-btcpay-server-stories/"},{path:"/_posts/bitpaint-btcpay-server-stories.html",redirect:"/bitpaint-btcpay-server-stories/"},{name:"v-72ecdccc",path:"/brian-harrington-btcpay-server-stories/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-72ecdccc").then(n)}},{path:"/brian-harrington-btcpay-server-stories/index.html",redirect:"/brian-harrington-btcpay-server-stories/"},{path:"/_posts/brian-harrington-btcpay-server-stories.html",redirect:"/brian-harrington-btcpay-server-stories/"},{name:"v-78e3a332",path:"/btcpay-1-0-3-137-released/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-78e3a332").then(n)}},{path:"/btcpay-1-0-3-137-released/index.html",redirect:"/btcpay-1-0-3-137-released/"},{path:"/_posts/btcpay-1-0-3-137-released.html",redirect:"/btcpay-1-0-3-137-released/"},{name:"v-69792af4",path:"/btcpay-1-0-3-127-released/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-69792af4").then(n)}},{path:"/btcpay-1-0-3-127-released/index.html",redirect:"/btcpay-1-0-3-127-released/"},{path:"/_posts/btcpay-1-0-3-127-released.html",redirect:"/btcpay-1-0-3-127-released/"},{name:"v-5923a558",path:"/btcpay-day-2019/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-5923a558").then(n)}},{path:"/btcpay-day-2019/index.html",redirect:"/btcpay-day-2019/"},{path:"/_posts/btcpay-day-2019.html",redirect:"/btcpay-day-2019/"},{name:"v-00e62a0c",path:"/btcpay-day-2022-riga/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-00e62a0c").then(n)}},{path:"/btcpay-day-2022-riga/index.html",redirect:"/btcpay-day-2022-riga/"},{path:"/_posts/btcpay-day-2022-riga.html",redirect:"/btcpay-day-2022-riga/"},{name:"v-cc0c9ce8",path:"/btcpay-day-riga-2019-recap/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-cc0c9ce8").then(n)}},{path:"/btcpay-day-riga-2019-recap/index.html",redirect:"/btcpay-day-riga-2019-recap/"},{path:"/_posts/btcpay-day-riga-2019-recap.html",redirect:"/btcpay-day-riga-2019-recap/"},{name:"v-48df8fa8",path:"/btcpay-documentary-my-trust-in-you-is-broken/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-48df8fa8").then(n)}},{path:"/btcpay-documentary-my-trust-in-you-is-broken/index.html",redirect:"/btcpay-documentary-my-trust-in-you-is-broken/"},{path:"/_posts/btcpay-documentary-my-trust-in-you-is-broken.html",redirect:"/btcpay-documentary-my-trust-in-you-is-broken/"},{name:"v-1245cc68",path:"/btcpay-foundation-announcement/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-1245cc68").then(n)}},{path:"/btcpay-foundation-announcement/index.html",redirect:"/btcpay-foundation-announcement/"},{path:"/_posts/btcpay-foundation-announcement.html",redirect:"/btcpay-foundation-announcement/"},{name:"v-9ed1236c",path:"/btcpay-misconceptions/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-9ed1236c").then(n)}},{path:"/btcpay-misconceptions/index.html",redirect:"/btcpay-misconceptions/"},{path:"/_posts/btcpay-misconceptions.html",redirect:"/btcpay-misconceptions/"},{name:"v-272b7c8c",path:"/btcpay-lnd-migration/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-272b7c8c").then(n)}},{path:"/btcpay-lnd-migration/index.html",redirect:"/btcpay-lnd-migration/"},{path:"/_posts/btcpay-lnd-migration.html",redirect:"/btcpay-lnd-migration/"},{name:"v-7d95c994",path:"/btcpay-server-1-0-3-147/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-7d95c994").then(n)}},{path:"/btcpay-server-1-0-3-147/index.html",redirect:"/btcpay-server-1-0-3-147/"},{path:"/_posts/btcpay-server-1-0-3-147.html",redirect:"/btcpay-server-1-0-3-147/"},{name:"v-ebc87668",path:"/btcpay-server-1-0-3-95/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-ebc87668").then(n)}},{path:"/btcpay-server-1-0-3-95/index.html",redirect:"/btcpay-server-1-0-3-95/"},{path:"/_posts/btcpay-server-1-0-3-95.html",redirect:"/btcpay-server-1-0-3-95/"},{name:"v-45843d5a",path:"/btcpay-server-1-0-4-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-45843d5a").then(n)}},{path:"/btcpay-server-1-0-4-0/index.html",redirect:"/btcpay-server-1-0-4-0/"},{path:"/_posts/btcpay-server-1-0-4-0.html",redirect:"/btcpay-server-1-0-4-0/"},{name:"v-04835b18",path:"/btcpay-server-1-0-5-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-04835b18").then(n)}},{path:"/btcpay-server-1-0-5-0/index.html",redirect:"/btcpay-server-1-0-5-0/"},{path:"/_posts/btcpay-server-1-0-5-0.html",redirect:"/btcpay-server-1-0-5-0/"},{name:"v-debd9fe0",path:"/btcpay-server-1-0-5-4/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-debd9fe0").then(n)}},{path:"/btcpay-server-1-0-5-4/index.html",redirect:"/btcpay-server-1-0-5-4/"},{path:"/_posts/btcpay-server-1-0-5-4.html",redirect:"/btcpay-server-1-0-5-4/"},{name:"v-56b01a8c",path:"/btcpay-server-1-0-5-6/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-56b01a8c").then(n)}},{path:"/btcpay-server-1-0-5-6/index.html",redirect:"/btcpay-server-1-0-5-6/"},{path:"/_posts/btcpay-server-1-0-5-6.html",redirect:"/btcpay-server-1-0-5-6/"},{name:"v-78fb0e54",path:"/btcpay-server-1-0-6-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-78fb0e54").then(n)}},{path:"/btcpay-server-1-0-6-0/index.html",redirect:"/btcpay-server-1-0-6-0/"},{path:"/_posts/btcpay-server-1-0-6-0.html",redirect:"/btcpay-server-1-0-6-0/"},{name:"v-222d4f66",path:"/btcpay-server-1-1-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-222d4f66").then(n)}},{path:"/btcpay-server-1-1-0/index.html",redirect:"/btcpay-server-1-1-0/"},{path:"/_posts/btcpay-server-1-1-0.html",redirect:"/btcpay-server-1-1-0/"},{name:"v-529e392c",path:"/btcpay-server-1-10-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-529e392c").then(n)}},{path:"/btcpay-server-1-10-0/index.html",redirect:"/btcpay-server-1-10-0/"},{path:"/_posts/btcpay-server-1-10-0.html",redirect:"/btcpay-server-1-10-0/"},{name:"v-f8ff4568",path:"/btcpay-server-1-11-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-f8ff4568").then(n)}},{path:"/btcpay-server-1-11-0/index.html",redirect:"/btcpay-server-1-11-0/"},{path:"/_posts/btcpay-server-1-11-0.html",redirect:"/btcpay-server-1-11-0/"},{name:"v-973afd28",path:"/btcpay-server-1-12-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-973afd28").then(n)}},{path:"/btcpay-server-1-12-0/index.html",redirect:"/btcpay-server-1-12-0/"},{path:"/_posts/btcpay-server-1-12-0.html",redirect:"/btcpay-server-1-12-0/"},{name:"v-b5151f96",path:"/btcpay-server-1-13-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-b5151f96").then(n)}},{path:"/btcpay-server-1-13-0/index.html",redirect:"/btcpay-server-1-13-0/"},{path:"/_posts/btcpay-server-1-13-0 .html",redirect:"/btcpay-server-1-13-0/"},{name:"v-293dce38",path:"/btcpay-server-1-2-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-293dce38").then(n)}},{path:"/btcpay-server-1-2-0/index.html",redirect:"/btcpay-server-1-2-0/"},{path:"/_posts/btcpay-server-1-2-0.html",redirect:"/btcpay-server-1-2-0/"},{name:"v-96d63b3c",path:"/btcpay-server-1-3-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-96d63b3c").then(n)}},{path:"/btcpay-server-1-3-0/index.html",redirect:"/btcpay-server-1-3-0/"},{path:"/_posts/btcpay-server-1-3-0.html",redirect:"/btcpay-server-1-3-0/"},{name:"v-7dc8abe0",path:"/btcpay-server-1-4-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-7dc8abe0").then(n)}},{path:"/btcpay-server-1-4-0/index.html",redirect:"/btcpay-server-1-4-0/"},{path:"/_posts/btcpay-server-1-4-0.html",redirect:"/btcpay-server-1-4-0/"},{name:"v-10303edc",path:"/btcpay-server-1-6-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-10303edc").then(n)}},{path:"/btcpay-server-1-6-0/index.html",redirect:"/btcpay-server-1-6-0/"},{path:"/_posts/btcpay-server-1-6-0.html",redirect:"/btcpay-server-1-6-0/"},{name:"v-46fc755e",path:"/btcpay-server-1-5-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-46fc755e").then(n)}},{path:"/btcpay-server-1-5-0/index.html",redirect:"/btcpay-server-1-5-0/"},{path:"/_posts/btcpay-server-1-5-0.html",redirect:"/btcpay-server-1-5-0/"},{name:"v-4d37ef4c",path:"/btcpay-server-1-7-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-4d37ef4c").then(n)}},{path:"/btcpay-server-1-7-0/index.html",redirect:"/btcpay-server-1-7-0/"},{path:"/_posts/btcpay-server-1-7-0.html",redirect:"/btcpay-server-1-7-0/"},{name:"v-bad05c50",path:"/btcpay-server-1-8-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-bad05c50").then(n)}},{path:"/btcpay-server-1-8-0/index.html",redirect:"/btcpay-server-1-8-0/"},{path:"/_posts/btcpay-server-1-8-0.html",redirect:"/btcpay-server-1-8-0/"},{name:"v-6bcb9b56",path:"/btcpay-server-1-9-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-6bcb9b56").then(n)}},{path:"/btcpay-server-1-9-0/index.html",redirect:"/btcpay-server-1-9-0/"},{path:"/_posts/btcpay-server-1-9-0.html",redirect:"/btcpay-server-1-9-0/"},{name:"v-8a7ea4a8",path:"/btcpay-server-2-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-8a7ea4a8").then(n)}},{path:"/btcpay-server-2-0/index.html",redirect:"/btcpay-server-2-0/"},{path:"/_posts/btcpay-server-2-0.html",redirect:"/btcpay-server-2-0/"},{name:"v-2bdfe6a8",path:"/btcpay-server-cve-2022-32984/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-2bdfe6a8").then(n)}},{path:"/btcpay-server-cve-2022-32984/index.html",redirect:"/btcpay-server-cve-2022-32984/"},{path:"/_posts/btcpay-server-CVE-2022-32984.html",redirect:"/btcpay-server-cve-2022-32984/"},{name:"v-347df1ac",path:"/btcpay-server-btse/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-347df1ac").then(n)}},{path:"/btcpay-server-btse/index.html",redirect:"/btcpay-server-btse/"},{path:"/_posts/btcpay-server-btse.html",redirect:"/btcpay-server-btse/"},{name:"v-511f408c",path:"/btcpay-server-foundation-introspective/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-511f408c").then(n)}},{path:"/btcpay-server-foundation-introspective/index.html",redirect:"/btcpay-server-foundation-introspective/"},{path:"/_posts/btcpay-server-foundation-introspective.html",redirect:"/btcpay-server-foundation-introspective/"},{name:"v-db861df0",path:"/btcpay-server-grant-baillie-gifford/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-db861df0").then(n)}},{path:"/btcpay-server-grant-baillie-gifford/index.html",redirect:"/btcpay-server-grant-baillie-gifford/"},{path:"/_posts/btcpay-server-grant-baillie-gifford.html",redirect:"/btcpay-server-grant-baillie-gifford/"},{name:"v-42608e28",path:"/btcpay-server-grant-7-okcoin/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-42608e28").then(n)}},{path:"/btcpay-server-grant-7-okcoin/index.html",redirect:"/btcpay-server-grant-7-okcoin/"},{path:"/_posts/btcpay-server-grant-7-okcoin.html",redirect:"/btcpay-server-grant-7-okcoin/"},{name:"v-3ef1982c",path:"/btcpay-server-grant-pnxbet/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-3ef1982c").then(n)}},{path:"/btcpay-server-grant-pnxbet/index.html",redirect:"/btcpay-server-grant-pnxbet/"},{path:"/_posts/btcpay-server-grant-pnxbet.html",redirect:"/btcpay-server-grant-pnxbet/"},{name:"v-127af38c",path:"/btcpay-server-kraken-grant/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-127af38c").then(n)}},{path:"/btcpay-server-kraken-grant/index.html",redirect:"/btcpay-server-kraken-grant/"},{path:"/_posts/btcpay-server-kraken-grant.html",redirect:"/btcpay-server-kraken-grant/"},{name:"v-4071114c",path:"/btcpay-server-v1-0-7-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-4071114c").then(n)}},{path:"/btcpay-server-v1-0-7-0/index.html",redirect:"/btcpay-server-v1-0-7-0/"},{path:"/_posts/btcpay-server-v1-0-7-0.html",redirect:"/btcpay-server-v1-0-7-0/"},{name:"v-67eac528",path:"/btcpay-vault/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-67eac528").then(n)}},{path:"/btcpay-vault/index.html",redirect:"/btcpay-vault/"},{path:"/_posts/btcpay-vault.html",redirect:"/btcpay-vault/"},{name:"v-636cee68",path:"/case-study-bhb24-nostriga/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-636cee68").then(n)}},{path:"/case-study-bhb24-nostriga/index.html",redirect:"/case-study-bhb24-nostriga/"},{path:"/_posts/case-study-bhb24-nostriga.html",redirect:"/case-study-bhb24-nostriga/"},{name:"v-75a17a68",path:"/case-study-bitcoin-jungle-cr/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-75a17a68").then(n)}},{path:"/case-study-bitcoin-jungle-cr/index.html",redirect:"/case-study-bitcoin-jungle-cr/"},{path:"/_posts/case-study-bitcoin-jungle-cr.html",redirect:"/case-study-bitcoin-jungle-cr/"},{name:"v-5cd1fdc4",path:"/case-study-bitcoin-atlantis/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-5cd1fdc4").then(n)}},{path:"/case-study-bitcoin-atlantis/index.html",redirect:"/case-study-bitcoin-atlantis/"},{path:"/_posts/case-study-bitcoin-atlantis.html",redirect:"/case-study-bitcoin-atlantis/"},{name:"v-7ed5a5a0",path:"/case-study-bitcoin-people/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-7ed5a5a0").then(n)}},{path:"/case-study-bitcoin-people/index.html",redirect:"/case-study-bitcoin-people/"},{path:"/_posts/case-study-bitcoin-people.html",redirect:"/case-study-bitcoin-people/"},{name:"v-0d961d0c",path:"/case-study-coincards/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-0d961d0c").then(n)}},{path:"/case-study-coincards/index.html",redirect:"/case-study-coincards/"},{path:"/_posts/case-study-coincards.html",redirect:"/case-study-coincards/"},{name:"v-3b4a92e8",path:"/case-study-hodlhodl-2023/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-3b4a92e8").then(n)}},{path:"/case-study-hodlhodl-2023/index.html",redirect:"/case-study-hodlhodl-2023/"},{path:"/_posts/case-study-hodlhodl-2023.html",redirect:"/case-study-hodlhodl-2023/"},{name:"v-194aa16c",path:"/case-study-opensubtitles/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-194aa16c").then(n)}},{path:"/case-study-opensubtitles/index.html",redirect:"/case-study-opensubtitles/"},{path:"/_posts/case-study-opensubtitles.html",redirect:"/case-study-opensubtitles/"},{name:"v-75f7bbe8",path:"/case-study-strainly/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-75f7bbe8").then(n)}},{path:"/case-study-strainly/index.html",redirect:"/case-study-strainly/"},{path:"/_posts/case-study-strainly.html",redirect:"/case-study-strainly/"},{name:"v-fc399aa8",path:"/case-study-technical-prism-sideshift/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-fc399aa8").then(n)}},{path:"/case-study-technical-prism-sideshift/index.html",redirect:"/case-study-technical-prism-sideshift/"},{path:"/_posts/case-study-technical-prism-sideshift.html",redirect:"/case-study-technical-prism-sideshift/"},{name:"v-f6ea4c28",path:"/dg-grant-2019/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-f6ea4c28").then(n)}},{path:"/dg-grant-2019/index.html",redirect:"/dg-grant-2019/"},{path:"/_posts/dg-grant-2019.html",redirect:"/dg-grant-2019/"},{name:"v-d31850e8",path:"/case-study-voltage/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-d31850e8").then(n)}},{path:"/case-study-voltage/index.html",redirect:"/case-study-voltage/"},{path:"/_posts/case-study-voltage.html",redirect:"/case-study-voltage/"},{name:"v-312de42c",path:"/how-to-accept-bitcoin-donations/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-312de42c").then(n)}},{path:"/how-to-accept-bitcoin-donations/index.html",redirect:"/how-to-accept-bitcoin-donations/"},{path:"/_posts/how-to-accept-bitcoin-donations.html",redirect:"/how-to-accept-bitcoin-donations/"},{name:"v-492b1fe8",path:"/how-to-earn-bitcoin-btcpayserver/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-492b1fe8").then(n)}},{path:"/how-to-earn-bitcoin-btcpayserver/index.html",redirect:"/how-to-earn-bitcoin-btcpayserver/"},{path:"/_posts/how-to-earn-bitcoin-btcpayserver.html",redirect:"/how-to-earn-bitcoin-btcpayserver/"},{name:"v-8e8a67e8",path:"/interview-with-jeff-vandrew-jr/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-8e8a67e8").then(n)}},{path:"/interview-with-jeff-vandrew-jr/index.html",redirect:"/interview-with-jeff-vandrew-jr/"},{path:"/_posts/interview-with-jeff-vandrew-jr.html",redirect:"/interview-with-jeff-vandrew-jr/"},{name:"v-2fcedaac",path:"/jamie-lim-sticky-singapore/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-2fcedaac").then(n)}},{path:"/jamie-lim-sticky-singapore/index.html",redirect:"/jamie-lim-sticky-singapore/"},{path:"/_posts/jamie-lim-sticky-singapore.html",redirect:"/jamie-lim-sticky-singapore/"},{name:"v-22bca8a8",path:"/mike-olthoff-coincards/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-22bca8a8").then(n)}},{path:"/mike-olthoff-coincards/index.html",redirect:"/mike-olthoff-coincards/"},{path:"/_posts/mike-olthoff-coincards.html",redirect:"/mike-olthoff-coincards/"},{name:"v-45be51d2",path:"/librepatron-patreon-alternative/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-45be51d2").then(n)}},{path:"/librepatron-patreon-alternative/index.html",redirect:"/librepatron-patreon-alternative/"},{path:"/_posts/librepatron-patreon-alternative.html",redirect:"/librepatron-patreon-alternative/"},{name:"v-03c118ec",path:"/nbxplorer-postgres/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-03c118ec").then(n)}},{path:"/nbxplorer-postgres/index.html",redirect:"/nbxplorer-postgres/"},{path:"/_posts/nbxplorer-postgres.html",redirect:"/nbxplorer-postgres/"},{name:"v-1df6814c",path:"/payment-requests/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-1df6814c").then(n)}},{path:"/payment-requests/index.html",redirect:"/payment-requests/"},{path:"/_posts/payment-requests.html",redirect:"/payment-requests/"},{name:"v-1627eb18",path:"/ride-the-lightning-btcpay/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-1627eb18").then(n)}},{path:"/ride-the-lightning-btcpay/index.html",redirect:"/ride-the-lightning-btcpay/"},{path:"/_posts/ride-the-lightning-btcpay.html",redirect:"/ride-the-lightning-btcpay/"},{name:"v-4ec352bc",path:"/this-is-lies-youre-now-obsolete/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-4ec352bc").then(n)}},{path:"/this-is-lies-youre-now-obsolete/index.html",redirect:"/this-is-lies-youre-now-obsolete/"},{path:"/_posts/this-is-lies-youre-now-obsolete.html",redirect:"/this-is-lies-youre-now-obsolete/"},{name:"v-d8f9098c",path:"/vulnerability-disclosure-v1-0-7-0/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-d8f9098c").then(n)}},{path:"/vulnerability-disclosure-v1-0-7-0/index.html",redirect:"/vulnerability-disclosure-v1-0-7-0/"},{path:"/_posts/vulnerability-disclosure-v1-0-7-0.html",redirect:"/vulnerability-disclosure-v1-0-7-0/"},{name:"v-3b36bdf4",path:"/xss-vulnerability-disclosure-doyensec/",component:Ws,beforeEnter:(e,t,n)=>{ps("Post","v-3b36bdf4").then(n)}},{path:"/xss-vulnerability-disclosure-doyensec/index.html",redirect:"/xss-vulnerability-disclosure-doyensec/"},{path:"/_posts/xss-vulnerability-disclosure-doyensec.html",redirect:"/xss-vulnerability-disclosure-doyensec/"},{name:"v-281f49ca",path:"/privacy-policy/",component:Ws,beforeEnter:(e,t,n)=>{ps("Layout","v-281f49ca").then(n)}},{path:"/privacy-policy/index.html",redirect:"/privacy-policy/"},{path:"/privacy-policy.html",redirect:"/privacy-policy/"},{name:"v-b2754d56",path:"/",component:Ws,beforeEnter:(e,t,n)=>{ps("IndexPost","v-b2754d56").then(n)},meta:{pid:"post",id:"post"}},{path:"/index.html",redirect:"/"},{name:"v-28e6393c",path:"/category/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterKey","v-28e6393c").then(n)},meta:{pid:"category",id:"category"}},{path:"/category/index.html",redirect:"/category/"},{name:"v-7d2105e2",path:"/author/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterKey","v-7d2105e2").then(n)},meta:{pid:"author",id:"author"}},{path:"/author/index.html",redirect:"/author/"},{name:"v-1a97baa7",path:"/category/releases/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-1a97baa7").then(n)},meta:{pid:"category",id:"releases"}},{path:"/category/releases/index.html",redirect:"/category/releases/"},{name:"v-4602e778",path:"/category/stories/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-4602e778").then(n)},meta:{pid:"category",id:"stories"}},{path:"/category/stories/index.html",redirect:"/category/stories/"},{name:"v-c614f442",path:"/category/announcements/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-c614f442").then(n)},meta:{pid:"category",id:"announcements"}},{path:"/category/announcements/index.html",redirect:"/category/announcements/"},{name:"v-8b44b548",path:"/category/guides/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-8b44b548").then(n)},meta:{pid:"category",id:"guides"}},{path:"/category/guides/index.html",redirect:"/category/guides/"},{name:"v-079fe454",path:"/category/features/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-079fe454").then(n)},meta:{pid:"category",id:"features"}},{path:"/category/features/index.html",redirect:"/category/features/"},{name:"v-3945bb29",path:"/category/case-studies/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-3945bb29").then(n)},meta:{pid:"category",id:"case-studies"}},{path:"/category/case-studies/index.html",redirect:"/category/case-studies/"},{name:"v-70cfb9cb",path:"/category/plugins/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-70cfb9cb").then(n)},meta:{pid:"category",id:"plugins"}},{path:"/category/plugins/index.html",redirect:"/category/plugins/"},{name:"v-1b2a4f46",path:"/author/pavlenex/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-1b2a4f46").then(n)},meta:{pid:"author",id:"pavlenex"}},{path:"/author/pavlenex/index.html",redirect:"/author/pavlenex/"},{name:"v-04ed8067",path:"/author/Nicolas/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-04ed8067").then(n)},meta:{pid:"author",id:"Nicolas"}},{path:"/author/Nicolas/index.html",redirect:"/author/Nicolas/"},{name:"v-a7039020",path:"/author/RockstarDev, Pavlenex, WebWorthy/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-a7039020").then(n)},meta:{pid:"author",id:"RockstarDev, Pavlenex, WebWorthy"}},{path:"/author/RockstarDev, Pavlenex, WebWorthy/index.html",redirect:"/author/RockstarDev, Pavlenex, WebWorthy/"},{name:"v-0cca2b78",path:"/author/ndeet, petzsch/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-0cca2b78").then(n)},meta:{pid:"author",id:"ndeet, petzsch"}},{path:"/author/ndeet, petzsch/index.html",redirect:"/author/ndeet, petzsch/"},{name:"v-3403a1ae",path:"/author/Zaxounette/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-3403a1ae").then(n)},meta:{pid:"author",id:"Zaxounette"}},{path:"/author/Zaxounette/index.html",redirect:"/author/Zaxounette/"},{name:"v-6daaf85f",path:"/author/WebWorthy/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-6daaf85f").then(n)},meta:{pid:"author",id:"WebWorthy"}},{path:"/author/WebWorthy/index.html",redirect:"/author/WebWorthy/"},{name:"v-545bd84a",path:"/author/Bas/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-545bd84a").then(n)},meta:{pid:"author",id:"Bas"}},{path:"/author/Bas/index.html",redirect:"/author/Bas/"},{name:"v-69dcf83d",path:"/author/Pavlenex/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-69dcf83d").then(n)},meta:{pid:"author",id:"Pavlenex"}},{path:"/author/Pavlenex/index.html",redirect:"/author/Pavlenex/"},{name:"v-0ace2199",path:"/author/Pavlenex, Webworthy/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-0ace2199").then(n)},meta:{pid:"author",id:"Pavlenex, Webworthy"}},{path:"/author/Pavlenex, Webworthy/index.html",redirect:"/author/Pavlenex, Webworthy/"},{name:"v-754df0d0",path:"/author/Elha, Pavlenex, Webworthy/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-754df0d0").then(n)},meta:{pid:"author",id:"Elha, Pavlenex, Webworthy"}},{path:"/author/Elha, Pavlenex, Webworthy/index.html",redirect:"/author/Elha, Pavlenex, Webworthy/"},{name:"v-72fc62d1",path:"/author/RockstarDev, MrKukks/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-72fc62d1").then(n)},meta:{pid:"author",id:"RockstarDev, MrKukks"}},{path:"/author/RockstarDev, MrKukks/index.html",redirect:"/author/RockstarDev, MrKukks/"},{name:"v-08cfd63a",path:"/author/Pavlenex, Webworthy, Bobby Shell/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-08cfd63a").then(n)},meta:{pid:"author",id:"Pavlenex, Webworthy, Bobby Shell"}},{path:"/author/Pavlenex, Webworthy, Bobby Shell/index.html",redirect:"/author/Pavlenex, Webworthy, Bobby Shell/"},{name:"v-6033dbf8",path:"/author/NicolasDorier/",component:Ws,beforeEnter:(e,t,n)=>{ps("FrontmatterPagination","v-6033dbf8").then(n)},meta:{pid:"author",id:"NicolasDorier"}},{path:"/author/NicolasDorier/index.html",redirect:"/author/NicolasDorier/"},{name:"v-8fdafa70",path:"/page/2/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-8fdafa70").then(n)},meta:{pid:"post",id:"post"}},{path:"/page/2/index.html",redirect:"/page/2/"},{name:"v-8fdafa32",path:"/page/3/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-8fdafa32").then(n)},meta:{pid:"post",id:"post"}},{path:"/page/3/index.html",redirect:"/page/3/"},{name:"v-8fdaf9f4",path:"/page/4/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-8fdaf9f4").then(n)},meta:{pid:"post",id:"post"}},{path:"/page/4/index.html",redirect:"/page/4/"},{name:"v-8fdaf9b6",path:"/page/5/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-8fdaf9b6").then(n)},meta:{pid:"post",id:"post"}},{path:"/page/5/index.html",redirect:"/page/5/"},{name:"v-8fdaf978",path:"/page/6/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-8fdaf978").then(n)},meta:{pid:"post",id:"post"}},{path:"/page/6/index.html",redirect:"/page/6/"},{name:"v-8fdaf93a",path:"/page/7/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-8fdaf93a").then(n)},meta:{pid:"post",id:"post"}},{path:"/page/7/index.html",redirect:"/page/7/"},{name:"v-8fdaf8fc",path:"/page/8/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-8fdaf8fc").then(n)},meta:{pid:"post",id:"post"}},{path:"/page/8/index.html",redirect:"/page/8/"},{name:"v-4c216136",path:"/category/releases/page/2/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-4c216136").then(n)},meta:{pid:"category",id:"releases"}},{path:"/category/releases/page/2/index.html",redirect:"/category/releases/page/2/"},{name:"v-4c216155",path:"/category/releases/page/3/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-4c216155").then(n)},meta:{pid:"category",id:"releases"}},{path:"/category/releases/page/3/index.html",redirect:"/category/releases/page/3/"},{name:"v-04e25745",path:"/category/stories/page/2/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-04e25745").then(n)},meta:{pid:"category",id:"stories"}},{path:"/category/stories/page/2/index.html",redirect:"/category/stories/page/2/"},{name:"v-1efb06fe",path:"/category/announcements/page/2/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-1efb06fe").then(n)},meta:{pid:"category",id:"announcements"}},{path:"/category/announcements/page/2/index.html",redirect:"/category/announcements/page/2/"},{name:"v-25ccea80",path:"/author/pavlenex/page/2/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-25ccea80").then(n)},meta:{pid:"author",id:"pavlenex"}},{path:"/author/pavlenex/page/2/index.html",redirect:"/author/pavlenex/page/2/"},{name:"v-25ccea42",path:"/author/pavlenex/page/3/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-25ccea42").then(n)},meta:{pid:"author",id:"pavlenex"}},{path:"/author/pavlenex/page/3/index.html",redirect:"/author/pavlenex/page/3/"},{name:"v-25ccea04",path:"/author/pavlenex/page/4/",component:Ws,beforeEnter:(e,t,n)=>{ps("DirectoryPagination","v-25ccea04").then(n)},meta:{pid:"author",id:"pavlenex"}},{path:"/author/pavlenex/page/4/index.html",redirect:"/author/pavlenex/page/4/"},{path:"*",component:Ws}],Hs={title:"BTCPay Server Blog",description:"Official BTCPay Server Blog",base:"/",headTags:[["link",{rel:"stylesheet",href:"/styles/btcpayserver-variables.css"}],["link",{rel:"shortcut icon",href:"/favicon.ico"}],["link",{rel:"alternate",type:"application/rss+xml",href:"https://blog.btcpayserver.org/rss.xml",title:"BTCPay Server Blog RSS Feed"}],["link",{rel:"alternate",type:"application/atom+xml",href:"https://blog.btcpayserver.org/feed.atom",title:"BTCPay Server Blog Atom Feed"}],["link",{rel:"alternate",type:"application/json",href:"https://blog.btcpayserver.org/feed.json",title:"BTCPay Server Blog JSON Feed"}]],pages:[{title:"BTCPay Server 1.0.3.128 released - Inventory management, LN for non-admins, polishing PoS and more!",frontmatter:{title:"BTCPay Server 1.0.3.128 released - Inventory management, LN for non-admins, polishing PoS and more!",date:"2019-09-04T00:00:00.000Z",author:"pavlenex",category:"releases",permalink:"/1-0-3-128-released",coverImage:"/images/1.0.3.128.jpg",layout:"Post"},regularPath:"/_posts/1-0-3-128-released.html",relativePath:"_posts/1-0-3-128-released.md",key:"v-499e2aec",path:"/1-0-3-128-released/",headers:[{level:2,title:"1.0.3.128 Changelog",slug:"103128-changelog"},{level:2,title:"Features",slug:"features"},{level:3,title:"Invetory Management in Apps",slug:"invetory-management-in-apps"},{level:3,title:"Lightning Network for non-admins",slug:"lightning-network-for-non-admins"},{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server version 1.0.3.132 released",frontmatter:{title:"BTCPay Server version 1.0.3.132 released",date:"2019-09-23T00:00:00.000Z",author:"Nicolas",category:["releases"],coverImage:"/images/1.0.3.132.jpg",permalink:"/1-0-3-132-released",layout:"Post"},regularPath:"/_posts/1-0-3-132-released.html",relativePath:"_posts/1-0-3-132-released.md",key:"v-1921d58c",path:"/1-0-3-132-released/",headers:[{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 2019 Year in Review",frontmatter:{title:"BTCPay Server 2019 Year in Review",date:"2019-12-29T00:00:00.000Z",author:"pavlenex",category:["stories"],coverImage:"/images/BTCPAY-2019-1024x576.png",permalink:"/2019-year-in-review",layout:"Post"},regularPath:"/_posts/2019-year-in-review.html",relativePath:"_posts/2019-year-in-review.md",key:"v-6c585c80",path:"/2019-year-in-review/",headers:[{level:2,title:"January",slug:"january"},{level:2,title:"February",slug:"february"},{level:2,title:"March",slug:"march"},{level:2,title:"April",slug:"april"},{level:2,title:"May",slug:"may"},{level:2,title:"June",slug:"june"},{level:2,title:"July",slug:"july"},{level:2,title:"August",slug:"august"},{level:2,title:"September",slug:"september"},{level:2,title:"October",slug:"october"},{level:2,title:"November",slug:"november"},{level:2,title:"December",slug:"december"},{level:2,title:"Thank you!",slug:"thank-you-"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Directory - Showcasing merchants, charities, apps and projects using BTCPay Server",frontmatter:{title:"BTCPay Directory - Showcasing merchants, charities, apps and projects using BTCPay Server",date:"2019-07-21T00:00:00.000Z",author:"pavlenex",category:["announcements"],tags:["bitcoin-merchants"],coverImage:"/images/btcpay-directory.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/announcing-btcpay-directory.html",relativePath:"_posts/announcing-btcpay-directory.md",key:"v-19d2659c",path:"/announcing-btcpay-directory/",headers:[{level:2,title:"Submitting your entry",slug:"submitting-your-entry"},{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 2024, The Year of Ambassadors",frontmatter:{title:"BTCPay Server 2024, The Year of Ambassadors",date:"2024-01-18T00:00:00.000Z",author:"RockstarDev, Pavlenex, WebWorthy",category:["stories"],tags:["bitcoin","ambassadors","merchants","FOSS","btcpay app","circular economies"],coverImage:"/images/bitcoin-2024-the-year-of-ambassadors/cover.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/bitcoin-2024-the-year-of-ambassadors.html",relativePath:"_posts/bitcoin-2024-the-year-of-ambassadors.md",key:"v-cd62a5a8",path:"/bitcoin-2024-the-year-of-ambassadors/",id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Bitcoin Bonus Scam",frontmatter:{title:"Bitcoin Bonus Scam",date:"2023-03-10T00:00:00.000Z",author:"ndeet, petzsch",category:["stories"],tags:["bitcoin bonus","scam"],coverImage:"/images/bitcoinbonus-header.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/bitcoin-bonus-scam.html",relativePath:"_posts/bitcoin-bonus-scam.md",key:"v-6028760c",path:"/bitcoin-bonus-scam/",headers:[{level:2,title:"What happened",slug:"what-happened"},{level:2,title:"What is BTCPay Server and why we can’t help",slug:"what-is-btcpay-server-and-why-we-can-t-help"},{level:2,title:"How the scam works",slug:"how-the-scam-works"},{level:2,title:"What we’ve done to mitigate it",slug:"what-we-ve-done-to-mitigate-it"},{level:2,title:"What to do if you were affected by the scam",slug:"what-to-do-if-you-were-affected-by-the-scam"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"How to create a Bitcoin Point of Sale (PoS)",frontmatter:{title:"How to create a Bitcoin Point of Sale (PoS)",author:"pavlenex",date:"2019-03-12T00:00:00.000Z",category:"guides",tags:["apps","pos"],coverImage:"/images/Bitcoin-Point-Of-Sale-1024x768.jpg",permalink:"/bitcoin-pos",layout:"Post"},regularPath:"/_posts/bitcoin-pos.html",relativePath:"_posts/bitcoin-pos.md",key:"v-105c3aa4",path:"/bitcoin-pos/",headers:[{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Steps",slug:"steps"},{level:2,title:"Step 1 - Deploying BTCPay",slug:"step-1-deploying-btcpay"},{level:2,title:"Step 2 - Registering, creating a store, connecting a wallet",slug:"step-2-registering-creating-a-store-connecting-a-wallet"},{level:3,title:"2.1 - Creating an account",slug:"21-creating-an-account"},{level:3,title:"2.2 - Creating a store",slug:"22-creating-a-store"},{level:3,title:"2.3 - Connecting a wallet",slug:"23-connecting-a-wallet"},{level:2,title:"Step 3 - Creating Point of Sale app",slug:"step-3-creating-point-of-sale-app"},{level:2,title:"Step 4 - Adding link as a desktop shortcut",slug:"step-4-adding-link-as-a-desktop-shortcut"},{level:2,title:"Don't buy Bitcoin - earn it",slug:"dont-buy-bitcoin-earn-it"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Bitpaint - BTCPay Server Stories",frontmatter:{title:"Bitpaint - BTCPay Server Stories",date:"2020-11-06T00:00:00.000Z",author:"Zaxounette",category:["stories"],tags:["art","btcpay-server","france","interview","stories"],coverImage:"/images/BTCPS_Bitpaint_Featured_Edited.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/bitpaint-btcpay-server-stories.html",relativePath:"_posts/bitpaint-btcpay-server-stories.md",key:"v-1db83acc",path:"/bitpaint-btcpay-server-stories/",headers:[{level:2,title:"",slug:""},{level:2,title:"The BTCPay Server encounter",slug:"the-btcpay-server-encounter"},{level:2,title:"Future thoughts",slug:"future-thoughts"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Brian Harrington - BTCPay Server Stories",frontmatter:{title:"Brian Harrington - BTCPay Server Stories",date:"2020-10-10T00:00:00.000Z",author:"Zaxounette",category:["stories"],tags:["bitcoin-circular-economy","btcpay-server","interview","stories","usa"],coverImage:"/images/Group-49.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/brian-harrington-btcpay-server-stories.html",relativePath:"_posts/brian-harrington-btcpay-server-stories.md",key:"v-72ecdccc",path:"/brian-harrington-btcpay-server-stories/",headers:[{level:2,title:"",slug:""},{level:2,title:"Meeting BTCPay Server",slug:"meeting-btcpay-server"},{level:2,title:"BTCPay Server's future",slug:"btcpay-servers-future"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server version 1.0.3.137 released",frontmatter:{title:"BTCPay Server version 1.0.3.137 released",date:"2019-11-07T00:00:00.000Z",author:"pavlenex",category:["features","releases"],coverImage:"/images/1.0.3.137.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-1-0-3-137-released.html",relativePath:"_posts/btcpay-1-0-3-137-released.md",key:"v-78e3a332",path:"/btcpay-1-0-3-137-released/",headers:[{level:2,title:"1.0.3.137 Changelog",slug:"103137-changelog"},{level:3,title:"Docker deployment:",slug:"docker-deployment"},{level:2,title:"The new login page",slug:"the-new-login-page"},{level:2,title:"Fully Noded Integration",slug:"fully-noded-integration"},{level:2,title:"Eclair support",slug:"eclair-support"},{level:2,title:"ElectrumX support",slug:"electrumx-support"},{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay 1.0.3.127 released - Fixing a vulnerability, introducing wallet labels, comments and more",frontmatter:{title:"BTCPay 1.0.3.127 released - Fixing a vulnerability, introducing wallet labels, comments and more",date:"2019-08-10T00:00:00.000Z",author:"pavlenex",category:["features","releases"],coverImage:"/images/1.0.3.127.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-1-0-3-127-released.html",relativePath:"_posts/btcpay-1-0-3-127-released.md",key:"v-69792af4",path:"/btcpay-1-0-3-127-released/",headers:[{level:2,title:"Wallet labels",slug:"wallet-labels"},{level:3,title:"Wallet Comments",slug:"wallet-comments"},{level:2,title:"1.0.3.127 Changelog",slug:"103127-changelog"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Announcing BTCPay Day on the 16th of September in Riga",frontmatter:{title:"Announcing BTCPay Day on the 16th of September in Riga",date:"2019-08-20T00:00:00.000Z",author:"pavlenex",category:["announcements"],coverImage:"/images/BTCPay-Day-Riga-2019-Featured.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-day-2019.html",relativePath:"_posts/btcpay-day-2019.md",key:"v-5923a558",path:"/btcpay-day-2019/",headers:[{level:2,title:"Location and Time",slug:"location-and-time"},{level:2,title:"Agenda",slug:"agenda"},{level:2,title:"Early Bird Tickets available",slug:"early-bird-tickets-available"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Announcing BTCPay Day 2022 Riga 💚🇱🇻",frontmatter:{title:"Announcing BTCPay Day 2022 Riga 💚🇱🇻",date:"2022-08-04T00:00:00.000Z",author:"pavlenex",category:["announcements"],coverImage:"/images/btcpay-day-riga-2022-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-day-2022-riga.html",relativePath:"_posts/btcpay-day-2022-riga.md",key:"v-00e62a0c",path:"/btcpay-day-2022-riga/",headers:[{level:2,title:"BTCPay Day Riga 2022",slug:"btcpay-day-riga-2022"},{level:3,title:"Location and Time",slug:"location-and-time"},{level:2,title:"Early Bird Tickets available",slug:"early-bird-tickets-available"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"First BTCPay Day Riga 2019 Recap",frontmatter:{title:"First BTCPay Day Riga 2019 Recap",date:"2019-09-19T00:00:00.000Z",author:"pavlenex",category:["stories"],tags:["btcpayday","events"],coverImage:"/images/btcpaydayriga2019.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-day-riga-2019-recap.html",relativePath:"_posts/btcpay-day-riga-2019-recap.md",key:"v-cc0c9ce8",path:"/btcpay-day-riga-2019-recap/",id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"MY TRUST IN YOU IS BROKEN, BTCPay Server Feature Documentary Premiere",frontmatter:{title:"MY TRUST IN YOU IS BROKEN, BTCPay Server Feature Documentary Premiere",date:"2024-04-04T00:00:00.000Z",author:"WebWorthy",category:["stories"],tags:["bitcoin","documentary","FOSS","blocksize wars","Nicolas Dorier"],coverImage:"/images/2024-btcpay-documentary/btcpay-documentary-cover.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-documentary-my-trust-in-you-is-broken.html",relativePath:"_posts/btcpay-documentary-my-trust-in-you-is-broken.md",key:"v-48df8fa8",path:"/btcpay-documentary-my-trust-in-you-is-broken/",headers:[{level:3,title:"Description for Press",slug:"description-for-press"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Announcing the BTCPay Server Foundation and our first grant from Square Crypto",frontmatter:{title:"Announcing the BTCPay Server Foundation and our first grant from Square Crypto",date:"2019-09-14T00:00:00.000Z",author:"pavlenex",category:["announcements"],coverImage:"/images/BTCPayFoundation.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-foundation-announcement.html",relativePath:"_posts/btcpay-foundation-announcement.md",key:"v-1245cc68",path:"/btcpay-foundation-announcement/",headers:[{level:2,title:"BTCPay Server Foundation",slug:"btcpay-server-foundation"},{level:2,title:"Square Crypto Grant",slug:"square-crypto-grant"},{level:2,title:"Supporting the foundation",slug:"supporting-the-foundation"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Debunking BTCPay Server misconceptions",frontmatter:{title:"Debunking BTCPay Server misconceptions",author:"pavlenex",date:"2019-03-13T00:00:00.000Z",category:"announcements",coverImage:"/images/BTCPay-Server-Myths.jpg",permalink:"/btcpay-misconceptions",layout:"Post"},regularPath:"/_posts/btcpay-misconceptions.html",relativePath:"_posts/btcpay-misconceptions.md",key:"v-9ed1236c",path:"/btcpay-misconceptions/",headers:[{level:2,title:"1\\. BTCPay only runs on Azure and LunaNode",slug:"1-btcpay-only-runs-on-azure-and-lunanode"},{level:2,title:"2\\. BTCPay supports shitcoins",slug:"2-btcpay-supports-shitcoins"},{level:2,title:"3\\. BTCPay is expensive",slug:"3-btcpay-is-expensive"},{level:2,title:"4\\. BTCPay is a company",slug:"4-btcpay-is-a-company"},{level:2,title:"5\\. BTCPay does not have a conversion to fiat",slug:"5-btcpay-does-not-have-a-conversion-to-fiat"},{level:2,title:"6\\. BTCPay and Shopify",slug:"6-btcpay-and-shopify"},{level:2,title:"7\\. Only merchants can use BTCPay",slug:"7-only-merchants-can-use-btcpay"},{level:3,title:"Who can use BTCPay? - Anyone. Anywhere. Anytime.",slug:"who-can-use-btcpay-anyone-anywhere-anytime"},{level:2,title:"8\\. BTCPay is a clone of BitPay",slug:"8-btcpay-is-a-clone-of-bitpay"},{level:2,title:"9\\. BTCPay is a competitor to centralized payment processors",slug:"9-btcpay-is-a-competitor-to-centralized-payment-processors"},{level:2,title:"10\\. BTCPay nodes are slow to sync, nobody's going to wait",slug:"10-btcpay-nodes-are-slow-to-sync-nobodys-going-to-wait"},{level:2,title:"Summary",slug:"summary"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Migration from noseedbackup=1 to LND with seed",frontmatter:{title:"Migration from noseedbackup=1 to LND with seed",date:"2019-11-16T00:00:00.000Z",author:"pavlenex",category:["features"],tags:["lightning-network"],coverImage:"/images/LND-Migration-BTCPay.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-lnd-migration.html",relativePath:"_posts/btcpay-lnd-migration.md",key:"v-272b7c8c",path:"/btcpay-lnd-migration/",headers:[{level:2,title:"The history behind the issue",slug:"the-history-behind-the-issue"},{level:2,title:"How to migrate?",slug:"how-to-migrate"},{level:2,title:"Static channel backup (optional)",slug:"static-channel-backup-optional"},{level:2,title:"Thank you",slug:"thank-you"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server version 1.0.3.147 is out!",frontmatter:{title:"BTCPay Server version 1.0.3.147 is out!",date:"2020-01-14T00:00:00.000Z",author:"pavlenex",category:["releases"],coverImage:"/images/1.0.3.147.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-0-3-147.html",relativePath:"_posts/btcpay-server-1-0-3-147.md",key:"v-7d95c994",path:"/btcpay-server-1-0-3-147/",headers:[{level:2,title:"Migration to .NET Core 3.1.",slug:"migration-to-net-core-31"},{level:2,title:"BitcoinAverage replaced with CoinGecko",slug:"bitcoinaverage-replaced-with-coingecko"},{level:3,title:"Do not preemptively fetch rates of all exchanges",slug:"do-not-preemptively-fetch-rates-of-all-exchanges"},{level:2,title:"Hot Wallet",slug:"hot-wallet"},{level:2,title:"A thank you to our contributors",slug:"a-thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.0.3.95 Released (Invoice improvements, U2F support, Bitcoin Full Node connect to mobile via QR code, external storage support and more!)",frontmatter:{title:"BTCPay Server 1.0.3.95 Released (Invoice improvements, U2F support, Bitcoin Full Node connect to mobile via QR code, external storage support and more!)",date:"2019-05-07T00:00:00.000Z",author:"pavlenex",category:["releases"],coverImage:"/images/BTCPay-New-Version-1.0.3.95-.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-0-3-95.html",relativePath:"_posts/btcpay-server-1-0-3-95.md",key:"v-ebc87668",path:"/btcpay-server-1-0-3-95/",headers:[{level:2,title:"Invoice list updates",slug:"invoice-list-updates"},{level:2,title:"U2F Support added",slug:"u2f-support-added"},{level:2,title:"External storage service support",slug:"external-storage-service-support"},{level:2,title:"Internal Wallet improvements",slug:"internal-wallet-improvements"},{level:2,title:"Various bug fixes and UX improvements",slug:"various-bug-fixes-and-ux-improvements"},{level:2,title:"Known Issues",slug:"known-issues"},{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Introducing BTCPay Server 1.0.4.0",frontmatter:{title:"Introducing BTCPay Server 1.0.4.0",date:"2020-04-16T00:00:00.000Z",author:"pavlenex",category:["releases"],coverImage:"/images/v10040.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-0-4-0.html",relativePath:"_posts/btcpay-server-1-0-4-0.md",key:"v-45843d5a",path:"/btcpay-server-1-0-4-0/",headers:[{level:2,title:"What's new?",slug:"whats-new"},{level:3,title:"🕵️‍♂️ Payjoin (P2EP) Support",slug:"️‍♂️-payjoin-p2ep-support"},{level:3,title:"🌚 New Theme & Dark mode",slug:"-new-theme-dark-mode"},{level:3,title:"🧾 Re-designed Invoices",slug:"🧾-re-designed-invoices"},{level:3,title:"📷 New Wallet Features",slug:"-new-wallet-features"},{level:3,title:"👨‍💻 API improvements",slug:"‍-api-improvements"},{level:2,title:"🐛 Bug fixes and improvements",slug:"-bug-fixes-and-improvements"},{level:2,title:"How to update?",slug:"how-to-update"},{level:2,title:"🏪 New website & merchant directory",slug:"-new-website-merchant-directory"},{level:3,title:"🗺️ Translators needed",slug:"️-translators-needed"},{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.0.5.0 is out!",frontmatter:{title:"BTCPay Server 1.0.5.0 is out!",date:"2020-06-26T00:00:00.000Z",author:"pavlenex",category:["releases"],coverImage:"/images/v10050-1024x576-1.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-0-5-0.html",relativePath:"_posts/btcpay-server-1-0-5-0.md",key:"v-04835b18",path:"/btcpay-server-1-0-5-0/",headers:[{level:2,title:"What’s new?",slug:"what-s-new"},{level:3,title:"🔔Notifications",slug:"notifications"},{level:3,title:"🧾Pull payments",slug:"🧾pull-payments"},{level:3,title:"💰Wallet improvements",slug:"wallet-improvements"},{level:3,title:"👨‍💻Greenfield API lift-off!🚀",slug:"‍greenfield-api-lift-off-"},{level:3,title:"🐛 Bug fixes and improvements",slug:"-bug-fixes-and-improvements"},{level:2,title:"How to update?",slug:"how-to-update"},{level:2,title:"📄New Documentation",slug:"new-documentation"},{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.0.5.4 is out!",frontmatter:{title:"BTCPay Server 1.0.5.4 is out!",date:"2020-08-05T00:00:00.000Z",author:"pavlenex",category:["releases"],coverImage:"/images/v10050-1024x576-1.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-0-5-4.html",relativePath:"_posts/btcpay-server-1-0-5-4.md",key:"v-debd9fe0",path:"/btcpay-server-1-0-5-4/",headers:[{level:2,title:"🆕What's new in v1.0.5.4?",slug:"whats-new-in-v1054"},{level:3,title:"⚒️ Bitcoin-only build",slug:"⚒️-bitcoin-only-build"},{level:3,title:"What does this mean for BTCPay Server developers?",slug:"what-does-this-mean-for-btcpay-server-developers"},{level:3,title:"👨‍💻Login page re-designed",slug:"‍login-page-re-designed"},{level:3,title:"✔️Recovery phrase page",slug:"✔️recovery-phrase-page"},{level:3,title:"🔔Multi-selection of invoices and notifications",slug:"multi-selection-of-invoices-and-notifications"},{level:2,title:"🐛Bug Fixes",slug:"bug-fixes"},{level:2,title:"🔐Security fixes",slug:"security-fixes"},{level:2,title:"How to update?",slug:"how-to-update"},{level:2,title:"BTCPay Server Foundation website",slug:"btcpay-server-foundation-website"},{level:2,title:"Thank you to our contributors",slug:"thank-you-to-our-contributors"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.0.5.6 is here!",frontmatter:{title:"BTCPay Server 1.0.5.6 is here!",date:"2020-10-01T00:00:00.000Z",author:"pavlenex",category:["releases"],coverImage:"/images/BTCPay10506.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-0-5-6.html",relativePath:"_posts/btcpay-server-1-0-5-6.md",key:"v-56b01a8c",path:"/btcpay-server-1-0-5-6/",headers:[{level:2,title:"What's new in 1.0.5.6? 🆕",slug:"whats-new-in-1056-"},{level:3,title:"Shopify Support 🛍️",slug:"shopify-support-️"},{level:3,title:"Simple Point Of Sale 🛒",slug:"simple-point-of-sale-"},{level:3,title:"Partial Invoice Refund 🧾",slug:"partial-invoice-refund-🧾"},{level:3,title:"New labels for payment requests, apps and payouts 🏷️",slug:"new-labels-for-payment-requests-apps-and-payouts-️"},{level:3,title:"Fiat entry in wallet 💲",slug:"fiat-entry-in-wallet-"},{level:3,title:"Invoice log severity 🚨",slug:"invoice-log-severity-"},{level:3,title:"Invoice API 🧑‍💻",slug:"invoice-api-🧑‍"},{level:2,title:"Improvements and bug fixes 🐛",slug:"improvements-and-bug-fixes-"},{level:2,title:"How to update?",slug:"how-to-update"},{level:2,title:"Thank you to our contributors!",slug:"thank-you-to-our-contributors-"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"New version of BTCPay Server - v1.0.6.0 is out!",frontmatter:{title:"New version of BTCPay Server - v1.0.6.0 is out!",date:"2020-11-25T00:00:00.000Z",author:"pavlenex",category:["releases"],coverImage:"/images/BTCPay1060png.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-0-6-0.html",relativePath:"_posts/btcpay-server-1-0-6-0.md",key:"v-78fb0e54",path:"/btcpay-server-1-0-6-0/",headers:[{level:2,title:"🆕What's new in v1.0.6.0?",slug:"whats-new-in-v1060"},{level:3,title:"🏪Store Setup Improvements",slug:"store-setup-improvements"},{level:3,title:"🧾Unified QR Code for on-chain and off-chain payment",slug:"🧾unified-qr-code-for-on-chain-and-off-chain-payment"},{level:3,title:"🎨Re-designed payment requests, pull payments and refunds pages",slug:"re-designed-payment-requests-pull-payments-and-refunds-pages"},{level:3,title:"🆒Pay Button - QR Code",slug:"pay-button-qr-code"},{level:3,title:"⚠️Zero-confirmation invoices warning",slug:"⚠️zero-confirmation-invoices-warning"},{level:3,title:"🔔Notifications Preferences",slug:"notifications-preferences"},{level:3,title:"Greenfield Invoice API",slug:"greenfield-invoice-api"},{level:3,title:"Greenfield API Webhooks",slug:"greenfield-api-webhooks"},{level:3,title:"Payment Button Vulnerability fix",slug:"payment-button-vulnerability-fix"},{level:2,title:"BTCPay Server Plugins",slug:"btcpay-server-plugins"},{level:2,title:"Thank you to our contributors!",slug:"thank-you-to-our-contributors-"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.1.0 - UI smoothing, Gap Limit, Fido2, and Greenfield",frontmatter:{title:"BTCPay Server 1.1.0 - UI smoothing, Gap Limit, Fido2, and Greenfield",date:"2021-04-29T00:00:00.000Z",author:"Zaxounette",category:["releases"],tags:["btcpay-server","release","ui-ux","update"],coverImage:"/images/BTCPayServer_1.1.0.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-1-0.html",relativePath:"_posts/btcpay-server-1-1-0.md",key:"v-222d4f66",path:"/btcpay-server-1-1-0/",headers:[{level:2,title:"⚡Lightning Wallet Setup UI Improvements",slug:"⚡lightning-wallet-setup-ui-improvements"},{level:2,title:"LND v0.12.1-beta and Loop",slug:"lnd-v0121-beta-and-loop"},{level:2,title:"🧾 Reduce the address gap during the invoice creation",slug:"🧾-reduce-the-address-gap-during-the-invoice-creation"},{level:2,title:"🔑 WebAuthN/FIDO2 support",slug:"-webauthnfido2-support"},{level:2,title:"🔐 Disable the SSH key modification",slug:"-disable-the-ssh-key-modification"},{level:2,title:"🔌 Extracting features as plugins",slug:"-extracting-features-as-plugins"},{level:2,title:"👩‍💻Greenfield API improvements:",slug:"‍greenfield-api-improvements"},{level:2,title:"A (mini) call to our translators !",slug:"a-mini-call-to-our-translators-"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.10.0 - Formbuilder UI, custom Roles and a lurking wife mode!?",frontmatter:{title:"BTCPay Server 1.10.0 - Formbuilder UI, custom Roles and a lurking wife mode!?",date:"2023-06-01T00:00:00.000Z",author:"Bas",category:["releases"],tags:["btcpay-server","release","Forms","LNBank","Roles"],coverImage:"/images/BTCPayServer-1-10-thumbnail.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-10-0.html",relativePath:"_posts/btcpay-server-1-10-0.md",key:"v-529e392c",path:"/btcpay-server-1-10-0/",headers:[{level:2,title:"🧾 New Form Builder Drag and Drop UI!",slug:"🧾-new-form-builder-drag-and-drop-ui-"},{level:2,title:"🔒 Custom role system",slug:"-custom-role-system"},{level:2,title:"🥷 Hide sensitive information",slug:"🥷-hide-sensitive-information"},{level:2,title:"📝 Improved Invoice filtering.",slug:"-improved-invoice-filtering"},{level:2,title:"📒 Plugin updates",slug:"-plugin-updates"},{level:3,title:"LNbank",slug:"lnbank"},{level:3,title:"Nostr plugin",slug:"nostr-plugin"},{level:3,title:"Auto-forward Payments",slug:"auto-forward-payments"},{level:2,title:"📚 General quality of life improvements",slug:"-general-quality-of-life-improvements"},{level:3,title:"Point of Sale and Crowdfund settings move from YAML to JSON",slug:"point-of-sale-and-crowdfund-settings-move-from-yaml-to-json"},{level:3,title:"Creating your first store",slug:"creating-your-first-store"},{level:3,title:"Improved refund flow",slug:"improved-refund-flow"},{level:2,title:"🪲 Bugs squashing spree",slug:"🪲-bugs-squashing-spree"},{level:2,title:"🚨 Beware of scammers!",slug:"-beware-of-scammers-"},{level:2,title:"🫶 Donate via OpenSats",slug:"🫶-donate-via-opensats"},{level:2,title:"💚 Thank you",slug:"-thank-you"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.11.0 - Reports, sounds and forms 4 all",frontmatter:{title:"BTCPay Server 1.11.0 - Reports, sounds and forms 4 all",date:"2023-07-27T00:00:00.000Z",author:"Pavlenex",category:["releases"],tags:["btcpay-server","release","Forms","Reports"],coverImage:"/images/1-11/image1.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-11-0.html",relativePath:"_posts/btcpay-server-1-11-0.md",key:"v-f8ff4568",path:"/btcpay-server-1-11-0/",headers:[{level:2,title:"📊Brand-new reporting feature",slug:"brand-new-reporting-feature"},{level:2,title:"🛍️ Point of sale card redesign, categories and more",slug:"️-point-of-sale-card-redesign-categories-and-more"},{level:2,title:"🔊 Payment sounds",slug:"-payment-sounds"},{level:2,title:"🏪Improved store creation flow",slug:"improved-store-creation-flow"},{level:2,title:"💪Forms on steroids",slug:"forms-on-steroids"},{level:2,title:"🖇️Integrations",slug:"️integrations"},{level:2,title:"🪲 Bugs squashing spree",slug:"🪲-bugs-squashing-spree"},{level:2,title:"🚨 Beware of scammers!",slug:"-beware-of-scammers-"},{level:2,title:"🫶 OpenSats Grant",slug:"🫶-opensats-grant"},{level:2,title:"💚 Thank you",slug:"-thank-you"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.12.0 - Under the hood updates, POS improvements and BoltCards issuance at scale",frontmatter:{title:"BTCPay Server 1.12.0 - Under the hood updates, POS improvements and BoltCards issuance at scale",date:"2023-12-19T00:00:00.000Z",author:"Pavlenex",category:["releases"],tags:["btcpay-server","release","pos","boltcard"],coverImage:"/images/btcpay1-9-0-thumbnail.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-12-0.html",relativePath:"_posts/btcpay-server-1-12-0.md",key:"v-973afd28",path:"/btcpay-server-1-12-0/",headers:[{level:2,title:"🥷 Under the hood enhancements",slug:"🥷-under-the-hood-enhancements"},{level:3,title:"Upgrade to .NET 8",slug:"upgrade-to-net-8"},{level:3,title:"Breaking changes for some plugins",slug:"breaking-changes-for-some-plugins"},{level:3,title:"End of Support for Postgresql 11",slug:"end-of-support-for-postgresql-11"},{level:2,title:"🎉 New features",slug:"-new-features"},{level:3,title:"🛍️ Point of Sale improvements",slug:"️-point-of-sale-improvements"},{level:3,title:"⚡ Generate BoltCards at scale through BTCPay directly!",slug:"⚡-generate-boltcards-at-scale-through-btcpay-directly-"},{level:3,title:"📧 Enhancing email form functionality",slug:"-enhancing-email-form-functionality"},{level:3,title:"👛 Wallet improvements",slug:"-wallet-improvements"},{level:2,title:"🖇️ Integrations",slug:"️-integrations"},{level:2,title:"🔌 Plugins",slug:"-plugins"},{level:2,title:"🚨 Beware of scammers!",slug:"-beware-of-scammers-"},{level:2,title:"🫶 Support BTCPay",slug:"🫶-support-btcpay"},{level:2,title:"💚 Thank you",slug:"-thank-you"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.13.0 - Easy user onboarding, admin store view, new store roles & keypad item mode",frontmatter:{title:"BTCPay Server 1.13.0 - Easy user onboarding, admin store view, new store roles & keypad item mode",date:"2024-03-28T00:00:00.000Z",author:"Pavlenex",category:["releases"],tags:["btcpay-server","release","pos"],coverImage:"/images/btcpay1-13-0-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-13-0%20.html",relativePath:"_posts/btcpay-server-1-13-0 .md",key:"v-b5151f96",path:"/btcpay-server-1-13-0/",headers:[{level:2,title:"🎉 Key features",slug:"-key-features"},{level:3,title:"🎨 Server Branding",slug:"-server-branding"},{level:3,title:"🏪 Overview of stores",slug:"-overview-of-stores"},{level:3,title:"👥 Invite new users via email/link",slug:"-invite-new-users-via-emaillink"},{level:3,title:"💁🏻 New store roles: Manager and Employee",slug:"-new-store-roles-manager-and-employee"},{level:3,title:"🛍 Items list for keypad Point of Sale",slug:"-items-list-for-keypad-point-of-sale"},{level:3,title:"🤳🏻 Better Bitcoin QR Support",slug:"-better-bitcoin-qr-support"},{level:2,title:"🖇️ Integrations",slug:"️-integrations"},{level:3,title:"🚚 nopCommerce",slug:"-nopcommerce"},{level:3,title:"🛍️ GrandNode",slug:"️-grandnode"},{level:3,title:"💬 XenForo",slug:"-xenforo"},{level:3,title:"ℹ Other integrations",slug:"ℹ-other-integrations"},{level:2,title:"🔌 Plugins",slug:"-plugins"},{level:3,title:"💶 Bringin",slug:"-bringin"},{level:3,title:"⚡ Breez",slug:"⚡-breez"},{level:3,title:"⚠️ Breaking changes for some plugins",slug:"⚠️-breaking-changes-for-some-plugins"},{level:2,title:"❌ Deprecating custodian",slug:"❌-deprecating-custodian"},{level:2,title:"🚨 Beware of scammers!",slug:"-beware-of-scammers-"},{level:2,title:"🫶 Support us",slug:"🫶-support-us"},{level:2,title:"💚 Thank you",slug:"-thank-you"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.2.0 - Bootstrapping and paving roads",frontmatter:{title:"BTCPay Server 1.2.0 - Bootstrapping and paving roads",date:"2021-08-10T00:00:00.000Z",author:"Zaxounette",category:["releases"],tags:["btcpay-server","release","ui-ux","greenfield","api","update"],coverImage:"/images/BTCPayServer1.2.0.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-2-0.html",relativePath:"_posts/btcpay-server-1-2-0.md",key:"v-293dce38",path:"/btcpay-server-1-2-0/",headers:[{level:2,title:"Continuation of our UI updates 🎨",slug:"continuation-of-our-ui-updates-"},{level:3,title:"Wallet Signing Wizard 🧙",slug:"wallet-signing-wizard-🧙"},{level:3,title:"Apps UI Improved 💻",slug:"apps-ui-improved-"},{level:3,title:"BTCPay Vault notification 🔐",slug:"btcpay-vault-notification-"},{level:2,title:"Top-up invoices 🧾",slug:"top-up-invoices-🧾"},{level:2,title:"BTCPay Plugins - Paving the road 🔌",slug:"btcpay-plugins-paving-the-road-"},{level:2,title:"Greenfield API 🏗️",slug:"greenfield-api-️"},{level:2,title:"NBXplorer specifics 🔍",slug:"nbxplorer-specifics-"},{level:2,title:"Lightning Network implementation bumps ⚡",slug:"lightning-network-implementation-bumps-⚡"},{level:2,title:"Translations 🌐",slug:"translations-"},{level:2,title:"New Blog 📝",slug:"new-blog-"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.3.0 - LNURL, Lightning Address, Taproot and UI goodies",frontmatter:{title:"BTCPay Server 1.3.0 - LNURL, Lightning Address, Taproot and UI goodies",date:"2021-10-29T00:00:00.000Z",author:"Zaxounette",category:["releases"],tags:["taproot","btcpay-server","release","LNURL","greenfield","api","lightningaddress"],coverImage:"/images/BTCPayServer1.3.0.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-3-0.html",relativePath:"_posts/btcpay-server-1-3-0.md",key:"v-96d63b3c",path:"/btcpay-server-1-3-0/",headers:[{level:2,title:"LNURL and Lightning Addresses ⚡",slug:"lnurl-and-lightning-addresses-⚡"},{level:3,title:"LNURL-Pay 🔥",slug:"lnurl-pay-"},{level:3,title:"Lightning Addresses 📧",slug:"lightning-addresses-"},{level:2,title:"Taproot woot woot 🌱",slug:"taproot-woot-woot-"},{level:2,title:"Lightning network topup invoices 🧾",slug:"lightning-network-topup-invoices-🧾"},{level:2,title:"Pull Payments, but Lightning fast! 🚄",slug:"pull-payments-but-lightning-fast-"},{level:2,title:"Continuation of our UI updates 🎨",slug:"continuation-of-our-ui-updates-"},{level:3,title:"Crowdfunding with love 💚",slug:"crowdfunding-with-love-"},{level:3,title:"Payment and Store settings changes ⚙️",slug:"payment-and-store-settings-changes-⚙️"},{level:2,title:"Greenfield API 🏗️",slug:"greenfield-api-️"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.4.0 - The Year of Change",frontmatter:{title:"BTCPay Server 1.4.0 - The Year of Change",date:"2022-01-27T00:00:00.000Z",author:"Zaxounette",category:["releases"],tags:["btcpay-server","release","ui-ux","greenfield","api","update"],coverImage:"/images/BTCPayServer1.4.0.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-4-0.html",relativePath:"_posts/btcpay-server-1-4-0.md",key:"v-7dc8abe0",path:"/btcpay-server-1-4-0/",headers:[{level:2,title:"Easier onboarding 🎨",slug:"easier-onboarding-"},{level:2,title:"New navigation 🏪",slug:"new-navigation-"},{level:2,title:"Logging in improvements 🔐",slug:"logging-in-improvements-"},{level:3,title:"Two-step Lightning authentication ⚡",slug:"two-step-lightning-authentication-⚡"},{level:3,title:"Login codes 📱",slug:"login-codes-"},{level:2,title:"Plugins 🔌",slug:"plugins-"},{level:2,title:"Invoice states 🧾",slug:"invoice-states-🧾"},{level:2,title:"Geeky improvements 🧑‍💻",slug:"geeky-improvements-🧑‍"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.6.0 - Lightning dashboard, receipts and automated emails",frontmatter:{title:"BTCPay Server 1.6.0 - Lightning dashboard, receipts and automated emails",date:"2022-07-08T00:00:00.000Z",author:"pavlenex",category:["releases"],tags:["btcpay-server","release","payouts","dashboard","payout processors","update"],coverImage:"/images/BTCPay1-6-0.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-6-0.html",relativePath:"_posts/btcpay-server-1-6-0.md",key:"v-10303edc",path:"/btcpay-server-1-6-0/",headers:[{level:2,title:"Security vulnerability patch 🛡️",slug:"security-vulnerability-patch-️"},{level:2,title:"Dashboard improvements 📊",slug:"dashboard-improvements-"},{level:3,title:"Balance currency toggle",slug:"balance-currency-toggle"},{level:3,title:"Lightning dashboard data",slug:"lightning-dashboard-data"},{level:3,title:"Point of sale product data",slug:"point-of-sale-product-data"},{level:2,title:"Invoice receipts 🧾",slug:"invoice-receipts-🧾"},{level:2,title:"Automated & customized emails 📧",slug:"automated-customized-emails-"},{level:2,title:"LNURL-withdraw support for payouts 🔄",slug:"lnurl-withdraw-support-for-payouts-"},{level:2,title:"Greenfield API 👩‍💻",slug:"greenfield-api-‍"},{level:2,title:"Joomla VirtueMart integration 🛍️",slug:"joomla-virtuemart-integration-️"},{level:2,title:"Cloudflare tunnel support ☁️",slug:"cloudflare-tunnel-support-☁️"},{level:2,title:"Plugins 🔌",slug:"plugins-"},{level:3,title:"LNURL NFC Support",slug:"lnurl-nfc-support"},{level:3,title:"TicketTailor",slug:"tickettailor"},{level:3,title:"LNBank",slug:"lnbank"},{level:2,title:"Thank you 💚",slug:"thank-you-"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Introducing BTCPay Server 1.5.0 - Dashboard and payout processors",frontmatter:{title:"Introducing BTCPay Server 1.5.0 - Dashboard and payout processors",date:"2022-04-28T00:00:00.000Z",author:"pavlenex",category:["releases"],tags:["btcpay-server","release","payouts","dashboard","payout processors","update"],coverImage:"/images/BTCPay1-5-0-desk.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-5-0.html",relativePath:"_posts/btcpay-server-1-5-0.md",key:"v-46fc755e",path:"/btcpay-server-1-5-0/",headers:[{level:2,title:"New dashboard 📊",slug:"new-dashboard-"},{level:2,title:"Payout processor 🤖",slug:"payout-processor-"},{level:3,title:"Schedule for later 📆",slug:"schedule-for-later-"},{level:2,title:"Enable/disable users",slug:"enabledisable-users"},{level:2,title:"NBXplorer updates 🔎",slug:"nbxplorer-updates-"},{level:2,title:"UX/UI improvements 🎨",slug:"uxui-improvements-"},{level:2,title:"Greenfield API 👩‍💻",slug:"greenfield-api-‍"},{level:2,title:"Thank you 💚",slug:"thank-you-"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.7.0 - Brand-new checkout, store branding, form builder (request shipping address)",frontmatter:{title:"BTCPay Server 1.7.0 - Brand-new checkout, store branding, form builder (request shipping address)",date:"2022-11-25T00:00:00.000Z",author:"pavlenex",category:["releases"],tags:["btcpay-server","release","checkout","form builder","shipping information","update"],coverImage:"/images/1.7.0-V2Checkout.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-7-0.html",relativePath:"_posts/btcpay-server-1-7-0.md",key:"v-4d37ef4c",path:"/btcpay-server-1-7-0/",headers:[{level:2,title:"🛒 New checkout",slug:"-new-checkout"},{level:2,title:"🧾 Unified QR code for on-chain and lightning",slug:"🧾-unified-qr-code-for-on-chain-and-lightning"},{level:2,title:"🎨 Store and server branding",slug:"-store-and-server-branding"},{level:2,title:"🚚 Form Builder (request shipping address)",slug:"-form-builder-request-shipping-address"},{level:2,title:"🏪 OpenCart ecommerce integration",slug:"-opencart-ecommerce-integration"},{level:2,title:"Greenfield API 👩‍💻",slug:"greenfield-api-‍"},{level:2,title:"🫶 Donate via OpenSats",slug:"🫶-donate-via-opensats"},{level:2,title:"Thank you 💚",slug:"thank-you-"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.8.0 - Custom checkout forms, store branding and much much more!",frontmatter:{title:"BTCPay Server 1.8.0 - Custom checkout forms, store branding and much much more!",date:"2023-03-01T00:00:00.000Z",author:"Bas",category:["releases"],tags:["btcpay-server","release","checkout","form builder","shipping information","update"],coverImage:"/images/btcpayserver-storebranding.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-8-0.html",relativePath:"_posts/btcpay-server-1-8-0.md",key:"v-bad05c50",path:"/btcpay-server-1-8-0/",headers:[{level:2,title:"👷 Custom checkout forms",slug:"-custom-checkout-forms"},{level:3,title:"Example: Nostr pubkey and comment",slug:"example-nostr-pubkey-and-comment"},{level:3,title:"Example: Table booking at a restaurant",slug:"example-table-booking-at-a-restaurant"},{level:2,title:"⚡ Lightning NFC plugin becoming core",slug:"⚡-lightning-nfc-plugin-becoming-core"},{level:2,title:"🏷️ Labeling addresses",slug:"️-labeling-addresses"},{level:2,title:"🔔 Rehauled Notifications icon set",slug:"-rehauled-notifications-icon-set"},{level:2,title:"👩‍💻 Greenfield API updates",slug:"‍-greenfield-api-updates"},{level:2,title:"🏪 Store Branding",slug:"-store-branding"},{level:2,title:"🛍️ Checkout has copy addresses back!",slug:"️-checkout-has-copy-addresses-back-"},{level:2,title:"📠 Keypad in the PoS app got some extra love",slug:"-keypad-in-the-pos-app-got-some-extra-love"},{level:2,title:"📠 Keypad POS tracks values individually",slug:"-keypad-pos-tracks-values-individually"},{level:2,title:"🔌 Plugins are here to stay!",slug:"-plugins-are-here-to-stay-"},{level:2,title:"🔌 BTCPay Server X Coinjoin",slug:"-btcpay-server-x-coinjoin"},{level:2,title:"🚨 Phasing out MySQL and SQLite",slug:"-phasing-out-mysql-and-sqlite"},{level:2,title:"🫶 Donate via OpenSats",slug:"🫶-donate-via-opensats"},{level:2,title:"💚 Thank you",slug:"-thank-you"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 1.9.0 - The year of Plugins continues, Point of Sales touch-ups and much more!",frontmatter:{title:"BTCPay Server 1.9.0 - The year of Plugins continues, Point of Sales touch-ups and much more!",date:"2023-04-13T00:00:00.000Z",author:"Bas",category:["releases"],tags:["btcpay-server","release","checkout","NFC","BIP-329","Kraken-plugin"],coverImage:"/images/btcpay1-9-0-thumbnail.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-1-9-0.html",relativePath:"_posts/btcpay-server-1-9-0.md",key:"v-6bcb9b56",path:"/btcpay-server-1-9-0/",headers:[{level:2,title:"👛 Exchange integration via plugins!",slug:"-exchange-integration-via-plugins-"},{level:2,title:"🛍️ Point of Sale, NFC and receipts",slug:"️-point-of-sale-nfc-and-receipts"},{level:3,title:"Receipts",slug:"receipts"},{level:3,title:"Improved NFC experience",slug:"improved-nfc-experience"},{level:2,title:"🎉 Checkout v2 gets further improvements",slug:"-checkout-v2-gets-further-improvements"},{level:2,title:"📒 New recovery seed phrase view!",slug:"-new-recovery-seed-phrase-view-"},{level:2,title:"📚 Wallet Labels export - BIP-329",slug:"-wallet-labels-export-bip-329"},{level:2,title:"🏷️ Label management got refined further.",slug:"️-label-management-got-refined-further"},{level:2,title:"🤝 Restructuring how metadata is viewed",slug:"-restructuring-how-metadata-is-viewed"},{level:2,title:"🚨 Deprecating MySQL and SQLite",slug:"-deprecating-mysql-and-sqlite"},{level:2,title:"👾 We squashed plenty of bugs again!",slug:"-we-squashed-plenty-of-bugs-again-"},{level:2,title:"🚨 Beware of scammers!",slug:"-beware-of-scammers-"},{level:2,title:"🫶 Donate via OpenSats",slug:"🫶-donate-via-opensats"},{level:2,title:"💚 Thank you",slug:"-thank-you"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server 2.0: our biggest update yet!",frontmatter:{title:"BTCPay Server 2.0: our biggest update yet!",date:"2024-10-29T00:00:00.000Z",author:"Pavlenex",category:["releases"],tags:["btcpay-server","release","2.0"],coverImage:"/images/btcpay2-0-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-2-0.html",relativePath:"_posts/btcpay-server-2-0.md",key:"v-8a7ea4a8",path:"/btcpay-server-2-0/",headers:[{level:2,title:"🔑 Key features",slug:"-key-features"},{level:2,title:"⚠️ 2.0 breaking changes",slug:"⚠️-20-breaking-changes"},{level:2,title:"🔄 Updating to 2.0",slug:"-updating-to-20"},{level:3,title:"✔ Post-update checklist",slug:"✔-post-update-checklist"},{level:2,title:"🌍 Interface localization",slug:"-interface-localization"},{level:2,title:"🧭 New sidebar navigation",slug:"🧭-new-sidebar-navigation"},{level:2,title:"🫂 Improved onboarding flow",slug:"🫂-improved-onboarding-flow"},{level:2,title:"🛍️ Point of sale QR onboarding",slug:"️-point-of-sale-qr-onboarding"},{level:2,title:"🚀 Checkout 2.0 default",slug:"-checkout-20-default"},{level:2,title:"🎨 Backend branding",slug:"-backend-branding"},{level:2,title:"🛒 New e-commerce integrations",slug:"-new-e-commerce-integrations"},{level:3,title:"Wix",slug:"wix"},{level:3,title:"Odoo",slug:"odoo"},{level:3,title:"BigCommerce",slug:"bigcommerce"},{level:3,title:"Other integration updates",slug:"other-integration-updates"},{level:2,title:"🔌 Plugins",slug:"-plugins"},{level:3,title:"List of currently incompatible plugins",slug:"list-of-currently-incompatible-plugins"},{level:2,title:"💚 Thank you",slug:"-thank-you"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server CVE-2022-32984 Vulnerability disclosure affecting BTCPay Server V1.3.0 through V1.5.3",frontmatter:{title:"BTCPay Server CVE-2022-32984 Vulnerability disclosure affecting BTCPay Server V1.3.0 through V1.5.3",date:"2023-01-26T00:00:00.000Z",author:"Bas",category:["announcements"],tags:["security"],coverImage:"/images/BTCPay_Vuln_Disc_1.3.0-1.5.3.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-CVE-2022-32984.html",relativePath:"_posts/btcpay-server-CVE-2022-32984.md",key:"v-2bdfe6a8",path:"/btcpay-server-cve-2022-32984/",headers:[{level:2,title:"⏱️ Timeline",slug:"⏱️-timeline"},{level:2,title:"CVE-2022-32984 (allows a remote attacker to obtain sensitive information if a publicly exposed POS app is available)",slug:"cve-2022-32984-allows-a-remote-attacker-to-obtain-sensitive-information-if-a-publicly-exposed-pos-app-is-available"},{level:2,title:"Summary",slug:"summary"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server Grant #6 - BTSE",frontmatter:{title:"BTCPay Server Grant #6 - BTSE",date:"2020-03-10T00:00:00.000Z",author:"pavlenex",category:["announcements"],coverImage:"/images/btcpay-btse-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-btse.html",relativePath:"_posts/btcpay-server-btse.md",key:"v-347df1ac",path:"/btcpay-server-btse/",id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server Foundation - Introspective",frontmatter:{title:"BTCPay Server Foundation - Introspective",date:"2020-03-07T00:00:00.000Z",author:"Nicolas",category:["announcements"],tags:["foundation"],coverImage:"/images/YT_05.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-foundation-introspective.html",relativePath:"_posts/btcpay-server-foundation-introspective.md",key:"v-511f408c",path:"/btcpay-server-foundation-introspective/",id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server Grant - Baillie Gifford",frontmatter:{title:"BTCPay Server Grant - Baillie Gifford",date:"2021-07-28T00:00:00.000Z",author:"Zaxounette",category:["announcements"],tags:["foundation"],coverImage:"/images/btcpay-baillie-gifford-1024x576-1.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-grant-baillie-gifford.html",relativePath:"_posts/btcpay-server-grant-baillie-gifford.md",key:"v-db861df0",path:"/btcpay-server-grant-baillie-gifford/",id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server Grant #7 – OKCoin",frontmatter:{title:"BTCPay Server Grant #7 – OKCoin",date:"2020-05-28T00:00:00.000Z",author:"pavlenex",category:["announcements"],tags:["foundation"],coverImage:"/images/btcpay-okcoinfeatured-1024x576-1.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-grant-7-okcoin.html",relativePath:"_posts/btcpay-server-grant-7-okcoin.md",key:"v-42608e28",path:"/btcpay-server-grant-7-okcoin/",id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server grant - PNXBET",frontmatter:{title:"BTCPay Server grant - PNXBET",date:"2021-06-09T00:00:00.000Z",author:"Zaxounette",category:["announcements"],tags:["btcpay-server","grant"],coverImage:"/images/btcpayy-PNXBETfeatured-1024x576-1.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-grant-pnxbet.html",relativePath:"_posts/btcpay-server-grant-pnxbet.md",key:"v-3ef1982c",path:"/btcpay-server-grant-pnxbet/",id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server Grant #8 – Kraken",frontmatter:{title:"BTCPay Server Grant #8 – Kraken",date:"2020-06-25T00:00:00.000Z",author:"pavlenex",category:["announcements"],tags:["foundation"],coverImage:"/images/btcpay-krakenfeatured-1024x576-1.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-kraken-grant.html",relativePath:"_posts/btcpay-server-kraken-grant.md",key:"v-127af38c",path:"/btcpay-server-kraken-grant/",id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server v1.0.7.0 - UI polishing, API calls, spring cleaning, and bug fixing",frontmatter:{title:"BTCPay Server v1.0.7.0 - UI polishing, API calls, spring cleaning, and bug fixing",date:"2021-03-11T00:00:00.000Z",author:"Zaxounette",category:["releases"],tags:["btcpay-server","release","ui-ux","update"],coverImage:"/images/1.0.7.0_update_thumbnail.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-server-v1-0-7-0.html",relativePath:"_posts/btcpay-server-v1-0-7-0.md",key:"v-4071114c",path:"/btcpay-server-v1-0-7-0/",headers:[{level:2,title:"UI polishing 🎨",slug:"ui-polishing-"},{level:2,title:"API calling 🛠️",slug:"api-calling-️"},{level:2,title:"Spring cleaning 🧹",slug:"spring-cleaning-🧹"},{level:2,title:"Improvements ✨",slug:"improvements-✨"},{level:2,title:"Bug Fixing 🐛",slug:"bug-fixing-"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Introducing BTCPay Vault – use any hardware wallet with BTCPay and its full node",frontmatter:{title:"Introducing BTCPay Vault – use any hardware wallet with BTCPay and its full node",date:"2020-01-21T00:00:00.000Z",author:"pavlenex",category:["features"],coverImage:"/images/EJ0JwsbX0AEuAUC-scaled.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/btcpay-vault.html",relativePath:"_posts/btcpay-vault.md",key:"v-67eac528",path:"/btcpay-vault/",headers:[{level:2,title:"Why?",slug:"why"},{level:2,title:"How does it work?",slug:"how-does-it-work"},{level:2,title:"Getting Started with BTCPay Vault",slug:"getting-started-with-btcpay-vault"},{level:3,title:"Connecting your wallet to a store",slug:"connecting-your-wallet-to-a-store"},{level:3,title:"Spending funds with BTCPay Wallet",slug:"spending-funds-with-btcpay-wallet"},{level:3,title:"Supported Hardware Wallets",slug:"supported-hardware-wallets"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Two Conferences, One MoE: €27,582 in Bitcoin Revenue from 2,998 Lightning Network Payments During Riga Bitcoin Week",frontmatter:{title:"Two Conferences, One MoE: €27,582 in Bitcoin Revenue from 2,998 Lightning Network Payments During Riga Bitcoin Week",date:"2024-09-25T00:00:00.000Z",author:"Pavlenex, Webworthy",category:["case-studies"],tags:["case-study","point of sale","conference","research"],coverImage:"/images/BHB24-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-bhb24-nostriga.html",relativePath:"_posts/case-study-bhb24-nostriga.md",key:"v-636cee68",path:"/case-study-bhb24-nostriga/",headers:[{level:2,title:"Background and challenges",slug:"background-and-challenges"},{level:2,title:"Solution implementation",slug:"solution-implementation"},{level:3,title:"Merchant onboarding",slug:"merchant-onboarding"},{level:3,title:"Payment infrastructure",slug:"payment-infrastructure"},{level:3,title:"Continuous support",slug:"continuous-support"},{level:2,title:"Survey insights",slug:"survey-insights"},{level:2,title:"Results",slug:"results"},{level:2,title:"Summary",slug:"summary"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Bitcoin Jungle enables 200+ stores in Costa Rica to embrace Bitcoin",frontmatter:{title:"Bitcoin Jungle enables 200+ stores in Costa Rica to embrace Bitcoin",date:"2023-12-1",author:"Pavlenex, Webworthy",category:["case-studies"],tags:["case-study","ambasadors","circular-economy","point of sale"],coverImage:"/images/bitcoin-jungle-cr-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-bitcoin-jungle-cr.html",relativePath:"_posts/case-study-bitcoin-jungle-cr.md",key:"v-75a17a68",path:"/case-study-bitcoin-jungle-cr/",headers:[{level:2,title:"Features and Benefits",slug:"features-and-benefits"},{level:2,title:"Results",slug:"results"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Bitcoin Atlantis Conference: €115,100 from 8,750 Transactions in 3 Days, Showcasing Bitcoin's Role as a Payment Method",frontmatter:{title:"Bitcoin Atlantis Conference: €115,100 from 8,750 Transactions in 3 Days, Showcasing Bitcoin's Role as a Payment Method",date:"2024-03-20T00:00:00.000Z",author:"Pavlenex, Webworthy",category:["case-studies"],tags:["case-study","point-of-sale","terminals","conference"],coverImage:"/images/bitcoin-atlantis-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-bitcoin-atlantis.html",relativePath:"_posts/case-study-bitcoin-atlantis.md",key:"v-5cd1fdc4",path:"/case-study-bitcoin-atlantis/",headers:[{level:2,title:"Background and challenge",slug:"background-and-challenge"},{level:3,title:"Objectives",slug:"objectives"},{level:2,title:"Solution implementation",slug:"solution-implementation"},{level:3,title:"The infrastructure",slug:"the-infrastructure"},{level:2,title:"Results",slug:"results"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Bitcoin People built a mobile app on top of BTCPay’s API to scale bitcoin to 270 merchants in Italy with a total of €406,283 in transaction volumes",frontmatter:{title:"Bitcoin People built a mobile app on top of BTCPay’s API to scale bitcoin to 270 merchants in Italy with a total of €406,283 in transaction volumes",date:"2024-02-08T00:00:00.000Z",author:"Elha, Pavlenex, Webworthy",category:["case-studies"],tags:["case-study","ambasador","API","mobile-app"],coverImage:"/images/bitcoin-people-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-bitcoin-people.html",relativePath:"_posts/case-study-bitcoin-people.md",key:"v-7ed5a5a0",path:"/case-study-bitcoin-people/",headers:[{level:2,title:"Why an app, can’t merchants just use one of many wallets?",slug:"why-an-app-can-t-merchants-just-use-one-of-many-wallets"},{level:2,title:"App Features",slug:"app-features"},{level:2,title:"Choice of BTCPay Server",slug:"choice-of-btcpay-server"},{level:2,title:"Implementation",slug:"implementation"},{level:2,title:"Merchant stories",slug:"merchant-stories"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Coincards: Pioneering BTCPay Server Integration and Pushing Bitcoin Adoption",frontmatter:{title:"Coincards: Pioneering BTCPay Server Integration and Pushing Bitcoin Adoption",date:"2023-10-20T00:00:00.000Z",author:"Pavlenex, Webworthy",category:["stories"],tags:["case-study","woocommerce","merchants","research"],coverImage:"/images/coincardscasestudy-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-coincards.html",relativePath:"_posts/case-study-coincards.md",key:"v-0d961d0c",path:"/case-study-coincards/",headers:[{level:2,title:"Needs and Goals:",slug:"needs-and-goals"},{level:2,title:"Choice of BTCPay Server:",slug:"choice-of-btcpay-server"},{level:2,title:"The Process:",slug:"the-process"},{level:2,title:"Challenges:",slug:"challenges"},{level:2,title:"Features and benefits",slug:"features-and-benefits"},{level:2,title:"New Possibilities:",slug:"new-possibilities"},{level:2,title:"Results",slug:"results"},{level:2,title:"User Feedback:",slug:"user-feedback"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Case Study: How Hodl Hodl used BTCPay to accept bitcoin payments at a conference",frontmatter:{title:"Case Study: How Hodl Hodl used BTCPay to accept bitcoin payments at a conference",date:"2023-09-21T00:00:00.000Z",author:"Pavlenex, Webworthy",category:["case-studies"],tags:["case-study","point of sale","conference","research"],coverImage:"/images/CaseStudyHodlHodl-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-hodlhodl-2023.html",relativePath:"_posts/case-study-hodlhodl-2023.md",key:"v-3b4a92e8",path:"/case-study-hodlhodl-2023/",headers:[{level:2,title:"Background and Challenge",slug:"background-and-challenge"},{level:2,title:"Solution Implementation",slug:"solution-implementation"},{level:2,title:"Streamlining the payment process",slug:"streamlining-the-payment-process"},{level:3,title:"How much do you agree that the point-of-sale machine facilitated a smoother payment process?",slug:"how-much-do-you-agree-that-the-point-of-sale-machine-facilitated-a-smoother-payment-process"},{level:2,title:"Ensuring customers have bitcoin to pay",slug:"ensuring-customers-have-bitcoin-to-pay"},{level:2,title:"Onboarding and Training Merchants",slug:"onboarding-and-training-merchants"},{level:2,title:"Results",slug:"results"},{level:3,title:"Would you be open to accepting bitcoin payments at next years conference?",slug:"would-you-be-open-to-accepting-bitcoin-payments-at-next-years-conference"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"How OpenSubtitles, home to over 7 Million subtitles and 8,000 contributors, utilizes BTCPay to facilitate bitcoin payments for memberships and donations",frontmatter:{title:"How OpenSubtitles, home to over 7 Million subtitles and 8,000 contributors, utilizes BTCPay to facilitate bitcoin payments for memberships and donations",date:"2024-06-10T00:00:00.000Z",author:"Pavlenex, Webworthy",category:["case-studies"],tags:["case-study","API","merchants","ai"],coverImage:"/images/opensubtitles-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-opensubtitles.html",relativePath:"_posts/case-study-opensubtitles.md",key:"v-194aa16c",path:"/case-study-opensubtitles/",headers:[{level:2,title:"Choice of BTCPay Server",slug:"choice-of-btcpay-server"},{level:2,title:"Implementation",slug:"implementation"},{level:2,title:"Features and benefits",slug:"features-and-benefits"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Empowering hemp growers and breeders: How Strainly leveraged BTCPay Server to enable peer-to-peer and private payments at scale",frontmatter:{title:"Empowering hemp growers and breeders: How Strainly leveraged BTCPay Server to enable peer-to-peer and private payments at scale",date:"2023-12-18T00:00:00.000Z",author:"Pavlenex, Webworthy",category:["case-studies"],tags:["case-study","privacy","API","development"],coverImage:"/images/strainly-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-strainly.html",relativePath:"_posts/case-study-strainly.md",key:"v-75f7bbe8",path:"/case-study-strainly/",headers:[{level:2,title:"Needs and Goals",slug:"needs-and-goals"},{level:2,title:"Choice of BTCPay Server",slug:"choice-of-btcpay-server"},{level:2,title:"Implementation",slug:"implementation"},{level:2,title:"Features and Benefits",slug:"features-and-benefits"},{level:2,title:"Results",slug:"results"},{level:2,title:"Features and Benefits",slug:"features-and-benefits-2"},{level:2,title:"Results",slug:"results-2"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Technical Case Study: How to enable Bitcoin payments for merchants at events using BTCPay Server",frontmatter:{title:"Technical Case Study: How to enable Bitcoin payments for merchants at events using BTCPay Server",date:"2023-10-03T00:00:00.000Z",author:"RockstarDev, MrKukks",category:["case-studies"],tags:["case-study","point of sale","research","merchants","sideshift","prism"],coverImage:"/images/case-study-technical-prism-sideshift/technical-case-study-cover.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-technical-prism-sideshift.html",relativePath:"_posts/case-study-technical-prism-sideshift.md",key:"v-fc399aa8",path:"/case-study-technical-prism-sideshift/",headers:[{level:2,title:"Video Guide",slug:"video-guide"},{level:2,title:"Launch Your BTCPay Server Instance",slug:"launch-your-btcpay-server-instance"},{level:2,title:"Account Creation and Plugin Installation",slug:"account-creation-and-plugin-installation"},{level:2,title:"Setting Up Your Demo Store",slug:"setting-up-your-demo-store"},{level:2,title:"Harnessing the Power of Lightning Payments",slug:"harnessing-the-power-of-lightning-payments"},{level:2,title:"Setting Up a Wallet for Stablecoins & Creating a Prism Destination for Conversion",slug:"setting-up-a-wallet-for-stablecoins-creating-a-prism-destination-for-conversion"},{level:2,title:"Setting up Prism",slug:"setting-up-prism"},{level:2,title:"Test your payments with Point of Sale app",slug:"test-your-payments-with-point-of-sale-app"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"BTCPay Server Grant #3 From Digital Garage, Inc.",frontmatter:{title:"BTCPay Server Grant #3 From Digital Garage, Inc.",date:"2019-11-14T00:00:00.000Z",author:"Nicolas",category:["announcements"],tags:["foundation"],coverImage:"/images/btcpay-dg-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/dg-grant-2019.html",relativePath:"_posts/dg-grant-2019.md",key:"v-f6ea4c28",path:"/dg-grant-2019/",id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"World's Fastest BTCPay Deployments with Voltage - generating over 45,000 invoices per month!",frontmatter:{title:"World's Fastest BTCPay Deployments with Voltage - generating over 45,000 invoices per month!",date:"2023-11-17T00:00:00.000Z",author:"Pavlenex, Webworthy, Bobby Shell",category:["case-studies"],tags:["case-study","hosting","providers","infrastracture"],coverImage:"/images/voltagecasestudy-featured.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/case-study-voltage.html",relativePath:"_posts/case-study-voltage.md",key:"v-d31850e8",path:"/case-study-voltage/",headers:[{level:2,title:"Needs and Goals",slug:"needs-and-goals"},{level:2,title:"Choice of BTCPay Server",slug:"choice-of-btcpay-server"},{level:2,title:"Implementation",slug:"implementation"},{level:2,title:"Features and Benefits",slug:"features-and-benefits"},{level:2,title:"Results",slug:"results"},{level:2,title:"Conclusion",slug:"conclusion"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"How to accept Bitcoin Donations - privately, securely and without middleman",frontmatter:{title:"How to accept Bitcoin Donations - privately, securely and without middleman",date:"2019-04-25T00:00:00.000Z",author:"pavlenex",category:["guides"],tags:["apps","plugins","pos"],coverImage:"/images/How-to-accept-Bitcoin-donations-1024x576.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/how-to-accept-bitcoin-donations.html",relativePath:"_posts/how-to-accept-bitcoin-donations.md",key:"v-312de42c",path:"/how-to-accept-bitcoin-donations/",headers:[{level:2,title:"Donation Button",slug:"donation-button"},{level:2,title:"Crowdfunding",slug:"crowdfunding"},{level:2,title:"Payment Requests",slug:"payment-requests"},{level:2,title:"LibrePatron (for recurring payments)",slug:"librepatron-for-recurring-payments"},{level:2,title:"Modified Web Point of Sale",slug:"modified-web-point-of-sale"},{level:3,title:"Example 1: The Donation Page",slug:"example-1-the-donation-page"},{level:3,title:"Example 2: Social Media Donation Page",slug:"example-2-social-media-donation-page"},{level:2,title:"Summary",slug:"summary"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"How to earn Bitcoin by using BTCPay Server",frontmatter:{title:"How to earn Bitcoin by using BTCPay Server",date:"2019-03-17T00:00:00.000Z",author:"pavlenex",category:["guides"],tags:["apps","bitcoin-merchants","pos"],coverImage:"/images/YouTube-Thumbnail-BTCPay-Basics-Template.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/how-to-earn-bitcoin-btcpayserver.html",relativePath:"_posts/how-to-earn-bitcoin-btcpayserver.md",key:"v-492b1fe8",path:"/how-to-earn-bitcoin-btcpayserver/",headers:[{level:2,title:"Create Bitcoin invoices",slug:"create-bitcoin-invoices"},{level:2,title:"Accepting Bitcoin in an online store",slug:"accepting-bitcoin-in-an-online-store"},{level:2,title:"Accept Bitcoin in retail",slug:"accept-bitcoin-in-retail"},{level:2,title:"Accepting Bitcoin Donations",slug:"accepting-bitcoin-donations"},{level:2,title:"Launch a crowdfunding campaign",slug:"launch-a-crowdfunding-campaign"},{level:2,title:"Pay Per Article (Journalists and bloggers)",slug:"pay-per-article-journalists-and-bloggers"},{level:2,title:"Become a payment processor",slug:"become-a-payment-processor"},{level:2,title:"Sell BTCPay Hardware devices",slug:"sell-btcpay-hardware-devices"},{level:2,title:"Host BTCPay Servers in a cloud",slug:"host-btcpay-servers-in-a-cloud"},{level:2,title:"Develop and provide BTCPay Services",slug:"develop-and-provide-btcpay-services"},{level:2,title:"Stacking sats - the self-sovereign way",slug:"stacking-sats-the-self-sovereign-way"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Jeff Vandrew Jr - creator of LibrePatron, Keykeeper IRA, BTCQBO",frontmatter:{title:"Jeff Vandrew Jr - creator of LibrePatron, Keykeeper IRA, BTCQBO",date:"2019-03-26T00:00:00.000Z",author:"pavlenex",category:["stories"],tags:["interview","plugins"],coverImage:"/images/YouTube-Thumbnail-BTCPay-Accountig-Template-1024x576.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/interview-with-jeff-vandrew-jr.html",relativePath:"_posts/interview-with-jeff-vandrew-jr.md",key:"v-8e8a67e8",path:"/interview-with-jeff-vandrew-jr/",headers:[{level:2,title:"How did you get into Bitcoin?",slug:"how-did-you-get-into-bitcoin"},{level:2,title:"How did you manage to connect all of your passions: finance, law, bodybuilding and development?",slug:"how-did-you-manage-to-connect-all-of-your-passions-finance-law-bodybuilding-and-development"},{level:2,title:"What is the Keykeeper IRA?",slug:"what-is-the-keykeeper-ira"},{level:2,title:"How did you discover BTCPay and what made you create the QuickBooks plugin?",slug:"how-did-you-discover-btcpay-and-what-made-you-create-the-quickbooks-plugin"},{level:2,title:"What is LibrePatron?",slug:"what-is-librepatron"},{level:2,title:"How are recurring payments handled in LibrePatron?",slug:"how-are-recurring-payments-handled-in-librepatron"},{level:2,title:"Software development",slug:"software-development"},{level:2,title:"The Future",slug:"the-future"},{level:2,title:"Where can readers find you?",slug:"where-can-readers-find-you"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Interview with Jamie Lim, the founder of Sticky Singapore, Joo Bar, 8 Korean BBQ and Juju Coffee",frontmatter:{title:"Interview with Jamie Lim, the founder of Sticky Singapore, Joo Bar, 8 Korean BBQ and Juju Coffee",date:"2019-04-10T00:00:00.000Z",author:"pavlenex",category:["stories"],tags:["interview","lightning-network","pos"],coverImage:"/images/stickyfeatured.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/jamie-lim-sticky-singapore.html",relativePath:"_posts/jamie-lim-sticky-singapore.md",key:"v-2fcedaac",path:"/jamie-lim-sticky-singapore/",headers:[{level:2,title:"How did you get into Bitcoin?",slug:"how-did-you-get-into-bitcoin"},{level:2,title:"Cryptocurrency adoption in Singapore and Asia?",slug:"cryptocurrency-adoption-in-singapore-and-asia"},{level:2,title:"Bitcoin projects that you like?",slug:"bitcoin-projects-that-you-like"},{level:2,title:"What is Sticky Singapore?",slug:"what-is-sticky-singapore"},{level:2,title:"What kind of products do you offer?",slug:"what-kind-of-products-do-you-offer"},{level:2,title:"What ingredients do you use to make candy?",slug:"what-ingredients-do-you-use-to-make-candy"},{level:2,title:"Customized candy sounds like a perfect promo product for companies, even in the crypto space. Who is it for, how long does it take to make a fully customized candy?",slug:"customized-candy-sounds-like-a-perfect-promo-product-for-companies-even-in-the-crypto-space-who-is-it-for-how-long-does-it-take-to-make-a-fully-customized-candy"},{level:2,title:"How you discovered BTCPay and why you decided to use it?",slug:"how-you-discovered-btcpay-and-why-you-decided-to-use-it"},{level:2,title:"How hard/easy it was to integrate it into your online store?",slug:"how-hardeasy-it-was-to-integrate-it-into-your-online-store"},{level:2,title:"Are there any features missing in BTCPay that would help you and your business?",slug:"are-there-any-features-missing-in-btcpay-that-would-help-you-and-your-business"},{level:2,title:"How do customers react when they see that you accept Bitcoin?",slug:"how-do-customers-react-when-they-see-that-you-accept-bitcoin"},{level:2,title:"How frequently do your customers pay in Bitcoin?",slug:"how-frequently-do-your-customers-pay-in-bitcoin"},{level:2,title:"What are some of the difficulties of being a business accepting Bitcoin?",slug:"what-are-some-of-the-difficulties-of-being-a-business-accepting-bitcoin"},{level:2,title:"You accept Lightning Network payments as well. Can you tell me about the integration process? How hard/easy it was to connect the external node in BTCPay?",slug:"you-accept-lightning-network-payments-as-well-can-you-tell-me-about-the-integration-process-how-hardeasy-it-was-to-connect-the-external-node-in-btcpay"},{level:2,title:"Your Lightning Network experience so far?",slug:"your-lightning-network-experience-so-far"},{level:2,title:"What's next for Sticky Singapore and yourself?",slug:"whats-next-for-sticky-singapore-and-yourself"},{level:2,title:"Where can people find you?",slug:"where-can-people-find-you"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Mike Olthoff from CoinCards.ca is the first ever merchant to use BTCPay. This is his story.",frontmatter:{title:"Mike Olthoff from CoinCards.ca is the first ever merchant to use BTCPay. This is his story.",author:"pavlenex",date:"2019-03-05T00:00:00.000Z",category:"stories",tags:["bitcoin-merchants","interview","lightning-network"],coverImage:"/images/Screen-Shot-2019-03-05-at-11.03.52.png",permalink:"/mike-olthoff-coincards",layout:"Post"},regularPath:"/_posts/mike-olthoff-coincards.html",relativePath:"_posts/mike-olthoff-coincards.md",key:"v-22bca8a8",path:"/mike-olthoff-coincards/",headers:[{level:2,title:"Who is Mike Olthoff?",slug:"who-is-mike-olthoff"},{level:2,title:"How did you get into Bitcoin?",slug:"how-did-you-get-into-bitcoin"},{level:2,title:"What is Coincards?",slug:"what-is-coincards"},{level:2,title:"What are the struggles of being a cryptocurrency business?",slug:"what-are-the-struggles-of-being-a-cryptocurrency-business"},{level:2,title:"Which payment providers have you used before BTCPay Server?",slug:"which-payment-providers-have-you-used-before-btcpay-server"},{level:2,title:"How did you discover BTCPay and what made you decide to switch?",slug:"how-did-you-discover-btcpay-and-what-made-you-decide-to-switch"},{level:2,title:"The early days of BTCPay?",slug:"the-early-days-of-btcpay"},{level:2,title:"You're your own payment processor. Does that help your business save money? What are the disadvantages of using a self-hosted BTCPay?",slug:"youre-your-own-payment-processor-does-that-help-your-business-save-money-what-are-the-disadvantages-of-using-a-self-hosted-btcpay"},{level:2,title:"The fiat bridge is coming soon to BTCPay but you developed an in-house fiat conversion solution. Can you explain how it works?",slug:"the-fiat-bridge-is-coming-soon-to-btcpay-but-you-developed-an-in-house-fiat-conversion-solution-can-you-explain-how-it-works"},{level:2,title:"What kind of reaction do you get from the customers when they see you're using BTCPay?",slug:"what-kind-of-reaction-do-you-get-from-the-customers-when-they-see-youre-using-btcpay"},{level:2,title:"As one of the Lightning Network pioneer merchants, describe your experience with the off-chain so far?",slug:"as-one-of-the-lightning-network-pioneer-merchants-describe-your-experience-with-the-off-chain-so-far"},{level:2,title:"What problem does Lightning solve for merchants?",slug:"what-problem-does-lightning-solve-for-merchants"},{level:2,title:"From your perspective, what is needed for merchants who currently use LN?",slug:"from-your-perspective-what-is-needed-for-merchants-who-currently-use-ln"},{level:2,title:"What tools do you use for bookkeeping?",slug:"what-tools-do-you-use-for-bookkeeping"},{level:2,title:"What piece of advice would you give to someone looking to start a Bitcoin business?",slug:"what-piece-of-advice-would-you-give-to-someone-looking-to-start-a-bitcoin-business"},{level:2,title:"What's in store for you and Coincards in 2019?",slug:"whats-in-store-for-you-and-coincards-in-2019"},{level:2,title:"Is there anything we have not covered that you’d like readers to know?",slug:"is-there-anything-we-have-not-covered-that-you-d-like-readers-to-know"},{level:2,title:"Where can people find you?",slug:"where-can-people-find-you"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Launching LibrePatron a Self-Hosted Patreon Alternative powered by Bitcoin",frontmatter:{title:"Launching LibrePatron a Self-Hosted Patreon Alternative powered by Bitcoin",date:"2019-04-08T00:00:00.000Z",author:"pavlenex",category:["guides","plugins"],tags:["services"],coverImage:"/images/LibrePatron-BTCPay-Featured.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/librepatron-patreon-alternative.html",relativePath:"_posts/librepatron-patreon-alternative.md",key:"v-45be51d2",path:"/librepatron-patreon-alternative/",headers:[{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Configuring DNS",slug:"configuring-dns"},{level:2,title:"Deploying LibrePatron on BTCPay Server",slug:"deploying-librepatron-on-btcpay-server"},{level:2,title:"Configuring LibrePatron",slug:"configuring-librepatron"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Big improvements in NBXplorer!",frontmatter:{title:"Big improvements in NBXplorer!",author:"NicolasDorier",date:"2022-04-01T00:00:00.000Z",category:"features",tags:["nbxplorer"],coverImage:"/images/nxplorer-schema.png",permalink:"/nbxplorer-postgres",layout:"Post"},regularPath:"/_posts/nbxplorer-postgres.html",relativePath:"_posts/nbxplorer-postgres.md",key:"v-03c118ec",path:"/nbxplorer-postgres/",id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Introducing Pay Request - Get paid in BTC by sharing a link",frontmatter:{title:"Introducing Pay Request - Get paid in BTC by sharing a link",author:"pavlenex",date:"2019-02-22T00:00:00.000Z",category:"features",coverImage:"/images/Screen-Shot-2019-03-05-at-14.01.58.png",permalink:"/payment-requests",layout:"Post"},regularPath:"/_posts/payment-requests.html",relativePath:"_posts/payment-requests.md",key:"v-1df6814c",path:"/payment-requests/",headers:[{level:3,title:"The Problem",slug:"the-problem"},{level:3,title:"The Solution",slug:"the-solution"},{level:3,title:"How it works?",slug:"how-it-works"},{level:3,title:"Features",slug:"features"},{level:3,title:"Roadmap",slug:"roadmap"},{level:3,title:"Try it out",slug:"try-it-out"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Ride The Lightning: An open-source project making node management easy for everyone",frontmatter:{title:"Ride The Lightning: An open-source project making node management easy for everyone",author:"pavlenex",date:"2019-03-09T00:00:00.000Z",category:"plugins",tags:["lightning-network","services"],coverImage:"/images/RTL-BTCPay.png",permalink:"/ride-the-lightning-btcpay",layout:"Post"},regularPath:"/_posts/ride-the-lightning-btcpay.html",relativePath:"_posts/ride-the-lightning-btcpay.md",key:"v-1627eb18",path:"/ride-the-lightning-btcpay/",headers:[{level:2,title:"What is Ride the Lightning?",slug:"what-is-ride-the-lightning"},{level:2,title:"What's the story behind it?",slug:"whats-the-story-behind-it"},{level:2,title:"Features",slug:"features"},{level:3,title:"Dashboard",slug:"dashboard"},{level:3,title:"LND",slug:"lnd"},{level:2,title:"Integrating RTL into BTCPay?",slug:"integrating-rtl-into-btcpay"},{level:2,title:"Getting Started with Lightning Network Node management and RTL",slug:"getting-started-with-lightning-network-node-management-and-rtl"},{level:2,title:"What are some of the security risks, attack vectors users should be aware?",slug:"what-are-some-of-the-security-risks-attack-vectors-users-should-be-aware"},{level:2,title:"What's in store next for RTL?",slug:"whats-in-store-next-for-rtl"},{level:2,title:"How to help and contribute to RTL",slug:"how-to-help-and-contribute-to-rtl"},{level:2,title:"Wrapping it up",slug:"wrapping-it-up"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"This is lies - you're obsolete.",frontmatter:{title:"This is lies - you're obsolete.",date:"2019-08-17T00:00:00.000Z",author:"Nicolas",category:["announcements"],coverImage:"/images/BTCPayB-day.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/this-is-lies-youre-now-obsolete.html",relativePath:"_posts/this-is-lies-youre-now-obsolete.md",key:"v-4ec352bc",path:"/this-is-lies-youre-now-obsolete/",id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Vulnerability Disclosure affecting BTCPay Server <= v1.0.7.0",frontmatter:{title:"Vulnerability Disclosure affecting BTCPay Server <= v1.0.7.0",date:"2021-04-29T00:00:00.000Z",author:"pavlenex",category:["announcements"],coverImage:"/images/BTCPay_Vuln_Disc_1.0.7.0.png",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/vulnerability-disclosure-v1-0-7-0.html",relativePath:"_posts/vulnerability-disclosure-v1-0-7-0.md",key:"v-d8f9098c",path:"/vulnerability-disclosure-v1-0-7-0/",headers:[{level:2,title:"⏱️ Timeline",slug:"⏱️-timeline"},{level:2,title:"CVE-2021-29251 (Account takeover)",slug:"cve-2021-29251-account-takeover"},{level:2,title:"CVE-2021-29246 (Path Traversal)",slug:"cve-2021-29246-path-traversal"},{level:2,title:"CVE-2021-29250 (Stored XSS)",slug:"cve-2021-29250-stored-xss"},{level:2,title:"CVE-2021-29245 (Insufficient Randomness)",slug:"cve-2021-29245-insufficient-randomness"},{level:2,title:"CVE-2021-29247 (Lack of httponly)",slug:"cve-2021-29247-lack-of-httponly"},{level:2,title:"CVE-2021-29248 (Lack of secure)",slug:"cve-2021-29248-lack-of-secure"},{level:2,title:"CVE-2021-29250 (Stored XSS)",slug:"cve-2021-29250-stored-xss-2"},{level:2,title:"No rate limit of forget password page",slug:"no-rate-limit-of-forget-password-page"},{level:2,title:"Summary",slug:"summary"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"XSS Vulnerability Disclosure by Doyensec",frontmatter:{title:"XSS Vulnerability Disclosure by Doyensec",date:"2019-08-15T00:00:00.000Z",author:"Nicolas",category:["announcements"],tags:["vulnerability-disclosure"],coverImage:"/images/btcpay-vulnerability-disclosure-1.jpg",layout:"Post",permalink:"/:slug"},regularPath:"/_posts/xss-vulnerability-disclosure-doyensec.html",relativePath:"_posts/xss-vulnerability-disclosure-doyensec.md",key:"v-3b36bdf4",path:"/xss-vulnerability-disclosure-doyensec/",headers:[{level:2,title:"Impact",slug:"impact"},{level:2,title:"How to fix it",slug:"how-to-fix-it"},{level:3,title:"Attack Vector",slug:"attack-vector"},{level:2,title:"How did it happen:",slug:"how-did-it-happen"},{level:2,title:"Timeline",slug:"timeline"},{level:2,title:"What we will do:",slug:"what-we-will-do"},{level:2,title:"Recommendation:",slug:"recommendation"}],id:"post",pid:"post",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{title:"Privacy Policy",frontmatter:{title:"Privacy Policy",date:"2019-03-01",permalink:"/privacy-policy"},regularPath:"/privacy-policy.html",relativePath:"privacy-policy.md",key:"v-281f49ca",path:"/privacy-policy/",lastUpdated:"11/2/2024, 5:56:25 AM",lastUpdatedTimestamp:1730526985e3},{frontmatter:{layout:"IndexPost",title:""},regularPath:"/",key:"v-b2754d56",path:"/"},{frontmatter:{layout:"FrontmatterKey",title:"Categories"},regularPath:"/category/",key:"v-28e6393c",path:"/category/"},{frontmatter:{layout:"FrontmatterKey",title:"Authors"},regularPath:"/author/",key:"v-7d2105e2",path:"/author/"},{frontmatter:{layout:"FrontmatterPagination",title:"releases "},regularPath:"/category/releases/",key:"v-1a97baa7",path:"/category/releases/"},{frontmatter:{layout:"FrontmatterPagination",title:"stories "},regularPath:"/category/stories/",key:"v-4602e778",path:"/category/stories/"},{frontmatter:{layout:"FrontmatterPagination",title:"announcements "},regularPath:"/category/announcements/",key:"v-c614f442",path:"/category/announcements/"},{frontmatter:{layout:"FrontmatterPagination",title:"guides "},regularPath:"/category/guides/",key:"v-8b44b548",path:"/category/guides/"},{frontmatter:{layout:"FrontmatterPagination",title:"features "},regularPath:"/category/features/",key:"v-079fe454",path:"/category/features/"},{frontmatter:{layout:"FrontmatterPagination",title:"case-studies "},regularPath:"/category/case-studies/",key:"v-3945bb29",path:"/category/case-studies/"},{frontmatter:{layout:"FrontmatterPagination",title:"plugins "},regularPath:"/category/plugins/",key:"v-70cfb9cb",path:"/category/plugins/"},{frontmatter:{layout:"FrontmatterPagination",title:"pavlenex "},regularPath:"/author/pavlenex/",key:"v-1b2a4f46",path:"/author/pavlenex/"},{frontmatter:{layout:"FrontmatterPagination",title:"Nicolas "},regularPath:"/author/Nicolas/",key:"v-04ed8067",path:"/author/Nicolas/"},{frontmatter:{layout:"FrontmatterPagination",title:"RockstarDev, Pavlenex, WebWorthy "},regularPath:"/author/RockstarDev,%20Pavlenex,%20WebWorthy/",key:"v-a7039020",path:"/author/RockstarDev, Pavlenex, WebWorthy/"},{frontmatter:{layout:"FrontmatterPagination",title:"ndeet, petzsch "},regularPath:"/author/ndeet,%20petzsch/",key:"v-0cca2b78",path:"/author/ndeet, petzsch/"},{frontmatter:{layout:"FrontmatterPagination",title:"Zaxounette "},regularPath:"/author/Zaxounette/",key:"v-3403a1ae",path:"/author/Zaxounette/"},{frontmatter:{layout:"FrontmatterPagination",title:"WebWorthy "},regularPath:"/author/WebWorthy/",key:"v-6daaf85f",path:"/author/WebWorthy/"},{frontmatter:{layout:"FrontmatterPagination",title:"Bas "},regularPath:"/author/Bas/",key:"v-545bd84a",path:"/author/Bas/"},{frontmatter:{layout:"FrontmatterPagination",title:"Pavlenex "},regularPath:"/author/Pavlenex/",key:"v-69dcf83d",path:"/author/Pavlenex/"},{frontmatter:{layout:"FrontmatterPagination",title:"Pavlenex, Webworthy "},regularPath:"/author/Pavlenex,%20Webworthy/",key:"v-0ace2199",path:"/author/Pavlenex, Webworthy/"},{frontmatter:{layout:"FrontmatterPagination",title:"Elha, Pavlenex, Webworthy "},regularPath:"/author/Elha,%20Pavlenex,%20Webworthy/",key:"v-754df0d0",path:"/author/Elha, Pavlenex, Webworthy/"},{frontmatter:{layout:"FrontmatterPagination",title:"RockstarDev, MrKukks "},regularPath:"/author/RockstarDev,%20MrKukks/",key:"v-72fc62d1",path:"/author/RockstarDev, MrKukks/"},{frontmatter:{layout:"FrontmatterPagination",title:"Pavlenex, Webworthy, Bobby Shell "},regularPath:"/author/Pavlenex,%20Webworthy,%20Bobby%20Shell/",key:"v-08cfd63a",path:"/author/Pavlenex, Webworthy, Bobby Shell/"},{frontmatter:{layout:"FrontmatterPagination",title:"NicolasDorier "},regularPath:"/author/NicolasDorier/",key:"v-6033dbf8",path:"/author/NicolasDorier/"},{frontmatter:{layout:"DirectoryPagination",title:"Page 2"},regularPath:"/page/2/",key:"v-8fdafa70",path:"/page/2/"},{frontmatter:{layout:"DirectoryPagination",title:"Page 3"},regularPath:"/page/3/",key:"v-8fdafa32",path:"/page/3/"},{frontmatter:{layout:"DirectoryPagination",title:"Page 4"},regularPath:"/page/4/",key:"v-8fdaf9f4",path:"/page/4/"},{frontmatter:{layout:"DirectoryPagination",title:"Page 5"},regularPath:"/page/5/",key:"v-8fdaf9b6",path:"/page/5/"},{frontmatter:{layout:"DirectoryPagination",title:"Page 6"},regularPath:"/page/6/",key:"v-8fdaf978",path:"/page/6/"},{frontmatter:{layout:"DirectoryPagination",title:"Page 7"},regularPath:"/page/7/",key:"v-8fdaf93a",path:"/page/7/"},{frontmatter:{layout:"DirectoryPagination",title:"Page 8"},regularPath:"/page/8/",key:"v-8fdaf8fc",path:"/page/8/"},{frontmatter:{layout:"DirectoryPagination",title:"Releases - Page 2"},regularPath:"/category/releases/page/2/",key:"v-4c216136",path:"/category/releases/page/2/"},{frontmatter:{layout:"DirectoryPagination",title:"Releases - Page 3"},regularPath:"/category/releases/page/3/",key:"v-4c216155",path:"/category/releases/page/3/"},{frontmatter:{layout:"DirectoryPagination",title:"Stories - Page 2"},regularPath:"/category/stories/page/2/",key:"v-04e25745",path:"/category/stories/page/2/"},{frontmatter:{layout:"DirectoryPagination",title:"Announcements - Page 2"},regularPath:"/category/announcements/page/2/",key:"v-1efb06fe",path:"/category/announcements/page/2/"},{frontmatter:{layout:"DirectoryPagination",title:"pavlenex - Page 2"},regularPath:"/author/pavlenex/page/2/",key:"v-25ccea80",path:"/author/pavlenex/page/2/"},{frontmatter:{layout:"DirectoryPagination",title:"pavlenex - Page 3"},regularPath:"/author/pavlenex/page/3/",key:"v-25ccea42",path:"/author/pavlenex/page/3/"},{frontmatter:{layout:"DirectoryPagination",title:"pavlenex - Page 4"},regularPath:"/author/pavlenex/page/4/",key:"v-25ccea04",path:"/author/pavlenex/page/4/"}],themeConfig:{domain:"https://blog.btcpayserver.org",logo:"/images/btcpay-logo.svg",displayAllHeaders:!1,repo:"btcpayserver/blog",docsDir:"blog",nav:[{text:"Website",link:"https://btcpayserver.org/",rel:"noopener noreferrer website"},{text:"Chat",link:"https://chat.btcpayserver.org/",rel:"noopener noreferrer chat"},{text:"GitHub",link:"https://github.com/btcpayserver/",rel:"noopener noreferrer github"},{text:"Twitter",link:"https://twitter.com/BtcpayServer",rel:"noopener noreferrer twitter"}],sidebarDepth:0,sidebar:[["/","Home"],["/category/releases/","Releases"],["/category/case-studies/","Case Studies"],["/category/stories/","Stories"],["/category/guides/","Guides"],["/category/announcements/","Announcements"],["/category/features/","Features"],["/category/plugins/","Plugins"]]}},Vs=n(242),{COLOR_MODES:Zs,STORE_ATTR:qs,setColorMode:Ks}=n(108),Gs=e=>"Enter"===e.code||13===(e.keyCode||e.which),Ys=e=>{const t=e.target.matches("#algolia-search-input")&&Gs(e);(e.target.matches(".ds-dropdown-menu *")||t)&&document.getElementById("algolia-search-input").blur(),e.target.matches(".ytEmbed")&&(e.preventDefault(),(e=>{const t=e.querySelector("iframe[data-src]");if(t){const e=t.getAttribute("data-src");t.setAttribute("src",e)}})(e.target))};if("undefined"==typeof process||"server"!==process.env.VUE_ENV){const e=window.matchMedia("(prefers-color-scheme: dark)").matches?Zs[1]:Zs[0],t=window.localStorage.getItem(qs);Ks(Zs.includes(t)?t:e)}n(243);qn.component("Badge",()=>Promise.all([n.e(0),n.e(10)]).then(n.bind(null,350))),qn.component("CodeGroup",()=>Promise.all([n.e(0),n.e(12)]).then(n.bind(null,343))),qn.component("CodeBlock",()=>Promise.all([n.e(0),n.e(11)]).then(n.bind(null,342)));n(244);var Js={category:{releases:{key:"releases",scope:"category",path:"/category/releases/",pageKeys:["v-499e2aec","v-1921d58c","v-78e3a332","v-69792af4","v-7d95c994","v-ebc87668","v-45843d5a","v-04835b18","v-debd9fe0","v-56b01a8c","v-78fb0e54","v-222d4f66","v-529e392c","v-f8ff4568","v-973afd28","v-b5151f96","v-293dce38","v-96d63b3c","v-7dc8abe0","v-10303edc","v-46fc755e","v-4d37ef4c","v-bad05c50","v-6bcb9b56","v-8a7ea4a8","v-4071114c"]},stories:{key:"stories",scope:"category",path:"/category/stories/",pageKeys:["v-6c585c80","v-cd62a5a8","v-6028760c","v-1db83acc","v-72ecdccc","v-cc0c9ce8","v-48df8fa8","v-0d961d0c","v-8e8a67e8","v-2fcedaac","v-22bca8a8"]},announcements:{key:"announcements",scope:"category",path:"/category/announcements/",pageKeys:["v-19d2659c","v-5923a558","v-00e62a0c","v-1245cc68","v-9ed1236c","v-2bdfe6a8","v-347df1ac","v-511f408c","v-db861df0","v-42608e28","v-3ef1982c","v-127af38c","v-f6ea4c28","v-4ec352bc","v-d8f9098c","v-3b36bdf4"]},guides:{key:"guides",scope:"category",path:"/category/guides/",pageKeys:["v-105c3aa4","v-312de42c","v-492b1fe8","v-45be51d2"]},features:{key:"features",scope:"category",path:"/category/features/",pageKeys:["v-78e3a332","v-69792af4","v-272b7c8c","v-67eac528","v-03c118ec","v-1df6814c"]},"case-studies":{key:"case-studies",scope:"category",path:"/category/case-studies/",pageKeys:["v-636cee68","v-75a17a68","v-5cd1fdc4","v-7ed5a5a0","v-3b4a92e8","v-194aa16c","v-75f7bbe8","v-fc399aa8","v-d31850e8"]},plugins:{key:"plugins",scope:"category",path:"/category/plugins/",pageKeys:["v-45be51d2","v-1627eb18"]}},author:{pavlenex:{key:"pavlenex",scope:"author",path:"/author/pavlenex/",pageKeys:["v-499e2aec","v-6c585c80","v-19d2659c","v-105c3aa4","v-78e3a332","v-69792af4","v-5923a558","v-00e62a0c","v-cc0c9ce8","v-1245cc68","v-9ed1236c","v-272b7c8c","v-7d95c994","v-ebc87668","v-45843d5a","v-04835b18","v-debd9fe0","v-56b01a8c","v-78fb0e54","v-10303edc","v-46fc755e","v-4d37ef4c","v-347df1ac","v-42608e28","v-127af38c","v-67eac528","v-312de42c","v-492b1fe8","v-8e8a67e8","v-2fcedaac","v-22bca8a8","v-45be51d2","v-1df6814c","v-1627eb18","v-d8f9098c"]},Nicolas:{key:"Nicolas",scope:"author",path:"/author/Nicolas/",pageKeys:["v-1921d58c","v-511f408c","v-f6ea4c28","v-4ec352bc","v-3b36bdf4"]},"RockstarDev, Pavlenex, WebWorthy":{key:"RockstarDev, Pavlenex, WebWorthy",scope:"author",path:"/author/RockstarDev, Pavlenex, WebWorthy/",pageKeys:["v-cd62a5a8"]},"ndeet, petzsch":{key:"ndeet, petzsch",scope:"author",path:"/author/ndeet, petzsch/",pageKeys:["v-6028760c"]},Zaxounette:{key:"Zaxounette",scope:"author",path:"/author/Zaxounette/",pageKeys:["v-1db83acc","v-72ecdccc","v-222d4f66","v-293dce38","v-96d63b3c","v-7dc8abe0","v-db861df0","v-3ef1982c","v-4071114c"]},WebWorthy:{key:"WebWorthy",scope:"author",path:"/author/WebWorthy/",pageKeys:["v-48df8fa8"]},Bas:{key:"Bas",scope:"author",path:"/author/Bas/",pageKeys:["v-529e392c","v-bad05c50","v-6bcb9b56","v-2bdfe6a8"]},Pavlenex:{key:"Pavlenex",scope:"author",path:"/author/Pavlenex/",pageKeys:["v-f8ff4568","v-973afd28","v-b5151f96","v-8a7ea4a8"]},"Pavlenex, Webworthy":{key:"Pavlenex, Webworthy",scope:"author",path:"/author/Pavlenex, Webworthy/",pageKeys:["v-636cee68","v-75a17a68","v-5cd1fdc4","v-0d961d0c","v-3b4a92e8","v-194aa16c","v-75f7bbe8"]},"Elha, Pavlenex, Webworthy":{key:"Elha, Pavlenex, Webworthy",scope:"author",path:"/author/Elha, Pavlenex, Webworthy/",pageKeys:["v-7ed5a5a0"]},"RockstarDev, MrKukks":{key:"RockstarDev, MrKukks",scope:"author",path:"/author/RockstarDev, MrKukks/",pageKeys:["v-fc399aa8"]},"Pavlenex, Webworthy, Bobby Shell":{key:"Pavlenex, Webworthy, Bobby Shell",scope:"author",path:"/author/Pavlenex, Webworthy, Bobby Shell/",pageKeys:["v-d31850e8"]},NicolasDorier:{key:"NicolasDorier",scope:"author",path:"/author/NicolasDorier/",pageKeys:["v-03c118ec"]}}};class Xs{constructor(e,t){this._metaMap=Object.assign({},e),Object.keys(this._metaMap).forEach(e=>{const{pageKeys:n}=this._metaMap[e];this._metaMap[e].pages=n.map(e=>function(e,t){for(let n=0;n{const{pages:n,path:r}=this._metaMap[t];e.push({name:t,pages:n,path:r})}),e}getItemByName(e){return this._metaMap[e]}}var Qs={post:(e,t)=>{const r=n(45);return r(e.frontmatter.date)-r(t.frontmatter.date)>0?-1:1},category:(e,t)=>{const r=n(45);return r(e.frontmatter.date)-r(t.frontmatter.date)>0?-1:1},author:(e,t)=>{const r=n(45);return r(e.frontmatter.date)-r(t.frontmatter.date)>0?-1:1}},el={post:function(e,t,n){return e.pid===n&&e.id===t},category:function(e,t,n){const r=t;return["category","categories"].some(t=>{const n=e.frontmatter[t];return Array.isArray(n)?n.some(e=>e==r):n==r})},author:function(e,t,n){const r=t;return["author","authors"].some(t=>{const n=e.frontmatter[t];return Array.isArray(n)?n.some(e=>e==r):n==r})}},tl=[{pid:"post",id:"post",filter:el.post,sorter:Qs.post,pages:[{path:"/",interval:[0,9]},{path:"/page/2/",interval:[10,19]},{path:"/page/3/",interval:[20,29]},{path:"/page/4/",interval:[30,39]},{path:"/page/5/",interval:[40,49]},{path:"/page/6/",interval:[50,59]},{path:"/page/7/",interval:[60,69]},{path:"/page/8/",interval:[70,71]}],prevText:"Prev",nextText:"Next"},{pid:"category",id:"releases",filter:el.category,sorter:Qs.category,pages:[{path:"/category/releases/",interval:[0,9]},{path:"/category/releases/page/2/",interval:[10,19]},{path:"/category/releases/page/3/",interval:[20,26]}],prevText:"Prev",nextText:"Next"},{pid:"category",id:"stories",filter:el.category,sorter:Qs.category,pages:[{path:"/category/stories/",interval:[0,9]},{path:"/category/stories/page/2/",interval:[10,11]}],prevText:"Prev",nextText:"Next"},{pid:"category",id:"announcements",filter:el.category,sorter:Qs.category,pages:[{path:"/category/announcements/",interval:[0,9]},{path:"/category/announcements/page/2/",interval:[10,16]}],prevText:"Prev",nextText:"Next"},{pid:"category",id:"guides",filter:el.category,sorter:Qs.category,pages:[{path:"/category/guides/",interval:[0,4]}],prevText:"Prev",nextText:"Next"},{pid:"category",id:"features",filter:el.category,sorter:Qs.category,pages:[{path:"/category/features/",interval:[0,6]}],prevText:"Prev",nextText:"Next"},{pid:"category",id:"case-studies",filter:el.category,sorter:Qs.category,pages:[{path:"/category/case-studies/",interval:[0,9]}],prevText:"Prev",nextText:"Next"},{pid:"category",id:"plugins",filter:el.category,sorter:Qs.category,pages:[{path:"/category/plugins/",interval:[0,2]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"pavlenex",filter:el.author,sorter:Qs.author,pages:[{path:"/author/pavlenex/",interval:[0,9]},{path:"/author/pavlenex/page/2/",interval:[10,19]},{path:"/author/pavlenex/page/3/",interval:[20,29]},{path:"/author/pavlenex/page/4/",interval:[30,35]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"Nicolas",filter:el.author,sorter:Qs.author,pages:[{path:"/author/Nicolas/",interval:[0,5]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"RockstarDev, Pavlenex, WebWorthy",filter:el.author,sorter:Qs.author,pages:[{path:"/author/RockstarDev, Pavlenex, WebWorthy/",interval:[0,1]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"ndeet, petzsch",filter:el.author,sorter:Qs.author,pages:[{path:"/author/ndeet, petzsch/",interval:[0,1]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"Zaxounette",filter:el.author,sorter:Qs.author,pages:[{path:"/author/Zaxounette/",interval:[0,9]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"WebWorthy",filter:el.author,sorter:Qs.author,pages:[{path:"/author/WebWorthy/",interval:[0,1]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"Bas",filter:el.author,sorter:Qs.author,pages:[{path:"/author/Bas/",interval:[0,4]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"Pavlenex",filter:el.author,sorter:Qs.author,pages:[{path:"/author/Pavlenex/",interval:[0,4]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"Pavlenex, Webworthy",filter:el.author,sorter:Qs.author,pages:[{path:"/author/Pavlenex, Webworthy/",interval:[0,7]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"Elha, Pavlenex, Webworthy",filter:el.author,sorter:Qs.author,pages:[{path:"/author/Elha, Pavlenex, Webworthy/",interval:[0,1]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"RockstarDev, MrKukks",filter:el.author,sorter:Qs.author,pages:[{path:"/author/RockstarDev, MrKukks/",interval:[0,1]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"Pavlenex, Webworthy, Bobby Shell",filter:el.author,sorter:Qs.author,pages:[{path:"/author/Pavlenex, Webworthy, Bobby Shell/",interval:[0,1]}],prevText:"Prev",nextText:"Next"},{pid:"author",id:"NicolasDorier",filter:el.author,sorter:Qs.author,pages:[{path:"/author/NicolasDorier/",interval:[0,1]}],prevText:"Prev",nextText:"Next"}],nl=n(94);const rl=n.n(nl)()("plugin-blog:pagination");class al{constructor(e,t,n){rl("pagination",e);const{pages:r,prevText:a,nextText:o}=e,{path:i}=n;this._prevText=a,this._nextText=o;for(let e=0,t=r.length;ee.filter(t,e.id,e.pid)).sort(e.sorter)}setIndexPage(e){this._indexPage=e}get length(){return this._paginationPages.length}get pages(){const[e,t]=this._currentPage.interval;return this._matchedPages.slice(e,t+1)}get hasPrev(){return 0!==this.paginationIndex}get prevLink(){return this.hasPrev?this.paginationIndex-1==0&&this._indexPage?this._indexPage:this._paginationPages[this.paginationIndex-1].path:null}get hasNext(){return this.paginationIndex!==this.length-1}get nextLink(){return this.hasNext?this._paginationPages[this.paginationIndex+1].path:null}get prevText(){return this._prevText}get nextText(){return this._nextText}getSpecificPageLink(e){return this._paginationPages[e].path}}const ol=new class{constructor(e){this.paginations=e}get pages(){return qn.$vuepress.$get("siteData").pages}getPagination(e,t,n){rl("id",t),rl("pid",e);const r=this.paginations.filter(n=>n.id===t&&n.pid===e)[0];return new al(r,this.pages,n)}}(tl);var il={comment:{enabled:!1,service:""},email:{enabled:!1},feed:{rss:!0,atom:!0,json:!0}},sl=[({router:e})=>{"undefined"!=typeof process&&"server"===process.env.VUE_ENV||e.onReady(()=>{const{app:t}=e;Vs.forEach(t=>e.addRoute(t)),t.$once("hook:mounted",()=>{setTimeout(()=>{const{hash:e}=document.location;if(e.length>1){const t=e.substring(1),n=document.getElementById(t);n&&n.scrollIntoView()}},500)}),document.addEventListener("click",Ys),document.addEventListener("keyup",e=>{Gs(e)&&Ys(e)})})},{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},{},({Vue:e})=>{e.component("CodeCopy",Os)},({Vue:e})=>{const t=Object.keys(Js).map(e=>{const t=Js[e],n="$"+e;return{[n](){const{pages:e}=this.$site;return new Xs(t,e)},["$current"+(e.charAt(0).toUpperCase()+e.slice(1))](){const e=this.$route.meta.id;return this[n].getItemByName(e)}}}).reduce((e,t)=>(Object.assign(e,t),e),{});t.$frontmatterKey=function(){const e=this["$"+this.$route.meta.id];return e||null},e.mixin({computed:t})},({Vue:e})=>{e.mixin({computed:{$pagination(){return this.$route.meta.pid&&this.$route.meta.id?this.$getPagination(this.$route.meta.pid,this.$route.meta.id):null}},methods:{$getPagination(e,t){return t=t||e,ol.getPagination(e,t,this.$route)}}})},({Vue:e})=>{const t={$service:()=>il};e.mixin({computed:t})}],ll=[];class cl extends class{constructor(){this.store=new qn({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){qn.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}{}Object.assign(cl.prototype,{getPageAsyncComponent:ss,getLayoutAsyncComponent:ls,getAsyncComponent:cs,getVueComponent:us});var ul={install(e){const t=new cl;e.$vuepress=t,e.prototype.$vuepress=t}};function pl(e,t){const n=t.toLowerCase();return e.options.routes.some(e=>e.path.toLowerCase()===n)}var dl={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;return ds("pageKey",t),qn.component(t)||qn.component(t,ss(t)),qn.component(t)?e(t):e("")}},hl={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:n})=>e("div",{class:["content__"+t.slotKey]},n()[t.slotKey])},fl={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},vl=(n(247),n(248),Object(Es.a)(fl,(function(){var e=this._self._c;return e("span",[e("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[e("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),e("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),e("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),gl={functional:!0,render(e,{parent:t,children:n}){if(t._isMounted)return n;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};qn.config.productionTip=!1,qn.use(Vi),qn.use(ul),qn.mixin(function(e,t,n=qn){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t});Object.freeze(e)}(t),n.$vuepress.$set("siteData",t);const r=new(e(n.$vuepress.$get("siteData"))),a=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),o={};return Object.keys(a).reduce((e,t)=>(t.startsWith("$")&&(e[t]=a[t].get),e),o),{computed:o}}(e=>class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,n;for(const r in e)"/"===r?n=e[r]:0===this.$page.path.indexOf(r)&&(t=e[r]);return t||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:e}=this.$page.frontmatter;return"string"==typeof e&&e}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const n=this.$siteTitle,r=e.frontmatter.home?null:e.frontmatter.title||e.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let n=0;nn||(e.hash?!qn.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(e.hash)}:{x:0,y:0})});!function(e){e.beforeEach((t,n,r)=>{if(pl(e,t.path))r();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const n=t.path.replace(/\/$/,"")+".html";pl(e,n)?r(n):r()}else r();else{const n=t.path+"/",a=t.path+".html";pl(e,a)?r(a):pl(e,n)?r(n):r()}})}(n);const r={};try{await Promise.all(sl.filter(e=>"function"==typeof e).map(t=>t({Vue:qn,options:r,router:n,siteData:Hs,isServer:e})))}catch(e){console.error(e)}return{app:new qn(Object.assign(r,{router:n,render:e=>e("div",{attrs:{id:"app"}},[e("RouterView",{ref:"layout"}),e("div",{class:"global-ui"},ll.map(t=>e(t)))])})),router:n}}(!1).then(({app:e,router:t})=>{t.onReady(()=>{e.$mount("#app")})})}]); \ No newline at end of file diff --git a/author/Bas/index.html b/author/Bas/index.html index 69c354b1..edcd8ad9 100644 --- a/author/Bas/index.html +++ b/author/Bas/index.html @@ -12,7 +12,7 @@ - + @@ -132,6 +132,6 @@ Unbank

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

- + diff --git a/author/Elha, Pavlenex, Webworthy/index.html b/author/Elha, Pavlenex, Webworthy/index.html index 4c0a2369..0387c182 100644 --- a/author/Elha, Pavlenex, Webworthy/index.html +++ b/author/Elha, Pavlenex, Webworthy/index.html @@ -12,7 +12,7 @@ - + @@ -90,6 +90,6 @@ Unbank

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

- + diff --git a/author/Nicolas/index.html b/author/Nicolas/index.html index ed4f97bd..8b675d1f 100644 --- a/author/Nicolas/index.html +++ b/author/Nicolas/index.html @@ -12,7 +12,7 @@ - + @@ -146,6 +146,6 @@ Unbank

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

- + diff --git a/author/NicolasDorier/index.html b/author/NicolasDorier/index.html index 11a6883b..e4af61db 100644 --- a/author/NicolasDorier/index.html +++ b/author/NicolasDorier/index.html @@ -12,7 +12,7 @@ - + @@ -90,6 +90,6 @@ Unbank

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

- + diff --git a/author/Pavlenex, Webworthy, Bobby Shell/index.html b/author/Pavlenex, Webworthy, Bobby Shell/index.html index 75dc40e5..d8e3802e 100644 --- a/author/Pavlenex, Webworthy, Bobby Shell/index.html +++ b/author/Pavlenex, Webworthy, Bobby Shell/index.html @@ -12,7 +12,7 @@ - + @@ -90,6 +90,6 @@ Unbank

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

- + diff --git a/author/Pavlenex, Webworthy/index.html b/author/Pavlenex, Webworthy/index.html index 611792a7..037070d6 100644 --- a/author/Pavlenex, Webworthy/index.html +++ b/author/Pavlenex, Webworthy/index.html @@ -12,7 +12,7 @@ - + @@ -174,6 +174,6 @@ Unbank

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

- + diff --git a/author/Pavlenex/index.html b/author/Pavlenex/index.html index ab9146a4..48f5a13d 100644 --- a/author/Pavlenex/index.html +++ b/author/Pavlenex/index.html @@ -12,7 +12,7 @@ - + @@ -216,6 +216,6 @@ Unbank

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

- + diff --git a/author/RockstarDev, MrKukks/index.html b/author/RockstarDev, MrKukks/index.html index 33a11199..19bfbbb4 100644 --- a/author/RockstarDev, MrKukks/index.html +++ b/author/RockstarDev, MrKukks/index.html @@ -12,7 +12,7 @@ - + @@ -90,6 +90,6 @@ Unbank

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

- + diff --git a/author/RockstarDev, Pavlenex, WebWorthy/index.html b/author/RockstarDev, Pavlenex, WebWorthy/index.html index ba1777c2..5fcf5f2b 100644 --- a/author/RockstarDev, Pavlenex, WebWorthy/index.html +++ b/author/RockstarDev, Pavlenex, WebWorthy/index.html @@ -12,7 +12,7 @@ - + @@ -90,6 +90,6 @@ Unbank

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

- + diff --git a/author/WebWorthy/index.html b/author/WebWorthy/index.html index ffd792e0..85a4196a 100644 --- a/author/WebWorthy/index.html +++ b/author/WebWorthy/index.html @@ -12,7 +12,7 @@ - + @@ -90,6 +90,6 @@ Unbank

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

- + diff --git a/author/Zaxounette/index.html b/author/Zaxounette/index.html index e43ee526..6b54760e 100644 --- a/author/Zaxounette/index.html +++ b/author/Zaxounette/index.html @@ -12,7 +12,7 @@ - + @@ -202,6 +202,6 @@ Unbank

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

- + diff --git a/author/index.html b/author/index.html index fd2fe44b..98b16551 100644 --- a/author/index.html +++ b/author/index.html @@ -12,7 +12,7 @@ - + @@ -62,6 +62,6 @@ Unbank

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

- + diff --git a/author/ndeet, petzsch/index.html b/author/ndeet, petzsch/index.html index 31365dc5..9b91890e 100644 --- a/author/ndeet, petzsch/index.html +++ b/author/ndeet, petzsch/index.html @@ -12,7 +12,7 @@ - + @@ -90,6 +90,6 @@ Unbank

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

- + diff --git a/author/pavlenex/index.html b/author/pavlenex/index.html index 525e2a8f..afed5f6d 100644 --- a/author/pavlenex/index.html +++ b/author/pavlenex/index.html @@ -12,7 +12,7 @@ - + @@ -216,6 +216,6 @@ Unbank

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

- + diff --git a/author/pavlenex/page/2/index.html b/author/pavlenex/page/2/index.html index af7122dc..8e2ee7ab 100644 --- a/author/pavlenex/page/2/index.html +++ b/author/pavlenex/page/2/index.html @@ -12,7 +12,7 @@ - + @@ -216,6 +216,6 @@ Unbank

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

- + diff --git a/author/pavlenex/page/3/index.html b/author/pavlenex/page/3/index.html index b97df2a4..04c0a685 100644 --- a/author/pavlenex/page/3/index.html +++ b/author/pavlenex/page/3/index.html @@ -12,7 +12,7 @@ - + @@ -216,6 +216,6 @@ Unbank

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

- + diff --git a/author/pavlenex/page/4/index.html b/author/pavlenex/page/4/index.html index 8ec19507..36bcfd14 100644 --- a/author/pavlenex/page/4/index.html +++ b/author/pavlenex/page/4/index.html @@ -12,7 +12,7 @@ - + @@ -146,6 +146,6 @@ Unbank

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

- + diff --git a/bitcoin-2024-the-year-of-ambassadors/index.html b/bitcoin-2024-the-year-of-ambassadors/index.html index 9fcafa6d..621c094d 100644 --- a/bitcoin-2024-the-year-of-ambassadors/index.html +++ b/bitcoin-2024-the-year-of-ambassadors/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

The previous year stands out as a transformative period for BTCPay Server. It is filled with significant achievements that have fortified the project. We deployed the BTCPay Point of Sale system at multiple events, demonstrating how FOSS technology on top of Bitcoin can rival and even replace traditional fiat payment rails (opens new window). We announced the BTCPay App (opens new window), a cornerstone of our long-term strategy. Our partnerships have flourished - we released numerous case studies highlighting the innovative work of those building on top of BTCPay Server (opens new window). Finally, our supporters have come through to ensure we can continue working on FOSS technology that is available to everyone.

At BTCPay our mission is to enable anyone to accept Bitcoin, unhindered by geographic, political, or financial barriers. As we step into 2024, we’re dedicated to helping individuals and businesses build circular economies on top of Bitcoin. We’re not here to just provide the technology; we're here to nurture relationships and offer dedicated support to those who share our vision. We believe in the power of collective effort and that local communities can have a global impact.

If this resonates with you - join us on this exciting journey in 2024! As a part of our community, you’ll have the opportunity to make a real difference in spreading Bitcoin adoption and contribute to the financial revolution. Whether you are already leveraging BTCPay Server technology or planning to do so in the near future, we want to hear from you and help you realize your mission. Let's work together to make 2024 a year of local Bitcoin economies!

Join us on https://chat.btcpayserver.org (opens new window) and mention this blog post to be added to the channel specifically for Ambassadors!

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

The previous year stands out as a transformative period for BTCPay Server. It is filled with significant achievements that have fortified the project. We deployed the BTCPay Point of Sale system at multiple events, demonstrating how FOSS technology on top of Bitcoin can rival and even replace traditional fiat payment rails (opens new window). We announced the BTCPay App (opens new window), a cornerstone of our long-term strategy. Our partnerships have flourished - we released numerous case studies highlighting the innovative work of those building on top of BTCPay Server (opens new window). Finally, our supporters have come through to ensure we can continue working on FOSS technology that is available to everyone.

At BTCPay our mission is to enable anyone to accept Bitcoin, unhindered by geographic, political, or financial barriers. As we step into 2024, we’re dedicated to helping individuals and businesses build circular economies on top of Bitcoin. We’re not here to just provide the technology; we're here to nurture relationships and offer dedicated support to those who share our vision. We believe in the power of collective effort and that local communities can have a global impact.

If this resonates with you - join us on this exciting journey in 2024! As a part of our community, you’ll have the opportunity to make a real difference in spreading Bitcoin adoption and contribute to the financial revolution. Whether you are already leveraging BTCPay Server technology or planning to do so in the near future, we want to hear from you and help you realize your mission. Let's work together to make 2024 a year of local Bitcoin economies!

Join us on https://chat.btcpayserver.org (opens new window) and mention this blog post to be added to the channel specifically for Ambassadors!

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/bitcoin-bonus-scam/index.html b/bitcoin-bonus-scam/index.html index a7afe32b..a5706d4e 100644 --- a/bitcoin-bonus-scam/index.html +++ b/bitcoin-bonus-scam/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

# Bitcoin Bonus Scam

# What happened

Since about mid-October 2022, we noticed users coming to our support chat with dubious payment requests of 64 US-Dollar payable in bitcoin from sites branded as “Bitcoin Bonus.” The users posted screenshots and links of sites that claimed they had participated in cloud mining and forgotten about it and were eligible for a substantial earning of somewhere between 20 - 30k US-Dollar. Before the users can receive the payout, they need to pay a “conversion fee” in Bitcoin to get their rewards paid out. Since nobody gives away free money, if users pay that, their money is gone, and they never receive the promised payout.

Despite our efforts, “Bitcoin Bonus” continues to leverage and abuse BTCPay branding. As a result, many individuals mistakenly believe that BTCPay Server is responsible for processing payments made through the scammer's sites, leading them to seek help in our support channels.

# What is BTCPay Server and why we can’t help

BTCPay Server is a free and open source software project composed of contributors and supporters from all over the world. The team provides a self-hosted software solution that allows anyone to accept Bitcoin payments from their customers without the need of a middleman. The merchant is running their own BTCPay Server without us - the creators of the software - having any kind of control over their server.

It is important to make the differentiation between payment platform providers like PayPal, Stripe and others at this point. These companies function as a trusted third party between the customer and the merchant and can freeze or hold accounts in case of dispute - BTCPay contributors cannot do that.

# How the scam works

The scammers use Google Forms to send out mass emails containing a link to their website. These emails can look like the following:

After clicking the link (which you shouldn’t do to begin with, because the included trackers verify your email still exists), you get redirected to the following site:

You will be taken through several steps and have to spend some arbitrary wait time on the website for the payouts to be “processed”. The processing screen looks like this running a bunch of absolutely random hash values by the user:

after this a support chat opens with a fake representative called “Sophia” (could differ)

You’ll be redirected to a withdrawal form:

This returns to the support chat:

When the users click on the “Currency Exchange” button they see this screen:

After clicking the “Exchange Bitcoin” button the users see the BTCPay checkout screen:

Recently the scammers seem to have switched to a custom branded checkout where they hide the BTCPay Server branding and “Powered by BTCPay Server” link on the checkout form. We assume this is due to the fact that users finding our support channel leading to their sites are constantly taken down.

Example of their new checkout:

# What we’ve done to mitigate it

It’s important to note that we’ve done everything in our power to try to protect people from the scam.

Whenever a user complains about bitcoin bonus scam sites, we ask for the URL the scam is hosted on. It seems as if the the persons behind this operation, switch the domain used for it constantly. We do a simple whois query (opens new window) of the domain and locate the abuse contact from the registrar where the domain was registered. Then we write an email explaining the situation and that the site is being used to scam people. Usually after a few hours or a day, the sites get taken down.

Most of the sites also use Cloudflare as their DNS to hide their servers IP address. When this is the case we also file complaints on the Cloudflare abuse form (opens new window) which takes the site down quite quickly in many cases.

Unfortunately this needs to be done for each domain and the registrars do not fully suspend all domains of a certain owner (or they were smart enough to register the domains with different owners). This makes it an endless whack-a-mole game.

# What to do if you were affected by the scam

First of all, if you ended up on the scammers website, don’t pay them under any circumstances! Once you send bitcoin, your money is lost. No one can get it back for you.

Second, if you already paid and were scammed, you should report the website to the authorities. For US citizens, one way of doing this is through this website: https://complaint.ic3.gov/ (opens new window). For other countries you need to find the local authorities or police to file a complaint.

Third, if you want to help to take the scammers websites down feel free to do a whois lookup (opens new window) to find the registrar abuse contact email.

TLDR; nobody gives away free money, if it sounds too good to be true - it probably is. Bitcoin Bonus and similar services claiming to give you free money are scams. Do not pay their invoices hoping to receive high rewards.

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

# Bitcoin Bonus Scam

# What happened

Since about mid-October 2022, we noticed users coming to our support chat with dubious payment requests of 64 US-Dollar payable in bitcoin from sites branded as “Bitcoin Bonus.” The users posted screenshots and links of sites that claimed they had participated in cloud mining and forgotten about it and were eligible for a substantial earning of somewhere between 20 - 30k US-Dollar. Before the users can receive the payout, they need to pay a “conversion fee” in Bitcoin to get their rewards paid out. Since nobody gives away free money, if users pay that, their money is gone, and they never receive the promised payout.

Despite our efforts, “Bitcoin Bonus” continues to leverage and abuse BTCPay branding. As a result, many individuals mistakenly believe that BTCPay Server is responsible for processing payments made through the scammer's sites, leading them to seek help in our support channels.

# What is BTCPay Server and why we can’t help

BTCPay Server is a free and open source software project composed of contributors and supporters from all over the world. The team provides a self-hosted software solution that allows anyone to accept Bitcoin payments from their customers without the need of a middleman. The merchant is running their own BTCPay Server without us - the creators of the software - having any kind of control over their server.

It is important to make the differentiation between payment platform providers like PayPal, Stripe and others at this point. These companies function as a trusted third party between the customer and the merchant and can freeze or hold accounts in case of dispute - BTCPay contributors cannot do that.

# How the scam works

The scammers use Google Forms to send out mass emails containing a link to their website. These emails can look like the following:

After clicking the link (which you shouldn’t do to begin with, because the included trackers verify your email still exists), you get redirected to the following site:

You will be taken through several steps and have to spend some arbitrary wait time on the website for the payouts to be “processed”. The processing screen looks like this running a bunch of absolutely random hash values by the user:

after this a support chat opens with a fake representative called “Sophia” (could differ)

You’ll be redirected to a withdrawal form:

This returns to the support chat:

When the users click on the “Currency Exchange” button they see this screen:

After clicking the “Exchange Bitcoin” button the users see the BTCPay checkout screen:

Recently the scammers seem to have switched to a custom branded checkout where they hide the BTCPay Server branding and “Powered by BTCPay Server” link on the checkout form. We assume this is due to the fact that users finding our support channel leading to their sites are constantly taken down.

Example of their new checkout:

# What we’ve done to mitigate it

It’s important to note that we’ve done everything in our power to try to protect people from the scam.

Whenever a user complains about bitcoin bonus scam sites, we ask for the URL the scam is hosted on. It seems as if the the persons behind this operation, switch the domain used for it constantly. We do a simple whois query (opens new window) of the domain and locate the abuse contact from the registrar where the domain was registered. Then we write an email explaining the situation and that the site is being used to scam people. Usually after a few hours or a day, the sites get taken down.

Most of the sites also use Cloudflare as their DNS to hide their servers IP address. When this is the case we also file complaints on the Cloudflare abuse form (opens new window) which takes the site down quite quickly in many cases.

Unfortunately this needs to be done for each domain and the registrars do not fully suspend all domains of a certain owner (or they were smart enough to register the domains with different owners). This makes it an endless whack-a-mole game.

# What to do if you were affected by the scam

First of all, if you ended up on the scammers website, don’t pay them under any circumstances! Once you send bitcoin, your money is lost. No one can get it back for you.

Second, if you already paid and were scammed, you should report the website to the authorities. For US citizens, one way of doing this is through this website: https://complaint.ic3.gov/ (opens new window). For other countries you need to find the local authorities or police to file a complaint.

Third, if you want to help to take the scammers websites down feel free to do a whois lookup (opens new window) to find the registrar abuse contact email.

TLDR; nobody gives away free money, if it sounds too good to be true - it probably is. Bitcoin Bonus and similar services claiming to give you free money are scams. Do not pay their invoices hoping to receive high rewards.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/bitcoin-pos/index.html b/bitcoin-pos/index.html index 857ac047..1b3486aa 100644 --- a/bitcoin-pos/index.html +++ b/bitcoin-pos/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

This tutorial shows you how to create a Bitcoin Point of Sale and accept BTC payments (on-chain and via the Lightning Network). When you complete it, hopefully, you'll have a web-based PoS that requires no additional hardware. It will run as a web app from a browser of your mobile phone or tablet.

Most importantly, there will be no fees or intermediary. Customers will be presented with an invoice they have to pay from their wallet. The BTC you receive will go straight to your wallet. Optionally, you can enable tips and customize the percentage as well as the overall appearance of the PoS.

BTCPay Point Of Sale - a web-based app that allows you to receive Bitcoin payments with no intermediary or fees, from any old tablet or phone:

# Requirements

Before we dive into the guide, here are some requirements:

# Steps

  1. Deploy BTCPay Server
  2. Configure BTCPay (Register User, Create Store, Add Wallet)
  3. Create a PoS app
  4. Add PoS as to a home screen of your tablet or phone

# Step 1 - Deploying BTCPay

BTCPay Server is a free and open-source cryptocurrency payment processor (Hey, you're reading our blog!).

You've heard of WordPress, the Content Management System that allows people to build sites with ease.

BTCPay is a WordPress of finance. It allows you to become your own bank or payment processor with a complete self-hosted technology stack. It's free and the entire source code can be found on GitHub (opens new window).

There are many ways in which one can deploy BTCPay. I recommend that you check out extensive deployment documentation (opens new window).

Besides self-hosting, you can use someone else's server. That's called third-party hosting (opens new window). Majority of community members allow people to use their servers for free.  Make sure to understand risks that trusting a third-party brings.

Make sure to read our third-party documentation to understand why chose one over the other. Third-party servers come with some limitations, but you can use them for testing purposes.

To deploy a self-hosted BTCPay you can follow a tutorial below.

If you don't want to invest time and efforts into self-hosting a server at this point, you can just hop on to our demo server (opens new window) and go to step 2.

# Step 2 - Registering, creating a store, connecting a wallet

No matter if you decided to go with a self-hosted, a third-party host or our demo server, the rest of the setup is the same for all.

# 2.1 - Creating an account

Register an account on BTCPay Server by clicking the "Register" link in the top menu. Enter your credentials. Some hosts may require that you verify e-mail upon registration. For the self-hosted server, the first registered user is a server admin.

# 2.2 - Creating a store

Now that you're logged in, create a store. In BTCPay you can create an unlimited amount of stores. Each stores is unique entity and can be customized. The store is later tied to your wallet and whatever app you're creating.

Create a new store and give it a name. You'll see the message that the store is successfully created. If you wish, you can configure your store settings. For most people, the default setup is okay. Do not navigate away from the store settings, scroll down to configure your wallet.

Create a store and give it a name:

Store successfully created. If you wish you can customize basic settings, or just scroll down to connect your wallet:

# 2.3 - Connecting a wallet

As I already said, the beauty of using BTCPay is that there will be no fees on transaction, registration or membership. Furthermore, BTCPay does not require your private key. You're just adding an xpub key from your wallet.

  • BTCPay does not know nor has access to your private key
  • You're uploading xpubkey from external Bitcoin wallet - Electrum for example

There are two ways in which you can connect your BTCPay to your wallet:

  1. Automatic with Ledger Nano
  2. Manual with any wallet supporting xpub (Electrum (opens new window) recommended)

Input your xpub, then on the second screen, if you see a wrong address, input the first address of your wallet so that BTCPay can help you to configure correctly.

The video below explains how to connect your wallet to your BTCPay store.

If your BTCPay is self-hosted, you can enable Lightning Network payments (opens new window).

# Step 3 - Creating Point of Sale app

Once you created a store and connected a wallet to it, the fun part begins. In this step, we'll be creating a Point of Sale web-app.

  1. Go to > Apps
  2. Create a new App
  3. Add the name of your app and associate it with a store you created earlier
  4. Customize your PoS by adding your own items with prices, photos, and a description.
  5. Click "Submit query".
  6. Click "View" to preview your app (Your customers can access the PoS through that link).

When creating a PoS app, it is essential that you enable cart option.

Now that the PoS is created, the last step is to add it to the home screen. This allows you to quickly access your app.

You can further customize the checkout (opens new window) or change the theme of the PoS (opens new window).

Add PoS to homescreen iOS:

Add PoS to homescreen Android:

# Don't buy Bitcoin - earn it

There you have it. I really hope that this quick tutorial enabled you to create a Point Of Sale app and accept Bitcoin in your store or online. Payments go directly to your wallet with no fees and if you self-host BTCPay, you're increasing privacy (opens new window) and security for yourself and customers by running a full node (opens new window).

If require more information, please refer to our extensive documentation. For questions, visit our community chat (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

This tutorial shows you how to create a Bitcoin Point of Sale and accept BTC payments (on-chain and via the Lightning Network). When you complete it, hopefully, you'll have a web-based PoS that requires no additional hardware. It will run as a web app from a browser of your mobile phone or tablet.

Most importantly, there will be no fees or intermediary. Customers will be presented with an invoice they have to pay from their wallet. The BTC you receive will go straight to your wallet. Optionally, you can enable tips and customize the percentage as well as the overall appearance of the PoS.

BTCPay Point Of Sale - a web-based app that allows you to receive Bitcoin payments with no intermediary or fees, from any old tablet or phone:

# Requirements

Before we dive into the guide, here are some requirements:

# Steps

  1. Deploy BTCPay Server
  2. Configure BTCPay (Register User, Create Store, Add Wallet)
  3. Create a PoS app
  4. Add PoS as to a home screen of your tablet or phone

# Step 1 - Deploying BTCPay

BTCPay Server is a free and open-source cryptocurrency payment processor (Hey, you're reading our blog!).

You've heard of WordPress, the Content Management System that allows people to build sites with ease.

BTCPay is a WordPress of finance. It allows you to become your own bank or payment processor with a complete self-hosted technology stack. It's free and the entire source code can be found on GitHub (opens new window).

There are many ways in which one can deploy BTCPay. I recommend that you check out extensive deployment documentation (opens new window).

Besides self-hosting, you can use someone else's server. That's called third-party hosting (opens new window). Majority of community members allow people to use their servers for free.  Make sure to understand risks that trusting a third-party brings.

Make sure to read our third-party documentation to understand why chose one over the other. Third-party servers come with some limitations, but you can use them for testing purposes.

To deploy a self-hosted BTCPay you can follow a tutorial below.

If you don't want to invest time and efforts into self-hosting a server at this point, you can just hop on to our demo server (opens new window) and go to step 2.

# Step 2 - Registering, creating a store, connecting a wallet

No matter if you decided to go with a self-hosted, a third-party host or our demo server, the rest of the setup is the same for all.

# 2.1 - Creating an account

Register an account on BTCPay Server by clicking the "Register" link in the top menu. Enter your credentials. Some hosts may require that you verify e-mail upon registration. For the self-hosted server, the first registered user is a server admin.

# 2.2 - Creating a store

Now that you're logged in, create a store. In BTCPay you can create an unlimited amount of stores. Each stores is unique entity and can be customized. The store is later tied to your wallet and whatever app you're creating.

Create a new store and give it a name. You'll see the message that the store is successfully created. If you wish, you can configure your store settings. For most people, the default setup is okay. Do not navigate away from the store settings, scroll down to configure your wallet.

Create a store and give it a name:

Store successfully created. If you wish you can customize basic settings, or just scroll down to connect your wallet:

# 2.3 - Connecting a wallet

As I already said, the beauty of using BTCPay is that there will be no fees on transaction, registration or membership. Furthermore, BTCPay does not require your private key. You're just adding an xpub key from your wallet.

  • BTCPay does not know nor has access to your private key
  • You're uploading xpubkey from external Bitcoin wallet - Electrum for example

There are two ways in which you can connect your BTCPay to your wallet:

  1. Automatic with Ledger Nano
  2. Manual with any wallet supporting xpub (Electrum (opens new window) recommended)

Input your xpub, then on the second screen, if you see a wrong address, input the first address of your wallet so that BTCPay can help you to configure correctly.

The video below explains how to connect your wallet to your BTCPay store.

If your BTCPay is self-hosted, you can enable Lightning Network payments (opens new window).

# Step 3 - Creating Point of Sale app

Once you created a store and connected a wallet to it, the fun part begins. In this step, we'll be creating a Point of Sale web-app.

  1. Go to > Apps
  2. Create a new App
  3. Add the name of your app and associate it with a store you created earlier
  4. Customize your PoS by adding your own items with prices, photos, and a description.
  5. Click "Submit query".
  6. Click "View" to preview your app (Your customers can access the PoS through that link).

When creating a PoS app, it is essential that you enable cart option.

Now that the PoS is created, the last step is to add it to the home screen. This allows you to quickly access your app.

You can further customize the checkout (opens new window) or change the theme of the PoS (opens new window).

Add PoS to homescreen iOS:

Add PoS to homescreen Android:

# Don't buy Bitcoin - earn it

There you have it. I really hope that this quick tutorial enabled you to create a Point Of Sale app and accept Bitcoin in your store or online. Payments go directly to your wallet with no fees and if you self-host BTCPay, you're increasing privacy (opens new window) and security for yourself and customers by running a full node (opens new window).

If require more information, please refer to our extensive documentation. For questions, visit our community chat (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/bitpaint-btcpay-server-stories/index.html b/bitpaint-btcpay-server-stories/index.html index 12df670b..b5d1f50b 100644 --- a/bitpaint-btcpay-server-stories/index.html +++ b/bitpaint-btcpay-server-stories/index.html @@ -12,7 +12,7 @@ - + @@ -65,7 +65,7 @@ I can't wait for “Lightning Bank (opens new window)” to be able to setup Lightning wallets for my friends and family.

Bitcoin graffiti - By Bitpaint

# Future thoughts


In your opinion, as an Artist and Virtual World creator, does BTCPay Server have it's place in helping your community (Artists, content creators of all sorts) ?

Well I think that a better Patreon-like page would be amazing! Content creators that don't really want to sell things but rather be funded by their community that are willing to pay a few sats per month just to support the work and make it possible. I think the BTCPay Server Foundation is a nice example of this kind of funding.

I'm always sad to see “Bitcoiners” asking their community to subscribe via Patreon, so maybe BTCPay Server can make this obsolete too.

What feature/use-case would you like to see implemented/developed in or on top of BTCPay Server for it to become (even more) suitable for the artistic scene ?

I'd like to have a easier way to install BTCPay on a Raspberry Pi4 for less tech savvy users. And I already touched on this above, but I'm really bullish on Lightning Bank (opens new window), it's a huge feature!

Where can our readers find you ?

You can find me on the internet:

DM's are opens! -Thank you a lot for this interview!


If you’d like to help us tell your story next, join our community chat (opens new window) and let us know.

Last Updated: 10/30/2024, 2:38:33 PM

+Thank you a lot for this interview!


If you’d like to help us tell your story next, join our community chat (opens new window) and let us know.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/brian-harrington-btcpay-server-stories/index.html b/brian-harrington-btcpay-server-stories/index.html index 9229ddd0..f92c5362 100644 --- a/brian-harrington-btcpay-server-stories/index.html +++ b/brian-harrington-btcpay-server-stories/index.html @@ -12,7 +12,7 @@ - + @@ -58,7 +58,7 @@ I met any other Bitcoiners in real life for the first time in 2019. Sherin and I were there at the first meet up of the Orange County Bitcoin Network.

How did you connect your work, passions (Film producing and campaigns) and family life with Bitcoin ?

So from a marketing, and personal branding level I’ve never really wanted to compartmentalize my life. An article by Tim Ferris called The Top 5 Reasons to Be a Jack of All Trades (opens new window) had a big impact on me after graduating college and I also read a book called Never Eat Alone (opens new window) by Keith Ferrazi that made networking a really big part of my life.

Those concepts combined with the fact that I didn’t feel like making separate websites for my film producing and my political consulting so I just put it all up at brianharrington.org (opens new window) because I’m proud of what I’ve been able to do in both worlds and I think they are connected.

Bitcoin then naturally fit into my site as well because something that Politics, Entertainment, and Bitcoin all have in common is that they are influential.

That’s really been the driving force of the way I connect my work, passions and my family all together is I want to have influence and I want the people around me to have influence so that we are not at the whims of this world.

My faith and belief in Jesus plays into a lot of the way my mind works as well. I truly believe I was created for a reason and I believe everyone reading this was created for a reason. I don’t believe it’s random that we’re alive at this very moment during this time in history and I’m thankful to be alive and thankful to be an agent for change.

# Meeting BTCPay Server


In your voyage through the Bitcoin space, when did you encounter BTCPay Server for the fist time ?

At one point I heard about it all the time from people tweeting about it and podcasts. In the same period I watched the panel between Open Node and BTCPay Server at Baltic Honeybadger 2019 (opens new window) I think on Youtube and I had met the Open Node team at a meet up out here so I had loosely heard about BTCPay Server and was up to speed on the whole thing from an observer perspective.

I had Open Node installed on my site back then but was really only using it as more like a tippin.me thing for fun.

However fast-forward to March 2020:

What really changed the game for me and made me have deeper interest in BTCPay Server was all these government lockdowns that we’re seeing. I really don’t appreciate the way small and medium sized businesses are being treated right now and that made me really start to think about how Bitcoin can start providing freedom today.

It really was like a light switch that turned on in my head that said all the tools are in place for me to stop taking checks and start taking Bitcoin. When the Strike app came out in the US that allows people to pay a bitcoin QR code with fiat that made me think it was possible even more so to just stop taking checks.

How do you use and promote BTCPay Server ?

I use BTCPay Server on my own site in the footer at brianharrington.org (opens new window) and don’t take checks anymore for my consulting work. When people from Orange County Bitcoin Network want to know more about BTCPay Server I send them to brianharrington.org/xpub and I put real beer on the line so they can try it out.

https://twitter.com/BrainHarrington/status/1310986298446868481

You seem to be fully committed to the Bitcoin Circular Economy. In your opinion, does BTCPay Server fit in that pattern ? How ?

"I think the killer app of BTCPay Server is it lets you earn Bitcoin. Period."

Absolutely I think the killer app of BTCPay Server is it lets you earn Bitcoin. Period. BTCPay Server turns any business into a Bitcoin business. That’s it, that’s the high level one sentence pitch.

# BTCPay Server's future


What feature/use-case would you like BTCPay Server to implement/develop to become even more suitable for a Bitcoin Circular Economy ?

"A trend we’re going to see is a few stores getting together and having someone run the server for their group"

In my opinion, just keep making the GUI better and better. -A current hurdle I’m on is I don’t know how to turn on the email notifications for when I get paid.

I think a trend we’re going to see is a few stores getting together and having someone run the server for their group of stores so more tools to help separate out lightning payments between stores running off the same node.

And I love how Ride the Lightning (opens new window) comes pre-installed as well, getting loop-out working is another thing that is up next for me to learn.

On this topic also we all need to pump the One Click Luna Node installation (opens new window), big thanks to BTC Pins for walking me through that for the first time.

Where can our readers find you ?

Appreciate the opportunity and thanks for the time you’re taking to put this info up.


If you’d like to help us tell your story next, join our community chat (opens new window) and let us know.

Last Updated: 10/30/2024, 2:38:33 PM

+A current hurdle I’m on is I don’t know how to turn on the email notifications for when I get paid.

I think a trend we’re going to see is a few stores getting together and having someone run the server for their group of stores so more tools to help separate out lightning payments between stores running off the same node.

And I love how Ride the Lightning (opens new window) comes pre-installed as well, getting loop-out working is another thing that is up next for me to learn.

On this topic also we all need to pump the One Click Luna Node installation (opens new window), big thanks to BTC Pins for walking me through that for the first time.

Where can our readers find you ?

Appreciate the opportunity and thanks for the time you’re taking to put this info up.


If you’d like to help us tell your story next, join our community chat (opens new window) and let us know.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-1-0-3-127-released/index.html b/btcpay-1-0-3-127-released/index.html index 2ed5d603..66981c8e 100644 --- a/btcpay-1-0-3-127-released/index.html +++ b/btcpay-1-0-3-127-released/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

Today, we're proud to announce another BTCPay Server release - 1.0.3.127.

The new version introduces a novelty feature - wallet labels and comments, fixes several minor bugs, brings UI/UX improvements and most importantly patches a security vulnerability that affects third-party hosts.

Notice

If you're a third-party BTCPay Server host (opens new window) (User registration enabled in Server Settings > Policies) it's highly recommend that you update (opens new window) your BTCPay instance to the latest version.

We will post a full security vulnerability disclosure once we are sure enough time was given to third-party hosts to update.

# Wallet labels

The highlight of the release are wallet labels and comments. We've enhanced user experience in the internal web wallet (opens new window) by adding labeling option. Labels enables easier managmend, filtering and distiniqushing of the transactions in the wallet.

In the future, we plan to add smart labels, which will automatically be assigned based on a certain filter, order or an app id. Eventually, the labels will be implemented in the wallet sending, allowing users better control of their UTXO and bringing privacy enchancements.

# Wallet Comments

Sometimes, labels don't give enough context, so we've added custom comments for each outgoing or incoming transaction in the wallet. By clicking on the comment icon, each transaction now has an optional text field.

# 1.0.3.127 Changelog

BTCPay community keeps growing. With each release the number of contributors increases. We're thankful to our contributors who continuously improve ensuring an open future for businesses and individuals regardless of geographic, political or financial barriers.

If you're a new or an experienced developer willing to contribute to BTCPay, we're organizing free coding sessions this month, so join us on our chat in #development (opens new window) channel.

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Today, we're proud to announce another BTCPay Server release - 1.0.3.127.

The new version introduces a novelty feature - wallet labels and comments, fixes several minor bugs, brings UI/UX improvements and most importantly patches a security vulnerability that affects third-party hosts.

Notice

If you're a third-party BTCPay Server host (opens new window) (User registration enabled in Server Settings > Policies) it's highly recommend that you update (opens new window) your BTCPay instance to the latest version.

We will post a full security vulnerability disclosure once we are sure enough time was given to third-party hosts to update.

# Wallet labels

The highlight of the release are wallet labels and comments. We've enhanced user experience in the internal web wallet (opens new window) by adding labeling option. Labels enables easier managmend, filtering and distiniqushing of the transactions in the wallet.

In the future, we plan to add smart labels, which will automatically be assigned based on a certain filter, order or an app id. Eventually, the labels will be implemented in the wallet sending, allowing users better control of their UTXO and bringing privacy enchancements.

# Wallet Comments

Sometimes, labels don't give enough context, so we've added custom comments for each outgoing or incoming transaction in the wallet. By clicking on the comment icon, each transaction now has an optional text field.

# 1.0.3.127 Changelog

BTCPay community keeps growing. With each release the number of contributors increases. We're thankful to our contributors who continuously improve ensuring an open future for businesses and individuals regardless of geographic, political or financial barriers.

If you're a new or an experienced developer willing to contribute to BTCPay, we're organizing free coding sessions this month, so join us on our chat in #development (opens new window) channel.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-1-0-3-137-released/index.html b/btcpay-1-0-3-137-released/index.html index 3e0dd85b..ec306dab 100644 --- a/btcpay-1-0-3-137-released/index.html +++ b/btcpay-1-0-3-137-released/index.html @@ -12,7 +12,7 @@ - + @@ -56,7 +56,7 @@ cd btcpayserver-docker export BTCPAYGEN_LIGHTNING="eclair" . ./btcpay-setup.sh -i -
1
2
3
4

Please be aware that you currently need to enable txindex=1 to use the Eclair implementation however the Eclair(ACINQ) team is working towards removing that requirement.

# ElectrumX support

Our contributor Maltokyo (opens new window) added ElectrumX (opens new window) support to BTCPay docker. As a result, if you are using Electrum as an external wallet, you no longer have to leak information to random, public servers. Instead, you can connect your wallet to your own bitcoin full node within BTCPay. However, this will only work for non-pruned nodes. The documentation on how to connect Electrum to your BTCPay via ElectrumX will be released in the next few days.

# Thank you to our contributors

Huge thanks go to our contributors, supporters and community who made this release possible. We appreciate every single contribution, that comes in many different forms.

Special thanks to developers:

How to update to 1.0.3.137?

To update (opens new window) to the latest version, go to your BTCPay > Server Settings > Maintenance > Update.

If you encounter any issues with this version, or need assistance, please report it on our community chat (opens new window) or on our GitHub (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+

1
2
3
4

Please be aware that you currently need to enable txindex=1 to use the Eclair implementation however the Eclair(ACINQ) team is working towards removing that requirement.

# ElectrumX support

Our contributor Maltokyo (opens new window) added ElectrumX (opens new window) support to BTCPay docker. As a result, if you are using Electrum as an external wallet, you no longer have to leak information to random, public servers. Instead, you can connect your wallet to your own bitcoin full node within BTCPay. However, this will only work for non-pruned nodes. The documentation on how to connect Electrum to your BTCPay via ElectrumX will be released in the next few days.

# Thank you to our contributors

Huge thanks go to our contributors, supporters and community who made this release possible. We appreciate every single contribution, that comes in many different forms.

Special thanks to developers:

How to update to 1.0.3.137?

To update (opens new window) to the latest version, go to your BTCPay > Server Settings > Maintenance > Update.

If you encounter any issues with this version, or need assistance, please report it on our community chat (opens new window) or on our GitHub (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-day-2019/index.html b/btcpay-day-2019/index.html index 0793c976..1158dccd 100644 --- a/btcpay-day-2019/index.html +++ b/btcpay-day-2019/index.html @@ -12,7 +12,7 @@ - + @@ -54,7 +54,7 @@ GitHub (opens new window)

On the 16th of September, we're organizing a BTCPay Day. The full-day event will be packed with presentations from well-known community members and workshops for developers, entrepreneurs or just regular Joes who would like to learn something new.

The event will be held in Riga (Latvia), the day after the Baltic Honeybadger conference. BTCPay Day starts at 11:00 EEST (opens new window). The event will be hosted at the CryptoCash Riga Office (Elizabetes iela 22) (opens new window).

Book a ticket (opens new window)

There will be something for everyone. Our goal is to bring the community together and show the possibilities but also meet in a relaxing environment to discuss, brainstorm, code and learn together.

# Location and Time

Starts: 11:00 EEST (opens new window) Location: Elizabetes iela 22 (City Center) (opens new window)

# Agenda

  • 11:00 - Start, chit-chat, and gifts for attendees.
  • 11:30 - CryptoCash introductory
  • 11:45 - Introduction to BTCPay - Pavlenex
  • 12:00 - BTCPay Vision - Nicolas Dorier
  • 12:30 - BTCPay on Raspberry Pi - Nicolas Dorier
  • 13:00 - Surprise Guest
  • 13:30 - Bulletproof BTCPay - Ketominer from Nodl
  • 14:00-15:30 - lunch break
  • 15:30 - Christian Moss - Lightning, Mobile and Tor
  • 16:00 - BTCPay Transmuter and the new API - Kukks
  • 16:30-19:00 - Workshops

There will be workshop corners where people can sit, develop, build or simply brainstorm their new business venture. -The available workshops are:

  • Deploying BTCPay
  • BTCPay development environment
  • BTCPay Hardware deployment demos
  • BTCPay Integrations demo
  • Business ideas

Images below are from CryptoCash Riga Facebook page. (opens new window)

# Early Bird Tickets available

To ensure the quality of interactions and that enough time is dedicated to each attendee, we're limiting the event to only 40 spots. We've attached a symbolic fee to reduce RSVP spam of 5EUR for the first 20 tickets and 10EUR for the remaining tickets. We'll be using the proceeds from the ticket sales towards the event.

You can book a ticket at day.btcpayserver.org. (opens new window) You will be taken to a page where you can make a purchase. Please make sure to provide a valid e-mail address on the invoice page since you will be receiving your ticket details there. Due to the limited amount of tickets, please buy a ticket only if you're certain you can and will attend.

This is our first event, and we can't wait to meet all of you there. All of our core contributors and many other active members of the community from all over the world will be attending. This will be a day when we'll finally all meet each other after 2 years of building BTCPay together. See you in Riga!

This event would not be possible without CryptoCash (opens new window) and HodlHodl (opens new window). HodlHodl helped with the event planning and CryptoCash provided us with the amazing office-space free of charge. In their office space, during BTCPay Day, you'll be able to buy and sell Bitcoin, get t-shirts or a hardware wallet. We would like to thank both companies for making BTCPay Day possible.

For any questions, contact us at btcpayday@btcpayserver.org or on our Mattermost Chat (opens new window)

Book a ticket (opens new window)

Last Updated: 10/30/2024, 2:38:33 PM

+The available workshops are:

  • Deploying BTCPay
  • BTCPay development environment
  • BTCPay Hardware deployment demos
  • BTCPay Integrations demo
  • Business ideas

Images below are from CryptoCash Riga Facebook page. (opens new window)

# Early Bird Tickets available

To ensure the quality of interactions and that enough time is dedicated to each attendee, we're limiting the event to only 40 spots. We've attached a symbolic fee to reduce RSVP spam of 5EUR for the first 20 tickets and 10EUR for the remaining tickets. We'll be using the proceeds from the ticket sales towards the event.

You can book a ticket at day.btcpayserver.org. (opens new window) You will be taken to a page where you can make a purchase. Please make sure to provide a valid e-mail address on the invoice page since you will be receiving your ticket details there. Due to the limited amount of tickets, please buy a ticket only if you're certain you can and will attend.

This is our first event, and we can't wait to meet all of you there. All of our core contributors and many other active members of the community from all over the world will be attending. This will be a day when we'll finally all meet each other after 2 years of building BTCPay together. See you in Riga!

This event would not be possible without CryptoCash (opens new window) and HodlHodl (opens new window). HodlHodl helped with the event planning and CryptoCash provided us with the amazing office-space free of charge. In their office space, during BTCPay Day, you'll be able to buy and sell Bitcoin, get t-shirts or a hardware wallet. We would like to thank both companies for making BTCPay Day possible.

For any questions, contact us at btcpayday@btcpayserver.org or on our Mattermost Chat (opens new window)

Book a ticket (opens new window)

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-day-2022-riga/index.html b/btcpay-day-2022-riga/index.html index 4924f60c..2b4c5b8f 100644 --- a/btcpay-day-2022-riga/index.html +++ b/btcpay-day-2022-riga/index.html @@ -12,7 +12,7 @@ - + @@ -53,7 +53,7 @@ (opens new window) GitHub (opens new window)

The year is 2019. BTCPay Server is a relatively new project, barely out of its infancy phase. The contributors had never even met each other in person. It's a handful of weirdos who keep pushing commits. In hindsight, it's surreal that people from three continents worked together on a piece of software every day for two years and never saw each other in real life! -We had to do something about that. The executive order was: "All contributors immediately leave coding caves, board a plane, and let’s paaaaarty with friends." 🥳

We’ve picked Riga, the capital of Latvia, and the famous bitcoin-only Baltic Honeybadger conference (opens new window) as perfect locations for the event. With the immense help of organizers, we made it happen. You could have felt the love and energy in the air if you were there. It wasn’t the most organized event. We can now tell you that we hadn’t slept that night because we were trying to come up with presentations for the morning. We thought no one would show up. We had so many “what–ifs” that we just ended up panicking until the morning.

The event kicked off with our friend Vortex making a remote appearance and blessing the crowd, then Emperor Nicolas had a blue screen of death during his keynote, and our evil-scientists Kukks had a bit too much of Jack Daniels to kill the tension. Still, he killed the presentation when he announced the new API and transmuter. People started coming in, and the event was packed. We had people outside of the building listening to presentations. The funniest thing was that Nopara73, who was a “surprise guest,” didn’t even know he was a surprise guest and kept asking us who the surprise guest was.

Despite all the imperfections, BTCPay Day 2019 (opens new window) was a turning point for the project. It was after that day that most of us realized we want to be fully committed to building a software that ensures an open financial future for anyone, regardless of the political, economical or social barriers. We realized we’re living and breathing BTCPay, and we want to do whatever it takes to keep doing it.

If all those moments from Riga could fit in a picture, it would be this one.

Or if you want to get freaky, then maybe this one.

# BTCPay Day Riga 2022

Back to 2022. Things haven’t been bread and butter always, but here we are; 3 years later, BTCPay is stronger than ever. It has become a synonym for an open-source bitcoin project, an equivalence for a piece of software that the entire community loves and supports. It may sound cliche, but who knows how things could have turned out for the project if there wasn't for Riga and BTCPay Day 2019.

In 2 weeks, BTCPay Server is hitting its 5th birthday. The community, the team, and the user base have grown since the last time we had a chance to meet each other. The amount of improvements and releases is something we won’t even bother counting. It’s time to throw a party again! It’s time for a new executive order.

"All BTCPay contributors, community members, supporters and friends of the project on September the 5th, make sure to leave your caves, board a plane, and let’s paaaaarty with friends." 🥳

We’re incredibly excited to announce another BTCPay Server Day Riga 2022!

A full day dedicated to BTCPay Server, a side event of the Baltic Honeybadger conference. We've gone above and beyond to bring as many contributors as possible to the event. For most of the team, this will be the first time they meet each other. The event aims to gather all people who care about BTCPay and have been a part of the journey.

Without the community, there would be no BTCPay, so on September 5th, 2022, in Riga, we'd love to celebrate the community! You can expect many familiar faces at the event, special guests, and people who have hugely impacted BTCPay. We'll have a few presentations, workshops, demos, and direct interaction with all of you attending. We deeply care about your needs, experiences, and use-cases. We'll try to share ideas and together brainstorm what's next for BTCPay!

Even if you haven’t been directly involved with the project, if you used it, spread the word, or onboarded a merchant, you’ve helped this project evolve, and for that, we’re thankful.

💚 🇱🇻

We’d love to have you join us in celebrating 5 years of BTCPay Day! Here’s how you can grab a symbolically priced ticket.

# Location and Time

  • Date: September 5th 2022
  • Location: OraculeTang Space (opens new window)
  • Address: Doma laukums 2, Rīga, LV-1050
  • Time: 14:00-19:00 (Local time)
  • Tickets: https://day.btcpayserver.org

# Early Bird Tickets available

To ensure the quality of interactions and that enough time is dedicated to each attendee, we're limiting the attendance. We've attached a symbolic fee to reduce RSVP spam of 21EUR. We'll be using the proceeds from the ticket sales towards the event.

You can book a ticket at day.btcpayserver.org. (opens new window) You will be taken to a page where you can make a purchase. Please make sure to provide a valid e-mail address on the invoice page since you will be receiving your ticket details there. Due to the limited amount of tickets, please buy a ticket only if you're certain you can and will attend.

This event would not be possible without our supporters and the Baltic Honeybadger (opens new window) organizers.

For any questions, contact us at btcpayday@btcpayserver.org or on our Mattermost Chat (opens new window)

Book a ticket (opens new window)

Last Updated: 10/30/2024, 2:38:33 PM

+We had to do something about that. The executive order was: "All contributors immediately leave coding caves, board a plane, and let’s paaaaarty with friends." 🥳

We’ve picked Riga, the capital of Latvia, and the famous bitcoin-only Baltic Honeybadger conference (opens new window) as perfect locations for the event. With the immense help of organizers, we made it happen. You could have felt the love and energy in the air if you were there. It wasn’t the most organized event. We can now tell you that we hadn’t slept that night because we were trying to come up with presentations for the morning. We thought no one would show up. We had so many “what–ifs” that we just ended up panicking until the morning.

The event kicked off with our friend Vortex making a remote appearance and blessing the crowd, then Emperor Nicolas had a blue screen of death during his keynote, and our evil-scientists Kukks had a bit too much of Jack Daniels to kill the tension. Still, he killed the presentation when he announced the new API and transmuter. People started coming in, and the event was packed. We had people outside of the building listening to presentations. The funniest thing was that Nopara73, who was a “surprise guest,” didn’t even know he was a surprise guest and kept asking us who the surprise guest was.

Despite all the imperfections, BTCPay Day 2019 (opens new window) was a turning point for the project. It was after that day that most of us realized we want to be fully committed to building a software that ensures an open financial future for anyone, regardless of the political, economical or social barriers. We realized we’re living and breathing BTCPay, and we want to do whatever it takes to keep doing it.

If all those moments from Riga could fit in a picture, it would be this one.

Or if you want to get freaky, then maybe this one.

# BTCPay Day Riga 2022

Back to 2022. Things haven’t been bread and butter always, but here we are; 3 years later, BTCPay is stronger than ever. It has become a synonym for an open-source bitcoin project, an equivalence for a piece of software that the entire community loves and supports. It may sound cliche, but who knows how things could have turned out for the project if there wasn't for Riga and BTCPay Day 2019.

In 2 weeks, BTCPay Server is hitting its 5th birthday. The community, the team, and the user base have grown since the last time we had a chance to meet each other. The amount of improvements and releases is something we won’t even bother counting. It’s time to throw a party again! It’s time for a new executive order.

"All BTCPay contributors, community members, supporters and friends of the project on September the 5th, make sure to leave your caves, board a plane, and let’s paaaaarty with friends." 🥳

We’re incredibly excited to announce another BTCPay Server Day Riga 2022!

A full day dedicated to BTCPay Server, a side event of the Baltic Honeybadger conference. We've gone above and beyond to bring as many contributors as possible to the event. For most of the team, this will be the first time they meet each other. The event aims to gather all people who care about BTCPay and have been a part of the journey.

Without the community, there would be no BTCPay, so on September 5th, 2022, in Riga, we'd love to celebrate the community! You can expect many familiar faces at the event, special guests, and people who have hugely impacted BTCPay. We'll have a few presentations, workshops, demos, and direct interaction with all of you attending. We deeply care about your needs, experiences, and use-cases. We'll try to share ideas and together brainstorm what's next for BTCPay!

Even if you haven’t been directly involved with the project, if you used it, spread the word, or onboarded a merchant, you’ve helped this project evolve, and for that, we’re thankful.

💚 🇱🇻

We’d love to have you join us in celebrating 5 years of BTCPay Day! Here’s how you can grab a symbolically priced ticket.

# Location and Time

  • Date: September 5th 2022
  • Location: OraculeTang Space (opens new window)
  • Address: Doma laukums 2, Rīga, LV-1050
  • Time: 14:00-19:00 (Local time)
  • Tickets: https://day.btcpayserver.org

# Early Bird Tickets available

To ensure the quality of interactions and that enough time is dedicated to each attendee, we're limiting the attendance. We've attached a symbolic fee to reduce RSVP spam of 21EUR. We'll be using the proceeds from the ticket sales towards the event.

You can book a ticket at day.btcpayserver.org. (opens new window) You will be taken to a page where you can make a purchase. Please make sure to provide a valid e-mail address on the invoice page since you will be receiving your ticket details there. Due to the limited amount of tickets, please buy a ticket only if you're certain you can and will attend.

This event would not be possible without our supporters and the Baltic Honeybadger (opens new window) organizers.

For any questions, contact us at btcpayday@btcpayserver.org or on our Mattermost Chat (opens new window)

Book a ticket (opens new window)

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-day-riga-2019-recap/index.html b/btcpay-day-riga-2019-recap/index.html index 865d5d0f..c7da837b 100644 --- a/btcpay-day-riga-2019-recap/index.html +++ b/btcpay-day-riga-2019-recap/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

We’re back from Riga! The Baltic Honeybadger 2019 was a life-changing experience for many of us. It was the first time for the team and for the community to meet in person after 2 years of work on the software.

On the first day, Nicolas Dorier announced (opens new window) the BTCPay Foundation (opens new window) and our first grant from Square Crypto (opens new window). The ovation from the audience and heartwarming congratulations and words of encouragement, made us feel special throughout our entire stay in Riga. We really appreciate all the support and especially all the extra beers and shots. Unfortunately, we haven't seen much of Riga since we were focused on coding, fixing, brainstorming, and also preparing for the first BTCPay Server official event, the BTCPay Day.

The idea behind BTCPay Day at first was to have a small office where our core team can work for a day and have time to meet each other. However, it grew organically and spread throughout community, that we had to expand it. Thanks to HodlHodl, CryptoCash and PayBis, we were able to get an entire office space free of charge.

CryptoCash and PayBis office entry stand

BTCPay Day (opens new window) kicked-off on Monday, in the wonderful office space of CryptoCash (opens new window) and PayBis (opens new window). The event was packed throughout the day. People were greeted at the door and stickers and t-shirts were given away to attendees.

The event started at 11:30 with Vortex (opens new window) welcoming everyone and blessing the event. Vortex has provided lots of support to the project from day one and brought plenty of positivity and vibes, but has also channeled the energy of people who later become essential contributors, such as brittttt (opens new window).

Vortex blessing the conference

Konstantin from CryptoCash and PayBis, our host, did an opening intro and introduced guests with their businesses and gave a bit of insight into Bitcoin adoption in Latvia.

Konstantin (PayBis and CryptoCash)

Next was, Pavlenex (opens new window) with “Introduction to BTCPay Server”. The focus of his talk was a quick explanation of what BTCPay was, is, and can be. Pavlenex presented BTCPay as a freedom toolbox which allows you to use tools inside to fix and improve your life or buidl bridges and entire businesses on top of BTCPay.

Introduction to BTCPayServer by Pavlenex (opens new window) | (opens new window) (opens new window)Video (opens new window) | Slides (opens new window)

Next on stage was Nicolas Dorier who started his presentation with a bang – literally. His PC crashed and opened floodgates to Windows crashing jokes. Nicolas' talk was divided into three parts. The first part, "BTCPay - Be Like Water" was a philosophical overview of how to build and manage the FOSS community.

After that, Nicolas announced hack0, an early version of BTCPay in a box, built by DG Labs in cooperation with Shift CryptoSecurity. The presentation evoked lots of good questions and all five early prototype units (signature edition) were sold out at the event. Final presentation was brief overview of the earlier announcement of the foundation and SquareCrypto grant.

Our surprise guest was Adam Fiscor (opens new window) from Wasabi Wallet. His presence was such a well-kept secret that at some point, Adam himself tried to guess who the surprise guest was. Adam’s talk was quite different than what we’re used to from him. It revolved around statistics of 4 different code-bases and interacted with the audience by asking them to attempt to guess the project. The projects mentioned were Bitcoin Core, Wasabi, NBitcoin & BTCPay Server.

NBitcoin, BTCPay, Wasabi Wallet by nopara73 (opens new window) | Video | Slides (opens new window)

Ketominer (opens new window) is the co-founder of Nodl (opens new window), a bitcoin personal assistant hardware device. Nodl was one of the first to package BTCPay Server in a portable hardware device and has been a valuable member of the community for a long time. His technical talk "Bulletproof BTCPay" revolved around security and infrastructure.

Ketominer announced their upcoming cloud version of Nodl, offering an enterprise-grade hosting solution for BTCPay Server and other Nodl supported services. Their newer Nodl hardware device prototype was also briefly displayed and its improvements explained.

Bulletproof BTCPay by ketominer (opens new window)

After the lunch break, Christian Moss presented Nayuta (opens new window), a new non-custodial bitcoin and Lightning wallet with BTCPay and Tor support, together with the ability to connect it to your full node.

Nayuta Wallet by MandelDuck (opens new window) | Video (opens new window) | Slides (opens new window)

Kukks (opens new window) was on last, and showcased his latest crazy ideas & features for BTCPay Server. The GreenField API will open up BTCPay Server for an array of new business use-cases while BTC Transmuter will allow merchants to achieve fiat settlement on their stores without needing a custodial payment processor.

BTCPay Greenfield API and Transmuter by Kukks (opens new window) | Video (opens new window) | Slides (opens new window)

Everyone was having such a great time talking to each other, so we just let people enjoy the conversations and brainstorming. The Nodl team (Ketominer (opens new window) and IAskuwheteau (opens new window)) managed to set up Nodl and BTCPay which is now used as PoS at CryptoCash office.

Special thanks

We would like to thank everyone who came and supported the event.

Inspired by the success of our first event, we've decided to have more of these events in the future.

A picture is worth 1000 words. 💚

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

We’re back from Riga! The Baltic Honeybadger 2019 was a life-changing experience for many of us. It was the first time for the team and for the community to meet in person after 2 years of work on the software.

On the first day, Nicolas Dorier announced (opens new window) the BTCPay Foundation (opens new window) and our first grant from Square Crypto (opens new window). The ovation from the audience and heartwarming congratulations and words of encouragement, made us feel special throughout our entire stay in Riga. We really appreciate all the support and especially all the extra beers and shots. Unfortunately, we haven't seen much of Riga since we were focused on coding, fixing, brainstorming, and also preparing for the first BTCPay Server official event, the BTCPay Day.

The idea behind BTCPay Day at first was to have a small office where our core team can work for a day and have time to meet each other. However, it grew organically and spread throughout community, that we had to expand it. Thanks to HodlHodl, CryptoCash and PayBis, we were able to get an entire office space free of charge.

CryptoCash and PayBis office entry stand

BTCPay Day (opens new window) kicked-off on Monday, in the wonderful office space of CryptoCash (opens new window) and PayBis (opens new window). The event was packed throughout the day. People were greeted at the door and stickers and t-shirts were given away to attendees.

The event started at 11:30 with Vortex (opens new window) welcoming everyone and blessing the event. Vortex has provided lots of support to the project from day one and brought plenty of positivity and vibes, but has also channeled the energy of people who later become essential contributors, such as brittttt (opens new window).

Vortex blessing the conference

Konstantin from CryptoCash and PayBis, our host, did an opening intro and introduced guests with their businesses and gave a bit of insight into Bitcoin adoption in Latvia.

Konstantin (PayBis and CryptoCash)

Next was, Pavlenex (opens new window) with “Introduction to BTCPay Server”. The focus of his talk was a quick explanation of what BTCPay was, is, and can be. Pavlenex presented BTCPay as a freedom toolbox which allows you to use tools inside to fix and improve your life or buidl bridges and entire businesses on top of BTCPay.

Introduction to BTCPayServer by Pavlenex (opens new window) | (opens new window) (opens new window)Video (opens new window) | Slides (opens new window)

Next on stage was Nicolas Dorier who started his presentation with a bang – literally. His PC crashed and opened floodgates to Windows crashing jokes. Nicolas' talk was divided into three parts. The first part, "BTCPay - Be Like Water" was a philosophical overview of how to build and manage the FOSS community.

After that, Nicolas announced hack0, an early version of BTCPay in a box, built by DG Labs in cooperation with Shift CryptoSecurity. The presentation evoked lots of good questions and all five early prototype units (signature edition) were sold out at the event. Final presentation was brief overview of the earlier announcement of the foundation and SquareCrypto grant.

Our surprise guest was Adam Fiscor (opens new window) from Wasabi Wallet. His presence was such a well-kept secret that at some point, Adam himself tried to guess who the surprise guest was. Adam’s talk was quite different than what we’re used to from him. It revolved around statistics of 4 different code-bases and interacted with the audience by asking them to attempt to guess the project. The projects mentioned were Bitcoin Core, Wasabi, NBitcoin & BTCPay Server.

NBitcoin, BTCPay, Wasabi Wallet by nopara73 (opens new window) | Video | Slides (opens new window)

Ketominer (opens new window) is the co-founder of Nodl (opens new window), a bitcoin personal assistant hardware device. Nodl was one of the first to package BTCPay Server in a portable hardware device and has been a valuable member of the community for a long time. His technical talk "Bulletproof BTCPay" revolved around security and infrastructure.

Ketominer announced their upcoming cloud version of Nodl, offering an enterprise-grade hosting solution for BTCPay Server and other Nodl supported services. Their newer Nodl hardware device prototype was also briefly displayed and its improvements explained.

Bulletproof BTCPay by ketominer (opens new window)

After the lunch break, Christian Moss presented Nayuta (opens new window), a new non-custodial bitcoin and Lightning wallet with BTCPay and Tor support, together with the ability to connect it to your full node.

Nayuta Wallet by MandelDuck (opens new window) | Video (opens new window) | Slides (opens new window)

Kukks (opens new window) was on last, and showcased his latest crazy ideas & features for BTCPay Server. The GreenField API will open up BTCPay Server for an array of new business use-cases while BTC Transmuter will allow merchants to achieve fiat settlement on their stores without needing a custodial payment processor.

BTCPay Greenfield API and Transmuter by Kukks (opens new window) | Video (opens new window) | Slides (opens new window)

Everyone was having such a great time talking to each other, so we just let people enjoy the conversations and brainstorming. The Nodl team (Ketominer (opens new window) and IAskuwheteau (opens new window)) managed to set up Nodl and BTCPay which is now used as PoS at CryptoCash office.

Special thanks

We would like to thank everyone who came and supported the event.

Inspired by the success of our first event, we've decided to have more of these events in the future.

A picture is worth 1000 words. 💚

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-documentary-my-trust-in-you-is-broken/index.html b/btcpay-documentary-my-trust-in-you-is-broken/index.html index 2fb2a6da..10309d7f 100644 --- a/btcpay-documentary-my-trust-in-you-is-broken/index.html +++ b/btcpay-documentary-my-trust-in-you-is-broken/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

Premiere:

For years there has been an un-answered post in r/bitcoin, where is the blocksize wars documentary? My Trust In You Is Broken is an attempt to answer a part of that history by telling Nicolas Dorier’s story of starting BTCPay Server.

In 2017 Bitpay tried to force its users to adopt Segwit2x in collusion with the “big blocker” companies and influencers. This 42 minute feature documentary shows why it’s important to verify your transactions and what can happen if you let others become your trusted 3rd.

Official production began at the Miami Bitcoin Conference of 2023. BTCPay Server Contributors helped many Bitcoin conferences onboard event merchants and new Bitcoiners. Most importantly this story documents the evolution of Bitcoin as a medium of exchange with Bitcoinize (opens new window) point-of-sale devices.

Though most of the filming takes place at Bitcoin events much of the story is told through BTCPay contributor interviews and important moments recorded from 2015 - 2019 on podcasts and keynotes during the blocksize wars.

The first-ever screening of My Trust In You Is Broken will take place at the Bitcoin Film Fest in Warsaw, Poland (opens new window). We hope to see you there and if you cannot join the European Halving Party with us, digital tickets to the event will let you watch all of the movies from BFF including My Trust In You Is Broken for 42 days.

# Description for Press

"My Trust In You Is Broken" is a Feature Documentary by Parker Worthington (opens new window). It chronicles the tumultuous origins of Bitcoin as a payments system and highlights Nicolas Dorier's significant role. Reacting against BitPay's direction in the Bitcoin Block Size Wars and their support for SegWit2x, Dorier created BTCPay Server. This free, open-source platform allows merchants to accept Bitcoin directly and independence from intermediaries. Despite the ambiguity in its adoption scale, BTCPay Server is known for its community-driven model, privacy, and autonomy features. The film emphasizes Dorier's pivotal role in contributing to Bitcoin merchant adoption and the perils of trusted third parties.

For more information: https://bitcoinfilmfest.com/bff2024/ (opens new window)

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Premiere:

For years there has been an un-answered post in r/bitcoin, where is the blocksize wars documentary? My Trust In You Is Broken is an attempt to answer a part of that history by telling Nicolas Dorier’s story of starting BTCPay Server.

In 2017 Bitpay tried to force its users to adopt Segwit2x in collusion with the “big blocker” companies and influencers. This 42 minute feature documentary shows why it’s important to verify your transactions and what can happen if you let others become your trusted 3rd.

Official production began at the Miami Bitcoin Conference of 2023. BTCPay Server Contributors helped many Bitcoin conferences onboard event merchants and new Bitcoiners. Most importantly this story documents the evolution of Bitcoin as a medium of exchange with Bitcoinize (opens new window) point-of-sale devices.

Though most of the filming takes place at Bitcoin events much of the story is told through BTCPay contributor interviews and important moments recorded from 2015 - 2019 on podcasts and keynotes during the blocksize wars.

The first-ever screening of My Trust In You Is Broken will take place at the Bitcoin Film Fest in Warsaw, Poland (opens new window). We hope to see you there and if you cannot join the European Halving Party with us, digital tickets to the event will let you watch all of the movies from BFF including My Trust In You Is Broken for 42 days.

# Description for Press

"My Trust In You Is Broken" is a Feature Documentary by Parker Worthington (opens new window). It chronicles the tumultuous origins of Bitcoin as a payments system and highlights Nicolas Dorier's significant role. Reacting against BitPay's direction in the Bitcoin Block Size Wars and their support for SegWit2x, Dorier created BTCPay Server. This free, open-source platform allows merchants to accept Bitcoin directly and independence from intermediaries. Despite the ambiguity in its adoption scale, BTCPay Server is known for its community-driven model, privacy, and autonomy features. The film emphasizes Dorier's pivotal role in contributing to Bitcoin merchant adoption and the perils of trusted third parties.

For more information: https://bitcoinfilmfest.com/bff2024/ (opens new window)

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-foundation-announcement/index.html b/btcpay-foundation-announcement/index.html index ab870803..47650553 100644 --- a/btcpay-foundation-announcement/index.html +++ b/btcpay-foundation-announcement/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

Since its creation in August 2017, BTCPay Server has enjoyed a rapid growth (opens new window) of users and contributors.

Our mission was clear from the beginning: "Help businesses and individuals achieve self-sovereignty regardless of their political, geographic or financial barriers". The only way to truly achieve this goal is to make the software completely open and available for everyone. From day one, BTCPay has been free and open-source software, released under the MIT license. That means that anyone can use and modify BTCPay Server for their personal or commercial use. This also means that anyone can help us improve and grow.

What started (opens new window) as a one-man project 2 years ago, today is a versatile technology-stack built and maintained by passionate volunteers around the world, powering a growing number of businesses and individual projects. Countless hours from volunteers have went into the continuous development of the software to not only maintain and enhance the system but also keep its feature-set up to date with the fast-paced technology around bitcoin.

In a recent blog post (opens new window), we hinted that one of our goals is to solve the project's sustainability. We've reached a point where in order to grow further, we need a streamlined and stable structure for people who invest significant time contributing.

# BTCPay Server Foundation

We're excited to announce the BTCPay Server Foundation (opens new window). The Foundation is an entity independent of the BTCPay project. Its goal is to ensure continued financial support from corporate entities and allow heavily invested contributors to focus on the core mission. Donations to the foundation will be used only on endeavors which help to fulfill our core mission and only on work related to the BTCPay Server project.

Such endeavors include:

  • Development of new BTCPay Server features
  • Increase the reach of BTCPay Server (helping it to run in more diverse environments)
  • Development and maintenance of e-commerce plugins
  • Production of training/tutorial material (Video, documentation...)
  • Promotion of BTCPay Server (events, hackathon, goodies)

Donations shall not be used for:

  • Development of Altcoin related features (More altcoin support does not help to achieve self-sovereignty, Bitcoin is self-sufficient)
  • Integration of third-party services to BTCPay. (Introducing third party dependency goes against the self-sovereignty principle)

It's important to remind everyone: "BTCPay Server Foundation" is NOT meant to be an entity which controls the development, monetizes, claims ownership, or assumes the ownership of BTCPay Server. The structure is only meant to provide an easy way for companies which want to help BTCPay Server's sustainability.

# Square Crypto Grant

We were feeling the joy, shared with the rest of Bitcoin community when Jack Dorsey announced Square Crypto (opens new window) initiative. Bitcoin for everyone will not happen without wider support, and it was a pleasure to see established company like Square committing to funding several open source contributors, both designers and developers.

Today, we are proud to announce that we will be one of those open source contributors funded by Square Crypto. We are not an individual, but a distributed team, so the grant from Square Crypto will be supporting more than one person. In the end BTCPayServer is not just Nicolas Dorier... or r0ckstardev, pavlenex and Kukks. It is a community that includes dozens of translators, testers, merchants, third-party hosts, designers, educators and everyone else who set aside even a moment of their time to contribute to the effort.

Beyond accelerating development of BTCPay Server, we also look forward to the grant as a way to solidify our focus. We don't only believe in "Bitcoin for everyone", we live it. And it will be true pleasure to live that mission together with equally committed partner such as Square Crypto.

# Supporting the foundation

We're off to a good start, but we still need help from more corporate entities. Besides the core team that is still not fully funded, our community has a growing number of active contributors that also deserve compensation for their time and effort. The team has been incredibly productive over the past 2 years, shipping over 420 releases (opens new window) with amazing features. Imagine the impact we can have by allowing dedicated and passionate contributors to focus their efforts without worrying about the finances.

We hope that other entities will follow Square Crypto's lead and help us fully fund our community of active contributors. The team has been incredibly productive over the past 2 years, shipping over 420 releases with amazing features.

More information about our long-term vision for the BTCPay Server Foundation will be provided in Nicolas' Dorier presentation on 16.09.2019 during BTCPay Day Riga (opens new window) event.

If you're a business and would like to become a supporter of BTCPay Server Foundation and help us create an open-financial future for everyone, please get in touch via a contact form on the foundation's website (opens new window).

SUPPORT THE FOUNDATION (opens new window)

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Since its creation in August 2017, BTCPay Server has enjoyed a rapid growth (opens new window) of users and contributors.

Our mission was clear from the beginning: "Help businesses and individuals achieve self-sovereignty regardless of their political, geographic or financial barriers". The only way to truly achieve this goal is to make the software completely open and available for everyone. From day one, BTCPay has been free and open-source software, released under the MIT license. That means that anyone can use and modify BTCPay Server for their personal or commercial use. This also means that anyone can help us improve and grow.

What started (opens new window) as a one-man project 2 years ago, today is a versatile technology-stack built and maintained by passionate volunteers around the world, powering a growing number of businesses and individual projects. Countless hours from volunteers have went into the continuous development of the software to not only maintain and enhance the system but also keep its feature-set up to date with the fast-paced technology around bitcoin.

In a recent blog post (opens new window), we hinted that one of our goals is to solve the project's sustainability. We've reached a point where in order to grow further, we need a streamlined and stable structure for people who invest significant time contributing.

# BTCPay Server Foundation

We're excited to announce the BTCPay Server Foundation (opens new window). The Foundation is an entity independent of the BTCPay project. Its goal is to ensure continued financial support from corporate entities and allow heavily invested contributors to focus on the core mission. Donations to the foundation will be used only on endeavors which help to fulfill our core mission and only on work related to the BTCPay Server project.

Such endeavors include:

  • Development of new BTCPay Server features
  • Increase the reach of BTCPay Server (helping it to run in more diverse environments)
  • Development and maintenance of e-commerce plugins
  • Production of training/tutorial material (Video, documentation...)
  • Promotion of BTCPay Server (events, hackathon, goodies)

Donations shall not be used for:

  • Development of Altcoin related features (More altcoin support does not help to achieve self-sovereignty, Bitcoin is self-sufficient)
  • Integration of third-party services to BTCPay. (Introducing third party dependency goes against the self-sovereignty principle)

It's important to remind everyone: "BTCPay Server Foundation" is NOT meant to be an entity which controls the development, monetizes, claims ownership, or assumes the ownership of BTCPay Server. The structure is only meant to provide an easy way for companies which want to help BTCPay Server's sustainability.

# Square Crypto Grant

We were feeling the joy, shared with the rest of Bitcoin community when Jack Dorsey announced Square Crypto (opens new window) initiative. Bitcoin for everyone will not happen without wider support, and it was a pleasure to see established company like Square committing to funding several open source contributors, both designers and developers.

Today, we are proud to announce that we will be one of those open source contributors funded by Square Crypto. We are not an individual, but a distributed team, so the grant from Square Crypto will be supporting more than one person. In the end BTCPayServer is not just Nicolas Dorier... or r0ckstardev, pavlenex and Kukks. It is a community that includes dozens of translators, testers, merchants, third-party hosts, designers, educators and everyone else who set aside even a moment of their time to contribute to the effort.

Beyond accelerating development of BTCPay Server, we also look forward to the grant as a way to solidify our focus. We don't only believe in "Bitcoin for everyone", we live it. And it will be true pleasure to live that mission together with equally committed partner such as Square Crypto.

# Supporting the foundation

We're off to a good start, but we still need help from more corporate entities. Besides the core team that is still not fully funded, our community has a growing number of active contributors that also deserve compensation for their time and effort. The team has been incredibly productive over the past 2 years, shipping over 420 releases (opens new window) with amazing features. Imagine the impact we can have by allowing dedicated and passionate contributors to focus their efforts without worrying about the finances.

We hope that other entities will follow Square Crypto's lead and help us fully fund our community of active contributors. The team has been incredibly productive over the past 2 years, shipping over 420 releases with amazing features.

More information about our long-term vision for the BTCPay Server Foundation will be provided in Nicolas' Dorier presentation on 16.09.2019 during BTCPay Day Riga (opens new window) event.

If you're a business and would like to become a supporter of BTCPay Server Foundation and help us create an open-financial future for everyone, please get in touch via a contact form on the foundation's website (opens new window).

SUPPORT THE FOUNDATION (opens new window)

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-lnd-migration/index.html b/btcpay-lnd-migration/index.html index 21ab9307..2066cf28 100644 --- a/btcpay-lnd-migration/index.html +++ b/btcpay-lnd-migration/index.html @@ -12,7 +12,7 @@ - + @@ -57,7 +57,7 @@ • External wallet that's connected to your LND node, such as Zap.

Once the channels are closed, it takes time for all the funds to settle. When there are no pending channels and all funds are visible on-chain, send them to an external wallet you have. For spending, you can use command line, RTL, Zap or other external wallet connected to your BTCPay.

If at any point you need assistance, visit our community chat (opens new window) and ask a question in the #Lightning (opens new window) channel.

When funds are SAFU, the migration process can begin. The migration tool for old installations will essentially stop all the services, delete the volume of the old LND container, restart the services and recreate a new LND with seed.

Log in into your machine through SSH (opens new window) and input the following command.

sudo su -
 cd btcpayserver-docker/Tools/lnd
 ./lnd_recreate_volume.sh
-
1
2
3

You will be prompted a few times to confirm running the tool, by typing yes in the terminal. When the script is done, go to your BTCPayServer. Server Settings > Services > LND Seed Backup.

Safely backup and store your recovery seed. The seed is a backup of your on-chain Lightning wallet, but is also necessary to perform static channel backups.

If you backed it up safely you can remove it from the server.

That's it now you have a backup for your LND. Go ahead, get some inbound liquidity (opens new window) to your brand new node and enjoy.

# Static channel backup (optional)

TIP

Perform this step only when you want to back up your channels. Do not do it immediately after doing the steps above, since you have no channels to back up.

For backing up funds in the channels the Static Channel Backup is needed which will result into remote force closures when you restore the backup, returning the off-chain fund to the on-chain wallet.

The SCB can be obtained through the Ride The Lightning App (opens new window) and it's stored in the BTCPay filesystem.

To perform a SCB:

  1. Server Setting > Services > LND (Ride the Lightning server)
  2. Channels > Backup > Backup

Now, both your on-chain and funds in channels are backed up. For more information on recovery and restoring from the backup, check LND documentation. (opens new window)

# Thank you

The biggest attribution goes to RockstarDev (opens new window) who took over the entire task on himself and coded the migration tool and coordinated the entire testing process.

Thanks to @NicolasDorier (opens new window) for idea; @MrKukks (opens new window) and @pavlenex (opens new window) for thorough review and testing. Credit also @junderwood4649 (opens new window) @maltokyo (opens new window) @ketominer (opens new window) @roasbeef (opens new window) @bitconner (opens new window) @woutersamaey (opens new window) @openoms (opens new window) @21isenough (opens new window) and others who helped throughout the process in various ways.

Last Updated: 10/30/2024, 2:38:33 PM

+

1
2
3

You will be prompted a few times to confirm running the tool, by typing yes in the terminal. When the script is done, go to your BTCPayServer. Server Settings > Services > LND Seed Backup.

Safely backup and store your recovery seed. The seed is a backup of your on-chain Lightning wallet, but is also necessary to perform static channel backups.

If you backed it up safely you can remove it from the server.

That's it now you have a backup for your LND. Go ahead, get some inbound liquidity (opens new window) to your brand new node and enjoy.

# Static channel backup (optional)

TIP

Perform this step only when you want to back up your channels. Do not do it immediately after doing the steps above, since you have no channels to back up.

For backing up funds in the channels the Static Channel Backup is needed which will result into remote force closures when you restore the backup, returning the off-chain fund to the on-chain wallet.

The SCB can be obtained through the Ride The Lightning App (opens new window) and it's stored in the BTCPay filesystem.

To perform a SCB:

  1. Server Setting > Services > LND (Ride the Lightning server)
  2. Channels > Backup > Backup

Now, both your on-chain and funds in channels are backed up. For more information on recovery and restoring from the backup, check LND documentation. (opens new window)

# Thank you

The biggest attribution goes to RockstarDev (opens new window) who took over the entire task on himself and coded the migration tool and coordinated the entire testing process.

Thanks to @NicolasDorier (opens new window) for idea; @MrKukks (opens new window) and @pavlenex (opens new window) for thorough review and testing. Credit also @junderwood4649 (opens new window) @maltokyo (opens new window) @ketominer (opens new window) @roasbeef (opens new window) @bitconner (opens new window) @woutersamaey (opens new window) @openoms (opens new window) @21isenough (opens new window) and others who helped throughout the process in various ways.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-misconceptions/index.html b/btcpay-misconceptions/index.html index 858dc593..4997e677 100644 --- a/btcpay-misconceptions/index.html +++ b/btcpay-misconceptions/index.html @@ -12,7 +12,7 @@ - + @@ -60,7 +60,7 @@ cd btcpayserver-docker BTCPAYGEN_CRYPTO2="ltc" . ./btcpay-setup.sh -i -
1
2
3
4

Then add the derivation scheme in your wallet.

Altcoins are supported and maintained by their communities, not ourselves. BTCPay developers do not add alternative coins on request. Adding a new coin explicitly depends on the community and developers of those coins or their resources to hire developers to integrate it for them. Furthermore, BTCPay developers do not spend excessive time testing nor maintaining altcoins that have been integrated.

Our principles are very clear and simple and we emphasize them in our documentation.

  • We do not debug altcoins
  • We do not test it for devs who integrated it
  • We do not advertise or support it (outside of update announcement)
  • We don't make invasive changes in the code to accommodate the altcoin.
  • We don't fix breaking changes which may break the coin integration.

We are Bitcoiners first because we believe Bitcoin is the best to achieve self-sovereignty.

The way in which we'll handle altcoins in the future is yet to be determined. It's really not our focus, but if it becomes any sort of bottleneck that prohibits our efficiency, we will isolate the altcoin code from the main codebase even more.

For now, it does not require effort on our part and it makes some communities happy. More importantly, we must admit that alt developers have helped us out with finding bugs, resolving them and improving performance, especially in NBxplorer.

If you'd like to understand our architecture and stance better just watch Nicolas' presentation (opens new window) on Advancing Bitcoin 2019 conference in London.

# 3. BTCPay is expensive

BTCPay in itself is free and open-source software anyone can use. You can use a third-party BTCPay host or self-host a server.

If you decide to go with a self-hosted solution, which is highly recommended, you need to have it hosted somewhere, a cloud or on your own hardware. Cloud hosting costs money. As I mentioned in #2, the cost to run BTCPay depends on the deployment method you've chosen and the variables you set up which we have found to be as little as $3-5 USD monthly.

When making a decision whether to go with a centralized payment processor vs BTCPay (opens new window), it is worth to consider that in BTCPay there are no fees. Zero, zip, zilch, nada.

If you're a very small business or just want to test BTCPay, there are people who allow others to use their servers for free or a small fee. We call them third-party hosts (opens new window).

The majority of third-party hosts offer BTCPay for free. BTCPayJungle (opens new window), for example, hosts a BTCPay instance for over 400 users, merchants and developers and they maintain their server from user donations. Lightbo.lt (opens new window) is one more great host.

# 4. BTCPay is a company

BTCPayer Server is an open-source project, not a company. We rely on a network of contributors and users to provide support. The project exists for and because of the community. People working on BTCPay are voluntarily spending their time to improve the software for themselves and others.

You may not know this, but one of the contributors, Kukks (opens new window), quit his day-job to work on BTCPay voluntarily full-time. It's just pure passion and ideology that pushes us. We want to eliminate the middleman and help individuals and businesses become self-sovereign.

We try to fund any expenses from community donations, and we're thankful for each and every satoshi we receive.

As the project grows, it requires more and more time to maintain not only the software and support but the community itself. We're still unsure what BTCPay is and what it may become in the future, but one thing is sure: it will always be free, open-source and made by the community for the community.

# 5. BTCPay does not have a conversion to fiat

This statement is partially true. BTCPay does not have an instant conversion to fiat out of the box. Yet.

With BTCPay, you're your own payment processor and you own your keys. By owning the keys, you have the freedom to do whatever you like with your coins, because they're yours. That obviously means, that you can easily sell your coins to an exchange, but for now that's a manual process.

Good news is, that very soon we'll release a fiat bridge(currently codenamed BtcTransmuter (opens new window)) that will allow users to not only instantly sell coins on an exchange but also provide an infinitely flexible system for a number of other use-cases. One of the additional use cases could be to provide liquidity to other users using their instance. That means, that if you want, you will be able to become a payment processor for others.

Until BtcTransmuter is ready for primetime, Blockonomics has made a payment forwarding service (opens new window) that is compatible with BTCPay which you can use as a workaround to convert to fiat. We're seeing an increased interest from exchanges and businesses that would like to provide instant-conversion services that BTCPay merchants can use.

# 6. BTCPay and Shopify

BTCPay is a decentralized software, not a company. Shopify is centralized, walled garden. How can you get a decentralized software into a garden which not only does not accept new payment processors at this time but also requires a cut from processors?

You can't. BTCPay does not have Shopify integration. We tried really hard, but we were unable to get in there as an open-source project. That said, in future if someone wants to create a payment processor by using our technology stack and provide centralized service to merchants, that can be one way of getting into Shopify, but it's still going to require a lots of work.

This one is not a misconception nor a myth but deserves to be here as one of the most commonly asked questions and the fact people believe it's our fault we're not on Shopify yet.

# 7. Only merchants can use BTCPay

BTCPay can be used by anyone who wants to receive payments on-chain or via the Lightning Network, without depending on a third party.

BTCPay has a wide-variety of use-cases (opens new window), and with the applications that we build on top of it, we keep extending the list constantly.

# Who can use BTCPay? - Anyone. Anywhere. Anytime.

Here are some of the most common users, besides retail or online merchants:

  • Developers integrate into their projects (wallets, games, applications, platforms)
  • Lightning Network users (BTCPay is one of the easiest ways to deploy a Lightning Node) who use integration to make their shopping easier and non-custodial thanks to our out of the box integration with wallets and extensions like Joule, Spark, Zap, ZeusLN, and Pebble.
  • Charities use payment buttons (opens new window) and crowdfunding (opens new window) app to raise money
  • Freelancers and small businesses use payment requests (opens new window) to invoice their clients and get paid in Bitcoin by sharing a simple link
  • People who want to offer BTCPay to become payment processors for local or global market
  • Enterprises that want a secure, non-custodial technology stack for their Bitcoin operations
  • Exchanges and payment forwarders that offer instant fiat conversion to users
  • Hosting providers that offer BTCPay hosting

As you can see, BTCPay, similar to Bitcoin, can be anything to anyone, but most importantly it's there when you need it. Customize it, fork it, adjust it.

# 8. BTCPay is a clone of BitPay

BTCPay is not BitPay's clone. We only have a compatible API, which means whoever uses BitPay can migrate to BTCPay with ease. Their API however, is far from perfect with a big list of inefficiencies from their model constantly reminding us to do better. That backwards compatibility is becoming a huge bottleneck, and we plan to roll out our own API, which will enable amazing extensibility options such as using BTCPay as a headless payment processor or managing your stores completely through an API. You can follow progress on the initial steps of this API work here (opens new window).

# 9. BTCPay is a competitor to centralized payment processors

BTCPay is a technology stack and, as we earlier determined, is way more powerful than any other centralized payment processor.

BTCPay is a payment processor factory, so how can you compare a single car to an entire factory? One thing people very often forget is that when you launch BTCPay, you're becoming a payment processor. It's up to you and your business to decide how you want to use BTCPay. You can use it as an internal, self-hosted solution to enhance privacy, security and save money or offer it as a service to other people and become a centralized processor yourself.

# 10. BTCPay nodes are slow to sync, nobody's going to wait

We covered the importance of full nodes and syncing, validation of transactions in our Sync Documentation (opens new window). Syncing a Bitcoin node takes time. We developed a solution called fast-sync which allows you to quickly sync your server from a trusted node's snapshot. There are lots of pros and cons to this solution, so it's recommended to read our Fast Sync (opens new window) page to understand it fully.

But basically, if you really want to sync your full node quickly, you can use the fast sync and it will sync within a few hours(depending on snapshot date, network speed, and hardware specs).

# Summary

There you have it. Hopefully, I managed to clear out some FUD and helped you understand BTCPay better. If you know any other myth we can add, ping us on Twitter (opens new window) and we'll update the article accordingly.

At the beginning of the article I lied about the workout, but it appears I also lied about the boring day with no releases. Just as I was about to click publish, I saw this message.

It seems we did some improvements to our infrastructure after all.

There's definitely no boring day in BTCPay™.

Thanks for reading.

Last Updated: 10/30/2024, 2:38:33 PM

+

1
2
3
4

Then add the derivation scheme in your wallet.

Altcoins are supported and maintained by their communities, not ourselves. BTCPay developers do not add alternative coins on request. Adding a new coin explicitly depends on the community and developers of those coins or their resources to hire developers to integrate it for them. Furthermore, BTCPay developers do not spend excessive time testing nor maintaining altcoins that have been integrated.

Our principles are very clear and simple and we emphasize them in our documentation.

  • We do not debug altcoins
  • We do not test it for devs who integrated it
  • We do not advertise or support it (outside of update announcement)
  • We don't make invasive changes in the code to accommodate the altcoin.
  • We don't fix breaking changes which may break the coin integration.

We are Bitcoiners first because we believe Bitcoin is the best to achieve self-sovereignty.

The way in which we'll handle altcoins in the future is yet to be determined. It's really not our focus, but if it becomes any sort of bottleneck that prohibits our efficiency, we will isolate the altcoin code from the main codebase even more.

For now, it does not require effort on our part and it makes some communities happy. More importantly, we must admit that alt developers have helped us out with finding bugs, resolving them and improving performance, especially in NBxplorer.

If you'd like to understand our architecture and stance better just watch Nicolas' presentation (opens new window) on Advancing Bitcoin 2019 conference in London.

# 3. BTCPay is expensive

BTCPay in itself is free and open-source software anyone can use. You can use a third-party BTCPay host or self-host a server.

If you decide to go with a self-hosted solution, which is highly recommended, you need to have it hosted somewhere, a cloud or on your own hardware. Cloud hosting costs money. As I mentioned in #2, the cost to run BTCPay depends on the deployment method you've chosen and the variables you set up which we have found to be as little as $3-5 USD monthly.

When making a decision whether to go with a centralized payment processor vs BTCPay (opens new window), it is worth to consider that in BTCPay there are no fees. Zero, zip, zilch, nada.

If you're a very small business or just want to test BTCPay, there are people who allow others to use their servers for free or a small fee. We call them third-party hosts (opens new window).

The majority of third-party hosts offer BTCPay for free. BTCPayJungle (opens new window), for example, hosts a BTCPay instance for over 400 users, merchants and developers and they maintain their server from user donations. Lightbo.lt (opens new window) is one more great host.

# 4. BTCPay is a company

BTCPayer Server is an open-source project, not a company. We rely on a network of contributors and users to provide support. The project exists for and because of the community. People working on BTCPay are voluntarily spending their time to improve the software for themselves and others.

You may not know this, but one of the contributors, Kukks (opens new window), quit his day-job to work on BTCPay voluntarily full-time. It's just pure passion and ideology that pushes us. We want to eliminate the middleman and help individuals and businesses become self-sovereign.

We try to fund any expenses from community donations, and we're thankful for each and every satoshi we receive.

As the project grows, it requires more and more time to maintain not only the software and support but the community itself. We're still unsure what BTCPay is and what it may become in the future, but one thing is sure: it will always be free, open-source and made by the community for the community.

# 5. BTCPay does not have a conversion to fiat

This statement is partially true. BTCPay does not have an instant conversion to fiat out of the box. Yet.

With BTCPay, you're your own payment processor and you own your keys. By owning the keys, you have the freedom to do whatever you like with your coins, because they're yours. That obviously means, that you can easily sell your coins to an exchange, but for now that's a manual process.

Good news is, that very soon we'll release a fiat bridge(currently codenamed BtcTransmuter (opens new window)) that will allow users to not only instantly sell coins on an exchange but also provide an infinitely flexible system for a number of other use-cases. One of the additional use cases could be to provide liquidity to other users using their instance. That means, that if you want, you will be able to become a payment processor for others.

Until BtcTransmuter is ready for primetime, Blockonomics has made a payment forwarding service (opens new window) that is compatible with BTCPay which you can use as a workaround to convert to fiat. We're seeing an increased interest from exchanges and businesses that would like to provide instant-conversion services that BTCPay merchants can use.

# 6. BTCPay and Shopify

BTCPay is a decentralized software, not a company. Shopify is centralized, walled garden. How can you get a decentralized software into a garden which not only does not accept new payment processors at this time but also requires a cut from processors?

You can't. BTCPay does not have Shopify integration. We tried really hard, but we were unable to get in there as an open-source project. That said, in future if someone wants to create a payment processor by using our technology stack and provide centralized service to merchants, that can be one way of getting into Shopify, but it's still going to require a lots of work.

This one is not a misconception nor a myth but deserves to be here as one of the most commonly asked questions and the fact people believe it's our fault we're not on Shopify yet.

# 7. Only merchants can use BTCPay

BTCPay can be used by anyone who wants to receive payments on-chain or via the Lightning Network, without depending on a third party.

BTCPay has a wide-variety of use-cases (opens new window), and with the applications that we build on top of it, we keep extending the list constantly.

# Who can use BTCPay? - Anyone. Anywhere. Anytime.

Here are some of the most common users, besides retail or online merchants:

  • Developers integrate into their projects (wallets, games, applications, platforms)
  • Lightning Network users (BTCPay is one of the easiest ways to deploy a Lightning Node) who use integration to make their shopping easier and non-custodial thanks to our out of the box integration with wallets and extensions like Joule, Spark, Zap, ZeusLN, and Pebble.
  • Charities use payment buttons (opens new window) and crowdfunding (opens new window) app to raise money
  • Freelancers and small businesses use payment requests (opens new window) to invoice their clients and get paid in Bitcoin by sharing a simple link
  • People who want to offer BTCPay to become payment processors for local or global market
  • Enterprises that want a secure, non-custodial technology stack for their Bitcoin operations
  • Exchanges and payment forwarders that offer instant fiat conversion to users
  • Hosting providers that offer BTCPay hosting

As you can see, BTCPay, similar to Bitcoin, can be anything to anyone, but most importantly it's there when you need it. Customize it, fork it, adjust it.

# 8. BTCPay is a clone of BitPay

BTCPay is not BitPay's clone. We only have a compatible API, which means whoever uses BitPay can migrate to BTCPay with ease. Their API however, is far from perfect with a big list of inefficiencies from their model constantly reminding us to do better. That backwards compatibility is becoming a huge bottleneck, and we plan to roll out our own API, which will enable amazing extensibility options such as using BTCPay as a headless payment processor or managing your stores completely through an API. You can follow progress on the initial steps of this API work here (opens new window).

# 9. BTCPay is a competitor to centralized payment processors

BTCPay is a technology stack and, as we earlier determined, is way more powerful than any other centralized payment processor.

BTCPay is a payment processor factory, so how can you compare a single car to an entire factory? One thing people very often forget is that when you launch BTCPay, you're becoming a payment processor. It's up to you and your business to decide how you want to use BTCPay. You can use it as an internal, self-hosted solution to enhance privacy, security and save money or offer it as a service to other people and become a centralized processor yourself.

# 10. BTCPay nodes are slow to sync, nobody's going to wait

We covered the importance of full nodes and syncing, validation of transactions in our Sync Documentation (opens new window). Syncing a Bitcoin node takes time. We developed a solution called fast-sync which allows you to quickly sync your server from a trusted node's snapshot. There are lots of pros and cons to this solution, so it's recommended to read our Fast Sync (opens new window) page to understand it fully.

But basically, if you really want to sync your full node quickly, you can use the fast sync and it will sync within a few hours(depending on snapshot date, network speed, and hardware specs).

# Summary

There you have it. Hopefully, I managed to clear out some FUD and helped you understand BTCPay better. If you know any other myth we can add, ping us on Twitter (opens new window) and we'll update the article accordingly.

At the beginning of the article I lied about the workout, but it appears I also lied about the boring day with no releases. Just as I was about to click publish, I saw this message.

It seems we did some improvements to our infrastructure after all.

There's definitely no boring day in BTCPay™.

Thanks for reading.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-0-3-147/index.html b/btcpay-server-1-0-3-147/index.html index dd2b562b..fedb9c08 100644 --- a/btcpay-server-1-0-3-147/index.html +++ b/btcpay-server-1-0-3-147/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

We released a new BTCPay Server version 1.0.3.147. This release introduces abundance of under the hood and performance improvements, a new feature and a few minor bug fixes.

In this post, we'll guide you through the changes and what they mean for your BTCPay instances.

1.0.3.147 changelog

# Migration to .NET Core 3.1.

A long-awaited framework upgrade is finally here! Starting with this release, all BTCPay Servers are shipped with .NET Core 3.1 (opens new window). Important benefits of running 3.1 are:

  • Native ARM64 image support
  • Performance improvements (BTCPay now consumes less RAM)
  • Easier manual deployment build (NBXplorer (opens new window) and BTCPay are now depending on the same version of the framework)

# BitcoinAverage replaced with CoinGecko

Prior to this release, BTCPay was using BitcoinAverage as a source for rates for many exchanges and also as a default rate provider. The structural changes in BitcoinAverage pricing plans meant that users have to pay to use their API. While we understand and respect BitcoinAverage decision (they've been a reliable and free provider for years) we can't expect all our users to pay for the API.

As a result, we've removed BitcoinAverage as a default provider and replaced it with CoinGecko. Some exchanges are still handled by BitcoinAverage. If you wish to use BitcoinAverage, you can still input your API keys upon purchasing a plan.

Because of the pricing changes (no more free plans) all BTCPay instances faced the risk of not being able to fetch the rates, which means the invoice couldn't be created.

In order to prevent such disruption in the future we plan later to:

  1. Show a warning in users store if he did not configured the default rate provider and kept the default. This will means user gets the best rate for his jurisdiction, but also makes sure that less users depend on CoinGecko.
  2. Improve the direct support with the rate API of exchanges. We currently only directly support: Binance, Bitbank, BitPay, Bittrex Bylls, CoinAverage, CoinGecko, Hitbtc, Kraken, Ndax and Poloniex.
  3. Find alternative to CoinGecko and use those alternative automatically as fallback in case CoinGecko goes down.

Many of you suggested we open source the rates API or "decentralize" it. This is sadly not the solution, since merchants want a specific rate and it would be safer to have a store out of service than being served with an incorrect rate.

The only way we can mitigate the impact of rate providers is by properly implementing direct integrations to the rate API of exchanges and having several fallbacks like CoinGecko for the rest.

# Do not preemptively fetch rates of all exchanges

Before this release, we would fetch rates for the 10 exchanges rate API's we are integrated with every 30s, so we already have the rate fetched locally at the time of creation of the invoice.

Not only this bring unnecessary traffic, but if any of the exchanges stopped responding, this would flood the logs. We now preemptively fetch rates only for the exchanges actually in use.

# Hot Wallet

As you're probably aware, BTCPay never requires your private keys. However, we've seen an increasing demand from developers building projects on top of BTCPay for a hot wallet that would allow them more flexibility.

Starting with 1.0.3.147, you can create and restore a wallet from a seed when setting up your derivation scheme. This feature is coupled with an option to import the private keys for the generated addresses directly inside Bitcoin Core. This makes it easy to spend the funds via FullyNoded, for example.

Your wallet is only exposed through Torv3 address, which are not discoverable. We plan adding Tor level authentication protection to make sure that, even if you leak your Torv3 by mistake, you would be safe.

Hot wallet warning

WARNING: A hot wallet means that anybody with an access to your RPC interface will have access to the funds. BTCPay Server bitcoind is configured with a well known fixed password, so only network access is protecting your wallet

# A thank you to our contributors

Huge thanks go to our contributors, supporters and community who made this release possible. We appreciate every single contribution, that comes in many different forms.

Special thanks to developers:

Upon releasing 1.0.3.147, we've quickly released 1.0.3.148 and 1.0.3.149 which fixed bugs introduced in 1.0.3.147.

  • 1.0.3.148: Fixed a critical U2F auth bug which would lock a user out of the BTCPayServer if U2F was active.
  • 1.0.3.149: Fixed some broken pages and actions in our migration to 3.1

How to update?

To update (opens new window) to the latest version, go to your BTCPay > Server Settings > Maintenance > Update.

If you encounter any issues with this version, or need assistance, please report it on our community chat (opens new window) or on our GitHub (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

We released a new BTCPay Server version 1.0.3.147. This release introduces abundance of under the hood and performance improvements, a new feature and a few minor bug fixes.

In this post, we'll guide you through the changes and what they mean for your BTCPay instances.

1.0.3.147 changelog

# Migration to .NET Core 3.1.

A long-awaited framework upgrade is finally here! Starting with this release, all BTCPay Servers are shipped with .NET Core 3.1 (opens new window). Important benefits of running 3.1 are:

  • Native ARM64 image support
  • Performance improvements (BTCPay now consumes less RAM)
  • Easier manual deployment build (NBXplorer (opens new window) and BTCPay are now depending on the same version of the framework)

# BitcoinAverage replaced with CoinGecko

Prior to this release, BTCPay was using BitcoinAverage as a source for rates for many exchanges and also as a default rate provider. The structural changes in BitcoinAverage pricing plans meant that users have to pay to use their API. While we understand and respect BitcoinAverage decision (they've been a reliable and free provider for years) we can't expect all our users to pay for the API.

As a result, we've removed BitcoinAverage as a default provider and replaced it with CoinGecko. Some exchanges are still handled by BitcoinAverage. If you wish to use BitcoinAverage, you can still input your API keys upon purchasing a plan.

Because of the pricing changes (no more free plans) all BTCPay instances faced the risk of not being able to fetch the rates, which means the invoice couldn't be created.

In order to prevent such disruption in the future we plan later to:

  1. Show a warning in users store if he did not configured the default rate provider and kept the default. This will means user gets the best rate for his jurisdiction, but also makes sure that less users depend on CoinGecko.
  2. Improve the direct support with the rate API of exchanges. We currently only directly support: Binance, Bitbank, BitPay, Bittrex Bylls, CoinAverage, CoinGecko, Hitbtc, Kraken, Ndax and Poloniex.
  3. Find alternative to CoinGecko and use those alternative automatically as fallback in case CoinGecko goes down.

Many of you suggested we open source the rates API or "decentralize" it. This is sadly not the solution, since merchants want a specific rate and it would be safer to have a store out of service than being served with an incorrect rate.

The only way we can mitigate the impact of rate providers is by properly implementing direct integrations to the rate API of exchanges and having several fallbacks like CoinGecko for the rest.

# Do not preemptively fetch rates of all exchanges

Before this release, we would fetch rates for the 10 exchanges rate API's we are integrated with every 30s, so we already have the rate fetched locally at the time of creation of the invoice.

Not only this bring unnecessary traffic, but if any of the exchanges stopped responding, this would flood the logs. We now preemptively fetch rates only for the exchanges actually in use.

# Hot Wallet

As you're probably aware, BTCPay never requires your private keys. However, we've seen an increasing demand from developers building projects on top of BTCPay for a hot wallet that would allow them more flexibility.

Starting with 1.0.3.147, you can create and restore a wallet from a seed when setting up your derivation scheme. This feature is coupled with an option to import the private keys for the generated addresses directly inside Bitcoin Core. This makes it easy to spend the funds via FullyNoded, for example.

Your wallet is only exposed through Torv3 address, which are not discoverable. We plan adding Tor level authentication protection to make sure that, even if you leak your Torv3 by mistake, you would be safe.

Hot wallet warning

WARNING: A hot wallet means that anybody with an access to your RPC interface will have access to the funds. BTCPay Server bitcoind is configured with a well known fixed password, so only network access is protecting your wallet

# A thank you to our contributors

Huge thanks go to our contributors, supporters and community who made this release possible. We appreciate every single contribution, that comes in many different forms.

Special thanks to developers:

Upon releasing 1.0.3.147, we've quickly released 1.0.3.148 and 1.0.3.149 which fixed bugs introduced in 1.0.3.147.

  • 1.0.3.148: Fixed a critical U2F auth bug which would lock a user out of the BTCPayServer if U2F was active.
  • 1.0.3.149: Fixed some broken pages and actions in our migration to 3.1

How to update?

To update (opens new window) to the latest version, go to your BTCPay > Server Settings > Maintenance > Update.

If you encounter any issues with this version, or need assistance, please report it on our community chat (opens new window) or on our GitHub (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-0-3-95/index.html b/btcpay-server-1-0-3-95/index.html index de8fd666..04bc6c31 100644 --- a/btcpay-server-1-0-3-95/index.html +++ b/btcpay-server-1-0-3-95/index.html @@ -12,7 +12,7 @@ - + @@ -53,7 +53,7 @@ (opens new window) GitHub (opens new window)

We've been silent for a while, but with good reason. Today, we're releasing a big update to BTCPay Server, a brand-new release v 1.0.3.95.

Version 1.0.3.95 includes lots of new features, bug fixes and user-experience improvements.

BTCPay Server version 1.0.3.95 includes lots of new features,improvements and bug fixes.

# Invoice list updates

During the WeAreAllhodlonaut crowdfunding, (opens new window) we identified several UX/UI problems with our invoices page. This release includes notable changes which should help users with invoice management and interaction. The following changes should help users, especially those with a large volume of invoices in real time to manage their incoming invoices -easier and identify those that require further action.

  • Responsive status change
  • Color labeling invoice stat
  • Quickly expandable invoice details
  • Filtering by date

Updates on the invoice page were coded by @r0ckstardev. (opens new window)

# U2F Support added

One of the oldest issues (opens new window) we had on our GitHub, is now closed thanks to our contributor @MrKukks (opens new window). You can now enhance the security of your account by enabling Universal 2nd Factor (U2F).

U2F allows users to further enhance the security of their accounts by physically confirming the authentication via a U2F compatible device.

Please understand that U2F protocol is not supported by all browsers. We've conducted tests (opens new window) with several well-known U2F devices and compatible hardware wallets in Chrome, Firefox, and Opera.

BTCPay U2F should work with any device that supports U2F. We stress-tested it on plenty of devices before releasing the feature.

To enable U2F on your BTCPay account, go to your account page and then the U2F tab, plug in your U2F device or a hardware wallet and press the appropriate button on your device when prompted. Ledger hardware wallet users need to install U2F app (opens new window) and make sure to open it to enable U2F.

Since U2F protocol is still hard for mobile devices, if you often access your BTCPay Server via a mobile device, we recommend that you have both 2FA and U2F enabled, so that you can log in with the most suitable option and avoid getting locked-out.

# External storage service support

We've listened to the feedback and implemented a storage services in BTCPay. You no longer have to add your images and files to imgur and other websites to show them in BTCPay.

You can also set up the temporary expirable links for files, which we plan to merge into our apps, so that content creators can sell music, images, and videos through BTCPay, without having to use a CMS like WordPress.

The most important future use-case for external storage service will be Lightning Network static channel backups and the backup of the entire BTCPay Server.

# Internal Wallet improvements

Nicolas Dorier (opens new window) continues to improve and refactor the internal BTCPay wallet (opens new window), which allows users to use hardware wallets with their full nodes for maximum privacy and security. Some of the changes are preparation for the Partially Signed Bitcoin Transaction (PSBT (opens new window)) support that's coming very soon to BTCPay.

Changes to the wallet include:

  • Full Node P2P support - Allows you to connect wallets that support new bitcoin-p2p links (Blockstream's Green Wallet) (opens new window) to your full BTCPay node if you're using Tor Hidden Service and avoid leaking information to third-party servers. To connect, enable Tor and scan the QR code from a supported mobile wallet.
  • Wallet rescan: Remove limitation reserved for SegWit only (PSBT will come to rescue)
  • Wallet transaction list: Can show either relative date or absolute date of transactions

# Various bug fixes and UX improvements

  • Header menu: Use icons for profile / sign in and sign out instead of text. @NicolasDorier
  • Fix: Coinswitch exchange with altcoins popup not showing bug fix @amitasaurus
  • Fix: Store Email Password not saving @MrKukks
  • Show warning on apps if emails settings are not complete @MrKukks
  • Fix date time issues on crowdfund/payment requests @MrKukks
  • Various grammar fixes @bitcoinbrisbane

# Known Issues

  • Ledger Wallet not working on chrome. The fix is coming in the next Ledger App update soon.

# Thank you to our contributors

As always, we would like to thank to all of our contributors. The following people contributed to the either by coding, testing, documenting or providing useful feedback.

In alphabetical order:

  • amitasaurus
  • bitcoinbrisbane
  • boblechinois
  • britttttk
  • MrKukks
  • NicolasDorier
  • Pavlenex
  • r0ckstardev

We would like to thank all translators who continuously make BTCPay available worldwide by translating the software and content. Also, check the improvements on our new website made by vswee (opens new window).

Update your BTCPay to 1.0.3.95

To update (opens new window) to the latest version, go to your BTCPay > Server Settings > Maintenance > Update.

Last Updated: 10/30/2024, 2:38:33 PM

+easier and identify those that require further action.

  • Responsive status change
  • Color labeling invoice stat
  • Quickly expandable invoice details
  • Filtering by date

Updates on the invoice page were coded by @r0ckstardev. (opens new window)

# U2F Support added

One of the oldest issues (opens new window) we had on our GitHub, is now closed thanks to our contributor @MrKukks (opens new window). You can now enhance the security of your account by enabling Universal 2nd Factor (U2F).

U2F allows users to further enhance the security of their accounts by physically confirming the authentication via a U2F compatible device.

Please understand that U2F protocol is not supported by all browsers. We've conducted tests (opens new window) with several well-known U2F devices and compatible hardware wallets in Chrome, Firefox, and Opera.

BTCPay U2F should work with any device that supports U2F. We stress-tested it on plenty of devices before releasing the feature.

To enable U2F on your BTCPay account, go to your account page and then the U2F tab, plug in your U2F device or a hardware wallet and press the appropriate button on your device when prompted. Ledger hardware wallet users need to install U2F app (opens new window) and make sure to open it to enable U2F.

Since U2F protocol is still hard for mobile devices, if you often access your BTCPay Server via a mobile device, we recommend that you have both 2FA and U2F enabled, so that you can log in with the most suitable option and avoid getting locked-out.

# External storage service support

We've listened to the feedback and implemented a storage services in BTCPay. You no longer have to add your images and files to imgur and other websites to show them in BTCPay.

You can also set up the temporary expirable links for files, which we plan to merge into our apps, so that content creators can sell music, images, and videos through BTCPay, without having to use a CMS like WordPress.

The most important future use-case for external storage service will be Lightning Network static channel backups and the backup of the entire BTCPay Server.

# Internal Wallet improvements

Nicolas Dorier (opens new window) continues to improve and refactor the internal BTCPay wallet (opens new window), which allows users to use hardware wallets with their full nodes for maximum privacy and security. Some of the changes are preparation for the Partially Signed Bitcoin Transaction (PSBT (opens new window)) support that's coming very soon to BTCPay.

Changes to the wallet include:

  • Full Node P2P support - Allows you to connect wallets that support new bitcoin-p2p links (Blockstream's Green Wallet) (opens new window) to your full BTCPay node if you're using Tor Hidden Service and avoid leaking information to third-party servers. To connect, enable Tor and scan the QR code from a supported mobile wallet.
  • Wallet rescan: Remove limitation reserved for SegWit only (PSBT will come to rescue)
  • Wallet transaction list: Can show either relative date or absolute date of transactions

# Various bug fixes and UX improvements

  • Header menu: Use icons for profile / sign in and sign out instead of text. @NicolasDorier
  • Fix: Coinswitch exchange with altcoins popup not showing bug fix @amitasaurus
  • Fix: Store Email Password not saving @MrKukks
  • Show warning on apps if emails settings are not complete @MrKukks
  • Fix date time issues on crowdfund/payment requests @MrKukks
  • Various grammar fixes @bitcoinbrisbane

# Known Issues

  • Ledger Wallet not working on chrome. The fix is coming in the next Ledger App update soon.

# Thank you to our contributors

As always, we would like to thank to all of our contributors. The following people contributed to the either by coding, testing, documenting or providing useful feedback.

In alphabetical order:

  • amitasaurus
  • bitcoinbrisbane
  • boblechinois
  • britttttk
  • MrKukks
  • NicolasDorier
  • Pavlenex
  • r0ckstardev

We would like to thank all translators who continuously make BTCPay available worldwide by translating the software and content. Also, check the improvements on our new website made by vswee (opens new window).

Update your BTCPay to 1.0.3.95

To update (opens new window) to the latest version, go to your BTCPay > Server Settings > Maintenance > Update.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-0-4-0/index.html b/btcpay-server-1-0-4-0/index.html index a7d3f3b7..482bc970 100644 --- a/btcpay-server-1-0-4-0/index.html +++ b/btcpay-server-1-0-4-0/index.html @@ -12,7 +12,7 @@ - + @@ -56,7 +56,7 @@
Dark Invoices page
 

Design consistency was just the first step towards better user-experience. We plan to introduce a detailed dashboard, better navigation and an easier experience gradually.

Romantics who prefer the old-school look can access the legacy theme from Server Settings > Theme.

# 🧾 Re-designed Invoices

The checkout experience is crucial. It can be the difference between an abandoned cart and a successful sale. That's why we re-designed the invoice.

Since many of you use a customized theme, we were very careful not to make any breaking changes. Therefore, all of the customized invoice themes should continue to work.

Dark mode is also available for invoices from Store Settings > Checkout Experience.

New default light invoice
 
New dark mode invoice
-

# 📷 New Wallet Features

Our internal wallet is one of the most private and secure wallets available. It's a full-node reliant wallet with a direct hardware wallet integration (opens new window) that can run over Tor.

Several important features have been added to the wallet:

  • Coin selection
  • QR Code camera scanning
  • Allows generation of a new address in the Wallet Receive page

# Coin Selection

The new coin-selection feature can be found under Advanced Settings and allows you to expertly craft a transaction, using only coins that are desirable for your privacy in this payment situation. For example, paying with coins that are fresh from a coinjoin mix.

To make the selection easier, coin-selection works natively with the wallet labels feature. This means you can label any incoming funds for smoother UTXO management and spending. In the future we'll be adding auto-labelling on incoming coins based on invoices and whether it was a payjoin transaction.

Coin Selection

# QR Code camera scanning

The new scan option (camera icon) lets you use your device's camera to scan an invoice when sending from the wallet. It auto-populates the invoice information so you don't have to manually copy-paste address and amount. More importantly the scan feature opens a door to new use-cases, especially for the BTCPay cross-platform app that we plan to launch in the future.

# 👨‍💻 API improvements

Our mission is to enable the creation of a powerful and flexible ecosystem that enables developers to build using BTCPay Server.

Therefore, we've spent quite a lot of time behind the scenes working on the new API, which we call the Greenfield API. It's still early days but we believe our efforts are starting to bear fruit.

Here are some of the new API features added in v1.0.4.0:

  • Greenfield API permissions rework, to create API keys with very specific permissions
  • Greenfield API C# Client
  • Client Get/Create User API for Greenfield API

If you're a developer with a specific use-case, we'd like to invite you to join the discussion on GitHub (opens new window) and help us craft new features for the new API. Our legacy (BitPay-compatible API) will still be there, do not worry! In the meantime, we have APIs for managing stores and Payment Requests (opens new window) in the works.

# 🐛 Bug fixes and improvements

  • Better RBF and double spend handling
  • Fix: Decimal precision for Liquid assets in BIP21
  • Fix: do not allow 0 amount invoices in crowdfund or payment requests
  • Fix: Make 0 amount invoices marked as paid instantly
  • Bitflyer rate provider support
  • Fix Payment request clone button
  • Rename summary for invoices
  • Add L-CAD support

The full changelog is available here (opens new window).

# How to update?

To update (opens new window) to the latest version, go to your BTCPay Server > Server Settings > Maintenance > Update. If you prefer CLI, you can update with btcpay-update.sh.

# 🏪 New website & merchant directory

New guidelines meant that we had to give our website (opens new window) a new look. We stripped the complexity of an earlier design and invested quite a bit of time in figuring out what content to display.

Due to software versatility, it was important to feature essential pieces of information that would be relevant for the majority of website visitors but without overwhelming them.

Our directory (opens new window) displays stores, charities and projects that use BTCPay Server. It helps smaller merchants with marketing. Our earlier directory was powered by WordPress which limited us in open-sourcing it.

BTCPay Server Directory is re-designed from the grounds up. It's light-weight and entirely open-source so that anyone can help us with moderation and code improvements.

As a self-hosted software, we have no way nor any intention to track people who use the software. Directory features are entries that people submitted themselves or posted publicly. It works on a voluntary basis. If you're using BTCPay Server and would like to be featured, feel free to submit an entry.

Both the main website (opens new window) and directory (opens new window) are open-source and can be found on GitHub. If you have the skills, feel free to join us in improving them further.

# 🗺️ Translators needed

BTCPay Server main website has been translated into 32 languages. We're grateful to all our contributors around the internet. Your efforts help us in making a borderless, open-financial future for everyone, a reality.

Changes on the main website, mean that there are new strings for translation and old ones that need to be reviewed. That's why we'd like to invite anyone interested into helping us with translation (opens new window), by joining us on Transifex (opens new window).

# Thank you to our contributors

This release is special. Many of the individuals that participated in this release are first-time contributors to the project which makes us very proud. Furthermore, this is the first version that was strictly coordinated with actual milestones and a plan. We're growing, and as a result, we need to improve our structure to cater the influx of new contributors.

Huge thanks to all of you who've helped in making the v1.0.4.0. We appreciate every single contribution and support.

We hope you'll have as much fun with the new BTCPay Server as we had developing it! As always, if you face any issues or notice a bug, please join our community chat (opens new window) and let us know.

Stay healthy! Here's to the next release! 🍻

Last Updated: 10/30/2024, 2:38:33 PM

+

# 📷 New Wallet Features

Our internal wallet is one of the most private and secure wallets available. It's a full-node reliant wallet with a direct hardware wallet integration (opens new window) that can run over Tor.

Several important features have been added to the wallet:

  • Coin selection
  • QR Code camera scanning
  • Allows generation of a new address in the Wallet Receive page

# Coin Selection

The new coin-selection feature can be found under Advanced Settings and allows you to expertly craft a transaction, using only coins that are desirable for your privacy in this payment situation. For example, paying with coins that are fresh from a coinjoin mix.

To make the selection easier, coin-selection works natively with the wallet labels feature. This means you can label any incoming funds for smoother UTXO management and spending. In the future we'll be adding auto-labelling on incoming coins based on invoices and whether it was a payjoin transaction.

Coin Selection

# QR Code camera scanning

The new scan option (camera icon) lets you use your device's camera to scan an invoice when sending from the wallet. It auto-populates the invoice information so you don't have to manually copy-paste address and amount. More importantly the scan feature opens a door to new use-cases, especially for the BTCPay cross-platform app that we plan to launch in the future.

# 👨‍💻 API improvements

Our mission is to enable the creation of a powerful and flexible ecosystem that enables developers to build using BTCPay Server.

Therefore, we've spent quite a lot of time behind the scenes working on the new API, which we call the Greenfield API. It's still early days but we believe our efforts are starting to bear fruit.

Here are some of the new API features added in v1.0.4.0:

  • Greenfield API permissions rework, to create API keys with very specific permissions
  • Greenfield API C# Client
  • Client Get/Create User API for Greenfield API

If you're a developer with a specific use-case, we'd like to invite you to join the discussion on GitHub (opens new window) and help us craft new features for the new API. Our legacy (BitPay-compatible API) will still be there, do not worry! In the meantime, we have APIs for managing stores and Payment Requests (opens new window) in the works.

# 🐛 Bug fixes and improvements

  • Better RBF and double spend handling
  • Fix: Decimal precision for Liquid assets in BIP21
  • Fix: do not allow 0 amount invoices in crowdfund or payment requests
  • Fix: Make 0 amount invoices marked as paid instantly
  • Bitflyer rate provider support
  • Fix Payment request clone button
  • Rename summary for invoices
  • Add L-CAD support

The full changelog is available here (opens new window).

# How to update?

To update (opens new window) to the latest version, go to your BTCPay Server > Server Settings > Maintenance > Update. If you prefer CLI, you can update with btcpay-update.sh.

# 🏪 New website & merchant directory

New guidelines meant that we had to give our website (opens new window) a new look. We stripped the complexity of an earlier design and invested quite a bit of time in figuring out what content to display.

Due to software versatility, it was important to feature essential pieces of information that would be relevant for the majority of website visitors but without overwhelming them.

Our directory (opens new window) displays stores, charities and projects that use BTCPay Server. It helps smaller merchants with marketing. Our earlier directory was powered by WordPress which limited us in open-sourcing it.

BTCPay Server Directory is re-designed from the grounds up. It's light-weight and entirely open-source so that anyone can help us with moderation and code improvements.

As a self-hosted software, we have no way nor any intention to track people who use the software. Directory features are entries that people submitted themselves or posted publicly. It works on a voluntary basis. If you're using BTCPay Server and would like to be featured, feel free to submit an entry.

Both the main website (opens new window) and directory (opens new window) are open-source and can be found on GitHub. If you have the skills, feel free to join us in improving them further.

# 🗺️ Translators needed

BTCPay Server main website has been translated into 32 languages. We're grateful to all our contributors around the internet. Your efforts help us in making a borderless, open-financial future for everyone, a reality.

Changes on the main website, mean that there are new strings for translation and old ones that need to be reviewed. That's why we'd like to invite anyone interested into helping us with translation (opens new window), by joining us on Transifex (opens new window).

# Thank you to our contributors

This release is special. Many of the individuals that participated in this release are first-time contributors to the project which makes us very proud. Furthermore, this is the first version that was strictly coordinated with actual milestones and a plan. We're growing, and as a result, we need to improve our structure to cater the influx of new contributors.

Huge thanks to all of you who've helped in making the v1.0.4.0. We appreciate every single contribution and support.

We hope you'll have as much fun with the new BTCPay Server as we had developing it! As always, if you face any issues or notice a bug, please join our community chat (opens new window) and let us know.

Stay healthy! Here's to the next release! 🍻

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-0-5-0/index.html b/btcpay-server-1-0-5-0/index.html index 411c90d4..0b84554b 100644 --- a/btcpay-server-1-0-5-0/index.html +++ b/btcpay-server-1-0-5-0/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

The new version of BTCPay Server 1.0.5.0 is now available! This release introduces several major features, improvements and bug fixes.

# What’s new?

It's hard to pick the highlight of the release, since we have two new significant features! Let's start in alphabetical order.

# 🔔Notifications

We heard your feedback about wanting to be notified of important events in your BTCPay Server. Introducing - notifications!

For this release, you will be able to receive notifications within the UI when an invoice has an important status (opens new window) update, such as a confirmed payment, partially paid (underpaid), invalid state (paid, but failed to confirm within specified amount of blocks). Besides invoice status, we've added notifications for payouts as well.

The notifications page aggregates all notifications so you can manage them with batch actions.

Thanks to all the heavy-lifting from rockstardev (opens new window), the system is flexible and expandable with ease, and we will add more notifications with new releases. As notification types grow, we intend to add notification preferences, so you get to decide which events matter to you. We'll also look into exposing the notifications through our ever-growing GreenField API along with other means of communication, such as email.

# 🧾Pull payments

Traditionally, to make a Bitcoin payment, a receiver shares their bitcoin address and the sender later sends money to that address. Such system is called Push payment as the sender initiates the payment while the receiver may be unavailable, in effect pushing the payment to the receiver.

However, with 1.0.5.0, we added a feature that reverses the roles. With pull payments the sender allows the receiver to pull the payment at the receiver's convenience.

A sender creates a pull payment, specifies the maximum amount that can be pulled out of their wallet and shares a link to a public page with a receiver. The receiver then, at their convenience, enters their payment destination (such as a Bitcoin address or a BIP21 payment link) and specifies how much they wish to pull from the sender (which can be a portion of the pull payment or the entire amount).

Here's a simple example: Imagine you hired a freelancer - Tom, to create a logo for your company. The total is 0.003 BTC, but you agreed to work in stages : outline, coloring, and high-res file.

You create a pull payment of 0.003 BTC and share a link with Tom. Once a stage is complete, Tom visits the link, creates a payout asking to send 0.001 BTC to his address. You check the files, authorize the payout and the funds have now been received by Tom!

At the moment, payouts need to be authorized, but we intend to allow automation with our hot-wallet feature (opens new window), for those willing to hold a small amount in a hot wallet to automate the payouts even further.

It's still early days for pull payments. We are inviting you to test it and help us improve the UI. There are many interesting use-cases this can tackle, but we need community feedback in order to iron it out and adjust for particular use-cases.

For more in-depth info on pull payments, check out our documentation (opens new window).

# ↩️Refunds

Up until now, merchants had to manually issue refunds. The process required a lot of back and forth between a sender and a receiver. The merchant had to ask for a refund address, calculate the preferred rate, manually add that to the wallet and broadcast the transaction.

Refund is a familiar concept built on top of the pull payments feature. In case of a refund, a merchant just needs to go to the invoice, click Issue refund , select the appropriate rate and share a link with a customer.

The customer will then input their address and claim a refund. Once a customer claims a refund, the merchant will get a notification and can authorize it in a click. In future releases, we will look into payouts which are approved to be paid out instantly, without the authorization, in case a merchant prefers that.

# 💰Wallet improvements

We have big plans for our built-in wallet. With each release, our focus is on adding features and ironing out the interface. More importantly we plan to release a full API for the wallet. Our documentation of the wallet features has been improved recently and you can check it out here (opens new window), in case you're interested in learning more.

# Improve fee selection UI in wallet send screen

If you've been using the built-in BTCPay Server wallet to pay with Payjoin (opens new window), you no longer need to manually copy-paste the BIP21 payment link and can now click on the "Open in wallet" button like a natively installed Bitcoin wallet.

The payment link data will automatically be loaded to your preset default wallet. To use this feature, simply go to Wallets->Manage->Settings->Actions->Open this bitcoin wallet on payment link. This works with any application or website that uses BIP21 (opens new window) to request a payment but can currently only be used on a select number of browsers (opens new window).

# Privacy enhancements and Payjoin level up

After we released Payjoin, there has been continuous (opens new window) discussions (opens new window) around improving the protocol and standardizing it into the new Payjoin BIP78 (opens new window). In addition, we've learnt of additional privacy enhancements that have now been applied to how we build and sign transactions. One example is that now, by default, RBF support is now randomized in order to not have a consistent fingerprint for a default BTCPay Server spending transaction.

# 👨‍💻Greenfield API lift-off!🚀

We remain committed to building a flexible yet straightforward API for developers. Our end-goal is to provide the thousands of hours of work put into the BTCPay Server technology stack in a clean interface so that everybody can use it to build a project or start a business with a solid foundation. We've added several new features and also launched a public API documentation page (opens new window).

# The BTCPay Server Lightning node API

We've exposed our internal code for communicating with the Lightning network as part of GreenField. This means that irrespective of which lightning implementation you chose, you can use one common API for your needs. We currently support LND, CLightning, Eclair & Ptarmigan.

# Additional Changes

  • New server info API
  • New Payment Requests API
  • Expand Store API
  • Consistency applied across all endpoint models and responses

The API is still far from done. We're slowly adding features and ironing things out as we go along. If you're interested in providing feedback, feel free to join our discussions here (opens new window).

# 🐛 Bug fixes and improvements

Here’s a rundown of the squashed bugs, minor changes and improvements in this version:

  • Do not auto-complete generate wallet form
  • Make sure copied notification is positioned correctly on checkout
  • Fix broken documentation links
  • Fix POS app item display issues
  • Fix Invoice checkout modal close button theme issues
  • Fix display of replaced transactions in invoice list
  • Support BitPay invoice creation property "paymentCurrencies"
  • Update lightning support warning text
  • Add support for Cobo Vault and Wasabi wallet file imports
  • Rename form items in Wallet Send UI
  • Fix issue with payment requests not expiring
  • Fix broken Bootstrap theme generator link
  • Use proper Bitcoin symbol (₿) in UI instead of "BTC"
  • Ensure you can only sign with hot wallet if you created the hot wallet via seed
  • Respect JsonResponse option in payment button endpoint even for failures
  • Opt out of dotnet telemetry in Docker containers
  • Fix issue with POS app if button text had special formatting
  • Autofocus 2FA-code input on page load
  • Add Orderid to BitPay IPN format
  • Require Owner role to the store for modifying store via Greenfield
  • Fix css styling classes

The full changelog is available here (opens new window).

# How to update?

To update (opens new window) to the latest version, go to your BTCPay Server > Server Settings > Maintenance > Update. If you prefer CLI, you can update with btcpay-update.sh.

# 📄New Documentation

We began working on design consistency in an earlier major release (opens new window), where we improved the appearance of our official website (opens new window) and merchant's directory (opens new window).

In this release, we've decided to give our documentation an entire overhaul. We've adjusted not only design but the entire generation system.

BTCPay Server Documentation now has dark mode, multi-repo doc loading, built-in video support, better search functionality via Algolia and an improved structure and overall experience.

Wallet setup (opens new window) is an important step. That's why the part of the docs that explains how to configure a wallet has been improved and re-structured.

The entire documentation stack is open-sourced (opens new window). You can read more on the technical aspect of how our docs work in this (opens new window) blog post.

# Thank you to our contributors

Huge thanks to all of you who’ve helped in making of the v1.0.5.0. We appreciate every single contribution and support.

As always, if you face any issues or notice a bug, please join our community chat (opens new window) and let us know.

In case you've missed the big news yesterday, we've received 150,000 USD (received and held in Bitcoin) from Kraken (opens new window). Check out our blog announcement (opens new window).

Stay healthy! Here’s to the next release! 🍻

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

The new version of BTCPay Server 1.0.5.0 is now available! This release introduces several major features, improvements and bug fixes.

# What’s new?

It's hard to pick the highlight of the release, since we have two new significant features! Let's start in alphabetical order.

# 🔔Notifications

We heard your feedback about wanting to be notified of important events in your BTCPay Server. Introducing - notifications!

For this release, you will be able to receive notifications within the UI when an invoice has an important status (opens new window) update, such as a confirmed payment, partially paid (underpaid), invalid state (paid, but failed to confirm within specified amount of blocks). Besides invoice status, we've added notifications for payouts as well.

The notifications page aggregates all notifications so you can manage them with batch actions.

Thanks to all the heavy-lifting from rockstardev (opens new window), the system is flexible and expandable with ease, and we will add more notifications with new releases. As notification types grow, we intend to add notification preferences, so you get to decide which events matter to you. We'll also look into exposing the notifications through our ever-growing GreenField API along with other means of communication, such as email.

# 🧾Pull payments

Traditionally, to make a Bitcoin payment, a receiver shares their bitcoin address and the sender later sends money to that address. Such system is called Push payment as the sender initiates the payment while the receiver may be unavailable, in effect pushing the payment to the receiver.

However, with 1.0.5.0, we added a feature that reverses the roles. With pull payments the sender allows the receiver to pull the payment at the receiver's convenience.

A sender creates a pull payment, specifies the maximum amount that can be pulled out of their wallet and shares a link to a public page with a receiver. The receiver then, at their convenience, enters their payment destination (such as a Bitcoin address or a BIP21 payment link) and specifies how much they wish to pull from the sender (which can be a portion of the pull payment or the entire amount).

Here's a simple example: Imagine you hired a freelancer - Tom, to create a logo for your company. The total is 0.003 BTC, but you agreed to work in stages : outline, coloring, and high-res file.

You create a pull payment of 0.003 BTC and share a link with Tom. Once a stage is complete, Tom visits the link, creates a payout asking to send 0.001 BTC to his address. You check the files, authorize the payout and the funds have now been received by Tom!

At the moment, payouts need to be authorized, but we intend to allow automation with our hot-wallet feature (opens new window), for those willing to hold a small amount in a hot wallet to automate the payouts even further.

It's still early days for pull payments. We are inviting you to test it and help us improve the UI. There are many interesting use-cases this can tackle, but we need community feedback in order to iron it out and adjust for particular use-cases.

For more in-depth info on pull payments, check out our documentation (opens new window).

# ↩️Refunds

Up until now, merchants had to manually issue refunds. The process required a lot of back and forth between a sender and a receiver. The merchant had to ask for a refund address, calculate the preferred rate, manually add that to the wallet and broadcast the transaction.

Refund is a familiar concept built on top of the pull payments feature. In case of a refund, a merchant just needs to go to the invoice, click Issue refund , select the appropriate rate and share a link with a customer.

The customer will then input their address and claim a refund. Once a customer claims a refund, the merchant will get a notification and can authorize it in a click. In future releases, we will look into payouts which are approved to be paid out instantly, without the authorization, in case a merchant prefers that.

# 💰Wallet improvements

We have big plans for our built-in wallet. With each release, our focus is on adding features and ironing out the interface. More importantly we plan to release a full API for the wallet. Our documentation of the wallet features has been improved recently and you can check it out here (opens new window), in case you're interested in learning more.

# Improve fee selection UI in wallet send screen

If you've been using the built-in BTCPay Server wallet to pay with Payjoin (opens new window), you no longer need to manually copy-paste the BIP21 payment link and can now click on the "Open in wallet" button like a natively installed Bitcoin wallet.

The payment link data will automatically be loaded to your preset default wallet. To use this feature, simply go to Wallets->Manage->Settings->Actions->Open this bitcoin wallet on payment link. This works with any application or website that uses BIP21 (opens new window) to request a payment but can currently only be used on a select number of browsers (opens new window).

# Privacy enhancements and Payjoin level up

After we released Payjoin, there has been continuous (opens new window) discussions (opens new window) around improving the protocol and standardizing it into the new Payjoin BIP78 (opens new window). In addition, we've learnt of additional privacy enhancements that have now been applied to how we build and sign transactions. One example is that now, by default, RBF support is now randomized in order to not have a consistent fingerprint for a default BTCPay Server spending transaction.

# 👨‍💻Greenfield API lift-off!🚀

We remain committed to building a flexible yet straightforward API for developers. Our end-goal is to provide the thousands of hours of work put into the BTCPay Server technology stack in a clean interface so that everybody can use it to build a project or start a business with a solid foundation. We've added several new features and also launched a public API documentation page (opens new window).

# The BTCPay Server Lightning node API

We've exposed our internal code for communicating with the Lightning network as part of GreenField. This means that irrespective of which lightning implementation you chose, you can use one common API for your needs. We currently support LND, CLightning, Eclair & Ptarmigan.

# Additional Changes

  • New server info API
  • New Payment Requests API
  • Expand Store API
  • Consistency applied across all endpoint models and responses

The API is still far from done. We're slowly adding features and ironing things out as we go along. If you're interested in providing feedback, feel free to join our discussions here (opens new window).

# 🐛 Bug fixes and improvements

Here’s a rundown of the squashed bugs, minor changes and improvements in this version:

  • Do not auto-complete generate wallet form
  • Make sure copied notification is positioned correctly on checkout
  • Fix broken documentation links
  • Fix POS app item display issues
  • Fix Invoice checkout modal close button theme issues
  • Fix display of replaced transactions in invoice list
  • Support BitPay invoice creation property "paymentCurrencies"
  • Update lightning support warning text
  • Add support for Cobo Vault and Wasabi wallet file imports
  • Rename form items in Wallet Send UI
  • Fix issue with payment requests not expiring
  • Fix broken Bootstrap theme generator link
  • Use proper Bitcoin symbol (₿) in UI instead of "BTC"
  • Ensure you can only sign with hot wallet if you created the hot wallet via seed
  • Respect JsonResponse option in payment button endpoint even for failures
  • Opt out of dotnet telemetry in Docker containers
  • Fix issue with POS app if button text had special formatting
  • Autofocus 2FA-code input on page load
  • Add Orderid to BitPay IPN format
  • Require Owner role to the store for modifying store via Greenfield
  • Fix css styling classes

The full changelog is available here (opens new window).

# How to update?

To update (opens new window) to the latest version, go to your BTCPay Server > Server Settings > Maintenance > Update. If you prefer CLI, you can update with btcpay-update.sh.

# 📄New Documentation

We began working on design consistency in an earlier major release (opens new window), where we improved the appearance of our official website (opens new window) and merchant's directory (opens new window).

In this release, we've decided to give our documentation an entire overhaul. We've adjusted not only design but the entire generation system.

BTCPay Server Documentation now has dark mode, multi-repo doc loading, built-in video support, better search functionality via Algolia and an improved structure and overall experience.

Wallet setup (opens new window) is an important step. That's why the part of the docs that explains how to configure a wallet has been improved and re-structured.

The entire documentation stack is open-sourced (opens new window). You can read more on the technical aspect of how our docs work in this (opens new window) blog post.

# Thank you to our contributors

Huge thanks to all of you who’ve helped in making of the v1.0.5.0. We appreciate every single contribution and support.

As always, if you face any issues or notice a bug, please join our community chat (opens new window) and let us know.

In case you've missed the big news yesterday, we've received 150,000 USD (received and held in Bitcoin) from Kraken (opens new window). Check out our blog announcement (opens new window).

Stay healthy! Here’s to the next release! 🍻

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-0-5-4/index.html b/btcpay-server-1-0-5-4/index.html index c2c5e590..f32ea700 100644 --- a/btcpay-server-1-0-5-4/index.html +++ b/btcpay-server-1-0-5-4/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

Today, we released the new BTCPay Server - v1.0.5.4 (opens new window). This release introduces a new, default Bitcoin-only build, UX and UI improvements, fixes several bugs and two low-risk security vulnerabilities.

# 🆕What's new in v1.0.5.4?

# ⚒️ Bitcoin-only build

While Bitcoin has always been the focus of the project, we've allowed altcoin communities to integrate altcoins (opens new window) and maintain them. In the beginning, the impact on the source code has been minimal.

However, people started requesting and adding cryptocurrencies with radically different designs such as: Monero, Liquid and recently ETH/ERC20 (opens new window). Adding cryptocurrencies with different designs presents a risk that a bug in one of them may affect the stability of the entire software, even for people that don't enable them.

BTCPay Server now has two separate builds.

The Bitcoin only build and the Altcoin build. The Bitcoin build is the new default and excludes every bit of code related to altcoins from the source code. The Altcoin build includes the source code of all altcoins integration. We discussed this with the contributor who is working on ETH support and they built the additional Bitcoin-only mode as part of their efforts.

We considered creating a separate BTCPay Server fork for altcoins and let each coin maintain their own fork. This strategy used by Electrum. But from experience, it means a fragmentation of the contributors and a decrease of overall quality of the software (some bugs are not fixed everywhere and some features are not available everywhere).

# What does this mean for BTCPay Server users?

  • If you don't have altcoins enabled, by default you'll be running the bitcoin only build, where no code related to altcoins is included.
  • If you have altcoin(s) enabled, you'll be running the altcoin build.
  • To disable the altcoin build, simply remove altcoin(s) (opens new window) from your setup and re-run it.
  • When you switch from altcoin to bitcoin only build, all altcoin related payment data in the invoices will no longer be visible.
  • If you are unsure whether or not to accept altcoins, we advise you to use Bitcoin only. It will decrease the attack surface, improve the stability, and decrease the resource consumption needed to operate your server.

# What does this mean for BTCPay Server developers?

  • The Debug and Release configuration of BTCPay Server are Bitcoin only.
  • The development time dependencies BTCPayServer.Tests/docker-compose.yml do not have any altcoin related images anymore.
  • The default launch profile (Bitcoin) does not connect to any altcoin dependency anymore.
  • Our CI is running all the tests on the Altcoins-Release build (it increases test coverage)
  • If you are interested into altcoins support development, read our documentation (opens new window).

Since the CI tests are using the Altcoins-Release build, it is possible that your PR is working locally, but fails on CI.

  • If the compilation fails, check if you can easily fix it.
  • If a test fails, check if that's a real bug in your code. (activating altcoins may reveal bugs that also exists in the Bitcoin only build but were not exposed)
  • If your PR revealed a bug in an altcoin, you can just deactivate the test, we will not ask you to fix it, nor we will refuse to merge your PR for this. We will notify the altcoin maintainer. (The person who created the PR for the integration of a particular altcoin)

# 👨‍💻Login page re-designed

Our login page has been re-designed once again for a sleeker look with less distractions.

# ✔️Recovery phrase page

When generating a new wallet, we will now show the recovery phrase on a separate page with clearer instructions on what you have to do. The text will be different for hot wallet (where the private key remains on the server) and regular wallet where the key is wiped after you back it up.

# 🔔Multi-selection of invoices and notifications

You'll now receive a notification when a new version of BTCPay Server has been released (varies on deployment method).

With v1.0.5.4, it's possible to select multiple invoices and notifications and perform a batched action.

# 🐛Bug Fixes

  • Fix: In the PoS app, embedded CSS was ignored
  • Fix error when modifying user who does not have admin right
  • Fix null instance on invoice when using paymentCurrencies
  • Fix: Sluggish scrolling in pages having a rich text editor
  • Fix: Crash in payment request if there is several invoice in "new" state
  • Fix: Crowdfund app doesn't count old invoices

# 🔐Security fixes

In this release, we've fixed two security vulnerabilities, both properly disclosed by benichmt1 (opens new window).

  • Prevent script injection via X-Forwarded-For
  • Prevent script injection via the csv invoice export

The full changelog is available here (opens new window).

# How to update?

To update (opens new window) to the latest version, go to your BTCPay Server > Server Settings > Maintenance > Update. If you prefer CLI, you can update with btcpay-update.sh.

# BTCPay Server Foundation website

We've redone the design of the BTCPay Server Foundation (opens new window) website. It is now consistent and optimized according to our design guidelines (opens new window).

# Thank you to our contributors

Huge thanks to all of you who’ve helped in making of the **v1.0.5.**4. We appreciate every single contribution and support.

benichmt1 (opens new window) bolatovumar (opens new window) britttttk (opens new window) dennisreimann (opens new window) dstrukt (opens new window) eskyee (opens new window) kukks (opens new window) msafi (opens new window) nicolasdorier (opens new window) rockstardev (opens new window) xpayserver (opens new window)

As always, if you face any issues or notice a bug, please join our community chat (opens new window) and let us know.

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Today, we released the new BTCPay Server - v1.0.5.4 (opens new window). This release introduces a new, default Bitcoin-only build, UX and UI improvements, fixes several bugs and two low-risk security vulnerabilities.

# 🆕What's new in v1.0.5.4?

# ⚒️ Bitcoin-only build

While Bitcoin has always been the focus of the project, we've allowed altcoin communities to integrate altcoins (opens new window) and maintain them. In the beginning, the impact on the source code has been minimal.

However, people started requesting and adding cryptocurrencies with radically different designs such as: Monero, Liquid and recently ETH/ERC20 (opens new window). Adding cryptocurrencies with different designs presents a risk that a bug in one of them may affect the stability of the entire software, even for people that don't enable them.

BTCPay Server now has two separate builds.

The Bitcoin only build and the Altcoin build. The Bitcoin build is the new default and excludes every bit of code related to altcoins from the source code. The Altcoin build includes the source code of all altcoins integration. We discussed this with the contributor who is working on ETH support and they built the additional Bitcoin-only mode as part of their efforts.

We considered creating a separate BTCPay Server fork for altcoins and let each coin maintain their own fork. This strategy used by Electrum. But from experience, it means a fragmentation of the contributors and a decrease of overall quality of the software (some bugs are not fixed everywhere and some features are not available everywhere).

# What does this mean for BTCPay Server users?

  • If you don't have altcoins enabled, by default you'll be running the bitcoin only build, where no code related to altcoins is included.
  • If you have altcoin(s) enabled, you'll be running the altcoin build.
  • To disable the altcoin build, simply remove altcoin(s) (opens new window) from your setup and re-run it.
  • When you switch from altcoin to bitcoin only build, all altcoin related payment data in the invoices will no longer be visible.
  • If you are unsure whether or not to accept altcoins, we advise you to use Bitcoin only. It will decrease the attack surface, improve the stability, and decrease the resource consumption needed to operate your server.

# What does this mean for BTCPay Server developers?

  • The Debug and Release configuration of BTCPay Server are Bitcoin only.
  • The development time dependencies BTCPayServer.Tests/docker-compose.yml do not have any altcoin related images anymore.
  • The default launch profile (Bitcoin) does not connect to any altcoin dependency anymore.
  • Our CI is running all the tests on the Altcoins-Release build (it increases test coverage)
  • If you are interested into altcoins support development, read our documentation (opens new window).

Since the CI tests are using the Altcoins-Release build, it is possible that your PR is working locally, but fails on CI.

  • If the compilation fails, check if you can easily fix it.
  • If a test fails, check if that's a real bug in your code. (activating altcoins may reveal bugs that also exists in the Bitcoin only build but were not exposed)
  • If your PR revealed a bug in an altcoin, you can just deactivate the test, we will not ask you to fix it, nor we will refuse to merge your PR for this. We will notify the altcoin maintainer. (The person who created the PR for the integration of a particular altcoin)

# 👨‍💻Login page re-designed

Our login page has been re-designed once again for a sleeker look with less distractions.

# ✔️Recovery phrase page

When generating a new wallet, we will now show the recovery phrase on a separate page with clearer instructions on what you have to do. The text will be different for hot wallet (where the private key remains on the server) and regular wallet where the key is wiped after you back it up.

# 🔔Multi-selection of invoices and notifications

You'll now receive a notification when a new version of BTCPay Server has been released (varies on deployment method).

With v1.0.5.4, it's possible to select multiple invoices and notifications and perform a batched action.

# 🐛Bug Fixes

  • Fix: In the PoS app, embedded CSS was ignored
  • Fix error when modifying user who does not have admin right
  • Fix null instance on invoice when using paymentCurrencies
  • Fix: Sluggish scrolling in pages having a rich text editor
  • Fix: Crash in payment request if there is several invoice in "new" state
  • Fix: Crowdfund app doesn't count old invoices

# 🔐Security fixes

In this release, we've fixed two security vulnerabilities, both properly disclosed by benichmt1 (opens new window).

  • Prevent script injection via X-Forwarded-For
  • Prevent script injection via the csv invoice export

The full changelog is available here (opens new window).

# How to update?

To update (opens new window) to the latest version, go to your BTCPay Server > Server Settings > Maintenance > Update. If you prefer CLI, you can update with btcpay-update.sh.

# BTCPay Server Foundation website

We've redone the design of the BTCPay Server Foundation (opens new window) website. It is now consistent and optimized according to our design guidelines (opens new window).

# Thank you to our contributors

Huge thanks to all of you who’ve helped in making of the **v1.0.5.**4. We appreciate every single contribution and support.

benichmt1 (opens new window) bolatovumar (opens new window) britttttk (opens new window) dennisreimann (opens new window) dstrukt (opens new window) eskyee (opens new window) kukks (opens new window) msafi (opens new window) nicolasdorier (opens new window) rockstardev (opens new window) xpayserver (opens new window)

As always, if you face any issues or notice a bug, please join our community chat (opens new window) and let us know.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-0-5-6/index.html b/btcpay-server-1-0-5-6/index.html index 4f75624f..d52c6069 100644 --- a/btcpay-server-1-0-5-6/index.html +++ b/btcpay-server-1-0-5-6/index.html @@ -12,7 +12,7 @@ - + @@ -54,7 +54,7 @@ GitHub (opens new window)

Today we're happy to announce the release of the BTCPay Server v 1.0.5.6. The highlight of this version is the long-awaited Shopify support, along with other new features, improvements and bug-fixes.

# What's new in 1.0.5.6? 🆕

# Shopify Support 🛍️

On the 18th of January 2018, a user named sysout opened a notorious feature request titled "Any idea about Shopify integration? The "Wen Shopify" issue #36 (opens new window) has been haunting us ever since.

As a self-hosted software solution, it wasn't easy for us to get the integration working. Luckily, our friend Rui Gomes (opens new window) from OpenNode (opens new window), pinpointed a work-around that was later implemented by community member DJSeeds (opens new window), who on-boarded quite a few merchants, including TFTC (opens new window).

It took us a bit of time to brainstorm an ideal solution that could be built on top of the original idea, but at the same time also provide easier UX and improved functionality. This challenging task was manhandled by our two wizards, r0ckstardev (opens new window) and Kukks (opens new window) and the end-result of their coding wizardry was, as always, pure magic.

As you may have guessed by now, starting with v1.0.5.6 you can now finally accept Bitcoin payments in your Shopify store via BTCPay Server!

If you own a Shopify store and would like to use BTCPay Server to accept payments, follow our official Shopify Integration Guide. (opens new window)

The video below showcases the workflow step by step.

https://youtu.be/0Z8vraKab64

# Simple Point Of Sale 🛒

It's been a while since our good ol' mariodian (opens new window) appeared on the release-notes. For those of you who don't know, he implemented the cool, advanced point of sale cart app (opens new window) into the BTCPay Server. Mario re-appearing meant only one thing - the PoS app now has a new feature - the light view.

The light-view option in the pos app allows you to have a minimal-looking keypad point of sale system enabling quick invoice creation on the go.

# Partial Invoice Refund 🧾

In v1.0.5.0 (opens new window) we introduced invoice refunds, for easier payment management. Sometimes, a merchant needs to issue a refund for a portion of the order. Starting with this release, you will be able to issue partial refunds with a custom amount and currency of your choice.

# New labels for payment requests, apps and payouts 🏷️

As a part of our ongoing efforts of improving users privacy by providing better UTXO management, we now have new automatic labels for apps and payment requests. -This allows you to use the coin control feature with more clarity on the transaction origins and without having to label them manually.

# Fiat entry in wallet 💲

Quite a few of our community members requested to have a fiat denomination entry in the wallet so they can send funds to family and friends more easily. An additional field has been added in Wallet > Send tab to cater to that need.

# Invoice log severity 🚨

When you're dealing with payments, you probably want to have a clear look on the invoice log in case something goes wrong. Our invoice log section has been re-wrapped and now adds a clearer warning message in case of an error so that you can pinpoint the problem in no time.

# Invoice API 🧑‍💻

We're very proud of the new API improvements. Today we're bringing you the new invoice API. Bear in mind it's still not fully complete and that we will finalize it in the next release. The current BitPay compatible invoice API will stay fully functional and will not be going away.

# Improvements and bug fixes 🐛

Besides the fresh features, this release brings in quite a lot of improvements

  • Update PSBT and PSBT sent to Hardware wallet will include non_witness_utxo by default, when possible, to match Bitcoin Core 0.20.1 behavior.
  • Adjust invoice badge styling
  • Invoice notification email improvements
  • Improvement of the UX flow for requesting an API Key of a BTCPay Server user
  • Don't send notification email for expired invoices
  • Greenfield API: Add Roles property to the user data.
  • Remove Changelly integration
  • Better wording in transaction list page
  • Fix alerts text break.
  • Remove Tor link from navbar
  • Improve invoices list view
  • Improve sync progress dialog
  • Show index of payment address for on-chain payments

We've fixed several bugs in this release. You can take a look at which bugs have been squashed below.

  • When an invoice is partially paid on-chain and allow off-chain, a new lightning network invoice should be created for the remainder of the payment.
  • Changing the inventory of a PoS item was not working properly
  • Greenfield API: The internal lightning API was returning error 403, even when used as an administrator
  • Using lightning charge as lightning network invoice provider over HTTP was not working properly
  • Fix: If the hot wallet failed to sign a PSBT, should not show a blank page crash
  • Fix bug: The wallet was sending only round amount of sat per byte
  • "Attempt MySql Fix"
  • Fix HitBTC rate provider

For more details on the changes, please check our full changelog here (opens new window).

# How to update?

To update (opens new window) to the latest version, go to your BTCPay Server > Server Settings > Maintenance > Update. If you prefer CLI, you can update with btcpay-update.sh.

# Thank you to our contributors!

Huge thanks to all of you who’ve helped in making of the v1.0.5.6! We appreciate every single contribution and support.

apotdevin (opens new window) astupidmoose (opens new window) bolatovumar (opens new window) britttttk (opens new window) dennisreimann (opens new window) dspicher (opens new window) dstrukt (opens new window) eskyee (opens new window) kukks (opens new window) l33d4n (opens new window) maltokyo (opens new window) mariodian (opens new window) mlkui (opens new window) nicolasdorier (opens new window) pageman (opens new window) pavlenex (opens new window) rockstardev (opens new window) sotblad (opens new window) xpayserver (opens new window) zaxounette (opens new window)

As always, if you face any issues or notice a bug, please join our community chat (opens new window) and let us know. 💚

Last Updated: 10/30/2024, 2:38:33 PM

+This allows you to use the coin control feature with more clarity on the transaction origins and without having to label them manually.

# Fiat entry in wallet 💲

Quite a few of our community members requested to have a fiat denomination entry in the wallet so they can send funds to family and friends more easily. An additional field has been added in Wallet > Send tab to cater to that need.

# Invoice log severity 🚨

When you're dealing with payments, you probably want to have a clear look on the invoice log in case something goes wrong. Our invoice log section has been re-wrapped and now adds a clearer warning message in case of an error so that you can pinpoint the problem in no time.

# Invoice API 🧑‍💻

We're very proud of the new API improvements. Today we're bringing you the new invoice API. Bear in mind it's still not fully complete and that we will finalize it in the next release. The current BitPay compatible invoice API will stay fully functional and will not be going away.

# Improvements and bug fixes 🐛

Besides the fresh features, this release brings in quite a lot of improvements

  • Update PSBT and PSBT sent to Hardware wallet will include non_witness_utxo by default, when possible, to match Bitcoin Core 0.20.1 behavior.
  • Adjust invoice badge styling
  • Invoice notification email improvements
  • Improvement of the UX flow for requesting an API Key of a BTCPay Server user
  • Don't send notification email for expired invoices
  • Greenfield API: Add Roles property to the user data.
  • Remove Changelly integration
  • Better wording in transaction list page
  • Fix alerts text break.
  • Remove Tor link from navbar
  • Improve invoices list view
  • Improve sync progress dialog
  • Show index of payment address for on-chain payments

We've fixed several bugs in this release. You can take a look at which bugs have been squashed below.

  • When an invoice is partially paid on-chain and allow off-chain, a new lightning network invoice should be created for the remainder of the payment.
  • Changing the inventory of a PoS item was not working properly
  • Greenfield API: The internal lightning API was returning error 403, even when used as an administrator
  • Using lightning charge as lightning network invoice provider over HTTP was not working properly
  • Fix: If the hot wallet failed to sign a PSBT, should not show a blank page crash
  • Fix bug: The wallet was sending only round amount of sat per byte
  • "Attempt MySql Fix"
  • Fix HitBTC rate provider

For more details on the changes, please check our full changelog here (opens new window).

# How to update?

To update (opens new window) to the latest version, go to your BTCPay Server > Server Settings > Maintenance > Update. If you prefer CLI, you can update with btcpay-update.sh.

# Thank you to our contributors!

Huge thanks to all of you who’ve helped in making of the v1.0.5.6! We appreciate every single contribution and support.

apotdevin (opens new window) astupidmoose (opens new window) bolatovumar (opens new window) britttttk (opens new window) dennisreimann (opens new window) dspicher (opens new window) dstrukt (opens new window) eskyee (opens new window) kukks (opens new window) l33d4n (opens new window) maltokyo (opens new window) mariodian (opens new window) mlkui (opens new window) nicolasdorier (opens new window) pageman (opens new window) pavlenex (opens new window) rockstardev (opens new window) sotblad (opens new window) xpayserver (opens new window) zaxounette (opens new window)

As always, if you face any issues or notice a bug, please join our community chat (opens new window) and let us know. 💚

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-0-6-0/index.html b/btcpay-server-1-0-6-0/index.html index c1282f70..2ee60548 100644 --- a/btcpay-server-1-0-6-0/index.html +++ b/btcpay-server-1-0-6-0/index.html @@ -12,7 +12,7 @@ - + @@ -53,7 +53,7 @@ (opens new window) GitHub (opens new window)

We're excited to announce the new version of the BTCPay Server - v1.0.6.0! The new release introduces new features, UI improvements, Greenfield API additions, a bunch of bug fixes and a patch for a privacy vulnerability found in relation the payment button feature.

If you're using payment button in any form, we strongly recommend that you update your BTCPay Server. UPDATE: CVE-2021-29249 has been assigned to this issue.

# 🆕What's new in v1.0.6.0?

Here's a highlight of some of the features added in this version. For an in-depth look, check the full changelog (opens new window).

# 🏪Store Setup Improvements

Setting up a BTCPay Server store and wallet can be an overwhelming experience for new users. That's why in the next few releases, we are focusing on reducing the friction of that process. The first step towards a smoother setup experience is the simplification of the store setup page.

We've stripped down the complexity and got rid of the technical terms that most people aren't familiar with. The wallet setup call to action is now above the fold, simplified and clearer. Small hints have been added to notify you if the store has not been set up entirely. The next big step is improving the initial wallet setup.

# 🧾Unified QR Code for on-chain and off-chain payment

Quite a few of you reported that sometimes it's hard for a payee to understand the difference between the on-chain and off-chain lightning payment methods. We've added opt-in support to generate payment links and QR codes for the on-chain payment method that will also suggest a lightning invoice that could be paid instead if the wallet supports it. This reduces the need of the customer having to switch payment methods on the BTCPay Server invoice and having to think about the difference.

The current payment links and QR codes for on-chain currently use the BIP21 (opens new window) format, and is potentially extended with Payjoin support (opens new window). This new feature extends this format, by adding a lightning invoice (opens new window) that the wallet can choose to pay instead.

An example of this:

bitcoin:bc1qyq007w2qdhru9nwfas8lfh6rt458jtyv8anaq4?amount=0.00051929&pj=https://btcpay.kukks.org/BTC/pj&lightning=LNBC519290N1P0MU4TJPP5VENKU53FU2C663X8PF88WU5X6G028N80L5A0AWYQNJZL03NCVCWQDP22PSKJEPQW3HJQJM4DD4HXGPGFAEXGETJYPY5GW3Q9YXQZURCQPJSP559PU78TP2V6ADS49WK0TN43FFP9QJJS7YD4FHXU58QKQJFYKM8LQRZJQ2MGDN8K2HKWNTK804XCPUVMHYVN7L8ZYJ4HEZA7WTLT8NWHRPLQZZ0HZYQQGKQQQQQQQP7SQQQQRSQQ9Q9QY9QSQD9H904LKX3W0GXUCGYXDPZJCTUYTAGWKJPFWFZ9HUS6LPHK3W3SNPD9ENWQN29WJFK3XUAR2UV9NMX7HEU3806HS2X58A3PR3DJUWHCQ2XK0J4

# 🎨Re-designed payment requests, pull payments and refunds pages

In v1.0.6.0, your favorite pages to receive and send payments have been overhauled. Now, it's way easier to request a payment or to issue a refund.

# 🆒Pay Button - QR Code

We've listened to your feedback and now provide a link to the payment button that you can share with people, or encode it in a QR code that can be printed out for quickly accepting donations/payments on demand, without reusing addresses or bypassing BTCPay Server's invoices and accounting.

# ⚠️Zero-confirmation invoices warning

A small warning has been added for those trying to accept 0-confirmation invoice. While we can't prevent users from using 0-confirmation, we can educate and actively discourage it.

# 🔔Notifications Preferences

In this release we've added the ability to filter out the notifications on a user level as well as allowing server administrators to disable live notifications. From now on, you can de-clutter your inbox and only be notified on the events that matter to you.

# Greenfield Invoice API

Our new invoice API (opens new window) is finally feature complete! We recommend that all new integrations are done using the GreenField API (opens new window) which enables much more functionality. The BitPay compatible invoice API will remain available.

# Greenfield API Webhooks

As part of achieving feature parity on the previously mentioned Invoice API with the bitpay version, we've build a a webhooks system. Webhooks allow you to receive notifications about events related to your BTCPay Server. For this initial version, we've focused on webhooks around your store's invoices. You can read more about it in our API documentation. (opens new window)

Those webhooks can be configured either via the User Interface, or via the Greenfield API (which you can browse by going to the /docs page of your BTCPay Server instance)

# Payment Button Vulnerability fix

Payment Button Patch

Users using the payment button in any form are strongly encouraged to update their instances to v1.0.6.0 since it contains a patch for a privacy vulnerability we discovered.

To update (opens new window) to the latest version, go to your BTCPay Server > Server Settings > Maintenance > Update. If you prefer CLI, you can update with btcpay-update.sh.

# BTCPay Server Plugins

We've saved the best for last. BTCPay Server v1.0.6.0 introduces an entirely new concept - a plugin system.

Over the years, BTCPay Server has evolved from a simple payment server to a Bitcoin technology stack. The use-cases for the software expanded way beyond our wildest imagination and the feature requests keep pilling on. In order to allow greater flexibility and scalability while keeping the simplicity of software's core, we're introducing an experimental plugin system.

The plugin system should allow developers to build easier on top of BTCPay without relying on the core team to develop, agree, or review the changes. These plugins can be maintained separately and activated by users on demand. This introduces a whole new vision for BTCPay, a payment platform or as we like to call it, the WordPress of Bitcoin.

Please be aware that any plugins you see in the available UI are just proof of concepts and won't work properly just yet. Our first goal is to clean up the UI, and add turn certain existing features that aren't widely used into plugins. The migration of these features will be a whole new challenge, but we're hoping to end up with simple, yet extendable UI, that can turn your BTCPay from a simple payment system into a customizable Bitcoin stack on which you can build your entire business on.

Furthermore, we have to take special care when it comes to security and education of using third-party plugins, that inevitably will be built by developers around the world. Please give us more time as we work on plugins. If you have any ideas or want to help us develop plugins, please reach out through our chat (opens new window).

Once again, it's still early for the plugins! But we'll get there. It's a conceptual change in what BTCPay Server is and will take some time to get it right.

# Thank you to our contributors!

Huge thanks to all of you who’ve helped in making of the v1.0.6.0! We appreciate every single contribution and support. -bolatovumar (opens new window) britttttk (opens new window) dennisreimann (opens new window) dstrukt (opens new window) kukks (opens new window) mariodian (opens new window) nicolasdorier (opens new window) pavlenex (opens new window) rockstardev (opens new window) sgarcia13 (opens new window) zaxounette (opens new window)

As always, if you face any issues or notice a bug, please join our community chat (opens new window) and let us know. 💚

Last Updated: 10/30/2024, 2:38:33 PM
- + diff --git a/btcpay-server-1-1-0/index.html b/btcpay-server-1-1-0/index.html index 7f686ccf..762d4497 100644 --- a/btcpay-server-1-1-0/index.html +++ b/btcpay-server-1-1-0/index.html @@ -12,7 +12,7 @@ - + @@ -59,7 +59,7 @@ You can now call for:

  • UTXO: Filter Confirmed or Unconfirmed
  • UTXO: Keypath
  • UTXO: Adress
  • UTXO: Timestamp
  • UTXO: Confirmation count
  • WALLET: Fee Rate

A few bugs were also crushed. Namely, a typo in the webhook for OriginalDeliveryId, an access issue for misc/lang calls, and correctly reflecting in the UI the "store not configured" warning when the store was created via API.

Finally, this update also introduces several improvements on again, several views and existing features. A few of the bugs and improvements:

  • You can now generate manually a receive address in an internal wallet which is Payjoin enabled,
  • Filtering by "confirmed UTXO" in the internal wallet coin control is also now possible,
  • Navigating through each page without having two-page titles or two error messages should be easier on the eyes,
  • The file storage service provider section in the Server Settings is now more clear as to what providers are configured and available,

The full list can viewed in the Changelog (opens new window).

# A (mini) call to our translators !

Also, a call to our translators in the community. A few simple sentences have been updated or added on the BTCPay Server website (opens new window).

As a reminder, anyone can help us translate BTCPay Server in their language! Apply through Transifex (opens new window), hit us in the chat, or read our related docs (opens new window).


That will be all for this update. We worked quite a bunch for this and hope that you can secure your account easier, use the Lightning Wallet more smoothly and that those pesky Gap Limit issues are forever gone in your life (or at least, less present).

Despite this, if you have problems, feedback, feature requests, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer.

As always, thank you to our invaluable contributors, we love you: -@britttttk (opens new window) @dennisreimann (opens new window) @dstrukt (opens new window) @g33kme (opens new window) @junderw (opens new window) @kristapsk (opens new window) @Kukks (opens new window) @MaxHillebrand (opens new window) @NicolasDorier (opens new window) @Pavlenex (opens new window) @rockstardev (opens new window) @SakerOmera (opens new window) @ubolator (opens new window) @xpayserver (opens new window) @Zaxounette (opens new window)

The BTCPay Server team 💚

Last Updated: 10/30/2024, 2:38:33 PM
- + diff --git a/btcpay-server-1-10-0/index.html b/btcpay-server-1-10-0/index.html index 307e36a1..8c2268ac 100644 --- a/btcpay-server-1-10-0/index.html +++ b/btcpay-server-1-10-0/index.html @@ -12,7 +12,7 @@ - + @@ -53,7 +53,7 @@ (opens new window) GitHub (opens new window)

# BTCPay Server release 1.10.0

We are introducing the highly anticipated major release of BTCPay Server: version 1.10.0! After weeks of dedicated effort, we are thrilled to unveil a host of exciting enhancements and improvements.

Our team has been working to address any outstanding issues, resulting in enhancements and bug fixes but also an array of new features - the new store role management system and the introduction of the hide sensitive information button, which allows you to effortlessly hide private information from prying eyes. Most notably, we are thrilled to present the fully refined user interface of the form builder!

# 🧾 New Form Builder Drag and Drop UI!

Ever since we’ve introduced (opens new window) custom forms, which allow you to collect various customer information during the checkout so you can process orders in a more personalized manner, we’ve been hearing your feedback around the complexity of using them.

In this release, we’re introducing a drag-and-drop form builder UI, enabling you to design customizable forms to your liking.

Why tell you about the drag-and-drop form builder when we can show it? -In this custom form, let’s use the restaurant use case as an example again. In Store Settings -> Forms -> Click on “Create a new form.” When creating a new form, we always start with a default blank field. Set the field values on the right side of the form builder. Once you’ve set it, we can click “Add new element” at the bottom of your first, for the second field, and so on.

BTCPay Server custom forms example

Did you get to play around with forms already? Please share your experience with us on Twitter (opens new window), Nostr (opens new window) or come join our Mattermost chat (opens new window)! We’d love to hear from you! For more details on form builder, check our documentation (opens new window).

# 🔒 Custom role system

Are you currently operating a store with a team of employees? If the existing guest and admin roles haven't quite met your requirements, we have some exciting news for you. v1.10.0 ships with a brand-new Custom Role management system.

This upgrade empowers you to tailor roles to your exact needs, granting your staff access to specific permissions within your store. Whether you need roles for cashiers, administrative personnel, or order pickers in your warehouse, you can now effortlessly create as many custom roles as necessary, streamlining and optimising your store's operations.

BTCPay Server custom roles

# 🥷 Hide sensitive information

If you ever opened your BTCPay in a coffee shop or a coworking space we’re sure you were nervous to not accidentally reveal your wallet balance or invoice amounts. The new privacy-enhancing feature within your Account Settings will allow you to conveniently hide such information from prying eyes.

To try it out, click on your Account in the sidebar’s bottom left > Toggle "Hide Sensitive Information" to ON, all value fields will be hidden. From Dashboard to every field in an invoice, none are displayed with value; all are masked.

BTCPay Server Hide sensitive info

# 📝 Improved Invoice filtering.

Does your invoice page look daunting? We recognize that it’s hard to do proper filtering on your invoices. While we made big changes to adding custom tags, we still left behind the improvements on the filtering, no longer tho! In this release, we rehauled the invoice filtering, now you can set proper filters and find those invoices you specifically were looking for.

BTCPay Server Hide invoice filter

# 📒 Plugin updates

Every Major release comes with many improvements and upgrades on Plugins. As the plugin system is being built out longer and crazier every time, this release cycle saw great improvements in LNBank, Nostr, and even a new one in Auto-forward payments.

# LNbank

Together with the new BTCPay Server version, LNbank v1.6 (opens new window) releases which incorporates the new "Hide Sensitive Info" setting and adds wallet balance graphs. A better admin overview of LNbank Wallets, what’s the current balance of those who use LNbank on your BTCPay Server instance. Users will now be warned when LNbank liabilities exceed the Lightning Node’s balance, API Access to LNbank wallets and LNURL Withdraw support has been added, which allows configurable LNURL withdrawal access per wallet.

BTCPay Server Hide sensitive info

# Nostr plugin

Some extra purple love this release, Nostr plugin has gotten an update along with v1.10.0. If you've installed the Nostr plugin, from now on, all created LNaddresses on BTCPay Server will allow for Nostr use with no extra configuration! Furthermore, the plugin has been optimized for performance enhancement and stability.

# Auto-forward Payments

Auto-forward Payments are meant to redirect payments to another address automatically. When a new invoice is settled, a payout will be automatically created for it, and when using the Payout processor, these will automatically complete the created payouts. A dashboard view is available to check the status of any redirected payment. Only BTC OnChain payments are currently supported! For further details on the plugin, please check the help section within the plugin!

# 📚 General quality of life improvements

# Point of Sale and Crowdfund settings move from YAML to JSON

A bunch of smaller but impactful quality-of-life improvements in this release. Let’s start with a change to the Point of Sale and Crowdfund app settings; these used to be saved in YAML format; this release ports these over to JSON format. Have you saved your Point of Sale items list by code? Copy the code from your BTCPay Server again and make a new backup!

# Creating your first store

Before, we used to have a fairly unclean look to our initial server setup. We’ve touched this up by directly opening up with the first store creation wizard.

# Improved refund flow

We’ve gone back once more to the refund flow. There was feedback regarding overpaid invoices. From release 1.10.0, selecting overpaid in the refund flow is possible. This will generate a refund based on only the overpaid amount.

# 🪲 Bugs squashing spree

Bugs, not to be eaten but to be squashed. As usual, we’ve hit a ton of bug fixes between 1.9.0 and 1.10.0; we’ve also included a small list of fixes in this major release. Let’s sum them up.

  • When using LNbank, payments would sometimes not be detected by BTCPay Server.
  • When the store’s default currency is SATS, the display on the Dashboard was broken.

# 🚨 Beware of scammers!

We posted a blog last month (opens new window) about an ongoing scam that abuses our brand and software. Please be aware our team will only reach out to you through our official channels. Here our team is clearly marked as contribs. We will never email you! We will never start a Telegram DM! Verify who you are talking to!

To be sure you're talking to our team members, ALWAYS join our official mattermost chat (opens new window) and verify if things are as they get proposed through other ways.

# 🫶 Donate via OpenSats

We're grateful that OpenSats partnered with us to help individuals donate to the BTCPay Server project. If you ever wondered how you could support BTCPay Server contributors without being a company, head on to OpenSats (opens new window) and feel free to throw a donation.

As OpenSats is a US-based public charity registered as a 501(c)(3), you can apply for a tax deduction on these donations. This wasn't previously possible, as BTCPay Server Foundation works differently. With the opportunity given by OpenSats, it's now possible to donate (opens new window) to BTCPay Server as an individual!

# 💚 Thank you

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer. As always, thank you to our invaluable contributors, who directly participated in making 1.10.0 possible.

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more! BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 10/30/2024, 2:38:33 PM

+In this custom form, let’s use the restaurant use case as an example again. In Store Settings -> Forms -> Click on “Create a new form.” When creating a new form, we always start with a default blank field. Set the field values on the right side of the form builder. Once you’ve set it, we can click “Add new element” at the bottom of your first, for the second field, and so on.

BTCPay Server custom forms example

Did you get to play around with forms already? Please share your experience with us on Twitter (opens new window), Nostr (opens new window) or come join our Mattermost chat (opens new window)! We’d love to hear from you! For more details on form builder, check our documentation (opens new window).

# 🔒 Custom role system

Are you currently operating a store with a team of employees? If the existing guest and admin roles haven't quite met your requirements, we have some exciting news for you. v1.10.0 ships with a brand-new Custom Role management system.

This upgrade empowers you to tailor roles to your exact needs, granting your staff access to specific permissions within your store. Whether you need roles for cashiers, administrative personnel, or order pickers in your warehouse, you can now effortlessly create as many custom roles as necessary, streamlining and optimising your store's operations.

BTCPay Server custom roles

# 🥷 Hide sensitive information

If you ever opened your BTCPay in a coffee shop or a coworking space we’re sure you were nervous to not accidentally reveal your wallet balance or invoice amounts. The new privacy-enhancing feature within your Account Settings will allow you to conveniently hide such information from prying eyes.

To try it out, click on your Account in the sidebar’s bottom left > Toggle "Hide Sensitive Information" to ON, all value fields will be hidden. From Dashboard to every field in an invoice, none are displayed with value; all are masked.

BTCPay Server Hide sensitive info

# 📝 Improved Invoice filtering.

Does your invoice page look daunting? We recognize that it’s hard to do proper filtering on your invoices. While we made big changes to adding custom tags, we still left behind the improvements on the filtering, no longer tho! In this release, we rehauled the invoice filtering, now you can set proper filters and find those invoices you specifically were looking for.

BTCPay Server Hide invoice filter

# 📒 Plugin updates

Every Major release comes with many improvements and upgrades on Plugins. As the plugin system is being built out longer and crazier every time, this release cycle saw great improvements in LNBank, Nostr, and even a new one in Auto-forward payments.

# LNbank

Together with the new BTCPay Server version, LNbank v1.6 (opens new window) releases which incorporates the new "Hide Sensitive Info" setting and adds wallet balance graphs. A better admin overview of LNbank Wallets, what’s the current balance of those who use LNbank on your BTCPay Server instance. Users will now be warned when LNbank liabilities exceed the Lightning Node’s balance, API Access to LNbank wallets and LNURL Withdraw support has been added, which allows configurable LNURL withdrawal access per wallet.

BTCPay Server Hide sensitive info

# Nostr plugin

Some extra purple love this release, Nostr plugin has gotten an update along with v1.10.0. If you've installed the Nostr plugin, from now on, all created LNaddresses on BTCPay Server will allow for Nostr use with no extra configuration! Furthermore, the plugin has been optimized for performance enhancement and stability.

# Auto-forward Payments

Auto-forward Payments are meant to redirect payments to another address automatically. When a new invoice is settled, a payout will be automatically created for it, and when using the Payout processor, these will automatically complete the created payouts. A dashboard view is available to check the status of any redirected payment. Only BTC OnChain payments are currently supported! For further details on the plugin, please check the help section within the plugin!

# 📚 General quality of life improvements

# Point of Sale and Crowdfund settings move from YAML to JSON

A bunch of smaller but impactful quality-of-life improvements in this release. Let’s start with a change to the Point of Sale and Crowdfund app settings; these used to be saved in YAML format; this release ports these over to JSON format. Have you saved your Point of Sale items list by code? Copy the code from your BTCPay Server again and make a new backup!

# Creating your first store

Before, we used to have a fairly unclean look to our initial server setup. We’ve touched this up by directly opening up with the first store creation wizard.

# Improved refund flow

We’ve gone back once more to the refund flow. There was feedback regarding overpaid invoices. From release 1.10.0, selecting overpaid in the refund flow is possible. This will generate a refund based on only the overpaid amount.

# 🪲 Bugs squashing spree

Bugs, not to be eaten but to be squashed. As usual, we’ve hit a ton of bug fixes between 1.9.0 and 1.10.0; we’ve also included a small list of fixes in this major release. Let’s sum them up.

  • When using LNbank, payments would sometimes not be detected by BTCPay Server.
  • When the store’s default currency is SATS, the display on the Dashboard was broken.

# 🚨 Beware of scammers!

We posted a blog last month (opens new window) about an ongoing scam that abuses our brand and software. Please be aware our team will only reach out to you through our official channels. Here our team is clearly marked as contribs. We will never email you! We will never start a Telegram DM! Verify who you are talking to!

To be sure you're talking to our team members, ALWAYS join our official mattermost chat (opens new window) and verify if things are as they get proposed through other ways.

# 🫶 Donate via OpenSats

We're grateful that OpenSats partnered with us to help individuals donate to the BTCPay Server project. If you ever wondered how you could support BTCPay Server contributors without being a company, head on to OpenSats (opens new window) and feel free to throw a donation.

As OpenSats is a US-based public charity registered as a 501(c)(3), you can apply for a tax deduction on these donations. This wasn't previously possible, as BTCPay Server Foundation works differently. With the opportunity given by OpenSats, it's now possible to donate (opens new window) to BTCPay Server as an individual!

# 💚 Thank you

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer. As always, thank you to our invaluable contributors, who directly participated in making 1.10.0 possible.

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more! BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-11-0/index.html b/btcpay-server-1-11-0/index.html index 92154308..de0553fc 100644 --- a/btcpay-server-1-11-0/index.html +++ b/btcpay-server-1-11-0/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

We are thrilled to unveil the latest major update of BTCPay Server - version 1.11!

This release introduces an exciting new reporting feature and significant improvements to the Point of Sale (PoS), including the addition of product categories and redesign of the cart view.

As usual, the updates were implemented based on invaluable feedback received from our community. Alongside these enhancements, we've also addressed various bugs and made further optimizations to ensure a smoother user experience.

# 📊Brand-new reporting feature

Invoices are the heart of BTCPay Server. Nearly everything revolves around them. However, we understand that there are scenarios where payments are received directly to your wallet, or you require additional data beyond what invoices export offers.

We are delighted to announce the launch of our new reporting feature, addressing these needs and empowering users with enhanced data insights.

BTCPay Server Reports

The new feature allows you to select the time-frame, type of data and showcase it in a table or raw view. Additionally, the convenience of exporting data to CSV format, making data management easier.

Built with extensibility in mind, this feature can be further enhanced by plugins, giving developers the potential to customize the reporting experience even further. Sorting is available for all columns, allowing you an easier way to organize your data.

Currently we offer three types of predefined reports:

  • Payments - grouped by currency, payment-method or lightning address
  • On-chain wallet - offering grouped overview per wallet and payment method
  • Products sold (POS app) - providing a grouped view per app, currency, product, summarizing quantity and amount per product and even showcasing the processing vs settled invoices, for accurate reporting.

We’re aiming to add more reports based on feedback we receive. Off-chain reporting is on to-do for the next release. Furthermore, basic grouping features and filtering is also on the roadmap.

BTCPay Server Additional Reports

You can access the reporting feature through the sidebar by clicking on the Reporting. Invoice export still remains, but will eventually be moved into the reporting page.

If you find the reporting feature useful or have any ideas for additional functionalities, we'd love to hear from you (opens new window). Your feedback is crucial in helping us shape this feature.

# 🛍️ Point of sale card redesign, categories and more

Last month, the entire BTCPay Server team had the fantastic opportunity to gather in Prague for the BTC Prague conference. Not only did we get to engage closely with the community, but we also had the privilege of witnessing a remarkable stress-test of our point of sale app. The app performed exceptionally well not only at our booth but also at Paralelni Polis (opens new window), where their BTCPay instance processed over 3000 transactions during that thrilling weekend

We owe a huge thanks to Kx from Paralelni, who oversees the POS, for being incredibly supportive and providing invaluable feedback. In fact, Kx's feedback was so significant that we could have easily named this release the “'Kx’s release”!

Firstly, the POS cart view received a redesign. It’s now cleaner, faster and follows our design guidelines.

BTCPay Server Revamped POS

With this update, we’re introducing product categories, which allow you to group items from the POS for easier access. You can add categories when creating a new item, or simply assign to a category you’ve earlier added. We’ve also added labels to indicate when an item is running out of stock, sold out or when it’s a freebie.

Invoices view now includes payment method icons, to help easier distinguish and troubleshoot a problem with an invoice when working with a point of sale. The ability to upload your files directly from the POS editor has also been shipped with this release.

The **receipt **received improvements, now showcasing important metadata, such as the list of products sold.

# 🔊 Payment sounds

As we’re seeing growing usage of the physical point of sale terminals in retail, the retail checkout page preset includes sounds for:

  • NFC successfully read
  • NFC unsuccessful read
  • Payment received/settled sound

Why did we decide to add these sounds? The answer is simple. In physical stores, customers often don't have direct visual access to the payment device. Instead, they tap an NFC card or compatible wallet on the device. In such scenarios, the introduction of sounds provides immediate audio feedback for both you and your customers, letting everyone know when payment has been successfully received or alerting in case of any issues. This audio notification ensures a smoother and more informed checkout process for everyone involved.

BTCPay Server Sounds

The new sound indicators are on by default in retail preset mode accessible from Checkout Appearance, but you can also enable the sound for your web. Once again, you can upload a custom sound file for the payment received sound; feel free to be creative!

# 🏪Improved store creation flow

As our continued effort to offer a smoother, more focused onboarding experience to new users, we’ve redesigned our store creation flow. New users creating a store will now see a more focused-full screen experience when setting up their stores.

BTCPay Server Store creation

Going forward, we’re considering creating a more detailed store creation wizard that will offer additional options such as setting up a store branding or email’s SMTP and potentially the wallet setup.

We’ve also added support for Serbian Dinar (RSD) and Uganda Shilling (UGX)

# 💪Forms on steroids

The form system introduced in 1.8.0 (opens new window) has gained even more useful features. You can now create fields that will adjust the invoice amount, enabling use-cases like asking the user which shipping method they’d like to use, charging differently per country, or even offering a discount based on user input. Head over to our form documentation (opens new window) to see how to make use of this feature

# 🖇️Integrations

Our integration wizards worked hard on making our e-commerce plugins compatible with the latest and greatest updates:

# 🪲 Bugs squashing spree

Bugs, not to be eaten but to be squashed. As usual, we’ve hit a ton of bug fixes between 1.10.0 and 1.11.0; we’ve also included a small list of fixes in this major release. Let’s sum them up.

  • Support NFC on modal
  • Fixed setting of minimum or custom price for LNURL POS items
  • Preventing entering of negative tips and discounts in POS
  • Fixing display of amount paid on Receipt page

# 🚨 Beware of scammers!

Despite our numerous warnings in the past months, we’re still seeing that people are falling for a scam called Bitcoin Bonus (opens new window) or similar derivative, which is an ongoing scam that abuses our brand and software. Please be aware our team will only reach out to you through our official channels. To be sure you're talking to our team members, ALWAYS join our official mattermost chat and verify if things are as they get proposed through other ways.

# 🫶 OpenSats Grant

We received a grant from OpenSats (opens new window) that will mean a lot for the project’s sustainability going forward. If you’re an individual wanting to support our work, you can donate to the BTCPay Foundation through OpenSats (opens new window).

# 💚 Thank you

As usual, if you have problems, feedback, or feature requests regarding BTCPay Server, feel free to reach out on our community chat. We hope you enjoy what this update has to offer. As always, thank you to our invaluable contributors, who directly participated in making 1.11.0 possible.

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making, and more! BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

We are thrilled to unveil the latest major update of BTCPay Server - version 1.11!

This release introduces an exciting new reporting feature and significant improvements to the Point of Sale (PoS), including the addition of product categories and redesign of the cart view.

As usual, the updates were implemented based on invaluable feedback received from our community. Alongside these enhancements, we've also addressed various bugs and made further optimizations to ensure a smoother user experience.

# 📊Brand-new reporting feature

Invoices are the heart of BTCPay Server. Nearly everything revolves around them. However, we understand that there are scenarios where payments are received directly to your wallet, or you require additional data beyond what invoices export offers.

We are delighted to announce the launch of our new reporting feature, addressing these needs and empowering users with enhanced data insights.

BTCPay Server Reports

The new feature allows you to select the time-frame, type of data and showcase it in a table or raw view. Additionally, the convenience of exporting data to CSV format, making data management easier.

Built with extensibility in mind, this feature can be further enhanced by plugins, giving developers the potential to customize the reporting experience even further. Sorting is available for all columns, allowing you an easier way to organize your data.

Currently we offer three types of predefined reports:

  • Payments - grouped by currency, payment-method or lightning address
  • On-chain wallet - offering grouped overview per wallet and payment method
  • Products sold (POS app) - providing a grouped view per app, currency, product, summarizing quantity and amount per product and even showcasing the processing vs settled invoices, for accurate reporting.

We’re aiming to add more reports based on feedback we receive. Off-chain reporting is on to-do for the next release. Furthermore, basic grouping features and filtering is also on the roadmap.

BTCPay Server Additional Reports

You can access the reporting feature through the sidebar by clicking on the Reporting. Invoice export still remains, but will eventually be moved into the reporting page.

If you find the reporting feature useful or have any ideas for additional functionalities, we'd love to hear from you (opens new window). Your feedback is crucial in helping us shape this feature.

# 🛍️ Point of sale card redesign, categories and more

Last month, the entire BTCPay Server team had the fantastic opportunity to gather in Prague for the BTC Prague conference. Not only did we get to engage closely with the community, but we also had the privilege of witnessing a remarkable stress-test of our point of sale app. The app performed exceptionally well not only at our booth but also at Paralelni Polis (opens new window), where their BTCPay instance processed over 3000 transactions during that thrilling weekend

We owe a huge thanks to Kx from Paralelni, who oversees the POS, for being incredibly supportive and providing invaluable feedback. In fact, Kx's feedback was so significant that we could have easily named this release the “'Kx’s release”!

Firstly, the POS cart view received a redesign. It’s now cleaner, faster and follows our design guidelines.

BTCPay Server Revamped POS

With this update, we’re introducing product categories, which allow you to group items from the POS for easier access. You can add categories when creating a new item, or simply assign to a category you’ve earlier added. We’ve also added labels to indicate when an item is running out of stock, sold out or when it’s a freebie.

Invoices view now includes payment method icons, to help easier distinguish and troubleshoot a problem with an invoice when working with a point of sale. The ability to upload your files directly from the POS editor has also been shipped with this release.

The **receipt **received improvements, now showcasing important metadata, such as the list of products sold.

# 🔊 Payment sounds

As we’re seeing growing usage of the physical point of sale terminals in retail, the retail checkout page preset includes sounds for:

  • NFC successfully read
  • NFC unsuccessful read
  • Payment received/settled sound

Why did we decide to add these sounds? The answer is simple. In physical stores, customers often don't have direct visual access to the payment device. Instead, they tap an NFC card or compatible wallet on the device. In such scenarios, the introduction of sounds provides immediate audio feedback for both you and your customers, letting everyone know when payment has been successfully received or alerting in case of any issues. This audio notification ensures a smoother and more informed checkout process for everyone involved.

BTCPay Server Sounds

The new sound indicators are on by default in retail preset mode accessible from Checkout Appearance, but you can also enable the sound for your web. Once again, you can upload a custom sound file for the payment received sound; feel free to be creative!

# 🏪Improved store creation flow

As our continued effort to offer a smoother, more focused onboarding experience to new users, we’ve redesigned our store creation flow. New users creating a store will now see a more focused-full screen experience when setting up their stores.

BTCPay Server Store creation

Going forward, we’re considering creating a more detailed store creation wizard that will offer additional options such as setting up a store branding or email’s SMTP and potentially the wallet setup.

We’ve also added support for Serbian Dinar (RSD) and Uganda Shilling (UGX)

# 💪Forms on steroids

The form system introduced in 1.8.0 (opens new window) has gained even more useful features. You can now create fields that will adjust the invoice amount, enabling use-cases like asking the user which shipping method they’d like to use, charging differently per country, or even offering a discount based on user input. Head over to our form documentation (opens new window) to see how to make use of this feature

# 🖇️Integrations

Our integration wizards worked hard on making our e-commerce plugins compatible with the latest and greatest updates:

# 🪲 Bugs squashing spree

Bugs, not to be eaten but to be squashed. As usual, we’ve hit a ton of bug fixes between 1.10.0 and 1.11.0; we’ve also included a small list of fixes in this major release. Let’s sum them up.

  • Support NFC on modal
  • Fixed setting of minimum or custom price for LNURL POS items
  • Preventing entering of negative tips and discounts in POS
  • Fixing display of amount paid on Receipt page

# 🚨 Beware of scammers!

Despite our numerous warnings in the past months, we’re still seeing that people are falling for a scam called Bitcoin Bonus (opens new window) or similar derivative, which is an ongoing scam that abuses our brand and software. Please be aware our team will only reach out to you through our official channels. To be sure you're talking to our team members, ALWAYS join our official mattermost chat and verify if things are as they get proposed through other ways.

# 🫶 OpenSats Grant

We received a grant from OpenSats (opens new window) that will mean a lot for the project’s sustainability going forward. If you’re an individual wanting to support our work, you can donate to the BTCPay Foundation through OpenSats (opens new window).

# 💚 Thank you

As usual, if you have problems, feedback, or feature requests regarding BTCPay Server, feel free to reach out on our community chat. We hope you enjoy what this update has to offer. As always, thank you to our invaluable contributors, who directly participated in making 1.11.0 possible.

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making, and more! BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-12-0/index.html b/btcpay-server-1-12-0/index.html index f81d4dc0..deeaaaec 100644 --- a/btcpay-server-1-12-0/index.html +++ b/btcpay-server-1-12-0/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

We are excited to announce the latest release of BTCPay Server, version 1.12.0! This release brings several important backend changes, solidifies structure for the future, introduces several new features, improvements, and bug fixes.

# 🥷 Under the hood enhancements

This release brings in several under the hood enhancements.

# Upgrade to .NET 8

In this release, we've upgraded to .NET 8, which brings improved performance and new long term support. Please note that this upgrade requires a current version of the Docker engine (version 20.10.10 or higher). If you encounter these symptoms (opens new window) after updating, you can manually upgrade (opens new window) your Docker engine, although our docker deployment should update automatically if needed.

# Breaking changes for some plugins

Some plugins incompatible with the current version of BTCPay may automatically be disabled. Once updated to 1.12.0, BTCPay Server will let you know through notifications and you can update plugins for continued use.

We’ve introduced significant internal changes when it comes to our Lightning support. Starting from 1.12.0, plugins are now able to extend BTCPay Server’s lightning support, enabling new integration possibilities.

In the next major release 1.13.0, we plan to move out any remaining altcoin code into independent plugins, moving them completely out of the main repository. 1.12.0 ensures proper foundations are in place to achieve that.

# End of Support for Postgresql 11

As Postgresql 11 has reached its end-of-life (EOL) status, we will no longer provide support for it in BTCPay Server. While it should still work, we recommend considering an upgrade to a more recent version of Postgresql for ongoing compatibility. Learn more about the EOL status of Postgresql here (opens new window)

# 🎉 New features

Full changelog can be found here (opens new window)

# 🛍️ Point of Sale improvements

Based on extensive research (opens new window) and feedback we continuously receive from people around the world onboarding retailers, we’re bringing in several important UX/UI enhancements in 1.12.0.

BTCPay Server POS

We’ve added the ability to add up amounts through + functionality, making it easier to calculate the total, and clear out wrongly added amounts.

Cashiers can now see a transaction history of the Point of sale app, ensuring easier invoice troubleshooting and refunding for users with permission to do so. We also improved error messaging on the checkout when using NFC cards and optimized receipts printing.

BTCPay Server POS Transacitons Histor

In case of too many categories (opens new window) in the POS cart view, categories are now scrollable. Starting 1.12.0, categories and filters can now be hidden from the main view, but they’re on by default if you’re using categories.

BTCPay Server POS Categories

Item editor used in both Point of Sale and Crowdfunding apps got improved, allowing easier adding, drag and drop and editing experience for products.

BTCPay Server POS Item Editor

# ⚡ Generate BoltCards at scale through BTCPay directly!

Inspired by the success of circular economies using BTCPay on physical POS devices and NFC cards, we’ve added direct integration of BoltCard (opens new window) into our Pull Payment system, allowing anyone to issue physical NFC cards. We demonstrated the setup during our BTCPay Day in Tokyo (opens new window), and replicated it during the AfroBitcoin (opens new window) conference for merchants.

Quite simply, any BTCPay user now has the ability to not only generate NFC cards for spending for their local economies and merchants, but also have an easy way to do that at scale, thanks to our BTCPay Vault, it takes only a few seconds.

End-users can:

  • Check card balance by scanning a QR code
  • Top up the balance

There are several conditions that have to be met to use this feature:

When those conditions are fulfilled, the pull payment will have two links "Setup Boltcard" and "Reset Boltcard" appearing. If you click on "Setup Boltcard", BTCPay Server will connect to the BTCPay Server Vault app, which will connect to your local smart card reader. You can then just tap the card on the smart card reader. That’s it! Card is set up.

This card can then be used to pay by tapping on the merchant's terminal. Note that the merchant needs an android phone with NFC enabled and Google Chrome or a dedicated device such as Bitcoinize (opens new window).

We’re still working on improving the UX around this feature, and will soon have better documentation and video tutorials. If you’re a local ambassador onboarding merchants, wanting to replicate this setup, please let us know, we’d love to hear from you on how we can improve it!

# 📧 Enhancing email form functionality

This version introduces the addition of webhook support for Payment Requests (opens new window), Payouts (opens new window) and extendibility by plugins.

BTCPay Server Email Webhooks

You can now send an email automatically when invoicing a client through a payment request, processing a salary for your employee or issuing a refund through payouts. Metadata collected through the custom forms is now exposed in the email forms, which means you can trigger emails with customer shipping information or any other custom data you’ve collected through the checkout form (opens new window).

# 👛 Wallet improvements

To ensure better fee estimation in BTCPay’s wallet, we’ve set mempool.space as a default fee estimation source. Support for BIP129 has been added. We’ve also improved instructions for Passport device import and improved labels.

# 🖇️ Integrations

A new e-commerce integration for merchants is available - SmartStore (opens new window). We’re inviting merchants using this CMS to beta [test it] and report back how it works. Our integration team has been on fire lately, and you can expect more CMS and eCommerce plugins in the future. Special thanks to Nisaba for leading on the SmartStore development.

One of our most popular e-commerce integrations - BTCPay for WooCommerce (opens new window) has been updated as well. Most notably, the plugin is now fully compatible with WooCommerce cart and checkout blocks.

# 🔌 Plugins

In the light of a recent critical vulnerability (opens new window) incident in one of the plugins, we’ve decided to add several warnings throughout the UI that communicate better what certain admin settings can do once enabled. We’ve also added a visible disclaimer to ensure possible risks of using plugins are more obvious.

Third-party plugins updates:

  • LNbank - critical vulnerabilit (opens new window) patch, please update if you’re using the plugin to mitigate the risk.
  • Ticket Tailor has been upgraded to v2 - you can now create multiple event integrations per store and the UI now uses your store branding.
  • Coinjoin plugin 1.0.66 - Fee improvements - You can now coinjoin to consolidate utxos automatically and privately depending on the mempool fees. Paranoid payments is an extension to the unique coinjoin payment feature that will only fulfill payments if the coins used are fully private for those with the biggest tinfoil hat. Send to other wallet - allows you to automatically forward funds from your store hot wallet through coinjoin to a hardware wallet with ease, and privately.
  • Sideshift 1.1.12 - Now allows you to explicitly enable it per invoice through the api, along with customization of the sideshift explicit payment methods per invoice
  • Prism 1.1.19 - Now supports onchain. It will be able to forward balances received on chain or lightning to an onchain or lightning destination
  • Dynamic Reports 1.0 - Creating customized advanced reports for all your needs as a business.

# 🚨 Beware of scammers!

Despite our numerous warnings in the past months, we’re still seeing that people are falling for a scam called Bitcoin Bonus (opens new window) or similar derivative, which is an ongoing scam that abuses our brand and software. Please be aware our team will only reach out to you through our official channels. To be sure you're talking to our team members, ALWAYS join our official mattermost chat and verify if things are as they get proposed through other ways. Pay attention to people sending you direct messages on Telegram. Our team members will never DM you first.

# 🫶 Support BTCPay

If you’re finding BTCPay Server useful, you can support us as an individual donor through our OpenSats page (opens new window). If you're a corporate donor willing to donate, reach out directly to our BTCPay Foundation (opens new window).

# 💚 Thank you

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer. As always, thank you to our invaluable contributors, who directly participated in making 1.12.0 possible.

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more! BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

We are excited to announce the latest release of BTCPay Server, version 1.12.0! This release brings several important backend changes, solidifies structure for the future, introduces several new features, improvements, and bug fixes.

# 🥷 Under the hood enhancements

This release brings in several under the hood enhancements.

# Upgrade to .NET 8

In this release, we've upgraded to .NET 8, which brings improved performance and new long term support. Please note that this upgrade requires a current version of the Docker engine (version 20.10.10 or higher). If you encounter these symptoms (opens new window) after updating, you can manually upgrade (opens new window) your Docker engine, although our docker deployment should update automatically if needed.

# Breaking changes for some plugins

Some plugins incompatible with the current version of BTCPay may automatically be disabled. Once updated to 1.12.0, BTCPay Server will let you know through notifications and you can update plugins for continued use.

We’ve introduced significant internal changes when it comes to our Lightning support. Starting from 1.12.0, plugins are now able to extend BTCPay Server’s lightning support, enabling new integration possibilities.

In the next major release 1.13.0, we plan to move out any remaining altcoin code into independent plugins, moving them completely out of the main repository. 1.12.0 ensures proper foundations are in place to achieve that.

# End of Support for Postgresql 11

As Postgresql 11 has reached its end-of-life (EOL) status, we will no longer provide support for it in BTCPay Server. While it should still work, we recommend considering an upgrade to a more recent version of Postgresql for ongoing compatibility. Learn more about the EOL status of Postgresql here (opens new window)

# 🎉 New features

Full changelog can be found here (opens new window)

# 🛍️ Point of Sale improvements

Based on extensive research (opens new window) and feedback we continuously receive from people around the world onboarding retailers, we’re bringing in several important UX/UI enhancements in 1.12.0.

BTCPay Server POS

We’ve added the ability to add up amounts through + functionality, making it easier to calculate the total, and clear out wrongly added amounts.

Cashiers can now see a transaction history of the Point of sale app, ensuring easier invoice troubleshooting and refunding for users with permission to do so. We also improved error messaging on the checkout when using NFC cards and optimized receipts printing.

BTCPay Server POS Transacitons Histor

In case of too many categories (opens new window) in the POS cart view, categories are now scrollable. Starting 1.12.0, categories and filters can now be hidden from the main view, but they’re on by default if you’re using categories.

BTCPay Server POS Categories

Item editor used in both Point of Sale and Crowdfunding apps got improved, allowing easier adding, drag and drop and editing experience for products.

BTCPay Server POS Item Editor

# ⚡ Generate BoltCards at scale through BTCPay directly!

Inspired by the success of circular economies using BTCPay on physical POS devices and NFC cards, we’ve added direct integration of BoltCard (opens new window) into our Pull Payment system, allowing anyone to issue physical NFC cards. We demonstrated the setup during our BTCPay Day in Tokyo (opens new window), and replicated it during the AfroBitcoin (opens new window) conference for merchants.

Quite simply, any BTCPay user now has the ability to not only generate NFC cards for spending for their local economies and merchants, but also have an easy way to do that at scale, thanks to our BTCPay Vault, it takes only a few seconds.

End-users can:

  • Check card balance by scanning a QR code
  • Top up the balance

There are several conditions that have to be met to use this feature:

When those conditions are fulfilled, the pull payment will have two links "Setup Boltcard" and "Reset Boltcard" appearing. If you click on "Setup Boltcard", BTCPay Server will connect to the BTCPay Server Vault app, which will connect to your local smart card reader. You can then just tap the card on the smart card reader. That’s it! Card is set up.

This card can then be used to pay by tapping on the merchant's terminal. Note that the merchant needs an android phone with NFC enabled and Google Chrome or a dedicated device such as Bitcoinize (opens new window).

We’re still working on improving the UX around this feature, and will soon have better documentation and video tutorials. If you’re a local ambassador onboarding merchants, wanting to replicate this setup, please let us know, we’d love to hear from you on how we can improve it!

# 📧 Enhancing email form functionality

This version introduces the addition of webhook support for Payment Requests (opens new window), Payouts (opens new window) and extendibility by plugins.

BTCPay Server Email Webhooks

You can now send an email automatically when invoicing a client through a payment request, processing a salary for your employee or issuing a refund through payouts. Metadata collected through the custom forms is now exposed in the email forms, which means you can trigger emails with customer shipping information or any other custom data you’ve collected through the checkout form (opens new window).

# 👛 Wallet improvements

To ensure better fee estimation in BTCPay’s wallet, we’ve set mempool.space as a default fee estimation source. Support for BIP129 has been added. We’ve also improved instructions for Passport device import and improved labels.

# 🖇️ Integrations

A new e-commerce integration for merchants is available - SmartStore (opens new window). We’re inviting merchants using this CMS to beta [test it] and report back how it works. Our integration team has been on fire lately, and you can expect more CMS and eCommerce plugins in the future. Special thanks to Nisaba for leading on the SmartStore development.

One of our most popular e-commerce integrations - BTCPay for WooCommerce (opens new window) has been updated as well. Most notably, the plugin is now fully compatible with WooCommerce cart and checkout blocks.

# 🔌 Plugins

In the light of a recent critical vulnerability (opens new window) incident in one of the plugins, we’ve decided to add several warnings throughout the UI that communicate better what certain admin settings can do once enabled. We’ve also added a visible disclaimer to ensure possible risks of using plugins are more obvious.

Third-party plugins updates:

  • LNbank - critical vulnerabilit (opens new window) patch, please update if you’re using the plugin to mitigate the risk.
  • Ticket Tailor has been upgraded to v2 - you can now create multiple event integrations per store and the UI now uses your store branding.
  • Coinjoin plugin 1.0.66 - Fee improvements - You can now coinjoin to consolidate utxos automatically and privately depending on the mempool fees. Paranoid payments is an extension to the unique coinjoin payment feature that will only fulfill payments if the coins used are fully private for those with the biggest tinfoil hat. Send to other wallet - allows you to automatically forward funds from your store hot wallet through coinjoin to a hardware wallet with ease, and privately.
  • Sideshift 1.1.12 - Now allows you to explicitly enable it per invoice through the api, along with customization of the sideshift explicit payment methods per invoice
  • Prism 1.1.19 - Now supports onchain. It will be able to forward balances received on chain or lightning to an onchain or lightning destination
  • Dynamic Reports 1.0 - Creating customized advanced reports for all your needs as a business.

# 🚨 Beware of scammers!

Despite our numerous warnings in the past months, we’re still seeing that people are falling for a scam called Bitcoin Bonus (opens new window) or similar derivative, which is an ongoing scam that abuses our brand and software. Please be aware our team will only reach out to you through our official channels. To be sure you're talking to our team members, ALWAYS join our official mattermost chat and verify if things are as they get proposed through other ways. Pay attention to people sending you direct messages on Telegram. Our team members will never DM you first.

# 🫶 Support BTCPay

If you’re finding BTCPay Server useful, you can support us as an individual donor through our OpenSats page (opens new window). If you're a corporate donor willing to donate, reach out directly to our BTCPay Foundation (opens new window).

# 💚 Thank you

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer. As always, thank you to our invaluable contributors, who directly participated in making 1.12.0 possible.

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more! BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-13-0/index.html b/btcpay-server-1-13-0/index.html index 513b3a88..7e0548f8 100644 --- a/btcpay-server-1-13-0/index.html +++ b/btcpay-server-1-13-0/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

We're thrilled to announce the release of the new BTCPay Server version 1.13.0! This major release introduces several brand-new features, improvements, bug fixes and stands ready for immediate usage!

# 🎉 Key features

In line with our mission to provide admins with enhanced flexibility and greater control over their instances, we've implemented several important features:

  • Server branding & contact option
  • View-only admin overview of all the stores on their instance
  • Invite new users to the server via email or link
  • New store roles: Manager and Employee
  • Brand-new items functionality for the keypad Point of Sale

Full changelog can be found here (opens new window).

# 🎨 Server Branding

In version 1.13.0, we're introducing enhancements designed to personalize the user interface for ambassadors (opens new window) and users who share their instance with others

Server owners can now apply custom name to their server. This functionality complements the previously added capability to upload custom logos, allowing for a branded user interface.

Additionally, a new contact input feature allows you to specify an email or an URL. This will be displayed on publicly visible pages of your server and in the sidebar for server’s users, enabling them to easily contact you for support.

# 🏪 Overview of stores

We've listened to your feedback! Understanding who is using your instance and how is crucial. To further enhance server owner flexibility, we’ve introduced the ability for owners to easily overview the stores created on their server. Currently, admins can access these stores in view-only mode.

In the next major version, we’re exploring the addition of an edit mode for server owners, and a view-only mode for server managers (potentially introducing a new role). Let us know what you think about it here (opens new window).

We’ve redefined how users can be onboarded to a server. Inviting users to your BTCPay Server is now much easier. As a server owner, willing to onboard merchants, you can now invite them through email or by sharing a link. Instantly granting them access to their accounts.

In addition to this, we’ve also added approval for new accounts. If you allow user registration on the server, you now have the ability approve new users before they start using your instance.

# 💁🏻 New store roles: Manager and Employee

This release introduces two new store roles: Manager and Employee. Alongside the existing Owner and Guest roles these roles are designed to streamline the management of user access to your store, making it easier than ever to delegate responsibilities while maintaining tighter access to private data.

In an upcoming version we might remove the Guest role, because the new roles provide a better permission structure.

Now, inviting users to join your store has become more straightforward — either via email or by sharing a link. You can assign them any predefined or custom role, and receive instant notifications once they accept your invitation. For needs that go beyond these roles, the flexibility of custom roles introduced in version 1.11.0 (opens new window) remains at your disposal.

# 🛍 Items list for keypad Point of Sale

Our point of sale system was recently battle tested in Madeira (opens new window). With a record of 8750 transactions and over 2.02 bitcoin processed during just 3 days, it allowed us to directly observe software used at scale. This resulted in several key enhancements in our point of sale app, based on real-world feedback.

We’ve noticed that while most merchants preferred to have a simple keypad point of sale, some asked if there’s a way to have a product/items view. Additionally, those merchants wanted to have items on the receipt, so they could fulfill the order more efficiently. Based on this feedback, we’re introducing a brand-new, opt-in item view into our keypad point of sale.

The new mode allows merchants to navigate between a simple keypad and a more detailed product list.

Furthermore, we've refined the receipt printing, making receipts smaller, and introduced a feature to share the web point of sale with an external device via QR code, significantly streamlining the merchant onboarding process.

# 🤳🏻 Better Bitcoin QR Support

We’re trying our best to keep up to date with evolving standards in the Bitcoin ecosystem. This release adds support for BBQr (opens new window), which is a new way of encoding bigger chunks of data and larger files into a series of QR codes.

# 🖇️ Integrations

We strongly believe that for Bitcoin to persist in its success and broaden the adoption, it’s imperative that it integrates into existing systems and workflows. That’s why e-commerce integrations are amongst our priorities in 2024 (opens new window). Our integration team of contributors (Ndeet, BitcoinMitchell, Nisaba and 021) is proud to introduce three new e-commerce integrations:

Integrations are freely available on dedicated marketplaces for immediate usage. We’re inviting you to try them out and let us know in case you come across any bugs.

# 🚚 nopCommerce

NopCommece powers 60,000+ online stores and has been an established free and open-source CMS for 12+ years with a vibrant community and extensive marketplace. Our plugin (opens new window) allows you to instantly connect your BTCPay to your nopCommerce store and start accepting Bitcoin instantly. Check our documentation (opens new window) to get started.

# 🛍️ GrandNode

GrandNode is free and open-source e-commerce built on ASP.NET Core framework focused on high-performance and advanced capabilities for entire supply-chain management. The plugin can be downloaded through GitHub (opens new window). For more information, see our documentation (opens new window).

# 💬 XenForo

XenForo is one of the world’s most popular forum software. Our new add-on allows server admins to connect BTCPay with XenForo through the payment profiles. This allows for a great flexibility as any purchase goes through this abstraction for payment processing. While the use-cases can vary, users can now accept Bitcoin for memberships, profile upgrades and more! The add-on is available for download on GitHub (opens new window), offering an easy path for forums to embrace Bitcoin payments and enhance their financial independence.

# ℹ Other integrations

# 🔌 Plugins

We’re continuing to see an increased interest of developers to build plugins for BTCPay Servers. After a successful integration with Blink (opens new window), allowing users to use lightning in a custodial way by outsourcing channel management to Blink, we’re happy to highlight two new plugins:

# 💶 Bringin

The new Bringin plugin developed by Kukks offers merchants located in the EU to automatically exchange all or partially your incoming Bitcoin revenue to Euro. Bitcoin funds accumulate on your Bitcoin wallet (lightning, onchain coming soon), which then get forwarded using a combination of BTCPay Server’s payouts and payout processors features when a threshold is reached and are exchanged to Euro. You can read more about this here (opens new window).

# ⚡ Breez

While currently in beta, a new plugin by Kukks now offers Breez SDK powered by Blockstream Greenlight as a way to instantly spin up a new lightning node for your stores with automated liquidity management and very minimal burden on your server. You can read more about this here (opens new window).

# ⚠️ Breaking changes for some plugins

Upon update, you may notice that certain plugins, incompatible with the current version of BTCPay Server, may automatically be disabled. Once updated to 1.13.0, BTCPay Server will let you know through notifications and you can update plugins for continued use.

# ❌ Deprecating custodian

We’ve decided to deprecate custodian experimental feature added in 1.9.0 (opens new window) as an attempt to bring exchange integration to BTCPay Server. Custodian will be removed in our next major release, including the API calls. We're now working on a liner system based on the above mentioned Bringin plugin. If you’re depending on this experimental feature, let us know to help you during the migration process.

# 🚨 Beware of scammers!

Despite our numerous warnings in the past months, we’re still seeing that people are falling for a scam called Bitcoin Bonus (opens new window) or similar derivative, which is an ongoing scam that abuses our brand and software. Please be aware our team will only reach out to you through our official channels. To be sure you're talking to our team members, ALWAYS join our official mattermost chat and verify if things are as they get proposed through other ways. Pay attention to people sending you direct messages on Telegram. Our team members will never DM you first.

# 🫶 Support us

If you’re finding BTCPay Server useful, you can support us as an individual donor through our OpenSats page (opens new window). If you're a corporate donor willing to provide more substantial support through contributors grants - reach out to BTCPay Foundation through the contact form (opens new window).

# 💚 Thank you

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat on Mattermost (opens new window) or Telegram (opens new window).

We hope you enjoy what this update has to offer. As always, thank you to our invaluable contributors, who directly participated in making 1.13.0 possible:

dennisreimann, dstrukt, kukks, ndeet, nicolasdorier, nisaba, rockstardev and tchukwuleta.

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more! BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

We're thrilled to announce the release of the new BTCPay Server version 1.13.0! This major release introduces several brand-new features, improvements, bug fixes and stands ready for immediate usage!

# 🎉 Key features

In line with our mission to provide admins with enhanced flexibility and greater control over their instances, we've implemented several important features:

  • Server branding & contact option
  • View-only admin overview of all the stores on their instance
  • Invite new users to the server via email or link
  • New store roles: Manager and Employee
  • Brand-new items functionality for the keypad Point of Sale

Full changelog can be found here (opens new window).

# 🎨 Server Branding

In version 1.13.0, we're introducing enhancements designed to personalize the user interface for ambassadors (opens new window) and users who share their instance with others

Server owners can now apply custom name to their server. This functionality complements the previously added capability to upload custom logos, allowing for a branded user interface.

Additionally, a new contact input feature allows you to specify an email or an URL. This will be displayed on publicly visible pages of your server and in the sidebar for server’s users, enabling them to easily contact you for support.

# 🏪 Overview of stores

We've listened to your feedback! Understanding who is using your instance and how is crucial. To further enhance server owner flexibility, we’ve introduced the ability for owners to easily overview the stores created on their server. Currently, admins can access these stores in view-only mode.

In the next major version, we’re exploring the addition of an edit mode for server owners, and a view-only mode for server managers (potentially introducing a new role). Let us know what you think about it here (opens new window).

We’ve redefined how users can be onboarded to a server. Inviting users to your BTCPay Server is now much easier. As a server owner, willing to onboard merchants, you can now invite them through email or by sharing a link. Instantly granting them access to their accounts.

In addition to this, we’ve also added approval for new accounts. If you allow user registration on the server, you now have the ability approve new users before they start using your instance.

# 💁🏻 New store roles: Manager and Employee

This release introduces two new store roles: Manager and Employee. Alongside the existing Owner and Guest roles these roles are designed to streamline the management of user access to your store, making it easier than ever to delegate responsibilities while maintaining tighter access to private data.

In an upcoming version we might remove the Guest role, because the new roles provide a better permission structure.

Now, inviting users to join your store has become more straightforward — either via email or by sharing a link. You can assign them any predefined or custom role, and receive instant notifications once they accept your invitation. For needs that go beyond these roles, the flexibility of custom roles introduced in version 1.11.0 (opens new window) remains at your disposal.

# 🛍 Items list for keypad Point of Sale

Our point of sale system was recently battle tested in Madeira (opens new window). With a record of 8750 transactions and over 2.02 bitcoin processed during just 3 days, it allowed us to directly observe software used at scale. This resulted in several key enhancements in our point of sale app, based on real-world feedback.

We’ve noticed that while most merchants preferred to have a simple keypad point of sale, some asked if there’s a way to have a product/items view. Additionally, those merchants wanted to have items on the receipt, so they could fulfill the order more efficiently. Based on this feedback, we’re introducing a brand-new, opt-in item view into our keypad point of sale.

The new mode allows merchants to navigate between a simple keypad and a more detailed product list.

Furthermore, we've refined the receipt printing, making receipts smaller, and introduced a feature to share the web point of sale with an external device via QR code, significantly streamlining the merchant onboarding process.

# 🤳🏻 Better Bitcoin QR Support

We’re trying our best to keep up to date with evolving standards in the Bitcoin ecosystem. This release adds support for BBQr (opens new window), which is a new way of encoding bigger chunks of data and larger files into a series of QR codes.

# 🖇️ Integrations

We strongly believe that for Bitcoin to persist in its success and broaden the adoption, it’s imperative that it integrates into existing systems and workflows. That’s why e-commerce integrations are amongst our priorities in 2024 (opens new window). Our integration team of contributors (Ndeet, BitcoinMitchell, Nisaba and 021) is proud to introduce three new e-commerce integrations:

Integrations are freely available on dedicated marketplaces for immediate usage. We’re inviting you to try them out and let us know in case you come across any bugs.

# 🚚 nopCommerce

NopCommece powers 60,000+ online stores and has been an established free and open-source CMS for 12+ years with a vibrant community and extensive marketplace. Our plugin (opens new window) allows you to instantly connect your BTCPay to your nopCommerce store and start accepting Bitcoin instantly. Check our documentation (opens new window) to get started.

# 🛍️ GrandNode

GrandNode is free and open-source e-commerce built on ASP.NET Core framework focused on high-performance and advanced capabilities for entire supply-chain management. The plugin can be downloaded through GitHub (opens new window). For more information, see our documentation (opens new window).

# 💬 XenForo

XenForo is one of the world’s most popular forum software. Our new add-on allows server admins to connect BTCPay with XenForo through the payment profiles. This allows for a great flexibility as any purchase goes through this abstraction for payment processing. While the use-cases can vary, users can now accept Bitcoin for memberships, profile upgrades and more! The add-on is available for download on GitHub (opens new window), offering an easy path for forums to embrace Bitcoin payments and enhance their financial independence.

# ℹ Other integrations

# 🔌 Plugins

We’re continuing to see an increased interest of developers to build plugins for BTCPay Servers. After a successful integration with Blink (opens new window), allowing users to use lightning in a custodial way by outsourcing channel management to Blink, we’re happy to highlight two new plugins:

# 💶 Bringin

The new Bringin plugin developed by Kukks offers merchants located in the EU to automatically exchange all or partially your incoming Bitcoin revenue to Euro. Bitcoin funds accumulate on your Bitcoin wallet (lightning, onchain coming soon), which then get forwarded using a combination of BTCPay Server’s payouts and payout processors features when a threshold is reached and are exchanged to Euro. You can read more about this here (opens new window).

# ⚡ Breez

While currently in beta, a new plugin by Kukks now offers Breez SDK powered by Blockstream Greenlight as a way to instantly spin up a new lightning node for your stores with automated liquidity management and very minimal burden on your server. You can read more about this here (opens new window).

# ⚠️ Breaking changes for some plugins

Upon update, you may notice that certain plugins, incompatible with the current version of BTCPay Server, may automatically be disabled. Once updated to 1.13.0, BTCPay Server will let you know through notifications and you can update plugins for continued use.

# ❌ Deprecating custodian

We’ve decided to deprecate custodian experimental feature added in 1.9.0 (opens new window) as an attempt to bring exchange integration to BTCPay Server. Custodian will be removed in our next major release, including the API calls. We're now working on a liner system based on the above mentioned Bringin plugin. If you’re depending on this experimental feature, let us know to help you during the migration process.

# 🚨 Beware of scammers!

Despite our numerous warnings in the past months, we’re still seeing that people are falling for a scam called Bitcoin Bonus (opens new window) or similar derivative, which is an ongoing scam that abuses our brand and software. Please be aware our team will only reach out to you through our official channels. To be sure you're talking to our team members, ALWAYS join our official mattermost chat and verify if things are as they get proposed through other ways. Pay attention to people sending you direct messages on Telegram. Our team members will never DM you first.

# 🫶 Support us

If you’re finding BTCPay Server useful, you can support us as an individual donor through our OpenSats page (opens new window). If you're a corporate donor willing to provide more substantial support through contributors grants - reach out to BTCPay Foundation through the contact form (opens new window).

# 💚 Thank you

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat on Mattermost (opens new window) or Telegram (opens new window).

We hope you enjoy what this update has to offer. As always, thank you to our invaluable contributors, who directly participated in making 1.13.0 possible:

dennisreimann, dstrukt, kukks, ndeet, nicolasdorier, nisaba, rockstardev and tchukwuleta.

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more! BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-2-0/index.html b/btcpay-server-1-2-0/index.html index ea6e11b7..420b8cbd 100644 --- a/btcpay-server-1-2-0/index.html +++ b/btcpay-server-1-2-0/index.html @@ -12,7 +12,7 @@ - + @@ -56,7 +56,7 @@ Due to changes in HWI 2.0.1 (opens new window), BTCPay Server will now detect the version of the Vault application and notify you to update in case you're using an older version.

For the full list, check out the changelog (opens new window)

# Top-up invoices 🧾

Lots of our community members use BTCPay Server to accept donations. Unlike our regular invoice, where a fixed price and rate are needed, the donations don't have that requirement.

Another interesting use-case is topping up the account. Certain merchants wanted to have the ability to accept whatever the amount is paid since they're crediting it to the customer's account. So whatever customer sends them, that's what they'll credit to their account.

Top-up invoice is a new type of invoice, which doesn't require an amount. This invoice is considered paid as soon as payment is detected.

BTCPay 1.2.0 Crowdfund view

For now, the top-up invoice is available in the pay button (opens new window). Depending on the community feedback, we intend to gradually roll it out to other apps. You can also generate a top-up invoice manually from Invoices > Create a new invoice.

If you're using our Greenfield API (opens new window), you can set the amount to null or undefined to start using the feature.

Top-up invoice can potentially improve the privacy of the payee, since they can spend an entire UTXO topping their account and avoiding the change.

# BTCPay Plugins - Paving the road 🔌

In this release, we also introduced the Greenfield API to the internal codebase. This allows plugins to gain access to the many internal features they will require in the future.

BTCPay 1.2.0 Plugins view

This addition is paving the road towards having a plugin system in BTCPay that adds infinite functionality and customization on top of the core feature available.

The plugin system should allow developers to build easier on top of BTCPay without relying on the core team to develop, agree, or review the changes. These plugins can be maintained separately and activated by users on demand. This introduces a whole new vision for BTCPay, a payment platform or as we like to call it, the WordPress of Bitcoin.

Some behind-the-scenes improvements are being made, making sure a proper foundation for the plugin system is set up. We're one step closer to extracting certain functionalities from the core system and shipping them as independent plugins (For example, Shopify).

In the next major release, you can expect more progress on the plugins - stay tuned!

# Greenfield API 🏗️

The Greenfield is still being perfected and additions are being made to it in every update.

Today, here's what's new and improved in Greenfield:

  • Add Delete User
  • Add CanModifyInvoices permission
  • Add text search terms to an invoice with additionalSearchTerms
  • Add Get store Payment methods
  • Add Generate Store OnChain Wallet
  • Add StoreId to Invoice model
  • Change enabledOnly filter to enabled

Some API documentation (opens new window) was also corrected to reflect what actually happens when using the endpoints.

# NBXplorer specifics 🔍

This release also includes NBXplorer 2.1.58. Docker deployments are updated to this version automatically. Other deployment methods need to update manually.

NBXplorer 2.1.58 fixes a number of bugs and enables sending to Taproot formatted addresses.

# Lightning Network implementation bumps

We've updated the following Lightning Network implementations in our Docker deployment:

  • LND: 0.13.1
  • c-lightning: 0.10.1

# Translations 🌐

Last but not least, BTCPay Server 1.2.0 sees improvements and error corrections in multiple translations for the checkout page in:

  • Bulgarian
  • Dutch
  • Finnish
  • Hebrew
  • Kazath
  • Korean
  • Portuguese

Related to translations, the checkout page can automatically detect customer's prefered language. You can enable the Auto-detect language on checkout option in the Store Settings > Checkout Experience > Appearance.

# New Blog 📝

BTCPay Server is a team of collaborators around the internet. As an open-source project, we tend to do everything in the open. The open-organization approach means that not only our code is free and opened, but our entire infrastructure. The way we communicate (opens new window), plan (opens new window) and execute are all in the eyes of the public.

In case you haven't noticed, the blog post you're reading right now is on our brand-new blog. The blog was our last piece of a puzzle to open-source our entire infrastructure on GitHub. -Earlier, we used WordPress, but thanks to our new contributor @activefog (opens new window) and our wizard @dennisreimann (opens new window) we've switched to the same stack that's used for our documentation - VuePress. This not only means better transparency but also the unification of our design guidelines as well.


That's going to be all for highlights of this BTCPay Server 1.2.0 release!

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer.

As always, thank you to our invaluable contributors, we love you:

@activefog (opens new window) @andhans (opens new window) @britttttk (opens new window) @cypherbeerus (opens new window) @dennisreimann (opens new window) @dstrukt (opens new window) @jkljajic (opens new window)johanf85 (opens new window) @jonathanalevi (opens new window) @JimiHFord (opens new window) @Kukks (opens new window) @NicolasDorier (opens new window) @Pavlenex (opens new window) @rockstardev (opens new window) @sageprogrammer (opens new window) @ubolator (opens new window) @woutersamaey (opens new window) @Zaxounette (opens new window)

The BTCPay Server team 💚.

Last Updated: 10/30/2024, 2:38:33 PM

+Earlier, we used WordPress, but thanks to our new contributor @activefog (opens new window) and our wizard @dennisreimann (opens new window) we've switched to the same stack that's used for our documentation - VuePress. This not only means better transparency but also the unification of our design guidelines as well.


That's going to be all for highlights of this BTCPay Server 1.2.0 release!

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer.

As always, thank you to our invaluable contributors, we love you:

@activefog (opens new window) @andhans (opens new window) @britttttk (opens new window) @cypherbeerus (opens new window) @dennisreimann (opens new window) @dstrukt (opens new window) @jkljajic (opens new window)johanf85 (opens new window) @jonathanalevi (opens new window) @JimiHFord (opens new window) @Kukks (opens new window) @NicolasDorier (opens new window) @Pavlenex (opens new window) @rockstardev (opens new window) @sageprogrammer (opens new window) @ubolator (opens new window) @woutersamaey (opens new window) @Zaxounette (opens new window)

The BTCPay Server team 💚.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-3-0/index.html b/btcpay-server-1-3-0/index.html index e6b4ded3..eef3662d 100644 --- a/btcpay-server-1-3-0/index.html +++ b/btcpay-server-1-3-0/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

It's been two months since the last (opens new window) BTCPay Server major update, and the team has been hard at work pushing through a number of efforts in that time. We're thrilled to release a new major version - 1.3.0!

BTCPay Server 1.3.0 includes support for LNURL-Pay, Lightning address, and Taproot; Lightning support for topup invoices and pull payments; crowdfunding app redesign, Greenfield API enhancements, lots of UI improvements, and several bug crushes.

We won't cover them all in this release post, but as usual, the high-time preference crowd can view the full changelog (opens new window) directly.

To update your BTCPay Server, simply navigate to your Server Settings > Maintenance tab and click Update or use btcpay-update.sh in the command line.

# LNURL and Lightning Addresses ⚡

The Lightning Network ecosystem moves lightning fast, and we're trying to bring you all of the latest bleeding-edge improvements. We're happy to introduce support for LNURL and Lightning addresses!

# LNURL-Pay 🔥

LNURL (opens new window) is a Lightning network protocol that improves the payments user-experience. While the protocol introduces several flows, our focus in this release is on LNURL-Pay.

Upon enabling this feature in your Lightning Payment method, a user can now pay the invoice using a LNURL-Pay compatible wallet.

This adds a few nice additions on top of BTCPay Server invoices, such as the ability to use topup invoices (invoice without the pre-defined amount) with lightning, and the ability to leave comments when making a payment. If you're accepting tips or donations, you can now enable this feature and see comments your donors left you in your invoice settings.

BTCPay 1.3.0 LNURL

# LNURL-Pay & Print Point of Sale 🏪

Traditionally, the easiest way to accept bitcoin payments in a small retail shop is to print out and display a QR code of your address. However, address re-use is a bad privacy practice. Furthermore, it's impossible to differentiate payments coming into a single address easily, making invoice management a total nightmare. This is why we're excited to introduce our new Point of Sale option - Print.

By utilizing the LNURL-Pay protocol, we created a separate view in our POS app, allowing you to print out a static, re-usable QR code for every product in the app. This feature will enable you to accept payments without having a device to display your BTCPay Server UI on the spot. The customer would need an LNURL-Pay compatible wallet to scan a QR to pay. For every payment coming into your static QR-code, BTCPay Server generates invoices on the fly, tracking it against your preferred currency. That means that you can easily export these invoices, manage them for accounting purposes, and even refund them!

# Lightning Addresses 📧

Lightning Addresses (opens new window) leverage the LNURL capabilities and enable you to create a human readable address to be paid to, instead of a bitcoin address string and they look like email addresses.

BTCPay 1.3.0 LNURL

In BTCPay Server, you are now able to configure and create such addresses, so that someone that wants to pay you, can simply send funds to a Lightning Address that looks like the following: you@yourbtcpay.com. You can enable Lightning Address under Store > Integrations, but make sure you have enabled LNURL in your Lightning payment method settings first.

BTCPay Server will generate an invoice for every payment coming to your lightning address on the fly and add it in the back-office. In case you enable the currency under advanced settings, your instance will do rate-conversions. If you're sharing your instance and Lightning node with others, they can also create their own addresses.

So what are you waiting for? Enable your lightning address and share it on Twitter to accepts tips in a non-custodial way, instantly.

# Taproot woot woot 🌱

BTCPay Server 1.3.0 adds the ability to create and track wallets that use the new Taproot format. This feature will be available starting block 709632, at which point Taproot becomes activated on the bitcoin network.

BTCPay Server already introduced Taproot sending support last August, and this was the last missing part for full Taproot support.

BTCPay 1.3.0 Hot Wallet creation view

For more information on Taproot as a network upgrade, you can visit a few of these uncurated posts here (opens new window) or here (opens new window).

Please note that we don't recommend using only taproot supported wallets in your stores at first, since not all wallets your customers and users will be sending funds support Taproot just yet.

# Lightning network topup invoices 🧾

Our Topup invoice feature, released in 1.2.0 (opens new window) now support Lightning network as a payment method. This means that you can create an invoice without an amount and reduce the friction for specific payment flows. We've expanded the topup capabilities to both the Point of sale and crowdfunding apps.

Topup invoices can be configured through the Custom price in the cart/perk item settings. When set up by the merchant, this enables the customer to select the price paid for that specific item with no minimum imposed by the merchant. To address edge-cases, we have also introduced a new Minimum price setting, to enable users to pay a custom price for a specific item, but with a floor price set by the merchant.

# Pull Payments, but Lightning fast! 🚄

Our Pull Payments feature is receiving an upgrade in this release.

You can now add Lightning as a payment method to your Pull Payment, to enable your customers to get their refunds at the speed of light!

Pull Payments with Lightning enabled also support LNURL and Lightning Addresses mentioned earlier.

# Continuation of our UI updates 🎨

Since the beginning of 2021, our design contributors have improved a number of pages in the interface. This release includes a number of these updated pages and a number of Bootstrap related updates. These updates, as well as the new UI enables us to improve a number of views so that hopefully, users with minimal technical savviness gain clarity on how some of the more complex features can benefit them.

# Crowdfunding with love 💚

Our Crowdfunding app has received a general UI lifting in BTCPay Server 1.3.0.

Each year, BTCPay Server performs a crowdfund for projects or causes that we like, in association with other Open-Source communities.

This year, we associated with Bitcoin Design (opens new window) members and launched Bitcoin Smiles (opens new window) to provide dental healthcare to elderly people in El Salvador. This crowdfunding campaign is still active by the way. Nudge-nudge

The campaign enabled us to detect shortcomings in the UI layout of our crowdfunding page, so we decided to act on it and refurbish it! The new crowdfunding page has a more modern look, more easily visible Donation buttons and crowdfund goals.

BTCPay 1.3.0 Crowdfund-app view

# Payment and Store settings changes ⚙️

Over the years and with every release, we have added features, options, settings and customizations to nearly every page when it comes to Store configuration. It was becoming too much, so we decided to clean-up these views, move a number of settings to where it makes more sense.

The improved navigation in your store now differentiates high-level Payment Methods options from fine grained Payment Method settings and Checkout Appearance customizations amongst numerous other changes.

# Greenfield API 🏗️

The Greenfield API is still being perfected and additions are being made to it in every update.

Today, here's what's new and improved in Greenfield:

  • Adds a Payment Settled webhook event
  • Returns a negative undue when overpaid
  • Adds ability to specify default payment method

For a full list of what our API can do, visit the Greenfield documentation (opens new window)


That's going to be all for highlights of this BTCPay Server 1.3.0 release!

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer.

As always, thank you to our invaluable contributors, we love you:

@Bananenbieger123 (opens new window) @BitcoinQnA (opens new window) @britttttk (opens new window) @dennisreimann (opens new window) @dstrukt (opens new window) @1nF0rmed (opens new window) @Kukks (opens new window) @maxdignan (opens new window) @NicolasDorier (opens new window) @Pavlenex (opens new window) @rockstardev (opens new window) @sageprogrammer (opens new window) @satwo (opens new window) @sipsorcery (opens new window) @ubolator (opens new window) @woutersamaey (opens new window) @Zaxounette (opens new window)

The BTCPay Server team 💚.

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

It's been two months since the last (opens new window) BTCPay Server major update, and the team has been hard at work pushing through a number of efforts in that time. We're thrilled to release a new major version - 1.3.0!

BTCPay Server 1.3.0 includes support for LNURL-Pay, Lightning address, and Taproot; Lightning support for topup invoices and pull payments; crowdfunding app redesign, Greenfield API enhancements, lots of UI improvements, and several bug crushes.

We won't cover them all in this release post, but as usual, the high-time preference crowd can view the full changelog (opens new window) directly.

To update your BTCPay Server, simply navigate to your Server Settings > Maintenance tab and click Update or use btcpay-update.sh in the command line.

# LNURL and Lightning Addresses ⚡

The Lightning Network ecosystem moves lightning fast, and we're trying to bring you all of the latest bleeding-edge improvements. We're happy to introduce support for LNURL and Lightning addresses!

# LNURL-Pay 🔥

LNURL (opens new window) is a Lightning network protocol that improves the payments user-experience. While the protocol introduces several flows, our focus in this release is on LNURL-Pay.

Upon enabling this feature in your Lightning Payment method, a user can now pay the invoice using a LNURL-Pay compatible wallet.

This adds a few nice additions on top of BTCPay Server invoices, such as the ability to use topup invoices (invoice without the pre-defined amount) with lightning, and the ability to leave comments when making a payment. If you're accepting tips or donations, you can now enable this feature and see comments your donors left you in your invoice settings.

BTCPay 1.3.0 LNURL

# LNURL-Pay & Print Point of Sale 🏪

Traditionally, the easiest way to accept bitcoin payments in a small retail shop is to print out and display a QR code of your address. However, address re-use is a bad privacy practice. Furthermore, it's impossible to differentiate payments coming into a single address easily, making invoice management a total nightmare. This is why we're excited to introduce our new Point of Sale option - Print.

By utilizing the LNURL-Pay protocol, we created a separate view in our POS app, allowing you to print out a static, re-usable QR code for every product in the app. This feature will enable you to accept payments without having a device to display your BTCPay Server UI on the spot. The customer would need an LNURL-Pay compatible wallet to scan a QR to pay. For every payment coming into your static QR-code, BTCPay Server generates invoices on the fly, tracking it against your preferred currency. That means that you can easily export these invoices, manage them for accounting purposes, and even refund them!

# Lightning Addresses 📧

Lightning Addresses (opens new window) leverage the LNURL capabilities and enable you to create a human readable address to be paid to, instead of a bitcoin address string and they look like email addresses.

BTCPay 1.3.0 LNURL

In BTCPay Server, you are now able to configure and create such addresses, so that someone that wants to pay you, can simply send funds to a Lightning Address that looks like the following: you@yourbtcpay.com. You can enable Lightning Address under Store > Integrations, but make sure you have enabled LNURL in your Lightning payment method settings first.

BTCPay Server will generate an invoice for every payment coming to your lightning address on the fly and add it in the back-office. In case you enable the currency under advanced settings, your instance will do rate-conversions. If you're sharing your instance and Lightning node with others, they can also create their own addresses.

So what are you waiting for? Enable your lightning address and share it on Twitter to accepts tips in a non-custodial way, instantly.

# Taproot woot woot 🌱

BTCPay Server 1.3.0 adds the ability to create and track wallets that use the new Taproot format. This feature will be available starting block 709632, at which point Taproot becomes activated on the bitcoin network.

BTCPay Server already introduced Taproot sending support last August, and this was the last missing part for full Taproot support.

BTCPay 1.3.0 Hot Wallet creation view

For more information on Taproot as a network upgrade, you can visit a few of these uncurated posts here (opens new window) or here (opens new window).

Please note that we don't recommend using only taproot supported wallets in your stores at first, since not all wallets your customers and users will be sending funds support Taproot just yet.

# Lightning network topup invoices 🧾

Our Topup invoice feature, released in 1.2.0 (opens new window) now support Lightning network as a payment method. This means that you can create an invoice without an amount and reduce the friction for specific payment flows. We've expanded the topup capabilities to both the Point of sale and crowdfunding apps.

Topup invoices can be configured through the Custom price in the cart/perk item settings. When set up by the merchant, this enables the customer to select the price paid for that specific item with no minimum imposed by the merchant. To address edge-cases, we have also introduced a new Minimum price setting, to enable users to pay a custom price for a specific item, but with a floor price set by the merchant.

# Pull Payments, but Lightning fast! 🚄

Our Pull Payments feature is receiving an upgrade in this release.

You can now add Lightning as a payment method to your Pull Payment, to enable your customers to get their refunds at the speed of light!

Pull Payments with Lightning enabled also support LNURL and Lightning Addresses mentioned earlier.

# Continuation of our UI updates 🎨

Since the beginning of 2021, our design contributors have improved a number of pages in the interface. This release includes a number of these updated pages and a number of Bootstrap related updates. These updates, as well as the new UI enables us to improve a number of views so that hopefully, users with minimal technical savviness gain clarity on how some of the more complex features can benefit them.

# Crowdfunding with love 💚

Our Crowdfunding app has received a general UI lifting in BTCPay Server 1.3.0.

Each year, BTCPay Server performs a crowdfund for projects or causes that we like, in association with other Open-Source communities.

This year, we associated with Bitcoin Design (opens new window) members and launched Bitcoin Smiles (opens new window) to provide dental healthcare to elderly people in El Salvador. This crowdfunding campaign is still active by the way. Nudge-nudge

The campaign enabled us to detect shortcomings in the UI layout of our crowdfunding page, so we decided to act on it and refurbish it! The new crowdfunding page has a more modern look, more easily visible Donation buttons and crowdfund goals.

BTCPay 1.3.0 Crowdfund-app view

# Payment and Store settings changes ⚙️

Over the years and with every release, we have added features, options, settings and customizations to nearly every page when it comes to Store configuration. It was becoming too much, so we decided to clean-up these views, move a number of settings to where it makes more sense.

The improved navigation in your store now differentiates high-level Payment Methods options from fine grained Payment Method settings and Checkout Appearance customizations amongst numerous other changes.

# Greenfield API 🏗️

The Greenfield API is still being perfected and additions are being made to it in every update.

Today, here's what's new and improved in Greenfield:

  • Adds a Payment Settled webhook event
  • Returns a negative undue when overpaid
  • Adds ability to specify default payment method

For a full list of what our API can do, visit the Greenfield documentation (opens new window)


That's going to be all for highlights of this BTCPay Server 1.3.0 release!

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer.

As always, thank you to our invaluable contributors, we love you:

@Bananenbieger123 (opens new window) @BitcoinQnA (opens new window) @britttttk (opens new window) @dennisreimann (opens new window) @dstrukt (opens new window) @1nF0rmed (opens new window) @Kukks (opens new window) @maxdignan (opens new window) @NicolasDorier (opens new window) @Pavlenex (opens new window) @rockstardev (opens new window) @sageprogrammer (opens new window) @satwo (opens new window) @sipsorcery (opens new window) @ubolator (opens new window) @woutersamaey (opens new window) @Zaxounette (opens new window)

The BTCPay Server team 💚.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-4-0/index.html b/btcpay-server-1-4-0/index.html index ecf78288..88226740 100644 --- a/btcpay-server-1-4-0/index.html +++ b/btcpay-server-1-4-0/index.html @@ -12,7 +12,7 @@ - + @@ -54,7 +54,7 @@ GitHub (opens new window)

At BTCPay Server, the year 2022 starts with a bang! We are today releasing BTCPay Server version 1.4.0. This release is our biggest UX improvement in four years, and it will change the way you are onboarded and navigating BTCPay.

BTCPay Server 1.4.0 is a major update that includes multiple items ranging from our massive UI revamp, new features, updates to our Greenfield API (opens new window) and several bug fixes. We won't cover them all in this release post, but the high-time preference crowd can view the full Changelog (opens new window) directly.

To update, simply navigate to your Server Settings > Maintenance tab and click Update or type btcpay-update.sh in the command line.

# Easier onboarding 🎨

After six months of scoping, iterating, and nearly two months of implementation, tweaking, and testing, we are finally ready to move to the next chapter of the BTCPay Server book!

The goal behind these changes was to make the initial onboarding smoother. This includes better guidance during the store creation and wallet setup as accessible as possible to the new users while still enabling our power users to access the more advanced features available easily.

Starting 1.4.0, when you create a new store, you'll be greeted with a dashboard setup wizard indicating the required steps.

# New navigation 🏪

Since its first release in 2017, the Store has always been at the center of attention. However, our user interface never really reflected that. With this release, we're finally making sure that our front-end reflects the code in the back end.

We've added a sidebar and a store-centered experience to ensure your productive navigation. Managing multiple stores is now easier with a switch button. In the future releases, we plan to add up better store reporting for all the stores you're managing.

These changes may be a bit disruptive at first, but we've been user-testing them for quite a while now. That said, we value your feedback, so please feel free to reach out to us on our chat if something isn't smooth or you have a question.

# Logging in improvements 🔐

Two new features have been added to improve the logging in security and experience:

  • LNURL-Auth
  • Login via code

# Two-step Lightning authentication ⚡

For quite a while, we've supported two-step authentication with hardware devices. Thanks to the LNURL-Auth integration protocol, you can authenticate with your Lightning wallet supporting LNURL-Auth. Select LNURL-Auth and scan the QR code presented with a supporting wallet to begin using the feature. Next time you log in, you'll be presented with a QR to scan in order to authenticate.

# Login codes 📱

We noticed that some of you use BTCPay across multiple devices. Imagine that you're on a desktop processing your invoices, but then you'd like to switch to your phone quickly so that you can issue a refund while you're checking on your dinner progress. Now you can easily switch to a different device just by scanning a generated QR code, and there's no need to authenticate.

# Plugins 🔌

Plugins, plugins, plugins. We've been talking about them for few months now. But you've never really understood how they may be useful to you?

Today we're releasing LNBank, a plugin developed by d11n (opens new window) that allows server admins to enable Lightning payments for their users.

LNBank is a custodial L3 solution which gives server's users a lightning wallet within their store.

Third party hosts should note that unlike enabling on-chain, this one is fully custodial and may bear security and legal risk of being a custodian, so enable on your risk.

Users of a third-party hosted server, should, for best security withdraw funds to an external wallet where they control the keys regularly.

# Invoice states 🧾

In this version, you may notice that we renamed our invoice states:

  • Paid = Processing
  • Complete, Confirmed = Settled

We did this so that our UI reflects the back-end better and reflects our actual invoice states in the new Greenfield API.

# Geeky improvements 🧑‍💻

Our Greenfield API got a few new additions and bug fixes in this update. We've migrated from .NET 3.1 to .NET 6.0 and are now using modern C# 10.0 features instead of older constructs. This release cleans up a four year old code with incremental changes, resulting in class and route renaming.

The full list of these minor changes can be viewed in the Changelog (opens new window)


That's going to be all for highlights of this BTCPay Server 1.4.0 release! -It is now time for us to wish everyone the very best for the year 2022! 💚

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer.

As always, thank you to our invaluable contributors, we love you:

@britttttk (opens new window) @dennisreimann (opens new window) @dstrukt (opens new window) @Kukks (opens new window) @NicolasDorier (opens new window) @Pavlenex (opens new window)@rockstardev (opens new window) @Satwoo (opens new window)@ubolator (opens new window) @woutersamaey (opens new window) @Zaxounette (opens new window)

The BTCPay Server team 💚

Last Updated: 10/30/2024, 2:38:33 PM

+It is now time for us to wish everyone the very best for the year 2022! 💚

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer.

As always, thank you to our invaluable contributors, we love you:

@britttttk (opens new window) @dennisreimann (opens new window) @dstrukt (opens new window) @Kukks (opens new window) @NicolasDorier (opens new window) @Pavlenex (opens new window)@rockstardev (opens new window) @Satwoo (opens new window)@ubolator (opens new window) @woutersamaey (opens new window) @Zaxounette (opens new window)

The BTCPay Server team 💚

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-5-0/index.html b/btcpay-server-1-5-0/index.html index c0955177..37684e2b 100644 --- a/btcpay-server-1-5-0/index.html +++ b/btcpay-server-1-5-0/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

After a long wait, we're finally out of our coding cave, ready to introduce a new major BTCPay Server version - 1.5.0!

This release brings in a brand-new dashboard for easier analytics and better data visualization, payout processors and schedule for later for better payout management payments, batching your payments and refunds, several UX/UI improvements, Greenfield API additions and a few non-critical bug fixes.

# New dashboard 📊

We know that having a quick glance at your store's performance is essential. Also we understand that as a user, you would like to have an easy way to access and manage recent invoices and refunds. That's why we're introducing a dashboard!

Dashboard visually showcases critical store data, providing you with a way to better understand your store's performance, so that you take more informed decisions. Furthermore, a dashboard should help manage recent invoices, pending payouts, and refunds.

Currently, the dashboard shows data for an on-chain payment method, pending payouts and refunds, recent invoices & transactions, and the data for the crowdfunding app.

For more information on dashboard functionality, check our docs (opens new window).

We're building the dashboard with flexibility in mind, and the goal is extend its functionality via the plugin system.

We'd love to hear what you think about the dashboard and how it works for you. Let us know what kind of data would help you better manage your store.

# Payout processor 🤖

Payout processors are a new concept that hooks into the pull payment system (opens new window), specifically the payout part of it (opens new window). This new functionality allows you to automate the flow of the payouts.

For this release, we've baked into two payout processors for on-chain and off-chain payment methods, meaning they support bitcoin addresses, BOLT11, lightning address, and LNURL. Once configured, they run continuously and process any payout awaiting payment.

Set up a time interval in your store settings upon which your payouts will be batched and broadcasted to the network.

Payout processors, in their current state, allow you to save on transaction fees by batching the store's payments (wallet payments, refunds, payouts) and broadcasting them at a specific, pre-set time interval, for example, hourly, daily, weekly, and more. Additionally, it reduces the management overhead and lets payouts to your customers and users be paid out automatically as soon as they provide their bitcoin payment request.

But the best is yet to come. We've built this feature with plugins in mind. Opt-in payout processors plugins created by the community can open up additional ways to handle payments from your store, such as automated cold-storage forwarding, and coinjoins (opens new window).

We also have plans to create an additional payout processor in the coming versions of BTCPay Server that will enhance our Payjoin (opens new window) support to the next level (opens new window) to bring enhanced privacy and reduced fees.

# Schedule for later 📆

We understand that 'payout processors' may sound a bit abstract, and that's why we've added a concrete use-case for it through our brand-new schedule for later function in the wallet.

This means that now, instead of signing and broadcasting a transaction, you have the option to schedule it for later on at a pre-set time interval.

And since our refunding system goes through the pull payments system, if payout processors are configured on your store, they can now automatically be paid out.

# Enable/disable users

Server admins now have the options to disable or re-enable users, allowing them to better manage people who use their instance.

This functionality can be handy for third-party hosts or services building on top of BTCPay Server or offering BTCPay third-party hosting.

# NBXplorer updates 🔎

In case you've missed it, our dependency NBXPlorer has undergone a major performance refactoring.

We did most of the refactoring in service of how data is handled in the dashboard and improved the performance for larger enterprise users.

You can read more about the NBXplorer updates in this blog post (opens new window).

# UX/UI improvements 🎨

As usual, we're ironing out the user interface with every release, making incremental changes based on our understanding of how you use BTCPay Server. Your feedback is always a critical factor when we're making such changes.

  • Better Lightning services access - access Lightning Network services with the click of a button.
  • Store default currency for entities - introduced in an earlier release, the default currency is now pre-set, but easily configurable when you're creating invoices, pull payments, pay button or payment requests.
  • Add additional rate providers supported by CoinGecko.

# Greenfield API 👩‍💻

In this release we added a few new functionalities to our Greenfield API (opens new window).

  • Add transaction info for on chain wallet
  • Add label filter for on chain wallet transaction
  • Add Lightning payment info

We're noticing an uptrend in people building on top of BTCPay Server. If you're building something with our Greenfield API, we're always looking to get more feedback on how to improve it and we love to see what you've made!

# Thank you 💚

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer.

As always, thank you to our invaluable contributors, who directly participated in making 1.5.0 possible:

@dafunction (opens new window) @dennisreimann (opens new window) @dstrukt (opens new window) @Kukks (opens new window) @leesalminen (opens new window) @NicolasDorier (opens new window) orangesurf (opens new window) @bolatovumar (opens new window) @woutersamaey (opens new window).

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more!

BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

After a long wait, we're finally out of our coding cave, ready to introduce a new major BTCPay Server version - 1.5.0!

This release brings in a brand-new dashboard for easier analytics and better data visualization, payout processors and schedule for later for better payout management payments, batching your payments and refunds, several UX/UI improvements, Greenfield API additions and a few non-critical bug fixes.

# New dashboard 📊

We know that having a quick glance at your store's performance is essential. Also we understand that as a user, you would like to have an easy way to access and manage recent invoices and refunds. That's why we're introducing a dashboard!

Dashboard visually showcases critical store data, providing you with a way to better understand your store's performance, so that you take more informed decisions. Furthermore, a dashboard should help manage recent invoices, pending payouts, and refunds.

Currently, the dashboard shows data for an on-chain payment method, pending payouts and refunds, recent invoices & transactions, and the data for the crowdfunding app.

For more information on dashboard functionality, check our docs (opens new window).

We're building the dashboard with flexibility in mind, and the goal is extend its functionality via the plugin system.

We'd love to hear what you think about the dashboard and how it works for you. Let us know what kind of data would help you better manage your store.

# Payout processor 🤖

Payout processors are a new concept that hooks into the pull payment system (opens new window), specifically the payout part of it (opens new window). This new functionality allows you to automate the flow of the payouts.

For this release, we've baked into two payout processors for on-chain and off-chain payment methods, meaning they support bitcoin addresses, BOLT11, lightning address, and LNURL. Once configured, they run continuously and process any payout awaiting payment.

Set up a time interval in your store settings upon which your payouts will be batched and broadcasted to the network.

Payout processors, in their current state, allow you to save on transaction fees by batching the store's payments (wallet payments, refunds, payouts) and broadcasting them at a specific, pre-set time interval, for example, hourly, daily, weekly, and more. Additionally, it reduces the management overhead and lets payouts to your customers and users be paid out automatically as soon as they provide their bitcoin payment request.

But the best is yet to come. We've built this feature with plugins in mind. Opt-in payout processors plugins created by the community can open up additional ways to handle payments from your store, such as automated cold-storage forwarding, and coinjoins (opens new window).

We also have plans to create an additional payout processor in the coming versions of BTCPay Server that will enhance our Payjoin (opens new window) support to the next level (opens new window) to bring enhanced privacy and reduced fees.

# Schedule for later 📆

We understand that 'payout processors' may sound a bit abstract, and that's why we've added a concrete use-case for it through our brand-new schedule for later function in the wallet.

This means that now, instead of signing and broadcasting a transaction, you have the option to schedule it for later on at a pre-set time interval.

And since our refunding system goes through the pull payments system, if payout processors are configured on your store, they can now automatically be paid out.

# Enable/disable users

Server admins now have the options to disable or re-enable users, allowing them to better manage people who use their instance.

This functionality can be handy for third-party hosts or services building on top of BTCPay Server or offering BTCPay third-party hosting.

# NBXplorer updates 🔎

In case you've missed it, our dependency NBXPlorer has undergone a major performance refactoring.

We did most of the refactoring in service of how data is handled in the dashboard and improved the performance for larger enterprise users.

You can read more about the NBXplorer updates in this blog post (opens new window).

# UX/UI improvements 🎨

As usual, we're ironing out the user interface with every release, making incremental changes based on our understanding of how you use BTCPay Server. Your feedback is always a critical factor when we're making such changes.

  • Better Lightning services access - access Lightning Network services with the click of a button.
  • Store default currency for entities - introduced in an earlier release, the default currency is now pre-set, but easily configurable when you're creating invoices, pull payments, pay button or payment requests.
  • Add additional rate providers supported by CoinGecko.

# Greenfield API 👩‍💻

In this release we added a few new functionalities to our Greenfield API (opens new window).

  • Add transaction info for on chain wallet
  • Add label filter for on chain wallet transaction
  • Add Lightning payment info

We're noticing an uptrend in people building on top of BTCPay Server. If you're building something with our Greenfield API, we're always looking to get more feedback on how to improve it and we love to see what you've made!

# Thank you 💚

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer.

As always, thank you to our invaluable contributors, who directly participated in making 1.5.0 possible:

@dafunction (opens new window) @dennisreimann (opens new window) @dstrukt (opens new window) @Kukks (opens new window) @leesalminen (opens new window) @NicolasDorier (opens new window) orangesurf (opens new window) @bolatovumar (opens new window) @woutersamaey (opens new window).

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more!

BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-6-0/index.html b/btcpay-server-1-6-0/index.html index 0bac1678..40bf9b90 100644 --- a/btcpay-server-1-6-0/index.html +++ b/btcpay-server-1-6-0/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

We're finally back from our coding caves! Now that we have vitamin D and a bit of fresh air, we're excited to show you the new BTCPay Server version - 1.6.0!

This release's highlights are the introduction of Lightning and point of sale data to the dashboard, customer receipt for customers, emails for invoice statuses, LNURL-withdraw support for refunds, and plenty of other UX improvements, bug fixes, and features. If you have a low-time preference, you can take a quick look at the changelog here (opens new window).

# Security vulnerability patch 🛡️

Before we show you what's new in 1.6.0, we have an announcement.

In the past six months, we fixed a critical security vulnerability in one of BTCPay's versions. The security vulnerability has been disclosed responsibly, and we granted a bounty to the security researcher who discovered it. As far as we know, this particular vulnerability has not been exploited in the wild as it depends on multiple factors. For security reasons, we will not publicly disclose details yet. Timeframe for public disclosure is 6-12 months. We already have a CVE number reserved for it.

It's very likely that by updating BTCPay Server in the past six months, you've already patched this vulnerability. To be safe, update your instance if you haven't done so in a long time.

Let's see what new features and improvements this version brings us!

# Dashboard improvements 📊

We listened to your feedback carefully and added new functionality to the dashboard that will allow you to get essential insights about your store at a glance.

These improvements include the addition of:

  • Store currency balance toggle
  • Lightning Network data
  • Point of sale product data

# Balance currency toggle

Firstly, you'll notice that the dashboard allows you to toggle between BTC and store default currency. You can change the default currency in your Store Settings.

# Lightning dashboard data

In 1.5.0 (opens new window), we introduced a dashboard. However, it contained data for on-chain only. In 1.6.0, we're adding basic data for lightning. You'll now get information on how much funds in channels you have remote, locally, and even in the closing channels.

Furthermore, Lightning services such as RTL, ThunderHub, Spark, and Lightning Terminal are now accessible from the dashboard.

# Point of sale product data

If you're selling your products through our point-of-sale app, you'll see information about the products you've sold and the amounts. The crowdfunding tile has also been re-designed to use the same style, so if you have added perks, they'll appear similarly.

# Invoice receipts 🧾

One of the most common requests we've heard from you is that you'd like to have a receipt once the invoice is settled. This version offers the ability to enable invoice receipts in your Checkout Settings.

When the invoice is settled, the view receipt button will lead the customer to a page that contains information about their payment. You can optionally add a QR code, which is convenient if the receipt is supposed to be printed (a ticket for an event).

On the API, you can toggle receipts when creating your invoices. You can also specify additional data to show on the receipt. For example, if you were selling licenses or software, you could add the license key to the receipt page or even a link to download the purchased software.

In case you're wondering what happens with the "back to the store button" once the receipt is on, here are potential scenarios:

  • If the receipt is on and there is a redirect URL set, both "back to the store" and a "view receipt" buttons will be shown.
  • If the invoice shows in modal and the receipt is on, the "view receipt" button is shown and opens a new window.
  • Only the receipt button will be shown when you've set the receipt URL, similar to the redirect URL.

If you have a specific use case for receipts or would like to suggest how to improve the functionality, let us know, we'd love to hear how you're using this feature.

# Automated & customized emails 📧

We've added preliminary support for sending out emails to your customers based on invoice updates. You can now create email rules if you have an SMTP configured in your store settings. This means you can send follow-up emails after the invoice is settled (with a link to the new receipt feature)or an email to improve the bounce rate on your abandoned cart.

# LNURL-withdraw support for payouts 🔄

Issuing a refund via Bolt11 invoice can be a frustrating experience, especially when the expiration time is involved. For example, if you're a merchant creating a refund for your customer, they have an option to input bolt11. However, depending on their wallet, their expiration time can be significantly lower than your processing time. A merchant would see the refund request when it has already expired.

By implementing LNURL-withdraw into our payouts (and refunds), customers can now claim and withdraw funds by scanning a QR code from a compatible wallet. There are still some limitations in this flow.

For example, if you're issuing a refund and would like to offer LNURL-withdraw, the target currency must be BTC. Our wizards will be working hard on improving in the next release.

# Greenfield API 👩‍💻

In this release we added a few new functionalities to our Greenfield API (opens new window).

  • Basic API Get and Delete operations for apps
  • Add Lightning balance endpoint
  • Allow excluding unconfirmed UTXOs when creating a new transaction

We're noticing an uptrend in people building on top of BTCPay Server. If you're building something with our Greenfield API, we're always looking to get more feedback on how to improve it and we love to see what you've made!

# Joomla VirtueMart integration 🛍️

We're excited to add one more e-commerce plugin. While not explicitly tied to this release, we launched a Joomla VirtueMart integration that allows you to accept bitcoin in your Joomla VM store. If you'd like to help us test this out, you can check our documentation (opens new window) and get started right away. We're really looking forward to getting feedback on how it works for you and what we can do to make that merchant experience even smoother!

# Cloudflare tunnel support ☁️

People running BTCPay Server locally on home-devices like Raspberry Pi, will be happy that we finally figured out a way to safely expose it to your customers through Cloudflare.

Be aware that Cloudflare can see or modify all of your traffic, as it acts as a middleman between the client's browser and your local server. If you’re interested in learning how this works, check out our extensive doc on this link (opens new window).

# Plugins 🔌

Besides our beloved payment button becoming a plugin, here are a few more plugins to highlight.

# LNURL NFC Support

If you have a browser-compatible (opens new window) NFC phone, (ehm, currently only Chrome on Android, you can use our point-of-sale app to make NFC payments. David Cohen (opens new window) made a few videos and tweets explaining how this works if you’d like to try it out. Bear in mind, it only works when LNURL is a payment method and only on Chrome on Android.

# TicketTailor

In case you’re organizing a bitcoin event, a conference or a concert, TicketTailor is a ticket management system that handles everything for you. The TicketTailor plugin allows you to connect your BTCPay Store to their system and accept Bitcoin payments for your dream event!

This integration is already being used in the wild by Baltic HoneyBadger 2022 (opens new window) organizers.

# LNBank

A plugin which allows server admins to enable wallets creation on top of their Lightning node, essentially creating another layer on top that allows everyone to accept lightning payments via BTCPay has received an update. V1.2.3 LNBank improves API responses and send error message handling and on top of that now allows zero confirmation invoices creation.

# Thank you 💚

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer.

As always, thank you to our invaluable contributors, who directly participated in making 1.6.0 possible.

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more!

BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

We're finally back from our coding caves! Now that we have vitamin D and a bit of fresh air, we're excited to show you the new BTCPay Server version - 1.6.0!

This release's highlights are the introduction of Lightning and point of sale data to the dashboard, customer receipt for customers, emails for invoice statuses, LNURL-withdraw support for refunds, and plenty of other UX improvements, bug fixes, and features. If you have a low-time preference, you can take a quick look at the changelog here (opens new window).

# Security vulnerability patch 🛡️

Before we show you what's new in 1.6.0, we have an announcement.

In the past six months, we fixed a critical security vulnerability in one of BTCPay's versions. The security vulnerability has been disclosed responsibly, and we granted a bounty to the security researcher who discovered it. As far as we know, this particular vulnerability has not been exploited in the wild as it depends on multiple factors. For security reasons, we will not publicly disclose details yet. Timeframe for public disclosure is 6-12 months. We already have a CVE number reserved for it.

It's very likely that by updating BTCPay Server in the past six months, you've already patched this vulnerability. To be safe, update your instance if you haven't done so in a long time.

Let's see what new features and improvements this version brings us!

# Dashboard improvements 📊

We listened to your feedback carefully and added new functionality to the dashboard that will allow you to get essential insights about your store at a glance.

These improvements include the addition of:

  • Store currency balance toggle
  • Lightning Network data
  • Point of sale product data

# Balance currency toggle

Firstly, you'll notice that the dashboard allows you to toggle between BTC and store default currency. You can change the default currency in your Store Settings.

# Lightning dashboard data

In 1.5.0 (opens new window), we introduced a dashboard. However, it contained data for on-chain only. In 1.6.0, we're adding basic data for lightning. You'll now get information on how much funds in channels you have remote, locally, and even in the closing channels.

Furthermore, Lightning services such as RTL, ThunderHub, Spark, and Lightning Terminal are now accessible from the dashboard.

# Point of sale product data

If you're selling your products through our point-of-sale app, you'll see information about the products you've sold and the amounts. The crowdfunding tile has also been re-designed to use the same style, so if you have added perks, they'll appear similarly.

# Invoice receipts 🧾

One of the most common requests we've heard from you is that you'd like to have a receipt once the invoice is settled. This version offers the ability to enable invoice receipts in your Checkout Settings.

When the invoice is settled, the view receipt button will lead the customer to a page that contains information about their payment. You can optionally add a QR code, which is convenient if the receipt is supposed to be printed (a ticket for an event).

On the API, you can toggle receipts when creating your invoices. You can also specify additional data to show on the receipt. For example, if you were selling licenses or software, you could add the license key to the receipt page or even a link to download the purchased software.

In case you're wondering what happens with the "back to the store button" once the receipt is on, here are potential scenarios:

  • If the receipt is on and there is a redirect URL set, both "back to the store" and a "view receipt" buttons will be shown.
  • If the invoice shows in modal and the receipt is on, the "view receipt" button is shown and opens a new window.
  • Only the receipt button will be shown when you've set the receipt URL, similar to the redirect URL.

If you have a specific use case for receipts or would like to suggest how to improve the functionality, let us know, we'd love to hear how you're using this feature.

# Automated & customized emails 📧

We've added preliminary support for sending out emails to your customers based on invoice updates. You can now create email rules if you have an SMTP configured in your store settings. This means you can send follow-up emails after the invoice is settled (with a link to the new receipt feature)or an email to improve the bounce rate on your abandoned cart.

# LNURL-withdraw support for payouts 🔄

Issuing a refund via Bolt11 invoice can be a frustrating experience, especially when the expiration time is involved. For example, if you're a merchant creating a refund for your customer, they have an option to input bolt11. However, depending on their wallet, their expiration time can be significantly lower than your processing time. A merchant would see the refund request when it has already expired.

By implementing LNURL-withdraw into our payouts (and refunds), customers can now claim and withdraw funds by scanning a QR code from a compatible wallet. There are still some limitations in this flow.

For example, if you're issuing a refund and would like to offer LNURL-withdraw, the target currency must be BTC. Our wizards will be working hard on improving in the next release.

# Greenfield API 👩‍💻

In this release we added a few new functionalities to our Greenfield API (opens new window).

  • Basic API Get and Delete operations for apps
  • Add Lightning balance endpoint
  • Allow excluding unconfirmed UTXOs when creating a new transaction

We're noticing an uptrend in people building on top of BTCPay Server. If you're building something with our Greenfield API, we're always looking to get more feedback on how to improve it and we love to see what you've made!

# Joomla VirtueMart integration 🛍️

We're excited to add one more e-commerce plugin. While not explicitly tied to this release, we launched a Joomla VirtueMart integration that allows you to accept bitcoin in your Joomla VM store. If you'd like to help us test this out, you can check our documentation (opens new window) and get started right away. We're really looking forward to getting feedback on how it works for you and what we can do to make that merchant experience even smoother!

# Cloudflare tunnel support ☁️

People running BTCPay Server locally on home-devices like Raspberry Pi, will be happy that we finally figured out a way to safely expose it to your customers through Cloudflare.

Be aware that Cloudflare can see or modify all of your traffic, as it acts as a middleman between the client's browser and your local server. If you’re interested in learning how this works, check out our extensive doc on this link (opens new window).

# Plugins 🔌

Besides our beloved payment button becoming a plugin, here are a few more plugins to highlight.

# LNURL NFC Support

If you have a browser-compatible (opens new window) NFC phone, (ehm, currently only Chrome on Android, you can use our point-of-sale app to make NFC payments. David Cohen (opens new window) made a few videos and tweets explaining how this works if you’d like to try it out. Bear in mind, it only works when LNURL is a payment method and only on Chrome on Android.

# TicketTailor

In case you’re organizing a bitcoin event, a conference or a concert, TicketTailor is a ticket management system that handles everything for you. The TicketTailor plugin allows you to connect your BTCPay Store to their system and accept Bitcoin payments for your dream event!

This integration is already being used in the wild by Baltic HoneyBadger 2022 (opens new window) organizers.

# LNBank

A plugin which allows server admins to enable wallets creation on top of their Lightning node, essentially creating another layer on top that allows everyone to accept lightning payments via BTCPay has received an update. V1.2.3 LNBank improves API responses and send error message handling and on top of that now allows zero confirmation invoices creation.

# Thank you 💚

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer.

As always, thank you to our invaluable contributors, who directly participated in making 1.6.0 possible.

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more!

BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-7-0/index.html b/btcpay-server-1-7-0/index.html index 4f0f5cf3..85f815e8 100644 --- a/btcpay-server-1-7-0/index.html +++ b/btcpay-server-1-7-0/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

The new major release of BTCPay Server is here - 1.7.0!

If we were to name it, its name would be "TookUs2yearsToListenToYourFeedback". We're introducing a new opt-in checkout page, store branding, server's white-labelling, and the ability to collect buyers' shipping information alongside many other improvements.

No contributors got hurt in the making of the release, but a few bugs got squashed. Check out detailed release notes here (opens new window).

Let's check what's new in 1.7.0!

# 🛒 New checkout

We've been listening to your feedback for over two years now. We heard all the typical problems customers face when interacting with the checkout. Our design team returned to the drawing board and created a bunch of explorations and prototypes. Seriously, thank you d11n and Dstruk_ for these past months!

The new checkout page, for now, is an opt-in feature that completely abstracts the complexities and is focused only on you getting paid.

Besides the cleaner design, we’ve made several critical improvements:

  • Removing the invoice timer (We show the timer if less than 10% of the total time remains)
  • Removed address copy (Tap on QR to copy the payment link)
  • Unified scan and copy tabs
  • We’ve hidden all non-critical information under details accordion

While checkout v2 aims to become the default, for now, we have it as an option. We’d love to invite you to test it out and let us know how we can further improve it, before we roll it out to everyone in one of the following major releases.

Enable Checkout v2 by going to Store Settings > Checkout appearance and flip the switch!

# 🧾 Unified QR code for on-chain and lightning

Lightning is bitcoin—end of the story. The end user should never consider the differentiation between the payment methods. Wallets should call the shots and do the calculations on which payment method to pick. We’ve had a unified QR code in BTCPay as an optional feature for two years, but the new checkout v2 pushes this one further by eliminating the tabs.

All your customer sees is a QR code. If they have an on-chain wallet, it will pay on-chain. If they have a lightning wallet, it should default to lightning. If a wallet is both on-chain and lightning, it should prompt the user how they want to pay or make a decision for the user.

CashApp recently introduced a unified QR code as a default, and we feel more confident recommending it. If you aim to abstract all the complexities for your customer, you can enable this option, and a single QR will show - BAM. Just like with the v2 checkout page, the unified QR is experimental.

We’d love to hear how it works, especially if you encounter any problems with wallets. Unified QR can be activated as an option within the new V2 checkout, under Store Settings > Checkout Appearance.

# 🎨 Store and server branding

During the BTCPay Day in Riga this year, a lot of third-party hosts approached us and requested a better way of white-labeling their servers.

In this release, we’re making a first step towards easier server customizations. You can select a server logo that will replace our logo on the public pages. We intend to add more options towards white labeling in the next release.

Additionally, we’re rolling out the ability to customize your store logo and brand color, which in 1.7.0 will be reflected through a checkout page and the logo in the sidebar. Right now, the logo and branding of the store will immediately reflect the new checkout page.

Color and branding functionality will be extended to all public pages on a store level, such as payment requests, receipts, and refunds.

# 🚚 Form Builder (request shipping address)

Ok, you can now stop asking us “How can I collect buyer shipping information through BTCPay”?. In this release, we’ve added the ability to have a shipping address request form built into the point of sale app and payment requests.

The magic behind the scenes that allows this is something we named - the form builder. In the future, we intend to add more customization options allowing you to build your own form fields, but we’d like to hear your feedback on what kind of forms you’d find useful.

Note that any data you collect through forms is your own. To make things quite clear, BTCPay as a project never collects any data.

# 🏪 OpenCart ecommerce integration

If you're a merchant using OpenCart as your e-commerce platform, we now have a full fledged integration with this CMS. Check our documentation here (opens new window), and connect your BTCPay to your OpenCart in no-time!

# Greenfield API 👩‍💻

In this release we added a few new functionalities to our Greenfield API (opens new window).

  • Store Rates Config
  • Get Lightning invoices
  • Create payment request invoices
  • Allow marking payout status and payment proofs
  • Wallet Objects
  • Add crowdfund app create endpoint

We're noticing an uptrend in people building on top of BTCPay Server. If you're building something with our Greenfield API, we're always looking to get more feedback on how to improve it and we love to see what you've made!

# 🫶 Donate via OpenSats

We're grateful that OpenSats partnered with us to help individuals donate to the BTCPay Server projects. If you ever wondered how you can support BTCPay contributors without being a company, head on to OpenSats (opens new window) and feel free to throw a donation.

As OpenSats is a US Based public charity registered as a 501(c)(3), you can apply for a tax deduction on these donations. This wasn't previously possible, as BTCPay Server Foundation works differently. With the opportunity given by OpenSats, it's now possible to donate to BTCPay Server as an individual!

# Thank you 💚

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer.

As always, thank you to our invaluable contributors, who directly participated in making 1.7.0 possible.

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more!

BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

The new major release of BTCPay Server is here - 1.7.0!

If we were to name it, its name would be "TookUs2yearsToListenToYourFeedback". We're introducing a new opt-in checkout page, store branding, server's white-labelling, and the ability to collect buyers' shipping information alongside many other improvements.

No contributors got hurt in the making of the release, but a few bugs got squashed. Check out detailed release notes here (opens new window).

Let's check what's new in 1.7.0!

# 🛒 New checkout

We've been listening to your feedback for over two years now. We heard all the typical problems customers face when interacting with the checkout. Our design team returned to the drawing board and created a bunch of explorations and prototypes. Seriously, thank you d11n and Dstruk_ for these past months!

The new checkout page, for now, is an opt-in feature that completely abstracts the complexities and is focused only on you getting paid.

Besides the cleaner design, we’ve made several critical improvements:

  • Removing the invoice timer (We show the timer if less than 10% of the total time remains)
  • Removed address copy (Tap on QR to copy the payment link)
  • Unified scan and copy tabs
  • We’ve hidden all non-critical information under details accordion

While checkout v2 aims to become the default, for now, we have it as an option. We’d love to invite you to test it out and let us know how we can further improve it, before we roll it out to everyone in one of the following major releases.

Enable Checkout v2 by going to Store Settings > Checkout appearance and flip the switch!

# 🧾 Unified QR code for on-chain and lightning

Lightning is bitcoin—end of the story. The end user should never consider the differentiation between the payment methods. Wallets should call the shots and do the calculations on which payment method to pick. We’ve had a unified QR code in BTCPay as an optional feature for two years, but the new checkout v2 pushes this one further by eliminating the tabs.

All your customer sees is a QR code. If they have an on-chain wallet, it will pay on-chain. If they have a lightning wallet, it should default to lightning. If a wallet is both on-chain and lightning, it should prompt the user how they want to pay or make a decision for the user.

CashApp recently introduced a unified QR code as a default, and we feel more confident recommending it. If you aim to abstract all the complexities for your customer, you can enable this option, and a single QR will show - BAM. Just like with the v2 checkout page, the unified QR is experimental.

We’d love to hear how it works, especially if you encounter any problems with wallets. Unified QR can be activated as an option within the new V2 checkout, under Store Settings > Checkout Appearance.

# 🎨 Store and server branding

During the BTCPay Day in Riga this year, a lot of third-party hosts approached us and requested a better way of white-labeling their servers.

In this release, we’re making a first step towards easier server customizations. You can select a server logo that will replace our logo on the public pages. We intend to add more options towards white labeling in the next release.

Additionally, we’re rolling out the ability to customize your store logo and brand color, which in 1.7.0 will be reflected through a checkout page and the logo in the sidebar. Right now, the logo and branding of the store will immediately reflect the new checkout page.

Color and branding functionality will be extended to all public pages on a store level, such as payment requests, receipts, and refunds.

# 🚚 Form Builder (request shipping address)

Ok, you can now stop asking us “How can I collect buyer shipping information through BTCPay”?. In this release, we’ve added the ability to have a shipping address request form built into the point of sale app and payment requests.

The magic behind the scenes that allows this is something we named - the form builder. In the future, we intend to add more customization options allowing you to build your own form fields, but we’d like to hear your feedback on what kind of forms you’d find useful.

Note that any data you collect through forms is your own. To make things quite clear, BTCPay as a project never collects any data.

# 🏪 OpenCart ecommerce integration

If you're a merchant using OpenCart as your e-commerce platform, we now have a full fledged integration with this CMS. Check our documentation here (opens new window), and connect your BTCPay to your OpenCart in no-time!

# Greenfield API 👩‍💻

In this release we added a few new functionalities to our Greenfield API (opens new window).

  • Store Rates Config
  • Get Lightning invoices
  • Create payment request invoices
  • Allow marking payout status and payment proofs
  • Wallet Objects
  • Add crowdfund app create endpoint

We're noticing an uptrend in people building on top of BTCPay Server. If you're building something with our Greenfield API, we're always looking to get more feedback on how to improve it and we love to see what you've made!

# 🫶 Donate via OpenSats

We're grateful that OpenSats partnered with us to help individuals donate to the BTCPay Server projects. If you ever wondered how you can support BTCPay contributors without being a company, head on to OpenSats (opens new window) and feel free to throw a donation.

As OpenSats is a US Based public charity registered as a 501(c)(3), you can apply for a tax deduction on these donations. This wasn't previously possible, as BTCPay Server Foundation works differently. With the opportunity given by OpenSats, it's now possible to donate to BTCPay Server as an individual!

# Thank you 💚

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer.

As always, thank you to our invaluable contributors, who directly participated in making 1.7.0 possible.

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more!

BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-8-0/index.html b/btcpay-server-1-8-0/index.html index 2dcea7e2..4d3acd93 100644 --- a/btcpay-server-1-8-0/index.html +++ b/btcpay-server-1-8-0/index.html @@ -12,7 +12,7 @@ - + @@ -114,7 +114,7 @@ We’ve added the step in the address creation process. Find in-depth details here (opens new window).

# 🔔 Rehauled Notifications icon set

As the world moves on and smileys become emojis. We are adding more clear indicators for your notifications. In a glance you now will be able to pick up if there’s an action required or if it’s just telling you there’s an invoice paid. You can find all icons and their meaning on our design pages here (opens new window).

# 👩‍💻 Greenfield API updates

Our Greenfield API keeps getting better: Leading up towards release 1.8.0 we’ve introduced some new features to reach through the API. We’ve added a new “get” endpoint for LNURL processing. Next to that we’ve also added 2 new permissions for pull payments and added payments list as an endpoint. Find more details here (opens new window).

# 🏪 Store Branding

Remember how we introduced new store branding options in 1.7.0? (opens new window) We are going to the next step in this release! When you set the store color and logo, they will now be visible on all public facing pages. Custom forms, receipts, payment requests. pull payments, point of sale and crowdfunding can all now be customized by altering a simple color scheme in your store setting.

# 🛍️ Checkout has copy addresses back!

We’ve heard your feedback on our V2 checkout. One of the main points that came back, and we fully acknowledge, was the request for copy on the invoice address. Going forward you’ll get to see the addresses (both on-chain and lightning if available) for the invoice right below the unified QR code.

# 📠 Keypad in the PoS app got some extra love

After we did the new Dashboard views, and changed the game of checkouts with V2, we are now ready to update the Keypad view in your POS! It ties nicely into the new design we've been rolling out over the past 2/3 major releases. AND it comes in your brands color if set in your store settings, more details on how to set these colors here (opens new window). Until you've set it yourself, here is a example of how it looks!

# 📠 Keypad POS tracks values individually

Hot summers day on the terrace? Got lots of invoices to handle with tips or discounts? Within your invoices, you’ll now be able to see these amounts, in a split view on every subject. No longer do you have to count out what the tip or discounts amounts were, just a glance at the bottom of your invoice and all is clear. Find out more details about tracking values here. (opens new window)

# 🔌 Plugins are here to stay!

And do we kick it off with a great new one made by Kukks: The plugin we are shipping with this release is called NIP-05, verify your Nostr account with your BTCPay Server! When verifying include a set of relays you often use for more easy discoverability. All set and done? Your NIP-05 handle will be name@yourbtcpayserver.domain. If you have multiple domains mapped to the same BTCPay Server, they will all be valid. Find more details on the NIP-05 plugin (opens new window).

# 🔌 BTCPay Server X Coinjoin

Kukks didn't just stop at the NIP-05 plugin. He also integrated collaborative transactions using the Wabisabi protocol. On the plugins page, you'll now be able to add the Coinjoin plugin and start enhancing your bitcoin privacy directly through your BTCPay Server. For more details on how it works and what is involved please read here (opens new window).

# 🚨 Phasing out MySQL and SQLite

Maybe some of you have noticed, but if your instance was still running MySQL or SQLite, you now will be able to migrate. As of release 1.7.1 we’ve marked them as deprecated and moved on. Release 1.7.8 saw a migration path for legacy databases like MySQL or SQLite. However as we update these, we’ve seen people run into trouble. After migration there was an error at the reboot. In release 1.7.10 we fixed this bug and made sure migration does as it says. Find details on the migration process (opens new window).

If you are a BTCPay Server integrators such as developer of Nodl, Raspiblitz, Umbrel, Embassy OS or anybody running BTCPay Server on SQLite or MySQL, please refer to the documentation (opens new window). While SQLite and MySQL should still be working for one year or two, we will not be focused on fixing bugs related to those backends (unless it impacts the migration process).

# 🫶 Donate via OpenSats

We're grateful that OpenSats partnered with us to help individuals donate to the BTCPay Server project. If you ever wondered how you can support BTCPay Server contributors without being a company, head on to OpenSats (opens new window) and feel free to throw a donation.

As OpenSats is a US Based public charity registered as a 501(c)(3), you can apply for a tax deduction on these donations. This wasn't previously possible, as BTCPay Server Foundation works differently. With the opportunity given by OpenSats, it's now possible to donate (opens new window) to BTCPay Server as an individual!

# 💚 Thank you

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer. As always, thank you to our invaluable contributors, who directly participated in making 1.8.0 possible. -Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more! BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 10/30/2024, 2:38:33 PM

+Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more! BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-1-9-0/index.html b/btcpay-server-1-9-0/index.html index 0f1e3238..8efb89fd 100644 --- a/btcpay-server-1-9-0/index.html +++ b/btcpay-server-1-9-0/index.html @@ -12,7 +12,7 @@ - + @@ -56,7 +56,7 @@ Now, in the left menu bar of BTCPay Server, you'll find "Add custodian" below your Bitcoin and Lightning wallet. However, before we can add the custodian, you must install the Kraken plugin. Find "Manage plugins” in the left menu bar and install the Kraken plugin, your BTCPay Server will ask for a restart.

After installing the Kraken plugin, click "Add custodian"; the only option available so far is Kraken. Select that and click continue. Stay calm about the warnings; the plugin tries to connect immediately. Fill out the fields as instructed, and you should be set up with the Kraken custodian wallet plugin! For non-technical shopkeepers, all features can be automated using Zapier. Using the new custodian account framework, plugin developers are now able to code their own plugins and add support for exchanges and other custodians, like brokers or online payment systems to BTCPay Server. Wouter Samaey, who developed the custodian account framework, and the Kraken plugin, aims to keep adding more exchanges in the future. We welcome any developer to help expand the library of possible exchanges!

# 🛍️ Point of Sale, NFC and receipts

You may have seen the videos of people using physical PoS devices on social media (opens new window). We were donated a pair of them, and ever since, there have been a lot of questions and great feedback from real-world use cases. We’re carefully noting all the feedback from the retailers who use these devices.

# Receipts

We’ve improved the digital receipts to better cater to those devices. Print size and consolidating data on the receipt are addressed in 1.9.0. Find the new and optimized print views on invoices!

# Improved NFC experience

Merchants utilizing NFC functionality will be happy that we’ve added additional improvements. Earlier, if a customer wanted to pay via NFC, the merchant had to tap the "Pay by NFC" button. From now on, if the browser already has permission, you no longer have to click the button. Just tap the NFC card to initiate the payment!

# 🎉 Checkout v2 gets further improvements

Our next-gen checkout received additional improvements and is now the default for all new stores!

Introduced a couple of releases ago (opens new window), the new checkout page continues to receive updates based on your feedback. We’re introducing new checkout presets to optimize the checkout experience. There are two options to choose from: Retail and Online mode. These will effectively give you a pre-setup store for either of the two purposes. You can still fully customize, but we recognize there are many features, and having a template to start from brings huge time-saving at set up. On the customer-facing side, when the client has paid your store or invoice, the checkout will show the on-chain transaction status, and if it still needs to confirm. Once it confirms, it's party time – we even brought some confetti! -One more thing with Checkout V2.

Remember, if you run custom styling, be aware that setting V2 might break your design!

# 📒 New recovery seed phrase view!

After some deliberation and feedback, we will quickly switch up the recovery seed phrase view! Before we had you jump back and forth between lines 1 and 2, we've now structured it in just one plain simple list. No more chances to mess up the order of your seed!

# 📚 Wallet Labels export - BIP-329

After adding the labels locally on your transactions, we've now gone ahead and implemented BIP-329 (opens new window), which standardizes the export of wallet labels. If you've added labels to your transactions and moved to another wallet (that supports BIP-329), you can take your labels with you! No longer a mess in recognizing what your transactions were!

# 🏷️ Label management got refined further.

Now that we have the BIP-329 in place. We also redid the visualization of those labels. Now within one glance, you see set labels on transactions, know where you are spending from, and get an organized overview of your Bitcoin usage!

# 🤝 Restructuring how metadata is viewed

You can now customize the invoice metadata (opens new window) for payments received through a Lightning Address. Additionally, payment proofs will now appear in the receipt data.

Next to being busy giving you better data points, we've significantly improved the user experience. Your customer receipt will now display what items have been purchased.

Also a slight improvement in managing your transactions: you can now add labels to destination addresses. No more need to write down or remember everything. Just attach a label to the address! These labels will show up on your dashboard as well.

# 🚨 Deprecating MySQL and SQLite

In our ongoing initiative to phase out (opens new window) support for MySQL and SQLite, starting BTCPay Server using --sqlitefile or --mysql flags without being in the context of migration will result in server startup failure.

To address this, we're introducing a new flag called --deprecated, which enables you to start with SQLite or MySQL even if they are deprecated. Please note that this flag will no longer be available in version 1.10 as we continue to streamline and prioritize newer technologies.

# 👾 We squashed plenty of bugs again!

Bugs, they keep coming, and we'll make them go again. We've slowly begun changing the number of minor releases and aggregating the bug fixes in more clear and clean packages, well tested and proper fixes in place. In this release, we have a couple of big fixes coming your way.

# 🚨 Beware of scammers!

We posted a blog last month (opens new window) about an ongoing scam that abuses our brand and software. Please be aware our team will only reach out to you through our official channels. Here our team is clearly marked as contribs. We will never email you! We will never start a Telegram DM! Verify who you are talking to!

To be sure you're talking to our team members, ALWAYS join our official mattermost chat (opens new window) and verify if things are as they get proposed through other ways.

# 🫶 Donate via OpenSats

We're grateful that OpenSats partnered with us to help individuals donate to the BTCPay Server project. If you ever wondered how you could support BTCPay Server contributors without being a company, head on to OpenSats (opens new window) and feel free to throw a donation.

As OpenSats is a US Based public charity registered as a 501(c)(3), you can apply for a tax deduction on these donations. This wasn't previously possible, as BTCPay Server Foundation works differently. With the opportunity given by OpenSats, it's now possible to donate (opens new window) to BTCPay Server as an individual!

# 💚 Thank you

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer. As always, thank you to our invaluable contributors, who directly participated in making 1.9.0 possible.

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more! BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 10/30/2024, 2:38:33 PM

+One more thing with Checkout V2.

Remember, if you run custom styling, be aware that setting V2 might break your design!

# 📒 New recovery seed phrase view!

After some deliberation and feedback, we will quickly switch up the recovery seed phrase view! Before we had you jump back and forth between lines 1 and 2, we've now structured it in just one plain simple list. No more chances to mess up the order of your seed!

# 📚 Wallet Labels export - BIP-329

After adding the labels locally on your transactions, we've now gone ahead and implemented BIP-329 (opens new window), which standardizes the export of wallet labels. If you've added labels to your transactions and moved to another wallet (that supports BIP-329), you can take your labels with you! No longer a mess in recognizing what your transactions were!

# 🏷️ Label management got refined further.

Now that we have the BIP-329 in place. We also redid the visualization of those labels. Now within one glance, you see set labels on transactions, know where you are spending from, and get an organized overview of your Bitcoin usage!

# 🤝 Restructuring how metadata is viewed

You can now customize the invoice metadata (opens new window) for payments received through a Lightning Address. Additionally, payment proofs will now appear in the receipt data.

Next to being busy giving you better data points, we've significantly improved the user experience. Your customer receipt will now display what items have been purchased.

Also a slight improvement in managing your transactions: you can now add labels to destination addresses. No more need to write down or remember everything. Just attach a label to the address! These labels will show up on your dashboard as well.

# 🚨 Deprecating MySQL and SQLite

In our ongoing initiative to phase out (opens new window) support for MySQL and SQLite, starting BTCPay Server using --sqlitefile or --mysql flags without being in the context of migration will result in server startup failure.

To address this, we're introducing a new flag called --deprecated, which enables you to start with SQLite or MySQL even if they are deprecated. Please note that this flag will no longer be available in version 1.10 as we continue to streamline and prioritize newer technologies.

# 👾 We squashed plenty of bugs again!

Bugs, they keep coming, and we'll make them go again. We've slowly begun changing the number of minor releases and aggregating the bug fixes in more clear and clean packages, well tested and proper fixes in place. In this release, we have a couple of big fixes coming your way.

# 🚨 Beware of scammers!

We posted a blog last month (opens new window) about an ongoing scam that abuses our brand and software. Please be aware our team will only reach out to you through our official channels. Here our team is clearly marked as contribs. We will never email you! We will never start a Telegram DM! Verify who you are talking to!

To be sure you're talking to our team members, ALWAYS join our official mattermost chat (opens new window) and verify if things are as they get proposed through other ways.

# 🫶 Donate via OpenSats

We're grateful that OpenSats partnered with us to help individuals donate to the BTCPay Server project. If you ever wondered how you could support BTCPay Server contributors without being a company, head on to OpenSats (opens new window) and feel free to throw a donation.

As OpenSats is a US Based public charity registered as a 501(c)(3), you can apply for a tax deduction on these donations. This wasn't previously possible, as BTCPay Server Foundation works differently. With the opportunity given by OpenSats, it's now possible to donate (opens new window) to BTCPay Server as an individual!

# 💚 Thank you

As usual, if you have problems, feedback, feature requests regarding BTCPay Server, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer. As always, thank you to our invaluable contributors, who directly participated in making 1.9.0 possible.

Besides release contributors, we'd like to thank all of our contributors who're making BTCPay Server better every day, through testing, reporting bugs, providing feedback, documenting, content making and more! BTCPay Server could never rapidly progress without your help!

The BTCPay Server team 💚

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-2-0/index.html b/btcpay-server-2-0/index.html index 9b4ac196..106dd55e 100644 --- a/btcpay-server-2-0/index.html +++ b/btcpay-server-2-0/index.html @@ -12,7 +12,7 @@ - + @@ -52,10 +52,11 @@ Twitter (opens new window) GitHub - (opens new window)

We are thrilled to announce the release of BTCPay Server 2.0, our most significant update since the project began in 2017!

This version is packed with new features, bug fixes, and crucial backend updates designed to set a solid foundation for the future and make BTCPay more powerful than ever before.

BTCPay Server 2.0 realigns the internal architecture with the lessons we’ve learned since 2017, positioning us to better support both plugin developers and ourselves as we implement new features. While it may not seem immediately obvious, we expect users to see the full potential of 2.0 in the upcoming months, as the ecosystem continues to thrive and build on top of it.

# 🔑 Key features

  • New interface localization
  • New sidebar-only navigation
  • New onboarding flow for new users and Point Of Sale
  • Three new e-commerce integrations (Wix, Odoo & BigCommerce)
  • Checkout v2 default (removal of the legacy checkout)
  • Branding enhancements

Full changelog can be found here (opens new window).

# ⚠️ 2.0 breaking changes

With BTCPay Server 2.0, we’re introducing breaking changes in our API that allow us to get rid of technical debt that accumulated over the years. While these changes are necessary to future-proof BTCPay and enable exciting new features, we understand that they may affect some users.

For most, the transition to 2.0 will be seamless, but if you rely on custom integrations or plugins, you will need to update them to ensure compatibility with our 2.0 API.

We’ve done our best to make this process as straightforward as possible, and we strongly recommend updating your integrations immediately after the BTCPay Server update. If you're unsure whether these changes will impact you, please check our breaking changes documentation (opens new window) for detailed guidance.

BTCPay Server started in 2017, and over the past seven years, we’ve learned a lot as a community. New protocols have emerged, and users have continuously requested new features. Throughout this journey, our main challenge in product development has been to move slowly and steadily, ensuring we avoid breaking changes for our users. Stability is critical because it allows merchants to focus on running their businesses without worrying about infrastructure or payment integrations.

Commitment to stability meant that BTCPay evolved organically, always maintaining backward compatibility. While this benefits users, it has placed increasing pressure on our developers and plugin creators, making it harder and slower to meet new expectations, a challenge known as the "technical debt tax"; that we will now eliminate.

During the transition from 1.0 to 2.0, larger instances may experience a few minutes of database migration. Once this initial migration is complete, BTCPay will be fully operational, though it will continue migrating some data in the background. For instance, some invoices may not immediately appear in reports or searches, but newer data is migrated first, so we expect minimal disruption.

As an example, our mainnet demo database, containing around 400,000 invoices, took one to two minutes to start and about 15-20 minutes to fully update all invoices in the background.

# 🔄 Updating to 2.0

Updating to BTCPay Server 2.0 is a one-way process with no option for rolling back. Because of that, we're making it opt-in, requiring that you SSH into your server (opens new window) and run:

git fetch
-git checkout 2.0
-btcpay-update.sh
-
1
2
3

Please note that the database migration might take a few minutes, depending on the size of your installation. Enjoy BTCPay 2.0 and let us know your thoughts (opens new window)!

# ✔ Post-update checklist

  • If your server crashed during the update (it shouldn’t, we’ve done extensive testing), please post server logs here (opens new window), we will prioritize support for instances that experienced problems during migration
  • If you use plugins in BTCPay, not all of them are 2.0 compatible yet. We automatically deactivate the incompatible plugins (communicate this to a plugin dev and kindly ask them to update their plugins, once they’re compatible you can update them)
  • If you use e-commerce integrations (Woocommerce, Shopify, etc) update those plugins to their latest version in their dedicated stores as they ensure 2.0 compatibility
  • If you’re a developer leveraging BTCPay’s Greenfield API, check our breaking changes (opens new window) to ensure 2.0 compatibility
  • If you’re a plugin developer, make sure your plugins are 2.0 compatible. To start, bump plugin to 2.0 submodule and fix errors
  • If you’re using Translations, report any missing strings here (opens new window)

# 🌍 Interface localization

BTCPay 2.0 introduces a full interface translation. While customer-facing parts of the UI have been multilingual for some time, this update allows you to translate the entire BTCPay Server back office with ease. All translation strings are in a single text box, easy to copy over to AI tools like ChatGPT, making the process of translating strings and pasting them back super-easy. This gives you full control to localize your BTCPay Server in any language quickly and efficiently.

If you come across any missing strings, please report them here (opens new window). We’ll continue to refine and complete all translations in the next few minor releases, and we’re adding several predefined languages to further enhance your experience.

# 🧭 New sidebar navigation

In BTCPay Server 2.0, we have moved all navigation elements into a unified sidebar. This redesign ensures a clear information hierarchy and provides consistency when navigating different pages, allowing us to standardize all call-to-action buttons by keeping them prominently accessible at the top of the page.

We understand that navigational changes can be sensitive and may require an adjustment period. However, feedback from our early beta testers suggests that the new sidebar navigation improves efficiency once you become familiar with it.

We value your input and invite you to share your thoughts on this new feature here (opens new window).

# 🫂 Improved onboarding flow

As part of our mission (opens new window) to help ambassadors onboard local communities to BTCPay Server faster, we have enhanced the onboarding experience and added personalization features to user profiles. If you're hosting BTCPay for others, they can get up and running by scanning a QR code or clicking the link.

Additionally, users can now upload a profile photo and set a nickname for their accounts, adding a personal touch to the whole experience. We’re not adding these just for fun, we plan to leverage them in our upcoming BTCPay App.

# 🛍️ Point of sale QR onboarding

Our recent testing of BTCPay Point of Sale in Riga (opens new window) and Nashville (opens new window) allowed us to dog food our own product and make further improvements. With 2.0 you can now even easier onboard existing users to the POS app, again just by scanning a QR from the point of sale. This allows ambassadors who onboard merchants to log in users instantly on POS devices.

# 🚀 Checkout 2.0 default

In 2.0 we’re discontinuing our legacy checkout page and our new checkout becomes the standard for all the stores. The 2.0 checkout has been battle-tested for a while now, and we’re fully confident it brings not only more functionality through features like NFC but also much better and tailored UX through our new branding options.

# 🎨 Backend branding

We believe branding your instance should give you the ability to customize the experience, with just the ability to select a color or a logo. And while this applies to all public-facing pages, such as checkout and payment requests for customers, we’ve now added an optional feature that allows you to apply your branding colors to the back office as well.

# 🛒 New e-commerce integrations

Seamless integration into existing systems remains one of our top priorities, and we’re excited to introduce three new e-commerce integrations that expand the possibilities for merchants:

  • Wix
  • Odoo
  • BigCommerce

These integrations offer enhanced flexibility and an easy way for businesses to adopt Bitcoin in their existing e-commerce stores.

# Wix

Wix is one of the world’s largest website-building platforms, powering over 200 million websites globally. Known for its ease of use and flexibility, Wix enables businesses of all sizes to create fully customizable websites, including e-commerce stores. With our new BTCPay integration, Wix users can now accept Bitcoin payments, offering their customers more payment options and expanding their reach to the growing Bitcoin economy. This integration is a game-changer for small to medium-sized businesses looking to embrace Bitcoin, bringing it into the mainstream for millions of merchants worldwide.

Follow our Wix setup guide (opens new window) to install it to your Wix store.

# Odoo

Odoo, an open-source business management software with a vast user base, is a comprehensive suite that covers everything from inventory management, point of sale to e-commerce. Our new plugin for Odoo versions 16 (opens new window) and 17 (opens new window) allows you to easily connect BTCPay with your Odoo store, enabling Bitcoin payments with minimal setup. You can even use it for ticket sales or any other module using online payment methods. It’s even possible to use it in Odoo Point Of Sale (PoS) by enabling online payments there.

Get started by downloading the plugin on GitHub (opens new window) and following our Odoo documentation (opens new window).

# BigCommerce

BigCommerce is a leading e-commerce platform designed for scalability and focused on enterprise-level merchants. We’re bringing Bitcoin payments to BigCommerce users with our latest integration.

To start accepting Bitcoin for your BigCommerce store, check our documentation (opens new window).

# Other integration updates

We’ve done extensive tests for all of our ecommerce integrations. Kudos to our integration expert Ndeet for conducting comprehensive hard field work, testing (opens new window) each and every one of them.

All of our official e-commerce integrations are 2.0 compatible.

However, if you face issues with 2.0 and any official e-commerce integration, please report it here (opens new window), and we’ll prioritize those reports. We continue to monitor feedback from the community and ensure existing integrations stay up-to-date.

If you're using our Shopify plugin, rest assured that it’s not impacted by recent API changes, and you can continue to use it without issues. We’re aware of Shopify discounting certain API calls at the end of this year, and we’re already working on shipping a brand new plugin before that happens.

Additionally, our PrestaShop plugin received a new update (opens new window), thanks to our contributor BitcoinMitchell, and the PHP Library has been updated to be compatible with BTCPay 2.0 (opens new window) as well.

# 🔌 Plugins

If you use plugins with your BTCPay Server, you may notice that some are disabled following updates - we do this to prevent server crashes. If you rely heavily on plugins for your BTCPay operations, we recommend that you double-check compatibility and look for announcements from plugin developers regarding their support for version 2.0 before proceeding with the upgrade.

Plugin developers should update their submodules to 2.0 and fix any errors to ensure compatibility. Review the example PR from Nicolas on Payroll plugin (opens new window) or take a look at how Boltz updated their plugin (opens new window). After resolving issues and thoroughly testing their plugin, developers should publish an updated release on plugin-builder.btcpayserver.org (opens new window).

Currently, maintaining multiple versions of a plugin (for example, one branch for version 1.x and another for version 2.0) is not possible. If you need to publish updates, continue with the 1.x version and release new versions of the plugin until you reach a feature freeze. Once you've achieved this, you can update the submodule reference and release a new version of the plugin starting from 2.0.

We strongly urge all developers to prioritize upgrading to version 2.0.

# List of currently incompatible plugins

List of currently incompatible plugins, at the time of publishing this blog post, all other plugins are 2.0 compatible.

  • BTCPayServer.Plugins.Strike (1.3.2.0)
  • BTCPayServer.Plugins.B2PCentral (1.0.1.0)
  • BTCPayServer.Plugins.Trocador (1.2.5.0)

# 💚 Thank you

With 2.0 we wanted to do all the hard work, most of which may be invisible, but it sets a great base on what we’re aiming to do in 2025. Keep an eye on the upcoming minor releases that we’ll ship if we notice any bugs. In the next few big releases we’re hoping to ship some of the most requested features that further enhance our mission.

Super-special shout out goes to our community testers, who went beyond and above testing the 2.0: decentralizedb, djuri, j7tx21 & stc786.

We hope you enjoy what this update has to offer. As always, thank you to our invaluable contributors, who directly participated in making 2.0 possible: dennisreimann, dstrukt, jackstar12, kukks, ndeet, nicolasdorier, nisaba, pavlenex, rockstardev, tchukwuleta, and webworthy.

The BTCPay Server team 💚

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

We are thrilled to announce the release of BTCPay Server 2.0, our most significant update since the project began in 2017!

This version is packed with new features, bug fixes, and crucial backend updates designed to set a solid foundation for the future and make BTCPay more powerful than ever before.

BTCPay Server 2.0 realigns the internal architecture with the lessons we’ve learned since 2017, positioning us to better support both plugin developers and ourselves as we implement new features. While it may not seem immediately obvious, we expect users to see the full potential of 2.0 in the upcoming months, as the ecosystem continues to thrive and build on top of it.

# 🔑 Key features

  • New interface localization
  • New sidebar-only navigation
  • New onboarding flow for new users and Point Of Sale
  • Three new e-commerce integrations (Wix, Odoo & BigCommerce)
  • Checkout v2 default (removal of the legacy checkout)
  • Branding enhancements

Full changelog can be found here (opens new window).

# ⚠️ 2.0 breaking changes

With BTCPay Server 2.0, we’re introducing breaking changes in our API that allow us to get rid of technical debt that accumulated over the years. While these changes are necessary to future-proof BTCPay and enable exciting new features, we understand that they may affect some users.

For most, the transition to 2.0 will be seamless, but if you rely on custom integrations or plugins, you will need to update them to ensure compatibility with our 2.0 API.

We’ve done our best to make this process as straightforward as possible, and we strongly recommend updating your integrations immediately after the BTCPay Server update. If you're unsure whether these changes will impact you, please check our breaking changes documentation (opens new window) for detailed guidance.

BTCPay Server started in 2017, and over the past seven years, we’ve learned a lot as a community. New protocols have emerged, and users have continuously requested new features. Throughout this journey, our main challenge in product development has been to move slowly and steadily, ensuring we avoid breaking changes for our users. Stability is critical because it allows merchants to focus on running their businesses without worrying about infrastructure or payment integrations.

Commitment to stability meant that BTCPay evolved organically, always maintaining backward compatibility. While this benefits users, it has placed increasing pressure on our developers and plugin creators, making it harder and slower to meet new expectations, a challenge known as the "technical debt tax"; that we will now eliminate.

During the transition from 1.0 to 2.0, larger instances may experience a few minutes of database migration. Once this initial migration is complete, BTCPay will be fully operational, though it will continue migrating some data in the background. For instance, some invoices may not immediately appear in reports or searches, but newer data is migrated first, so we expect minimal disruption.

As an example, our mainnet demo database, containing around 400,000 invoices, took one to two minutes to start and about 15-20 minutes to fully update all invoices in the background.

# 🔄 Updating to 2.0

Updating to BTCPay Server 2.0 is a one-way process with no option for rolling back. Because of that, we're making it opt-in, requiring that you SSH into your server (opens new window) and run:

cd $BTCPAY_BASE_DIRECTORY/btcpayserver-docker
+git fetch -a
+git checkout 2.0
+./btcpay-update.sh
+
1
2
3
4

Please note that the database migration might take a few minutes, depending on the size of your installation. Enjoy BTCPay 2.0 and let us know your thoughts (opens new window)!

# ✔ Post-update checklist

  • If your server crashed during the update (it shouldn’t, we’ve done extensive testing), please post server logs here (opens new window), we will prioritize support for instances that experienced problems during migration
  • If you use plugins in BTCPay, not all of them are 2.0 compatible yet. We automatically deactivate the incompatible plugins (communicate this to a plugin dev and kindly ask them to update their plugins, once they’re compatible you can update them)
  • If you use e-commerce integrations (Woocommerce, Shopify, etc) update those plugins to their latest version in their dedicated stores as they ensure 2.0 compatibility
  • If you’re a developer leveraging BTCPay’s Greenfield API, check our breaking changes (opens new window) to ensure 2.0 compatibility
  • If you’re a plugin developer, make sure your plugins are 2.0 compatible. To start, bump plugin to 2.0 submodule and fix errors
  • If you’re using Translations, report any missing strings here (opens new window)

# 🌍 Interface localization

BTCPay 2.0 introduces a full interface translation. While customer-facing parts of the UI have been multilingual for some time, this update allows you to translate the entire BTCPay Server back office with ease. All translation strings are in a single text box, easy to copy over to AI tools like ChatGPT, making the process of translating strings and pasting them back super-easy. This gives you full control to localize your BTCPay Server in any language quickly and efficiently.

If you come across any missing strings, please report them here (opens new window). We’ll continue to refine and complete all translations in the next few minor releases, and we’re adding several predefined languages to further enhance your experience.

Interface localization

# 🧭 New sidebar navigation

In BTCPay Server 2.0, we have moved all navigation elements into a unified sidebar. This redesign ensures a clear information hierarchy and provides consistency when navigating different pages, allowing us to standardize all call-to-action buttons by keeping them prominently accessible at the top of the page.

We understand that navigational changes can be sensitive and may require an adjustment period. However, feedback from our early beta testers suggests that the new sidebar navigation improves efficiency once you become familiar with it.

New sidebar navigation

We value your input and invite you to share your thoughts on this new feature here (opens new window).

# 🫂 Improved onboarding flow

As part of our mission (opens new window) to help ambassadors onboard local communities to BTCPay Server faster, we have enhanced the onboarding experience and added personalization features to user profiles. If you're hosting BTCPay for others, they can get up and running by scanning a QR code or clicking the link.

Additionally, users can now upload a profile photo and set a nickname for their accounts, adding a personal touch to the whole experience. We’re not adding these just for fun, we plan to leverage them in our upcoming BTCPay App.

# 🛍️ Point of sale QR onboarding

Our recent testing of BTCPay Point of Sale in Riga (opens new window) and Nashville (opens new window) allowed us to dog food our own product and make further improvements. With 2.0 you can now even easier onboard existing users to the POS app, again just by scanning a QR from the point of sale. This allows ambassadors who onboard merchants to log in users instantly on POS devices.

Point of sale QR onboarding

# 🚀 Checkout 2.0 default

In 2.0 we’re discontinuing our legacy checkout page and our new checkout becomes the standard for all the stores. The 2.0 checkout has been battle-tested for a while now, and we’re fully confident it brings not only more functionality through features like NFC but also much better and tailored UX through our new branding options.

# 🎨 Backend branding

We believe branding your instance should give you the ability to customize the experience, with just the ability to select a color or a logo. And while this applies to all public-facing pages, such as checkout and payment requests for customers, we’ve now added an optional feature that allows you to apply your branding colors to the back office as well.

Backend branding

# 🛒 New e-commerce integrations

Seamless integration into existing systems remains one of our top priorities, and we’re excited to introduce three new e-commerce integrations that expand the possibilities for merchants:

  • Wix
  • Odoo
  • BigCommerce

These integrations offer enhanced flexibility and an easy way for businesses to adopt Bitcoin in their existing e-commerce stores.

# Wix

Wix is one of the world’s largest website-building platforms, powering over 200 million websites globally. Known for its ease of use and flexibility, Wix enables businesses of all sizes to create fully customizable websites, including e-commerce stores. With our new BTCPay integration, Wix users can now accept Bitcoin payments, offering their customers more payment options and expanding their reach to the growing Bitcoin economy. This integration is a game-changer for small to medium-sized businesses looking to embrace Bitcoin, bringing it into the mainstream for millions of merchants worldwide.

Follow our Wix setup guide (opens new window) to install it to your Wix store.

# Odoo

Odoo, an open-source business management software with a vast user base, is a comprehensive suite that covers everything from inventory management, point of sale to e-commerce. Our new plugin for Odoo versions 16 (opens new window) and 17 (opens new window) allows you to easily connect BTCPay with your Odoo store, enabling Bitcoin payments with minimal setup. You can even use it for ticket sales or any other module using online payment methods. It’s even possible to use it in Odoo Point Of Sale (PoS) by enabling online payments there.

Get started by downloading the plugin on GitHub (opens new window) and following our Odoo documentation (opens new window).

# BigCommerce

BigCommerce is a leading e-commerce platform designed for scalability and focused on enterprise-level merchants. We’re bringing Bitcoin payments to BigCommerce users with our latest integration.

To start accepting Bitcoin for your BigCommerce store, check our documentation (opens new window).

# Other integration updates

We’ve done extensive tests for all of our ecommerce integrations. Kudos to our integration expert Ndeet for conducting comprehensive hard field work, testing (opens new window) each and every one of them.

All of our official e-commerce integrations are 2.0 compatible.

However, if you face issues with 2.0 and any official e-commerce integration, please report it here (opens new window), and we’ll prioritize those reports. We continue to monitor feedback from the community and ensure existing integrations stay up-to-date.

If you're using our Shopify plugin, rest assured that it’s not impacted by recent API changes, and you can continue to use it without issues. We’re aware of Shopify discounting certain API calls at the end of this year, and we’re already working on shipping a brand new plugin before that happens.

Additionally, our PrestaShop plugin received a new update (opens new window), thanks to our contributor BitcoinMitchell, and the PHP Library has been updated to be compatible with BTCPay 2.0 (opens new window) as well.

# 🔌 Plugins

If you use plugins with your BTCPay Server, you may notice that some are disabled following updates - we do this to prevent server crashes. If you rely heavily on plugins for your BTCPay operations, we recommend that you double-check compatibility and look for announcements from plugin developers regarding their support for version 2.0 before proceeding with the upgrade.

Plugin developers should update their submodules to 2.0 and fix any errors to ensure compatibility. Review the example PR from Nicolas on Payroll plugin (opens new window) or take a look at how Boltz updated their plugin (opens new window). After resolving issues and thoroughly testing their plugin, developers should publish an updated release on plugin-builder.btcpayserver.org (opens new window).

Currently, maintaining multiple versions of a plugin (for example, one branch for version 1.x and another for version 2.0) is not possible. If you need to publish updates, continue with the 1.x version and release new versions of the plugin until you reach a feature freeze. Once you've achieved this, you can update the submodule reference and release a new version of the plugin starting from 2.0.

We strongly urge all developers to prioritize upgrading to version 2.0.

# List of currently incompatible plugins

List of currently incompatible plugins, at the time of publishing this blog post, all other plugins are 2.0 compatible.

  • BTCPayServer.Plugins.Strike (1.3.2.0)
  • BTCPayServer.Plugins.B2PCentral (1.0.1.0)
  • BTCPayServer.Plugins.Trocador (1.2.5.0)

# 💚 Thank you

With 2.0 we wanted to do all the hard work, most of which may be invisible, but it sets a great base on what we’re aiming to do in 2025. Keep an eye on the upcoming minor releases that we’ll ship if we notice any bugs. In the next few big releases we’re hoping to ship some of the most requested features that further enhance our mission.

Super-special shout out goes to our community testers, who went beyond and above testing the 2.0: decentralizedb, djuri, j7tx21 & stc786.

We hope you enjoy what this update has to offer. As always, thank you to our invaluable contributors, who directly participated in making 2.0 possible: dennisreimann, dstrukt, jackstar12, kukks, ndeet, nicolasdorier, nisaba, pavlenex, rockstardev, tchukwuleta, and webworthy.

The BTCPay Server team 💚

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-btse/index.html b/btcpay-server-btse/index.html index 98af2146..fb938327 100644 --- a/btcpay-server-btse/index.html +++ b/btcpay-server-btse/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

Today, we're delighted to welcome BTSE (opens new window) to the family of companies supporting the BTCPay Server Project. BTSE has made a direct contribution of 80,000 USD to Andrew Camilleri, also known as Kukks - our prolific core contributor.

If you've spent a day in our community, we're sure you've met Kukks! Besides actively helping both newcomers and seasoned members on our chats, submitting pull requests almost daily (with over 220 (opens new window) just in the main repository), he's the mastermind of some of the momentous features such as Crowdfunding app (opens new window), Payment Request (opens new window), BTC-Transmuter (opens new window), Configurator (opens new window), New Greenfield API (opens new window) along a myriad of others.

Thanks to BTSE's generosity, Kukks will be able to focus on BTCPay Server without having to allocate time to paid side-projects to support himself. Kukks quit his day-job a year and a half ago to focus on BTCPay Server and says himself:

Even though it's been rough financially, it was worth it. I've learned more in this past year and a half than I have in my entire career combined, all thanks to BTCPay Server and its community.

BTSE, "bitsie" /ˈbɪtsi/ is a digital assets exchange and derivatives platform which brings one-stop solutions for bridging the gap between the traditional fiat markets and the world of digital assets.

This grant is the first of its kind to fund one of our contributors directly without going through the Foundation (opens new window). As we've mentioned (opens new window) before; the goal of the Foundation is to help contributors but not necessarily act as a middleman.

We're deeply touched by BTSE's philanthropic gesture and stoked to see what kind of magic our "Evil Scientist" will bring to the project next now that he can spend more time coding without worrying about financial stability. 💚

If you're a business that would like to supporter of BTCPay Server contributors and help us create an open-financial future for everyone, please get in touch via a contact form on the foundation's website (opens new window).

SUPPORT BTCPAY SERVER (opens new window)

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Today, we're delighted to welcome BTSE (opens new window) to the family of companies supporting the BTCPay Server Project. BTSE has made a direct contribution of 80,000 USD to Andrew Camilleri, also known as Kukks - our prolific core contributor.

If you've spent a day in our community, we're sure you've met Kukks! Besides actively helping both newcomers and seasoned members on our chats, submitting pull requests almost daily (with over 220 (opens new window) just in the main repository), he's the mastermind of some of the momentous features such as Crowdfunding app (opens new window), Payment Request (opens new window), BTC-Transmuter (opens new window), Configurator (opens new window), New Greenfield API (opens new window) along a myriad of others.

Thanks to BTSE's generosity, Kukks will be able to focus on BTCPay Server without having to allocate time to paid side-projects to support himself. Kukks quit his day-job a year and a half ago to focus on BTCPay Server and says himself:

Even though it's been rough financially, it was worth it. I've learned more in this past year and a half than I have in my entire career combined, all thanks to BTCPay Server and its community.

BTSE, "bitsie" /ˈbɪtsi/ is a digital assets exchange and derivatives platform which brings one-stop solutions for bridging the gap between the traditional fiat markets and the world of digital assets.

This grant is the first of its kind to fund one of our contributors directly without going through the Foundation (opens new window). As we've mentioned (opens new window) before; the goal of the Foundation is to help contributors but not necessarily act as a middleman.

We're deeply touched by BTSE's philanthropic gesture and stoked to see what kind of magic our "Evil Scientist" will bring to the project next now that he can spend more time coding without worrying about financial stability. 💚

If you're a business that would like to supporter of BTCPay Server contributors and help us create an open-financial future for everyone, please get in touch via a contact form on the foundation's website (opens new window).

SUPPORT BTCPAY SERVER (opens new window)

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-cve-2022-32984/index.html b/btcpay-server-cve-2022-32984/index.html index bd23e778..ee473875 100644 --- a/btcpay-server-cve-2022-32984/index.html +++ b/btcpay-server-cve-2022-32984/index.html @@ -12,7 +12,7 @@ - + @@ -56,7 +56,7 @@ A remote attacker can obtain sensitive information when a Point of Sale app ( BTCPay Server component) is publicly exposed.

On May 28, 2022 Antoine Poinsot responsibly disclosed a vulnerability affecting BTCPay Server v1.3.0 to v1.5.3. On the same day we released v1.5.4 that included a patch for said vulnerability. We’ve awarded Antoine a 5000 USD reward due to the severity of the vulnerability. He had found an information leak in the Point of Sale (POS) component of BTCPay Server. If an external node was used, xpub (public key) and lightning credentials were possibly leaked. If you used an internal node, only xpub could have been possibly leaked. Due to the severity of this vulnerability, it’s the highest paid bounty so far. We strive to uphold the highest of standards and seek to keep rewarding those who help us in this mission.

# ⏱️ Timeline

  • Oct 29, 2021 release 1.3.0 : Introduction of vulnerability.
  • May 28, 2022 : Vulnerability was disclosed
  • May 28, 2022 release 1.5.4 : Vulnerability patched.
  • Jun 8, 2022 : Included patch notes on Security Vulnerability in release 1.6.0 urging people to upgrade.
  • Jun 10, 2022 : CVE candidate reserved

# CVE-2022-32984 (allows a remote attacker to obtain sensitive information if a publicly exposed POS app is available)

A malicious party could obtain sensitive information about publicly exposed Point Of Sale (POS) apps. This was possible through BTCPay Server version 1.3.0 to 1.5.3.

  • Details: To exploit this vulnerability, the attacker would look at the HTML Source of the publicly exposed POS app. It was possible to gain remote access to sensitive store information through this method. Among this information was xpub and Lightning credentials, if connected to an external node; however, Lightning credentials could not be leaked, if connected to the internal node.
  • Users affected: Users running a publicly exposed Point Of Sale (POS) app.
  • Impact: Sensitive POS information including xpub and lightning network credentials could be obtained.
  • Severity: Critical
  • Affected versions: V1.3.0 to V1.5.3

# Summary

If your BTCPay Server instance is currently running between version 1.3.0 and 1.5.4 we highly recommend immediately upgrading to the latest version or a version beyond 1.5.4. -You can find the version number of your BTCPay Server in the bottom right of the dashboard. To update, go to Server Settings > Maintenance tab and click Update or use the command btcpay-update.sh in the command line.

We want to thank Antoine for submitting this vulnerability and doing so in an orderly manner. We’ve agreed to disclose the amount awarded. As the open-source project BTCPay Server is, we value and want to always reward those who further improve the software and its security.

Thank you 💚

Last Updated: 10/30/2024, 2:38:33 PM

+You can find the version number of your BTCPay Server in the bottom right of the dashboard. To update, go to Server Settings > Maintenance tab and click Update or use the command btcpay-update.sh in the command line.

We want to thank Antoine for submitting this vulnerability and doing so in an orderly manner. We’ve agreed to disclose the amount awarded. As the open-source project BTCPay Server is, we value and want to always reward those who further improve the software and its security.

Thank you 💚

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-foundation-introspective/index.html b/btcpay-server-foundation-introspective/index.html index 0f7f6c44..2d6dcad2 100644 --- a/btcpay-server-foundation-introspective/index.html +++ b/btcpay-server-foundation-introspective/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

Since I announced the BTCPay Server Foundation (opens new window) at the Baltic 2019 Honey Badger a lot has been happening behind the scenes. We decided to share our story, not just to be transparent to our supporters, but also to share our experience with the community.

We initially created the foundation as an LLC in the US. This seemed a good option as we estimated that the largest portion of supporters would be US based. Creating a proper non-profit in the US requires tons of upfront paperwork while it was unclear if we would receive a single satoshi.

LLC was setup thanks to @r0ckstardev and @vandrewattycpa. @r0ckstardev was willing to take over all formal liabilities arising from this setup and take care of all operational duties (accounting, reporting, transferring money to contributors around the world, etc). We started receiving donations to this entity from Square Crypto, DG lab, ACINQ, LunaNode and Wallet of Satoshi.

As time passed, we realized that this structure will not work in the long run and that, as the main founder of the project, I should better take more responsibility and initiative on it. For that reason, I started the process of opening the BTCPay Server Foundation in Japan instead. We decided to hold off donations from new supporters and postpone payments to contributors until the foundation is established in Japan. We moved the remaining funds temporarily under my control in Japan, until I can transfer the money to the new Japanese foundation.

Finally, BTCPay Server Foundation is now based in Japan. This is a 一般社団法人 (a real non profit association, not taxed on profit). The Japanese law requires three "board members". I am the main representative and board member, the other members are @jimmyhomma (opens new window) who is a close bitcoiner friend and Kanai Masayoshi who has been my tax accountant for 2 years already. While they are board members, their role will be mainly passive. I still need to report to them so they can be confident that the foundation is administrated properly and lawfully.

My role in the foundation is mainly administrative, the goal of this foundation is to help supporter's money finding their way to BTCPay Server's contributors pocket. Supporters and contributors are the one deciding to collaborate around the foundation and keeping it alive.

Creating a company and opening a bank account in Japan has been time consuming, especially when your Japanese is not that good. The entity creation took one month and a half, and three more weeks to open a bank account... or not, as I received the rejection of our demand. The fact that my Japanese is not very good and that they saw "bitcoin" and "payment processor" might have played a role...

Luckily, in Japan, while inconvenient, companies can operate without a bank account. It means that the foundation will not be unable to make or receive wire transfers momentarily, until we find a bank willing to take us. Our only solution is to operate the foundation's money directly from the Japanese exchange BitBank (opens new window), using them as a bank and only using bitcoin when payment need to be received or made. While I wish we could keep the bitcoin under our own custody, at this moment, accounting properly bitcoin holding in Japan is a significant burden, and neither me or my tax accountant have time to dedicate.

As such, we will "reopen" the foundation in the next week or two, when our exchange account gets properly set up.

A reminder of our grants until now:

  • Square Crypto: 100 000 USD ( 33333.32 USD received to this day, because we requested donation to be spread in 12 monthly installments)
  • Digital Garage: 30 000 USD
  • ACINQ: 11 150 USD
  • Wallet of Satoshi: 5 000 USD
  • LunaNode: 5 000 USD

That means we received 84483.32 of the 151150 USD in total. When I finished transferring funds from my own custody to the Japanese foundation, we will have 42916,67 USD. To this date, I paused the promised donations to various contributors for a total of 28400 USD, that will hopefully resume soon. We still have to rework on contracts (because we changed jurisdiction) with Square Crypto for receiving the remaining 66666.68 USD, that may take time.

We have a few more things to figure out. On the bright side, we are confident that we should be able to open an account on one of best Japanese exchanges - BitBank (opens new window) and manage the foundation's finance from there.

Our next step is finding a bank that can provide us with a bank account, so that we can receive and distribute funds to contributors who prefer to get fiat.

Thank you for your patience, we are learning as we go!

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Since I announced the BTCPay Server Foundation (opens new window) at the Baltic 2019 Honey Badger a lot has been happening behind the scenes. We decided to share our story, not just to be transparent to our supporters, but also to share our experience with the community.

We initially created the foundation as an LLC in the US. This seemed a good option as we estimated that the largest portion of supporters would be US based. Creating a proper non-profit in the US requires tons of upfront paperwork while it was unclear if we would receive a single satoshi.

LLC was setup thanks to @r0ckstardev and @vandrewattycpa. @r0ckstardev was willing to take over all formal liabilities arising from this setup and take care of all operational duties (accounting, reporting, transferring money to contributors around the world, etc). We started receiving donations to this entity from Square Crypto, DG lab, ACINQ, LunaNode and Wallet of Satoshi.

As time passed, we realized that this structure will not work in the long run and that, as the main founder of the project, I should better take more responsibility and initiative on it. For that reason, I started the process of opening the BTCPay Server Foundation in Japan instead. We decided to hold off donations from new supporters and postpone payments to contributors until the foundation is established in Japan. We moved the remaining funds temporarily under my control in Japan, until I can transfer the money to the new Japanese foundation.

Finally, BTCPay Server Foundation is now based in Japan. This is a 一般社団法人 (a real non profit association, not taxed on profit). The Japanese law requires three "board members". I am the main representative and board member, the other members are @jimmyhomma (opens new window) who is a close bitcoiner friend and Kanai Masayoshi who has been my tax accountant for 2 years already. While they are board members, their role will be mainly passive. I still need to report to them so they can be confident that the foundation is administrated properly and lawfully.

My role in the foundation is mainly administrative, the goal of this foundation is to help supporter's money finding their way to BTCPay Server's contributors pocket. Supporters and contributors are the one deciding to collaborate around the foundation and keeping it alive.

Creating a company and opening a bank account in Japan has been time consuming, especially when your Japanese is not that good. The entity creation took one month and a half, and three more weeks to open a bank account... or not, as I received the rejection of our demand. The fact that my Japanese is not very good and that they saw "bitcoin" and "payment processor" might have played a role...

Luckily, in Japan, while inconvenient, companies can operate without a bank account. It means that the foundation will not be unable to make or receive wire transfers momentarily, until we find a bank willing to take us. Our only solution is to operate the foundation's money directly from the Japanese exchange BitBank (opens new window), using them as a bank and only using bitcoin when payment need to be received or made. While I wish we could keep the bitcoin under our own custody, at this moment, accounting properly bitcoin holding in Japan is a significant burden, and neither me or my tax accountant have time to dedicate.

As such, we will "reopen" the foundation in the next week or two, when our exchange account gets properly set up.

A reminder of our grants until now:

  • Square Crypto: 100 000 USD ( 33333.32 USD received to this day, because we requested donation to be spread in 12 monthly installments)
  • Digital Garage: 30 000 USD
  • ACINQ: 11 150 USD
  • Wallet of Satoshi: 5 000 USD
  • LunaNode: 5 000 USD

That means we received 84483.32 of the 151150 USD in total. When I finished transferring funds from my own custody to the Japanese foundation, we will have 42916,67 USD. To this date, I paused the promised donations to various contributors for a total of 28400 USD, that will hopefully resume soon. We still have to rework on contracts (because we changed jurisdiction) with Square Crypto for receiving the remaining 66666.68 USD, that may take time.

We have a few more things to figure out. On the bright side, we are confident that we should be able to open an account on one of best Japanese exchanges - BitBank (opens new window) and manage the foundation's finance from there.

Our next step is finding a bank that can provide us with a bank account, so that we can receive and distribute funds to contributors who prefer to get fiat.

Thank you for your patience, we are learning as we go!

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-grant-7-okcoin/index.html b/btcpay-server-grant-7-okcoin/index.html index e7c16ba9..0d9427d1 100644 --- a/btcpay-server-grant-7-okcoin/index.html +++ b/btcpay-server-grant-7-okcoin/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

We're thrilled to announce that the BTCPay Server Foundation has received grant #7 from OKCoin (opens new window). OKCoin is matching our biggest supporter to date and will be donating a total of 100,000 USD over the next 12 months.

Founded in 2013 and headquartered in San Francisco with offices spanning across the world, OKCoin is one of the largest digital assets and virtual currencies exchanges. Their mission is to make it easy and safe to buy and sell crypto assets using local currencies globally.

When we were first introduced to OKCoin, it was clear that they deeply care for open-source and understand its importance for the entire ecosystem. The focus of our conversations was on improving user-education and user-experience of BTCPay Server.

With that in mind, a portion of this grant will be used on funding contributors who improve our documentation, ease of deployment, video materials UI and UX. Another part will go towards the new GreenField API, which will allow enterprises and developers to build on BTCPay Server with greater flexibility.

This is not their first grant of this type. Earlier this year, they provided an individual developer grant to a well-known Bitcoin core developer, Fabian Jahr (opens new window).

We would like to thank Square Crypto (opens new window) for introducing us to OKCoin and sharing the documentation that helped us speed up the process.

Thanks to OKCoin's philanthropic gesture, our vision lives. We remain committed to making an open-financial ecosystem for everyone, free, forever.

Thank you for your support OKCoin💚!

If you're a business that would like to support BTCPay Server contributors please get in touch via the contact form on the foundation's website (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

We're thrilled to announce that the BTCPay Server Foundation has received grant #7 from OKCoin (opens new window). OKCoin is matching our biggest supporter to date and will be donating a total of 100,000 USD over the next 12 months.

Founded in 2013 and headquartered in San Francisco with offices spanning across the world, OKCoin is one of the largest digital assets and virtual currencies exchanges. Their mission is to make it easy and safe to buy and sell crypto assets using local currencies globally.

When we were first introduced to OKCoin, it was clear that they deeply care for open-source and understand its importance for the entire ecosystem. The focus of our conversations was on improving user-education and user-experience of BTCPay Server.

With that in mind, a portion of this grant will be used on funding contributors who improve our documentation, ease of deployment, video materials UI and UX. Another part will go towards the new GreenField API, which will allow enterprises and developers to build on BTCPay Server with greater flexibility.

This is not their first grant of this type. Earlier this year, they provided an individual developer grant to a well-known Bitcoin core developer, Fabian Jahr (opens new window).

We would like to thank Square Crypto (opens new window) for introducing us to OKCoin and sharing the documentation that helped us speed up the process.

Thanks to OKCoin's philanthropic gesture, our vision lives. We remain committed to making an open-financial ecosystem for everyone, free, forever.

Thank you for your support OKCoin💚!

If you're a business that would like to support BTCPay Server contributors please get in touch via the contact form on the foundation's website (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-grant-baillie-gifford/index.html b/btcpay-server-grant-baillie-gifford/index.html index 9e78ddfe..0827470e 100644 --- a/btcpay-server-grant-baillie-gifford/index.html +++ b/btcpay-server-grant-baillie-gifford/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

Baillie Gifford, an investment management partnership is providing an annual grant over four years to the BTCPay Server Foundation.

Founded in 1908 in Edinburgh, Scotland, Baillie Gifford has US$487bn of assets under management and advice for a global client base. Focused on long-term growth, Baillie Gifford is wholly owned by its partners, all of whom work within the firm.

We would like to thank Baillie Gifford for supporting us and the Bitcoin open-source environment. With this grant, Baillie Gifford became one of our largest supporters, allowing the BTCPay Server contributors to continue working on creating free and open-source payment processor for anybody in the world to use.

This grant will help us further achieve our roadmap (opens new window) goals for this year centered around a visual overhaul of BTCPay Server, mobile app development and the transition from a self-hosted payment processor to a modular Bitcoin payment platform.

Baillie Gifford, welcome to the BTCPay Server family!

We also thank our dedicated and passionate community for their daily support in making BTCPay Server the best Bitcoin merchant solution possible.

If you're a business that would like to support BTCPay Server contributors please get in touch via the contact form on the foundation's website (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Baillie Gifford, an investment management partnership is providing an annual grant over four years to the BTCPay Server Foundation.

Founded in 1908 in Edinburgh, Scotland, Baillie Gifford has US$487bn of assets under management and advice for a global client base. Focused on long-term growth, Baillie Gifford is wholly owned by its partners, all of whom work within the firm.

We would like to thank Baillie Gifford for supporting us and the Bitcoin open-source environment. With this grant, Baillie Gifford became one of our largest supporters, allowing the BTCPay Server contributors to continue working on creating free and open-source payment processor for anybody in the world to use.

This grant will help us further achieve our roadmap (opens new window) goals for this year centered around a visual overhaul of BTCPay Server, mobile app development and the transition from a self-hosted payment processor to a modular Bitcoin payment platform.

Baillie Gifford, welcome to the BTCPay Server family!

We also thank our dedicated and passionate community for their daily support in making BTCPay Server the best Bitcoin merchant solution possible.

If you're a business that would like to support BTCPay Server contributors please get in touch via the contact form on the foundation's website (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-grant-pnxbet/index.html b/btcpay-server-grant-pnxbet/index.html index c00ad3db..75a5c338 100644 --- a/btcpay-server-grant-pnxbet/index.html +++ b/btcpay-server-grant-pnxbet/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

We’re excited to announce that the BTCPay Server Foundation has received a grant of $30 000 USD paid in Bitcoin from PNXBET (opens new window).

Founded in 2019, headquartered and licensed in Curaçao, PNXBET is a gaming operator offering a wide variety of online casino games and sports-book matches. The company is a cutting-edge technology platform with a focus on user experience. Over forty thousand matches and five thousand casino games in more than fifty categories are available to enjoy, ranging from jackpot games and slot machines, to live sport event bets and casino tables.

PNXBET is not only a supporter of the BTCPay Server Foundation but they’re also a user of our software. With a monthly Bitcoin volume measured in millions, the company is saving over a hundred thousand dollars in fees annually by using BTCPay Server. They are also using our Pull Payments feature for batching the Bitcoin withdrawals on their platform through the new Greenfield API. This allows further saving on the mining fees.

We’re looking forward to receiving feedback and working closely with yet another high-volume merchant to further optimize and scale BTCPay Server for enterprise use.

We thank PNXBET for supporting BTCPay Server and the Bitcoin open-source environment with this donation. It will help us write even better code and further promote BTCPay Server to individuals and merchants who would most benefit from it.

Welcome to the BTCPay Server family!

As always, we also thank our dedicated and passionate community for their daily support in making BTCPay Server the best merchant solution possible.

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

We’re excited to announce that the BTCPay Server Foundation has received a grant of $30 000 USD paid in Bitcoin from PNXBET (opens new window).

Founded in 2019, headquartered and licensed in Curaçao, PNXBET is a gaming operator offering a wide variety of online casino games and sports-book matches. The company is a cutting-edge technology platform with a focus on user experience. Over forty thousand matches and five thousand casino games in more than fifty categories are available to enjoy, ranging from jackpot games and slot machines, to live sport event bets and casino tables.

PNXBET is not only a supporter of the BTCPay Server Foundation but they’re also a user of our software. With a monthly Bitcoin volume measured in millions, the company is saving over a hundred thousand dollars in fees annually by using BTCPay Server. They are also using our Pull Payments feature for batching the Bitcoin withdrawals on their platform through the new Greenfield API. This allows further saving on the mining fees.

We’re looking forward to receiving feedback and working closely with yet another high-volume merchant to further optimize and scale BTCPay Server for enterprise use.

We thank PNXBET for supporting BTCPay Server and the Bitcoin open-source environment with this donation. It will help us write even better code and further promote BTCPay Server to individuals and merchants who would most benefit from it.

Welcome to the BTCPay Server family!

As always, we also thank our dedicated and passionate community for their daily support in making BTCPay Server the best merchant solution possible.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-kraken-grant/index.html b/btcpay-server-kraken-grant/index.html index 61991d46..9215399f 100644 --- a/btcpay-server-kraken-grant/index.html +++ b/btcpay-server-kraken-grant/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

We're thrilled to announce that the BTCPay Server Foundation has received a grant of 150,000 USD (received and held in Bitcoin) from Kraken (opens new window). This is the biggest donation we've received so far.

Founded in 2011 by Jesse Powell, Kraken is one of the world’s largest, oldest and most reputable bitcoin exchanges. Based in San Francisco with offices around the world, their core mission is to accelerate the adoption of cryptocurrency so that anybody can achieve financial freedom and inclusion.

For us, the collaboration with Kraken happened organically. We've been fans of the company's ethos for a long time. The way Kraken operates, is something we find relatable to our open-source culture. When the BTCPay Server Foundation was formed (opens new window), we had discussed internally that Kraken was a good example of a company we'd like to be supported by and affiliated with.

We were over the moon, when an email from Jesse Powell (opens new window) arrived in our inbox. In that email, besides a concise "we'd like to support you guys," Jesse mentioned that they've launched BTCPay Server integration on Cryptowatch (opens new window), their premium trading terminal that provides real-time cryptocurrency market data. That put a big grin on our faces. Not only did they want to support our work but they're using the software we've been building for the past two and a half years. However, we weren't surprised.

The reason we expected this, is due to our community. Since the launch of the BTCPay Server Foundation, we've been receiving constant "WEN KRAKEN" messages via DM's and in our community chat (opens new window). The passion that people put into the communities of both Kraken and ours to make this happen, is truly incredible.

To all of you "wenkrakeners" - thank you!

Our focus this year is to make BTCPay Server easier to use by ironing out the interface but also adding a better workflow especially in the initial setup which includes installation, creating your first account and store, and configuring your wallet. We're confident that we can tremendously improve that part of the user's workflow in the next few months to come.

At the same time, another goal is greater flexibility for developers. We want to offer a Swiss-knife type of stack that can help anybody in building a Bitcoin business with ease and versatility on top of BTCPay Server.

Making BTCPay Server intuitive for small mom-and-pop stores but also a headless beast for developers, is not an easy task. Thanks to this grant, we're able to focus the efforts of our contributors towards that goal but also extend the scope to improving integration tools with e-commerce platforms and exchanges. We know that when it comes to plugins and integrations, we can do much better. We've decided to, not only increase the amount of plugins, but also completely overhaul our existing plugins once our new API (opens new window) is ready. In addition, we're working hard to release the beta version of our exchange integration plugin BTC Transmuter (opens new window) within the year, enabling evil scientist level automated workflows in the Bitcoin ecosystem.

To our community, thanks for always leading the way for us. Because of you, we're able to wake up and code with passion - every single day.

We're honoured to welcome Kraken as our biggest supporter yet. Welcome to the BTCPay Server family, let's continue to build great things together!

This Friday, June 26th, at 13:00 UTC Kraken's Lead Bitcoin Strategist Pierre Rochard will host a free webinar highlighting the benefits of Bitcoin payments and how you can accept them via BTCPay Server. Pierre will be joined by our Nicolas Dorier and Artur Sapek, founder of Cryptowatch.

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

We're thrilled to announce that the BTCPay Server Foundation has received a grant of 150,000 USD (received and held in Bitcoin) from Kraken (opens new window). This is the biggest donation we've received so far.

Founded in 2011 by Jesse Powell, Kraken is one of the world’s largest, oldest and most reputable bitcoin exchanges. Based in San Francisco with offices around the world, their core mission is to accelerate the adoption of cryptocurrency so that anybody can achieve financial freedom and inclusion.

For us, the collaboration with Kraken happened organically. We've been fans of the company's ethos for a long time. The way Kraken operates, is something we find relatable to our open-source culture. When the BTCPay Server Foundation was formed (opens new window), we had discussed internally that Kraken was a good example of a company we'd like to be supported by and affiliated with.

We were over the moon, when an email from Jesse Powell (opens new window) arrived in our inbox. In that email, besides a concise "we'd like to support you guys," Jesse mentioned that they've launched BTCPay Server integration on Cryptowatch (opens new window), their premium trading terminal that provides real-time cryptocurrency market data. That put a big grin on our faces. Not only did they want to support our work but they're using the software we've been building for the past two and a half years. However, we weren't surprised.

The reason we expected this, is due to our community. Since the launch of the BTCPay Server Foundation, we've been receiving constant "WEN KRAKEN" messages via DM's and in our community chat (opens new window). The passion that people put into the communities of both Kraken and ours to make this happen, is truly incredible.

To all of you "wenkrakeners" - thank you!

Our focus this year is to make BTCPay Server easier to use by ironing out the interface but also adding a better workflow especially in the initial setup which includes installation, creating your first account and store, and configuring your wallet. We're confident that we can tremendously improve that part of the user's workflow in the next few months to come.

At the same time, another goal is greater flexibility for developers. We want to offer a Swiss-knife type of stack that can help anybody in building a Bitcoin business with ease and versatility on top of BTCPay Server.

Making BTCPay Server intuitive for small mom-and-pop stores but also a headless beast for developers, is not an easy task. Thanks to this grant, we're able to focus the efforts of our contributors towards that goal but also extend the scope to improving integration tools with e-commerce platforms and exchanges. We know that when it comes to plugins and integrations, we can do much better. We've decided to, not only increase the amount of plugins, but also completely overhaul our existing plugins once our new API (opens new window) is ready. In addition, we're working hard to release the beta version of our exchange integration plugin BTC Transmuter (opens new window) within the year, enabling evil scientist level automated workflows in the Bitcoin ecosystem.

To our community, thanks for always leading the way for us. Because of you, we're able to wake up and code with passion - every single day.

We're honoured to welcome Kraken as our biggest supporter yet. Welcome to the BTCPay Server family, let's continue to build great things together!

This Friday, June 26th, at 13:00 UTC Kraken's Lead Bitcoin Strategist Pierre Rochard will host a free webinar highlighting the benefits of Bitcoin payments and how you can accept them via BTCPay Server. Pierre will be joined by our Nicolas Dorier and Artur Sapek, founder of Cryptowatch.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/btcpay-server-v1-0-7-0/index.html b/btcpay-server-v1-0-7-0/index.html index 7fa62934..10e641a4 100644 --- a/btcpay-server-v1-0-7-0/index.html +++ b/btcpay-server-v1-0-7-0/index.html @@ -12,7 +12,7 @@ - + @@ -60,7 +60,7 @@ These settings are now ordered, polished, and hopefully made more clear to users.

Server settings policies
Server settings policies
 

# Improvements ✨

1.0.7.0 also includes general improvements in the BTCPay Server software.

The most prominent improvement is re-enabling uppercase BECH32 support in QR code address formatting after a quarterly-long discussion (opens new window) on Github between a majority of known wallet providers.

This support will enable users to pay using the embedded QR codes in the invoices while benefiting from the lowest network fees possible thanks to the BECH32 formatting.

Other minor improvements include removing the "chain" icon for on-chain payments in the invoice list, icon alignment adjustment, and more. Read the full 1.0.7.0 Changelog (opens new window) for details.

# Bug Fixing 🐛

Bug fixes in 1.0.7.0 include fixing a Get crashing call, file storage feature URL handling, Point of Sale custom price-fixing, and so much more.

For example, regarding the now-famous Payment Button.

In some circumstances, embedding a BTCPay Server payment button on a website could result in the payment button not rendering as expected.

This is now also history! Embedding payment, donation, "GIVE ME MONEZ" buttons anywhere and on any website should now be without issues.


That's all for this major update. We worked hard to provide you with a functional new wallet setup interface, improve upon the existing features and fix bugs.

Despite this, if you have issues, feedback, feature requests, feel free to reach out on our community chat (opens new window). We hope you enjoy what this update has to offer.

As always, thank you to our invaluable contributors -@britttttk (opens new window) @bumbummen99 (opens new window) @dennisreimann (opens new window) @dstrukt (opens new window) @ketominer (opens new window) @Kukks (opens new window) @Pavlenex (opens new window) @rockstardev (opens new window) @NicolasDorier (opens new window) @ubolator (opens new window) @Zaxounette (opens new window)

The BTCPay Server team 💚

Last Updated: 10/30/2024, 2:38:33 PM
- + diff --git a/btcpay-vault/index.html b/btcpay-vault/index.html index 47c46bb5..83f0f0ce 100644 --- a/btcpay-vault/index.html +++ b/btcpay-vault/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

We’re excited to announce a freshly-baked feature from our coding kitchen – BTCPay Vault. (opens new window) Prepared by our Chef de Cuisine, Nicolas Dorier, the vault is a delicious desktop application which allows communication between your hardware wallet and BTCPay using its full Bitcoin node (opens new window) providing a richer user experience without sacrificing privacy and security.

# Why?

When you launch a BTCPay Server, the stack, among other things (opens new window), contains a full Bitcoin node. To receive funds through BTCPay, you have to configure your store with an _extended public ke_y(xpub..), which is then used to generate addresses.

However, to spend the received funds from your wallet, you need access to your private keys, which we do not store on BTCPay. That required users to use an external wallet, and due to severe limitations of almost every wallet on the market(gap limit, trusted third-parties, no xpub export support, etc), a majority of users often opted to use wallet solutions such as Electrum and leak their sensitive financial information to a third party server.

That's why BTCPay created an internal wallet system (opens new window) many months ago that allows you to spend your funds through direct integrations with the Ledger Nano S, ColdCard. This also allowed you to import your public key without requiring technical knowledge.

Enters the BTCPay Vault (opens new window), a cross-platform desktop application that makes hardware wallet experience not only smoother and faster, but also extends compatibility to many other devices.

# How does it work?

The hardware wallet integration is composed of two parts:

In laymen words, BTCPay Vault is a separate app, locally hosted on your own PC, which BTCPay Server connects to and asks for permission. Once permission is granted, BTCPay is able to integrate with any hardware wallet connected to your PC. You can import your wallet and spend incoming funds with a simple confirmation on your device, with your keys never leaving your hardware device, with all funds being validated against your own Bitcoin full node and no data leakage.

# Getting Started with BTCPay Vault

# Connecting your wallet to a store

Setting up BTCPay Vault is quite easy. You only need to have already set up BTCPay Server.

  1. Download BTCPay Vault (opens new window)
  2. Install BTCPay Vault on your PC (Windows, MacOS or Linux)
  3. Open BTCPay Vault app.
  4. Plug in the hardware wallet and make sure it's in wake up state
  5. Go to your BTCPay Server's Store > General Settings > Derivation Scheme > Import from the Vault
  6. Grant the permission
  7. Your public key will automatically be imported in the store and configured to an appropriate format
  8. Validate that address shown on BTCPay is the same as the one on your device
  9. Save

# Spending funds with BTCPay Wallet

Once you've received funds to your wallet and you decide to spend them, you can sign the transaction with your hardware wallet, all inside BTCPay Server.

  1. Open BTCPay Vault app on your PC
  2. Plug in the hardware wallet and make sure it's in wake up state
  3. In BTCPay Server, go to > Wallets > Manage > Send
  4. Fill in the Destination address and the Amount
  5. Select Sign with the Vault
  6. Verify the transaction on your hardware wallet and confirm it
  7. Broadcast the transaction

# Supported Hardware Wallets

At this moment, the hardware wallet integration (HWI) supports the following devices:

  • ColdCard
  • Digital BitBox
  • KeepKey
  • Ledger Nano S
  • Ledger Nano X
  • Trezor Model T
  • Trezor One

There you have it, using a full node with a hardware wallet in a few easy steps. We hope the Vault will help you transact more privately. If you have any feedback or face any issues, please let us know chat (opens new window).

If you're developer, you can use the BTCPay Vault with your own project as it is not dependent on BTCPay and can be modified to suit your needs.

We'd like to thank all our community members that helped us test the vault in the wild. Special kudos to Wasabi Wallet (opens new window) and the HWI (opens new window) for creating the software that made BTCPay Vault possible.

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

We’re excited to announce a freshly-baked feature from our coding kitchen – BTCPay Vault. (opens new window) Prepared by our Chef de Cuisine, Nicolas Dorier, the vault is a delicious desktop application which allows communication between your hardware wallet and BTCPay using its full Bitcoin node (opens new window) providing a richer user experience without sacrificing privacy and security.

# Why?

When you launch a BTCPay Server, the stack, among other things (opens new window), contains a full Bitcoin node. To receive funds through BTCPay, you have to configure your store with an _extended public ke_y(xpub..), which is then used to generate addresses.

However, to spend the received funds from your wallet, you need access to your private keys, which we do not store on BTCPay. That required users to use an external wallet, and due to severe limitations of almost every wallet on the market(gap limit, trusted third-parties, no xpub export support, etc), a majority of users often opted to use wallet solutions such as Electrum and leak their sensitive financial information to a third party server.

That's why BTCPay created an internal wallet system (opens new window) many months ago that allows you to spend your funds through direct integrations with the Ledger Nano S, ColdCard. This also allowed you to import your public key without requiring technical knowledge.

Enters the BTCPay Vault (opens new window), a cross-platform desktop application that makes hardware wallet experience not only smoother and faster, but also extends compatibility to many other devices.

# How does it work?

The hardware wallet integration is composed of two parts:

In laymen words, BTCPay Vault is a separate app, locally hosted on your own PC, which BTCPay Server connects to and asks for permission. Once permission is granted, BTCPay is able to integrate with any hardware wallet connected to your PC. You can import your wallet and spend incoming funds with a simple confirmation on your device, with your keys never leaving your hardware device, with all funds being validated against your own Bitcoin full node and no data leakage.

# Getting Started with BTCPay Vault

# Connecting your wallet to a store

Setting up BTCPay Vault is quite easy. You only need to have already set up BTCPay Server.

  1. Download BTCPay Vault (opens new window)
  2. Install BTCPay Vault on your PC (Windows, MacOS or Linux)
  3. Open BTCPay Vault app.
  4. Plug in the hardware wallet and make sure it's in wake up state
  5. Go to your BTCPay Server's Store > General Settings > Derivation Scheme > Import from the Vault
  6. Grant the permission
  7. Your public key will automatically be imported in the store and configured to an appropriate format
  8. Validate that address shown on BTCPay is the same as the one on your device
  9. Save

# Spending funds with BTCPay Wallet

Once you've received funds to your wallet and you decide to spend them, you can sign the transaction with your hardware wallet, all inside BTCPay Server.

  1. Open BTCPay Vault app on your PC
  2. Plug in the hardware wallet and make sure it's in wake up state
  3. In BTCPay Server, go to > Wallets > Manage > Send
  4. Fill in the Destination address and the Amount
  5. Select Sign with the Vault
  6. Verify the transaction on your hardware wallet and confirm it
  7. Broadcast the transaction

# Supported Hardware Wallets

At this moment, the hardware wallet integration (HWI) supports the following devices:

  • ColdCard
  • Digital BitBox
  • KeepKey
  • Ledger Nano S
  • Ledger Nano X
  • Trezor Model T
  • Trezor One

There you have it, using a full node with a hardware wallet in a few easy steps. We hope the Vault will help you transact more privately. If you have any feedback or face any issues, please let us know chat (opens new window).

If you're developer, you can use the BTCPay Vault with your own project as it is not dependent on BTCPay and can be modified to suit your needs.

We'd like to thank all our community members that helped us test the vault in the wild. Special kudos to Wasabi Wallet (opens new window) and the HWI (opens new window) for creating the software that made BTCPay Vault possible.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/case-study-bhb24-nostriga/index.html b/case-study-bhb24-nostriga/index.html index a6980ce1..68665090 100644 --- a/case-study-bhb24-nostriga/index.html +++ b/case-study-bhb24-nostriga/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

The Baltic HoneyBadger (opens new window) conference, Europe’s longest-standing Bitcoin-only event, celebrated its 6th anniversary this year in Riga, Latvia. Joining the event was Nostriga (opens new window), an unconference focused on the Nostr protocol. For the first time, the Nostr conference made its way to Europe, adding an exciting new approach and culture to the gathering. With both conferences joining forces, attendees were treated to an entire week of events, giving them plenty of opportunities to dive deep into Bitcoin, decentralized communications, and everything freedom tech. With the main focus being decentralization, conference organizers made sure that all payments were free of intermediaries, leaving attendees free to focus on collaboration, and sharing ideas that push innovation.

Whether attendees were grabbing coffee, a burger or buying merchandise, conference organizers wanted to ensure they could pay in bitcoin.

This case study explores the collaborative efforts of the conference organizers (HodlHodl (opens new window) & Nostriga (opens new window)), BTCPay Server (opens new window), together with Blink (opens new window), Bitcoinize (opens new window), MyPlebTag (opens new window), and BoltCard (opens new window) in onboarding local merchants to adopt Bitcoin payments at the event. With this we aim to highlight the setup, inspire local communities to replicate the process, and demonstrate the practical use of Bitcoin as a medium of exchange.

Download a PDF version of this case study (opens new window).

# Background and challenges

Building on the success of the BH2023 and Bitcoin Atlantis (opens new window) conference, the goal this year was to take things further and improve the experience for everyone involved.

Before the events, most participating merchants had limited experience with Bitcoin. A survey conducted post-event revealed that 50% of merchants rated their understanding of Bitcoin as a 2 out of 5, with 25% rating it as 1. Additionally, 75% had never considered accepting Bitcoin payments in their businesses before attending the conference.

This highlighted a clear challenge: how to onboard merchants with little or no Bitcoin knowledge start accepting it, while making sure the payment process is smooth and easy for both them and their customers?

  • For merchants, the focus was on providing an experience that matched the ease of traditional credit card payments, while reducing technical headaches, volatility of bitcoin, and ensuring no downtime.
  • For attendees, it was all about making the system easy to use, even for beginners who never had bitcoin. The priority was a fast, user-friendly effective experience that worked seamlessly in an environment where internet connection may not be reliable.

# Solution implementation

Setting up a smooth Bitcoin payment system for the Baltic HoneyBadger and Nostriga conferences involved a mix of technical solutions and open-source tools. Collaboration between multiple projects and companies played a key role in making it all work.

# Merchant onboarding

A big part of making this successful was getting merchants comfortable with the new payment system. BTCPay contributors and conference volunteers gave merchants a hands-on demo and walked them through how it all worked - from generating invoices to printing receipts. Throughout the event, the team provided continuous support, ensuring merchants could handle the system confidently and that any issues were quickly resolved.

# Payment infrastructure

Behind the scenes, a dedicated BTCPay Server instance was deployed to handle all the payments. To keep things fast and affordable, the Lightning Network was used for payments. Each merchant had their own web-based point of sale (POS) app, running onBitcoinize terminals which allowed them to generate invoices, preview transactions, print receipts, and process refunds with ease. This setup made the whole process as smooth as using a regular credit card system.

# Lightning Network

Managing liquidity and handling Lightning Network channels can be challenging, to simplify this, amerchants connect their Blink wallet to their BTCPay Store. The Blink team handled all the technical aspects of ensuring uptime and liquidity. This ensured that the system worked seamlessly, even when dealing with high volumes of transactions. It’s important to note that even though each merchant had their own wallet, and conference organizers didn’t have custody of the funds, Blink was a custodian of the merchant's funds. The upcoming BTCPay App aims to make the entire flow self-custodian in the future.

# Mitigating volatility

To mitigate volatility, merchants received payments in their Blink wallets, where their Bitcoin was automatically hedged using Stablesats (opens new window). With Stablesats, the Bitcoin they received was instantly converted to match the value of the US dollar. This allowed merchants to accept Bitcoin without worrying about price fluctuations. From there, they had the flexibility to either withdraw funds through Stablesats to a local exchange for conversion to their local currency or keep the balance in Bitcoin, depending on their preference. Additionally, users can withdraw their Stablesats to any Bitcoin wallet as Bitcoin, since what underlies Stablesats is bitcoin itself, providing them with even more options for managing their assets.

# Familiar payment terminals

Each merchant was given a Bitcoinize POS terminal, optimized for BTCPay Server. These terminals were easy to use and offered all the key features merchants needed—NFC reading, receipt printing, and more. For customers, it felt just like using a regular credit card, which helped make Bitcoin payments feel familiar and straightforward.

# NFC cards for easy payments

One of the standout improvements in user experience was the introduction of BoltCards. These NFC cards functioned like debit cards, allowing conference organizers to preload them with Bitcoin and distribute them to attendees. This provided an easy, tap-to-pay method for things like coffee, lunch, and other purchases, making Bitcoin accessible to even those unfamiliar with the technology. A key advantage of BoltCards was that they could be used without an internet connection, further simplifying the experience.

At the Nostriga conference, BoltCards played a dual role—not only were they used for payments, but they also served as entry tickets. Upon arrival, each attendee received a preloaded card with around €21 in Bitcoin, which they could use throughout the event. BoltCards proved highly popular, accounting for approximately 86.8% of total payments (1,273 out of 1,467 transactions). This practical, hands-on experience helped demystify Bitcoin for newcomers, making payments as easy as using a traditional debit card.

# Continuous support

Throughout both events, merchants had access to real-time support, ensuring everything ran smoothly. Any questions or issues were handled on the spot, which kept things moving without a hitch. This level of support gave merchants confidence in the system and helped ensure a positive experience for everyone involved.

# Survey insights

A post-conference survey was conducted with the participating merchants to gauge their understanding of Bitcoin and the impact of accepting it during the event. The results were overwhelmingly positive:

  • 75% of the merchants had little to no understanding of Bitcoin before the conference, and 75% had never considered accepting Bitcoin before.
  • Despite this, 100% of the merchants reported that their customers responded very positively to the option of paying with Bitcoin.
  • 75% of merchants agreed that accepting Bitcoin had a positive impact on their business during the event, with 50% rating it as highly positive.
  • When asked about the future, 100% of merchants expressed interest in accepting Bitcoin payments at next year’s conference, and 75% were open to accepting Bitcoin at their business outside of the event as well.

This feedback highlights the importance of community-driven onboarding and education efforts. Despite initial hesitation, the merchants experienced the benefits firsthand and are now more inclined to adopt Bitcoin payments going forward.

# Results

Across the two conferences:

  • Nostriga 1,467 transactions, with 1,273 processed through BoltCard via NFC and 194 through attendees' wallets by scanning a QR code.
  • During the Baltic Honeybadger we had 1,531 transactions (all payments were from attendees wallets as BoltCards weren’t utilized)

In total, there were 2,998 transactions, with €27,582.94 in revenue, slightly higher than last year. Nine merchants participated this year, with a few returning from BHB23, showing how relationships built at previous events are growing stronger and ensuring easier adoption and onboarding.

# Summary

The successful integration of Bitcoin payments at the Nostriga and Baltic HoneyBadger 2024 conferences demonstrated the power of community collaboration and open-source technology. By partnering with BTCPay Server, Blink, Bitcoinize, MyPlebTag, and BoltCard, the event organizers were able to seamlessly onboard merchants—many of whom had little to no prior experience with Bitcoin. Through a combination of education, continuous support, and familiar payment tools, merchants quickly adapted to the system, offering attendees a smooth and reliable payment experience.

With 2,998 transactions and €27,582.94 in revenue processed, the events showed that Bitcoin can easily serve as a medium of exchange, even for newcomers. The introduction of NFC cards during Nostriga made Bitcoin payments feel as familiar as using a debit/credit card, further encouraging adoption. Looking ahead, with 100% of surveyed merchants expressing interest in accepting Bitcoin at future events and 75% open to continuing Bitcoin payments outside of the conference, the groundwork has been laid for broader Bitcoin adoption in real-world business environments.

The experience also underscored that Bitcoin adoption goes beyond technology—it’s about building relationships, abstracting technological complexities through familiar UX, and supporting merchants through the process.

As we look forward to future events, it's clear that with the right tools and community support, Bitcoin can easily be integrated into real-world commerce, opening up new possibilities for businesses anywhere in the world.

Download a PDF version of this case study (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

The Baltic HoneyBadger (opens new window) conference, Europe’s longest-standing Bitcoin-only event, celebrated its 6th anniversary this year in Riga, Latvia. Joining the event was Nostriga (opens new window), an unconference focused on the Nostr protocol. For the first time, the Nostr conference made its way to Europe, adding an exciting new approach and culture to the gathering. With both conferences joining forces, attendees were treated to an entire week of events, giving them plenty of opportunities to dive deep into Bitcoin, decentralized communications, and everything freedom tech. With the main focus being decentralization, conference organizers made sure that all payments were free of intermediaries, leaving attendees free to focus on collaboration, and sharing ideas that push innovation.

Whether attendees were grabbing coffee, a burger or buying merchandise, conference organizers wanted to ensure they could pay in bitcoin.

This case study explores the collaborative efforts of the conference organizers (HodlHodl (opens new window) & Nostriga (opens new window)), BTCPay Server (opens new window), together with Blink (opens new window), Bitcoinize (opens new window), MyPlebTag (opens new window), and BoltCard (opens new window) in onboarding local merchants to adopt Bitcoin payments at the event. With this we aim to highlight the setup, inspire local communities to replicate the process, and demonstrate the practical use of Bitcoin as a medium of exchange.

Download a PDF version of this case study (opens new window).

# Background and challenges

Building on the success of the BH2023 and Bitcoin Atlantis (opens new window) conference, the goal this year was to take things further and improve the experience for everyone involved.

Before the events, most participating merchants had limited experience with Bitcoin. A survey conducted post-event revealed that 50% of merchants rated their understanding of Bitcoin as a 2 out of 5, with 25% rating it as 1. Additionally, 75% had never considered accepting Bitcoin payments in their businesses before attending the conference.

This highlighted a clear challenge: how to onboard merchants with little or no Bitcoin knowledge start accepting it, while making sure the payment process is smooth and easy for both them and their customers?

  • For merchants, the focus was on providing an experience that matched the ease of traditional credit card payments, while reducing technical headaches, volatility of bitcoin, and ensuring no downtime.
  • For attendees, it was all about making the system easy to use, even for beginners who never had bitcoin. The priority was a fast, user-friendly effective experience that worked seamlessly in an environment where internet connection may not be reliable.

# Solution implementation

Setting up a smooth Bitcoin payment system for the Baltic HoneyBadger and Nostriga conferences involved a mix of technical solutions and open-source tools. Collaboration between multiple projects and companies played a key role in making it all work.

# Merchant onboarding

A big part of making this successful was getting merchants comfortable with the new payment system. BTCPay contributors and conference volunteers gave merchants a hands-on demo and walked them through how it all worked - from generating invoices to printing receipts. Throughout the event, the team provided continuous support, ensuring merchants could handle the system confidently and that any issues were quickly resolved.

# Payment infrastructure

Behind the scenes, a dedicated BTCPay Server instance was deployed to handle all the payments. To keep things fast and affordable, the Lightning Network was used for payments. Each merchant had their own web-based point of sale (POS) app, running onBitcoinize terminals which allowed them to generate invoices, preview transactions, print receipts, and process refunds with ease. This setup made the whole process as smooth as using a regular credit card system.

# Lightning Network

Managing liquidity and handling Lightning Network channels can be challenging, to simplify this, amerchants connect their Blink wallet to their BTCPay Store. The Blink team handled all the technical aspects of ensuring uptime and liquidity. This ensured that the system worked seamlessly, even when dealing with high volumes of transactions. It’s important to note that even though each merchant had their own wallet, and conference organizers didn’t have custody of the funds, Blink was a custodian of the merchant's funds. The upcoming BTCPay App aims to make the entire flow self-custodian in the future.

# Mitigating volatility

To mitigate volatility, merchants received payments in their Blink wallets, where their Bitcoin was automatically hedged using Stablesats (opens new window). With Stablesats, the Bitcoin they received was instantly converted to match the value of the US dollar. This allowed merchants to accept Bitcoin without worrying about price fluctuations. From there, they had the flexibility to either withdraw funds through Stablesats to a local exchange for conversion to their local currency or keep the balance in Bitcoin, depending on their preference. Additionally, users can withdraw their Stablesats to any Bitcoin wallet as Bitcoin, since what underlies Stablesats is bitcoin itself, providing them with even more options for managing their assets.

# Familiar payment terminals

Each merchant was given a Bitcoinize POS terminal, optimized for BTCPay Server. These terminals were easy to use and offered all the key features merchants needed—NFC reading, receipt printing, and more. For customers, it felt just like using a regular credit card, which helped make Bitcoin payments feel familiar and straightforward.

# NFC cards for easy payments

One of the standout improvements in user experience was the introduction of BoltCards. These NFC cards functioned like debit cards, allowing conference organizers to preload them with Bitcoin and distribute them to attendees. This provided an easy, tap-to-pay method for things like coffee, lunch, and other purchases, making Bitcoin accessible to even those unfamiliar with the technology. A key advantage of BoltCards was that they could be used without an internet connection, further simplifying the experience.

At the Nostriga conference, BoltCards played a dual role—not only were they used for payments, but they also served as entry tickets. Upon arrival, each attendee received a preloaded card with around €21 in Bitcoin, which they could use throughout the event. BoltCards proved highly popular, accounting for approximately 86.8% of total payments (1,273 out of 1,467 transactions). This practical, hands-on experience helped demystify Bitcoin for newcomers, making payments as easy as using a traditional debit card.

# Continuous support

Throughout both events, merchants had access to real-time support, ensuring everything ran smoothly. Any questions or issues were handled on the spot, which kept things moving without a hitch. This level of support gave merchants confidence in the system and helped ensure a positive experience for everyone involved.

# Survey insights

A post-conference survey was conducted with the participating merchants to gauge their understanding of Bitcoin and the impact of accepting it during the event. The results were overwhelmingly positive:

  • 75% of the merchants had little to no understanding of Bitcoin before the conference, and 75% had never considered accepting Bitcoin before.
  • Despite this, 100% of the merchants reported that their customers responded very positively to the option of paying with Bitcoin.
  • 75% of merchants agreed that accepting Bitcoin had a positive impact on their business during the event, with 50% rating it as highly positive.
  • When asked about the future, 100% of merchants expressed interest in accepting Bitcoin payments at next year’s conference, and 75% were open to accepting Bitcoin at their business outside of the event as well.

This feedback highlights the importance of community-driven onboarding and education efforts. Despite initial hesitation, the merchants experienced the benefits firsthand and are now more inclined to adopt Bitcoin payments going forward.

# Results

Across the two conferences:

  • Nostriga 1,467 transactions, with 1,273 processed through BoltCard via NFC and 194 through attendees' wallets by scanning a QR code.
  • During the Baltic Honeybadger we had 1,531 transactions (all payments were from attendees wallets as BoltCards weren’t utilized)

In total, there were 2,998 transactions, with €27,582.94 in revenue, slightly higher than last year. Nine merchants participated this year, with a few returning from BHB23, showing how relationships built at previous events are growing stronger and ensuring easier adoption and onboarding.

# Summary

The successful integration of Bitcoin payments at the Nostriga and Baltic HoneyBadger 2024 conferences demonstrated the power of community collaboration and open-source technology. By partnering with BTCPay Server, Blink, Bitcoinize, MyPlebTag, and BoltCard, the event organizers were able to seamlessly onboard merchants—many of whom had little to no prior experience with Bitcoin. Through a combination of education, continuous support, and familiar payment tools, merchants quickly adapted to the system, offering attendees a smooth and reliable payment experience.

With 2,998 transactions and €27,582.94 in revenue processed, the events showed that Bitcoin can easily serve as a medium of exchange, even for newcomers. The introduction of NFC cards during Nostriga made Bitcoin payments feel as familiar as using a debit/credit card, further encouraging adoption. Looking ahead, with 100% of surveyed merchants expressing interest in accepting Bitcoin at future events and 75% open to continuing Bitcoin payments outside of the conference, the groundwork has been laid for broader Bitcoin adoption in real-world business environments.

The experience also underscored that Bitcoin adoption goes beyond technology—it’s about building relationships, abstracting technological complexities through familiar UX, and supporting merchants through the process.

As we look forward to future events, it's clear that with the right tools and community support, Bitcoin can easily be integrated into real-world commerce, opening up new possibilities for businesses anywhere in the world.

Download a PDF version of this case study (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/case-study-bitcoin-atlantis/index.html b/case-study-bitcoin-atlantis/index.html index faefcd06..2aa82d45 100644 --- a/case-study-bitcoin-atlantis/index.html +++ b/case-study-bitcoin-atlantis/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

Held on the island of Madeira, known for its breathtaking landscapes, the Bitcoin Atlantis (opens new window) conference marked a milestone as the first of its kind hosted in a football stadium. Featuring a rich agenda across four stages, 3 workshop rooms, 200 speakers, and an array of satellite events, the conference attracted over 3,000 attendees, united by a keen interest in Bitcoin and its potential to give freedom and empower individuals and businesses around the world.

This case study explores the collaborative efforts of the conference organizers, BTCPay Server, Bitcoinize, Blink, and HodlHodl to onboard merchants and locals to adopt Bitcoin at the event, streamlining the payment experience resulting in over 8,750 transactions with a volume of 2.029416 BTC valued 115,100€, on 60 point-of-sale devices and 18 merchants in just 3 days.

You can download a PDF of this case study on this link (opens new window).

# Background and challenge

Leveraging the success of the Baltic Honeybadger (opens new window) conference, the organizers aimed to scale this model to an even wider audience with unique challenges:

  • For merchants: Creating an experience on par with traditional credit card payments, minimizing Bitcoin's technical complexities whilst ensuring smooth operations and uptime.
  • For customers: Make the system accessible to novices, ensuring a speedy, interoperable, user-friendly, and cost-effective experience.

# Objectives

  • Demonstrate Bitcoin’s everyday utility and potential as a medium of exchange
  • Introduce Bitcoin to Madeiran locals and empower them to adopt it in their everyday life or business

# Solution implementation

Implementing a seamless payment experience while navigating challenges involved several key technical and user experience innovations, complemented by open collaboration between multiple projects.

# The infrastructure

A reliable payment processing system that could handle a large transaction volume without hiccups was achieved through the deployment of a dedicated BTCPay Server (opens new window) instance. The lightning Network was used for instant and low-cost transaction settlement. Each merchant, had a dedicated store within BTCPay Server created. Each store had a wallet, and a web point of sale app (opens new window) which was loaded on Bitcoinize Point of Sale devices – enabling invoice generation, transaction previews, receipt printing, and refunds.

# Lightning Network

Liquidity issues and channel management on the Lightning Network were addressed by connecting stores to an external Blink wallet (opens new window) account via a BTCPay & Blink plugin (opens new window), a custodial convenience option for Lightning payments available since BTCPay Server 1.12.0 (opens new window). The Blink team ensured node uptime and liquidity. This setup abstracted the complexities from end-users and merchants in particular.

# Point of sale terminals

To ensure familiarity and ease of use, every merchant received a dedicated point of sale device, provided by Bitcoinize (opens new window). These devices are heavily optimized for BTCPay Server users and allow several key functionalities such as NFC reading and receipt printing. With this combination, customers can tap-to-pay with NFC cards (BoltCards), resulting in familiar UX and a seamless checkout experience as with credit cards.

# BoltCards

The introduction of BoltCards (opens new window) provided by CoinCorner (opens new window) was an enhancement in user-experience. It allowed quicker onboarding for the locals who had no access to bitcoin, it also reduced their fear of using an unknown technology. Since BoltCards look the same as credit cards, the tangibility and familiarity provided a quicker checkout process.

The biggest innovation, at this conference, was that the entire process from initializing, topping up, and even resetting of the BoltCards was done within the BTCPay Server instance on the Point of Sale terminals. Five dedicated terminals were set up as Top-Up-Stations where attendees could check their card balance and top them up.

The technical foundations for the BoltCard setup were established by pull payments (opens new window) and the new Bolt Cards Factory plugin by Nicolas Dorier, all running within the BTCPay Server. The plugin allowed organizers to pre-set certain parameters – for example, the value on the card and the mass-write of over 2,000 NFC cards at scale through a very simple UI. Since the plugin creates a web-page, any NFC-compatible device could generate Bitcoin cards. The only requirement there was to download the Boltcard NFC Programmer app (opens new window), which in combination with Bolt Factory generated a unique card for every attendee.

This demonstrates that BTCPay Server was an end-to-end solution, for receiving payments, and generating the BoltCards that attendees used to pay, top them up, and even reset them for repurposing them later on.

# Onboarding and support

An important part of the project's success lay in efficiently onboarding merchants and familiarizing them with the new technology. Through a hands-on demo and continuous support during the event, merchants were able to adapt to the process smoothly, enhancing the overall experience for both vendors and attendees.

# Results

The collaborative effort culminated in an enriching experience for both merchants and customers, manifesting in 8,750 transactions, averaging 13,20 € per transaction, aggregating to a value greater than 2.2 BTC or 115,100 €.

In a survey conducted with 8 merchants after the conference:

  • 100% of participants said that they would be willing to accept bitcoin at next year’s conference.
  • 100% replied they would be open to offering bitcoin as a payment option in their business in the future.
  • 80% said accepting bitcoin had a positive reaction from their customers.
  • The transaction speed received very high average rating of 4.5/5.

# Conclusion

The Bitcoin Atlantis Conference in Madeira has set a new benchmark in the practical application of Bitcoin as a medium of exchange, demonstrating that with the right collaboration and technology, Bitcoin can seamlessly integrate into everyday life. This event has proven that the barriers to adoption can be overcome through innovation, education, and community engagement. Paving the way for a future where bitcoin transactions are as commonplace and user-friendlier as traditional payment methods.

The overwhelmingly positive feedback from merchants and attendees signals a growing readiness and enthusiasm for Bitcoin, suggesting a bright future for its adoption in commerce and beyond. This case study showcases the success of Bitcoin Atlantis, and it serves as a model for future events and businesses looking to embrace Bitcoin, underscoring its potential to empower and liberate in the digital age.

The BTCPay Server system provided a smooth and reliable paying experience throughout the entire conference. It guaranteed service with no interruptions and minimal friction. - Merchant

The lightning infrastructure that was created for the conference worked like a charm. Fast and reliable! It was one of the highlights, not only at the main venue but also on all the satellite events, including the Atlas Music Festival! - André Loja, Bitcoin Atlantis

You can download a PDF of this case study on this link (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Held on the island of Madeira, known for its breathtaking landscapes, the Bitcoin Atlantis (opens new window) conference marked a milestone as the first of its kind hosted in a football stadium. Featuring a rich agenda across four stages, 3 workshop rooms, 200 speakers, and an array of satellite events, the conference attracted over 3,000 attendees, united by a keen interest in Bitcoin and its potential to give freedom and empower individuals and businesses around the world.

This case study explores the collaborative efforts of the conference organizers, BTCPay Server, Bitcoinize, Blink, and HodlHodl to onboard merchants and locals to adopt Bitcoin at the event, streamlining the payment experience resulting in over 8,750 transactions with a volume of 2.029416 BTC valued 115,100€, on 60 point-of-sale devices and 18 merchants in just 3 days.

You can download a PDF of this case study on this link (opens new window).

# Background and challenge

Leveraging the success of the Baltic Honeybadger (opens new window) conference, the organizers aimed to scale this model to an even wider audience with unique challenges:

  • For merchants: Creating an experience on par with traditional credit card payments, minimizing Bitcoin's technical complexities whilst ensuring smooth operations and uptime.
  • For customers: Make the system accessible to novices, ensuring a speedy, interoperable, user-friendly, and cost-effective experience.

# Objectives

  • Demonstrate Bitcoin’s everyday utility and potential as a medium of exchange
  • Introduce Bitcoin to Madeiran locals and empower them to adopt it in their everyday life or business

# Solution implementation

Implementing a seamless payment experience while navigating challenges involved several key technical and user experience innovations, complemented by open collaboration between multiple projects.

# The infrastructure

A reliable payment processing system that could handle a large transaction volume without hiccups was achieved through the deployment of a dedicated BTCPay Server (opens new window) instance. The lightning Network was used for instant and low-cost transaction settlement. Each merchant, had a dedicated store within BTCPay Server created. Each store had a wallet, and a web point of sale app (opens new window) which was loaded on Bitcoinize Point of Sale devices – enabling invoice generation, transaction previews, receipt printing, and refunds.

# Lightning Network

Liquidity issues and channel management on the Lightning Network were addressed by connecting stores to an external Blink wallet (opens new window) account via a BTCPay & Blink plugin (opens new window), a custodial convenience option for Lightning payments available since BTCPay Server 1.12.0 (opens new window). The Blink team ensured node uptime and liquidity. This setup abstracted the complexities from end-users and merchants in particular.

# Point of sale terminals

To ensure familiarity and ease of use, every merchant received a dedicated point of sale device, provided by Bitcoinize (opens new window). These devices are heavily optimized for BTCPay Server users and allow several key functionalities such as NFC reading and receipt printing. With this combination, customers can tap-to-pay with NFC cards (BoltCards), resulting in familiar UX and a seamless checkout experience as with credit cards.

# BoltCards

The introduction of BoltCards (opens new window) provided by CoinCorner (opens new window) was an enhancement in user-experience. It allowed quicker onboarding for the locals who had no access to bitcoin, it also reduced their fear of using an unknown technology. Since BoltCards look the same as credit cards, the tangibility and familiarity provided a quicker checkout process.

The biggest innovation, at this conference, was that the entire process from initializing, topping up, and even resetting of the BoltCards was done within the BTCPay Server instance on the Point of Sale terminals. Five dedicated terminals were set up as Top-Up-Stations where attendees could check their card balance and top them up.

The technical foundations for the BoltCard setup were established by pull payments (opens new window) and the new Bolt Cards Factory plugin by Nicolas Dorier, all running within the BTCPay Server. The plugin allowed organizers to pre-set certain parameters – for example, the value on the card and the mass-write of over 2,000 NFC cards at scale through a very simple UI. Since the plugin creates a web-page, any NFC-compatible device could generate Bitcoin cards. The only requirement there was to download the Boltcard NFC Programmer app (opens new window), which in combination with Bolt Factory generated a unique card for every attendee.

This demonstrates that BTCPay Server was an end-to-end solution, for receiving payments, and generating the BoltCards that attendees used to pay, top them up, and even reset them for repurposing them later on.

# Onboarding and support

An important part of the project's success lay in efficiently onboarding merchants and familiarizing them with the new technology. Through a hands-on demo and continuous support during the event, merchants were able to adapt to the process smoothly, enhancing the overall experience for both vendors and attendees.

# Results

The collaborative effort culminated in an enriching experience for both merchants and customers, manifesting in 8,750 transactions, averaging 13,20 € per transaction, aggregating to a value greater than 2.2 BTC or 115,100 €.

In a survey conducted with 8 merchants after the conference:

  • 100% of participants said that they would be willing to accept bitcoin at next year’s conference.
  • 100% replied they would be open to offering bitcoin as a payment option in their business in the future.
  • 80% said accepting bitcoin had a positive reaction from their customers.
  • The transaction speed received very high average rating of 4.5/5.

# Conclusion

The Bitcoin Atlantis Conference in Madeira has set a new benchmark in the practical application of Bitcoin as a medium of exchange, demonstrating that with the right collaboration and technology, Bitcoin can seamlessly integrate into everyday life. This event has proven that the barriers to adoption can be overcome through innovation, education, and community engagement. Paving the way for a future where bitcoin transactions are as commonplace and user-friendlier as traditional payment methods.

The overwhelmingly positive feedback from merchants and attendees signals a growing readiness and enthusiasm for Bitcoin, suggesting a bright future for its adoption in commerce and beyond. This case study showcases the success of Bitcoin Atlantis, and it serves as a model for future events and businesses looking to embrace Bitcoin, underscoring its potential to empower and liberate in the digital age.

The BTCPay Server system provided a smooth and reliable paying experience throughout the entire conference. It guaranteed service with no interruptions and minimal friction. - Merchant

The lightning infrastructure that was created for the conference worked like a charm. Fast and reliable! It was one of the highlights, not only at the main venue but also on all the satellite events, including the Atlas Music Festival! - André Loja, Bitcoin Atlantis

You can download a PDF of this case study on this link (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/case-study-bitcoin-jungle-cr/index.html b/case-study-bitcoin-jungle-cr/index.html index ba779c5f..667dfd16 100644 --- a/case-study-bitcoin-jungle-cr/index.html +++ b/case-study-bitcoin-jungle-cr/index.html @@ -12,7 +12,7 @@ - + @@ -53,7 +53,7 @@ (opens new window) GitHub (opens new window)

Bitcoin Jungle (opens new window) is a community project in Costa Rica that provides the education, technology & resources needed for local businesses to accept Bitcoin as payment. Our goal is to create, expand & maintain a circular Bitcoin economy in Costa Rica. We want to make it as easy as possible for merchants to accept Bitcoin as payment, both on-chain and over lightning. This includes both physical retail & e-commerce, sole proprietors & large enterprises, long-time hodlers & first time users, and everything in between.

You can download a PDF of this case study on this link (opens new window).

BTCPay Server was a natural choice for us. It’s a well-designed & mature product that “just works”. It’s intuitive enough that anyone can use it, while having the depth needed to satisfy more advanced users. It’s stable enough to deploy without constant worrying, yet innovate enough to continue adding new features without making the product worse overall.

Whenever a payment is collected on BTCPay Server, it should be immediately forwarded to that user’s Bitcoin Jungle wallet. To achieve this, we leveraged BTCPay Server’s Webhooks feature. Each time an invoice is paid, a webhook is triggered. This webhook is responsible for forwarding the Bitcoin received in the merchant’s wallet using the LNURL protocol. The webhook also allows us to split up the Bitcoin in various ways - the service provider can optionally retain a processing fee & tips received can be split up and delivered amongst staff members evenly. This happens in under a second and is perceived to be “real-time” by the merchant.

We also wanted our BTCPay Server to use the BTC/CRC price set by Bitcoin Jungle Wallet, to avoid mis-match in fiat calculations between the Point of Sale and the Wallet. To achieve this, we created a custom rate provider in our BTCPay Server instance. This was a straightforward process - copy an existing rate provider & then modify the code to make a RPC call to Bitcoin Jungle to retrieve the current price of BTC.

Overall, the integration was very straight-forward. The main challenge we faced was the handling of on-chain payments received, as we decided to forward all payments over Lightning Network. We automated this case utilizing Lightning Loop.

# Features and Benefits

Prior to our BTCPay Server integration, we only offered a Payment Link to our users (e.g. https://pay.bitcoinjungle.app/username), which is powered by Galoy. -This integration greatly enhanced the user experience for merchants. BTCPay Server allows them to create multiple Point of Sales (say if they have multiple locations) and track them separately, integrate with popular ecommerce platforms, have a login to view/export invoices to Excel for accounting, and accept payments on-chain in addition to Lightning.

# Results

We have received far fewer support requests than expected after our integration with BTCPay Server. The whole process is pretty seamless & intuitive. Any business owner can start accepting Bitcoin payments in <2 minutes. To date, we haven’t received any feature requests that were not already planned by the BTCPay Server dev team (and almost all have already been implemented).

Our single BTCPay Server instance ~200 stores supports , totalling ~5k invoices to date. It continues scaling efficiently without any issue.

# Conclusion

One thing we learned was that it’s crucial to allow users to pay on-chain, even if you prefer Lightning Network. We’ve found some visitors to our circular economy don’t yet have a Lightning wallet. They see the Bitcoin Accepted Here sticker at a store, get excited because they have Bitcoin (usually on Coinbase), but then scan a Lightning QR and can’t pay the merchant. Once we added On-chain capabilities for merchants using BTCPay Server, we noticed an uptick in payments.

You can download a PDF of this case study on this link (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+This integration greatly enhanced the user experience for merchants. BTCPay Server allows them to create multiple Point of Sales (say if they have multiple locations) and track them separately, integrate with popular ecommerce platforms, have a login to view/export invoices to Excel for accounting, and accept payments on-chain in addition to Lightning.

# Results

We have received far fewer support requests than expected after our integration with BTCPay Server. The whole process is pretty seamless & intuitive. Any business owner can start accepting Bitcoin payments in <2 minutes. To date, we haven’t received any feature requests that were not already planned by the BTCPay Server dev team (and almost all have already been implemented).

Our single BTCPay Server instance ~200 stores supports , totalling ~5k invoices to date. It continues scaling efficiently without any issue.

# Conclusion

One thing we learned was that it’s crucial to allow users to pay on-chain, even if you prefer Lightning Network. We’ve found some visitors to our circular economy don’t yet have a Lightning wallet. They see the Bitcoin Accepted Here sticker at a store, get excited because they have Bitcoin (usually on Coinbase), but then scan a Lightning QR and can’t pay the merchant. Once we added On-chain capabilities for merchants using BTCPay Server, we noticed an uptick in payments.

You can download a PDF of this case study on this link (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/case-study-bitcoin-people/index.html b/case-study-bitcoin-people/index.html index fe720302..6d4daa7a 100644 --- a/case-study-bitcoin-people/index.html +++ b/case-study-bitcoin-people/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

BPay is a mobile app developed with Flutter (opens new window) and BTCPay’s Greenfield API (opens new window), that helps merchants in Italy accept Bitcoin. The app, which is available for iOS (opens new window) and Android (opens new window) is developed by BitcoinPeople.it (opens new window), a company that aims to onboard merchants to Bitcoin by offering education, consulting services, training and BTCPay-powered infrastructure technology.

You can download a PDF of this case study on this link (opens new window).

Being a BTCPay Server host for their clients since 2021, the company realized that merchants need a smoother, instant and more tailored experience when accepting bitcoin payments in retail.

Most Bitcoin adopters don’t care about the technicalities and want an easy, native experience without the burden of understanding what is going on under the hood.

The company made a choice to build an in-house native app which allows them to streamline the payment process for clients they are onboarding.

We are making the most of increasingly powerful APIs to empower an app that uses BTCPay as the back end.

The need for something like BPay arose as the number of merchants using their shared server increased and they needed an app to make the onboarding faster. The goal was to allow for BTCPay usage without the need to know anything about BTCPay Server, Docker, NBXplorer, LND and so on.

You can download a PDF of this case study on this link (opens new window).

# Why an app, can’t merchants just use one of many wallets?

According to Elha from BitcoinPeople.it, merchants can indeed be onboarded through a regular bitcoin wallet, but these wallets don’t really scale for a growing business. BPay allows merchants the full power of a BTCPay Server engine - invoice management, accounting, refunds and reporting. They are able to provide all of that to their clients without having the custody of their funds for on-chain payments and relying on open-source security and technology.

No need for server setting or manual configuration whatsoever: the merchant downloads the app, enters company data, writes down the seed, and they are ready to receive payments with an account, store and PoS on a shared BTCPay Server.

# App Features

  • Better user experience
  • Non-custodial and custodial capabilities
  • Instant conversion
  • API key connection
  • BTCmap integration
  • Easier processing during onboarding

# Choice of BTCPay Server

In 2021, the company wanted to build an entire payment processing service, but became aware of BTCPay Server (opens new window) and realized it fulfills all of their needs and the MIT license allowed them to white-label and commercialize their efforts.

We fell immediately in love with the open-source tech stack and since then we have always been thinking of ourselves as cells within the BTCPay ecosystem.

We chose BTCPay because we felt and still feel safe, ethically, technically and commercially: we rely on a whole community of developers to secure the service we offer.

# Implementation

The Greenfield API (opens new window) allowed them to create endpoints to allow BPay to create new users into the existing BTCPay Server, or connect any existing users via API keys. From there they were able to handle every step of the process through the API - create more stores if the user needs, check invoices per store, and create new invoices.

It was easy to integrate the API within our app, the documentation is clear, and the community was always willing to help and understand any concerns we had.

The new app allows them to onboard merchants to Bitcoin smoother. Merchants who don’t want to hold bitcoin can settle the payments in fiat through BitcoinPeople.it service.

# Merchant stories

We do a lot of fieldwork visiting merchants who might be familiar with Bitcoin but need to gain the knowledge to accept payments. With the Bpay app, onboarding them to our BTCPay Server is streamlined, enabling us to set them up in less than 3 minutes.

Among our merchants, many businesses use the Bpay app to work with countries with limited banking infrastructure. For instance, one of our earliest adopters of the Bpay app utilizes it to import spices from various parts of Asia and Africa bringing cost for crossborder payments virtually to zero into Italy. We also support 34 e-commerce merchants, and one has reported a 50% increase in revenue from the USA since integrating BTC payments on our shared BTCPay Server.

The community appreciates the merchants who are brave enough to start accepting Bitcoin. We observe a significant increase in interest from local Bitcoin enthusiasts. These shops throughout Italy have given them the confidence to convene, be seen, and strengthen their community ties. We've received reports of groups of Bitcoiners traveling as much as 100 kilometers just for the experience of paying for a pizza with Bitcoin.

# Conclusion

In the end, thanks to license, good API, documentation, and prompt community support, BitcoinPeople.it was able to create an app which allows them to onboard their users much quicker. From multiple steps that they had to do in the past, they were able to streamline the onboarding to just 4 steps.

In 2023, the company helped process an impressive €406,283 in transaction volumes on their BTCPay Server. The number of paying businesses using the service more than doubled, contributing to a total of 270 active venues.

We learned that resources within the Bitcoin community are enormous. We have been able to upgrade our offering just using the Greenfield API, and we are excited about everything that is to come in the BTCPay Server ecosystem.

You can download a PDF of this case study on this link (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

BPay is a mobile app developed with Flutter (opens new window) and BTCPay’s Greenfield API (opens new window), that helps merchants in Italy accept Bitcoin. The app, which is available for iOS (opens new window) and Android (opens new window) is developed by BitcoinPeople.it (opens new window), a company that aims to onboard merchants to Bitcoin by offering education, consulting services, training and BTCPay-powered infrastructure technology.

You can download a PDF of this case study on this link (opens new window).

Being a BTCPay Server host for their clients since 2021, the company realized that merchants need a smoother, instant and more tailored experience when accepting bitcoin payments in retail.

Most Bitcoin adopters don’t care about the technicalities and want an easy, native experience without the burden of understanding what is going on under the hood.

The company made a choice to build an in-house native app which allows them to streamline the payment process for clients they are onboarding.

We are making the most of increasingly powerful APIs to empower an app that uses BTCPay as the back end.

The need for something like BPay arose as the number of merchants using their shared server increased and they needed an app to make the onboarding faster. The goal was to allow for BTCPay usage without the need to know anything about BTCPay Server, Docker, NBXplorer, LND and so on.

You can download a PDF of this case study on this link (opens new window).

# Why an app, can’t merchants just use one of many wallets?

According to Elha from BitcoinPeople.it, merchants can indeed be onboarded through a regular bitcoin wallet, but these wallets don’t really scale for a growing business. BPay allows merchants the full power of a BTCPay Server engine - invoice management, accounting, refunds and reporting. They are able to provide all of that to their clients without having the custody of their funds for on-chain payments and relying on open-source security and technology.

No need for server setting or manual configuration whatsoever: the merchant downloads the app, enters company data, writes down the seed, and they are ready to receive payments with an account, store and PoS on a shared BTCPay Server.

# App Features

  • Better user experience
  • Non-custodial and custodial capabilities
  • Instant conversion
  • API key connection
  • BTCmap integration
  • Easier processing during onboarding

# Choice of BTCPay Server

In 2021, the company wanted to build an entire payment processing service, but became aware of BTCPay Server (opens new window) and realized it fulfills all of their needs and the MIT license allowed them to white-label and commercialize their efforts.

We fell immediately in love with the open-source tech stack and since then we have always been thinking of ourselves as cells within the BTCPay ecosystem.

We chose BTCPay because we felt and still feel safe, ethically, technically and commercially: we rely on a whole community of developers to secure the service we offer.

# Implementation

The Greenfield API (opens new window) allowed them to create endpoints to allow BPay to create new users into the existing BTCPay Server, or connect any existing users via API keys. From there they were able to handle every step of the process through the API - create more stores if the user needs, check invoices per store, and create new invoices.

It was easy to integrate the API within our app, the documentation is clear, and the community was always willing to help and understand any concerns we had.

The new app allows them to onboard merchants to Bitcoin smoother. Merchants who don’t want to hold bitcoin can settle the payments in fiat through BitcoinPeople.it service.

# Merchant stories

We do a lot of fieldwork visiting merchants who might be familiar with Bitcoin but need to gain the knowledge to accept payments. With the Bpay app, onboarding them to our BTCPay Server is streamlined, enabling us to set them up in less than 3 minutes.

Among our merchants, many businesses use the Bpay app to work with countries with limited banking infrastructure. For instance, one of our earliest adopters of the Bpay app utilizes it to import spices from various parts of Asia and Africa bringing cost for crossborder payments virtually to zero into Italy. We also support 34 e-commerce merchants, and one has reported a 50% increase in revenue from the USA since integrating BTC payments on our shared BTCPay Server.

The community appreciates the merchants who are brave enough to start accepting Bitcoin. We observe a significant increase in interest from local Bitcoin enthusiasts. These shops throughout Italy have given them the confidence to convene, be seen, and strengthen their community ties. We've received reports of groups of Bitcoiners traveling as much as 100 kilometers just for the experience of paying for a pizza with Bitcoin.

# Conclusion

In the end, thanks to license, good API, documentation, and prompt community support, BitcoinPeople.it was able to create an app which allows them to onboard their users much quicker. From multiple steps that they had to do in the past, they were able to streamline the onboarding to just 4 steps.

In 2023, the company helped process an impressive €406,283 in transaction volumes on their BTCPay Server. The number of paying businesses using the service more than doubled, contributing to a total of 270 active venues.

We learned that resources within the Bitcoin community are enormous. We have been able to upgrade our offering just using the Greenfield API, and we are excited about everything that is to come in the BTCPay Server ecosystem.

You can download a PDF of this case study on this link (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/case-study-coincards/index.html b/case-study-coincards/index.html index b1da88b9..4d628349 100644 --- a/case-study-coincards/index.html +++ b/case-study-coincards/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

Established in 2014 in Vancouver, British Columbia, Coincards (opens new window) had one main goal: to make it easier for people to use Bitcoin in their everyday lives. The Woocommerce-powered platform makes it simple for folks to buy gift cards from a wide range of popular retailers using Bitcoin. It’s not just about offering another way to spend Bitcoin; it’s about giving it real-world utility. By doing this, they made it simpler for everyday users to tap into the world of Bitcoin.

You can download a PDF of this case study on this link (opens new window).

# Needs and Goals:

At its core, Coincards is all about getting more people to use Bitcoin in their everyday lives. In their early stages, Coincards grappled with the limitations of traditional payment processors. These systems either wielded excessive control over funds or imposed exorbitant fees, both of which were antithetical to Coincards' ethos. On top of that, the older systems they used had complicated and buggy address reuse issues, causing a lot of headaches and wasted time. So, they set out to find a better way—one that would give them more control over their Bitcoin and cut down on operational costs.

# Choice of BTCPay Server:

Coincards was already on the lookout for a better payment solution when they stumbled upon Nicolas Dorier's tweet (opens new window), which passionately declared, "This is lies, my trust in you is broken, I will make you obsolete." That statement struck a chord, capturing what Coincards wanted in a payment system: full control over their Bitcoin, with no fees attached. Coincards didn't just nod along; They jumped right into the Slack discussions with Nicolas, becoming one of the early adopters and vocal supporters of this game-changing platform.

# The Process:

As Coincards transitioned from Mycelium gear to BTCPay Server, it was a deliberate decision driven by their evolving business needs. Mycelium gear was falling short, especially with its complicated and buggy address reuse systems. Coincards didn't just jump on the BTCPay Server bandwagon; they were hands-on from the get-go, suggesting features and improvements to make the platform even better for merchants like themselves.

Notably: Coincards was the first to fully integrate BTCPay Server (opens new window) into their operations. The sheer volume of transactions they funneled through BTCPay in the initial month could have easily overwhelmed previous systems. But BTCPay Server and its dedicated team, spearheaded by Nicolas, were more than capable. They were deeply committed to resolving any new issues that cropped up, fine-tuning the system for scalability, and quickly rolling out updates, all of which ensured that Coincards ran smoothly with hardly any interruptions.

# Challenges:

Dealing with Bitcoin's well-known price swings has always been a challenge. At first, Coincards tackled this head-on by creating an in-house system that worked with top Canadian exchanges for real-time fiat conversions. It was a smart way to steer clear of the pitfalls of sudden market changes.

But as Coincards grew, they realized there was room for improvement. They switched gears, moving away from their in-house system to embrace BTCPay Server's "Transmuter" feature, a brainchild of developer Kukks. The Transmuter showed just how versatile BTCPay Server could be. It lets users set up custom workflows to perform specific tasks, and that's exactly what Coincards did. They used it to quickly exchange Bitcoin with their go-to providers, which helps keep them insulated from market ups and downs.

# Features and benefits

Improvement over the previous system: Switching to BTCPay Server made a noticeable difference for Coincards when it came to reliability. Nearly all transactions now go through without a hitch, which is a big step up from what they experienced with their previous systems.

The move to BTCPay Server didn't just improve transaction reliability; it also freed up valuable time for the team. Thanks to the platform's efficiency, Coincards has been able to significantly reduce the man-hours previously spent on managing payments.

Beyond the backend efficiencies, the switch to BTCPay Server also had a visible impact on the user experience. Customers have found the new platform to be more intuitive, leading to smoother transactions and an overall improved flow through the checkout process. This improved user experience has been a win-win, boosting customer satisfaction while allowing them to focus on scaling and innovation.

# New Possibilities:

Coincards isn't just sitting back and waiting for the Bitcoin world to evolve; they're active players in shaping that future. They were among the first to experiment with Lightning Network payments through BTCPay Server. This new layer promises to make Bitcoin transactions faster and more secure. And while the wider world may still be getting up to speed on this, Coincards is already there, pushing the envelope and showing what's possible.

While the typical user may not be too worried about which cryptocurrencies they can spend, Coincards embraces the open-source flexibility of BTCPay Server to offer more choices. They've added options like Monero, which aligns with their strong stance on privacy, and Dogecoin for those who like a bit of fun with their spending. They've also opened the door to other well-known coins like Litecoin and Dash. This isn't just Coincards ticking boxes; it's them making a statement about openness and choice in the cryptocurrency world.

# Results

Outcomes: Since integrating BTCPay Server, Coincards has seen more than just cost savings; the move has led to a more streamlined operation overall. The actual reduction in transaction fees is just one piece of a larger puzzle. Behind the scenes, the team has been able to cut back on admin time and the headaches of payment reconciliation.

With BTCPay Server smoothing out the wrinkles in payment processing, our team has found more time to focus on what really matters. We're able to offer even more products and put more energy into growing the business. - Mike Coincards

But it's not just about the money saved or the operational headaches cured. BTCPay Server has opened doors for Coincards that they didn't even know were there. Taking the Monero community, for example. Coincards' service is now well-regarded there, but it's not just about luck or coincidence. Thanks to BTCPay Server's flexibility, Coincards can be a significant player in this space, really helping to drive spending in a community that cares deeply about privacy. This isn't just good for reputation; it shows how committed Coincards is to broadening the horizons of digital spending.

# User Feedback:

User feedback isn't just a bunch of numbers; it's what guides Coincards. And guess what? People are really digging their BTCPay Server setup. It's not just that transactions go smoothly, which they do. What's special is the level of trust Coincards has been able to build. Often hearing that folks choose Coincards specifically because they're comfortable with the BTCPay checkout process and know that the payment flow will be flawless.

# Conclusion

Learnings: Coincards' journey with BTCPay Server was also a path of learning and discovery. Initially, the team at Coincards thought accepting Bitcoin would be a logistical challenge, especially in reconciling transactions. But BTCPay Server turned this assumption upside down. The platform demonstrated that managing Bitcoin transactions could be done far more efficiently than previously imagined.

Then there was the hurdle of the wallet gap limit—a concern that could seriously hamper large-scale operations. However, Coincards navigated this obstacle smoothly. BTCPay Server's own built-in wallet feature fixed this issue instantly, showing all transactions in all wallets without any issues.

We found out pretty quickly that BTCPay Server is more than just code—it's a community. People from all over chime in with advice, share learning resources, and even roll up their sleeves to improve the software. It's not a static thing; it's a living, evolving ecosystem. This kind of support network doesn't just make the tech better; it makes running a Bitcoin-focused business like ours a whole lot easier. - Mike from Coincards

Future Prospects: Looking ahead, Coincards has its eyes set on some big goals. First up, they're itching to get into fresh markets, with** Australia and the Eurozone being next on the map. And they're not just about growing bigger; they're about making Bitcoin more mainstream. Instead of focusing only on Bitcoin as an investment, they're keen on showing people it can be used for everyday stuff, too. They're doing this by backing worldwide conferences, meetups and events that show off how Bitcoin can be used in daily transactions.

You can download a PDF of this case study on this link (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Established in 2014 in Vancouver, British Columbia, Coincards (opens new window) had one main goal: to make it easier for people to use Bitcoin in their everyday lives. The Woocommerce-powered platform makes it simple for folks to buy gift cards from a wide range of popular retailers using Bitcoin. It’s not just about offering another way to spend Bitcoin; it’s about giving it real-world utility. By doing this, they made it simpler for everyday users to tap into the world of Bitcoin.

You can download a PDF of this case study on this link (opens new window).

# Needs and Goals:

At its core, Coincards is all about getting more people to use Bitcoin in their everyday lives. In their early stages, Coincards grappled with the limitations of traditional payment processors. These systems either wielded excessive control over funds or imposed exorbitant fees, both of which were antithetical to Coincards' ethos. On top of that, the older systems they used had complicated and buggy address reuse issues, causing a lot of headaches and wasted time. So, they set out to find a better way—one that would give them more control over their Bitcoin and cut down on operational costs.

# Choice of BTCPay Server:

Coincards was already on the lookout for a better payment solution when they stumbled upon Nicolas Dorier's tweet (opens new window), which passionately declared, "This is lies, my trust in you is broken, I will make you obsolete." That statement struck a chord, capturing what Coincards wanted in a payment system: full control over their Bitcoin, with no fees attached. Coincards didn't just nod along; They jumped right into the Slack discussions with Nicolas, becoming one of the early adopters and vocal supporters of this game-changing platform.

# The Process:

As Coincards transitioned from Mycelium gear to BTCPay Server, it was a deliberate decision driven by their evolving business needs. Mycelium gear was falling short, especially with its complicated and buggy address reuse systems. Coincards didn't just jump on the BTCPay Server bandwagon; they were hands-on from the get-go, suggesting features and improvements to make the platform even better for merchants like themselves.

Notably: Coincards was the first to fully integrate BTCPay Server (opens new window) into their operations. The sheer volume of transactions they funneled through BTCPay in the initial month could have easily overwhelmed previous systems. But BTCPay Server and its dedicated team, spearheaded by Nicolas, were more than capable. They were deeply committed to resolving any new issues that cropped up, fine-tuning the system for scalability, and quickly rolling out updates, all of which ensured that Coincards ran smoothly with hardly any interruptions.

# Challenges:

Dealing with Bitcoin's well-known price swings has always been a challenge. At first, Coincards tackled this head-on by creating an in-house system that worked with top Canadian exchanges for real-time fiat conversions. It was a smart way to steer clear of the pitfalls of sudden market changes.

But as Coincards grew, they realized there was room for improvement. They switched gears, moving away from their in-house system to embrace BTCPay Server's "Transmuter" feature, a brainchild of developer Kukks. The Transmuter showed just how versatile BTCPay Server could be. It lets users set up custom workflows to perform specific tasks, and that's exactly what Coincards did. They used it to quickly exchange Bitcoin with their go-to providers, which helps keep them insulated from market ups and downs.

# Features and benefits

Improvement over the previous system: Switching to BTCPay Server made a noticeable difference for Coincards when it came to reliability. Nearly all transactions now go through without a hitch, which is a big step up from what they experienced with their previous systems.

The move to BTCPay Server didn't just improve transaction reliability; it also freed up valuable time for the team. Thanks to the platform's efficiency, Coincards has been able to significantly reduce the man-hours previously spent on managing payments.

Beyond the backend efficiencies, the switch to BTCPay Server also had a visible impact on the user experience. Customers have found the new platform to be more intuitive, leading to smoother transactions and an overall improved flow through the checkout process. This improved user experience has been a win-win, boosting customer satisfaction while allowing them to focus on scaling and innovation.

# New Possibilities:

Coincards isn't just sitting back and waiting for the Bitcoin world to evolve; they're active players in shaping that future. They were among the first to experiment with Lightning Network payments through BTCPay Server. This new layer promises to make Bitcoin transactions faster and more secure. And while the wider world may still be getting up to speed on this, Coincards is already there, pushing the envelope and showing what's possible.

While the typical user may not be too worried about which cryptocurrencies they can spend, Coincards embraces the open-source flexibility of BTCPay Server to offer more choices. They've added options like Monero, which aligns with their strong stance on privacy, and Dogecoin for those who like a bit of fun with their spending. They've also opened the door to other well-known coins like Litecoin and Dash. This isn't just Coincards ticking boxes; it's them making a statement about openness and choice in the cryptocurrency world.

# Results

Outcomes: Since integrating BTCPay Server, Coincards has seen more than just cost savings; the move has led to a more streamlined operation overall. The actual reduction in transaction fees is just one piece of a larger puzzle. Behind the scenes, the team has been able to cut back on admin time and the headaches of payment reconciliation.

With BTCPay Server smoothing out the wrinkles in payment processing, our team has found more time to focus on what really matters. We're able to offer even more products and put more energy into growing the business. - Mike Coincards

But it's not just about the money saved or the operational headaches cured. BTCPay Server has opened doors for Coincards that they didn't even know were there. Taking the Monero community, for example. Coincards' service is now well-regarded there, but it's not just about luck or coincidence. Thanks to BTCPay Server's flexibility, Coincards can be a significant player in this space, really helping to drive spending in a community that cares deeply about privacy. This isn't just good for reputation; it shows how committed Coincards is to broadening the horizons of digital spending.

# User Feedback:

User feedback isn't just a bunch of numbers; it's what guides Coincards. And guess what? People are really digging their BTCPay Server setup. It's not just that transactions go smoothly, which they do. What's special is the level of trust Coincards has been able to build. Often hearing that folks choose Coincards specifically because they're comfortable with the BTCPay checkout process and know that the payment flow will be flawless.

# Conclusion

Learnings: Coincards' journey with BTCPay Server was also a path of learning and discovery. Initially, the team at Coincards thought accepting Bitcoin would be a logistical challenge, especially in reconciling transactions. But BTCPay Server turned this assumption upside down. The platform demonstrated that managing Bitcoin transactions could be done far more efficiently than previously imagined.

Then there was the hurdle of the wallet gap limit—a concern that could seriously hamper large-scale operations. However, Coincards navigated this obstacle smoothly. BTCPay Server's own built-in wallet feature fixed this issue instantly, showing all transactions in all wallets without any issues.

We found out pretty quickly that BTCPay Server is more than just code—it's a community. People from all over chime in with advice, share learning resources, and even roll up their sleeves to improve the software. It's not a static thing; it's a living, evolving ecosystem. This kind of support network doesn't just make the tech better; it makes running a Bitcoin-focused business like ours a whole lot easier. - Mike from Coincards

Future Prospects: Looking ahead, Coincards has its eyes set on some big goals. First up, they're itching to get into fresh markets, with** Australia and the Eurozone being next on the map. And they're not just about growing bigger; they're about making Bitcoin more mainstream. Instead of focusing only on Bitcoin as an investment, they're keen on showing people it can be used for everyday stuff, too. They're doing this by backing worldwide conferences, meetups and events that show off how Bitcoin can be used in daily transactions.

You can download a PDF of this case study on this link (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/case-study-hodlhodl-2023/index.html b/case-study-hodlhodl-2023/index.html index bb9ac706..55d63be1 100644 --- a/case-study-hodlhodl-2023/index.html +++ b/case-study-hodlhodl-2023/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

The Baltic HoneyBadger (opens new window) conference, celebrated for being the oldest and most focused Bitcoin conference in Europe, identified a substantial shortcoming in its 2022 iteration - the inability for attendees to make payments using bitcoin. Thus, in its 5th year running, Hodl Hodl (opens new window), the organizer behind the conference and a reputed bitcoin P2P trading platform, kick-started a collaboration with BTCPay Server (opens new window) to streamline bitcoin transactions for its attendees.

The effort ended up launching a tight collaboration within several projects in the industry, such as Bitcoinize, GetAlby, LNbits, PlebTag, Liquid (by Blockstream), LND (by Lightning Labs) and SideShift, putting them under a significant challenge:`

Can paying and receiving payments in bitcoin be easy for someone who has never used it before?

# Background and Challenge

Addressable concerns of the merchants were bitcoin's volatility, technical complexity and doubt that customers had bitcoin to spend.

These concerns were addressed by hypothesizing that:

  • Merchants wanted to accept bitcoin without experiencing its volatility
  • Payment process should be user-friendly, instant and familiar
  • Customers own some bitcoin for making purchases

# Solution Implementation

BTCPay Server provides a plethora of rich features by default but also offers a wide variety of plugins that enhance and expand its experience. The Baltic HoneyBadger conference made extensive use of these features and plugins, notably:

  • Payouts (opens new window) - allows payments to be scheduled and processed later.
  • Prism plugin - allows automatic forward of the incoming funds to multiple destinations based on a percentage split and an amount threshold. This creates payouts, which are then processed by a payout processor.
  • Payout Processors - allows processing of payments using a configured criteria, for example - a timer.
  • Sideshift plugin - allows conversion of the funds to other assets, such as the Tether stablecoin issued over the Liquid Network. This plugin interacted with the Prism plugin by providing a destination for Prism, which would take the incoming lightning funds and forward them to the merchant's Liquid wallet.

A multi-step procedure was established:

  1. Bitcoin payments were received via the lightning network (opens new window), enabling instant settlement and reduced fees.
  2. Once the store amassed 100,000 satoshis, it forwarded the payment to SideShift through the payout processor.
  3. SideShift converted the payment into USDT (a stablecoin on the Liquid network) and returned it to the merchant's USDT Liquid wallet, such as Green Wallet or Aqua.
  4. Merchants had the flexibility to retain the payment in USDT, convert it to fiat, or keep it in bitcoin all of that through the Hodl Hodl platform.

# Streamlining the payment process

Ensuring a smooth user experience meant the payment process must be quick and reliable. Customers or merchants should never face a technical difficulty that could stop them from making a transaction. A dedicated BTCPay Server instance was deployed (6 cores, 16GB RAM at ~13 EUR per month). BTCPay Server's optimizations throughout the years ensured a reliable experience for merchants and customers.

Good user experience means that payments need to be settled instantly and without fees.

This means that on-chain bitcoin wasn’t an option and the lightning network was used.

BTCPay Server allows users to easily connect to an external bitcoin lightning node. Due to time-constraints, complexity of managing channels and liquidity, ensuring high throughput and uptime, - Alby’s (opens new window) integration came in as a life-saver. Thanks to LndHub.go (opens new window), an account system on top of Alby’s lightning nodes, every user can connect his own Alby account to BTCPay Server for high-reliability of payments being routed without liquidity issues. To mitigate the risk of custodianship, the Prism plugin pulled payments out of the node and forwarded it to SideShift every time 100 000 satoshi balance was reached.

To demystify Bitcoin transactions for the merchants, Hod lHodl introduced point-of-sale machines from Bitcoinize (opens new window), resembling traditional payment terminals. These devices facilitated the generation of invoices through the BTCPay Server Point Of Sale plugin (opens new window), fostering a familiar user experience.

# How much do you agree that the point-of-sale machine facilitated a smoother payment process?

# Ensuring customers have bitcoin to pay

Ensuring attendees had access to bitcoin for making purchases was paramount. BTCPay Server checkout page is compatible with NFC with tap to pay. Thanks to LNBits (opens new window) and PlebTag (opens new window) over 500 NFC voucher cards have been created and pre-loaded with approximately 21$ USD worth of bitcoin.

Every guest received a custom designed, event-specific card to enrich their paying experience. The card illustrated a honey badger whose eyes would light up every time the NFC cards came in contact with a point of sale device - which made the experience not only easy but also fun.

Furthermore, when customers use an NFC card, no internet access is needed on their end

This can sometimes be a challenge at large conferences. An increase of the engagement on social media was noticeable since a lot of users referenced their experience of paying with bitcoin and by using NFC cards that light up in their posts on social media.

# Onboarding and Training Merchants

Even though this step seemed to be the biggest fear before the project kick-started in practice it turned out to be the smoothest. Due to all the earlier efforts in making the experience familiar and easy, 20 merchants were onboarded in under an hour by the BTCPay Server team.

In a survey conducted after the event, on a scale from very complicated (1) to very simple (5) 83.3% of merchants rated the onboarding experience as very simple.

The onboarding included a short person to person explanation on how to use a device, providing the merchant with a sticker to receive tips and asking them to join a group chat where they could raise their concern in case of a problem or simply ask a question. This communication channel turned out to be fruitful not only because the team could react rapidly in case of a problem, but also because of the feedback merchants provided.

# Results

The collaborative effort of Hodl Hodl, BTCPay Server and several other projects culminated in an enriching experience for both merchants and customers, manifesting in 2944 transactions averaging 9.20€ per transaction, aggregating to a value greater than 1.1 BTC or 27,079.99€.

In a survey conducted on merchants after the conference:

  • 83.3% of participants said that they would be willing to accept bitcoin at next year’s conference.
  • 80% said accepting bitcoin had a positive reaction from their customers.
  • 50% merchants replied they would be open to offering bitcoin as a payment option in their business in the future.

# Would you be open to accepting bitcoin payments at next years conference?

The easy onboarding process and the familiar transaction procedures played pivotal roles in its success, erasing the preconceived notions held by merchants about Bitcoin transactions.

From a user perspective everyone got a branded NFC-card as a memory of the conference that they can further use in their daily life. This will most likely lead to even more users that learn about bitcoin and how easy it is to use.

The inclusion of QR codes for tipping was an additional feature that merchants greatly appreciated.

“Everything was very simple and well thought out. Thank you very much for prompt support in case of confusion.”

Bitcoin payments have been our main struggle since year one. And this has probably been the most exciting thing we have dealt with since the first Baltic Honeybadger. Onboarding the merchants and handling the whole setup was a big experiment, but we made it work, everything at the conference was payable with Bitcoin! Huge thanks to the BTCPay team; all of this was only possible because of their hard work.” - Hodl Hodl

# Conclusion

This case study provides a detailed systematic approach undertaken to overcome identified challenges, demonstrating the adoption of bitcoin in a real-world setting.

By addressing the volatility concerns, simplifying the transaction process, and ensuring attendees had the necessary resources to make bitcoin transactions, a system was created that replicated the familiarity of fiat currency transactions while leveraging the benefits of bitcoin.

The significant number of transactions processed and the positive feedback received from merchants and customers indicate that the initiative not only addressed the concerns raised in the previous conference but also laid a strong foundation for the more significant adoption of bitcoin in similar future events.

The success story (opens new window) from the Baltic HoneyBadger conference could serve as a blueprint for similar events and potentially for a broader array of retail businesses looking to integrate bitcoin into their operations seamlessly.

You can download a PDF of this case study on this link (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

The Baltic HoneyBadger (opens new window) conference, celebrated for being the oldest and most focused Bitcoin conference in Europe, identified a substantial shortcoming in its 2022 iteration - the inability for attendees to make payments using bitcoin. Thus, in its 5th year running, Hodl Hodl (opens new window), the organizer behind the conference and a reputed bitcoin P2P trading platform, kick-started a collaboration with BTCPay Server (opens new window) to streamline bitcoin transactions for its attendees.

The effort ended up launching a tight collaboration within several projects in the industry, such as Bitcoinize, GetAlby, LNbits, PlebTag, Liquid (by Blockstream), LND (by Lightning Labs) and SideShift, putting them under a significant challenge:`

Can paying and receiving payments in bitcoin be easy for someone who has never used it before?

# Background and Challenge

Addressable concerns of the merchants were bitcoin's volatility, technical complexity and doubt that customers had bitcoin to spend.

These concerns were addressed by hypothesizing that:

  • Merchants wanted to accept bitcoin without experiencing its volatility
  • Payment process should be user-friendly, instant and familiar
  • Customers own some bitcoin for making purchases

# Solution Implementation

BTCPay Server provides a plethora of rich features by default but also offers a wide variety of plugins that enhance and expand its experience. The Baltic HoneyBadger conference made extensive use of these features and plugins, notably:

  • Payouts (opens new window) - allows payments to be scheduled and processed later.
  • Prism plugin - allows automatic forward of the incoming funds to multiple destinations based on a percentage split and an amount threshold. This creates payouts, which are then processed by a payout processor.
  • Payout Processors - allows processing of payments using a configured criteria, for example - a timer.
  • Sideshift plugin - allows conversion of the funds to other assets, such as the Tether stablecoin issued over the Liquid Network. This plugin interacted with the Prism plugin by providing a destination for Prism, which would take the incoming lightning funds and forward them to the merchant's Liquid wallet.

A multi-step procedure was established:

  1. Bitcoin payments were received via the lightning network (opens new window), enabling instant settlement and reduced fees.
  2. Once the store amassed 100,000 satoshis, it forwarded the payment to SideShift through the payout processor.
  3. SideShift converted the payment into USDT (a stablecoin on the Liquid network) and returned it to the merchant's USDT Liquid wallet, such as Green Wallet or Aqua.
  4. Merchants had the flexibility to retain the payment in USDT, convert it to fiat, or keep it in bitcoin all of that through the Hodl Hodl platform.

# Streamlining the payment process

Ensuring a smooth user experience meant the payment process must be quick and reliable. Customers or merchants should never face a technical difficulty that could stop them from making a transaction. A dedicated BTCPay Server instance was deployed (6 cores, 16GB RAM at ~13 EUR per month). BTCPay Server's optimizations throughout the years ensured a reliable experience for merchants and customers.

Good user experience means that payments need to be settled instantly and without fees.

This means that on-chain bitcoin wasn’t an option and the lightning network was used.

BTCPay Server allows users to easily connect to an external bitcoin lightning node. Due to time-constraints, complexity of managing channels and liquidity, ensuring high throughput and uptime, - Alby’s (opens new window) integration came in as a life-saver. Thanks to LndHub.go (opens new window), an account system on top of Alby’s lightning nodes, every user can connect his own Alby account to BTCPay Server for high-reliability of payments being routed without liquidity issues. To mitigate the risk of custodianship, the Prism plugin pulled payments out of the node and forwarded it to SideShift every time 100 000 satoshi balance was reached.

To demystify Bitcoin transactions for the merchants, Hod lHodl introduced point-of-sale machines from Bitcoinize (opens new window), resembling traditional payment terminals. These devices facilitated the generation of invoices through the BTCPay Server Point Of Sale plugin (opens new window), fostering a familiar user experience.

# How much do you agree that the point-of-sale machine facilitated a smoother payment process?

# Ensuring customers have bitcoin to pay

Ensuring attendees had access to bitcoin for making purchases was paramount. BTCPay Server checkout page is compatible with NFC with tap to pay. Thanks to LNBits (opens new window) and PlebTag (opens new window) over 500 NFC voucher cards have been created and pre-loaded with approximately 21$ USD worth of bitcoin.

Every guest received a custom designed, event-specific card to enrich their paying experience. The card illustrated a honey badger whose eyes would light up every time the NFC cards came in contact with a point of sale device - which made the experience not only easy but also fun.

Furthermore, when customers use an NFC card, no internet access is needed on their end

This can sometimes be a challenge at large conferences. An increase of the engagement on social media was noticeable since a lot of users referenced their experience of paying with bitcoin and by using NFC cards that light up in their posts on social media.

# Onboarding and Training Merchants

Even though this step seemed to be the biggest fear before the project kick-started in practice it turned out to be the smoothest. Due to all the earlier efforts in making the experience familiar and easy, 20 merchants were onboarded in under an hour by the BTCPay Server team.

In a survey conducted after the event, on a scale from very complicated (1) to very simple (5) 83.3% of merchants rated the onboarding experience as very simple.

The onboarding included a short person to person explanation on how to use a device, providing the merchant with a sticker to receive tips and asking them to join a group chat where they could raise their concern in case of a problem or simply ask a question. This communication channel turned out to be fruitful not only because the team could react rapidly in case of a problem, but also because of the feedback merchants provided.

# Results

The collaborative effort of Hodl Hodl, BTCPay Server and several other projects culminated in an enriching experience for both merchants and customers, manifesting in 2944 transactions averaging 9.20€ per transaction, aggregating to a value greater than 1.1 BTC or 27,079.99€.

In a survey conducted on merchants after the conference:

  • 83.3% of participants said that they would be willing to accept bitcoin at next year’s conference.
  • 80% said accepting bitcoin had a positive reaction from their customers.
  • 50% merchants replied they would be open to offering bitcoin as a payment option in their business in the future.

# Would you be open to accepting bitcoin payments at next years conference?

The easy onboarding process and the familiar transaction procedures played pivotal roles in its success, erasing the preconceived notions held by merchants about Bitcoin transactions.

From a user perspective everyone got a branded NFC-card as a memory of the conference that they can further use in their daily life. This will most likely lead to even more users that learn about bitcoin and how easy it is to use.

The inclusion of QR codes for tipping was an additional feature that merchants greatly appreciated.

“Everything was very simple and well thought out. Thank you very much for prompt support in case of confusion.”

Bitcoin payments have been our main struggle since year one. And this has probably been the most exciting thing we have dealt with since the first Baltic Honeybadger. Onboarding the merchants and handling the whole setup was a big experiment, but we made it work, everything at the conference was payable with Bitcoin! Huge thanks to the BTCPay team; all of this was only possible because of their hard work.” - Hodl Hodl

# Conclusion

This case study provides a detailed systematic approach undertaken to overcome identified challenges, demonstrating the adoption of bitcoin in a real-world setting.

By addressing the volatility concerns, simplifying the transaction process, and ensuring attendees had the necessary resources to make bitcoin transactions, a system was created that replicated the familiarity of fiat currency transactions while leveraging the benefits of bitcoin.

The significant number of transactions processed and the positive feedback received from merchants and customers indicate that the initiative not only addressed the concerns raised in the previous conference but also laid a strong foundation for the more significant adoption of bitcoin in similar future events.

The success story (opens new window) from the Baltic HoneyBadger conference could serve as a blueprint for similar events and potentially for a broader array of retail businesses looking to integrate bitcoin into their operations seamlessly.

You can download a PDF of this case study on this link (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/case-study-opensubtitles/index.html b/case-study-opensubtitles/index.html index d24dde32..93461a8f 100644 --- a/case-study-opensubtitles/index.html +++ b/case-study-opensubtitles/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

Founded in 2006, OpenSubtitles.org (opens new window) is the world's largest resource of movies and TV series subtitles. The website offers subtitles in almost any language imaginable. OpenSubtitles plays a crucial role in making cinematic stories more accessible and enjoyable for people with hearing disabilities and non-native speakers, significantly enriching their viewing experience. Utilizing full-text search capabilities and a unique movie hash system, the website ensures precise results for every search query.

You can download a PDF of this case study on this link (opens new window).

A few years after its inception, the platform underwent a significant transformation, launching OpenSubtitles.com. This new phase introduced a REST API, now leveraged by hundreds of projects, handling 1200 API calls per second—a testament to their success in scaling, high availability, backup, and monitoring.

Initially, the lack of a comprehensive subtitle website that could meet all user requirements was evident. There was an acute shortage of APIs, multi- language search functionality, and accurate hash search results, with most platforms offering subtitles in just one language.

Recognizing these gaps, OpenSubtitles is inspired to harness AI translation capabilities, aiming to realize the ambitious vision of providing on-demand, real-time subtitles for every video, revolutionizing access to globally- accessible content.

With the advent of AI translation capabilities, our vision is to fulfill the dream of providing subtitles for every video worldwide on demand and in real-time.

# Choice of BTCPay Server

To ensure sustainability, there are several ways (opens new window) in which users can help OpenSubtitles. Besides getting involved as a developer, users can donate or become VIP members, to ensure no ads and several other benefits. As a global website, it is important that any user, no matter where they’re from can send a payment without any friction. Bitcoin was an obvious choice for this, and as a reputable open-source project, BTCPay Server appeared on their radar.

We wanted to have a way to accept bitcoin payments and donations on our website. As a reputable open-source solution, BTCPay Server was an obvious option to evaluate. During our research we realized that it’s the only solution that didn’t require KYC (Know Your Customer) procedures

# Implementation

The platform utilized BTCPay Server Docker deployment (opens new window) together with the Greenfield API (opens new window) to create an automated flow and upgrade their users through a webhook. Interestingly, they’ve also leveraged the ability to update effortlessly through a command line, by creating a cron job.

Integrating BTCPay Server was straightforward; our aim was to facilitate donations as well as payments for VIP Memberships and other purposes such as advertising and partnerships with other websites. Webhooks are pivotal in this process; once a transaction is confirmed, users are automatically upgraded to VIP status.

# Features and benefits

The adoption of BTCPay Server by OpenSubtitles has significantly enhanced financial operations and user payment options. This integration allows OpenSubtitles to support several cryptocurrencies and payment networks, including Bitcoin, BTC Liquid, Bitcoin over the Lightning Network, and Monero, catering to the diverse preferences of its global audience.

OpenSubtitles' decision to implement BTCPay Server is rooted in its commitment to principles of self-custody, resilience, and hard money, reflecting a broader philosophy of financial autonomy and security.

It's becoming increasingly essential for online payments to include crypto acceptance as a standard practice. It's disheartening that this hasn't yet become as commonplace as it should be. The numerous issues with banks and fintech institutions, including the risk of funds being held and services being canceled abruptly, only exacerbate the problem.

Thanks to BTCPay Server, we now have the capability to accept cryptocurrency payments according to our preferences.

# Conclusion

In conclusion, integrating BTCPay Server enabled OpenSubtitles to freely accept multiple payments to their broad user-base, broadening their reach to a global audience, while allowing them to retain core values of privacy and efficiency. Despite some technical hurdles, the move towards bitcoin payments has clearly been a win.

With BTCPay Server, we've taken a significant step forward in realizing our vision of a more inclusive and resilient financial ecosystem.

You can download a PDF of this case study on this link (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Founded in 2006, OpenSubtitles.org (opens new window) is the world's largest resource of movies and TV series subtitles. The website offers subtitles in almost any language imaginable. OpenSubtitles plays a crucial role in making cinematic stories more accessible and enjoyable for people with hearing disabilities and non-native speakers, significantly enriching their viewing experience. Utilizing full-text search capabilities and a unique movie hash system, the website ensures precise results for every search query.

You can download a PDF of this case study on this link (opens new window).

A few years after its inception, the platform underwent a significant transformation, launching OpenSubtitles.com. This new phase introduced a REST API, now leveraged by hundreds of projects, handling 1200 API calls per second—a testament to their success in scaling, high availability, backup, and monitoring.

Initially, the lack of a comprehensive subtitle website that could meet all user requirements was evident. There was an acute shortage of APIs, multi- language search functionality, and accurate hash search results, with most platforms offering subtitles in just one language.

Recognizing these gaps, OpenSubtitles is inspired to harness AI translation capabilities, aiming to realize the ambitious vision of providing on-demand, real-time subtitles for every video, revolutionizing access to globally- accessible content.

With the advent of AI translation capabilities, our vision is to fulfill the dream of providing subtitles for every video worldwide on demand and in real-time.

# Choice of BTCPay Server

To ensure sustainability, there are several ways (opens new window) in which users can help OpenSubtitles. Besides getting involved as a developer, users can donate or become VIP members, to ensure no ads and several other benefits. As a global website, it is important that any user, no matter where they’re from can send a payment without any friction. Bitcoin was an obvious choice for this, and as a reputable open-source project, BTCPay Server appeared on their radar.

We wanted to have a way to accept bitcoin payments and donations on our website. As a reputable open-source solution, BTCPay Server was an obvious option to evaluate. During our research we realized that it’s the only solution that didn’t require KYC (Know Your Customer) procedures

# Implementation

The platform utilized BTCPay Server Docker deployment (opens new window) together with the Greenfield API (opens new window) to create an automated flow and upgrade their users through a webhook. Interestingly, they’ve also leveraged the ability to update effortlessly through a command line, by creating a cron job.

Integrating BTCPay Server was straightforward; our aim was to facilitate donations as well as payments for VIP Memberships and other purposes such as advertising and partnerships with other websites. Webhooks are pivotal in this process; once a transaction is confirmed, users are automatically upgraded to VIP status.

# Features and benefits

The adoption of BTCPay Server by OpenSubtitles has significantly enhanced financial operations and user payment options. This integration allows OpenSubtitles to support several cryptocurrencies and payment networks, including Bitcoin, BTC Liquid, Bitcoin over the Lightning Network, and Monero, catering to the diverse preferences of its global audience.

OpenSubtitles' decision to implement BTCPay Server is rooted in its commitment to principles of self-custody, resilience, and hard money, reflecting a broader philosophy of financial autonomy and security.

It's becoming increasingly essential for online payments to include crypto acceptance as a standard practice. It's disheartening that this hasn't yet become as commonplace as it should be. The numerous issues with banks and fintech institutions, including the risk of funds being held and services being canceled abruptly, only exacerbate the problem.

Thanks to BTCPay Server, we now have the capability to accept cryptocurrency payments according to our preferences.

# Conclusion

In conclusion, integrating BTCPay Server enabled OpenSubtitles to freely accept multiple payments to their broad user-base, broadening their reach to a global audience, while allowing them to retain core values of privacy and efficiency. Despite some technical hurdles, the move towards bitcoin payments has clearly been a win.

With BTCPay Server, we've taken a significant step forward in realizing our vision of a more inclusive and resilient financial ecosystem.

You can download a PDF of this case study on this link (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/case-study-strainly/index.html b/case-study-strainly/index.html index ec0e26dd..f6a33669 100644 --- a/case-study-strainly/index.html +++ b/case-study-strainly/index.html @@ -12,7 +12,7 @@ - + @@ -53,7 +53,7 @@ (opens new window) GitHub (opens new window)

Strainly (opens new window) is the leading platform empowering hemp growers, breeders and equipment providers. Strainly provides a global, safe, reliable and convenient access to everything hemp growers need, empowering them to do what they do best. Strainly allows growers, breeders, nurseries and equipment providers to offer and procure their genetics and equipment while benefiting from a rating/reviews mechanism and an integrated privacy-focused, peer-to-peer payment system.

You can download a PDF of this case study on this link (opens new window).

# Needs and Goals

Hemp breeders face significant friction when it comes to promoting and selling their genetics (seeds, clones, pollen). Social media platforms wage a war on this industry, constantly shutting down or shadow-banning accounts.

Payment processors rigorously ban industry players. This entire industry relies on cash (fiat) to transact, causing significant friction and security issues. Digital/remote transactions suffer massive friction due to the inability to use legacy fiat payment processors. Strainly aims to connect breeders, nurseries, growers and equipment providers, in a reliable manner. Strainly has been serving this industry for over 7 years, improving access to genetics while increasing revenues for breeders and nurseries.

# Choice of BTCPay Server

Fiat payment processors have strict policies regarding the hemp industry. Only high-risk (and high fees) payment processors accept to work with our industry. We observed that payment processors (including high risk/high fees ones) terminate services with very short notice. It is also important to note that privacy is not their primary concern. Fiat payment processors are usually very intrusive and require significant details (i.e. enhanced due diligence) regarding merchants, in our case, our users.

Collecting personal data from our users has always been a red line for us. Let alone handing over our user's identity to third party payment processors! BTCPay Server quickly stood out as the obvious solution for processing payments in a reliable, permissionless, censorship-resistant and private manner. BTCPay Server allows for self-hosting, which allows for business resiliency and privacy. We turned this payment processing challenge into an opportunity to orange pill at scale by rolling out a reliable, smooth and private bitcoin payment system, using BTCPay Server.

# Implementation

Setting up BTCPay Server on a dedicated VPS was a matter of an hour. Strainly being offered as a freemium web app, we started by integrating BTCPay Server invoices to monetize paid features. We used the dedicated API and webhooks to upgrade our members automatically to a paid tier, after a BTCPay invoice for a given subscription is Settled. We enabled Lightning payments from the get go, to minimize fees for our users. The modal rendering of the BTCPay invoices allows for a slick UI.

After a couple of months, it became clear that BTCPay Server was a reliable enough payment system that we could keep building on. We therefore took on a bigger task: allowing peer-to-peer payments between our members.

  1. The first step and challenge consisted in laying out an entire transaction workflow where:
  • the marketplace would take a service fee BUT without being a middleman or money transmitter for obvious compliance reasons
  • marketplace leakage would be prevented
  • user experience would be « new-coiners compatible », as our users are rarely bitcoiners! It means that the entire UX needed to remain abstracted within our own marketplace, in a minimalist way, and that at no point were users supposed to sign up and log in via the BTCPay Server interface. In other words, we were lining ourselves up to make extensive use of the BTCPay Server API (opens new window). Once the transaction workflow and all its possible scenarios were laid out, we mapped out every API call into it. Fortunately, the BTCPay Server’s API documentation is pretty clear and detailed!
  1. In order for our payment system to work as intended, we first had to enable users to create their own non-custodial on-chain wallet along with their Lightning wallet (leveraging the LNBank plugin) while never leaving our web app. To ensure optimal UX, it had to be a matter of hitting a couple buttons (opens new window) in the profile settings, and displaying the seed phrase, one single time, to the user, while making clear to these new-coiners that there was no second chance to write down their seedphrase! We then built a simple transaction workflow (opens new window) where the vendor pays a fee to the marketplace and then gets paid by the buyer. We’ll explain later why we did it that way. In order to allow vendors to refund buyers (for whatever reason they may have), we also had to use Pull Payments (opens new window) and Payouts (opens new window) in the BTCPay API. Finally, in order to keep the UX intuitive for all parties involved, we had to use webhooks to change the transaction to explicit statuses while rendering a short payment history in the vendor’s wallet (opens new window).
  2. As a result, buyers can commit to make a purchase with a vendor. The vendor is immediately prompted to pay a service fee invoice (BTC) to the marketplace operator’s BTCPay wallet and the buyer is prompted to pay the vendor for the order (including shipping fees if applicable). The invoice defaults to the Lightning network for small amounts and to on-chain payments for larger amounts. The vendor is notified of a successful payment and invited to check their wallet balance that is surfaced in the wallet section of their profile, which is an abstracted BTCPay wallet. The vendor can then ship the order and both parties review each other. If applicable, the vendor can also refund the payment for any reason, and the buyer will be prompted to claim their refund within the UI, as part of a workflow scenario. Indeed, both parties can fulfill these payments using any compatible wallet (whether CashApp, Strike, Phoenix, Muun…).
  3. The UI/UX had to incentivize vendors to transfer the proceeds of their sales to a safer (i.e cold wallet). We enrolled in affiliate programs with Blockstream and Coinkite to convince our new-coiners to use the best technology to secure their bitcoin. Some of our members need to spend the proceeds of their sales in fiat. We therefore enrolled in the Bitcoin Company (opens new window)’s affiliate program to offer a convenient and privacy-friendly off-ramp solution. We display Blockstream (opens new window), Coinkite (opens new window) and The Bitcoin Company banners in the user’s wallet, within our web app.
  4. Challenges: The biggest challenge was to make the whole transaction workflow as frictionless as possible, bearing in mind that 90% of our users were no-coiners or new-coiners. The user experience had to flow naturally and intuitively. We initially required buyers to pay the marketplace fee and order at the same time. We quickly realized that it created too much friction for buyers and would result in a significant increase in abandoned orders. We had to put the burden on the sellers first, since after all, they had an incentive to close the sale! That’s why the marketplace fee is paid upfront by the vendor. We are therefore slightly relying on vendors to help us orange pill buyers.
  5. We also discovered a couple bugs in some API calls and the LNBank plugin, which is to be expected as we might have been the first to use those API calls and features. But in general, we haven’t had too many surprises with the integration.

# Features and Benefits

We did not have any integrated payment system before, because none of the fiat payment processors were charging reasonable fees or respecting privacy. Bitcoin has always been the natural and obvious fit, and BTCPay made Bitcoin payments practical!

  • Better user experience: with the BTCPay Server integration, users can pay each other WORLDWIDE, very intuitively, by simply hitting the « Pay order » button within the transaction workflow. Vendors can immediately verify the payment was received without leaving the app. Payments are instant and users do not risk getting their fiat payment account shutdown and balance frozen for making a payment that falls under a prohibited category/unacceptable use policy.
  • Enhanced security: No more chargebacks! Vendors are always concerned about chargebacks, which are relatively frequent. Vendors like the irreversibility nature of bitcoin payments. On the flip side, because vendors have to be verified before being approved to post listings and because they have to pay the marketplace fee upfront, we tend to filter out high time preference scammers effectively. Buyers feel reassured that only legit vendors are on the marketplace. Finally, both vendors and buyers can pay and get paid (or refunded) without ever revealing their identities and payment details. If they want to use a PO Box for deliveries, they can!

We can now offer an improved UX while taking fees proportional to the value delivered to users. Game changer.

# Results

  • Outcomes: Improved transaction workflow that you should expect on any marketplace, bitcoin-centric, privacy-focused, secure and easy. Improved UX for buyers, vendors and marketplace operators. Payment, dispute, refund, everything is here.
  • Data : 600-800 invoices settled each month. 80%+ settlement rate.
  • User Feedback: Some users (no-coiners) were initially confused but overall this has been well accepted and some users only accept using our integrated system as a payment method.

BTCPay Server was a natural choice for us. It’s a well-designed & mature product that “just works”. It’s intuitive enough that anyone can use it, while having the depth needed to satisfy more advanced users. It’s stable enough to deploy without constant worrying, yet innovate enough to continue adding new features without making the product worse overall.

Whenever a payment is collected on BTCPay Server, it should be immediately forwarded to that user’s Bitcoin Jungle wallet. To achieve this, we leveraged BTCPay Server’s Webhooks feature. Each time an invoice is paid, a webhook is triggered. This webhook is responsible for forwarding the Bitcoin received in the merchant’s wallet using the LNURL protocol. The webhook also allows us to split up the Bitcoin in various ways - the service provider can optionally retain a processing fee & tips received can be split up and delivered amongst staff members evenly. This happens in under a second and is perceived to be “real-time” by the merchant.

We also wanted our BTCPay Server to use the BTC/CRC price set by Bitcoin Jungle Wallet, to avoid mis-match in fiat calculations between the Point of Sale and the Wallet. To achieve this, we created a custom rate provider in our BTCPay Server instance. This was a straightforward process - copy an existing rate provider & then modify the code to make a RPC call to Bitcoin Jungle to retrieve the current price of BTC.

Overall, the integration was very straight-forward. The main challenge we faced was the handling of on-chain payments received, as we decided to forward all payments over Lightning Network. We automated this case utilizing Lightning Loop.

# Features and Benefits

Prior to our BTCPay Server integration, we only offered a Payment Link to our users (e.g. https://pay.bitcoinjungle.app/username), which is powered by Galoy. -This integration greatly enhanced the user experience for merchants. BTCPay Server allows them to create multiple Point of Sales (say if they have multiple locations) and track them separately, integrate with popular ecommerce platforms, have a login to view/export invoices to Excel for accounting, and accept payments on-chain in addition to Lightning.

# Results

We have received far fewer support requests than expected after our integration with BTCPay Server. The whole process is pretty seamless & intuitive. Any business owner can start accepting Bitcoin payments in <2 minutes. To date, we haven’t received any feature requests that were not already planned by the BTCPay Server dev team (and almost all have already been implemented).

Our single BTCPay Server instance ~200 stores supports , totalling ~5k invoices to date. It continues scaling efficiently without any issue.

# Conclusion

One thing we learned was that it’s crucial to allow users to pay on-chain, even if you prefer Lightning Network. We’ve found some visitors to our circular economy don’t yet have a Lightning wallet. They see the Bitcoin Accepted Here sticker at a store, get excited because they have Bitcoin (usually on Coinbase), but then scan a Lightning QR and can’t pay the merchant. Once we added On-chain capabilities for merchants using BTCPay Server, we noticed an uptick in payments.

You can download a PDF of this case study on this link (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+This integration greatly enhanced the user experience for merchants. BTCPay Server allows them to create multiple Point of Sales (say if they have multiple locations) and track them separately, integrate with popular ecommerce platforms, have a login to view/export invoices to Excel for accounting, and accept payments on-chain in addition to Lightning.

# Results

We have received far fewer support requests than expected after our integration with BTCPay Server. The whole process is pretty seamless & intuitive. Any business owner can start accepting Bitcoin payments in <2 minutes. To date, we haven’t received any feature requests that were not already planned by the BTCPay Server dev team (and almost all have already been implemented).

Our single BTCPay Server instance ~200 stores supports , totalling ~5k invoices to date. It continues scaling efficiently without any issue.

# Conclusion

One thing we learned was that it’s crucial to allow users to pay on-chain, even if you prefer Lightning Network. We’ve found some visitors to our circular economy don’t yet have a Lightning wallet. They see the Bitcoin Accepted Here sticker at a store, get excited because they have Bitcoin (usually on Coinbase), but then scan a Lightning QR and can’t pay the merchant. Once we added On-chain capabilities for merchants using BTCPay Server, we noticed an uptick in payments.

You can download a PDF of this case study on this link (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/case-study-technical-prism-sideshift/index.html b/case-study-technical-prism-sideshift/index.html index f2f111da..f8e93566 100644 --- a/case-study-technical-prism-sideshift/index.html +++ b/case-study-technical-prism-sideshift/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

Recently, we published a case study highlighting the success of the Baltic Honey Badger 2023 (opens new window) - a Bitcoin conference where all merchants exclusively used Bitcoin to facilitate payments for food and drinks.

In this post, we're diving behind the scenes of what happened. We'll provide a step-by-step guide on how you can replicate this – by setting up a BTCPay Server and providing individual stores for each merchant.

All technology necessary for this setup is under MIT license, and code is fully available on GitHub:

# Video Guide

If you would rather watch a video than read a blog post, you're in luck! You can watch Rockstar Dev execute the instructions from this video and show the setup in action.

# Launch Your BTCPay Server Instance

Before anything else, you’ll need to ensure you have a BTCPay Server instance running. Fortunately, several reputable hosting providers now provide wizards that make this very easy. Our Deploying BTCPay Server documentation (opens new window) lists six noteworthy options:

  • LunaNode
  • Voltage Cloud
  • Clovyr
  • Dream Lab Network
  • Azure
  • Google Cloud

For the purposes of this guide, we'll use LunaNode. It’s the oldest web wizard that supports BTCPay Server deployments (opens new window), all for a reasonable monthly fee of around $15.

Start by registering an account with LunaNode. Create your API keys, then proceed to https://launchbtcpay.lunanode.com (opens new window).

Our Deploying BTCPay - LunaNode Web-Wizard (opens new window) article will guide you through the remaining deployment steps.

# Account Creation and Plugin Installation

With your instance now active and ready, create the main administrative account (opens new window) and log in. Upon this being successful completed, you'll be prompted to create a store (opens new window). Use this store as your primary one - for demonstration and initial testing. This way you can ensure you're familiar with the system before onboarding the merchants.

Next, turn your attention to the necessary plugins. Navigate to the 'Manage Plugins' page and install the following:

  • LN Prism plugin (version 1.1.18 or higher)
  • SideShift plugin (version 1.1.7 or higher)

Once you've added these plugins, you'll be prompted to restart the server. Kindly do so to ensure the changes take effect.

# Setting Up Your Demo Store

To make certain your the upcoming setup operates smoothly, a few configurations are required:

Access the 'Settings -> Rates' and configure the spread to around 2%. This adjustment aims to cover Sideshift transaction fees.

Furthermore, visit 'Settings > Payout Processors'. Here, configure the Payout Processor for Lightning and activate the 'Process approved payouts instantly' option. If you're looking to have faster retries in the event of a hiccup, you can set the interval to less than 60 minutes.

# Harnessing the Power of Lightning Payments

Each BTCPay Server comes with an integrated Lightning node, empowering you to accept Bitcoin via Lightning. But to actually start doing receiving sats - you would need to open channels and manage incoming liquidity.

That's precisely why BTCPay provides support for connecting to remote nodes using different standards. For this guide we will use LNDHub to connect to Alby account. This approach is beneficial for those less tech-savvy - merchants can quickly get setup, sidestepping complexities of the Lightning network.

Here's how you can set it up:

  1. Have merchants visit https://getalby.com (opens new window) and register an account.
  2. After logging in, they need to head over to the Wallet page at https://getalby.com/node (opens new window).
  3. Scroll to the 'Wallet Connection Credentials' section and select "Show your connection credentials."
  4. This action will provide you with an LNDHub connection string. Copy this string.
  5. Paste this string into the Lightning settings section of your BTCPay Server Demo Store.

Voila! Merchants are now set to receive lightning payments, while Alby handles the details of managing liquidity since their node is being utilized.

It is worthy to note that you as the administrator of the BTCPay Server will have access to funds in the merchant's Alby account through the LNDHub connection string.

This is why in the next step we will set up a Prism. The idea being that Bitcoin remains on Alby only until it reaches a certain threshold (we suggest 100,000 sats). Once this amount accrues, it should get forwarded to a destination under the merchant's (could be another lightning address).

# Setting Up a Wallet for Stablecoins & Creating a Prism Destination for Conversion

When it comes to merchants at events, there's often a common concern: hedging against the wild swings of price volatility. Even those that are game for holding onto Bitcoin earnings, want to ensure that when it comes to fixed costs of their vendors, they are covered on every sale.

In this guide we will showcase how Prism can be setup so that:

  • 80% of incoming sats will be converted to stablecoin
  • 10% will be sent to another lightning address
  • 10% will stay on the server for demo purposes

We first need to set up a wallet for stablecoins. We will be using Blockstream Green to accept Liquid USDT. Download it for:

Once you install the wallet, ensure that seed phrase is backed up. Then tap on the Receive button and switch asset to Liquid Tether USD. You will get an address that can now be utilized for accepting stablecoins.

Before we proceed further we need to generate a Sideshift destination which will convert 80% of incoming sats into USDT on Liquid. An important caveat here is that both your location and the BTCPay Server's hosting site need to be outside of the US. SideShift's operations don't extend to US territories, and attempting access will trigger an 'Access denied' notification.

Beyond that, be aware that each conversion incurs around 2% for Sideshift fee + on-chain transaction fee . So for every 1000 sats, you’ll be paying 20 in order for merchants to receive stablecoin in their Green Wallet.

On top of that you need to be aware of Lightning routing fees. Alby right now doesn’t take any percentage for incoming payments, but while forwarding sats from Alby node to Sideshift - you may see ~0.5% fees charged depending on channels used. We’ll talk more about this in the following sections - where we will also be able to configure maximum fees we’re willing to pay.

For now - let’s get back to setup:

  1. Navigate to Prism Plugin page and click on Generation Sideshift destination button
  2. Select Tether (liquid) from the “Which coin should Sideshift send you” dropdown
  3. Enter Liquid USDT receiving address you got from Green wallet
  4. Click on Generate code

You'll receive an LNURL address, specifically designed for upcoming swaps. Make sure to copy both the LNURL address and the SideShift order URL, and store them in a safe place for later use.

# Setting up Prism

Now it’s time to complete the configuration of Prism:

  1. Click on the Add Prism button.

  2. Set the source to *. This ensures that prism manages all LN payments to the store

  3. Navigate to the Select destination to configure dropdown and select Create new destination

    1. Destination Id: Input any desired alias for this destination.
    2. Destination: Enter the LNURL address you obtained from Sideshift.
    3. Sat Threshold: Check the minimums for conversion at the chosen Sideshift destination. Given the current transaction fee market, consider setting it between 50,000 and 100,000 sats.
    4. Reserve fee: in percentage. This depends on the channels from your LN wallet. If you boast a robust liquidity route to Sideshift, you can set this as low as 0. This is what we talked about in the previous section about Lightning fees. For this guide, we’ll set it at 1.
  1. We can do the same for lightning address, create another destination using this data:

    1. Id: OpenSats
    2. Destination: opensats@vlt.ge
    3. Sat threshold: 10,000
    4. Reserve fee: 1
  2. Click Add under the Destination section

    1. Choose the Sideshift destination and set the percentage to 80%
    2. Click Add under Destination once more
    3. This time, select the OpenSats destination and set the percentage to 10%
  3. To activate Prism, tick the Enabled checkbox at the top

  4. Lastly, click Save button at the bottom

Your Prism is now set, and you're primed to accept Lightning payments and redirect them to various destinations.

# Test your payments with Point of Sale app

To experience firsthand the system you've set up, head over to the Point of Sale plugin and create a new POS. For the sake of this demonstration, the only modification we'll undertake is opting for the Keypad view, to have flexibility in testing various payment amounts.

Once inside the View, key in a dollar amount of your choice to test payments. To keep it simple, enter an amount that surpasses the minimum sats threshold you've predefined for forwarding. This way, you avoid the need to execute multiple payments to witness Prism in action.

All Prism's forwarding activities can be easily tracked under Off-Chain Payouts, accessible via the Payouts menu on the left. Also, keep an eye out for notifications which pop up next to the bell icon. Here's a sneak peek into how your Prism forwarding list might appear:

# Conclusion

The showcased setup allows you to easily onboard any number of merchants with a single instance of BTCPay Server, and provide them with technology necessary to accept Bitcoin payments and stablecoins. Again - we recommend that you set up Prisms to forward to merchant’s custody with minimal, practical amounts that work in your fee market.

Reflecting on our real-world application of this setup at the Baltic Honey Badger 2023 event in Riga, it's noteworthy to mention that onboarding 20 merchants didn't place any discernible load on the server. Seemingly we could’ve handled orders of magnitude more without any problems.

If you decide to implement this setup for your event, we would love to hear from you! Especially if you venture beyond the 20-merchant mark that we have set. We would love to create and showcase a list of all those that have helped in the battle of taking payment volumes over from legacy fiat rails onto the Bitcoin Lightning network.

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Recently, we published a case study highlighting the success of the Baltic Honey Badger 2023 (opens new window) - a Bitcoin conference where all merchants exclusively used Bitcoin to facilitate payments for food and drinks.

In this post, we're diving behind the scenes of what happened. We'll provide a step-by-step guide on how you can replicate this – by setting up a BTCPay Server and providing individual stores for each merchant.

All technology necessary for this setup is under MIT license, and code is fully available on GitHub:

# Video Guide

If you would rather watch a video than read a blog post, you're in luck! You can watch Rockstar Dev execute the instructions from this video and show the setup in action.

# Launch Your BTCPay Server Instance

Before anything else, you’ll need to ensure you have a BTCPay Server instance running. Fortunately, several reputable hosting providers now provide wizards that make this very easy. Our Deploying BTCPay Server documentation (opens new window) lists six noteworthy options:

  • LunaNode
  • Voltage Cloud
  • Clovyr
  • Dream Lab Network
  • Azure
  • Google Cloud

For the purposes of this guide, we'll use LunaNode. It’s the oldest web wizard that supports BTCPay Server deployments (opens new window), all for a reasonable monthly fee of around $15.

Start by registering an account with LunaNode. Create your API keys, then proceed to https://launchbtcpay.lunanode.com (opens new window).

Our Deploying BTCPay - LunaNode Web-Wizard (opens new window) article will guide you through the remaining deployment steps.

# Account Creation and Plugin Installation

With your instance now active and ready, create the main administrative account (opens new window) and log in. Upon this being successful completed, you'll be prompted to create a store (opens new window). Use this store as your primary one - for demonstration and initial testing. This way you can ensure you're familiar with the system before onboarding the merchants.

Next, turn your attention to the necessary plugins. Navigate to the 'Manage Plugins' page and install the following:

  • LN Prism plugin (version 1.1.18 or higher)
  • SideShift plugin (version 1.1.7 or higher)

Once you've added these plugins, you'll be prompted to restart the server. Kindly do so to ensure the changes take effect.

# Setting Up Your Demo Store

To make certain your the upcoming setup operates smoothly, a few configurations are required:

Access the 'Settings -> Rates' and configure the spread to around 2%. This adjustment aims to cover Sideshift transaction fees.

Furthermore, visit 'Settings > Payout Processors'. Here, configure the Payout Processor for Lightning and activate the 'Process approved payouts instantly' option. If you're looking to have faster retries in the event of a hiccup, you can set the interval to less than 60 minutes.

# Harnessing the Power of Lightning Payments

Each BTCPay Server comes with an integrated Lightning node, empowering you to accept Bitcoin via Lightning. But to actually start doing receiving sats - you would need to open channels and manage incoming liquidity.

That's precisely why BTCPay provides support for connecting to remote nodes using different standards. For this guide we will use LNDHub to connect to Alby account. This approach is beneficial for those less tech-savvy - merchants can quickly get setup, sidestepping complexities of the Lightning network.

Here's how you can set it up:

  1. Have merchants visit https://getalby.com (opens new window) and register an account.
  2. After logging in, they need to head over to the Wallet page at https://getalby.com/node (opens new window).
  3. Scroll to the 'Wallet Connection Credentials' section and select "Show your connection credentials."
  4. This action will provide you with an LNDHub connection string. Copy this string.
  5. Paste this string into the Lightning settings section of your BTCPay Server Demo Store.

Voila! Merchants are now set to receive lightning payments, while Alby handles the details of managing liquidity since their node is being utilized.

It is worthy to note that you as the administrator of the BTCPay Server will have access to funds in the merchant's Alby account through the LNDHub connection string.

This is why in the next step we will set up a Prism. The idea being that Bitcoin remains on Alby only until it reaches a certain threshold (we suggest 100,000 sats). Once this amount accrues, it should get forwarded to a destination under the merchant's (could be another lightning address).

# Setting Up a Wallet for Stablecoins & Creating a Prism Destination for Conversion

When it comes to merchants at events, there's often a common concern: hedging against the wild swings of price volatility. Even those that are game for holding onto Bitcoin earnings, want to ensure that when it comes to fixed costs of their vendors, they are covered on every sale.

In this guide we will showcase how Prism can be setup so that:

  • 80% of incoming sats will be converted to stablecoin
  • 10% will be sent to another lightning address
  • 10% will stay on the server for demo purposes

We first need to set up a wallet for stablecoins. We will be using Blockstream Green to accept Liquid USDT. Download it for:

Once you install the wallet, ensure that seed phrase is backed up. Then tap on the Receive button and switch asset to Liquid Tether USD. You will get an address that can now be utilized for accepting stablecoins.

Before we proceed further we need to generate a Sideshift destination which will convert 80% of incoming sats into USDT on Liquid. An important caveat here is that both your location and the BTCPay Server's hosting site need to be outside of the US. SideShift's operations don't extend to US territories, and attempting access will trigger an 'Access denied' notification.

Beyond that, be aware that each conversion incurs around 2% for Sideshift fee + on-chain transaction fee . So for every 1000 sats, you’ll be paying 20 in order for merchants to receive stablecoin in their Green Wallet.

On top of that you need to be aware of Lightning routing fees. Alby right now doesn’t take any percentage for incoming payments, but while forwarding sats from Alby node to Sideshift - you may see ~0.5% fees charged depending on channels used. We’ll talk more about this in the following sections - where we will also be able to configure maximum fees we’re willing to pay.

For now - let’s get back to setup:

  1. Navigate to Prism Plugin page and click on Generation Sideshift destination button
  2. Select Tether (liquid) from the “Which coin should Sideshift send you” dropdown
  3. Enter Liquid USDT receiving address you got from Green wallet
  4. Click on Generate code

You'll receive an LNURL address, specifically designed for upcoming swaps. Make sure to copy both the LNURL address and the SideShift order URL, and store them in a safe place for later use.

# Setting up Prism

Now it’s time to complete the configuration of Prism:

  1. Click on the Add Prism button.

  2. Set the source to *. This ensures that prism manages all LN payments to the store

  3. Navigate to the Select destination to configure dropdown and select Create new destination

    1. Destination Id: Input any desired alias for this destination.
    2. Destination: Enter the LNURL address you obtained from Sideshift.
    3. Sat Threshold: Check the minimums for conversion at the chosen Sideshift destination. Given the current transaction fee market, consider setting it between 50,000 and 100,000 sats.
    4. Reserve fee: in percentage. This depends on the channels from your LN wallet. If you boast a robust liquidity route to Sideshift, you can set this as low as 0. This is what we talked about in the previous section about Lightning fees. For this guide, we’ll set it at 1.
  1. We can do the same for lightning address, create another destination using this data:

    1. Id: OpenSats
    2. Destination: opensats@vlt.ge
    3. Sat threshold: 10,000
    4. Reserve fee: 1
  2. Click Add under the Destination section

    1. Choose the Sideshift destination and set the percentage to 80%
    2. Click Add under Destination once more
    3. This time, select the OpenSats destination and set the percentage to 10%
  3. To activate Prism, tick the Enabled checkbox at the top

  4. Lastly, click Save button at the bottom

Your Prism is now set, and you're primed to accept Lightning payments and redirect them to various destinations.

# Test your payments with Point of Sale app

To experience firsthand the system you've set up, head over to the Point of Sale plugin and create a new POS. For the sake of this demonstration, the only modification we'll undertake is opting for the Keypad view, to have flexibility in testing various payment amounts.

Once inside the View, key in a dollar amount of your choice to test payments. To keep it simple, enter an amount that surpasses the minimum sats threshold you've predefined for forwarding. This way, you avoid the need to execute multiple payments to witness Prism in action.

All Prism's forwarding activities can be easily tracked under Off-Chain Payouts, accessible via the Payouts menu on the left. Also, keep an eye out for notifications which pop up next to the bell icon. Here's a sneak peek into how your Prism forwarding list might appear:

# Conclusion

The showcased setup allows you to easily onboard any number of merchants with a single instance of BTCPay Server, and provide them with technology necessary to accept Bitcoin payments and stablecoins. Again - we recommend that you set up Prisms to forward to merchant’s custody with minimal, practical amounts that work in your fee market.

Reflecting on our real-world application of this setup at the Baltic Honey Badger 2023 event in Riga, it's noteworthy to mention that onboarding 20 merchants didn't place any discernible load on the server. Seemingly we could’ve handled orders of magnitude more without any problems.

If you decide to implement this setup for your event, we would love to hear from you! Especially if you venture beyond the 20-merchant mark that we have set. We would love to create and showcase a list of all those that have helped in the battle of taking payment volumes over from legacy fiat rails onto the Bitcoin Lightning network.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/case-study-voltage/index.html b/case-study-voltage/index.html index f9513cc5..590caf85 100644 --- a/case-study-voltage/index.html +++ b/case-study-voltage/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

Voltage is a Bitcoin Development Platform and infrastructure provider that enables engineers, developers, and business owners to take full control over their Bitcoin experience.

You can download a PDF of this case study on this link (opens new window).

Voltage (opens new window) offers BTCPay Server instances to anyone with a Voltage account. When you have a BTCPay Server with Voltage, you can build a donation button, webshop, crowdfund, and more. Further, if you have a lightning node on Voltage, it will connect to your BTCPay Server instance seamlessly, providing a near frictionless non-custodial bitcoin-native commerce platform.

# Needs and Goals

Voltage (opens new window) is a bitcoin-focused business. As such, there needs to be a way to accept Bitcoin from customers for Voltage billing and give customers the maximum amount of freedom in a non-custodial manner to utilize their lightning node infrastructure. We believe that BTCPay Server is the most robust solution for commerce on Bitcoin while maintaining the core Bitcoin ethos of permissionless, censorship-resistant payments.

# Choice of BTCPay Server

Nearly all other Bitcoin commerce solutions have some custodial KYC component. This is something that we wish to avoid at Voltage. With those services put aside, the competition for Bitcoin native commerce platforms that are open source is relatively slim. BTCPay Server’s core ethos and mission align perfectly with our own, and that made the choice to use BTCPay Server fairly easy. On top of that, the sheer amount of features and customizability of BTCPay Server is unmatched in the industry.

# Implementation

  • Integrating BTCPay Server into Voltage was fairly easy. We use the standard open source tools, like the Docker Compose repository (opens new window). We use the APIs (opens new window) that come default with BTCPay Server to administer the server on behalf of our users. BTCPay Server comes with all the features and settings needed out of the box. It’s been simple and easy to use.
  • Challenges: At Voltage, we experience scale beyond the standard deployment of BTCPay Server. For those reasons, we had to be prepared. To best ensure our customer’s data, we switched out the default deployment of the Postgres database for our own Postgres installation which is highly available and takes frequent backups.

# Features and Benefits

An improvement over the previous system: BTCPay Server has been a part of Voltage since day one. It was deployed as the primary software to accept Bitcoin payments from Voltage’s first customers and has stayed with us ever since. Shortly after launch, BTCPay Server user accounts were offered as an additional service to Voltage users at a low cost and we still do to this day.

# Results

  • Outcomes: Simple BTC payment checkout for our customers + now all of our customers can spin up a BTCPay instance in minutes and deploy without technical know-how.
  • Data: As of October 2023 Voltage is doing 45,000+ transactions monthly.
  • User Feedback: We made a video series from some of our customers. You can watch those here (opens new window), and here (opens new window).

# Conclusion

Learnings: The fastest and easiest way for us to accept payments is BTCPay Server. We also have found that customers love being able to spin up BTCPay quickly without having to learn the process of doing it themselves. It is a very popular product that we get new users for daily.

Future Prospects: BTCPay will continue to be the bitcoin payment infra we use to accept bitcoin-denominated payment processing. We are also excited for updates that our customers can use and experience.

You can download a PDF of this case study on this link (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Voltage is a Bitcoin Development Platform and infrastructure provider that enables engineers, developers, and business owners to take full control over their Bitcoin experience.

You can download a PDF of this case study on this link (opens new window).

Voltage (opens new window) offers BTCPay Server instances to anyone with a Voltage account. When you have a BTCPay Server with Voltage, you can build a donation button, webshop, crowdfund, and more. Further, if you have a lightning node on Voltage, it will connect to your BTCPay Server instance seamlessly, providing a near frictionless non-custodial bitcoin-native commerce platform.

# Needs and Goals

Voltage (opens new window) is a bitcoin-focused business. As such, there needs to be a way to accept Bitcoin from customers for Voltage billing and give customers the maximum amount of freedom in a non-custodial manner to utilize their lightning node infrastructure. We believe that BTCPay Server is the most robust solution for commerce on Bitcoin while maintaining the core Bitcoin ethos of permissionless, censorship-resistant payments.

# Choice of BTCPay Server

Nearly all other Bitcoin commerce solutions have some custodial KYC component. This is something that we wish to avoid at Voltage. With those services put aside, the competition for Bitcoin native commerce platforms that are open source is relatively slim. BTCPay Server’s core ethos and mission align perfectly with our own, and that made the choice to use BTCPay Server fairly easy. On top of that, the sheer amount of features and customizability of BTCPay Server is unmatched in the industry.

# Implementation

  • Integrating BTCPay Server into Voltage was fairly easy. We use the standard open source tools, like the Docker Compose repository (opens new window). We use the APIs (opens new window) that come default with BTCPay Server to administer the server on behalf of our users. BTCPay Server comes with all the features and settings needed out of the box. It’s been simple and easy to use.
  • Challenges: At Voltage, we experience scale beyond the standard deployment of BTCPay Server. For those reasons, we had to be prepared. To best ensure our customer’s data, we switched out the default deployment of the Postgres database for our own Postgres installation which is highly available and takes frequent backups.

# Features and Benefits

An improvement over the previous system: BTCPay Server has been a part of Voltage since day one. It was deployed as the primary software to accept Bitcoin payments from Voltage’s first customers and has stayed with us ever since. Shortly after launch, BTCPay Server user accounts were offered as an additional service to Voltage users at a low cost and we still do to this day.

# Results

  • Outcomes: Simple BTC payment checkout for our customers + now all of our customers can spin up a BTCPay instance in minutes and deploy without technical know-how.
  • Data: As of October 2023 Voltage is doing 45,000+ transactions monthly.
  • User Feedback: We made a video series from some of our customers. You can watch those here (opens new window), and here (opens new window).

# Conclusion

Learnings: The fastest and easiest way for us to accept payments is BTCPay Server. We also have found that customers love being able to spin up BTCPay quickly without having to learn the process of doing it themselves. It is a very popular product that we get new users for daily.

Future Prospects: BTCPay will continue to be the bitcoin payment infra we use to accept bitcoin-denominated payment processing. We are also excited for updates that our customers can use and experience.

You can download a PDF of this case study on this link (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/category/announcements/index.html b/category/announcements/index.html index fefbc955..136f509b 100644 --- a/category/announcements/index.html +++ b/category/announcements/index.html @@ -12,7 +12,7 @@ - + @@ -222,6 +222,6 @@ Unbank

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

- + diff --git a/category/announcements/page/2/index.html b/category/announcements/page/2/index.html index bd0a5ee4..50e2fb77 100644 --- a/category/announcements/page/2/index.html +++ b/category/announcements/page/2/index.html @@ -12,7 +12,7 @@ - + @@ -158,6 +158,6 @@ Unbank

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

- + diff --git a/category/case-studies/index.html b/category/case-studies/index.html index f13ac769..6466bf97 100644 --- a/category/case-studies/index.html +++ b/category/case-studies/index.html @@ -12,7 +12,7 @@ - + @@ -208,6 +208,6 @@ Unbank

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

- + diff --git a/category/features/index.html b/category/features/index.html index b4528a28..d98fa5b7 100644 --- a/category/features/index.html +++ b/category/features/index.html @@ -12,7 +12,7 @@ - + @@ -166,6 +166,6 @@ Unbank

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

- + diff --git a/category/guides/index.html b/category/guides/index.html index ae545cc6..e12630fe 100644 --- a/category/guides/index.html +++ b/category/guides/index.html @@ -12,7 +12,7 @@ - + @@ -138,6 +138,6 @@ Unbank

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

- + diff --git a/category/index.html b/category/index.html index 1526617c..8af24755 100644 --- a/category/index.html +++ b/category/index.html @@ -12,7 +12,7 @@ - + @@ -62,6 +62,6 @@ Unbank

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

- + diff --git a/category/plugins/index.html b/category/plugins/index.html index 0fe6a244..152baf7b 100644 --- a/category/plugins/index.html +++ b/category/plugins/index.html @@ -12,7 +12,7 @@ - + @@ -106,6 +106,6 @@ Unbank

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

- + diff --git a/category/releases/index.html b/category/releases/index.html index b3c4ad80..28a0b3ff 100644 --- a/category/releases/index.html +++ b/category/releases/index.html @@ -12,7 +12,7 @@ - + @@ -222,6 +222,6 @@ Unbank

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

- + diff --git a/category/releases/page/2/index.html b/category/releases/page/2/index.html index a1389797..b7695b6b 100644 --- a/category/releases/page/2/index.html +++ b/category/releases/page/2/index.html @@ -12,7 +12,7 @@ - + @@ -214,6 +214,6 @@ Unbank

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

- + diff --git a/category/releases/page/3/index.html b/category/releases/page/3/index.html index 90964853..4a812036 100644 --- a/category/releases/page/3/index.html +++ b/category/releases/page/3/index.html @@ -12,7 +12,7 @@ - + @@ -158,6 +158,6 @@ Unbank

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

- + diff --git a/category/stories/index.html b/category/stories/index.html index 34669cdb..641c16f2 100644 --- a/category/stories/index.html +++ b/category/stories/index.html @@ -12,7 +12,7 @@ - + @@ -222,6 +222,6 @@ Unbank

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

- + diff --git a/category/stories/page/2/index.html b/category/stories/page/2/index.html index bcdbea43..c5760a3e 100644 --- a/category/stories/page/2/index.html +++ b/category/stories/page/2/index.html @@ -12,7 +12,7 @@ - + @@ -88,6 +88,6 @@ Unbank

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

- + diff --git a/dg-grant-2019/index.html b/dg-grant-2019/index.html index 4de866ac..9f7d5dce 100644 --- a/dg-grant-2019/index.html +++ b/dg-grant-2019/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

I am proud to announce that BTCPay Foundation (opens new window) have just received our third grant of 30 000 USD from Digital Garage Inc. (DG).

I briefly announced the DG support in Riga during the Baltic Honeybadger conference. Funny enough, I learned of the agreement 10 minutes before going on stage (opens new window), which got our entire community in Riga quite excited.

This partnership touches me personally, as for those who still don't know, DG is the mother company of the company I am working for in Japan: DG Lab (opens new window).

DG Lab provided me the much needed freedom, time and support to work on BTCPayServer. I even wrote the famous tweet (opens new window) that kicked off BTCPayServer while I was in our office.

Another project on which BTCPayServer depends for tracking bitcoin payments, NBXplorer (opens new window), is a project that originated from DG Lab around 8 months before BTCPayServer was born. Actually, not only BTCPayServer, but NBXplorer (opens new window), the UTXO tracker BTCPayServer is depending on, was originally a block explorer for a multi asset Elements mobile wallet that DG Lab team created for the BC² conference.

A fair (most) amount of code written for BTCPayServer has been written thanks to DG Lab. I could not be more happy that they not only continue to support the project, but double down on it.

DG is not only supporting BTCPay Server and myself, but also a whole team of Bitcoin contributors as well as advocating Bitcoin development in Japan. We are making (almost) yearly conference in Tokyo called BC² aimed to get more developers into Bitcoin. The next BC² will be held in Tokyo, and will include BTCPayServer and hack0 development. If you plan a trip to Tokyo during the first semester of 2020, stay tuned on that!

In the end, I am just happy that the structure around the project is improving and that everything grows organically. We've managed to partner up with businesses that truly believe in BTCPayServer and we're humbled by the opportunity to work on improving it every single day 💚.

Nicolas.

If you're a business and would like to become a supporter of BTCPay Server Foundation and help us create an open-financial future for everyone, please get in touch via a contact form on the foundation's website (opens new window).

SUPPORT THE FOUNDATION (opens new window)

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

I am proud to announce that BTCPay Foundation (opens new window) have just received our third grant of 30 000 USD from Digital Garage Inc. (DG).

I briefly announced the DG support in Riga during the Baltic Honeybadger conference. Funny enough, I learned of the agreement 10 minutes before going on stage (opens new window), which got our entire community in Riga quite excited.

This partnership touches me personally, as for those who still don't know, DG is the mother company of the company I am working for in Japan: DG Lab (opens new window).

DG Lab provided me the much needed freedom, time and support to work on BTCPayServer. I even wrote the famous tweet (opens new window) that kicked off BTCPayServer while I was in our office.

Another project on which BTCPayServer depends for tracking bitcoin payments, NBXplorer (opens new window), is a project that originated from DG Lab around 8 months before BTCPayServer was born. Actually, not only BTCPayServer, but NBXplorer (opens new window), the UTXO tracker BTCPayServer is depending on, was originally a block explorer for a multi asset Elements mobile wallet that DG Lab team created for the BC² conference.

A fair (most) amount of code written for BTCPayServer has been written thanks to DG Lab. I could not be more happy that they not only continue to support the project, but double down on it.

DG is not only supporting BTCPay Server and myself, but also a whole team of Bitcoin contributors as well as advocating Bitcoin development in Japan. We are making (almost) yearly conference in Tokyo called BC² aimed to get more developers into Bitcoin. The next BC² will be held in Tokyo, and will include BTCPayServer and hack0 development. If you plan a trip to Tokyo during the first semester of 2020, stay tuned on that!

In the end, I am just happy that the structure around the project is improving and that everything grows organically. We've managed to partner up with businesses that truly believe in BTCPayServer and we're humbled by the opportunity to work on improving it every single day 💚.

Nicolas.

If you're a business and would like to become a supporter of BTCPay Server Foundation and help us create an open-financial future for everyone, please get in touch via a contact form on the foundation's website (opens new window).

SUPPORT THE FOUNDATION (opens new window)

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/feed.atom b/feed.atom index 24b3bf71..52d12255 100644 --- a/feed.atom +++ b/feed.atom @@ -2,7 +2,7 @@ https://blog.btcpayserver.org BTCPay Server Blog - 2024-10-30T14:39:54.134Z + 2024-11-02T05:57:43.167Z https://github.com/webmasterish/vuepress-plugin-feed diff --git a/how-to-accept-bitcoin-donations/index.html b/how-to-accept-bitcoin-donations/index.html index deeeab45..3f00a5db 100644 --- a/how-to-accept-bitcoin-donations/index.html +++ b/how-to-accept-bitcoin-donations/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

If you're a non-profit, charity, content creator, developer or just a regular Joe trying to accept Bitcoin donations, you're at the right place.

Accepting censorship-resistant donations is one of the greatest use-cases for Bitcoin, however, very few people do it in a truly private and decentralized way.

Displaying a static address or a QR code on your webpage may look like a walk in the park, however having a single address is a notoriously poor privacy practice. Re-using a single address is simply bad, not only for receiving part but for the sender as well. Since privacy likes company, by re-using the address (opens new window) you're weakening privacy for a large number of participants in the blockchain. Most Bitcoiners care about privacy and your chances of accumulating BTC are higher if it does not invade the privacy of the network participants.

In this article, we will focus on how to use BTCPay Server, a decentralized, fully open-source, cryptocurrency payment processor to accept Bitcoin donations. By using BTCPay, you're avoiding address-reuse (opens new window) and involvement of a third-party.

Furthermore, if you self-host BTCPay Server, you're running a full node (opens new window), which means transaction information is not leaked to a third-party and every consensus rule is validated. Don't trust - verify.

Most importantly, there will be no fees of any sort, since you'll be operating as your own payment processor. Funds go straight from donor to your wallet.

This article provides an overview and examples of ways in which individuals, businesses or non-profit organizations can use BTCPay to accept donations. Not sure yet which feature is best for you? No need to decide now, BTCPay comes equipped with all the following features. Try them all out for yourself. For exact step by step instructions on how to use a particular feature, check the installation links and videos in each section.

If you would like to learn how to deploy BTCPay, check out our deployment documentation. (opens new window) For a general overview and features take a look at our website (opens new window).

# Donation Button

The most common way to accept tips and donations, regardless of the CMS powering your website, is a tipping (pay) button. Create and customize a tipping button according to the look of your website. Easily embed it into an HTML page.

Out of the box, we offer 3 different types of tipping buttons:

  • Fixed
  • Custom
  • Slider

To create a pay button, go to your BTCPay Server Store Settings > Pay Button. Allow invoice creation and customize the appearance and amounts. Video below guides you through the process of creating and also embedding a donation button into your web-page. The process is the same regardless of the button type.

# Crowdfunding

Crowdfunding is an application which you can launch from BTCPay Server interface that allows you to create a self-hosted funding campaign, similar to Kickstarter or Indiegogo. Unlike traditional crowdfunding platforms, the creator of the campaign is the owner of the platform. Funds go directly to the creator’s wallet without any fees.

The Crowdfund App is highly customizable. Users can modify the appearance, donor perks, denomination type, crowdfund goals, etc. Everyone can see live contribution stats and even custom sounds when someone donates. BTCPay's Crowdfunding App was recently used as a donation platform for the #WeAreAllHodlonaut (opens new window) community crowdfunding campaign.

# Payment Requests

While primarily made for freelancers, the Payment Request feature in BTCPay can be used by charities for invoicing and getting paid or donations in Bitcoin just by sharing a link.

Funds paid to a payment request use the exchange rate at the time of payment. This allows users to make payments at their convenience without having to negotiate or verify exchange rates with the store owner at the time of payment.

Users can pay requests in partial payments and the request will remain valid until it is paid in full or if the store owner requires an expiration time. Addresses are never reused. A new address is generated each time the user clicks pay to create an invoice for the payment request.

Want to see this feature in action? Check out this Live Payment Request (opens new window) for donations to purchase a Trezor One wallet for one of our BTCPay developers to implement Trezor as a supported wallet in BTCPay.

# LibrePatron (for recurring payments)

One way you can accept donations on a regular basis is to use subscriptions + Bitcoin with the LibrePatron feature. At the moment, automatically withdrawing recurring payments in Bitcoin can't be achieved due to protocol limitations, but you can send recurring requests via the email to subscribers using this feature.

LibrePatron is a self-hosted, open-source Patreon competitor where creators are owners of the entire platform. The software is free and open-source for anyone to use. You can easily install a LibrePatron instance as it's a plugin that uses BTCPay Server to receive Bitcoin payments on a recurring basis.

# Modified Web Point of Sale

Our web point of sale app is used mostly by merchants in retail, but it can be modified slightly to allow users to accept donations.

# Example 1: The Donation Page

When creating a PoS app in BTCPay, make sure to have "cart" option unchecked and add perks for professional looking donation pages. BTCPay will produce the donation page for you as a part of your BTCPay PoS app. No need to purchase extra domains, your BTCPay provides an unlimited number of donation pages for you to use like this one below (opens new window).

# Example 2: Social Media Donation Page

Instead of adding perks to your PoS page, you can create a simple custom tip donation page. It can easily be used for social media accounts. Leave the cart mode turned off and don't add any items to the PoS. Post the link to your PoS in your profile. Start accepting Satoshis directly to your wallet for your awesome memes.

# Summary

The easiest way to accumulate Bitcoin (opens new window) is to start accepting it, any way you can. BTCPay provides so many options and apps for anyone to start receiving BTC payments and donations.

You don't need to have a business degree or an advanced e-commerce store. You just need to create opportunities for yourself to start accepting Bitcoin. Join the diverse community of people who are already trying it out. Share your experiences and ideas for feature improvements in any of our community links. We are constantly improving and building BTCPay together.

If at any point you face issues or have questions, drop by on our community chat (opens new window), where contributors all over the world will try to answer your questions. Our developers would gladly provide our software initial setup help for non-profits and charities.

Written by britttttkelly (opens new window) and pavlenex, (opens new window) proofread by Kukks (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

If you're a non-profit, charity, content creator, developer or just a regular Joe trying to accept Bitcoin donations, you're at the right place.

Accepting censorship-resistant donations is one of the greatest use-cases for Bitcoin, however, very few people do it in a truly private and decentralized way.

Displaying a static address or a QR code on your webpage may look like a walk in the park, however having a single address is a notoriously poor privacy practice. Re-using a single address is simply bad, not only for receiving part but for the sender as well. Since privacy likes company, by re-using the address (opens new window) you're weakening privacy for a large number of participants in the blockchain. Most Bitcoiners care about privacy and your chances of accumulating BTC are higher if it does not invade the privacy of the network participants.

In this article, we will focus on how to use BTCPay Server, a decentralized, fully open-source, cryptocurrency payment processor to accept Bitcoin donations. By using BTCPay, you're avoiding address-reuse (opens new window) and involvement of a third-party.

Furthermore, if you self-host BTCPay Server, you're running a full node (opens new window), which means transaction information is not leaked to a third-party and every consensus rule is validated. Don't trust - verify.

Most importantly, there will be no fees of any sort, since you'll be operating as your own payment processor. Funds go straight from donor to your wallet.

This article provides an overview and examples of ways in which individuals, businesses or non-profit organizations can use BTCPay to accept donations. Not sure yet which feature is best for you? No need to decide now, BTCPay comes equipped with all the following features. Try them all out for yourself. For exact step by step instructions on how to use a particular feature, check the installation links and videos in each section.

If you would like to learn how to deploy BTCPay, check out our deployment documentation. (opens new window) For a general overview and features take a look at our website (opens new window).

# Donation Button

The most common way to accept tips and donations, regardless of the CMS powering your website, is a tipping (pay) button. Create and customize a tipping button according to the look of your website. Easily embed it into an HTML page.

Out of the box, we offer 3 different types of tipping buttons:

  • Fixed
  • Custom
  • Slider

To create a pay button, go to your BTCPay Server Store Settings > Pay Button. Allow invoice creation and customize the appearance and amounts. Video below guides you through the process of creating and also embedding a donation button into your web-page. The process is the same regardless of the button type.

# Crowdfunding

Crowdfunding is an application which you can launch from BTCPay Server interface that allows you to create a self-hosted funding campaign, similar to Kickstarter or Indiegogo. Unlike traditional crowdfunding platforms, the creator of the campaign is the owner of the platform. Funds go directly to the creator’s wallet without any fees.

The Crowdfund App is highly customizable. Users can modify the appearance, donor perks, denomination type, crowdfund goals, etc. Everyone can see live contribution stats and even custom sounds when someone donates. BTCPay's Crowdfunding App was recently used as a donation platform for the #WeAreAllHodlonaut (opens new window) community crowdfunding campaign.

# Payment Requests

While primarily made for freelancers, the Payment Request feature in BTCPay can be used by charities for invoicing and getting paid or donations in Bitcoin just by sharing a link.

Funds paid to a payment request use the exchange rate at the time of payment. This allows users to make payments at their convenience without having to negotiate or verify exchange rates with the store owner at the time of payment.

Users can pay requests in partial payments and the request will remain valid until it is paid in full or if the store owner requires an expiration time. Addresses are never reused. A new address is generated each time the user clicks pay to create an invoice for the payment request.

Want to see this feature in action? Check out this Live Payment Request (opens new window) for donations to purchase a Trezor One wallet for one of our BTCPay developers to implement Trezor as a supported wallet in BTCPay.

# LibrePatron (for recurring payments)

One way you can accept donations on a regular basis is to use subscriptions + Bitcoin with the LibrePatron feature. At the moment, automatically withdrawing recurring payments in Bitcoin can't be achieved due to protocol limitations, but you can send recurring requests via the email to subscribers using this feature.

LibrePatron is a self-hosted, open-source Patreon competitor where creators are owners of the entire platform. The software is free and open-source for anyone to use. You can easily install a LibrePatron instance as it's a plugin that uses BTCPay Server to receive Bitcoin payments on a recurring basis.

# Modified Web Point of Sale

Our web point of sale app is used mostly by merchants in retail, but it can be modified slightly to allow users to accept donations.

# Example 1: The Donation Page

When creating a PoS app in BTCPay, make sure to have "cart" option unchecked and add perks for professional looking donation pages. BTCPay will produce the donation page for you as a part of your BTCPay PoS app. No need to purchase extra domains, your BTCPay provides an unlimited number of donation pages for you to use like this one below (opens new window).

# Example 2: Social Media Donation Page

Instead of adding perks to your PoS page, you can create a simple custom tip donation page. It can easily be used for social media accounts. Leave the cart mode turned off and don't add any items to the PoS. Post the link to your PoS in your profile. Start accepting Satoshis directly to your wallet for your awesome memes.

# Summary

The easiest way to accumulate Bitcoin (opens new window) is to start accepting it, any way you can. BTCPay provides so many options and apps for anyone to start receiving BTC payments and donations.

You don't need to have a business degree or an advanced e-commerce store. You just need to create opportunities for yourself to start accepting Bitcoin. Join the diverse community of people who are already trying it out. Share your experiences and ideas for feature improvements in any of our community links. We are constantly improving and building BTCPay together.

If at any point you face issues or have questions, drop by on our community chat (opens new window), where contributors all over the world will try to answer your questions. Our developers would gladly provide our software initial setup help for non-profits and charities.

Written by britttttkelly (opens new window) and pavlenex, (opens new window) proofread by Kukks (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/how-to-earn-bitcoin-btcpayserver/index.html b/how-to-earn-bitcoin-btcpayserver/index.html index f6d1968f..d7a68889 100644 --- a/how-to-earn-bitcoin-btcpayserver/index.html +++ b/how-to-earn-bitcoin-btcpayserver/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

Don't buy bitcoin - earn it. Why? It's better for your privacy. You're not sharing data with sketchy custodians nor trusting third-parties with your hard-earned funds. Your money, your rules.

By getting paid in BTC, you'll learn to appreciate the true power of self-sovereignty and the freedom that Bitcoin brings.

People getting paid in BTC, have no other choice than to spend it from time to time, helping other merchants in the ecosystem stack sats, organically distributing sats all over the world.

While there are many ways in which you can accumulate bitcoin, in this article, we will focus on showing you how to achieve that by using BTCPay Server.

# Create Bitcoin invoices

This one isn't rocket science. The quickest and easiest way to earn Bitcoin is to start accepting it for the products or services you offer. Freelancers, small business owners, musicians, and many others use a newly-developed feature called payment requests and start (opens new window) stacking sats with no hassle.

Create custom invoices which can be shared with customers by sending a link to the payment request. When the customer opens the link, they will see an invoice which can be customized to suit your business needs.

When payment is made, the payment request uses the exchange rate at the time of payment, which eliminates the volatility risk and allows your clients to pay at their convenience without having to negotiate or verify exchange rates with you at the time of payment.

# Accepting Bitcoin in an online store

Online business owners, can start accepting Bitcoin on-chain or over the Lightning Network in no time. We have a few plugins for e-commerce platforms that allow quick integration of BTCPay instances into an online store.

Plugins are available for the following platforms:

We plan to make more plugins for other platforms depending on community demand. The video below shows how to connect BTCPay with a WooCommerce store.

Don't have an online store? Don't have the technical knowledge to create one? Willing to dedicate a few hours to learn a new skill?

If the answer is yes I have good news for you, our free 18-video series will teach you to build an e-commerce store from scratch and start accepting Bitcoin, by using free and open-source software.

Technically advanced users can use this guide to deploy WooCommerce store from BTCPay (opens new window) Server and run them on a single virtual machine.

# Accept Bitcoin in retail

Brick and mortar store owners can use a built-in Point of Sale web app. Add products and images, set prices and don’t forget to customize. The app is web-based and can be run on old phones and tablets - no need for specialist hardware

Check out the step by step guide to making a PoS. (opens new window) Larger retailers can use our software and integrate it into their existing terminals, but that will require technical know-how. Once our brand-new API is released, it will be much easier than it is now.

# Accepting Bitcoin Donations

Content creators bloggers or charities can utilize the payment button. The button can easily be created from Store Settings > Pay Button, customized and embedded into an HTML page.

Those who don't have a website, but would like to use BTCPay as a Tippin (opens new window) alternative, can customize the point of sale app and make a donation page. (opens new window)

# Launch a crowdfunding campaign

Crowdfunding is an application which you can launch from BTCPay Server interface that allows you to create a self-hosted funding campaign, similar to Kickstarter or Indiegogo. Unlike traditional crowdfunding platforms, the creator of the campaign is the owner of the platform. Funds go directly to the creator’s wallet without any fees.

Users who prefer the re-occurring model and Patreon alternative can use LibrePatron which is a self-hosted Patreon replacement powered by BTCPay.

# Pay Per Article (Journalists and bloggers)

Journalists, bloggers and media outlets can lock their articles behind a Lightning Network paywall and request micropayments from their readers. If you-re using c-lightning implementation, you can copy the exposed node settings into the Lightning Publisher for WordPress. From there, the content can be locked with a simple shortcode. This plugin only works on WordPress websites.

# Become a payment processor

BTCPay provides an open-source technology stack, which you can use to adjust it to your needs. One often overlooked, yet very powerful feature of BTCPay is the ability of self-hosted server owners to allow people to use their server and receive payments through their node. To open your server to others, you need to go to Server Settings > Policies > Enable user registration.

Using BTCPay to become a payment processor for other users opens a whole new world of possibilities. With help and customizations, you can become next BitPay for your local community.

There are a few third-party hosts (opens new window) using this model.

# Sell BTCPay Hardware devices

BTCPay can be hosted on any machine which meets the minimum requirements. It can even be deployed even on a low-powered device like Rasberry Pi (opens new window). When launched, BTCPay automatically creates a full Bitcoin and Lightning node, which makes it a perfect opportunity for hardware engineers to build and sell all sorts of hardware devices running BTCPay and sell Bitcoin and Lightning nodes in a box. If you're interested in running BTCPay on a Raspberry Pi, check our documentation. (opens new window)

Great examples of BTCPay on hardware devices are Nodl (opens new window), Lightning in a box (opens new window), and Jack Mallers from Zap, has developed a hardware PoS solution for merchants (opens new window), powered by BTCPay Server.

# Host BTCPay Servers in a cloud

Recently, HosBill (opens new window) a popular all-in-one software solutions for hosting providers, integrated BTCPay for over 1000 of their enterprise customers, allowing providers who use their CRM software to accept payments via a self-hosted BTCPay. This means that companies using their software can get paid via BTCPay for hosting services they provide to end-customer.

With BTCPay gaining popularity, hosting providers can create 1-click easy deployments and offer customers hosted BTCPay Servers. One example is LunaNode (opens new window), whose dev team have created an easy BTCPay deployment method.

# Develop and provide BTCPay Services

Developers can build applications and offer services on top of BTCPay. Mastering the software opens up a lot of possibilities for game, wallet, or platform developers. Furthermore, programmers can offer software setup and configuration services and earn Bitcoin by providing premium support to enterprises using BTCPay. Regular users of BTCPay can easily provide support or consulting services to businesses as well. Knowledge is power.

# Stacking sats - the self-sovereign way

BTCPay is a powerful tool that can be lots of things to lots of people. If it does not satisfy your business idea out of the box, it's completely open-source and can be tailored to your needs. There are many ways to earn Bitcoin and you don't have to use BTCPay for that. Explore, share ideas and most importantly learn. Your expertise will be a sought-after asset that nobody can take away from you. Oh, and same goes for Bitcoin.

If you have any other ideas on how one can use BTCPay to earn Bitcoin, let us know on Twitter, (opens new window) we'd love to hear from you.

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Don't buy bitcoin - earn it. Why? It's better for your privacy. You're not sharing data with sketchy custodians nor trusting third-parties with your hard-earned funds. Your money, your rules.

By getting paid in BTC, you'll learn to appreciate the true power of self-sovereignty and the freedom that Bitcoin brings.

People getting paid in BTC, have no other choice than to spend it from time to time, helping other merchants in the ecosystem stack sats, organically distributing sats all over the world.

While there are many ways in which you can accumulate bitcoin, in this article, we will focus on showing you how to achieve that by using BTCPay Server.

# Create Bitcoin invoices

This one isn't rocket science. The quickest and easiest way to earn Bitcoin is to start accepting it for the products or services you offer. Freelancers, small business owners, musicians, and many others use a newly-developed feature called payment requests and start (opens new window) stacking sats with no hassle.

Create custom invoices which can be shared with customers by sending a link to the payment request. When the customer opens the link, they will see an invoice which can be customized to suit your business needs.

When payment is made, the payment request uses the exchange rate at the time of payment, which eliminates the volatility risk and allows your clients to pay at their convenience without having to negotiate or verify exchange rates with you at the time of payment.

# Accepting Bitcoin in an online store

Online business owners, can start accepting Bitcoin on-chain or over the Lightning Network in no time. We have a few plugins for e-commerce platforms that allow quick integration of BTCPay instances into an online store.

Plugins are available for the following platforms:

We plan to make more plugins for other platforms depending on community demand. The video below shows how to connect BTCPay with a WooCommerce store.

Don't have an online store? Don't have the technical knowledge to create one? Willing to dedicate a few hours to learn a new skill?

If the answer is yes I have good news for you, our free 18-video series will teach you to build an e-commerce store from scratch and start accepting Bitcoin, by using free and open-source software.

Technically advanced users can use this guide to deploy WooCommerce store from BTCPay (opens new window) Server and run them on a single virtual machine.

# Accept Bitcoin in retail

Brick and mortar store owners can use a built-in Point of Sale web app. Add products and images, set prices and don’t forget to customize. The app is web-based and can be run on old phones and tablets - no need for specialist hardware

Check out the step by step guide to making a PoS. (opens new window) Larger retailers can use our software and integrate it into their existing terminals, but that will require technical know-how. Once our brand-new API is released, it will be much easier than it is now.

# Accepting Bitcoin Donations

Content creators bloggers or charities can utilize the payment button. The button can easily be created from Store Settings > Pay Button, customized and embedded into an HTML page.

Those who don't have a website, but would like to use BTCPay as a Tippin (opens new window) alternative, can customize the point of sale app and make a donation page. (opens new window)

# Launch a crowdfunding campaign

Crowdfunding is an application which you can launch from BTCPay Server interface that allows you to create a self-hosted funding campaign, similar to Kickstarter or Indiegogo. Unlike traditional crowdfunding platforms, the creator of the campaign is the owner of the platform. Funds go directly to the creator’s wallet without any fees.

Users who prefer the re-occurring model and Patreon alternative can use LibrePatron which is a self-hosted Patreon replacement powered by BTCPay.

# Pay Per Article (Journalists and bloggers)

Journalists, bloggers and media outlets can lock their articles behind a Lightning Network paywall and request micropayments from their readers. If you-re using c-lightning implementation, you can copy the exposed node settings into the Lightning Publisher for WordPress. From there, the content can be locked with a simple shortcode. This plugin only works on WordPress websites.

# Become a payment processor

BTCPay provides an open-source technology stack, which you can use to adjust it to your needs. One often overlooked, yet very powerful feature of BTCPay is the ability of self-hosted server owners to allow people to use their server and receive payments through their node. To open your server to others, you need to go to Server Settings > Policies > Enable user registration.

Using BTCPay to become a payment processor for other users opens a whole new world of possibilities. With help and customizations, you can become next BitPay for your local community.

There are a few third-party hosts (opens new window) using this model.

# Sell BTCPay Hardware devices

BTCPay can be hosted on any machine which meets the minimum requirements. It can even be deployed even on a low-powered device like Rasberry Pi (opens new window). When launched, BTCPay automatically creates a full Bitcoin and Lightning node, which makes it a perfect opportunity for hardware engineers to build and sell all sorts of hardware devices running BTCPay and sell Bitcoin and Lightning nodes in a box. If you're interested in running BTCPay on a Raspberry Pi, check our documentation. (opens new window)

Great examples of BTCPay on hardware devices are Nodl (opens new window), Lightning in a box (opens new window), and Jack Mallers from Zap, has developed a hardware PoS solution for merchants (opens new window), powered by BTCPay Server.

# Host BTCPay Servers in a cloud

Recently, HosBill (opens new window) a popular all-in-one software solutions for hosting providers, integrated BTCPay for over 1000 of their enterprise customers, allowing providers who use their CRM software to accept payments via a self-hosted BTCPay. This means that companies using their software can get paid via BTCPay for hosting services they provide to end-customer.

With BTCPay gaining popularity, hosting providers can create 1-click easy deployments and offer customers hosted BTCPay Servers. One example is LunaNode (opens new window), whose dev team have created an easy BTCPay deployment method.

# Develop and provide BTCPay Services

Developers can build applications and offer services on top of BTCPay. Mastering the software opens up a lot of possibilities for game, wallet, or platform developers. Furthermore, programmers can offer software setup and configuration services and earn Bitcoin by providing premium support to enterprises using BTCPay. Regular users of BTCPay can easily provide support or consulting services to businesses as well. Knowledge is power.

# Stacking sats - the self-sovereign way

BTCPay is a powerful tool that can be lots of things to lots of people. If it does not satisfy your business idea out of the box, it's completely open-source and can be tailored to your needs. There are many ways to earn Bitcoin and you don't have to use BTCPay for that. Explore, share ideas and most importantly learn. Your expertise will be a sought-after asset that nobody can take away from you. Oh, and same goes for Bitcoin.

If you have any other ideas on how one can use BTCPay to earn Bitcoin, let us know on Twitter, (opens new window) we'd love to hear from you.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/index.html b/index.html index 1d1b3282..13ed42e4 100644 --- a/index.html +++ b/index.html @@ -12,7 +12,7 @@ - + @@ -220,6 +220,6 @@ Unbank

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

- + diff --git a/interview-with-jeff-vandrew-jr/index.html b/interview-with-jeff-vandrew-jr/index.html index 6f0c0a8b..2a1b6baf 100644 --- a/interview-with-jeff-vandrew-jr/index.html +++ b/interview-with-jeff-vandrew-jr/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

Jeff Vandrew Jr is an Attorney, a CPA and an open-source developer. On top of that, he's the maintainer of the BTCPay python library (opens new window) and a bodybuilder and somehow still has spare time to help out newbies in the BTCPay community. Even though he sounds like a character from the Split movie, Jeff is real. In this quick interview, I wanted to learn more about him, his aspirations and projects and most importantly, to try to figure out how he manages to do all of these things productively.

The interview was co-authored by britttttkelly. (opens new window)

# How did you get into Bitcoin?

Jeff: I'm old, so I'm one of the Bitcoiners that began with an interest in gold! Sound money always had an appeal to me. I did hear vaguely about Bitcoin in the 2009-2011 timeframe, but didn't pay much attention and never did much with it. In 2014, for whatever reason, I was finally sold on the idea and bought in. Bitcoin actually strengthened my interest in sound money as I saw it as dealing with many of gold's flaws.

# How did you manage to connect all of your passions: finance, law, bodybuilding and development?

Being an Attorney and a CPA is cool, and I'm lucky to have leveraged it into a living that gives me a good quality of life, but I wouldn't call it a passion. In fact in the US, I generally discourage students to go to law school, as most lawyers are pretty miserable. I lucked out in avoiding that fate since what I do (tax consulting with an emphasis on Bitcoin) is very specialized and very dissimilar from what most lawyers do. I never have to wear a suit or report to an office or anything like that.

What I really care about is Bitcoin and Bodybuilding. The two aren't all that related to each other, but I did try to combine them with the Bitcoin & Barbells 2019 (opens new window) event that I'm hosting in a few months around the Nakamoto Institute Dinner (get tickets because space is limited!).

I had done some software development in school in the 1990s, but didn't actually get back into it until I felt compelled by my interest in Bitcoin to contribute in a more tangible way.

# What is the Keykeeper IRA?

Jeff: The Keykeeper IRA is my "day job" and real business where I earn a living. It's a structure that allows US residents to purchase Bitcoin using retirement funds while custodying their own private keys. In the US, there are large tax advantages to holding Bitcoin this way, but most competing offerings involve an institution custodying your keys for you. With the Keykeeper IRA, you can get the benefits of holding Bitcoin in an IRA without having to trust a third party with your keys.

In the US, if you don't hold your Bitcoin in an IRA or 401(k), any time you spend or sell Bitcoin you have to pay capital gains tax on the difference between the purchase price you paid for that Bitcoin and the fair market value on the date of spend or sale. The Keykeeper IRA can be done as a Roth IRA (which eliminates all tax on the Bitcoin forever) or a Traditional IRA (which allows use of already tax-deferred funds from an old employer 401(k)). You can trade in and out of Bitcoin and other investments as much as you want, but you can't spend IRA funds without penalty for personal reasons until you hit age 59.5.

# How did you discover BTCPay and what made you create the QuickBooks plugin?

Jeff: I discovered BTCPay because I was originally a Bitpay customer. When I would invoice customers in my main business, I would use QuickBooks Invoicing, which also processed payments. QuickBooks Invoicing natively supported ACH for fiat payments and Bitpay for Bitcoin.

When I heard about BTCPay, I immediately wanted to use it, but unfortunately, it didn't have the same nice QuickBooks Integration that Bitpay did. So I decided to see if I could link the QuickBooks and BTCPay APIs to create my own integration.

I slapped something together and Tweeted about it. Nicolas saw my Tweet and reached out to me and told me how I could make it better. He was tremendously helpful. I implemented his suggestions and now it's an "official" BTCPay plugin.

Even if you don't use QuickBooks for invoicing but just use it for bookkeeping, the plugin will still synchronize the data from BTCPay to QuickBooks to make your bookkeeping easier.

Interestingly QuickBooks later dropped Bitpay integration, so I believe BTCPay may now be the only solution with QuickBooks integration.

# What is LibrePatron?

Jeff: LibrePatron is the second plugin that I developed for BTCPay. It's a clone of the popular Patreon service.

In addition to accepting Bitcoin, the main difference between LibrePatron and Patreon is that LibrePatron is decentralized and self-hosted, just like BTCPay. As BitPay is to BTCPay, Patreon is to LibrePatron. It even installs using the official BTCPay installer as an additional option, so if you were able to install BTCPay, you're able to install LibrePatron.

This makes LibrePatron censorship resistant. You can't be banned by LibrePatron the way that Patreon bans creators.

# How are recurring payments handled in LibrePatron?

Recurring payments are tricky with Bitcoin since it's not a credit-based system where you can automatically take a user's money. As a result, LibrePatron monitors subscription expirations and automatically emails users as their expiration date approaches. The email contains a link to click to approve a new Bitcoin payment for another month's subscription.

# Software development

Jeff: I never would have gotten into software development if it weren't for Bitcoin. That's what spurred my interest in it again. Before becoming an Attorney and a CPA, I did complete part of the computer science program at Rutgers University. But that was 20 years ago. So I did have that base when picking it up again to work on Bitcoin, even after a 20 year sabbatical.

Jeff: Justin Moon's BUIDL Bootcamp (opens new window) is a great resource. I was one of the very early students and loved it, and at this point I would consider Justin a personal friend. I highly recommend it to anyone looking to get into Bitcoin development. If you care about Bitcoin, that's enough, even if you don't have a strong tech background coming in. Justin will help you.

# The Future

Jeff: In terms of what's next, I had an idea for a simplified method of automating the install of bitcoind, c-lightning/lnd and tor in a headless setup, but I ended up bagging that idea since honestly the BTCPay-Docker installer already does that so well. I would've just been reinventing the wheel, since even if you're not a merchant and won't regularly be taking incoming payments, using the BTCPay-Docker gets you everything you need and more. And for non-headless installs, Pierre Rochard's Node Launcher (opens new window) is the way to go.

I have been playing around with a couple of other ideas, but don't want to reveal them until I've got something people can play around with! I don't like to overpromise and underdeliver lol.

# Where can readers find you?

Jeff: If you're interested in the KeyKeeper IRA, catch me on Twitter @vandrewattycpa (opens new window).

We hope you enjoyed the interview and got to know the super-Jeff a bit better. If you have any questions for him, feel free to reach out to him on Twitter and make sure to check interesting projects he's working on. On behalf of the entire BTCPay community, I'd like to thank Jeff for all of his great contributions and selfless help to the community.

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Jeff Vandrew Jr is an Attorney, a CPA and an open-source developer. On top of that, he's the maintainer of the BTCPay python library (opens new window) and a bodybuilder and somehow still has spare time to help out newbies in the BTCPay community. Even though he sounds like a character from the Split movie, Jeff is real. In this quick interview, I wanted to learn more about him, his aspirations and projects and most importantly, to try to figure out how he manages to do all of these things productively.

The interview was co-authored by britttttkelly. (opens new window)

# How did you get into Bitcoin?

Jeff: I'm old, so I'm one of the Bitcoiners that began with an interest in gold! Sound money always had an appeal to me. I did hear vaguely about Bitcoin in the 2009-2011 timeframe, but didn't pay much attention and never did much with it. In 2014, for whatever reason, I was finally sold on the idea and bought in. Bitcoin actually strengthened my interest in sound money as I saw it as dealing with many of gold's flaws.

# How did you manage to connect all of your passions: finance, law, bodybuilding and development?

Being an Attorney and a CPA is cool, and I'm lucky to have leveraged it into a living that gives me a good quality of life, but I wouldn't call it a passion. In fact in the US, I generally discourage students to go to law school, as most lawyers are pretty miserable. I lucked out in avoiding that fate since what I do (tax consulting with an emphasis on Bitcoin) is very specialized and very dissimilar from what most lawyers do. I never have to wear a suit or report to an office or anything like that.

What I really care about is Bitcoin and Bodybuilding. The two aren't all that related to each other, but I did try to combine them with the Bitcoin & Barbells 2019 (opens new window) event that I'm hosting in a few months around the Nakamoto Institute Dinner (get tickets because space is limited!).

I had done some software development in school in the 1990s, but didn't actually get back into it until I felt compelled by my interest in Bitcoin to contribute in a more tangible way.

# What is the Keykeeper IRA?

Jeff: The Keykeeper IRA is my "day job" and real business where I earn a living. It's a structure that allows US residents to purchase Bitcoin using retirement funds while custodying their own private keys. In the US, there are large tax advantages to holding Bitcoin this way, but most competing offerings involve an institution custodying your keys for you. With the Keykeeper IRA, you can get the benefits of holding Bitcoin in an IRA without having to trust a third party with your keys.

In the US, if you don't hold your Bitcoin in an IRA or 401(k), any time you spend or sell Bitcoin you have to pay capital gains tax on the difference between the purchase price you paid for that Bitcoin and the fair market value on the date of spend or sale. The Keykeeper IRA can be done as a Roth IRA (which eliminates all tax on the Bitcoin forever) or a Traditional IRA (which allows use of already tax-deferred funds from an old employer 401(k)). You can trade in and out of Bitcoin and other investments as much as you want, but you can't spend IRA funds without penalty for personal reasons until you hit age 59.5.

# How did you discover BTCPay and what made you create the QuickBooks plugin?

Jeff: I discovered BTCPay because I was originally a Bitpay customer. When I would invoice customers in my main business, I would use QuickBooks Invoicing, which also processed payments. QuickBooks Invoicing natively supported ACH for fiat payments and Bitpay for Bitcoin.

When I heard about BTCPay, I immediately wanted to use it, but unfortunately, it didn't have the same nice QuickBooks Integration that Bitpay did. So I decided to see if I could link the QuickBooks and BTCPay APIs to create my own integration.

I slapped something together and Tweeted about it. Nicolas saw my Tweet and reached out to me and told me how I could make it better. He was tremendously helpful. I implemented his suggestions and now it's an "official" BTCPay plugin.

Even if you don't use QuickBooks for invoicing but just use it for bookkeeping, the plugin will still synchronize the data from BTCPay to QuickBooks to make your bookkeeping easier.

Interestingly QuickBooks later dropped Bitpay integration, so I believe BTCPay may now be the only solution with QuickBooks integration.

# What is LibrePatron?

Jeff: LibrePatron is the second plugin that I developed for BTCPay. It's a clone of the popular Patreon service.

In addition to accepting Bitcoin, the main difference between LibrePatron and Patreon is that LibrePatron is decentralized and self-hosted, just like BTCPay. As BitPay is to BTCPay, Patreon is to LibrePatron. It even installs using the official BTCPay installer as an additional option, so if you were able to install BTCPay, you're able to install LibrePatron.

This makes LibrePatron censorship resistant. You can't be banned by LibrePatron the way that Patreon bans creators.

# How are recurring payments handled in LibrePatron?

Recurring payments are tricky with Bitcoin since it's not a credit-based system where you can automatically take a user's money. As a result, LibrePatron monitors subscription expirations and automatically emails users as their expiration date approaches. The email contains a link to click to approve a new Bitcoin payment for another month's subscription.

# Software development

Jeff: I never would have gotten into software development if it weren't for Bitcoin. That's what spurred my interest in it again. Before becoming an Attorney and a CPA, I did complete part of the computer science program at Rutgers University. But that was 20 years ago. So I did have that base when picking it up again to work on Bitcoin, even after a 20 year sabbatical.

Jeff: Justin Moon's BUIDL Bootcamp (opens new window) is a great resource. I was one of the very early students and loved it, and at this point I would consider Justin a personal friend. I highly recommend it to anyone looking to get into Bitcoin development. If you care about Bitcoin, that's enough, even if you don't have a strong tech background coming in. Justin will help you.

# The Future

Jeff: In terms of what's next, I had an idea for a simplified method of automating the install of bitcoind, c-lightning/lnd and tor in a headless setup, but I ended up bagging that idea since honestly the BTCPay-Docker installer already does that so well. I would've just been reinventing the wheel, since even if you're not a merchant and won't regularly be taking incoming payments, using the BTCPay-Docker gets you everything you need and more. And for non-headless installs, Pierre Rochard's Node Launcher (opens new window) is the way to go.

I have been playing around with a couple of other ideas, but don't want to reveal them until I've got something people can play around with! I don't like to overpromise and underdeliver lol.

# Where can readers find you?

Jeff: If you're interested in the KeyKeeper IRA, catch me on Twitter @vandrewattycpa (opens new window).

We hope you enjoyed the interview and got to know the super-Jeff a bit better. If you have any questions for him, feel free to reach out to him on Twitter and make sure to check interesting projects he's working on. On behalf of the entire BTCPay community, I'd like to thank Jeff for all of his great contributions and selfless help to the community.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/jamie-lim-sticky-singapore/index.html b/jamie-lim-sticky-singapore/index.html index 494e1f63..4212c7cf 100644 --- a/jamie-lim-sticky-singapore/index.html +++ b/jamie-lim-sticky-singapore/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

Jamie Lim is a 42-year-old family man and entrepreneur from Singapore. He is the founder of Sticky Singapore (opens new window), Joo Bar (opens new window), 8 Korean BBQ and Juju Coffee. Jamie's passion is restaurants, music, and Bitcoin. What you may not know about him, is that his businesses were among the first to use BTCPay Server in retail, in physical and online stores he owns.

Jamie recently began using BTCPay's Point of Sale for his Jojo Bar & Juju Coffee, check it out. (opens new window)

In this quick interview, I wanted to ask Jamie a few questions about his business, Bitcoin and cryptocurrency adoption in Asia and tell his story.

Jamie Lim and his wife:

# How did you get into Bitcoin?

Got really tired of traditional payment systems that require a deposit for all the terminals they “lend” to the merchants. It was through all the frivolous fees that I was paying that led me to Bitcoin.

# Cryptocurrency adoption in Singapore and Asia?

It’s still early days I believe, traction is very slow despite the awareness.

# Bitcoin projects that you like?

Most definitely, specifically BTCPay and nodl (opens new window).

# What is Sticky Singapore?

Sticky Singapore (opens new window) was founded sometime in the August of 2008. My main inspiration was really the desire to be my own boss and also to leave the mercenary financial industry. We’re based in Singapore and we have outlets all over the world now. We currently employ around 15 full-time staff.

# What kind of products do you offer?

We offer customised candies in all shapes and sizes.

# What ingredients do you use to make candy?

Mainly sugar, water, glucose, natural flavours and colouring.

# Customized candy sounds like a perfect promo product for companies, even in the crypto space. Who is it for, how long does it take to make a fully customized candy?

Our main clientele are most corporate folks from all sorts of industries, crypto companies are well suited if they intend to give out customised candies with their logos inside. Our turnaround time is roughly 1 week and all that is required are their corporate colours and logo, do note that everything is crafted by hand, so slight deviations may occur.

[gallery link="none" size="full" columns="1" ids="606,607,609"]

# How you discovered BTCPay and why you decided to use it?

On Twitter. I found it to be very intuitive with a nice tutorial to walk you through.

# How hard/easy it was to integrate it into your online store?

My online store runs on Wordpress. Once I installed the plugin (opens new window), it was pretty straightforward.

# Are there any features missing in BTCPay that would help you and your business?

None at the moment but if I had to nitpick, I want the BTCPay POS app to be more comprehensive. Just hoping for more adoption in the meantime.

# How do customers react when they see that you accept Bitcoin?

They mostly just go wow and that’s about it lol...

# How frequently do your customers pay in Bitcoin?

Not very frequent unless they’re bitcoiners themselves.

# What are some of the difficulties of being a business accepting Bitcoin?

Here in Singapore, most people are still not very receptive due to all the scams in the crypto space. I say the difficulties are that you may be seen in a not so positive light.

# You accept Lightning Network payments as well. Can you tell me about the integration process? How hard/easy it was to connect the external node in BTCPay?

Oh man, the integration was a breeze with Nodl, outrageously easy.

# Your Lightning Network experience so far?

I absolutely love it! Hand on my heart, I’ve had ZERO problems so far. The main issue Lightning Network solves is really the speed at which you receive a payment into your own private node with no dependency on any 3rd party payment providers, this is huge for me 😃

# What's next for Sticky Singapore and yourself?

We’ve been in the business for more than 10 years and we certainly look forward to more international franchisees joining the Sticky family!

As mentioned earlier, I run a few more other establishments which include a bar/cafe, a seafood restaurant, a Thai noodle house, and KOREAN BBQ!

# Where can people find you?

I’m mostly at my cafe in real life and of course, Twitter (opens new window) 😃

I hope you enjoyed Jamie's story and learned something new. If you own a physical store and would like to implement Bitcoin Point of Sale, like Jamie did, follow our guide. (opens new window)

If you're in Singapore, make sure to check one of Jamie's businesses where you can eat delicious food and drink amazing cocktails while paying with Bitcoin, on-chain or via the Lightning Network.

For those interested in Sticky Singapore yummy candies, you can check their website (opens new window) and make an order. They ship internationally. If by any chance you want to advertise your crypto project or business check their custom candies, where you can design your own candy (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

Jamie Lim is a 42-year-old family man and entrepreneur from Singapore. He is the founder of Sticky Singapore (opens new window), Joo Bar (opens new window), 8 Korean BBQ and Juju Coffee. Jamie's passion is restaurants, music, and Bitcoin. What you may not know about him, is that his businesses were among the first to use BTCPay Server in retail, in physical and online stores he owns.

Jamie recently began using BTCPay's Point of Sale for his Jojo Bar & Juju Coffee, check it out. (opens new window)

In this quick interview, I wanted to ask Jamie a few questions about his business, Bitcoin and cryptocurrency adoption in Asia and tell his story.

Jamie Lim and his wife:

# How did you get into Bitcoin?

Got really tired of traditional payment systems that require a deposit for all the terminals they “lend” to the merchants. It was through all the frivolous fees that I was paying that led me to Bitcoin.

# Cryptocurrency adoption in Singapore and Asia?

It’s still early days I believe, traction is very slow despite the awareness.

# Bitcoin projects that you like?

Most definitely, specifically BTCPay and nodl (opens new window).

# What is Sticky Singapore?

Sticky Singapore (opens new window) was founded sometime in the August of 2008. My main inspiration was really the desire to be my own boss and also to leave the mercenary financial industry. We’re based in Singapore and we have outlets all over the world now. We currently employ around 15 full-time staff.

# What kind of products do you offer?

We offer customised candies in all shapes and sizes.

# What ingredients do you use to make candy?

Mainly sugar, water, glucose, natural flavours and colouring.

# Customized candy sounds like a perfect promo product for companies, even in the crypto space. Who is it for, how long does it take to make a fully customized candy?

Our main clientele are most corporate folks from all sorts of industries, crypto companies are well suited if they intend to give out customised candies with their logos inside. Our turnaround time is roughly 1 week and all that is required are their corporate colours and logo, do note that everything is crafted by hand, so slight deviations may occur.

[gallery link="none" size="full" columns="1" ids="606,607,609"]

# How you discovered BTCPay and why you decided to use it?

On Twitter. I found it to be very intuitive with a nice tutorial to walk you through.

# How hard/easy it was to integrate it into your online store?

My online store runs on Wordpress. Once I installed the plugin (opens new window), it was pretty straightforward.

# Are there any features missing in BTCPay that would help you and your business?

None at the moment but if I had to nitpick, I want the BTCPay POS app to be more comprehensive. Just hoping for more adoption in the meantime.

# How do customers react when they see that you accept Bitcoin?

They mostly just go wow and that’s about it lol...

# How frequently do your customers pay in Bitcoin?

Not very frequent unless they’re bitcoiners themselves.

# What are some of the difficulties of being a business accepting Bitcoin?

Here in Singapore, most people are still not very receptive due to all the scams in the crypto space. I say the difficulties are that you may be seen in a not so positive light.

# You accept Lightning Network payments as well. Can you tell me about the integration process? How hard/easy it was to connect the external node in BTCPay?

Oh man, the integration was a breeze with Nodl, outrageously easy.

# Your Lightning Network experience so far?

I absolutely love it! Hand on my heart, I’ve had ZERO problems so far. The main issue Lightning Network solves is really the speed at which you receive a payment into your own private node with no dependency on any 3rd party payment providers, this is huge for me 😃

# What's next for Sticky Singapore and yourself?

We’ve been in the business for more than 10 years and we certainly look forward to more international franchisees joining the Sticky family!

As mentioned earlier, I run a few more other establishments which include a bar/cafe, a seafood restaurant, a Thai noodle house, and KOREAN BBQ!

# Where can people find you?

I’m mostly at my cafe in real life and of course, Twitter (opens new window) 😃

I hope you enjoyed Jamie's story and learned something new. If you own a physical store and would like to implement Bitcoin Point of Sale, like Jamie did, follow our guide. (opens new window)

If you're in Singapore, make sure to check one of Jamie's businesses where you can eat delicious food and drink amazing cocktails while paying with Bitcoin, on-chain or via the Lightning Network.

For those interested in Sticky Singapore yummy candies, you can check their website (opens new window) and make an order. They ship internationally. If by any chance you want to advertise your crypto project or business check their custom candies, where you can design your own candy (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/librepatron-patreon-alternative/index.html b/librepatron-patreon-alternative/index.html index ac310da9..51d51def 100644 --- a/librepatron-patreon-alternative/index.html +++ b/librepatron-patreon-alternative/index.html @@ -12,7 +12,7 @@ - + @@ -53,7 +53,7 @@ (opens new window) GitHub (opens new window)

You've probably heard of Patreon. An online membership service which enables content creators to be paid on a recurring basis by the communities that supports them. While Patreon works well for some people, it's notorious for its censorship of free speech. But like any centralized service, it has a single point of failure where administrators have the power to shut you down at any moment if they deem you a liability. The alternatives for Patreon is growing exponentially but there are still not many existing solutions that are truly censorship-resistant. Patreon also takes a significant chunk of content creators revenue.

LibrePatron is a self-hosted Patreon competitor where creators are owners of the entire platform. The software is free and open-source for anyone to use. LibrePatron uses BTCPay Server (opens new window) to receive Bitcoin payments on a recurring basis.

Deploy it, configure it to your needs and receive donations from your supporters. It's that simple. You can accept Bitcoin payments (Lightning Network or on-chain) combined with credit cards payments via Square which makes LibrePatron the only real censorship resistant solution independent of any third-parties.

In this article, I'd like to teach you how to launch your own Patreon-alternative on your BTCPay Server. Whether you're a content creator or an open-source developer looking for a way to fund your work on an open-source project, I hope you'll find it useful.

Before we begin, I would like to mention an earlier post (opens new window) where I had an interview with the creator of LibrePatron. Feel free to check out that interview if you're interested in learning why Jeff decided to launch the project in the first place.

# Requirements

Before we go down the rabbit hole there are just two things you'll need:

  • A self-hosted BTCPay Server
  • Domain name

This guide assumes that you are familiar with BTCPay Server and that you have a self-hosted BTCPay. Librepatron does not work with any third-party hosts (opens new window).

If you're unfamiliar with BTCPay, it's highly recommended that you take a look at our official website (opens new window) and our documentation (opens new window) to find the most appropriate way to deploy BTCPay (opens new window).

The easiest way to get started with BTCPay is by using 1-click web deployment (opens new window) which requires no technical knowledge whatsoever. Once you deploy your server, wait for it to sync, create an account, a store and configure your wallet as described in the getting started guide. (opens new window)

# Configuring DNS

LibrePatron runs on a domain of your choice on your BTCPay. In my case, that's librepatron.btcpay.ninja.

For a proper deployment of Librepatron you need to point the external IP of our virtual machine and point it to the domain or subdomain.

I've set up LibrePatron as the a-record domain.

Adding an A-record domain name and pointing our BTCPay Virtual Machine IP address to the domain where LibrePatreon will appear:

# Deploying LibrePatron on BTCPay Server

Now that we set up our BTCPay Server and configured our DNS, it's time to launch LibrePatron on our BTCPay instance.

Log in into your virtual machine via SSH. If you don't know how to do that you can follow this guide. (opens new window)

Add the following commands. Please make sure to replace example.com with a domain you configured in advance.

<script src="https://gist.github.com/pavlenex/9474997e9da9cc88ef2fbe3b494d8697.js"></script>
-
1

# Configuring LibrePatron

When deploying LibrePatron on your BTCPay, you need to visit the domain name you configured earlier. In my example it's librepatron.mydomain.com. The first time you open a page you'll be prompted to register an administrator account.

Next, sign in to your LibrePatron and go to Admin Panel.

There are plenty of settings that you can adjust in the admin panel. In this tutorial, we'll go through the essentials only but feel free to explore and adjust LibrePatron to your requirements and needs. The first thing we have to do is connect LibrePatron to our BTCPay Server. Enter the URL of your BTCPay (it will most likely be pre-filled) and click on the link here at the bottom of the page. You'll be redirected to your BTCPay instance access token creation wizard.

Create the access token and copy the server-initiated pairing code. Paste the code into the Pairing Code field and click submit. If your BTCPay and LibrePatron are successfully paired, you'll see a notification message.

As you probably know, Bitcoin is a push-only protocol meaning that recurring payments are very hard to achieve without access to your wallet. LibrePatron uses e-mails to remind supporters that their subscription should be renewed. This means there's no way to automatically charge your supporters but at least you can remind them to make a payment to support you and access the content you produce.

It's very important that you properly set up your SMTP server so that emails can be sent automatically. Navigate to the Email Setup page and enter your SMTP credentials. The author of LibrePatron recommends easy-smtp (opens new window) as an e-mail provider which gives you up to 10,000 free emails per month. Another alternative is Mailgun (opens new window) which also gives you 10,000 emails free per month.

Finally, the price levels page allows you to set up your subscription levels. Configure them to your needs.

And that's it, you now have a self-hosted Patreon alternative that allows you to receive Bitcoin and credit card payments. As mentioned, there are lots of options to play around with so start experimenting on how to make your LibrePatron page appealing to your supporters.

If you have any questions, suggestions or if you're experiencing any problems with LibrePatron you can open an issue on their GitHub (opens new window) or ask questions on their Slack (opens new window) group.

For those of you looking for a Kickstarter and crowdfunding alternative, make sure to check out the Crowdfunding app (opens new window) that's built into BTCPay.

Last Updated: 10/30/2024, 2:38:33 PM

+

1

# Configuring LibrePatron

When deploying LibrePatron on your BTCPay, you need to visit the domain name you configured earlier. In my example it's librepatron.mydomain.com. The first time you open a page you'll be prompted to register an administrator account.

Next, sign in to your LibrePatron and go to Admin Panel.

There are plenty of settings that you can adjust in the admin panel. In this tutorial, we'll go through the essentials only but feel free to explore and adjust LibrePatron to your requirements and needs. The first thing we have to do is connect LibrePatron to our BTCPay Server. Enter the URL of your BTCPay (it will most likely be pre-filled) and click on the link here at the bottom of the page. You'll be redirected to your BTCPay instance access token creation wizard.

Create the access token and copy the server-initiated pairing code. Paste the code into the Pairing Code field and click submit. If your BTCPay and LibrePatron are successfully paired, you'll see a notification message.

As you probably know, Bitcoin is a push-only protocol meaning that recurring payments are very hard to achieve without access to your wallet. LibrePatron uses e-mails to remind supporters that their subscription should be renewed. This means there's no way to automatically charge your supporters but at least you can remind them to make a payment to support you and access the content you produce.

It's very important that you properly set up your SMTP server so that emails can be sent automatically. Navigate to the Email Setup page and enter your SMTP credentials. The author of LibrePatron recommends easy-smtp (opens new window) as an e-mail provider which gives you up to 10,000 free emails per month. Another alternative is Mailgun (opens new window) which also gives you 10,000 emails free per month.

Finally, the price levels page allows you to set up your subscription levels. Configure them to your needs.

And that's it, you now have a self-hosted Patreon alternative that allows you to receive Bitcoin and credit card payments. As mentioned, there are lots of options to play around with so start experimenting on how to make your LibrePatron page appealing to your supporters.

If you have any questions, suggestions or if you're experiencing any problems with LibrePatron you can open an issue on their GitHub (opens new window) or ask questions on their Slack (opens new window) group.

For those of you looking for a Kickstarter and crowdfunding alternative, make sure to check out the Crowdfunding app (opens new window) that's built into BTCPay.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/mike-olthoff-coincards/index.html b/mike-olthoff-coincards/index.html index c353a932..a0104405 100644 --- a/mike-olthoff-coincards/index.html +++ b/mike-olthoff-coincards/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

In this interview, we're joined by Mike Olthoff. His business, CoinCards (opens new window) was the first company to implement and use BTCPay Server. They were also among the first few merchants to accept payments via the Lightning Network.

Mike helped a lot in the early days of BTCPay by providing priceless feedback. We can easily say that without Mike, BTCPay (opens new window) would never be what it is today.

Before we dive deep into the interview, I'd like to thank Mike for his contribution to the project and for helping other merchants in the community.

# Who is Mike Olthoff?

Mike Olthoff is a Canadian Bitcoin Entrepreneur from Vancouver, Canada. He has been involved in the local Bitcoin scene since 2013 and has run Coincards since 2014, helping thousands of bitcoiners turn cryptocurrencies into real-world uses.

# How did you get into Bitcoin?

I originally started learning about bitcoin in 2012. At the time, I was running a small web hosting company and many of my customers started asking for payments in Bitcoin. After looking into it, I found Bitpay (eww) and at the time I figured “If these guys will give me real money for coins, sure, new revenue streams”.

In 2013, I attended a small gathering in Vancouver, where a now longtime friend was speaking about Bitcoin and its potential impact on the world. I was completely enlightened within an hour and needed to know more, so I connected with the local scene and grew from there.

# What is Coincards?

Coincards is Canada’s “Digital Currency to Branded Currency exchange service.” Basically, we are a webshop that lists gift cards of hundreds of Canada’s top brands, Mobile Top-ups and more. Our mission is to spread the mainstream adoption of cryptocurrencies as a payment method by bridging the gap between merchants and consumers until merchants are willing and able to accept cryptocurrencies natively.

Coincards is one of the top go-to places in Canada for anyone who needs a quick swap of Bitcoin to real-world uses. Often we are able to issue gift cards within minutes, without intensive or intrusive KYC roadblocks. As more and more people come to rely on cryptocurrencies in everyday life, our service fills a much-needed gap when living on crypto.

# What are the struggles of being a cryptocurrency business?

We have been around long enough that we have pretty much seen it all from banking issues to hard-forks, from “Everyone Loves Bitcoin” to “Bitcoin’s Dead Again” headlines. We rode out some massive price swings and price highs.

One of our biggest roadblocks is simply getting the word out there that we exist. With the ICO craze of 2018, we encountered a lot of hostility towards Bitcoin-based businesses in the advertising space. We have basically been banned from advertising on all the main channels: Google, Twitter, Facebook, and even Reddit.

The other main roadblock we see is that the “HODL” mentality is really starting to become entrenched into people’s minds during the bear markets. Everyone at our company believes that bitcoin should be the internet's money and that you should treat crypto like any other bank account: save some & spend what you need to. Unfortunately, the current culture has aggressively pushed the “HODL” narrative to the point where users are afraid to spend it.

# Which payment providers have you used before BTCPay Server?

Originally we started with Bitpay in 2014, however, we operate on very low margins and we needed to look into something where we controlled our own keys and weren’t giving away a significant chunk of our profits to our payment processors.

With that, we switched to Mycelium gear. At the time this was really the only option for an open-source payment processor where you controlled your own keys. Unfortunately, Mycelium gear was a complete mess especially because they reused addresses so we would be spending most of our day manually applying payments to orders.

Finally, we discovered BTCPay.

# How did you discover BTCPay and what made you decide to switch?

Discovering BTCPay was a fluke I think, just a random chance encounter on Twitter by someone retweeting Nicolas’ hate towards Bitpay.

I remember joining the slack channel with maybe a total of ~40 people total almost no activity. This allowed me to ask Nicolas way too many questions but also be one of the first to guide what merchants would be looking for.

Nicolas was able to get a really good product up and running very quickly. At the same time, Mycelium gear decided they would be instituting a “post-pay” fee on all transactions. Since their server barely worked, we made the switch pretty quickly to BTCPay and never looked back.

# The early days of BTCPay?

The early days were very much just “Can we have this feature?” and Nicolas building it into BTCPay. I think Coincards and Halong Mining were the first of the larger vendors who utilized BTCPay, so we were able to quickly push a lot of feedback to Nicolas on what was going wrong and why. He also was a star with fixing issues and most issues from the first few weeks of going live were fixed within a day.

For the most part, the core of BTCPay has stayed the same: A really amazing payment processor. BTCPay has had so many improvements over the last year it really turned into something that can be almost everything to everyone who needs payments processed.

I also love how big the community has grown. Typically, Slack was just myself and Nicolas, and maybe a few people who would join and leave but then it started to grow and now I can’t even keep up with all the amazing contributors. I love seeing open source projects like this grow so fast because so many people are using it in different ways!

# You're your own payment processor. Does that help your business save money? What are the disadvantages of using a self-hosted BTCPay?

We love being able to host our payment solution on our own, it gives us complete control and saves us at least 1% on all transactions, something we very much need in our low margin industry.

Volatility is our biggest challenge. When you are your own payment processor, you are constantly holding funds and if you have FIAT requirements, you need a way of transferring funds to an exchange and selling those funds before the rates dip below what you effectively bought that BTC for.

# The fiat bridge is coming soon to BTCPay but you developed an in-house fiat conversion solution. Can you explain how it works?

As mentioned volatility is a huge risk, especially when you have low margins and swings that can effectively make you lose money within 10 minutes. To combat this, we needed instant fiat conversion.

Our own system is an in-house API connection to the leading Canadian exchanges. We hold a small balance on these exchanges and as orders come in, we simply sell the held BTC for fiat at the rate we just gave to our customer. This eliminates any volatility risk, but of course opens us up to lose on exchanges, if an exchange goes down. We usually limit our volumes on these exchanges and only replace coins as needed to that our loses when the exchanges disappear is minimal.

I’m excited to see BTCPay’s solution, as I think it might be useful to other merchants who want to do the same thing. Developing custom applications is expensive so for those merchants who are just starting out and need fiat this will be a lifesaver.

# What kind of reaction do you get from the customers when they see you're using BTCPay?

One of the great things about BTCPay is we typically don’t need to hear feedback on it from customers, it just works. Our customers are used to the intuitive design of BTCPay and are able to pay without any issues almost 100% of the time.

# As one of the Lightning Network pioneer merchants, describe your experience with the off-chain so far?

We have actually had a lot of issues with our node running C-lightning lately so I cannot say that it’s quite there yet. We were indeed one of the first merchants to accept lightning, but adoption for payments simply hasn't taken took off for us yet. We ran a few months with a test product of $0.01, however, once we enabled real products we only see a couple of transaction a month on the lightning network.

We believe that the lightning network will get there one day, but it still has a long way to go before it's used in everyday transactions.

CoinCards - Early Lightning Network days:

# What problem does Lightning solve for merchants?

The main problem I see being solved is confirmation times. Right now, we must wait for at least 2 confirmations in our own processes to be considered “safe”. With the lightning network, we can see the transaction instantly, which allows us to deliver our products faster and risk-free.

# From your perspective, what is needed for merchants who currently use LN?

It would be nice to see exchanges adopt LN as an inbound funding method. I think it's important to have the same off ramps for LN as we do for on-chain transactions. That being said, I can see no one wants to be the “first” to risk a large sum of funds on what I would consider still in an experimental stage.

# What tools do you use for bookkeeping?

We actually use Quickbooks online for most of our day-to-day bookkeeping. We found that this was one of the few programs to actually offer BTC as a native currency. Unfortunately, they only offer 2 decimal places, so we have to convert all of our transactions to mBTC before entry but it works pretty well.

# What piece of advice would you give to someone looking to start a Bitcoin business?

Starting a bitcoin business is just the same as any other business really: find a niche that no one is serving or have a kickass product. With most cases, if you are selling a product, I would say don’t expect to survive on BTC transactions alone, at least not to start. Your volumes will likely be really low but stick to it and people will find you!

# What's in store for you and Coincards in 2019?

2019 is a year of “buidling” for us. We are working hard on getting as many relationships built with merchants as we can this year and ultimately expanding our selection. We are also working hard on our own backend to ensure we have efficiencies in place for the next bull run. Ultimately we are also looking at expanding past Canada and moving into new markets, solidifying the Coincards brand.

# Is there anything we have not covered that you’d like readers to know?

I’d like to urge merchants to keep a portion of their earning/profits in BTC and then start offering those profits as payment to suppliers. We really need to push adoption through use. Our company pays every supplier we possibly can in crypto when the opportunity shows itself. We have “Skin in the game”.

By using any of the merchants using BTCPay and buying their products, including at Coincards, you are fostering the crypto economy and helping us in our mission for mass merchant adoption.

# Where can people find you?

That was Mike's story. I hope you enjoyed it. Support businesses that foster true adoption. If you're in Canada and need gift-cards, make sure to check their website.

This is just the first in the series of stories of BTCPay people that we plan to publish regularly. If you'd like to help us tell your story next, join our community chat (opens new window) and let us know.

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

In this interview, we're joined by Mike Olthoff. His business, CoinCards (opens new window) was the first company to implement and use BTCPay Server. They were also among the first few merchants to accept payments via the Lightning Network.

Mike helped a lot in the early days of BTCPay by providing priceless feedback. We can easily say that without Mike, BTCPay (opens new window) would never be what it is today.

Before we dive deep into the interview, I'd like to thank Mike for his contribution to the project and for helping other merchants in the community.

# Who is Mike Olthoff?

Mike Olthoff is a Canadian Bitcoin Entrepreneur from Vancouver, Canada. He has been involved in the local Bitcoin scene since 2013 and has run Coincards since 2014, helping thousands of bitcoiners turn cryptocurrencies into real-world uses.

# How did you get into Bitcoin?

I originally started learning about bitcoin in 2012. At the time, I was running a small web hosting company and many of my customers started asking for payments in Bitcoin. After looking into it, I found Bitpay (eww) and at the time I figured “If these guys will give me real money for coins, sure, new revenue streams”.

In 2013, I attended a small gathering in Vancouver, where a now longtime friend was speaking about Bitcoin and its potential impact on the world. I was completely enlightened within an hour and needed to know more, so I connected with the local scene and grew from there.

# What is Coincards?

Coincards is Canada’s “Digital Currency to Branded Currency exchange service.” Basically, we are a webshop that lists gift cards of hundreds of Canada’s top brands, Mobile Top-ups and more. Our mission is to spread the mainstream adoption of cryptocurrencies as a payment method by bridging the gap between merchants and consumers until merchants are willing and able to accept cryptocurrencies natively.

Coincards is one of the top go-to places in Canada for anyone who needs a quick swap of Bitcoin to real-world uses. Often we are able to issue gift cards within minutes, without intensive or intrusive KYC roadblocks. As more and more people come to rely on cryptocurrencies in everyday life, our service fills a much-needed gap when living on crypto.

# What are the struggles of being a cryptocurrency business?

We have been around long enough that we have pretty much seen it all from banking issues to hard-forks, from “Everyone Loves Bitcoin” to “Bitcoin’s Dead Again” headlines. We rode out some massive price swings and price highs.

One of our biggest roadblocks is simply getting the word out there that we exist. With the ICO craze of 2018, we encountered a lot of hostility towards Bitcoin-based businesses in the advertising space. We have basically been banned from advertising on all the main channels: Google, Twitter, Facebook, and even Reddit.

The other main roadblock we see is that the “HODL” mentality is really starting to become entrenched into people’s minds during the bear markets. Everyone at our company believes that bitcoin should be the internet's money and that you should treat crypto like any other bank account: save some & spend what you need to. Unfortunately, the current culture has aggressively pushed the “HODL” narrative to the point where users are afraid to spend it.

# Which payment providers have you used before BTCPay Server?

Originally we started with Bitpay in 2014, however, we operate on very low margins and we needed to look into something where we controlled our own keys and weren’t giving away a significant chunk of our profits to our payment processors.

With that, we switched to Mycelium gear. At the time this was really the only option for an open-source payment processor where you controlled your own keys. Unfortunately, Mycelium gear was a complete mess especially because they reused addresses so we would be spending most of our day manually applying payments to orders.

Finally, we discovered BTCPay.

# How did you discover BTCPay and what made you decide to switch?

Discovering BTCPay was a fluke I think, just a random chance encounter on Twitter by someone retweeting Nicolas’ hate towards Bitpay.

I remember joining the slack channel with maybe a total of ~40 people total almost no activity. This allowed me to ask Nicolas way too many questions but also be one of the first to guide what merchants would be looking for.

Nicolas was able to get a really good product up and running very quickly. At the same time, Mycelium gear decided they would be instituting a “post-pay” fee on all transactions. Since their server barely worked, we made the switch pretty quickly to BTCPay and never looked back.

# The early days of BTCPay?

The early days were very much just “Can we have this feature?” and Nicolas building it into BTCPay. I think Coincards and Halong Mining were the first of the larger vendors who utilized BTCPay, so we were able to quickly push a lot of feedback to Nicolas on what was going wrong and why. He also was a star with fixing issues and most issues from the first few weeks of going live were fixed within a day.

For the most part, the core of BTCPay has stayed the same: A really amazing payment processor. BTCPay has had so many improvements over the last year it really turned into something that can be almost everything to everyone who needs payments processed.

I also love how big the community has grown. Typically, Slack was just myself and Nicolas, and maybe a few people who would join and leave but then it started to grow and now I can’t even keep up with all the amazing contributors. I love seeing open source projects like this grow so fast because so many people are using it in different ways!

# You're your own payment processor. Does that help your business save money? What are the disadvantages of using a self-hosted BTCPay?

We love being able to host our payment solution on our own, it gives us complete control and saves us at least 1% on all transactions, something we very much need in our low margin industry.

Volatility is our biggest challenge. When you are your own payment processor, you are constantly holding funds and if you have FIAT requirements, you need a way of transferring funds to an exchange and selling those funds before the rates dip below what you effectively bought that BTC for.

# The fiat bridge is coming soon to BTCPay but you developed an in-house fiat conversion solution. Can you explain how it works?

As mentioned volatility is a huge risk, especially when you have low margins and swings that can effectively make you lose money within 10 minutes. To combat this, we needed instant fiat conversion.

Our own system is an in-house API connection to the leading Canadian exchanges. We hold a small balance on these exchanges and as orders come in, we simply sell the held BTC for fiat at the rate we just gave to our customer. This eliminates any volatility risk, but of course opens us up to lose on exchanges, if an exchange goes down. We usually limit our volumes on these exchanges and only replace coins as needed to that our loses when the exchanges disappear is minimal.

I’m excited to see BTCPay’s solution, as I think it might be useful to other merchants who want to do the same thing. Developing custom applications is expensive so for those merchants who are just starting out and need fiat this will be a lifesaver.

# What kind of reaction do you get from the customers when they see you're using BTCPay?

One of the great things about BTCPay is we typically don’t need to hear feedback on it from customers, it just works. Our customers are used to the intuitive design of BTCPay and are able to pay without any issues almost 100% of the time.

# As one of the Lightning Network pioneer merchants, describe your experience with the off-chain so far?

We have actually had a lot of issues with our node running C-lightning lately so I cannot say that it’s quite there yet. We were indeed one of the first merchants to accept lightning, but adoption for payments simply hasn't taken took off for us yet. We ran a few months with a test product of $0.01, however, once we enabled real products we only see a couple of transaction a month on the lightning network.

We believe that the lightning network will get there one day, but it still has a long way to go before it's used in everyday transactions.

CoinCards - Early Lightning Network days:

# What problem does Lightning solve for merchants?

The main problem I see being solved is confirmation times. Right now, we must wait for at least 2 confirmations in our own processes to be considered “safe”. With the lightning network, we can see the transaction instantly, which allows us to deliver our products faster and risk-free.

# From your perspective, what is needed for merchants who currently use LN?

It would be nice to see exchanges adopt LN as an inbound funding method. I think it's important to have the same off ramps for LN as we do for on-chain transactions. That being said, I can see no one wants to be the “first” to risk a large sum of funds on what I would consider still in an experimental stage.

# What tools do you use for bookkeeping?

We actually use Quickbooks online for most of our day-to-day bookkeeping. We found that this was one of the few programs to actually offer BTC as a native currency. Unfortunately, they only offer 2 decimal places, so we have to convert all of our transactions to mBTC before entry but it works pretty well.

# What piece of advice would you give to someone looking to start a Bitcoin business?

Starting a bitcoin business is just the same as any other business really: find a niche that no one is serving or have a kickass product. With most cases, if you are selling a product, I would say don’t expect to survive on BTC transactions alone, at least not to start. Your volumes will likely be really low but stick to it and people will find you!

# What's in store for you and Coincards in 2019?

2019 is a year of “buidling” for us. We are working hard on getting as many relationships built with merchants as we can this year and ultimately expanding our selection. We are also working hard on our own backend to ensure we have efficiencies in place for the next bull run. Ultimately we are also looking at expanding past Canada and moving into new markets, solidifying the Coincards brand.

# Is there anything we have not covered that you’d like readers to know?

I’d like to urge merchants to keep a portion of their earning/profits in BTC and then start offering those profits as payment to suppliers. We really need to push adoption through use. Our company pays every supplier we possibly can in crypto when the opportunity shows itself. We have “Skin in the game”.

By using any of the merchants using BTCPay and buying their products, including at Coincards, you are fostering the crypto economy and helping us in our mission for mass merchant adoption.

# Where can people find you?

That was Mike's story. I hope you enjoyed it. Support businesses that foster true adoption. If you're in Canada and need gift-cards, make sure to check their website.

This is just the first in the series of stories of BTCPay people that we plan to publish regularly. If you'd like to help us tell your story next, join our community chat (opens new window) and let us know.

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/nbxplorer-postgres/index.html b/nbxplorer-postgres/index.html index 7d32a8c8..6279cb9d 100644 --- a/nbxplorer-postgres/index.html +++ b/nbxplorer-postgres/index.html @@ -12,7 +12,7 @@ - + @@ -60,7 +60,7 @@ Lot's of the logic that was inside NBXplorer code got pushed in SQL, the schema is well documented (opens new window) and efficient, it provides easy queries to the DB for getting balances, UTXOS, see recent activity of a wallet, build histograms, and create activity reports.

I encourage people to use the schema while making their own indexer.

NBXplorer at the current version isn't exposing the full power of what the schema allows. The schema is multi chain, multi asset and multi-tenant.

You are encouraged to create your own APIs on top of it if you need it.

It allows the creation of wallets, into which you can add output descriptors and/or individual addresses (scripts).

Wallets can also be nested into each others. Imagine you run a business with multiple stores, you could have one wallet by stores, then nest them inside the business wallet.

You can then easily query wallet's utxos, balance, recent changes, make histograms of how wallet balance at any level evolve over time.

As always, NBXplorer isn't indexing the whole blockchain: Only transactions involving a scriptpubkey in the scripts table. It means it can run without lot's of storage and memory requirement.

While NBXplorer run on the database, you can also query and interact with the schema directly by creating wallets and your own descriptors.

For all of this, you also now need only around 60MB of RAM to run NBXplorer (instead of 200MB+ per supported chain, that's around -70% of memory consumption at minimum), fast start (no more defragmenting process taking long time when the server restart, no need to load the chain of header either...), and more efficiency on storage space: around -70% less space is required to store the data of NBXplorer.

# Migration

I work hard to prevent breaking changes and give lot's of warning and time for people to update. So I created a migration path for our current users. If you use BTCPay on docker, you don't have to worry, the migration will be automatic during one update. You may notice NBXplorer isn't starting for some time.

  • For most of our users, the update will be fast, no more than a 1-5 minutes.
  • The migration for the mainnet demo server online since september 2018 is taking around 1H and has only around 44K transactions and 620K addresses.
  • For a few big users (exchanges and big businesses), I expect the migration to take a few more hours.

You can see more information on NBXplorer's migration documentation (opens new window).

Note that the migration isn't mandatory. The old backend will be deprecated but supported for few years. (SPOILER) But you will miss new BTCPay Server features such as the upcoming dashboards. (SPOILER)

# Future plans

I will deprecate the DBTrie backend, showing warning for users not running on Postgres. But I will keep supporting it for 2 or 3 years.

The current NBXplorer API is stable and will not change significantly. -I plan to create a completely new API for NBXplorer taking full advantage of the new schema.

The new API will run on the same database, and I plan to make it possible to run both API at the same time on the same database to be able to slowly migrate.

But you don't have to wait for it! It's only SQL, leverage your database skills and develop in the language you know best. (See more information about the scheme on NBXplorer's schema documentation (opens new window))

# Conclusion

NBXplorer improved significantly. And I expect it will become a pillar not only to BTCPay Server but to many other services.

We will use the improvements to NBXplorer to provide exciting analytics queries over your store's wallet in BTCPay Server. No matter how big your store is, it will smoothly work.

Will you use NBXPlorer's API, or just query the tables directly? The choice is yours, now there is enough flexibility for any of your demands.

Links:

Last Updated: 10/30/2024, 2:38:33 PM

+I plan to create a completely new API for NBXplorer taking full advantage of the new schema.

The new API will run on the same database, and I plan to make it possible to run both API at the same time on the same database to be able to slowly migrate.

But you don't have to wait for it! It's only SQL, leverage your database skills and develop in the language you know best. (See more information about the scheme on NBXplorer's schema documentation (opens new window))

# Conclusion

NBXplorer improved significantly. And I expect it will become a pillar not only to BTCPay Server but to many other services.

We will use the improvements to NBXplorer to provide exciting analytics queries over your store's wallet in BTCPay Server. No matter how big your store is, it will smoothly work.

Will you use NBXPlorer's API, or just query the tables directly? The choice is yours, now there is enough flexibility for any of your demands.

Links:

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/page/2/index.html b/page/2/index.html index b36c63d7..3cbf4172 100644 --- a/page/2/index.html +++ b/page/2/index.html @@ -12,7 +12,7 @@ - + @@ -216,6 +216,6 @@ Unbank

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

- + diff --git a/page/3/index.html b/page/3/index.html index b2099698..63300783 100644 --- a/page/3/index.html +++ b/page/3/index.html @@ -12,7 +12,7 @@ - + @@ -216,6 +216,6 @@ Unbank

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

- + diff --git a/page/4/index.html b/page/4/index.html index 16940cc8..d23e6604 100644 --- a/page/4/index.html +++ b/page/4/index.html @@ -12,7 +12,7 @@ - + @@ -216,6 +216,6 @@ Unbank

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

- + diff --git a/page/5/index.html b/page/5/index.html index 84c9268f..6187d152 100644 --- a/page/5/index.html +++ b/page/5/index.html @@ -12,7 +12,7 @@ - + @@ -216,6 +216,6 @@ Unbank

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

- + diff --git a/page/6/index.html b/page/6/index.html index 109b29a9..8f1d2c69 100644 --- a/page/6/index.html +++ b/page/6/index.html @@ -12,7 +12,7 @@ - + @@ -216,6 +216,6 @@ Unbank

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

- + diff --git a/page/7/index.html b/page/7/index.html index eaced341..95630329 100644 --- a/page/7/index.html +++ b/page/7/index.html @@ -12,7 +12,7 @@ - + @@ -216,6 +216,6 @@ Unbank

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

- + diff --git a/page/8/index.html b/page/8/index.html index 803c3ab2..2b8bfb78 100644 --- a/page/8/index.html +++ b/page/8/index.html @@ -12,7 +12,7 @@ - + @@ -90,6 +90,6 @@ Unbank

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

- + diff --git a/payment-requests/index.html b/payment-requests/index.html index b8edbbbd..3a8f1324 100644 --- a/payment-requests/index.html +++ b/payment-requests/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

I regularly pay freelancers with bitcoin. When we agree on the price in fiat, due to volatility, the numbers never add up. I have to pay again, or they have to refund me. If we agree on the amount a few days in advance, someone is always at financial or time loss. Making sure they don’t re-use the address is a story for another day, but you feel the pain. (GitHub #314 (opens new window) )

BTCPay is free and open-source cryptocurrency payment processor. In this article we would like to share how we addressed the above problem for our users.

# The Problem

Our good old client Satoshi wants to pay us for a logo we designed.

  • Satoshi needs to ask for the exact amount.
  • Satoshi needs our address
  • Satoshi needs to make sure there is no address re-use, since that’s a huge privacy issue
  • Satoshi’s ISP may block (opens new window) the email if he mentions Bitcoin.
  • Satoshi does not have enough BTC, he needs repeat the same process
  • All this time the rates change
  • Satoshi has no invoice confirmation to print for his accountant

# The Solution

Introducing - Payment Requests, a new type of time-sensitive invoice pages built into BTCPay that allow you to get paid in cryptocurrency just by sharing a simple URL.

  • Seller creates an invoice, adds expiration date, customizes it and shares as a regular link.
  • Buyer can pay invoice whenever preferred. The exchange rates update accordingly.
  • Buyer can pay right away or later, on-chain or via the Lightning Network. The invoice can even be paid partially with LN and partially on-chain, or even with multiple coins.
  • The exchange rate is determined when buyer tries to pay the invoice.
  • Buyer can print the paid invoice.
  • Seller can export all the relevant data as CSV later and send it to accountant.
  • Since they’re using BTCPay, money goes directly from one wallet to another, no custodians, no fees.

# How it works?

  1. Create a payment request (enter the amount, the expiration time, and description)
  2. Customize the design (optional)
  3. Share the URL.

Creating a payment request in BTCPay:

We’ve added lots of flexibility, so you can use custom CSS, or add a ready-made BootStrap theme.

You can save the invoice for later and preview it, or publish it right away and send it to your customers.

# Features

  • Set the expiration time
  • Printer-friendly mode
  • Customizable design (css/theme)
  • Custom or fixed amount

Print invoices with ease:

# Roadmap

We plan to further develop and improve the payment requests based on your feedback.

Short term improvements we plan to implement are:

  • One-Time or Recurring requests (subscriptions)
  • Send a request automatically via an e-mail (SMTP integration)

# Try it out

Excited? Here’s how you can create a payment request quickly:

  1. Register on our demo server (opens new window) (you can self-host (opens new window) BTCPay or use a third-party host (opens new window))
  2. Create a store (opens new window) and connect your wallet (no private keys required).
  3. Payment Requests > Create.

We’re very proud of this feature. In order to improve it further, we need more people to use it. Give it a try, and share your invoices and experiences with us on Twitter (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

I regularly pay freelancers with bitcoin. When we agree on the price in fiat, due to volatility, the numbers never add up. I have to pay again, or they have to refund me. If we agree on the amount a few days in advance, someone is always at financial or time loss. Making sure they don’t re-use the address is a story for another day, but you feel the pain. (GitHub #314 (opens new window) )

BTCPay is free and open-source cryptocurrency payment processor. In this article we would like to share how we addressed the above problem for our users.

# The Problem

Our good old client Satoshi wants to pay us for a logo we designed.

  • Satoshi needs to ask for the exact amount.
  • Satoshi needs our address
  • Satoshi needs to make sure there is no address re-use, since that’s a huge privacy issue
  • Satoshi’s ISP may block (opens new window) the email if he mentions Bitcoin.
  • Satoshi does not have enough BTC, he needs repeat the same process
  • All this time the rates change
  • Satoshi has no invoice confirmation to print for his accountant

# The Solution

Introducing - Payment Requests, a new type of time-sensitive invoice pages built into BTCPay that allow you to get paid in cryptocurrency just by sharing a simple URL.

  • Seller creates an invoice, adds expiration date, customizes it and shares as a regular link.
  • Buyer can pay invoice whenever preferred. The exchange rates update accordingly.
  • Buyer can pay right away or later, on-chain or via the Lightning Network. The invoice can even be paid partially with LN and partially on-chain, or even with multiple coins.
  • The exchange rate is determined when buyer tries to pay the invoice.
  • Buyer can print the paid invoice.
  • Seller can export all the relevant data as CSV later and send it to accountant.
  • Since they’re using BTCPay, money goes directly from one wallet to another, no custodians, no fees.

# How it works?

  1. Create a payment request (enter the amount, the expiration time, and description)
  2. Customize the design (optional)
  3. Share the URL.

Creating a payment request in BTCPay:

We’ve added lots of flexibility, so you can use custom CSS, or add a ready-made BootStrap theme.

You can save the invoice for later and preview it, or publish it right away and send it to your customers.

# Features

  • Set the expiration time
  • Printer-friendly mode
  • Customizable design (css/theme)
  • Custom or fixed amount

Print invoices with ease:

# Roadmap

We plan to further develop and improve the payment requests based on your feedback.

Short term improvements we plan to implement are:

  • One-Time or Recurring requests (subscriptions)
  • Send a request automatically via an e-mail (SMTP integration)

# Try it out

Excited? Here’s how you can create a payment request quickly:

  1. Register on our demo server (opens new window) (you can self-host (opens new window) BTCPay or use a third-party host (opens new window))
  2. Create a store (opens new window) and connect your wallet (no private keys required).
  3. Payment Requests > Create.

We’re very proud of this feature. In order to improve it further, we need more people to use it. Give it a try, and share your invoices and experiences with us on Twitter (opens new window).

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/privacy-policy/index.html b/privacy-policy/index.html index afaa6b31..86c94b12 100644 --- a/privacy-policy/index.html +++ b/privacy-policy/index.html @@ -12,7 +12,7 @@ - + @@ -38,7 +38,7 @@ Twitter (opens new window) GitHub - (opens new window)

# Privacy Policy

We protect your privacy by not collecting any data, the rest is on you.

We do not use traffic analytics, ads or any other sort of data collection or tracking.

Please note that certain pages have embedded YouTube video(s). We enable privacy-enhanced mode for the embedded content from a third-party such as YouTube. According to them, they won't track your visits unless you play a video.

We recommend you to use a privacy-badger (opens new window) plugin to prevent third-party tracking indefinitely.

Learn how to protect your privacy online:

Last Updated: 10/30/2024, 2:38:33 PM

+ (opens new window)

# Privacy Policy

We protect your privacy by not collecting any data, the rest is on you.

We do not use traffic analytics, ads or any other sort of data collection or tracking.

Please note that certain pages have embedded YouTube video(s). We enable privacy-enhanced mode for the embedded content from a third-party such as YouTube. According to them, they won't track your visits unless you play a video.

We recommend you to use a privacy-badger (opens new window) plugin to prevent third-party tracking indefinitely.

Learn how to protect your privacy online:

Last Updated: 11/2/2024, 5:56:25 AM

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

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

- + diff --git a/ride-the-lightning-btcpay/index.html b/ride-the-lightning-btcpay/index.html index fff816a7..c3a93b1a 100644 --- a/ride-the-lightning-btcpay/index.html +++ b/ride-the-lightning-btcpay/index.html @@ -12,7 +12,7 @@ - + @@ -53,7 +53,7 @@ (opens new window) GitHub (opens new window)

When Lightning Network was first added to BTCPay Server on the February 25th 2018, the user experience was pretty rough for quite a while.

If you're one of the old-schoolers, you probably used a command line to manage your node and channels. While there's nothing wrong with CLI if you're tech-savvy, for most people that's far from a desired user experience.

Lightning protocol matures at a rapid pace. Applications are built constantly, improvements are made daily and at BTCPay we're happy to be part of the Lightning boom.

Today, BTCPay is one of the easiest ways to launch (opens new window) a self-hosted Lightning node and send or receive payments without the intermediate. Wallet applications like Zap (opens new window), Spark (opens new window), Joule (opens new window), Pebble (opens new window), Zeus (opens new window) allow seamless integration with BTCPay. All of these wallets provide exceptional user-experience for paying and getting paid, but the node management itself is not the main purpose of any of the wallets, nor it should be.

We're proud to announce that managing your node and channels, without ever leaving your BTCPay is now possible thanks to Ride The Lightning integration.

In this article, I am joined by Suheb Khan (opens new window), one of the developers behind the  Ride The Lightning (opens new window). Suheb was very kind to break down the RTL and co-author the article.

# What is Ride the Lightning?

Suheb: ‘Ride The Lightning’ or RTL in short, is a browser based node management UI, which aims to make operating a lightning node easier and intuitive. RTL currently interfaces with LND node via its REST APIs, to provide an operating UI.

# What's the story behind it?

Suheb: Development on RTL started in Sep 2018, with the first release on Oct 8, 2018, which we announced via our medium post (opens new window). The conversation to build such an app started a bit earlier in July 2017 when Shahana (a web developer) was looking to start a side project, and I (a Bitcoin and Lightning enthusiast) was struggling to figure out a better way to get all the information out from my LN Node, without operating a command line.

I reached out to Stadicus (opens new window) on a whim, to get his thoughts on it, and he was kind enough to respond and gave us encouragement to start building this project. He also got us in touch with Rootzoll (opens new window) and whiteyhat (opens new window) who were in the middle of working on their ‘Raspiblitz (opens new window)’ and ‘SatoshiGames’ projects respectively.

This group overall, gave us encouragement to work on and develop RTL initially.

RTL is our way to contribute and encourage the developing ecosystem of Bitcoin and Lightning. We believe in the game changing potential of this amazing innovation and want to make it, as easy to use, as possible.

# Features

Suheb: RTL is attempting to expose most of the LND APIs via a browser UI, so that a user need not operate a command line for most of the operation. Currently, we have 57% coverage of LND APIs, which covers many basic and advanced features available with LND.

Current feature set includes:

# Dashboard

  • View of the critical node parameters (balances, peers, chain sync status)
  • Fee report
  • Channel status (active, inactive, pending)
  • Local vs Remote Channel capacity
  • Network information

# LND

  • Peer Management (Connect and Disconnect)
  • Channel Management -
    • Open/Close channels
    • Update channel policy for individual channels or mass update.
    • View status for Pending and Closed channels
  • Verify & Send Payments (includes handling invoices with zero amount for tipping)
  • Generate & Manage Invoices (with QR code)
  • Node & Channel Lookup (get information on any node/channel on the network)
  • Wallet (Funding and Withdrawal)

Easily set up fees for your channels:

# Integrating RTL into BTCPay?

Suheb: This is an interesting story.

We were interested into getting BTCPay much earlier and when I reached out to Rockstardev (opens new window), we were guided to join the Slack. There we learned that BTCPay integration would require a docker image.

We were lightly familiar with docker and could generate an image easily, but the real struggle was the hooks which were required to get into BTCPay stack. This was the tricky part, because RTL is not a standalone application and is dependent on LND to be able to function. We were not able to figure out the hooks which BTCPay’s docker based architecture offered, to integrate. Additionally, with other development priorities of RTL, we were also not able to devote time to it, while being painfully aware that Nicolas (opens new window) was searching for a UI solution for LND on BTCPay.

This is where Jeff (opens new window)’s contribution was critical and, in a way, a bit serendipitous as well.

An issue was opened on our GitHub, to provide a docker image for better adoption of RTL. We were interested but needed more collaboration, which the person who opened the ticket was not able to offer. Out of the blue, Jeff jumped on the ticket and offered to guide us to integrate with BTCPay. We latched on to it, and worked 2 weeks non-stop, to make it happen.

In case anyone is interested, you can follow the whole development journey on this Github issue (opens new window).

In short, we enabled RTL to integrate, by providing application hooks and authentication logic, which also made RTL lot easier to integrate with any other platform, as well. Following environmental parameters were added to RTL to enable this:

  • a) LND_SERVER_URL
  • b) MACAROON_PATH
  • c) NODE_AUTH_TYPE
  • d) LND_CONFIG_PATH
  • e) RTL_CONFIG_PATH
  • f) RTL_SSO
  • g) RTL_COOKIE_PATH
  • h) LOGOUT_REDIRECT_LINK

# Getting Started with Lightning Network Node management and RTL

Suheb: We have created a detailed medium post (with screenshots) on how to operate RTL, which users can refer to, to figure out how to perform different operations on RTL.

Read the RTL Getting Started Guide (opens new window).

To deploy RTL on your BTCPay Server (opens new window), just update your server and then go to Server Settings >  Services > Ride the Lightning to open the dashboard. You can open it from your mobile phone by scanning a QR code as well.

# What are some of the security risks, attack vectors users should be aware?

Suheb: RTL was originally built to be operated by a home node operator, using the app to communicate with the LND node on a local network. With this assumption in mind, we have provided a simple setup which makes it easy to get the UI up and running.

The access to the RTL node server is via HTTP. This makes for the communication to be un-encrypted b/w RTL node server and the browser. If, the user is on the home network or running the browser and RTL on the same computer, this should be fine. Any other setup should make use of a webserver to serve RTL and ensure that it's accessed via HTTPS and not HTTP.

RTL users on Nodl and BTCPay Server have a secure setup, as RTL is served from an nginx server which provides an HTTPS connection and makes the whole communication encrypted.

We are working on creating a guide for setting up an nginx server and provide simple instructions on how to secure the communication b/w RTL and browser. We also welcome contribution on this from the community and would happily accept a documentation PR which provide clear setup for users.

Channel management in RTL:

# What's in store next for RTL?

Suheb: We have an endless list of items to work on. Other than the regular issues, (opens new window) which keep popping up from users, which we prioritize for development, we have some high-level goals, which we want to accomplish for RTL. Below list is not necessarily in any priority order.

Multi-node Management – We want to provide users an ability to manage multiple-nodes via a single UI. The idea is to provide a top-level page, which will list all the nodes which are configured for RTL. User would be able to drill down to each node from that page and manage nodes from a single RTL instance.

RTL installer – Automate RTL setup so that installation process is simpler than the current method of following the steps provided in the Readme file. This should also help with the configuration of nginx and letsencrypt, to enable access via https. Contribution on this is more than welcome.

Better Mobile UX – Current UX for mobile users is less than optimal. We are attempting to provide a responsive UI, so that users can access the same app via browser on any device. This requires more UX optimization for mobile resolution.

C-Lightning – We want to extend the RTL UI framework to other lightning node implementations as well. The current architecture can support it without major re-engineering, as we have an API abstraction layer written in nodejs. Additionally, projects like Lighter, offer a lot of promise to speed up the development process for this.

Globalization – Multi-language support. We can provide a customizable framework for multi- language support. But to extend support for other languages would require contribution from the development community, to use the framework and create multi-language support.

Ongoing UX improvement – We believe UX improvement is a never-ending cycle. And, we must keep the UI/UX fresh and optimal with ongoing user feedback and inputs from UX subject-matter- experts. Contribution on UX suggestions is more than welcome and we have created a project to exclusively focus on UX issues and priorities.

Automated Testing – As the functional complexity increases, we need to add automated testing to ensure quality and less bugs. Another area, where developer contribution is more than welcome.

# How to help and contribute to RTL

Suheb: As indicated in the answer to the goals question, there are many areas where the community can contribute developer, user alike:

  • UX experts – Provide inputs to improve the usability of the application
  • Developers – RTL Installer, Identify and provide fixes for Front-end bugs, Automated tests.
  • Sysadmins/Infra experts – Install automation, Webserver configs, setup guides
  • Users – Testing, Reviews, Documentation

We want RTL to be an open and thriving community project, as our intention is to always keep RTL open-source and free for all.

RTL is a passion project, which we support along with our day jobs. Our intention is to contribute to the Bitcoin community with the skills we have. We are not experts in all the skills required to keep this project going and are learning every day. Our hope is that, RTL will ease user onboarding to lightning and can contribute a little bit towards Bitcoin and lightning growth and adoption.

Any contribution to project from development, testing or review perspective is welcome as RTL will remain an open-source and free for all software.

# Wrapping it up

We hope you enjoyed the article and learned something new about the Lightning node management.

If you have any questions, feel free to ask them on our community chat (opens new window). I'd like to thank Suheb for his time and for sharing great tips and insights on the fascinating project.

Hopefully, BTCPay community will provide valuable feedback that will help them to continuously grow and improve their open-source software.

You can follow Suheb on Twitter (opens new window) and RTL project on GitHub (opens new window).

Last Updated: 10/30/2024, 2:38:33 PM

+

  • Open/Close channels
  • Update channel policy for individual channels or mass update.
  • View status for Pending and Closed channels
  • Verify & Send Payments (includes handling invoices with zero amount for tipping)
  • Generate & Manage Invoices (with QR code)
  • Node & Channel Lookup (get information on any node/channel on the network)
  • Wallet (Funding and Withdrawal)
  • Easily set up fees for your channels:

    # Integrating RTL into BTCPay?

    Suheb: This is an interesting story.

    We were interested into getting BTCPay much earlier and when I reached out to Rockstardev (opens new window), we were guided to join the Slack. There we learned that BTCPay integration would require a docker image.

    We were lightly familiar with docker and could generate an image easily, but the real struggle was the hooks which were required to get into BTCPay stack. This was the tricky part, because RTL is not a standalone application and is dependent on LND to be able to function. We were not able to figure out the hooks which BTCPay’s docker based architecture offered, to integrate. Additionally, with other development priorities of RTL, we were also not able to devote time to it, while being painfully aware that Nicolas (opens new window) was searching for a UI solution for LND on BTCPay.

    This is where Jeff (opens new window)’s contribution was critical and, in a way, a bit serendipitous as well.

    An issue was opened on our GitHub, to provide a docker image for better adoption of RTL. We were interested but needed more collaboration, which the person who opened the ticket was not able to offer. Out of the blue, Jeff jumped on the ticket and offered to guide us to integrate with BTCPay. We latched on to it, and worked 2 weeks non-stop, to make it happen.

    In case anyone is interested, you can follow the whole development journey on this Github issue (opens new window).

    In short, we enabled RTL to integrate, by providing application hooks and authentication logic, which also made RTL lot easier to integrate with any other platform, as well. Following environmental parameters were added to RTL to enable this:

    • a) LND_SERVER_URL
    • b) MACAROON_PATH
    • c) NODE_AUTH_TYPE
    • d) LND_CONFIG_PATH
    • e) RTL_CONFIG_PATH
    • f) RTL_SSO
    • g) RTL_COOKIE_PATH
    • h) LOGOUT_REDIRECT_LINK

    # Getting Started with Lightning Network Node management and RTL

    Suheb: We have created a detailed medium post (with screenshots) on how to operate RTL, which users can refer to, to figure out how to perform different operations on RTL.

    Read the RTL Getting Started Guide (opens new window).

    To deploy RTL on your BTCPay Server (opens new window), just update your server and then go to Server Settings >  Services > Ride the Lightning to open the dashboard. You can open it from your mobile phone by scanning a QR code as well.

    # What are some of the security risks, attack vectors users should be aware?

    Suheb: RTL was originally built to be operated by a home node operator, using the app to communicate with the LND node on a local network. With this assumption in mind, we have provided a simple setup which makes it easy to get the UI up and running.

    The access to the RTL node server is via HTTP. This makes for the communication to be un-encrypted b/w RTL node server and the browser. If, the user is on the home network or running the browser and RTL on the same computer, this should be fine. Any other setup should make use of a webserver to serve RTL and ensure that it's accessed via HTTPS and not HTTP.

    RTL users on Nodl and BTCPay Server have a secure setup, as RTL is served from an nginx server which provides an HTTPS connection and makes the whole communication encrypted.

    We are working on creating a guide for setting up an nginx server and provide simple instructions on how to secure the communication b/w RTL and browser. We also welcome contribution on this from the community and would happily accept a documentation PR which provide clear setup for users.

    Channel management in RTL:

    # What's in store next for RTL?

    Suheb: We have an endless list of items to work on. Other than the regular issues, (opens new window) which keep popping up from users, which we prioritize for development, we have some high-level goals, which we want to accomplish for RTL. Below list is not necessarily in any priority order.

    Multi-node Management – We want to provide users an ability to manage multiple-nodes via a single UI. The idea is to provide a top-level page, which will list all the nodes which are configured for RTL. User would be able to drill down to each node from that page and manage nodes from a single RTL instance.

    RTL installer – Automate RTL setup so that installation process is simpler than the current method of following the steps provided in the Readme file. This should also help with the configuration of nginx and letsencrypt, to enable access via https. Contribution on this is more than welcome.

    Better Mobile UX – Current UX for mobile users is less than optimal. We are attempting to provide a responsive UI, so that users can access the same app via browser on any device. This requires more UX optimization for mobile resolution.

    C-Lightning – We want to extend the RTL UI framework to other lightning node implementations as well. The current architecture can support it without major re-engineering, as we have an API abstraction layer written in nodejs. Additionally, projects like Lighter, offer a lot of promise to speed up the development process for this.

    Globalization – Multi-language support. We can provide a customizable framework for multi- language support. But to extend support for other languages would require contribution from the development community, to use the framework and create multi-language support.

    Ongoing UX improvement – We believe UX improvement is a never-ending cycle. And, we must keep the UI/UX fresh and optimal with ongoing user feedback and inputs from UX subject-matter- experts. Contribution on UX suggestions is more than welcome and we have created a project to exclusively focus on UX issues and priorities.

    Automated Testing – As the functional complexity increases, we need to add automated testing to ensure quality and less bugs. Another area, where developer contribution is more than welcome.

    # How to help and contribute to RTL

    Suheb: As indicated in the answer to the goals question, there are many areas where the community can contribute developer, user alike:

    • UX experts – Provide inputs to improve the usability of the application
    • Developers – RTL Installer, Identify and provide fixes for Front-end bugs, Automated tests.
    • Sysadmins/Infra experts – Install automation, Webserver configs, setup guides
    • Users – Testing, Reviews, Documentation

    We want RTL to be an open and thriving community project, as our intention is to always keep RTL open-source and free for all.

    RTL is a passion project, which we support along with our day jobs. Our intention is to contribute to the Bitcoin community with the skills we have. We are not experts in all the skills required to keep this project going and are learning every day. Our hope is that, RTL will ease user onboarding to lightning and can contribute a little bit towards Bitcoin and lightning growth and adoption.

    Any contribution to project from development, testing or review perspective is welcome as RTL will remain an open-source and free for all software.

    # Wrapping it up

    We hope you enjoyed the article and learned something new about the Lightning node management.

    If you have any questions, feel free to ask them on our community chat (opens new window). I'd like to thank Suheb for his time and for sharing great tips and insights on the fascinating project.

    Hopefully, BTCPay community will provide valuable feedback that will help them to continuously grow and improve their open-source software.

    You can follow Suheb on Twitter (opens new window) and RTL project on GitHub (opens new window).

    Last Updated: 11/2/2024, 5:56:25 AM

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

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

    - + diff --git a/rss.xml b/rss.xml index 1bf62eb4..22598fe9 100644 --- a/rss.xml +++ b/rss.xml @@ -4,7 +4,7 @@ BTCPay Server Blog https://blog.btcpayserver.org Official BTCPay Server Blog - Wed, 30 Oct 2024 14:39:54 GMT + Sat, 02 Nov 2024 05:57:43 GMT http://blogs.law.harvard.edu/tech/rss https://github.com/webmasterish/vuepress-plugin-feed diff --git a/sitemap.xml b/sitemap.xml index 9a9d4967..10ee39aa 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://blog.btcpayserver.org/1-0-3-128-released/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/1-0-3-132-released/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/2019-year-in-review/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/announcing-btcpay-directory/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/bitcoin-2024-the-year-of-ambassadors/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/bitcoin-bonus-scam/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/bitpaint-btcpay-server-stories/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/bitcoin-pos/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/brian-harrington-btcpay-server-stories/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-1-0-3-127-released/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-1-0-3-137-released/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-day-2019/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-day-2022-riga/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-day-riga-2019-recap/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-documentary-my-trust-in-you-is-broken/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-foundation-announcement/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-lnd-migration/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-misconceptions/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-0-3-147/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-0-3-95/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-0-4-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-0-5-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-0-5-4/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-0-5-6/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-0-6-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-1-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-10-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-11-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-12-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-13-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-2-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-3-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-4-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-5-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-6-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-7-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-8-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-9-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-2-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-cve-2022-32984/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-btse/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-foundation-introspective/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-grant-7-okcoin/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-grant-baillie-gifford/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-grant-pnxbet/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-kraken-grant/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-v1-0-7-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/btcpay-vault/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/case-study-bhb24-nostriga/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/case-study-bitcoin-atlantis/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/case-study-bitcoin-jungle-cr/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/case-study-bitcoin-people/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/case-study-coincards/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/case-study-hodlhodl-2023/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/case-study-opensubtitles/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/case-study-strainly/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/case-study-technical-prism-sideshift/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/case-study-voltage/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/dg-grant-2019/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/how-to-accept-bitcoin-donations/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/how-to-earn-bitcoin-btcpayserver/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/interview-with-jeff-vandrew-jr/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/jamie-lim-sticky-singapore/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/librepatron-patreon-alternative/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/mike-olthoff-coincards/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/nbxplorer-postgres/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/payment-requests/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/ride-the-lightning-btcpay/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/this-is-lies-youre-now-obsolete/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/vulnerability-disclosure-v1-0-7-0/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/xss-vulnerability-disclosure-doyensec/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/privacy-policy/2024-10-30T14:38:33.000Zdailyhttps://blog.btcpayserver.org/dailyhttps://blog.btcpayserver.org/category/dailyhttps://blog.btcpayserver.org/author/dailyhttps://blog.btcpayserver.org/category/releases/dailyhttps://blog.btcpayserver.org/category/stories/dailyhttps://blog.btcpayserver.org/category/announcements/dailyhttps://blog.btcpayserver.org/category/guides/dailyhttps://blog.btcpayserver.org/category/features/dailyhttps://blog.btcpayserver.org/category/case-studies/dailyhttps://blog.btcpayserver.org/category/plugins/dailyhttps://blog.btcpayserver.org/author/pavlenex/dailyhttps://blog.btcpayserver.org/author/Nicolas/dailyhttps://blog.btcpayserver.org/author/RockstarDev,%20Pavlenex,%20WebWorthy/dailyhttps://blog.btcpayserver.org/author/ndeet,%20petzsch/dailyhttps://blog.btcpayserver.org/author/Zaxounette/dailyhttps://blog.btcpayserver.org/author/WebWorthy/dailyhttps://blog.btcpayserver.org/author/Bas/dailyhttps://blog.btcpayserver.org/author/Pavlenex/dailyhttps://blog.btcpayserver.org/author/Pavlenex,%20Webworthy/dailyhttps://blog.btcpayserver.org/author/Elha,%20Pavlenex,%20Webworthy/dailyhttps://blog.btcpayserver.org/author/RockstarDev,%20MrKukks/dailyhttps://blog.btcpayserver.org/author/Pavlenex,%20Webworthy,%20Bobby%20Shell/dailyhttps://blog.btcpayserver.org/author/NicolasDorier/dailyhttps://blog.btcpayserver.org/page/2/dailyhttps://blog.btcpayserver.org/page/3/dailyhttps://blog.btcpayserver.org/page/4/dailyhttps://blog.btcpayserver.org/page/5/dailyhttps://blog.btcpayserver.org/page/6/dailyhttps://blog.btcpayserver.org/page/7/dailyhttps://blog.btcpayserver.org/page/8/dailyhttps://blog.btcpayserver.org/category/releases/page/2/dailyhttps://blog.btcpayserver.org/category/releases/page/3/dailyhttps://blog.btcpayserver.org/category/stories/page/2/dailyhttps://blog.btcpayserver.org/category/announcements/page/2/dailyhttps://blog.btcpayserver.org/author/pavlenex/page/2/dailyhttps://blog.btcpayserver.org/author/pavlenex/page/3/dailyhttps://blog.btcpayserver.org/author/pavlenex/page/4/daily \ No newline at end of file +https://blog.btcpayserver.org/1-0-3-128-released/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/1-0-3-132-released/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/2019-year-in-review/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/announcing-btcpay-directory/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/bitcoin-2024-the-year-of-ambassadors/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/bitcoin-bonus-scam/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/bitcoin-pos/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/bitpaint-btcpay-server-stories/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/brian-harrington-btcpay-server-stories/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-1-0-3-137-released/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-1-0-3-127-released/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-day-2019/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-day-2022-riga/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-day-riga-2019-recap/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-documentary-my-trust-in-you-is-broken/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-foundation-announcement/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-misconceptions/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-lnd-migration/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-0-3-147/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-0-3-95/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-0-4-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-0-5-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-0-5-4/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-0-5-6/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-0-6-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-1-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-10-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-11-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-12-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-13-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-2-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-3-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-4-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-6-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-5-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-7-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-8-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-1-9-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-2-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-cve-2022-32984/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-btse/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-foundation-introspective/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-grant-baillie-gifford/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-grant-7-okcoin/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-grant-pnxbet/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-kraken-grant/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-server-v1-0-7-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/btcpay-vault/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/case-study-bhb24-nostriga/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/case-study-bitcoin-jungle-cr/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/case-study-bitcoin-atlantis/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/case-study-bitcoin-people/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/case-study-coincards/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/case-study-hodlhodl-2023/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/case-study-opensubtitles/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/case-study-strainly/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/case-study-technical-prism-sideshift/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/dg-grant-2019/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/case-study-voltage/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/how-to-accept-bitcoin-donations/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/how-to-earn-bitcoin-btcpayserver/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/interview-with-jeff-vandrew-jr/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/jamie-lim-sticky-singapore/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/mike-olthoff-coincards/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/librepatron-patreon-alternative/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/nbxplorer-postgres/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/payment-requests/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/ride-the-lightning-btcpay/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/this-is-lies-youre-now-obsolete/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/vulnerability-disclosure-v1-0-7-0/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/xss-vulnerability-disclosure-doyensec/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/privacy-policy/2024-11-02T05:56:25.000Zdailyhttps://blog.btcpayserver.org/dailyhttps://blog.btcpayserver.org/category/dailyhttps://blog.btcpayserver.org/author/dailyhttps://blog.btcpayserver.org/category/releases/dailyhttps://blog.btcpayserver.org/category/stories/dailyhttps://blog.btcpayserver.org/category/announcements/dailyhttps://blog.btcpayserver.org/category/guides/dailyhttps://blog.btcpayserver.org/category/features/dailyhttps://blog.btcpayserver.org/category/case-studies/dailyhttps://blog.btcpayserver.org/category/plugins/dailyhttps://blog.btcpayserver.org/author/pavlenex/dailyhttps://blog.btcpayserver.org/author/Nicolas/dailyhttps://blog.btcpayserver.org/author/RockstarDev,%20Pavlenex,%20WebWorthy/dailyhttps://blog.btcpayserver.org/author/ndeet,%20petzsch/dailyhttps://blog.btcpayserver.org/author/Zaxounette/dailyhttps://blog.btcpayserver.org/author/WebWorthy/dailyhttps://blog.btcpayserver.org/author/Bas/dailyhttps://blog.btcpayserver.org/author/Pavlenex/dailyhttps://blog.btcpayserver.org/author/Pavlenex,%20Webworthy/dailyhttps://blog.btcpayserver.org/author/Elha,%20Pavlenex,%20Webworthy/dailyhttps://blog.btcpayserver.org/author/RockstarDev,%20MrKukks/dailyhttps://blog.btcpayserver.org/author/Pavlenex,%20Webworthy,%20Bobby%20Shell/dailyhttps://blog.btcpayserver.org/author/NicolasDorier/dailyhttps://blog.btcpayserver.org/page/2/dailyhttps://blog.btcpayserver.org/page/3/dailyhttps://blog.btcpayserver.org/page/4/dailyhttps://blog.btcpayserver.org/page/5/dailyhttps://blog.btcpayserver.org/page/6/dailyhttps://blog.btcpayserver.org/page/7/dailyhttps://blog.btcpayserver.org/page/8/dailyhttps://blog.btcpayserver.org/category/releases/page/2/dailyhttps://blog.btcpayserver.org/category/releases/page/3/dailyhttps://blog.btcpayserver.org/category/stories/page/2/dailyhttps://blog.btcpayserver.org/category/announcements/page/2/dailyhttps://blog.btcpayserver.org/author/pavlenex/page/2/dailyhttps://blog.btcpayserver.org/author/pavlenex/page/3/dailyhttps://blog.btcpayserver.org/author/pavlenex/page/4/daily \ No newline at end of file diff --git a/this-is-lies-youre-now-obsolete/index.html b/this-is-lies-youre-now-obsolete/index.html index 60b2cd3b..e2a2870d 100644 --- a/this-is-lies-youre-now-obsolete/index.html +++ b/this-is-lies-youre-now-obsolete/index.html @@ -12,7 +12,7 @@ - + @@ -52,7 +52,7 @@ Twitter (opens new window) GitHub - (opens new window)

    2 years have now passed since the infamous tweet (opens new window) that encouraged me to write the first line of code for BTCPay Server. As some of you may already know from the numerous podcasts (opens new window) I have done; at this point in time, I truly feared that Bitcoin was in danger. Not because of any fundamental flaws in the base layer, but because everyone was relying on third-parties to build on top of Bitcoin. 2 years ago today, I swore to make these third-party services obsolete.

    It is possible to build centralized systems on top of decentralized ones. This was basically the only option at the time. I blamed Bitcoin Core for not having a good enough API to handle the most common scenarios that the industry needed at the time. As a result of this, the void was filled by third-party providers such as blockchain.info, BitPay or blockcypher. All these services were delivering real value by making it easy to build your own service on top of Bitcoin. Anyone who tried to use the Bitcoin Core API and who did not really care about decentralization would not take any second thought about using easier centralized alternative.

    I did not blame those centralized parties who saw a need in the market, filled this gap and made a profit out of it. Nor did I blame the people who put their own interest above Bitcoin by using third-party providers. I don't believe anymore that Bitcoin Core should be to blame either. Bitcoin Core should be as minimalist as possible as it is very costly to make any change due to the amount of review it requires. I think Bitcoin core should focus on providing access to its internals of anything that is hard to get right (such as mempool state and validation).

    The problem to solve at the time was: how do we ensure that individuals can act on behalf of their companies best interest whilst also ensuring that bitcoin becomes more, rather than less, secure. In other words; how do we make these third-party services threatening Bitcoin, obsolete.

    BitPay was, in my mind, the number one threat to the security of bitcoin at the time. I am proud to say today that this threat is no longer present.

    BitPay itself ended up focusing their efforts trying to appeal to any business which does not really have skin in the game for Bitcoin. This made room for other centralized payment processors to fill the void (OpenNode, Globee, CoinPayments, Blockonomics, Strike, CoinGate) to name a few. There is now an explosion of self-hosted easy self-hostable infrastructures (BTCPay of course, but also Electrum Personal Server, NBXplorer, Esplora and many other). Therefore, new services no longer have to rely on third-party services, the self-hosted solutions are easier to use, put your in control and don't require your credit card and personal information.

    To top it off; centralized payment processors face enormous difficulties when expanding globally due to compliance and regulation while self-hosting open-source solutions thrives across borders with no such issues. While centralized payment processors spend countless hours complying with regulations, we can put our full efforts into expanding and growing without the need to ask for permission.

    If BitPay were to attempt an attack on the Bitcoin network today, we would simply shrug at it. Not only do they no longer have a monopoly on the market, but their own customers are now mainly indifferent to Bitcoin. For better or worse, only those who are not indifferent to Bitcoin have enough energy to make a difference.

    Bitcoin will be the standard of international wealth transfer or payments because it has been built specifically to work around the biggest friction that all alternative systems still need to comply with: the need to ask for permission. If your business or product is built to leverage Bitcoin but needs permission, you are like a sailor trying to sail against the wind. Increasing the size of the sail will not work, it will only make the resistance bigger. The main objective of BTCPay was to make sure centralized services are no longer the default choice for building your business. I think we succeeded.

    To elaborate on the sailing metaphor, BTCPay enjoyed a powerful tailwind with our enthusiastic contributors. We are very thankful to all who contribute to the project and the task at hand. Thank you for continuously spending your time and making sure individuals and businesses worldwide can have an open future without barriers.

    But we are reaching a limit; it has been a full-time job to channel this energy so that it does not go to waste or is ignored. We need to take advantage of our tailwind and get a bigger sail. We have a plan on how to do this without compromising one satoshi on the ideals that make you love this project.

    On September 16th (a day after the HoneyBadger conference), we are organizing a BTCPay Day. Here I will do a presentation and reveal and outline how we plan to sustain and further develop BTCPay in the future. Stay tuned; we have a great journey ahead of us and we cannot wait to show you where it is going.

    Apart from myself, many of our contributors will be attending and doing presentations and workshops. This whole-day event, dedicated to BTCPay, will be held in CryptoCash (opens new window) office (Elizabetes iela22, Rīga, LV) in the city center. We will provide more details very soon.

    Whether you’re coding, using BTCPay, testing it, providing support to new users, doing graphic designs, UX/UI, maintaining directories, blogs writing documentation, spreading the word or simply interested in the BTCPay – thank you for being with me throughout this 2-year voyage. It’s been 2 wild years. Here’s to many more.

    Onboard!🍺🛥️.

    Last Updated: 10/30/2024, 2:38:33 PM

    + (opens new window)

    2 years have now passed since the infamous tweet (opens new window) that encouraged me to write the first line of code for BTCPay Server. As some of you may already know from the numerous podcasts (opens new window) I have done; at this point in time, I truly feared that Bitcoin was in danger. Not because of any fundamental flaws in the base layer, but because everyone was relying on third-parties to build on top of Bitcoin. 2 years ago today, I swore to make these third-party services obsolete.

    It is possible to build centralized systems on top of decentralized ones. This was basically the only option at the time. I blamed Bitcoin Core for not having a good enough API to handle the most common scenarios that the industry needed at the time. As a result of this, the void was filled by third-party providers such as blockchain.info, BitPay or blockcypher. All these services were delivering real value by making it easy to build your own service on top of Bitcoin. Anyone who tried to use the Bitcoin Core API and who did not really care about decentralization would not take any second thought about using easier centralized alternative.

    I did not blame those centralized parties who saw a need in the market, filled this gap and made a profit out of it. Nor did I blame the people who put their own interest above Bitcoin by using third-party providers. I don't believe anymore that Bitcoin Core should be to blame either. Bitcoin Core should be as minimalist as possible as it is very costly to make any change due to the amount of review it requires. I think Bitcoin core should focus on providing access to its internals of anything that is hard to get right (such as mempool state and validation).

    The problem to solve at the time was: how do we ensure that individuals can act on behalf of their companies best interest whilst also ensuring that bitcoin becomes more, rather than less, secure. In other words; how do we make these third-party services threatening Bitcoin, obsolete.

    BitPay was, in my mind, the number one threat to the security of bitcoin at the time. I am proud to say today that this threat is no longer present.

    BitPay itself ended up focusing their efforts trying to appeal to any business which does not really have skin in the game for Bitcoin. This made room for other centralized payment processors to fill the void (OpenNode, Globee, CoinPayments, Blockonomics, Strike, CoinGate) to name a few. There is now an explosion of self-hosted easy self-hostable infrastructures (BTCPay of course, but also Electrum Personal Server, NBXplorer, Esplora and many other). Therefore, new services no longer have to rely on third-party services, the self-hosted solutions are easier to use, put your in control and don't require your credit card and personal information.

    To top it off; centralized payment processors face enormous difficulties when expanding globally due to compliance and regulation while self-hosting open-source solutions thrives across borders with no such issues. While centralized payment processors spend countless hours complying with regulations, we can put our full efforts into expanding and growing without the need to ask for permission.

    If BitPay were to attempt an attack on the Bitcoin network today, we would simply shrug at it. Not only do they no longer have a monopoly on the market, but their own customers are now mainly indifferent to Bitcoin. For better or worse, only those who are not indifferent to Bitcoin have enough energy to make a difference.

    Bitcoin will be the standard of international wealth transfer or payments because it has been built specifically to work around the biggest friction that all alternative systems still need to comply with: the need to ask for permission. If your business or product is built to leverage Bitcoin but needs permission, you are like a sailor trying to sail against the wind. Increasing the size of the sail will not work, it will only make the resistance bigger. The main objective of BTCPay was to make sure centralized services are no longer the default choice for building your business. I think we succeeded.

    To elaborate on the sailing metaphor, BTCPay enjoyed a powerful tailwind with our enthusiastic contributors. We are very thankful to all who contribute to the project and the task at hand. Thank you for continuously spending your time and making sure individuals and businesses worldwide can have an open future without barriers.

    But we are reaching a limit; it has been a full-time job to channel this energy so that it does not go to waste or is ignored. We need to take advantage of our tailwind and get a bigger sail. We have a plan on how to do this without compromising one satoshi on the ideals that make you love this project.

    On September 16th (a day after the HoneyBadger conference), we are organizing a BTCPay Day. Here I will do a presentation and reveal and outline how we plan to sustain and further develop BTCPay in the future. Stay tuned; we have a great journey ahead of us and we cannot wait to show you where it is going.

    Apart from myself, many of our contributors will be attending and doing presentations and workshops. This whole-day event, dedicated to BTCPay, will be held in CryptoCash (opens new window) office (Elizabetes iela22, Rīga, LV) in the city center. We will provide more details very soon.

    Whether you’re coding, using BTCPay, testing it, providing support to new users, doing graphic designs, UX/UI, maintaining directories, blogs writing documentation, spreading the word or simply interested in the BTCPay – thank you for being with me throughout this 2-year voyage. It’s been 2 wild years. Here’s to many more.

    Onboard!🍺🛥️.

    Last Updated: 11/2/2024, 5:56:25 AM

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

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

    - + diff --git a/vulnerability-disclosure-v1-0-7-0/index.html b/vulnerability-disclosure-v1-0-7-0/index.html index d81784f9..93f6532e 100644 --- a/vulnerability-disclosure-v1-0-7-0/index.html +++ b/vulnerability-disclosure-v1-0-7-0/index.html @@ -12,7 +12,7 @@ - + @@ -53,7 +53,7 @@ (opens new window) GitHub (opens new window)

    On March 30th, we released BTCPay Server v1.0.7.1. This version was a security release that patched one critical, one medium and several low-impact vulnerabilities in all BTCPay Server versions prior to v.1.0.7.1 (opens new window).

    If you're a BTCPay Server user running a version older than v.1.0.7.1, we strongly recommend that you update your instance. To update, go to Server Settings > Maintenance tab and click Update or use the command btcpay-update.sh in the command line.

    # ⏱️ Timeline

    1. 19.03. - Vulnerabilities responsibly disclosed by Tesla's security engineering team.
    2. 19.03. - BTCPay Server team acknowledged the findings and started investigating.
    3. 19.03. - BTCPay Server team confirmed vulnerabilities.
    4. 20.03-23.03 -BTCPay Server and Tesla security engineering team work together to patch the vulnerabilities and determine further steps.
    5. 24.03 - Tesla security requests filing of the 6 CVE-IDs for disclosed issues.
    6. 25.03 - Tesla Security team assist in filing the CVE-IDs with MITRE.
    7. 26.03 - 6 CVE-IDs reserved with MITRE.
    8. 30.03 - BTCPay Server v1.0.7.1 released that patches all vulnerabilities
    9. 30.03 - BTCPay Server publicly acknowledged the findings and announced a new release urging affected users to update in order to mitigate.

    In this article, we are disclosing the vulnerabilities.

    # CVE-2021-29251 (Account takeover)

    A malicious party could generate an email asking for a password reset to the victim. If the victim clicked on the link in the mail (or if some anti-virus email software automatically visited such link), then the targeted account could be taken over.

    • Details: Host header manipulation (Host, X-Forwarded- Host, and X-Forwarded-For) which allows an attacker to spoof password reset URL which leads to an account takeover with either no user interaction under certain circumstances where enterprise mail clients are used or with single-click user interaction.
    • Users affected: Users running docker deployment, that have email server settings set up and share their instance with other users.
    • Impact: Account takeover / Escalation of Privileges
    • Severity: Critical
    • Affected versions <= 1.0.7.1

    # CVE-2021-29246 (Path Traversal)

    BTCPay Server was not properly validating file name in upload forms, which could result in uploaded files to be saved in arbitrary location on the server. The forms needed admin permission.

    • Details: BTCPay versions <= 1.0.7.0 suffers from directory traversal which allows an attacker with admin privileges to craft a malicious plugin file with special characters to upload the file outside of the restricted directory which leads to code execution.
    • Impact: Code Execution
    • Severity: Medium
    • Affected versions <= 1.0.7.1

    # CVE-2021-29250 (Stored XSS)

    XSS vulnerability in the Point of Sale feature.

    • Details: BTCPay versions <= 1.0.7.0 suffer from Stored Cross-Site Scripting (XSS) vulnerability within POS Add Products functionality which enables cookie stealing.
    • Impact: Cross Site Scripting (XSS)
    • Severity: Medium
    • Affected versions <= 1.0.7.1

    # CVE-2021-29245 (Insufficient Randomness)

    The generation of legacy API Keys and the selection of UTXOs in Payjoin were using a weak RNG. -Legacy API Key can only be used to generate new invoices. If you use those, we advise you to regenerate a new API Key for your store.

    • Details: Method GenerateLegacyAPIKey at TokenRepository.cs uses a weak method Next to produce random values.
    • Impact: Other/API
    • Severity: Low
    • Affected versions <= 1.0.7.1

    # CVE-2021-29247 (Lack of httponly)

    A cookie we are using for saving preferences of users (such as the search string in the invoices page) could be used from javascript because it was missing the httponly flag.

    • Details: BTCPay versions <= 1.0.7.0 could allow a remote attacker to obtain sensitive information caused by the failure to set the HTTPOnly flag. A remote attacker could exploit this vulnerability to obtain sensitive information from the cookie.
    • Severity: Low
    • Affected versions <= 1.0.7.1

    # CVE-2021-29248 (Lack of secure)

    • Details: BTCPay versions <= 1.0.7.0 could allow a remote attacker to obtain sensitive information, caused by the failure to set the Secure flag. A remote attacker could exploit this vulnerability to obtain sensitive information from the cookie.
    • Severity: Low
    • Affected versions <= 1.0.7.1

    # CVE-2021-29250 (Stored XSS)

    XSS vulnerability in the Point of Sale feature.

    • Details: BTCPay versions <= 1.0.7.0 suffer from Stored Cross-Site Scripting (XSS) vulnerability within POS Add Products functionality which enables cookie stealing.
    • Impact: Cross Site Scripting (XSS)
    • Severity: Medium
    • Affected versions <= 1.0.7.1

    # No rate limit of forget password page

    This vulnerability was reported by Qaiser Abbas, an independent researcher.

    • Details: The forget password page was not properly rate-limiting the attempts, resulting in a malicious user mail bombard the victim with forget password emails.
    • Severity: Low
    • Affected versions <= 1.0.7.1

    # Summary

    We would like to thank Tesla for submitting the disclosure that led to these fixes and helping us with remediation. We also want to thank Qaiser Abbas, an independent web-security researcher, for an additional responsible vulnerability disclosure that was handled in this release.

    As an open-source project the privacy and security of our users and community are our priority and we're investing efforts in further improving our security processes, including the creation of a bug-bounty program.

    Thank you! 💚

    Last Updated: 10/30/2024, 2:38:33 PM

    +Legacy API Key can only be used to generate new invoices. If you use those, we advise you to regenerate a new API Key for your store.

    • Details: Method GenerateLegacyAPIKey at TokenRepository.cs uses a weak method Next to produce random values.
    • Impact: Other/API
    • Severity: Low
    • Affected versions <= 1.0.7.1

    # CVE-2021-29247 (Lack of httponly)

    A cookie we are using for saving preferences of users (such as the search string in the invoices page) could be used from javascript because it was missing the httponly flag.

    • Details: BTCPay versions <= 1.0.7.0 could allow a remote attacker to obtain sensitive information caused by the failure to set the HTTPOnly flag. A remote attacker could exploit this vulnerability to obtain sensitive information from the cookie.
    • Severity: Low
    • Affected versions <= 1.0.7.1

    # CVE-2021-29248 (Lack of secure)

    • Details: BTCPay versions <= 1.0.7.0 could allow a remote attacker to obtain sensitive information, caused by the failure to set the Secure flag. A remote attacker could exploit this vulnerability to obtain sensitive information from the cookie.
    • Severity: Low
    • Affected versions <= 1.0.7.1

    # CVE-2021-29250 (Stored XSS)

    XSS vulnerability in the Point of Sale feature.

    • Details: BTCPay versions <= 1.0.7.0 suffer from Stored Cross-Site Scripting (XSS) vulnerability within POS Add Products functionality which enables cookie stealing.
    • Impact: Cross Site Scripting (XSS)
    • Severity: Medium
    • Affected versions <= 1.0.7.1

    # No rate limit of forget password page

    This vulnerability was reported by Qaiser Abbas, an independent researcher.

    • Details: The forget password page was not properly rate-limiting the attempts, resulting in a malicious user mail bombard the victim with forget password emails.
    • Severity: Low
    • Affected versions <= 1.0.7.1

    # Summary

    We would like to thank Tesla for submitting the disclosure that led to these fixes and helping us with remediation. We also want to thank Qaiser Abbas, an independent web-security researcher, for an additional responsible vulnerability disclosure that was handled in this release.

    As an open-source project the privacy and security of our users and community are our priority and we're investing efforts in further improving our security processes, including the creation of a bug-bounty program.

    Thank you! 💚

    Last Updated: 11/2/2024, 5:56:25 AM

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

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

    - + diff --git a/xss-vulnerability-disclosure-doyensec/index.html b/xss-vulnerability-disclosure-doyensec/index.html index 75105292..ae694b18 100644 --- a/xss-vulnerability-disclosure-doyensec/index.html +++ b/xss-vulnerability-disclosure-doyensec/index.html @@ -12,7 +12,7 @@ - + @@ -56,7 +56,7 @@
    1

    This is however unsafe, and we should have used JavaScriptEncoder or JsonHelper (opens new window) to encode properly.

    Kevin Joensen of Doyensec (opens new window) provided a proof of concept that showed us how the attack can be executed.

    # Timeline

    • 2019-08-07 - Kevin Joensen disclosed the vulnerability.
    • 2019-08-08 - Kevin Joensen provided the proof of concept.
    • 2019-08-09 - Vulnerability has been patched and pull request submitted
    • 2019-08-09 - Pull request reviewed and merged, making sure no breaking changes are made.
    • 2019-08-09 - we reached out to publicly known third-party hosts and notified them about the issue, those who we reached out to updated their instances.
    • 2019-08-10 - 1.0.3.127 released
    • 2019-08-11 - We acknowledged the vulnerability and wrote a blog post, (opens new window) urging affected users to update.

    # What we will do:

    To mitigate the escalation in case a bug is discovered in the future, we will make sure that the SSH key can’t be retrieve with an ajax request.

    # Recommendation:

    You don’t need to do anything if:

    • You are self-hosted (ie. not sharing your instance with merchants (users) you don’t trust)
    • If you have not clicked onto any link made by a merchant using your server

    If you do not fall in those category, and believe you may be affected, besides updating, our recommendation is:

    • Edit ~/.ssh/authorized_keys on the host, and remove the ssh key of BTCPa and review that there is no key you do not recognize
    • Remove ~/.ssh/id_rsa_btcpay

    This SSH key is used by the “Update” button in BTCPay Server.

    Regenerate keys and commit the changes:

    ssh-keygen -t rsa -f /root/.ssh/id_rsa_btcpay -q -P “” echo “# Key used by BTCPay Server” >> /root/.ssh/authorized_keys cat /root/.ssh/id_rsa_btcpay.pub >> /root/.ssh/authorized_keys -. btcpay-setup.sh -i

    If BTCPay Server gets enough funding in the future, we will definitively consider hiring Doyensec (opens new window) to perform a deeper security audit of our software.

    We would like to thank Doyensec team for disclosing the vulnerability in a professional manner and making sure our users stay safe throught the process. We would like to invite other security researchers interested in reviewing the code of an open-source project, to take a look at our GitHub (opens new window).

    Last Updated: 10/30/2024, 2:38:33 PM

    +. btcpay-setup.sh -i

    If BTCPay Server gets enough funding in the future, we will definitively consider hiring Doyensec (opens new window) to perform a deeper security audit of our software.

    We would like to thank Doyensec team for disclosing the vulnerability in a professional manner and making sure our users stay safe throught the process. We would like to invite other security researchers interested in reviewing the code of an open-source project, to take a look at our GitHub (opens new window).

    Last Updated: 11/2/2024, 5:56:25 AM

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

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

    - +