Payment requests are a core feature of any bitcoin wallet, i.e being able to receive incoming funds into your account. Creating payment requests will allow you to receive funds into your bitcoin wallet.
There are various inputs required to generate a bitcoin payment request. This data is then encoded into a QR code/hash which can be shared with the payer as a form of invoice. These inputs will often vary from invoice to invoice, creating a unique payment request each time.
When generating a payment request, this input field allows you to request a payment from a particular contact or address.
Choosing the amount of bitcoin you wish to be payed.
This is a feature which allows you to add a message or "description" to each bitcoin transaction. Most famously, Bitcoin's genesis block contained the message, "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks."
Once a payment request has been created, there are a number of ways a user can share this information with the payer. The most common practises are:
The payer can then either scan the QR code or copy and paste the link into a payment input field in their bitcoin waller, autofilling the payment details and ensuring the data matches that of the payee's request.
There are a few key features of payment requests, most notably, that of newly created payee addresses to help mitigate privacy risks, as well as means of convenience. The reaons for this are as follows:
Firstly, using a separate address for each incoming payment makes it trivial to determine which customers have paid their payment requests. Your applications need only track the association between a particular payment request and the address used in it, and then scan the block chain for transactions matching that address. Therefore, new addresses make it easier to separate your transactions and track what is coming in and out of your wallet.
Secondly, and perhaps more importantly, generating a new bitcoin address for each payment request allows a degree of separation between the sender being able to view your address's balance (amount of bitcoin), as well as your incoming and outgoing transactions from that address. Simply put, not generating a new address for each payment request can expose your private financial data to the person you are requesting funds from. This might be fine when dealing with a trusted friend, but what if it's someone you can't trust or perhaps someone who might pose a security threat?
How to create a payment requests for someone not in your contacts?
Seeing a list of your payment requests and ones you've generated