Extension for BIP-0070 to support recurring payments [combined summary]



Individual post summaries: Click here to read the original discussion on the bitcoin-dev mailing list

Published on: 2014-02-26T10:30:46+00:00


Summary:

The email thread discusses the protocol for recurring payments. It covers aspects such as contract negotiation and recurring payment details. The contract sets the payment bounds, while the wallet handles payments within those bounds. The protocol allows for flexibility in specifying payment periods and polling the merchant for pending payments. Multiple contracts can occur, such as when a customer downgrades their subscription. The protocol is designed to allow the wallet to poll the merchant for pending payments without knowing the exact payment date.Feedback from BitPay and others is sought to ensure customer requirements are met. Suggestions include making the RecurringPaymentDetails field optional, specifying periods more flexibly, documenting value constraints, and clarifying the purpose of certain identifiers. The need for a daily option and specifying recurring cycles is also discussed.The team has implemented a BIP0070 extension for recurring billing and tested it with a working prototype. They are awaiting feedback before finalizing the protocol design and merging the code. The team also considers implementing subscription cancellation and upgrade/downgrade features and seeks input on reporting errors to the wallet.The second iteration of the prototype includes subscription cancellation and upgrade/downgrade. The team has checked in both the bitcoinj and php server implementations for testing. They have extended the RecurringPaymentDetails message to accommodate subscription changes and cancellations. A unique subscription ID is used to track multiple contracts with payment bounds and validity periods. Feedback from Kevin is addressed, and suggestions are incorporated into the design.The discussion addresses reporting errors to the wallet and suggests adding a status code in PaymentRequest or using the memo field. Concerns about empty sets of outputs and bitcoin-qt's handling of PaymentRequests without outputs are raised.The proposed protocol aims to enable recurring payments through an extension of BIP-0070. It offers advantages in user control and subscription management tools in wallets. The process involves initial registration, ongoing payments, subscription changes, and cancellation. Wallets poll the merchant for due payments, support overage charges, and handle subscription changes and cancellations. The protocol is still being refined, and feedback on the high-level proposal is welcome.Missed payments are discussed, with suggestions for storing local subscription requests and making payments when the wallet app is running. Canceling subscriptions should be possible at any time, with a courtesy message sent to the merchant. Some propose a textual reminder to send money instead of automated recurring payments to add human review. The implementation of recurring payments could be supported through a Bounty or BIP. The discussion also touches on HTML5 local storage and the challenges faced by decentralized standalone wallet clients. Overall, feedback and suggestions for improvement are welcomed.Jeff Garzik, a Bitcoin core developer and open-source evangelist, emphasizes the importance of users having control over their money. He mentions that recurring payments and subscriptions are frequently requested features in the Bitcoin network but implementing them would require careful planning and execution.In 2014, Stephane Brossier proposed an extension to the Payment Protocol (bip-0070) for recurring payments in Bitcoin. This was in response to the growing popularity of the subscription economy model and the need for a protocol to address this. Stephane's open-source billing platform, Kill Bill, had developed a prototype for recurring billing in Bitcoin, which followed a workflow similar to bip-0070.The proposed workflow involves the wallet receiving a RecurringPaymentRequestAuth that describes the nature of future recurring payments. The customer is prompted by the wallet to authorize it. The wallet then polls the merchant server at specified intervals, and if the merchant issues a PaymentRequest within the accepted bounds set by the customer, the payment is made using the same process as bip-0070.Stéphane is interested in gauging the community's interest in this proposal and is willing to provide more details and implementation using bitcoinj as a wallet and Kill Bill as a merchant server. With Bitcoin becoming more mainstream, defining a protocol for recurring payments is seen as a logical step forward.


Updated on: 2023-08-01T07:31:59.306599+00:00