diff --git a/src/content/blog/2026-12-10-web-monetization-open-payments-part-2-connecting-wallet.md b/src/content/blog/2025-12-10-web-monetization-open-payments-part-2-connecting-wallet.md
similarity index 98%
rename from src/content/blog/2026-12-10-web-monetization-open-payments-part-2-connecting-wallet.md
rename to src/content/blog/2025-12-10-web-monetization-open-payments-part-2-connecting-wallet.md
index 862e759e..8e3a7428 100644
--- a/src/content/blog/2026-12-10-web-monetization-open-payments-part-2-connecting-wallet.md
+++ b/src/content/blog/2025-12-10-web-monetization-open-payments-part-2-connecting-wallet.md
@@ -123,4 +123,4 @@ The incoming payment serves as a dedicated "bucket" into which we can stream mic
## Sending money
-This article is already long enough, so let's dive into the fun part — actually executing a payment — in the next article!
+This article is already long enough, so let's dive into the fun part — actually executing a payment — in the [next article](https://interledger.org/developers/blog/web-monetization-open-payments-part-3-sending-money)!
diff --git a/src/content/blog/2026-04-16-web-monetization-open-payments-part-3-sending-money.md b/src/content/blog/2026-04-16-web-monetization-open-payments-part-3-sending-money.md
new file mode 100644
index 00000000..3abe8bd9
--- /dev/null
+++ b/src/content/blog/2026-04-16-web-monetization-open-payments-part-3-sending-money.md
@@ -0,0 +1,216 @@
+---
+title: 'How the Web Monetization Extension works - Part 3: Sending money for real'
+description: 'Explores the "how" of Web Monetization: the who, when, and how much to send, plus embedded content and monetization signaling.'
+date: 2026-04-16
+slug: web-monetization-open-payments-part-3-sending-money
+authors:
+ - Sid Vishnoi
+author_urls:
+ - https://sidvishnoi.com?ref=ilf_engg_blog
+tags:
+ - Open Payments
+ - Web Monetization
+---
+
+In [Part 1](https://interledger.org/developers/blog/web-monetization-open-payments-part-1-connecting-wallet/) of the series, we covered how to link your wallet to the extension and secure the access tokens required for future transactions. In [Part 2](https://interledger.org/developers/blog/web-monetization-open-payments-part-2-payment-sessions), we explored the receiving side: identifying a website's receiving wallet addresses via `` and calculating the amounts our wallet can pay into them. Now, we'll combine these elements to actually move money.
+
+Thanks to the Open Payments API, sending the payment is now actually the simplest step. This article focuses more on the extension's internal payment logic and flow. I'll assume you're already familiar with basic browser extension architecture, [Web Monetization](https://webmonetization.org/), and [Open Payments API](https://openpayments.dev/) from the previous articles.
+
+## Payment manager
+
+As we explored in the last article, the extension's background script creates a "payment session" for every `` element found on the website you're visiting. Each session also figures out a `minSendAmount` - the smallest unit your connected-wallet can send to it. Once this value is confirmed, the extension knows a transaction is technically possible.
+
+A "payment manager" acts as the container for these sessions for a given browser tab. It maintains a list of all payment sessions (monetization links) in the exact order they appear on the page. This order is critical because it dictates which wallet address receives priority when the extension decides where to send money. Even if a site only has one wallet address, the payment manager still handles the lifecycle of that single session.
+
+When a website contains `