Explainer
Payment Pointers are a standardized identifier for payment accounts. In the same way that an email address provides an identifier for a mailbox in the email ecosystem a payment pointer is used by an account holder to share the details of their account with a counter-party.
A Payment Pointer resolves to a URL (with the https scheme) that provides the location of a payment initiation service at which the counter-party can initiate a payment to or from the owner of the Payment Pointer.
Syntax
Payment Pointers start with a $
character to distinguish them from other identifiers and make it obvious that they are related to payments. To convert a Payment Pointer to a URL the $
is replaced with the standard prefix of a secure URL, https://
.
To accommodate short and easy to transcribe Payment Pointers some additional transformations are applied if the pointer has no path. If path of the transformed URL is empty or equal to /
it is given the path /.well-known/pay
. This accommodates the use case of origins that wish to host payment initiation services using a domain that also hosts other services (such as a website).
Payment Pointers don’t contain query strings or fragments, however payment initiation services MAY define standard parameters that can be used by a client when connecting to the payment initiation service endpoint.
Flow
When making or a receiving a payment, a user passes a Payment Pointer to the counter-party who resolves the corresponding URL and connects to the payment initiation service at that location. The counter-party discovers which payment methods are supported by the payment initiation service through Content-Type negotiation and then initiates the payment interacting with the user as required.