Payto Protocol
Specification: PAYTO Uniform Resource Identifier (URI) Schemeβ
This memo introduces an interim URI scheme for resources that identify a payment recipient. Typically, these resources are resolved by making a payment to the designated recipient. However, resolution can also encompass non-financial operations, such as sending a message to the recipient. This interpretation expands on RFC 8905.
PAYTO URI Schemeβ
Introductionβ
The PAYTO URI scheme designates the recipient of a payment. The resource designated by this URI is the recipient itself. Typically, when a PAYTO URI is "dereferenced" (used within a context that expects a URI to provide a representation of the resource it identifies), a payment is made to the designated recipient.
Scheme Syntaxβ
This document defines the 'payto' Uniform Resource Identifier (URI) scheme to designate transfer form data for payments.
The general syntax is:
payto-URI = "payto://" authority path-abempty [ "?" opts ]
opts = opt *( "&" opt )
opt-name = generic-opt / authority-specific-opt
opt-value = *pchar
opt = opt-name "=" opt-value
generic-opt = "amount" / "receiver-name" / "sender-name" /
"message" / "instruction"
authority-specific-opt = ALPHA *( ALPHA / DIGIT / "-" / "." )
authority = ALPHA *( ALPHA / DIGIT / "-" / "." )
Operationsβ
The primary operation on a PAYTO URI is its resolution. This is typically accomplished by making a payment to the designated recipient.
Schemeβ
ICANβ
In the ICAN (International Crypto Asset Network), the 'payto' scheme is employed. Typically, the address is a cryptocurrency wallet address, and the amount indicates the number of crypto coins to be sent, separated by ':'. The network field specifies the blockchain for the transaction.
Example:
payto://xcb/cb00β¦?amount=CTN:3.14
This example signals a request to pay 3.14 CTN tokens to the address cb00β¦
on the XCB (Core Blockchain) network.
Additional parameters for ICAN:
- Instead of
amount
, you can usefiat
to indicate the use of Fiat (government-issued money) as the value.
Example:
payto://xcb/cb00β¦?fiat=USD:50
- Implement the
dl
parameter to set an expiration time for the transaction, expressed in the local timezone and converted to a UNIX timestamp in seconds.
Example:
payto://xcb/cb00β¦?amount=CTN:3.14&dl=1677312123
- Include the
rc
parameter to set up recurring payments. The accepted values arey
for yearly,m
for monthly,d
for daily. Ifd
is prefixed with a number between2-365
, it indicates the recurrence every "number" of days. Due to varying month lengths, if a chosen day doesn't exist in a subsequent month, the payment will execute on the last day of that month.
Example:
payto://xcb/cb00β¦?amount=CTN:3.14&rc=d15
CorePass current supportβ
CorePass currently supports the following assets:
- CTN (Core Token)
- XCB (Core Blockchain)
And the following actions:
- Initiate a payment by link
- Initiate a payment by QR code
- Prefill a payment form
Security Considerationsβ
Always validate the authenticity and correctness of PAYTO URIs. Due to the irreversible nature of crypto asset transactions, users should confirm both the recipient's address and the amount before initiating a transfer.
Normative Referencesβ
RFC3986: (Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier URI: Generic Syntax", STD 66, RFC 3986, DOI 10.17487/RFC3986, January 2005.)
RFC8905: (Thaler, D.), "The 'payto' URI Scheme for Payments", RFC