payment

 payment  in the context of the indieweb refers to a feature on an indie web site that provides a way for the visitor to that website to pay (credit card, currency, gift card, etc.) the person represented by that indie web site.


 * To make payments to support the IndieWeb community, please see The IndieWeb's open collective page at https://opencollective.com/indieweb.

Why
You should have a payment page (e.g. at you.example.com/pay) so:
 * anyone who visits your website can easily pay you (for whatever) in the ways you prefer to be paid, similar to how communication links help people communicate with you in the ways you prefer.
 * you can share a simple you.example.com/pay link to get paid

Why with amount
In addition, your payment page should support a specific amount from the URL so you can:
 * message a friend a payment link like yoursite/pay/16/ for a specific amount, to split dinner, pay for something they got for you like donuts etc.
 * provide a donation link like yoursite/pay/10 (e.g. for a donation optional yoga class)

How to
There are several tutorials on how to create links / URLs for various payment services to put on your web site:

Currency:
 * PayPal
 * PayPal donate link -
 * Fees: free with linked bank account, $0.30 + 2.9% for credit/debit.
 * PayPal.Me - create a simple-looking link to share for people to pay you from their PayPal accounts
 * Square Cash (cash.me - different from SquareUp!)
 * Requires linking your debit card to your account to receive or send money. Can optionally link a credit card to your account.
 * Doesn't work with UK postcode
 * Fees:
 * Personal account: none for debit card payments. 3% for credit card payments.
 * Business account: 2.75% is automatically deducted from any payment accepted with Cash for Business.
 * Create a simple-looking URL to share for people to pay you:
 * An amount can be pre-selected by adding it to the URL, e.g.
 * Venmo
 * Fees: free with linked bank account and some debit, 3% for credit
 * Create a simple-looking link to share for people to pay you:
 * Create a pre-filled link with amount and note:
 * https://venmo.com/paymentlinks
 * Flattr for one-time or recurring (monthly) micro-donations
 * Gifts can be anonymous
 * Fees: 10% on all the money you receive
 * Encourages both buttons and rel-payment
 * Monzo.me UK only, requires a Monzo card
 * Fees: No fees
 * Limit: Limited to £100
 * An amount can be pre-selected by adding it to the URL, e.g.
 * Monzo.me UK only, requires a Monzo card
 * Fees: No fees
 * Limit: Limited to £100
 * An amount can be pre-selected by adding it to the URL, e.g.

Gift card(s):
 * Starbucks Gift Card

Once you have a payment URL e.g. pay.example.com/username/usd/5, link to it with rel=payment, e.g.

Payment page with amount
Just like PayPal.me and Square Cash cash.me, your Payment page can allow a subdirectory component for a dollar amount, which it would then build into the specific payment method links: Alternatively this might read better as just "pay" (also less typing), e.g.
 * - to pay you $10

Provider link patterns (only these so far), for an amount of $13.37

For other providers, keep their icon / link - better to keep the option than make it curiously disappear.

Note: this can be handled fully serverside.

(add how to normalize URL numerical dollar values to something sensible)

(provide open source for sanitizing numerical values)

rel-payment examples
Specific rel=payment links:
 * uses rel=payment to link to Venmo, Paypal and Square Cash on his home page.
 * Pelle Wessman uses Jekyll to add Flattr rel=payment links to each blog post on voxpelli.com
 * has links to a bitcoin addresses hosted on coinbase a tip jar. I had a dogecoin address that was hosted on dogevault but dogecoin shut down after getting hacked.
 * undefined has a rel=payment link on his tantek.com home page to his "/pay" page with $1 autofilled in.

payment page examples
Overall /payment page. Just like having a /contact page, your indieweb site should have a /payment page with icons linked to various ways to pay you. Even better: /payment/nn support for auto-filling $ amounts

Aaron Parecki

 * provides links to his preferred payment methods on a separate payment page as of 2016-11-28:
 * https://aaronparecki.com/pay/
 * payment page will pre-fill the amount on the links to providers that support it when visiting a URL such as:
 * https://aaronparecki.com/pay/5
 * 2017-12-10 payment page now supports Payment Request API using the Stripe library.
 * As of 2020-04-26, I had to remove the credit card option from my payment page because it was being used to test stolen credit cards. Instead, I now have a new "payment request" post type, which requests a specific amount one time, and then no longer accepts payments once it's been paid. Example:
 * https://aaronparecki.com/2020/04/26/10/

Tantek

 * undefined provides a mobile-friendly payment page with preferred payment methods as of 2017-10-01 (built on IndieWebCamp NYC 2017 hack day!)
 * http://tantek.com/pay (and corresponding tantek.com/request later that night for use at dinner!)
 * 2017-12-10 added /pay/n support for auto-filling $ amounts (coded+deployed at IndieWebCamp Austin 2017 hack day!), e.g.
 * http://tantek.com/pay/10
 * 2017-12-18 Got it working with Venmo as well (in addition to Paypal and Square Cash) after some experimenting (so all three buttons now support explicit amount)

Jeremy Cherfas

 * has a page for supporters on his podcast site, offering various payment options and ways to pay.
 * https://eatthispodcast.com/supporters

Grant Richmond

 * has a payment page that supports multiple currencies https://pay.grant.codes
 * Amounts and currencies may be filled by adding them in the url:
 * https://pay.grant.codes/$5
 * https://pay.grant.codes/£5
 * If the value to be paid is in GBP and under £100 then a link to pay with Monzo is provided. Other currencies and higher values are handled by Stripe with Payment Request API support.

Jacky Alcine

 * has a pay page at: https://jacky.wtf/pay/

Marty McGuire

 * has a pay page at: https://martymcgui.re/pay/
 * Links to payment silo profiles (Venmo, PayPal, Square)
 * No support for URLs with payment values at this time.
 * Design shamelessly taken from undefined and silo images from . 😅

Eddie Hinkle

 * created a sponsor page eddiehinkle.com/sponsor (archived from 2019-07-13) and provided links to it in all podcasts he produced with rel=payment so that Overcast and other podcasts could link to it.
 * The sponsor page was planned to eventually support both one-time payments and monthly pledges.
 * As archived, it only supported pledges using Memberful. One-Time payments were planned for both Stripe and Square Cash

Podcast Examples
Quite a few podcasters include rel-payment metadata – mostly in their podcast feeds but also on their blog pages. Podcatchers have started using the data to automate donations. This was started by Marco Arment, creator of iOS podcast app Overcast and tested on his podcast ATP and the Relay FM Network.

Notable examples:
 * The 5by5 network uses it in their feeds
 * Relay FM has it for every podcast with a default set that can be overridden on a per show basis.
 * Big german podcaster Tim Pritlove uses it across all of his podcasts, both web pages and feeds

Scott Hanselman
Intro slide from Scott Hanselman's talk at .NET Fringe 2017:



Patreon
Patreon is a crowdfunding silo that encourages users to support artists and creators typically on a recurring basis. A variety of issues and critiques of the benefits of the site (and it's silo nature) can be found in No One Makes a Living on Patreon

Drip
Drip is a crowdfunding subsidiary site of Kickstarter.

Ko.fi
Ko-fi is a service with embeddable widgets that allows patrons or supporters to reward or tip users with money, ostensibly the amount that would purchase a cup of coffee.

Facebook
While not technically a direct payment method, Facebook during the 2017 holiday season encouraged users to add a donation button to their posts to encourage giving to non-profits.

In 2018 and expanding in 2019, Facebook also began offering Facebook Fan Subscriptions to creators on Facebook. The feature lets creators offer $4.99 monthly subscriptions to their fans, which gets them access to exclusive content and an opt-in Supporter badge that appears next to the user’s comments on the Page.

Affiliate Programs
An alternate, and less direct method of payment, is to utilize an affiliate payment program in which customized URLs to services or products which provide a payment or commission to the referring site.

Some common affiliate programs that creators frequently use include:
 * Amazon Affiliate Program

Overcast
Overcast, a podcast player, shows a payment button on the "now playing" screen if a link with rel=payment appears in the episode's show notes.


 * https://twitter.com/marcoarment/status/1028451747734409216
 * "Podcasters and CMS makers: Next version of Overcast looks for a link in every episode's show notes with . If present, Overcast adds a nice green "$" button on the Now Playing screen that opens up that donation/Patreon/membership URL of your choice." @marcoarment August 12, 2018

Castro Podcasts
Castro podcast player shows a "Support this podcast" button since at least 2018-12-22
 * Screenshot: https://twitter.com/tobsen/status/1114153812493852672

Publishing Software
Plugins exist for some open source publishing software:
 * WordPress Flattr plugin – adds rel-payment links to frontpage, blog post pages and feeds

Transistor.fm
The podcast host Transistor.fm provides a way to include a link to a payment page in every podcast episode, marked up with rel=payment.

"'Two days ago, @marcoarment suggested a new standard for podcasts: in a podcast's show notes would reveal a nice green ' @mijustin August 14, 2018 button on the Now Playing screen in @overcastfm. We just deployed this to @TransistorFM!'" @mijustin August 14, 2018

Fireside.fm
Fireside.fm podcast hosting has an advanced option to enter a payment URL, which generates.

Tools

 * Rel-Payment Firefox Addon – shows a clickable icon in the address bar when a payment link is detected for a page
 * Many podcatchers, like Instacast and gPodder, rely on rel-payment data in feeds for their integration with Flattr for eg. enabling automatic donations for listened episodes

Flattr
Flattr – publishes rel-payment links on their profile pages as well as on pages for each thing one can donate to. Also heavily uses rel-payment data in their open source browser add-ons.

Liberapay
Liberapay – an open source service to make recurring donations

Square Cash
Square Cash - allows you to collect payment, e.g. https://cash.me/$aaronpk. An amount can be pre-selected by adding it to the URL, e.g. https://cash.me/$aaronpk/10

Stripe
Stripe can be used to process credit card transactions on your website.

Credit card fraud

 * some notes on credit card fraud from CandyJapan

Twitter hazards

 * https://twitter.com/stimmyskye/status/1441177426239766531
 * "okay so as some people don't seem to know this is happening: when someone replies to one of your posts asking you for your paypal / venmo / etc, there are bots that will IMMEDIATELY clone your account and reply with a payment link. they block your account in the same second." @stimmyskye September 23, 2021

Coinbase bannings

 * Why avoid Coinbase for payment: https://twitter.com/violetblue/status/1111464067716149248
 * "Just want the well-meaning folks suggesting I check out Bitcoin to know that I was ejected from Coinbase for no reason at the same time they kicked other people in sex businesses off the service (including erotic comic artists). Add it to the list of non-options." @violetblue March 29, 2019

Sessions
Related sessions at prior IndieWebCamps
 * ?? session around the time of Patreon making major changes in 2018
 * 2019/Austin/dolladollabillz

Payment page with reason
It would also be nice to be able to share a URL with the reason for the payment as well, so when the user taps a payment button, the provider has the reason pre-filled in as well.

Take a look at the PayPal.me and Square Cash cash.me UIs, which I *think* let you edit the amount and add a reason. Those may be good enhancements to consider for such pre-filled out payment subpage URLs. Then again if the payment service provides a final opportunity to edit amount/reason, then having that on your own site may see redundant.
 * /pay/5/coffee
 * /pay/20/atm

Vendor support:
 * PayPal.me: unknown
 * Square Cash: unknown
 * Venmo:  param, e.g.:

Note: this could be handled fully serverside.

Interested:
 * undefined - one of my Falcon Itches: Payment Links

Perhaps a pay URL could also just have the reason, without an amount like:
 * /pay/tip/
 * /pay/donate/

has two payment pages, one at /pay/ the other at /tip/.

Escrow
There has been some discussion around using webmentions as a form of payment notification. has suggested syndicating these webmentions to a 3rdparty website as a form of Escrow. The interaction would work as follows:

Alice creates a post on her site, representing a payment to Bob, and sends him a homepage webmention. The post includes a link to a 3rdparty site (let's call it Carol's site). Bob replies to Alice's post thanking her for the payment.

Carol runs a site that tracks payments, so she looks for specific markup in the original post and subsequent reply. When Alice creates the post, the payment is currently pending. When Bob replies, the transaction is settled.

If Carol's site was considered trustworthy by both parties, they could use a separate mechanism to transfer funds to her account. Carol could then clear the above transaction between Alice and Bob by paying Bob the outstanding amount.

In general though, transactions only need to be settled to calculate the new balance for Alice and Bob, and the low cost of tracking payments via webmention means no transaction fees are required, except when real funds are withdrawn via Carol's site.

Payment Request Post Type
One downside to having the payment request information in the URL is that anyone can construct a similar link. This has been used to test stolen credit card numbers by the attackers visiting a payment page like  and then entering stolen credit cards.

An alternative would be to create a new post to request a specific payment with details, and have that post be usable only one time. For public posts, they would at least be usable only once, and since only the author of the website could create these, there's no way to use them to test batches of cards. These posts could also be made private or at least unlisted so they could be sent to individuals.

The W3C Payment Request API could be a good starting point for a payment request post with Microformats. (A Microformats vocabulary for this is needed in order for it to be used to create the post from a Micropub client.) This could be either a new top-level Microformats object, or some additional properties in an h-entry.

The PaymentRequest details share nothing in common with h-entry, but the act of sending a request to someone does start to look more like an h-entry since that would include things like a date, possibly post visibility settings, etc.

https://developer.mozilla.org/en-US/docs/Web/API/PaymentRequest/PaymentRequest

The Payment Request API is really more about requesting payment information details and is likely too detailed for this post. However, if detailed invoice info is needed in the post, this could be a place to look for a vocabulary to use.

Other places to look for payment request post examples:


 * Invoicing systems such as https://www.invoiceninja.com
 * Square Cash
 * Venmo
 * PayPal

Payment Request Post Details
Across these three examples:


 * Who is the request being made to? Every example first asks for the person you'll be sending the request to
 * How much is being requested?
 * Optional note

In order to use Microformats to express this, h-entry would be a good container to include the note, and the audience property could be used to indicate who the request is being sent to. A new property would be needed to express the dollar amount.

How to handle different currencies? It appears that the currency is not choosable by the requester or the person who pays, but is based on the currency of the requester's payment account.

Articles
Articles about various forms of payment from an independence perspective:
 * 2005-03-17 privacy through prepaid credit cards
 * 2014-07-23 Quick comparison of Square Cash and Venmo for splitting checks
 * 2016-01-10 lifehacker: Money Transfer Showdown: Square Cash vs. Venmo vs. PayPal