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.
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,
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.
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.