@using BTCPayServer.Abstractions.Models @using BTCPayServer.Views.Apps @using BTCPayServer.Client @using BTCPayServer.Plugins.PointOfSale @using BTCPayServer.Forms @using BTCPayServer.TagHelpers @using Microsoft.AspNetCore.Mvc.TagHelpers @inject FormDataService FormDataService @inject BTCPayServer.Security.ContentSecurityPolicies Csp @model BTCPayServer.Plugins.PointOfSale.Models.UpdatePointOfSaleViewModel @{ ViewData.SetActivePage(AppsNavPages.Update, "Update Point of Sale", Model.Id); Csp.UnsafeEval(); var checkoutFormOptions = await FormDataService.GetSelect(Model.StoreId, Model.FormId); } @section PageHeadContent { } @section PageFootContent { }
@foreach (var type in Enum.GetValues()) { }
Uses the store's default currency (@Model.StoreDefaultCurrency) if empty.

Checkout

Keypad
Cart
Tips
Discounts
Not recommended for customer self-checkout.
Custom Payments

Additional Options

You can host point of sale buttons in an external website with the following code.

@if (Model.Example1 != null) { For anything with a custom amount
@Model.Example1
} @if (Model.Example2 != null) { For a specific item of your template
@Model.Example2
}

You can embed this POS via an iframe. @{ var iframe = $""; }
@iframe

A POST callback will be sent to the specified notificationUrl (for on-chain transactions when there are sufficient confirmations):

@Model.ExampleCallback

Never trust anything but id, ignore the other fields completely, an attacker can spoof those, they are present only for backward compatibility reason:

  • Send a GET request to https://btcpay.example.com/invoices/{invoiceId} with Content-Type: application/json; Authorization: Basic YourLegacyAPIkey", Legacy API key can be created with Access Tokens in Store settings
  • Verify that the orderId is from your backend, that the price is correct and that status is settled
  • You can then ship your order
@* We are deprecating the custom CSS options in favor of the store branding approach. Display this section only if these values are set. *@ @if (!string.IsNullOrWhiteSpace(Model.CustomCSSLink) || !string.IsNullOrWhiteSpace(Model.EmbeddedCSS)) {

}
Invoices
Delete this app