Online payments have traditionally been initiated in a variety of different ways, but contain approximately the same parameters and result in roughly the same outcome - the transfer of funds from a sending party to a receiving party. The Payment Links specification outlines a standard set of IRI parameters for the purposes of transmitting payment from a source to a destination. The specification does not cover the method of transmission, but rather the initiation of the payment process. It is intended as a part of a family of open Internet Payment specifications.

Introduction

A number of Web-based payment services exist that are capable of initiating and transmitting a payment from a sending party to a receiving party. While the details of how the transfer occurs often differ from provider to provider, the information necessary to initiate the transfer of funds are typically the same. There exists the mention of a receiving party, the amount, a currency, and usually a description of the payment.

The following are all examples of valid Payment Links according to this specification:

Additionally, the standardization of hyperlinks to initiate payment will aid search engines, and web browsers to detect places of payment initiation on websites.

Design Criteria

The overarching goal for this specification is simplicity. While there is a tendency to add more advanced features to any specification, the design criteria for this specification revolved around describing a simple set of common terms that can be used to describe the initiation of most monetary transfers. Specifically, the transaction process, how payment is sent and received, Web Services for transacting assets, payment exceptions, payment notifications, digital contracts, and receipt handling are not covered by this specification.

Personal and commercial transactions can be broken into two broad categories. The first is a one-way transfer - typically called a gift, donation or implied agreement. The second is a two-way transfer - typically called a contract, grant or explicit agreement. This specification covers initiation of the simpler one-way transfers and leaves two-way transfers to another specification.

Since the Internationalized Resource Identifier (IRI) [[!IRI]] is the most commonly used mechanism for initiating a payment on the Internet, it was determined that the best carrier for payment parameters was the IRI. This specification is not intended to be a Media Type or Internet protocol scheme specification, but rather a set of parameters that can be used with any Internet protocol scheme.

Payment Parameters

All payment parameters and values MUST conform to the [[!IRI]] specification. The only parameter that is required to be included in the Payment Link is the amount parameter.

amount
The number of currency units to transfer. The value of this item MUST be a whole integer value, for example 6, or a decimal value, for example 12.73.
asset
An IRI that SHOULD be dereferenceable describing the asset that is being transacted. For example: http://example.com/articles/1 or http://example.com/livestock/chickens#organic.
count
The number of assets being transacted. The value of this item MUST be a whole integer value, for example 3, or a decimal value, for example 5.8.
currency
The monetary medium of exchange associated with the amount. This value SHOULD be either an ISO 4217 3 letter currency code, such as USD, or an IRI pointing to a human and machine-readable description of the currency, such as https://w3id.org/currencies/bitcoin.
description
A short, human-readable description outlining the purpose of the transfer.
to
An identifier specifying the target person, organization or financial account that will be receiving the transfer. This value is dependent on the payment service implementation. Some examples include 78384827-728472-3847, msporny@digitalbazaar.com, or 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa.

Link Relations

If a set of Payment Link parameters are coupled with a mechanism, such as HTML or HTTP, that allows the expression of a link relationship, the payment link relationship SHOULD be specified along side the IRI.

HTML:
<a rel="payment" href="http://example.com/donate/redcross?amount=10.00&currency=USD">Donate $10 to the Red Cross</a>

HTTP Header:
Link: <http://example.com/payment?amount=0.99&currency=USD&asset=http://example.com/songs/let-them-eat-cake>; rel="payment"