diff --git a/src/content/docs/developers/about-receiving.mdx b/src/content/docs/developers/about-receiving.mdx
new file mode 100644
index 00000000..8a1faa6c
--- /dev/null
+++ b/src/content/docs/developers/about-receiving.mdx
@@ -0,0 +1,211 @@
+---
+title: About receiving payments
+---
+
+import { LinkOut, CodeBlock, Disclosure } from "@interledger/docs-design-system";
+import { Badge, Tabs, TabItem, Steps } from '@astrojs/starlight/components';
+
+Receiving Web Monetization payments requires you to have an account with a compatible digital wallet provider. Not all wallet providers support receiving Web Monetization payments.
+
+Your digital wallet provider will supply you with the financial account you’ll use to receive payments. Withdrawing your funds typically requires you to link a card or bank account to your wallet.
+
+Since wallet providers are financial entities, they are regulated within the countries they operate. One regulation, known as KYC (Know Your Customer), requires financial entities to collect your personal information and verify your identity before allowing you to open an account.
+
+## Web Monetization-compatible digital wallets
+
+You must have an account with a compatible [digital wallet provider](/wallets) to receive payments. Be sure to select a provider that:
+
+* Is available in your region
+* Supports your preferred currency
+* Allows you to withdraw your funds if you choose to transact in fiat
+
+Your wallet provider will assign your wallet a unique identifier called a _wallet address_ or a _payment pointer_. You’ll need this identifier to web monetize your content.
+
+| Identifier | Example format |
+| ------- | -------------- |
+| Payment pointer | `$wallet.example.com/alice` |
+| Wallet address | `https://wallet.example.com/alice` |
+
+## Web monetized content
+
+Once you have your payment pointer or wallet address, you're ready to add the Web Monetization `` element to each page of your site you want to monetize. Visit the [get started](/developers/get-started) page for more information.
+
+When you include the `` element on a page, you're telling your website visitors' browsers that you can accept Web Monetization payments. Visitors using the [Web Monetization extension](/supporters/get-started#set-up-the-extension) in their browsers can then choose to send you payments in the amount and frequency of their choosing.
+
+## Payments
+
+Your visitors' Web Monetization extension acts like a messaging service. When they land on your page, their extension identifies your `` element and uses it to request information from your wallet provider. This begins a number of API requests and responses between the extension and your wallet provider, and the extension and your visitor's wallet provider to facilitate a payment.
+
+### Micropayments
+
+If you're already familiar with Web Monetization, you may have heard about how it supports micropayments.
+
+In general, a micropayment is a very small payment. Each wallet provider is responsible for a few things:
+* Deciding whether to support receiving and/or sending micropayments
+* Defining what a micropayment is in the context of their business
+* Determining the minimum amount for a micropayment
+
+Let's say your wallet provider allows you to receive micropayments. Your provider defines a micropayment as any payment under $0.05 USD. This means you could, for example, receive a payment of one US cent--as long as the sender's wallet provider allows them to send that amount.
+
+Your wallet provider may also have business rules set up such that micropayments accumulate on your account but aren't deposited until you reach a minimum (e.g., $1.00 USD).
+
+Web Monetization can even support payments of a fraction of a cent (e.g., $0.00001); however, sending and receiving fractional amounts must be supported by the respective wallet providers.
+
+### A deeper dive into payments
+
+#### Open Payments
+
+For a wallet to be compatible with Web Monetization, the provider must implement the Open Payments standard. When implemented, a set of APIs becomes available for third-party applications, such as your visitor's Web Monetization extension, to communicate with the wallet providers.
+
+#### Web Monetization extension
+
+A component within the extension--called the [Web Monetization agent](/developers/link-element#web-monetization-agent)--is responsible for communicating with a wallet provider via the Open Payments APIs. The next section describes the series of API calls required to initiate a payment.
+
+#### Web Monetization payment sequence
+
+:::note
+The examples below are simplified representations of the Open Payments API calls.
+:::
+
+
+1. The Web Monetization agent locates your [monetization link](/developers/link-element) and extracts your payment URL (the `href` value).
+
+ ```html
+
+ ```
+
+2. The agent issues a request to the URL.
+
+ ```http
+ GET /alice HTTP/1.1
+ Accept: application/json
+ Host: wallet.example
+ ```
+
+3. The response from your wallet provider to the agent contains information such as the currency your account is denominated in and the URLs of your wallet provider's authorization and resource servers.
+
+ ```http
+ HTTP/1.1 200 Success
+ Content-Type: application/json
+
+ {
+ "assetCode": "USD",
+ "assetScale": 2,
+ "authServer": "https://wallet.example/auth",
+ "resourceServer": "https://wallet.example/resource"
+ }
+ ```
+
+4. The agent issues a request to your wallet provider's `authServer` URL. The request contains the access permissions the agent is requesting.
+
+ ```http
+ POST /auth/ HTTP/1.1
+ Accept: application/json
+ Content-Type: application/json
+ Host: wallet.example
+
+ {
+ "access_token": {
+ "access": [
+ {
+ "type": "incoming-payment",
+ "actions": ["create", "read"],
+ "identifier": "https://wallet.example/alice"
+ }
+ ]
+ },
+ "client": "https://cloudninewallet.example/visitor"
+ }
+ ```
+ :::note
+ The `client` in the response above is your visitor's wallet address/payment pointer. This URL is only used by the agent and is not available to you.
+ :::
+
+5. The response to the agent contains an access token that the agent needs to make its next request.
+
+ ```http wrap
+ {
+ "access_token": {
+ "value": "OS9M2PMHKUR64TB8N6BW7OZB8CDFONP219RP1LT0",
+ "manage": "https://wallet.example/auth/token/dd17a202-9982-4ed9-ae31-564947fb6379",
+ "access": [
+ {
+ "type": "incoming-payment",
+ "actions": ["create", "read"],
+ "identifier": "https://wallet.example/alice"
+ }
+ ]
+ }
+ }
+ ```
+
+6. The agent issues a request to your wallet provider's `resourceServer` URL. The purpose of this call is to request the information needed by your visitor's wallet provider so their provider correctly addresses the payment to you.
+
+ ```http
+ POST /alice/incoming-payments HTTP/1.1
+ Accept: application/json
+ Content-Type: application/json
+ Authorization: OS9M2PMHKUR64TB8N6BW7OZB8CDFONP219RP1LT0
+ Host: wallet.example
+ ```
+
+7. The response to the agent contains unique payment details that will be used to address the payment to your payment account.
+
+ ```http wrap
+ {
+ "id": "https://wallet.example/alice/incoming-payments/08394f02-7b7b-45e2-b645-51d04e7c330c",
+ "walletAddress": "https://wallet.example/alice",
+ "receivedAmount": {
+ "value": "0",
+ "assetCode": "USD",
+ "assetScale": 2
+ },
+ "completed": false,
+ "createdAt": "2022-03-12T23:20:50.52Z"
+ }
+ ```
+
+8. At this point, the agent has finished communicating with your wallet provider. Now, the agent issues a request to your visitor's wallet provider. The purpose of this call is to give your visitor's wallet provider what it needs to send the payment.
+
+ ```http wrap
+ POST /visitor/outgoing-payment HTTP/1.1
+ Accept: application/json
+ Content-Type: application/json
+ Authorization: {{ GNAP outgoingPaymentGrant.accessToken.value }}
+ Host: cloudninewallet.example
+
+ {
+ "walletAddress": "https://wallet.example/alice",
+ "quoteId": "https://wallet.example/quotes/ab03296b-0c8b-4776-b94e-7ee27d868d4d",
+ }
+ ```
+
+9. The response from your visitor's wallet provider indicates whether the outgoing payment was created on their side. A payment could fail if the visitor has insufficient funds, for example. The following example indicates the outgoing payment was successfully created.
+
+
+ ```http wrap
+ {
+ "id": "https://cloudninewallet.example/visitor/outgoing-payments/8c68d3cc-0a0f-4216-98b4-4fa44a6c88cf",
+ "walletAddress": "https://cloudninewallet.example/visitor/",
+ "receiver": "https://wallet.example/alice/incoming-payments/08394f02-7b7b-45e2-b645-51d04e7c330c",
+ "receiveAmount": {
+ "value": "2",
+ "assetCode": "USD",
+ "assetScale": 2
+ },
+ "debitAmount": {
+ "value": "2",
+ "assetCode": "USD",
+ "assetScale": 2
+ },
+ "sentAmount": {
+ "value": "0",
+ "assetCode": "USD",
+ "assetScale": 2
+ },
+ "createdAt": "2022-03-12T23:20:55.52Z",
+ "updatedAt": "2022-03-12T23:20:55.52Z"
+ }
+ ```
+
+
\ No newline at end of file
diff --git a/src/content/docs/developers/csp.mdx b/src/content/docs/developers/csp.mdx
new file mode 100644
index 00000000..bf09ceee
--- /dev/null
+++ b/src/content/docs/developers/csp.mdx
@@ -0,0 +1,70 @@
+---
+title: Content Security Policy (CSP)
+---
+
+import { LinkOut, Hidden } from "@interledger/docs-design-system";
+import Specification from '/src/components/docs/Specification.astro'
+import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
+import data from '/src/data/browser-compat-data/csp-monetization-src.json'
+
+A Content Security Policy (CSP) is an extra layer of security that allows you to control the resources a user agent, such as a web browser, is allowed to load for a given page. CSPs use directives to describe the policies for a certain resource type.
+
+The `monetization-src` fetch directive allows you to define the payment pointer and wallet address URLs that a browser can load. If an attempt is made to load an undefined URL, a network error will occur and the URL will not load.
+
+
+
+
CSP Version
+
3
+
+
+
Directive
+
`monetization-src`
+
+
+
Directive type
+
Fetch directive
+
+
+
+## Syntax
+
+```http
+Content-Security-Policy: monetization-src ;
+Content-Security-Policy: monetization-src , ;
+```
+
+Where `` is a payment pointer or wallet address URL that's allowed to load.
+
+```http
+Content-Security-Policy: monetization-src https://example.com;
+```
+
+## Example
+
+Your wallet address is `https://wallet.example.com/alice`. You want to ensure that no other URLs can be loaded.
+
+You configure your web server to return the following `Content-Security-Policy` HTTP header on each applicable page of your website.
+
+```http
+Content-Security-Policy: monetization-src https://wallet.example.com/alice;
+```
+
+A bad actor injects their wallet address into your site.
+
+```html
+
+```
+
+However, fetches for the injected URL will return a network error and not load because the URL doesn't match what you've defined in your CSP.
+
+
+
+// ## Browser compatibility
+
+
+
+
+
+## Specifications
+
+
\ No newline at end of file
diff --git a/src/content/docs/developers/events.mdx b/src/content/docs/developers/events.mdx
new file mode 100644
index 00000000..cbb59c10
--- /dev/null
+++ b/src/content/docs/developers/events.mdx
@@ -0,0 +1,244 @@
+---
+title: Monetization events
+---
+
+import { LinkOut, Hidden, Tooltip } from "@interledger/docs-design-system";
+import Specification from '/src/components/docs/Specification.astro'
+import { Tabs, TabItem, Steps, Badge } from '@astrojs/starlight/components';
+import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
+import amountSent from '/src/data/browser-compat-data/amountSent.json'
+import incomingPayment from '/src/data/browser-compat-data/incomingPayment.json'
+import paymentPointer from '/src/data/browser-compat-data/paymentPointer.json'
+
+
+
+One responsibility of the [Web Monetization agent](/resources/glossary/#web-monetization-agent) is to instrument payments. The agent does this by calling the Open Payments APIs, which are APIs implemented by wallet providers.
+
+The agent makes calls to the `/incoming-payments` endpoint at your wallet provider and to the `/outgoing-payments` endpoint at your site visitor's wallet provider.
+
+Each time the agent receives a `201 outgoing payment created` response from the site visitor's wallet provider, the agent fires a `monetization` event on the browser window.
+
+### Specifications
+
+
+
+## Event listeners
+
+When a `monetization` event fires, there's no guarantee that payments will follow or, if they do, how often or how large the payments will be.
+
+A `monetization` event indicates that the site visitor's wallet provider has created the resources needed for it to send a payment.
+
+By adding an event listener to the relevant monetization `` element (or one of its ancestors), you can use the `monetization` event properties to verify payments. These properties provide:
+
+* Information about the [amount and currency](#amountsent) of a sent (not received) payment
+* A URL representing an [incoming payment](#incomingpayment) that can be used to determine the amount received, similar to a receipt
+* The URL representing the [payment pointer or wallet address](#paymentpointer) that an incoming payment request was sent to
+
+### High-level flow
+
+
+1. You add an event listener to a monetization ``.
+2. The site visitor accesses your page.
+3. The site visitor's Web Monetization agent calls the Open Payments APIs to begin setting up the payment. More information about these API calls can be found [here](/developers/about-receiving#a-deeper-dive-into-payments).
+4. The Web Monetization agent receives a `201 (outgoing payment created)` response from the site visitor's wallet provider.
+5. The Web Monetization agent fires a `monetization` event.
+6. Your event listener calls its defined function.
+
+
+## Event properties
+
+### amountSent
+
+The `amountSent` property returns the `value` and `currency` of the sent payment.
+
+* `value` - The amount. A valid decimal monetary value containing the amount that was sent.
+* `currency` - The currency code. A well-formed 3-letter ISO4217 code that represents the currency that was sent, such as USD or GBP.
+
+```js title="Example"
+"value": "1.23"
+"currency": "USD"
+```
+
+:::note[Received amount]
+The `amountSent` is not necessarily the amount received. For example, if your payment account is set up to receive GBP, but your site visitor's account sends in USD, then exchange rates and currency conversion fees could affect the amount you receive.
+:::
+
+#### Examples using `amountSent`
+
+In this example, you have a single monetization link element and are listening for `monetization` events on the element.
+
+```js
+
+
+```
+
+In this example, you have multiple link elements (not shown). You're listening for `monetization` events on the `window`, which provides events for all monetization link elements on the page. The `event.target` will correspond to the relevant link element.
+
+```js
+
+```
+
+
+
+// #### amountSent browser compatibility
+
+
+
+
+
+#### Specifications
+
+
+
+### incomingPayment
+
+:::tip[Experimental]
+`incomingPayment` is an experimental technology.
+:::
+
+The `incomingPayment` property allows you to check whether a payment was received and, if so, the amount received.
+
+The property returns a URL that represents the incoming payment at your wallet provider. By querying the URL, you can get the `receivedAmount`.
+
+#### Example using `incomingPayment`
+
+This example shows a hypothetical verification method that makes a basic request to the `incomingPayment` URL and returns the results. For simplicity, it has no logic for authenticating the request.
+
+:::note[Authentication]
+In many cases, requests to the `incomingPayment` URL must be authenticated because you're fetching sensitive details. The payment account owner should request these specifics from their wallet provider.
+:::
+
+```js
+/** @type {MonetizationEvent} event */
+async function verifyPayment(event) {
+ // Legacy receivers don't support returning incoming payment URLs
+ if (!event.incomingPayment) {
+ throw new Error('No incoming payment URL')
+ }
+
+ const response = await fetch(event.incomingPayment, {
+ method: 'GET',
+ credentials: 'same-origin',
+ mode: 'same-origin',
+ cache: 'no-cache',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ })
+
+ if (response.ok) {
+ const { receivedAmount } = JSON.parse(response.json())
+ const { amount, assetCode, assetScale } = receivedAmount
+ console.log(`Received ${assetCode}${amount / Math.pow(10, assetScale)}.`)
+ }
+}
+```
+
+
+
+// #### incomingPayment browser compatibility
+
+
+
+
+
+#### Specifications
+
+
+
+### paymentPointer
+
+The `paymentPointer` property returns the URL that represents the payment pointer or wallet address that the payment was sent to. In most cases, the value will be the same as the `href` URL in the monetization ``.
+
+:::note[Property name]
+Earlier versions of the Web Monetization specification only used Interledger's Simple Payment Setup Protocol (SPSP), which calls for payment pointers. This is why the property was named `paymentPointer`.
+
+As of v3, both payment pointers and Open Payments wallet addresses are returned by this property. GitHub issue 439 is created for discussing a change to the property name.
+:::
+
+#### Example using `paymentPointer`
+
+```js
+
+
+```
+
+
+
+// #### paymentPointer browser compatibility
+
+
+
+
+
+#### Specifications
+
+
+
+## Example use cases
+
+### amountSent
+
+Program your website to show a thank you message to your site visitor when the `amountSent` returns a non-zero amount. In this use case, you're only checking that an amount -- any amount -- was sent.
+
+### incomingPayment
+
+Program your website to remove ads or provide access to exclusive content to your site visitor after receiving a specific amount.
+
+In this use case, you'll query the URL returned by `incomingPayment` to track the `receivedAmount`. If appropriate, you can ensure the amount is increasing after each `monetization` event to verify that a new payment was received.
+
+### paymentPointer
+
+This section describes two use cases: one for vanity payment addresses and one for probabilistic revenue sharing.
+
+#### Vanity payment address
+
+Let's say your payment pointer or wallet address is:
+
+```
+https://wallet.example.com/GK9D420BL42M
+```
+
+That's hard to remember. Fortunately, your wallet provider offers vanity addresses which act as aliases. Your vanity address is:
+
+```
+https://wallet.example.com/bob
+```
+
+You add the vanity address as the `href` value in the monetization ``. Then, you set up an event listener for `paymentPointer`. The value that's returned will be:
+
+```
+https://wallet.example.com/GK9D420BL42M
+```
+
+#### Probabilistic revenue sharing
+
+For this use case, let's assume you are familiar with [probabilistic revenue sharing](/tutorials/revenue-sharing), which is iteself an advanced use case.
+
+When you use our Probabilistic Revshare Generator, you enter multiple payment pointers and/or wallet addresses and assign each one a weight. When finished, the generator creates a unique URL.
+
+For example, after entering five wallet addresses and weights, the generator creates:
+
+```http wrap
+https://webmonetization.org/api/revshare/pay/W1siJGFsaWNlLndhbGxldC5jb20iLDUwLCIkYWxpY2"
+```
+
+You add the generated URL as the `href` value in the monetization ``. Then, you set up an event listener for `paymentPointer`. The value that's returned will be which one of the five wallet addresses that the payment was sent to.
\ No newline at end of file
diff --git a/src/content/docs/developers/get-started.mdx b/src/content/docs/developers/get-started.mdx
new file mode 100644
index 00000000..0aec83df
--- /dev/null
+++ b/src/content/docs/developers/get-started.mdx
@@ -0,0 +1,62 @@
+---
+title: Get started
+---
+
+import { LinkOut } from '@interledger/docs-design-system'
+import { Steps } from '@astrojs/starlight/components';
+import Wallet from "/src/partials/wallet-prereq.mdx";
+
+## Prerequisites
+
+
+
+## Step 1 - Get your payment URL
+
+### Payment pointer
+
+If you have a payment pointer that starts with `$`, visit paymentpointers.org. Enter your payment pointer into the _Payment Pointer_ field. Take note of the URL that automatically generates in the adjacent field. This is your payment URL. You'll need it in the next step.
+
+```http title="Example"
+$wallet.example.com/alice
+```
+
+### Wallet address
+
+If you have a wallet address that starts with `https://`, then you have your payment URL. Proceed to the next step.
+
+```http title="Example"
+https://wallet.example.com/alice
+```
+
+
+
+## Step 2 - Web monetize your page
+
+
+
+1. Create your Web Monetization link tag using the format below. Add your payment URL as the `href` value.
+
+ ```http
+
+ ```
+
+ For example:
+
+ ```http
+
+ ```
+
+2. Add the `` to the `` section of your page.
+ ```html title="Example" wrap
+
+
+ My Site
+
+
+
+ ```
+
+
+Congratulations! Your page is now web monetized. Add the `` to any page of your site you want to monetize.
+
+For more information, visit the [Monetization link element](/developers/link-element) page.
\ No newline at end of file
diff --git a/src/content/docs/developers/interfaces.mdx b/src/content/docs/developers/interfaces.mdx
new file mode 100644
index 00000000..b3d53b29
--- /dev/null
+++ b/src/content/docs/developers/interfaces.mdx
@@ -0,0 +1,65 @@
+---
+title: Monetization interfaces
+---
+
+import { LinkOut, Hidden } from "@interledger/docs-design-system";
+import { Badge } from '@astrojs/starlight/components';
+import Specification from '/src/components/docs/Specification.astro'
+import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
+import data from '/src/data/browser-compat-data/monetizationevent.json'
+
+
+
+The Web Monetization API consists of two interfaces: `MonetizationEvent` and `MonetizationCurrencyAmount`.
+
+## `MonetizationEvent`
+
+The `MonetizationEvent` interface describes the [`monetization`](/developers/events) event that fires when an outgoing payment is successfully created.
+
+
+
+
Bubbles
+
Yes
+
+
+
Cancelable
+
No
+
+
+
Event handler property
+
`onmonetization`
+
+
+
+By listening for `monetization` events, you can use the information returned in the following properties to verify payments.
+
+* [amountSent](/developers/events#amountsent) - The currency amount and code of the sent payment. Contains two variables, `value` and `currency`, constructed by the [`MonetizationCurrencyAmount`](#monetizationcurrencyamount) interface.
+* [incomingPayment](/developers/events#incomingpayment) - A URL you can use to determine if a payment was received and, if so, the amount received.
+* [paymentPointer](/developers/events#paymentpointer) - The URL of the payment pointer or wallet address that the incoming payment request was sent to.
+
+Visit the [Monetization Events](/developers/events) page for more information.
+
+
+
+// ## Browser compatibility
+
+
+
+
+
+### Specifications
+
+
+
+## `MonetizationCurrencyAmount`
+
+The `MonetizationCurrencyAmount` interface is used to populate the `value` and `currency` variables contained within the `MonetizationEvent amountSent` property.
+
+* Value - The amount. A valid decimal monetary value containing the amount that was sent.
+* Currency - The currency code. An ISO 4217-compliant currency code, when possible, that represents the currency that was sent, such as USD or GBP.
+
+The `MonetizationCurrencyAmount` interface is modeled on the Payment Request API’s `PaymentCurrencyAmount` dictionary.
+
+### Specifications
+
+
\ No newline at end of file
diff --git a/src/content/docs/docs/resources/libraries.mdx b/src/content/docs/developers/libraries.mdx
similarity index 100%
rename from src/content/docs/docs/resources/libraries.mdx
rename to src/content/docs/developers/libraries.mdx
diff --git a/src/content/docs/developers/link-element.mdx b/src/content/docs/developers/link-element.mdx
new file mode 100644
index 00000000..9435fc85
--- /dev/null
+++ b/src/content/docs/developers/link-element.mdx
@@ -0,0 +1,136 @@
+---
+title: Monetization element
+tableOfContents:
+ maxHeadingLevel: 4
+---
+
+import { LinkOut, Hidden } from "@interledger/docs-design-system";
+import Specification from '/src/components/docs/Specification.astro'
+import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
+import data from '/src/data/browser-compat-data/link.json'
+import { Steps, Tabs, TabItem, Badge } from '@astrojs/starlight/components';
+
+
+
+From a creator/developer perspective, the monetization `` element is one of the two key pieces to web monetizing a page. The second piece is a wallet address/payment pointer.
+
+## Prerequisites
+
+To web monetize an HTML page, such as a web page:
+* You must have an account with a [compatible wallet provider](/wallets)
+* You must have the wallet address, or payment pointer in URL format, from your wallet provider
+* Your document must be served over HTTPS
+
+## Monetization `` element
+
+The monetization `` element is what indicates your HTML page supports Web Monetization.
+
+### Syntax
+
+```html
+
+```
+
+* The `rel` attribute is always `monetization`
+* The `href` attribute equals your wallet address or your payment pointer in URL format
+
+For example:
+
+```html
+
+```
+
+### Placement
+
+A monetization `` is `body-ok`, meaning it's allowed in your page's `` and/or ``.
+
+### Multiple monetization links
+
+An HTML page can contain multiple monetization `` elements; however, your site visitor’s [Web Monetization agent](#web-monetization-agent) could be designed to handle multiple links in a particular way. For example, an agent might:
+* Split payments evenly between all links
+* Split payments between the first few links it finds
+* Send the amount only to the first link it finds and ignore all others
+
+:::tip[Recommendation]
+The Web Monetization agent built into the Interledger Foundation's extension splits payments evenly between all links. We recommend other extension developers follow this approach.
+:::
+
+### Iframes
+
+Nested browsing contexts (iframes) can contain monetization `` elements; however, your site visitor's [Web Monetization agent](#web-monetization-agent) determines how iframes are monetized. A few examples of how a Web Monetization agent can monetize iframes include:
+
+* Splitting payments evenly between all monetization links within both the parent and the iframe
+* Splitting payments evenly between all monetization links in the parent and the first monetization link it finds in the iframe's ``, while ignoring any other monetization links in the iframe
+ :::note
+ This is the approach used in the Interledger Foundation's extension.
+ :::
+* Sending payments to the first monetization link it finds in the parent browsing context and ignoring all other monetization links in the parent and the iframe
+
+### Audio, video, and picture elements
+
+The following HTML elements can be web monetized by adding the `` element between the open and close tags.
+
+
+
+ ```html
+
+ ```
+
+
+ ```html
+
+ ```
+
+
+ ```html
+
+ ```
+
+
+
+## How it works
+
+### HTMLLinkElement
+
+The HTML DOM API's `HTMLLinkElement` interface defines how the `` element functions. The `` element is what allows you to link your HTML page to a resource.
+
+The two most recognizable `HTMLLinkElement` properties are `href` and `rel`. The `href` property defines the URL to the resource. The `rel` property indicates the type of link, or relationship, the resource has to the current page.
+
+### rel="monetization" link type
+
+Browsers already know how to interpret certain `rel` values because of web standards. One such standard is `stylesheet`. When a browser loads a page that contains ``, the browser automatically knows to import a style sheet from the given URL.
+
+The `monetization` link type, however, is not yet a standard. Major web browsers don't automatically know what to do when encountering this link type in a page. Until `monetization` becomes a standard, browsers must rely on a Web Monetization agent.
+
+### Web Monetization agent
+
+A Web Monetization agent is a non-user facing component of the Interledger Foundation's extension.
+
+The purpose of the Web Monetization agent is to recognize when a page is web monetized and automatically carry out certain tasks. These tasks include:
+
+* Extending the HTML DOM API so that `monetization` is a valid link type
+* Processing the monetization link or links within an HTML page
+* Instrumenting payments by calling the [Open Payments APIs](/developers/about-receiving#a-deeper-dive-into-payments), which are APIs implemented by wallet providers
+* Firing [`monetization`](/developers/events) events after an outgoing payment is created
+* Processing `monetization` events sent to the browser window via the `onmonetization` event handler
+* Enabling the CSP [`monetization-src`](/developers/csp) and Permissions Policy [`monetization`](/developers/permissions-policy) directives
+
+Until Web Monetization agents are natively built in to web browsers, an agent must be added to browsers in some other way. That's why the agent is included as part of the Interledger Foundation's extension.
+
+
+
+// ## Browser compatibility
+
+
+
+
+
+## Specifications
+
+
\ No newline at end of file
diff --git a/src/content/docs/developers/overview.mdx b/src/content/docs/developers/overview.mdx
new file mode 100644
index 00000000..1c22630b
--- /dev/null
+++ b/src/content/docs/developers/overview.mdx
@@ -0,0 +1,60 @@
+---
+title: Overview
+tableOfContents:
+ maxHeadingLevel: 2
+---
+
+import { LinkOut } from '@interledger/docs-design-system'
+
+Web Monetization is a light-weight and non-intrusive way for you to monetize your content while preserving the privacy of your supporters. You can use Web Monetization to replace or complement your existing revenue models. All it takes is a [wallet address or payment pointer](/wallets) and a [single line of code](/developers/link-element).
+
+## Benefits
+
+### You choose your wallet provider.
+
+Other solutions may require both you and your supporters to use the same application, platform, or service provider. Web Monetization doesn't have this limitation. As long as both you and your supporters' chosen wallet providers are compatible with Web Monetization, they can send you a payment.
+
+### Complement existing revenue models.
+
+* **Reach a wider paying audience.** Some offerings, such as subscriptions, can result in missed revenue opportunities due to concerns about price, renewal frequencies, accepted currencies, and fees. Plus, some supporters simply don't want to create and keep track of another account. Web Monetization can supplement your current offerings by allowing your supporters to pay how, when, and what they want without creating site-by-site accounts.
+* **Regain lost ad revenue.** If your site is even partially sustained by ad revenue, then every impression counts. Many ad networks pay per thousand impressions, pay different amounts based on the country your supporter is in, and may require you to earn a minimum amount before you can access your revenue. While ad blockers can improve user experience, they also make earning ad revenue more difficult. Web Monetization can help make up the difference.
+
+### Use in place of other revenue models.
+
+Certain recurring revenue models, like subscriptions, can have overhead costs beyond the time, effort, and money required for set up. For example, you may be required to provide customer support, manage chargebacks, and administer records through various Content Management System (CMS) tools. With Web Monetization, payments are anonymous. There are no customer records to maintain. You aren't liable for chargebacks or refunds because your supporters are in control of if, when, and how much they pay.
+
+### Receive payments to your wallet in real time.
+
+Some services require you to wait until a given day of the month or until you reach a minimum balance before paying out. Should a platform temporarily or permanently ban you, the platform could choose to keep your balance permanently. Web Monetization removes this issue. When a supporter sends you a payment, the payment is sent directly from their wallet to your wallet. Note that your wallet provider may require you reach a specific balance before you can transfer out your funds. Be sure to check with your wallet provider.
+
+### Receive payments in your preferred currency.
+
+Some solutions require both you and your supporters to use the same currency. Web Monetization allows you to receive payments in a currency of your choosing, while your supporters can send payments in their preferred currency.
+
+### The exclusivity of your content is in your hands.
+
+Web Monetization allows a supporter to send a payment to a web monetized page. How you want your page to respond is up to you. By listening for the `monetization` event, you can verify the amount and currency of a payment, then programmatically show or hide content or have your page respond in some other way.
+
+## Constraints
+
+### The network of Web Monetization-enabled wallet providers is nascent, but growing.
+
+Sending and receiving payments via Web Monetization requires the sender and the recipient to have an account with a Web Monetization-enabled wallet provider.
+
+In general, wallet providers are regulated entities within the countries they operate. Obtaining the proper licensing and registration to become a wallet provider can be an expensive, complex, and time consuming process. Also, there are technical integrations required to support Web Monetization. All of this means a compatible wallet provider may not yet be available in your area.
+
+### Web Monetization does not track or collect personally identifiable information.
+
+Web Monetization is designed to preserve the privacy of your supporters. While you can use `monetization` events to determine sent and received amounts, Web Monetization does not track your supporters' names, wallet addresses/payment pointers, IP addresses, or other information that could enable you to correlate a payment with a specific individual or determine their browsing behavior.
+
+### Web Monetization does not allow you to pull payments from your supporters' accounts.
+
+One key differentiator of Web Monetization is that your supporters are in control of if, when, and how much they pay. Web Monetization does not allow you to pull a payment on behalf of your supporters. When you web monetize a page, you are embedding your wallet address/payment pointer so that your supporters' extension knows you're able to accept Web Monetization payments. It's up to your supporters to decide whether to pay.
+
+### Coding your page to respond after receiving a specific amount will take some work.
+
+Web Monetization is designed to allow supporters to control when to pay, how much to pay, and how often to pay. If you want to, for example, unlock exclusive content after receiving a specific amount, you'll need to add your own code to make that happen.
+
+### There might be fees.
+
+Web Monetization does not charge or collect fees; however, your digital wallet provider might. For example, you may be charged a currency conversion fee if you are sent a payment in USD, but receive your payments in GBP. Be sure to consider supported currencies and fees when choosing a wallet provider that's best for you.
\ No newline at end of file
diff --git a/src/content/docs/developers/permissions-policy.mdx b/src/content/docs/developers/permissions-policy.mdx
new file mode 100644
index 00000000..7067e206
--- /dev/null
+++ b/src/content/docs/developers/permissions-policy.mdx
@@ -0,0 +1,55 @@
+---
+title: Permissions Policy
+next:
+ link: /wallets/
+ label: Compatible digital wallets
+---
+
+import { LinkOut, Hidden } from "@interledger/docs-design-system";
+import Specification from '/src/components/docs/Specification.astro'
+import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
+import data from '/src/data/browser-compat-data/permissionpolicy.json'
+
+A Permissions Policy provides a mechanism for you to explicitly declare what functionality can and cannot be used on your website.
+
+The `monetization` policy directive allows you to enable and disable the Web Monetization API within a document and within any of the document's nested browsing contexts (iframes).
+
+## Syntax
+
+```http
+Permissions-Policy: monetization=(allowlist)
+```
+
+Where `(allowlist)` is a list of origins permitted to use the Web Monetization API.
+
+The default allowlist is `self`.
+
+```http
+Permissions-Policy: monetization=(self)
+```
+
+:::note
+The `allow` attribute determines the container policy that will be used when the permissions policy for a `Document` in the iframe's content navigable is initialized. Adding or removing the `monetization` attribute has no effect on an already-loaded `Document`.
+:::
+
+## Example
+
+You want to allow Web Monetization on your website and in all nested browsing contexts (iframes) in the same origin.
+
+You configure your web server to return the `Permissions-Policy` HTTP header on each of your pages.
+
+```http
+Permissions-Policy: monetization=(self)
+```
+
+
+
+// ## Browser compatibility
+
+
+
+
+
+## Specifications
+
+
\ No newline at end of file
diff --git a/src/content/docs/docs.mdx b/src/content/docs/docs.mdx
index 5d58896c..4b8a5bf3 100644
--- a/src/content/docs/docs.mdx
+++ b/src/content/docs/docs.mdx
@@ -1,68 +1,6 @@
---
title: Intro to Web Monetization
+next: Content consumer overview
---
-import { LargeImg, LinkOut, Tooltip } from '@interledger/docs-design-system'
-
-As a website user, it’s common to encounter a headline that captures your attention, only to find the article locked behind a paywall. How often do you pay for a subscription to read a single article? What if you could pay a fraction of the subscription price to access the article and avoid the subscription altogether?
-
-As a website owner, you anticipate losing a few visitors due to paywalled content. Even if you offer weekly subscriptions, the price may be more than a visitor is willing to pay. But instead of subscriptions, what if you could generate revenue per piece of content, or even based on the amount of time a visitor spends on the content?
-
-These are just two ways in which Web Monetization can make payments easier. With Web Monetization, website visitors can send payments directly to websites using a browser extension or any browser that natively implements the Web Monetization specification.
-
-## Current payments infrastructure
-
-It can take a bit of work to implement payments on a website. If your site already accepts payments, you may be familiar with what it takes to accept multiple payment methods and currencies. The process typically looks something like this:
-
-1. You sign up with one or more payment providers, depending on the payment methods and currencies you want to accept.
-2. You integrate their service(s) into your site. For example, you may create and host your own payment form that is connected to the service, or you use a form supplied by the payment provider.
-3. Depending on the payment method your visitor wants to use, they may need to create an account with you or the payment provider.
-4. Your visitor fills out the payment form. Ideally, they remain on your site to complete the transaction but may be required to access the provider’s site instead.
-
-## Introducing Web Monetization
-
-Web Monetization aims to simplify the payment experience for you and your website visitors. It’s an open technology that allows websites to automatically receive payments from visitors.
-
-It’s a proposed standard that allows your visitors to pay an amount of their choosing with little to no user interaction. It enables a website to automatically signal to web browsers that it can accept payments. With this signal, web browsers facilitate a payment from the visitor to the site by:
-
-- Obtaining authorization to initiate the payment.
-- Gathering details and issuing instructions to start the money movement process.
-- Creating a payment session.
-- Communicating payment events to the site so the site can optionally respond. For example, the site could [remove ads](/docs/guides/remove-ads) or provide [access to exclusive content](/docs/guides/provide-exclusive-content) for paying visitors.
-
-### High-level flow
-
-The following image shows the Web Monetization flow at a high level. Some steps have been combined or excluded. A more in-depth explanation is provided in the [Web Monetization flow](/docs/intro/web-monetization-flow) page.
-
-
-
-1. Bob visits a [web monetized page](/docs/guides/monetize-page). The monetization `` element is how the website signals its acceptance of payments to the browser.
-2. Bob’s browser, either natively or via a browser extension, parses the `` element to get the wallet address for Alice, the site owner.
-3. Bob’s browser/extension sends requests to Alice’s wallet address to obtain authorization and instructions for sending a payment.
-4. With authorization granted and payment instructions received, the browser/extension sends requests to Bob’s wallet address to initiate the outgoing payment.
-5. The Web Monetization flow ends. Payment processing, currency exchange, and settlement occurs between the two accounts via a common payment rail.
-
-### Specifying payment amounts and currencies
-
-Web Monetization doesn’t allow a website to specify a payment amount or currency. It only allows the site to tell the browser it can accept payments.
-
-With the help of a Web Monetization provider, your visitor decides whether to make a payment, how much and how often to pay, and in which currency. Your Web Monetization receiver can then exchange the currency of incoming payments based on what you want to receive. This flexibility allows you and your visitors to choose the monetization methods that best suit you both.
-
-### Processing and settling payments
-
-Web Monetization’s role is to help coordinate payments. It does not process or settle payments.
-
-At each end of Web Monetization is an account that supports Open Payments. The Web Monetization provider supplies your visitor with a funded sending account. In some cases, the visitor could even act as their own Web Monetization provider. The Web Monetization receiver supplies you with a receiving account.
-
-Web Monetization communicates with the sending and receiving accounts to obtain the necessary authorizations and instructions for a payment to be sent and received. Payment processing and settlement then occurs between the sending and receiving accounts, outside of the Web Monetization flow.
-
-## Prior specification version
-
-A new version of the Web Monetization specification was published in June 2023. Users of the previous version should be aware of the following:
-
-- The previous version only used Interledger's Simple Payment Setup Protocol (SPSP). The new version uses Open Payments.
-- The `` element is deprecated in favor of the [``](/docs/references/html-link-rel-monetization/) element.
-- The `` element does not support the shorthand form of a payment pointer (e.g., `$wallet.example/alice`). You must use the endpoint URL that the payment pointer resolves to (e.g., `https://wallet.example/alice`). If you need help converting a payment pointer from shorthand to its equivalent URL, enter your payment pointer into the input field on paymentpointers.org. In most cases, you can simply replace the `$` with `https://`.
+
Need help with this page
\ No newline at end of file
diff --git a/src/content/docs/docs/guides/add-a-streaming-payments-counter.mdx b/src/content/docs/docs/guides/add-a-streaming-payments-counter.mdx
deleted file mode 100644
index f9ca2847..00000000
--- a/src/content/docs/docs/guides/add-a-streaming-payments-counter.mdx
+++ /dev/null
@@ -1,102 +0,0 @@
----
-title: Add a streaming payments counter
----
-
-import NoPay from '/src/partials/glitchNoPay.mdx'
-import ViewAs from '/src/partials/glitchViewAs.mdx'
-
-Web Monetization allows you to know exactly how much a web monetized visitor has sent to you. In cases where a web monetized visitor has chosen to pay you in time-based increments (such as per second or per minute), a streaming payments counter can be a helpful tool to show your visitor how much they've sent. The amount updates in real time as more payments come in during the session.
-
-## Example
-
-The example below illustrates how to use the `monetization` event to show a web monetized visitor how much they've sent you during their current browsing session.
-
-```html
-
-
-
-
-
-
-
-
-
- Thanks to you, I've made
- 0.00 USD
-
-
-
-```
-
-## How it works
-
-First, we'll bind the `monetization` event if the visitor is web monetized (`window.MonetizationEvent` is defined).
-
-The `monetization` event contains details about the payments that occur. The `amountSent` attribute of the event returns the amount (`value`) and currency code of the sent payment. A currency code is a three-letter code, like USD, EUR, or GBP.
-
-```js
- if (window.MonetizationEvent) {
- const link = document.querySelector('link[rel="monetization"]');
-
- link.addEventListener("monetization", (event) => {
- const {
- amountSent: { value, currency },
- } = event;
- console.log(`Browser sent ${currency} ${value}.`);
-```
-
-The `currency` is set on the first payment and doesn't change. Remember, it represents the sent payment's currency, which may be different from the currency you receive (depending on how your receiving account is set up with your Web Monetization receiver).
-
-```js
-// initialize currency on first progress event
-if (total === 0) {
- document.getElementById('currency').innerText = currency
-}
-```
-
-The amount in `value` is an integer, which we add to our total.
-
-```js
-total += Number(value)
-```
-
-Finally, we update the text on the page with the new total. We want the total to be in a readable format, so we convert the number to a string and round it to a specified number of decimals, which is `9` in this example. This formatted version of the amount gets written to the `total` span on the page.
-
-```js
-document.getElementById('total').innerText = total.toFixed(9)
-```
-
-## Interactive example
-
-This example simulates showing a visitor how much they are sending you based off how long they remain on your web monetized page.
-
-
-
-
-
-
diff --git a/src/content/docs/docs/guides/monetize-page.mdx b/src/content/docs/docs/guides/monetize-page.mdx
deleted file mode 100644
index 53eacd2e..00000000
--- a/src/content/docs/docs/guides/monetize-page.mdx
+++ /dev/null
@@ -1,37 +0,0 @@
----
-title: Add Web Monetization to a page
----
-
-import { LinkOut } from '@interledger/docs-design-system'
-
-This page provides basic instructions for adding Web Monetization to a web page. If you're new to web monetizing content, this guide is a great place to start.
-
-## Prerequisites
-
-- Web monetized pages must be secure and served over HTTPS.
-- You must have the wallet address assigned to you by your Web Monetization-enabled [wallet provider](/docs/resources/op-wallets).
-
-## Monetize a page
-
-To add Web Monetization to a page, add the monetization `` element to the page's ``.
-
-The element’s `rel` value is always `monetization`. The `href` value is your wallet address. If your wallet address is a payment pointer, it must be entered in URL format.
-
-For example:
-
-```html
-
-
- My Site
-
-
-
-```
-
-### Multiple monetization links
-
-A single HTML document can contain multiple monetization `` elements; however, it's up to each Web Monetization provider to decide how they want to handle this scenario. We recommend Web Monetization providers split the payments evenly between the links.
-
-## Next steps
-
-Now that you've web monetized your page, you can choose to [remove ads](/docs/guides/remove-ads), [provide exclusive content](/docs/guides/provide-exclusive-content), or respond to [`monetization` events](/docs/references/monetizationevent) in some other way when a web monetized visitor accesses your page.
diff --git a/src/content/docs/docs/guides/provide-exclusive-content.mdx b/src/content/docs/docs/guides/provide-exclusive-content.mdx
deleted file mode 100644
index 8bb0beb8..00000000
--- a/src/content/docs/docs/guides/provide-exclusive-content.mdx
+++ /dev/null
@@ -1,191 +0,0 @@
----
-title: Provide exclusive content
----
-
-import NoPay from '/src/partials/glitchNoPay.mdx'
-import ViewAs from '/src/partials/glitchViewAs.mdx'
-
-Give your paying visitors access to exclusive content when the `monetization` event fires. Since the `monetization` event only fires when an outgoing payment request is successfully created, your exclusive content only appears to web monetized visitors.
-
-## Example 1 - Simple
-
-The example below illustrates a simple way to show exclusive content to web monetized visitors.
-
-```html
-
-
-
-
-
-
-
-
-
-
-
Content will appear below here if you are Web monetized.
-
-
Here's some exclusive content!
-
-```
-
-### How it works
-
-First, we want to check whether Web Monetization is supported. We do this by calling `supports()` on a link element's `relList` and passing `"monetization"` as a parameter. If this check doesn't exist, we can't listen for the `monetization` event to tell us when Web Monetization initializes.
-
-```jsx
-const link = document.querySelector('link[rel="monetization"]')
-if (link.relList.supports('monetization')) {
-```
-
-Next, we add an event listener to the `link` element. The `monetization` event is emitted when Web Monetization initializes.
-
-```jsx
-link.addEventListener('monetization', (ev) => {
-```
-
-Finally, we select the exclusive content element we want to make available to web monetized visitors. Since we defined a CSS class to hide the content, removing the class will make the content appear.
-
-```js
-document.getElementById('exclusive').classList.remove('hidden')
-```
-
-### Interactive example
-
-This example simulates hiding and showing exclusive content based on a visitor's Web Monetization state.
-
-
-
-
-
-
-
-## Example 2 - Complex
-
-In reality, you'll probably want your site to do more than simply show and hide content. In this example, we illustrate how to:
-
-- Show web monetized visitors an indicator while they wait for Web Monetization to initialize
-- Tell non-web monetized visitors that there's exclusive content they're missing out on
-
-The example below covers three states for showing:
-
-- A call-to-action to non-web monetized visitors
-- A loading message to web monetized visitors
-- Exclusive content to web monetized visitors
-
-```html
-
-
-
-
-
-
-
-
-
-
-
Loading exclusive content...
-
Here's some exclusive content!
-
- Please install a Web Monetization extension to support me!
-
-
-```
-
-### How it works
-
-There are three functions to activate the three states:
-
-- `showLoading` displays the loader
-- `showCTA` displays the call-to-action to non-web monetized users
-- `showExclusiveContent` displays the exclusive content to web monetized users
-
-These functions work just like the [simple example](#example-1---simple) where we turn the `hidden` class on/off for our `div`s.
-
-When the page loads, we'll check whether the visitor is web monetized.
-
-```js
-window.addEventListener('load', () => {
- if (!window.MonetizationEvent) {
-```
-
-The loader will appear to web monetized visitors and the CTA will appear to everyone else.
-
-```js
-if (!window.MonetizationEvent) {
- showCTA()
-} else {
- showLoading()
-}
-```
-
-If the visitor is web monetized, we'll listen for the `monetization` event that occurs when an outgoing payment request is successfully created. When this event fires, the exclusive content will appear and the other `div`s will be hidden.
-
-```js
-if (window.MonetizationEvent) {
- const link = document.querySelector('link[rel="monetization"]')
- link.addEventListener('monetization', (ev) => {
- showExclusiveContent()
-```
-
-### Interactive example
-
-This example simulates hiding and showing exclusive content based on a visitor's Web Monetization state. Web monetized visitors will see exclusive content while non-web monetized users will not. Conversely, non-web monetized users will see the message, "Please install a Web Monetization extension to support me!".
-
-
-
-
-
-
diff --git a/src/content/docs/docs/guides/remove-ads.mdx b/src/content/docs/docs/guides/remove-ads.mdx
deleted file mode 100644
index 62020cf4..00000000
--- a/src/content/docs/docs/guides/remove-ads.mdx
+++ /dev/null
@@ -1,128 +0,0 @@
----
-title: Remove ads
----
-
-import NoPay from '/src/partials/glitchNoPay.mdx'
-import ViewAs from '/src/partials/glitchViewAs.mdx'
-
-Give your web monetized visitors an ad-free experience by hiding ads when the `monetization` event fires. Since the `monetization` event only fires when an outgoing payment request is successfully created, your ads will continue to appear to non-web monetized visitors.
-
-## Before you begin
-
-For visitors without Web Monetization, ads will appear as soon as the page loads.
-
-For visitors with Web Monetization in their browser, there's a three-second grace period before ads are shown. This gives Web Monetization a chance to initialize and prevent ads from briefly appearing to paying visitors.
-
-**If Web Monetization...**
-
-- Initializes within the grace period, then ads are removed
-- Fails to initialize within the grace period, then ads are shown
-- Initializes any time after the grace period, then ads are removed
-
-## Example
-
-The example below shows how to remove ads from web monetized visitors.
-
-```html
-
-
-
-
-
-
-
-
-
- Here's where your site's content will go!
-
-```
-
-## How it works
-
-Let's start with the code for showing an ad.
-
-```jsx
-const adCode =
- '
Ad! Buy product A! Ad!
'
-function showAds() {
- document.getElementById('ad').innerHTML = adCode
-}
-```
-
-We want to bind the `monetization` event to its respective event handler if the visitor is web monetized. This prevents the ad from loading on the page once Web Monetization initializes. Assuming it initializes within the grace period, the ad isn't added to the page at all. This means any related images and trackers aren't loaded either.
-
-The `hasPaid` variable in the timer is for when/if Web Monetization starts after the grace period.
-
-```jsx
-let hasPaid = false
-if (window.MonetizationEvent) {
- const link = document.querySelector('link[rel="monetization"]')
- link.addEventListener('monetization', () => {
- hasPaid = true
- removeAds()
- })
-}
-```
-
-As soon as the page loads, the ad will immediately appear to any visitor who isn't web monetized. This is handled via `!window.MonetizationEvent`, shown below.
-
-If the visitor has Web Monetization in their browser, then the `monetization` event must fire within 3 seconds (3000ms) to indicate that Web Monetization has initialized. If it doesn't initialize by the timeout, the ad is shown to the visitor.
-
-```jsx
-window.addEventListener('load', () => {
- if (!window.MonetizationEvent) {
- showAds()
- } else {
- setTimeout(() => {
- if (!hasPaid) {
- showAds()
- }
- }, 3000)
- }
-})
-```
-
-## Interactive example
-
-This example simulates showing and hiding an ad based on a visitor's Web Monetization state.
-
-
-
-
-
-
diff --git a/src/content/docs/docs/guides/set-up-probabilistic-revenue-sharing.mdx b/src/content/docs/docs/guides/set-up-probabilistic-revenue-sharing.mdx
deleted file mode 100644
index 3765131c..00000000
--- a/src/content/docs/docs/guides/set-up-probabilistic-revenue-sharing.mdx
+++ /dev/null
@@ -1,120 +0,0 @@
----
-title: Set up probabilistic revenue sharing
----
-
-import NoPay from '/src/partials/glitchNoPay.mdx'
-
-How do you share a portion of a web monetized page's earnings when a monetization `` element only supports one wallet address as its `href` value?
-
-One way is through probabilistic revenue sharing. Probabilistic revenue sharing works by choosing from a list of predefined wallet addresses each time a web monetized visitor loads the page. Payments are sent to the chosen wallet address until the visitor reloads or closes the page.
-
-The chance of a wallet address being chosen is based on its assigned weight. For example, if Alice's wallet address has a weight of 50 (out of 100), then her wallet address has a 50% chance of being chosen. The laws of probability state that Alice's share of the page's total revenue will approach 50% as more web monetized visitors access the page.
-
-## Example
-
-This example shows how to use probabilistic revenue sharing by including a script on your web monetized page. It also uses payment pointers, but you can use any Open Payments-enabled wallet addresses.
-
-:::note
-If you don't want to include a script on your page, you can use our [Probabilistic Revshare Generator](/prob-revshare). After entering your payment pointers and/or other Open Payments-enabled wallet addresses, along with weights, the generator will provide you with a monetization `` element that contains a unique `href` URL hosted on `https://webmonetization.org/prob-revshare/`.
-:::
-
-The example below shows a list of weighted [payment pointers](/docs/resources/glossary#payment-pointer). The easiest way to establish weight is to assign values that add up to 100.
-
-```html
-
-
-
-```
-
-### How it works
-
-First, we list the payment pointers and assign each one a weight.
-
-If the combined weights equal 100, then each weight represents the percentage at which each payment pointer will be chosen. For example, `$wallet.example.com/connie` has a 9.5% chance of being chosen, resulting in Connie's share approaching 9.5% of the page's total revenue as more web monetized visitors access the site.
-
-```js
-const pointers = {
- '$wallet.example.com/alice': 50,
- '$wallet.example.com/bob': 40,
- '$wallet.example.com/connie': 9.5,
- '$wallet.example.com/dave': 0.5,
-}
-```
-
-:::info
-Since this method bypasses the need to include a monetization `` element, you can choose to use a payment pointer's shorthand form (e.g., `$wallet.example.com/alice`) rather than the endpoint URL that the payment pointer resolves to (e.g. `https://wallet.example.com/alice`).
-:::
-
-Next, we define the function to cause payment pointers to be chosen based on weight.
-
-```jsx
-function pickPointer() {
- const sum = Object.values(pointers).reduce((sum, weight) => sum + weight, 0)
- let choice = Math.random() * sum
-
- for (const pointer in pointers) {
- const weight = pointers[pointer]
- if ((choice -= weight) <= 0) {
- return pointer
- }
- }
-}
-```
-
-Finally, we add the code that dynamically inserts the randomly chosen payment pointer into the page on each load/refresh.
-
-```jsx
-window.addEventListener('load', () => {
- const monetizationTag = document.createElement('link')
- monetizationTag.rel = 'monetization'
- monetizationTag.href = pickPointer()
-
- document.head.appendChild(monetizationTag)
-})
-```
-
-### Interactive example
-
-This example shows how the random choices will approach the correct percentages over enough tries. You can customize the number of times to randomly choose a pointer and it will show you the results.
-
-
-
-If you see the source files instead of the example, click **View App** in the bottom right.
-
-
diff --git a/src/content/docs/docs/intro/receiving-payments.mdx b/src/content/docs/docs/intro/receiving-payments.mdx
deleted file mode 100644
index b8ff48f5..00000000
--- a/src/content/docs/docs/intro/receiving-payments.mdx
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Receiving payments
----
-
-import { LinkOut } from '@interledger/docs-design-system'
-
-Two key components of receiving a Web Monetization payment are Web Monetization receivers and Open Payments-enabled accounts.
-
-:::note
-This page describes the role of Web Monetization receivers within the Web Monetization ecosystem. It does not explain how to become a receiver.
-:::
-
-## Web Monetization receivers
-
-A Web Monetization receiver is an entity that provides an Open Payments-enabled account into which payments can be received. Individuals interested in receiving Web Monetization payments can establish a relationship with a Web Monetization receiver of their choice by signing up for an account.
-
-We anticipate most Web Monetization receivers to offer some form of digital wallet to their users. Many digital wallet providers, not just Web Monetization receivers, are often required to verify their users’ identities before allowing funds to be withdrawn.
-
-## Open Payments and wallet addresses
-
-Open Payments enables open and interoperable payments between Web Monetization providers and Web Monetization receivers. As such, accounts supplied by both Web Monetization providers and Web Monetization receivers must implement the Open Payments (OP) specification.
-
-The OP specification defines standards for **_access_** to accounts. When granted access, applications and other entities can integrate payments into their feature sets by connecting to their users’ accounts. The ability to then **_execute_** payments between OP-enabled accounts relies on the availability of a common payment rail between the accounts.
-
-### Wallet addresses
-
-Access to an OP-enabled account, whether for sending or receiving, always starts with a wallet address. In this context, a wallet address is a unique URL that identifies an OP account and provides an entry point for the Open Payments API.
-
-When an individual establishes an account with a Web Monetization receiver, the receiver assigns the account one or more wallet addresses. Wallet addresses allow certain account details to be safely shared with third-parties. Third-parties use the details to initiate payments to or from the account. A Web Monetization agent is an example of a third-party.
-
-A wallet address is required to web monetize a page and must be added as the `href` value within the monetization `` element.
-
-For example:
-
-```html
-
-```
-
-The Web Monetization agent uses the wallet address to begin the money movement process.
-
-## Receiving a payment
-
-When an individual visits a web monetized page, their Web Monetization agent detects the monetization `` element and associated wallet address. The Web Monetization agent sends a request to the wallet address, which is the beginning of a series of API calls needed to:
-
-1. Get the details about the underlying receiving account
-2. Receive permission to send a payment to the account
-3. Create a monetization session within the site visitor's browser tab/window
-4. Create the outgoing payment request
-
-When the payment is successful, the funds are deducted from the Web Monetization provider’s account and deposited into the Web Monetization receiver’s account.
-
-For more information, visit the [Web Monetization flow](/docs/intro/web-monetization-flow) page.
-
-## Specifying a payment amount
-
-Web Monetization does not enable a site to specify the amount it wants to receive. The amount, frequency, and other payment parameters are controlled by the web monetized visitor, through their relationship with their Web Monetization provider.
-
-If a site should specify a price, then integration with the W3C’s Payment Request API may be a better alternative to Web Monetization. The Payment Request API allows sites to ask to be paid a certain amount, then the browser (typically with the user’s approval) pays that amount.
diff --git a/src/content/docs/docs/intro/sending-payments.mdx b/src/content/docs/docs/intro/sending-payments.mdx
deleted file mode 100644
index 126bfc3a..00000000
--- a/src/content/docs/docs/intro/sending-payments.mdx
+++ /dev/null
@@ -1,75 +0,0 @@
----
-title: Sending payments
----
-
-import { LinkOut, Tooltip } from '@interledger/docs-design-system'
-
-Three key components of sending a Web Monetization payment are:
-
-- Web Monetization providers
-- Open Payments-enabled accounts
-- Web Monetization agents
-
-:::note
-This page describes the roles of Web Monetization providers and Web Monetization agents within the Web Monetization ecosystem. It does not explain how to become a provider or develop an agent.
-:::
-
-## Web Monetization providers
-
-For a site visitor to send a Web Monetization payment, the visitor must have some kind of relationship with a Web Monetization provider. A Web Monetization provider is an entity that provides a funded Open Payments-enabled account from which payments can be sent. A provider can take a number of different forms, such as:
-
-- A company that uses its own account to make payments on behalf of its customers
-- An app that’s authorized to hook directly into a user’s personal account
-- An individual that hooks their personal account up to a Web Monetization agent
-
-In addition to providing funded accounts, Web Monetization providers are responsible for defining the payment models they support and implementing business logic and rules. For example, a Web Monetization provider might:
-
-- Only send payments in fiat currencies
-- Support one-time payments and micropayments, but not real-time streaming payments
-- Stream real-time payments at a fixed rate, for example $0.006 per minute
-- Allow user-defined payout rates, frequencies, limits, and so on
-
-For a provider to send a Web Monetization payment on behalf of an individual, the provider must support the Open Payments specification.
-
-## Open Payments and wallet addresses
-
-Open Payments enables open and interoperable payments between Web Monetization providers and Web Monetization receivers. As such, accounts supplied by both Web Monetization providers and Web Monetization receivers must implement the Open Payments (OP) specification.
-
-The OP specification defines standards for **_access_** to accounts. When granted access, applications and other entities can integrate payments into their feature sets by connecting to their users’ accounts. The ability to then **_execute_** payments between OP-enabled accounts relies on the availability of a common payment rail between the accounts.
-
-### Wallet addresses
-
-Access to an OP-enabled account, whether for sending or receiving, always starts with a wallet address. In this context, a wallet address is a unique URL that identifies an OP account and provides an entry point for the Open Payments API.
-
-A wallet address allows certain account details to be safely shared with third-parties. Third-parties use the details to initiate payments to or from the account. A Web Monetization agent is an example of a third-party.
-
-Depending on the form a Web Monetization provider takes, the provider's user may not know, nor have a need to know, any details about the sending account's wallet address.
-
-## Web Monetization agents
-
-One goal of Web Monetization is for vendors to natively build the standard into web browsers. But we aren’t there yet. For now, users must install a separate Web Monetization agent, such as an extension, into their browsers.
-
-The Web Monetization agent is code that discovers web monetized pages, exposes the Web Monetization API, and communicates via the Open Payments APIs to obtain authorization and issue instructions for making a payment.
-
-### How it works
-
-The Web Monetization agent checks each page an individual visits for a monetization `` element. A monetization `` element must contain a valid Open Payments wallet address. For example:
-
-```html
-
-```
-
-When detected, the Web Monetization agent begins a series of API calls to:
-
-1. Get the details about the underlying account
-2. Receive permission to send a payment to the account
-3. Create a monetization session within the site visitor's browser tab/window
-4. Create the outgoing payment request
-
-Visit the [Add Web Monetization to a page](/docs/guides/monetize-page) and [Web Monetization flow](/docs/intro/web-monetization-flow) pages for more information.
-
-### Link a Web Monetization agent to a Web Monetization provider
-
-The Interledger Foundation has developed an open-source Web Monetization [browser extension](/docs/intro/web-monetization-extension) (agent) for users. Web Monetization providers could also choose to develop their own Web Monetization agents. Regardless of who supplies the Web Monetization agent, the agent must have a way to link to a provider. For example, a browser extension could allow individuals to select and sign in to their provider from within the extension UI. By signing in, the individual authorizes the extension to obtain settings from the provider and send payments on their behalf.
-
-Note that the Web Monetization specification itself doesn’t define the interface between the browser and the Web Monetization provider. This is intentional. How a browser ultimately chooses to allow Web Monetization providers to integrate is up to the browser. We feel that a browser’s extension system is the ideal way to support integration.
diff --git a/src/content/docs/docs/intro/web-monetization-flow.mdx b/src/content/docs/docs/intro/web-monetization-flow.mdx
deleted file mode 100644
index 09b8e758..00000000
--- a/src/content/docs/docs/intro/web-monetization-flow.mdx
+++ /dev/null
@@ -1,270 +0,0 @@
----
-title: Web Monetization flow
----
-
-import { Tabs, TabItem } from '@astrojs/starlight/components'
-import {
- CodeBlock,
- LinkOut,
- Mermaid,
- MermaidWrapper,
- Tooltip,
-} from '@interledger/docs-design-system'
-
-Web Monetization relies on Open Payments (OP) and OP-enabled accounts to coordinate payments.
-
-The Web Monetization agent first issues a series of API calls to the receiving account's wallet address, then to the sending account's wallet address, to obtain the necessary authorization and instructions for sending a payment.
-
-## Sequence diagram
-
-
-
-sending account
- end
- participant WMA as WM agent
- participant page as Web page
- box aliceblue WM receiver
- participant OPR as Open Payments receiving account
- participant AS as Auth server
- end
- note over AS,OPR: The auth server can be located outside of the WM receiver's domain
- WMA->>page: Detects monetization element, extracts wallet address
- WMA->>OPR: Requests the public info for the wallet address
- OPR->>WMA: Returns info, including auth server URL
- WMA->>AS: Requests access rights
- AS->>WMA: Returns access token
- WMA->>OPR: Requests creation of an incoming payment resource
- OPR->>WMA: Responds with unique payment details for addressing the payment to the account
- WMA->>+OPS: Requests an outgoing payment be created against the sending account
- note left of OPS: Connection persists until request moves from 'pending' state to 'sending' state
- OPS->>-WMA: Responds with details about the 'receive', 'send', and 'sent' amounts
- WMA->>WMA: Fires monetization event
- note over OPS,OPR: Payment processing and settlement occurs between the WM provider and WM receiver, outside of the WM flow
-`}
-/>
-
-
-
-## Web Monetization flow example
-
-This section provides an example of the API calls that occur when a web monetized user visits a web monetized site.
-
-There's a few points to keep in mind as you review the example.
-
-- It's up to the site visitor, not the web monetized site, to decide how often and how much to pay, as well as the currency in which to send a payment.
-- While Web Monetization and Open Payments work together to coordinate payments, neither moves money. Payment processing and settlement must occur between the sending and receiving accounts over a common payment rail.
-
-### Scenario
-
-Alice adds the monetization `` element to her website. Included within the `` is her wallet address, `https://wallet.example/alice`, assigned to her by her Web Monetization receiver.
-
-Bob signs up with a Web Monetization provider who supplies him with a funded sending account. The sending account's wallet address is `https://anotherwallet.example/bob`. After installing a Web Monetization agent in his browser and linking the Web Monetization agent to his Web Monetization provider, his Web Monetization agent now has permission to request payments be sent from his account.
-
-:::note
-This example assumes the Web Monetization provider and Web Monetization receiver have already peered with each other and share a common payment rail over which transactions can be processed and settled.
-:::
-
-### 1 - Check for Web Monetization
-
-As Bob browses Alice's site, his Web Monetization agent detects a monetization `` element.
-
-```html
-
-```
-
-### 2 - Send request to wallet address (receiving account)
-
-
-
- The Web Monetization agent issues a request to Alice's wallet address to discover the Open Payments service endpoint.
-
-
- ```http
- GET /alice HTTP/1.1
- Accept: application/json
- Host: wallet.example
- ```
-
-
-
- The response includes, among other details, the URL for her Web Monetization receiver's grant request endpoint (authorization server).
-
-
- ```http
- HTTP/1.1 200 Success
- Content-Type: application/json
-
- {
- "id":"https://wallet.example/alice",
- "assetCode":"USD",
- "assetScale":2,
- "authServer":"https://wallet.example/auth"
- }
- ```
-
-
-
-
-
-### 3 - Send grant request to Web Monetization receiver's auth server
-
-
-
- The Web Monetization agent issues a request to the Web Monetization receiver's grant request endpoint (authorization server) to get an access token.
-
- In this example, the Web Monetization agent requests access to create and read incoming payments (i.e., payments coming in to Alice's Web Monetization receiver).
-
-
- ```http
- POST /auth/ HTTP/1.1
- Accept: application/json
- Content-Type: application/json
- Host: wallet.example
- Content-Length: 218
-
- {
- "access_token":{
- "access":[
- {
- "type":"incoming-payment",
- "actions":[
- "create",
- "read"
- ],
- "identifier":"https://wallet.example/alice"
- }
- ]
- },
- "interact":{
- "finish":{
- "method":"redirect"
- }
- },
- "client":"https://anotherwallet.example/bob"
- }
- ```
-
-
-
- The grant request is non-interactive, so the Web Monetization receiver grants the request and issues an access token.
-
-
- ```http
- {
- "access_token":{
- "value":"OS9M2PMHKUR64TB8N6BW7OZB8CDFONP219RP1LT0",
- "manage":"https://wallet.example/auth/token/dd17a202-9982-4ed9-ae31-564947fb6379",
- "access":[
- {
- "type":"incoming-payment",
- "actions":[
- "create",
- "read"
- ],
- "identifier":"https://wallet.example/alice"
- }
- ]
- }
- }
- ```
-
-
-
-
-### 4 - Send incoming payment request to wallet address (receiving account)
-
-
-
- The Web Monetization agent creates an incoming payment for the session (e.g., the open browser tab) by issuing an incoming payment request to Alice's wallet address. The request uses details obtained from the previous API calls.
-
-:::note
-The request is for an _incoming_ payment because the Web Monetization agent is requesting that Alice's account accept an incoming payment. The payment itself has not been sent yet.
-:::
-
-
- ```http
- POST /alice/incoming-payments HTTP/1.1
- Accept: application/json
- Content-Type: application/json
- Authorization: OS9M2PMHKUR64TB8N6BW7OZB8CDFONP219RP1LT0
- Host: wallet.example
- ```
-
-
-
-
- Alice's Web Monetization receiver (who hosts her account and wallet address) approves the request by supplying unique payment details for the Web Monetization agent to use to address the payment to Alice's account.
-
-
- ```http
- {
- "id":"https://wallet.example/alice/incoming-payments/08394f02-7b7b-45e2-b645-51d04e7c330c",
- "walletAddress":"https://wallet.example/alice",
- "receivedAmount":{
- "value":"0",
- "assetCode":"USD",
- "assetScale":2
- },
- "completed":false,
- "createdAt":"2022-03-12T23:20:50.52Z",
- "updatedAt":"2022-03-12T23:20:50.52Z"
- }
- ```
-
-
-
-
-### 5 - Send outgoing payment request to wallet address (sending account)
-
-
-
- The Web Monetization agent uses the details obtained thus far to create an outgoing payment request against Bob's account (via his wallet address). Note that this is just a request to send a payment. The payment itself has not been sent and the request is in a pending state.
-
-
- ```http
- POST /bob/outgoing-payment HTTP/1.1
- Accept: application/json
- Content-Type: application/json
- Authorization: {{ outgoingPaymentGrant.accessToken.value }}
- Host: anotherwallet.example
- ```
-
-
-
- A successful response indicates the request has moved from a pending state to a sending state. This means Bob's account has the funds to cover the payment. Note that the payment itself has still not been sent (`"sentAmount":{"value":"0"}`).
-
-
- ```http
- {
- "id":"https://anotherwallet.example/bob/outgoing-payments/8c68d3cc-0a0f-4216-98b4-4fa44a6c88cf",
- "walletAddress":"https://anotherwallet.example/bob/",
- "receiver":"https://wallet.example/alice/incoming-payments/08394f02-7b7b-45e2-b645-51d04e7c330c",
- "receiveAmount":{
- "value":"2",
- "assetCode":"USD",
- "assetScale":2
- },
- "sendAmount":{
- "value":"2",
- "assetCode":"USD",
- "assetScale":2
- },
- "sentAmount":{
- "value":"0",
- "assetCode":"USD",
- "assetScale":2
- },
- "createdAt":"2022-03-12T23:20:55.52Z",
- "updatedAt":"2022-03-12T23:20:55.52Z"
- }
- ```
-
-
- The Web Monetization flow is complete. It's now up to the Web Monetization provider to process the payment and settle with the Web Monetization receiver.
-
-
-
diff --git a/src/content/docs/docs/references/attributes/amount.mdx b/src/content/docs/docs/references/attributes/amount.mdx
deleted file mode 100644
index 7ac493f5..00000000
--- a/src/content/docs/docs/references/attributes/amount.mdx
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: amount
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/amount.json'
-
-:::danger[Caution - Deprecated Attribute]
-The `amount` attribute is deprecated. Consider using the [amountSent](/docs/references/attributes/amountsent) attribute instead.
-:::
-
-The `MonetizationEvent` `amount` attribute returned the amount of money that was successfully received on the last payment.
-
-### Value
-
-An integer representing the amount of money received.
-
-### Example
-
-```html
-
-
-```
-
-## Specifications
-
-
-
-{/* ## Browser compatibility */}
-
-{/* */}
diff --git a/src/content/docs/docs/references/attributes/amountsent.mdx b/src/content/docs/docs/references/attributes/amountsent.mdx
deleted file mode 100644
index 4dbd94cb..00000000
--- a/src/content/docs/docs/references/attributes/amountsent.mdx
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: amountSent
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/amountSent.json'
-import { LinkOut, Tooltip } from '@interledger/docs-design-system'
-
-The `monetization` event's `amountSent` attribute returns you the amount (`value`) and currency code (`currency`) of the Web Monetization payment sent to you.
-
-## Value
-
-The `value` uses the same data structure as the `PaymentCurrencyAmount` dictionary in the Payment Request API. The returned value is the value it was initialized with.
-
-## Example
-
-```html
-
-
-```
-
-## Specifications
-
-
-
-{/* ## Browser compatibility */}
-
-{/* */}
diff --git a/src/content/docs/docs/references/attributes/assetcode.mdx b/src/content/docs/docs/references/attributes/assetcode.mdx
deleted file mode 100644
index b05c8bf7..00000000
--- a/src/content/docs/docs/references/attributes/assetcode.mdx
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: assetCode
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/assetCode.json'
-
-:::danger[Caution - Deprecated Attribute]
-The `assetCode` attribute is deprecated. Consider using the [amountSent](/docs/references/attributes/amountsent) attribute instead.
-:::
-
-The `MonetizationEvent` `assetCode` attribute returned the currency code of the last payment received.
-
-### Value
-
-A string representing the three-character currency code on the last payment received.
-
-### Example
-
-```html
-
-
-```
-
-## Specifications
-
-
-
-{/* ## Browser compatibility */}
-
-{/* */}
diff --git a/src/content/docs/docs/references/attributes/assetscale.mdx b/src/content/docs/docs/references/attributes/assetscale.mdx
deleted file mode 100644
index 261f056d..00000000
--- a/src/content/docs/docs/references/attributes/assetscale.mdx
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: assetScale
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/assetScale.json'
-
-:::danger[Caution - Deprecated Attribute]
-The `assetScale` attribute is deprecated. Consider using the [amountSent](/docs/references/attributes/amountsent) attribute instead.
-:::
-
-The `MonetizationEvent` `assetScale` attribute returned the scale of the paid amount
-
-### Value
-
-An integer that represents the scale on the amount of money received in the last payment.
-
-### Example
-
-```html
-
-
-```
-
-## Specifications
-
-
-
-{/* ## Browser compatibility */}
-
-{/* */}
diff --git a/src/content/docs/docs/references/attributes/incomingpayment.mdx b/src/content/docs/docs/references/attributes/incomingpayment.mdx
deleted file mode 100644
index c163c231..00000000
--- a/src/content/docs/docs/references/attributes/incomingpayment.mdx
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: incomingPayment
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/incomingPayment.json'
-import { LinkOut, Hidden } from '@interledger/docs-design-system'
-
-:::tip[Experimental Attribute]
-`incomingPayment` is an experimental technology.
-:::
-
-The `monetization` event's `incomingPayment` attribute can be used to verify the receipt of a payment. Today, the `monetization` event fires when the Web Monetization agent successfully creates an outgoing payment request at the Web Monetization provider. Since it's only a request to send an outgoing payment, there's no guarantee at this point that a payment has been received.
-
-The `incomingPayment` attribute returns the URL that represents the incoming payment at the Web Monetization receiver. The returned value is the value it was initialized with. By querying the URL, you can get the `receivedAmount`.
-
-## Example
-
-```jsx
-/** @type {MonetizationEvent} event */
-async function verifyPayment(event) {
- // Legacy receivers don't support returning incoming payment URLs
- if (!event.incomingPayment) {
- throw new Error('No incoming payment URL')
- }
-
- const response = await fetch(event.incomingPayment, {
- method: 'GET',
- credentials: 'same-origin',
- mode: 'same-origin',
- cache: 'no-cache',
- headers: {
- 'Content-Type': 'application/json',
- },
- })
-
- if (response.ok) {
- // The incoming payment was fetched successfully
- const { receivedAmount } = await response.json()
- const { amount, assetCode, assetScale } = receivedAmount
- console.log(`Received ${assetCode}${amount / Math.pow(10, assetScale)}.`)
- }
-}
-```
-
-## Specifications
-
-
-
-{/* ## Browser compatibility */}
-
-{/* */}
diff --git a/src/content/docs/docs/references/attributes/paymentpointer.mdx b/src/content/docs/docs/references/attributes/paymentpointer.mdx
deleted file mode 100644
index 32ab3cf4..00000000
--- a/src/content/docs/docs/references/attributes/paymentpointer.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: paymentPointer
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/paymentPointer.json'
-
-The `monetization` event's `paymentPointer` attribute returns the URL representing the payment endpoint used by the incoming Web Monetization payment. The returned value is the value it was initialized with.
-
-## Example
-
-```html
-
-
-```
-
-## Specifications
-
-
-
-{/* ## Browser compatibility */}
-
-{/* */}
diff --git a/src/content/docs/docs/references/attributes/receipt.mdx b/src/content/docs/docs/references/attributes/receipt.mdx
deleted file mode 100644
index 4b417e63..00000000
--- a/src/content/docs/docs/references/attributes/receipt.mdx
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: receipt
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/receipt.json'
-
-:::danger[Caution - Deprecated Attribute]
-Receipts and its associated `receipt` attribute are deprecated. Consider using the [incomingPayment](/docs/references/attributes/incomingpayment) attribute instead.
-:::
-
-The `MonetizationEvent` `receipt` attribute returned an optional proof-of-payment receipt. It was issued from the monetization receiver to the monetization provider as proof of the total current amount received in a stream.
-
-### Value
-
-A base64-encoded STREAM receipt. Returned null if receipts were not enabled on the payment pointer. The receipt had the total running amount streamed in the current session.
-
-### Example
-
-```html
-
-
-```
-
-## Specifications
-
-
-
-{/* ## Browser compatibility */}
-
-{/* */}
diff --git a/src/content/docs/docs/references/csp-monetization-src.mdx b/src/content/docs/docs/references/csp-monetization-src.mdx
deleted file mode 100644
index 699068a2..00000000
--- a/src/content/docs/docs/references/csp-monetization-src.mdx
+++ /dev/null
@@ -1,70 +0,0 @@
----
-title: 'Content-Security-Policy: monetization-src'
----
-
-import Specification from '/src/components/docs/Specification.astro'
-import BrowserCompat from '/src/components/docs/BrowserCompat.astro'
-import data from '/src/data/browser-compat-data/csp-monetization-src.json'
-import { LinkOut } from '@interledger/docs-design-system'
-
-The `monetization-src` directive within the HTTP Content-Security-Policy (CSP) allows you to restrict the URLs from which an Open Payments-enabled wallet address, such as a payment pointer, can be loaded.
-
-
-
-
-
- CSP version
-
-
3
-
-
-
- Directive type
-
-
-
- Fetch directive
-
-
-
-
-
-
-## Syntax
-
-The basic syntax is as follows, where `source` is a serialized source list. More than one source can be allowed for the `monetization-src` policy:
-
-```http
-Content-Security-Policy: monetization-src