diff --git a/content/changelog/brand-onboarding-flow.mdx b/content/changelog/brand-onboarding-flow.mdx
new file mode 100644
index 00000000..157f68ee
--- /dev/null
+++ b/content/changelog/brand-onboarding-flow.mdx
@@ -0,0 +1,52 @@
+---
+title: Set up your program in one full-screen flow
+date: 2026-10-18
+type: feature
+audience: [brands]
+surfaces: [dashboard]
+description: Creating a program opens five full-screen steps, from Business to Go live, with Save and exit on every step.
+context:
+ facts:
+ - "Creating a program on Affitor opens a full-screen setup at https://affitor.com/brand/new with five steps in this order: Business, Commission, Tracking, Payments, Go live."
+ - "Each step shows Step n of 5, a progress bar and a Save and exit button."
+ - "Business asks for two things: a business name and a website. Continue creates the program and opens Commission."
+ - "Tracking and Payments have one Continue button that works while the check is still pending; it does not mark the step done."
+ - "A program that is already live has no setup; its setup links open the matching Program settings page."
+ ui: ["Step 1 of 5", "Your business", "Business name", "Website", "Continue", "Save and exit", "Back", "Commission", "Install tracking", "Payments", "Go live", "Create a program"]
+ avoid:
+ - "Saying setup copies settings, a logo or partners from another program"
+ - "Saying Continue on Tracking or Payments marks them done or skips the Go live checks"
+ - "A setup time such as five minutes"
+ - "A Skip button (there is none)"
+ cta: { label: "Create a program", url: "https://affitor.com/brand/new" }
+---
+
+Set up a new program in one full-screen flow, one step at a time, at [affitor.com/brand/new](https://affitor.com/brand/new).
+
+Until today, creating a program started on a separate form that also asked for a program handle, and the setup steps after it sat next to a step list and, on a wide screen, a preview of what partners see, with a Skip for now button on Tracking and Payments. Now every step is one screen in the same flow.
+
+## How it works
+
+- **Five steps**: Business, Commission, Tracking, Payments and Go live, each with **Step n of 5** and a progress bar.
+- **Two fields to start**: Business asks only for a business name and a website.
+- **Leave any time**: **Save and exit** is on every step.
+
+## Start with your business
+
+Enter your business name and website, then click **Continue**. Affitor creates the program and opens Commission for it. If you already run a program, Business starts with its name and website; change them for the new one.
+
+
+
+## Keep going, or come back later
+
+Commission, Tracking and Payments each have **Back** and **Continue**. On Tracking and Payments, **Continue** works while Affitor is still checking; the step is not marked done until the check passes. Go live still checks that everything is in place before your program goes live.
+
+**Save and exit** saves your progress and opens the program's dashboard. On Business, it creates the program from the two fields; with both fields empty, it leaves without creating one.
+
+## Where to change it later
+
+Once a program is live, it has no setup: each step is its page in Program settings, and old setup links open that page.
+
+## Conclusion
+
+Setting up a program is now one guided flow from Business to Go live. [Learn more by creating a program](https://affitor.com/brand/new), and write to support@affitor.com with any question.
diff --git a/content/changelog/improvements-2026-10-18.mdx b/content/changelog/improvements-2026-10-18.mdx
index 1a5935b9..c66c77a0 100644
--- a/content/changelog/improvements-2026-10-18.mdx
+++ b/content/changelog/improvements-2026-10-18.mdx
@@ -3,7 +3,7 @@ title: Improvements and fixes, Oct 12–18
date: 2026-10-18
type: digest
audience: [brands, partners, developers]
-surfaces: [dashboard, cli, sdk]
+surfaces: [dashboard, marketplace, api, cli, sdk, mcp]
description: Simpler username rules, website suggestions for your Business details, faster partner pages, and fixes to renewals, phones and sign-up.
---
@@ -27,6 +27,11 @@ description: Simpler username rules, website suggestions for your Business detai
- Program settings › Payments shows two cards, Stripe and Server API, each with its own status. Either one counts for Payments when you go live.
- A partner invite to a program listed on the marketplace shows the commission, how long it pays and the attribution window before the partner signs in.
- Team members with the Member role no longer see Invite member, Resend invite or Regenerate on the API keys page. Owners keep them.
+- On the API keys page, a new key comes with a **Copy key** button, Regenerate confirms in a dialog that names the key it stops, and an expired key tells Owners to update `AFFITOR_API_KEY`.
+- [affitor.com/switch](https://affitor.com/switch) shows how to move from another affiliate tool: connect payments, test tracking, then invite your partners by CSV. Partners get new links.
+- Finished steps on Get started and most success tags use Affitor blue instead of green.
+- On Account › Payouts, the Get ready to be paid list no longer repeats the Add payout method button. The Legal name and Payout method rows jump to their cards on the page.
+- Marketplace programs without an uploaded logo can show their website's icon instead of initials. An uploaded logo always wins.
### Fixed
@@ -37,6 +42,9 @@ description: Simpler username rules, website suggestions for your Business detai
- Signing up with email keeps the name you typed.
- A renamed Refer a brand link still credits the brands who sign up through it.
- Program pages show their whole About, with no Read more.
+- The invoice number in the How to pay part of invoice emails stays on one line on a phone.
+- Paying an Affitor invoice by card stays in the invoice currency, with no conversion to a local currency at checkout.
+- In Partner › Programs, a program's dashboard shows the same logo as your Programs list instead of an initial, and Copy buttons line up for short and long links.
### For developers
@@ -46,3 +54,9 @@ description: Simpler username rules, website suggestions for your Business detai
- `affitor onboard` leaves your Stripe webhook alone when Stripe is connected in Affitor, so sales are not counted twice.
- `@affitor/sdk` 2.1.3 marks its React entry `"use client"`, so it imports cleanly in the Next.js App Router.
- `affitor status` and `affitor test` run with an API key alone, with no project config.
+- Stripe invoices now record their sale from `invoice.paid` as well as `invoice.payment_succeeded`, once per invoice. An invoice already refunded, even partly, when Affitor records it adds no sale.
+- A Stripe invoice paid with several payments, or by a payment that also pays other invoices, does not record a sale on its own.
+- `POST /api/v1/track/refund` with an empty Bearer token returns 401 `Empty Bearer token`.
+- `affitor` 0.4.6: `affitor agent setup --program-id ` gives each coding agent its own restricted key, separate from your live key. Run `affitor login` first; only program Owners can create keys.
+- MCP tools describe every input: what it means, where it comes from and what leaving it out does. `list_my_payouts` says bank or Wise.
+- `@affitor/recipes` 0.1.1: the Stripe sale and renewal snippets skip a checkout with no Affitor customer key instead of failing the webhook.
diff --git a/content/changelog/refer-program-page.mdx b/content/changelog/refer-program-page.mdx
new file mode 100644
index 00000000..16ca234c
--- /dev/null
+++ b/content/changelog/refer-program-page.mdx
@@ -0,0 +1,53 @@
+---
+title: A new Refer Program page, with milestones tied to paid invoices
+date: 2026-10-18
+type: feature
+audience: [partners, brands]
+surfaces: [marketplace, dashboard]
+description: The Refer Program page shows an example of what a referral can earn, and the $50 and $350 milestones now follow paid invoices, checked in a review.
+context:
+ facts:
+ - "The Affitor Refer Program page is https://affitor.com/marketplace/referral-program. Get your link opens Referrals when you are signed in, or sign-up when you are not."
+ - "The page has an Example card: pick Brands you bring and Partner sales per brand, a month ($5k, $25k or $50k) to see what the three rewards could add up to."
+ - "The rewards for referring a brand are $50 after the brand pays its first fee invoice, $350 at $10k in paid sales with paid Affitor invoices and paid partners, and 15% of its Affitor fees for 12 months."
+ - "Each reward is held for 30 days. The $50 and $350 are then reviewed one by one before they reach your balance; the 15% releases on its own after its hold."
+ - "Refer a partner shows Soon. It has no published terms yet."
+ ui: ["Affitor Refer Program", "Get your link", "Refer a brand", "Refer a partner", "Soon", "Example", "Brands you bring", "Partner sales per brand, a month", "How it works", "Why refer", "Who it is for", "Questions", "Referrals", "Your link", "Copy", "Invite via email", "M1 and M2 require admin approval after the hold.", "Program terms"]
+ avoid:
+ - "Presenting the Example total as a promise or an average; it is an example the reader sets"
+ - "Saying the $50 comes when a brand goes live (that was the earlier wording)"
+ - "Saying the review or the paid-invoice check is automatic"
+ - "Amounts or terms for referring partners"
+ - "Partner or program counts shown on the page (they change)"
+ cta: { label: "Get your link", url: "https://affitor.com/marketplace/referral-program" }
+---
+
+See what a referral can earn and get your link on the new [Refer Program page](https://affitor.com/marketplace/referral-program).
+
+Until today, the page listed the three rewards, a link and the terms. The $50 came when a referred brand's program went live, the $350 at $10,000 in tracked sales, and both reached your balance when their hold ended. Now the page shows a worked example, and the terms tie both milestones to paid invoices: each one is reviewed against those payments before it reaches your balance.
+
+## How it works
+
+- **Example**: set how many brands you bring and their monthly partner sales to see the three rewards add up.
+- **Paid milestones**: $50 after the brand pays its first fee invoice; $350 at $10k in paid sales, with paid Affitor invoices and paid partners.
+- **Reviewed release**: after the 30-day hold, the $50 and $350 are reviewed one by one. The 15% releases on its own.
+
+## See what a referral could earn
+
+The **Example** card starts at 3 brands and $25k in partner sales a month. Change either one and each reward line updates. Below it, the page explains how it works, why to refer, who it is for, and answers common questions.
+
+
+
+## Get your link
+
+Click **Get your link**. Signed in, it opens **Referrals**; otherwise you sign up first. Referrals shows your link with **Copy** and **Invite via email**, the same three rewards, and a note that the milestones are approved after the hold.
+
+
+
+## Where to read the rules
+
+The [Refer Program terms](https://affitor.com/legal/refer-program) are the rules. **Refer a partner** shows **Soon** until its terms are published.
+
+## Conclusion
+
+The Refer Program page now shows what a referral can earn, and its milestones are reviewed against paid invoices before release. [Learn more about referral rewards](https://affitor.com/docs/partners/referral-rewards), and write to support@affitor.com with any question.
diff --git a/public/docs/changelog/brand-onboarding-flow/business-dark.png b/public/docs/changelog/brand-onboarding-flow/business-dark.png
new file mode 100644
index 00000000..e89ae237
Binary files /dev/null and b/public/docs/changelog/brand-onboarding-flow/business-dark.png differ
diff --git a/public/docs/changelog/brand-onboarding-flow/business-light.png b/public/docs/changelog/brand-onboarding-flow/business-light.png
new file mode 100644
index 00000000..89c922de
Binary files /dev/null and b/public/docs/changelog/brand-onboarding-flow/business-light.png differ
diff --git a/public/docs/changelog/brand-onboarding-flow/business-phone-dark.png b/public/docs/changelog/brand-onboarding-flow/business-phone-dark.png
new file mode 100644
index 00000000..6fde7f00
Binary files /dev/null and b/public/docs/changelog/brand-onboarding-flow/business-phone-dark.png differ
diff --git a/public/docs/changelog/brand-onboarding-flow/business-phone-light.png b/public/docs/changelog/brand-onboarding-flow/business-phone-light.png
new file mode 100644
index 00000000..5dde613e
Binary files /dev/null and b/public/docs/changelog/brand-onboarding-flow/business-phone-light.png differ
diff --git a/public/docs/changelog/brand-onboarding-flow/business-raw.png b/public/docs/changelog/brand-onboarding-flow/business-raw.png
new file mode 100644
index 00000000..4967424b
Binary files /dev/null and b/public/docs/changelog/brand-onboarding-flow/business-raw.png differ
diff --git a/public/docs/changelog/refer-program-page/example-dark.png b/public/docs/changelog/refer-program-page/example-dark.png
new file mode 100644
index 00000000..425fa100
Binary files /dev/null and b/public/docs/changelog/refer-program-page/example-dark.png differ
diff --git a/public/docs/changelog/refer-program-page/example-light.png b/public/docs/changelog/refer-program-page/example-light.png
new file mode 100644
index 00000000..857c8228
Binary files /dev/null and b/public/docs/changelog/refer-program-page/example-light.png differ
diff --git a/public/docs/changelog/refer-program-page/example-phone-dark.png b/public/docs/changelog/refer-program-page/example-phone-dark.png
new file mode 100644
index 00000000..90e92dc4
Binary files /dev/null and b/public/docs/changelog/refer-program-page/example-phone-dark.png differ
diff --git a/public/docs/changelog/refer-program-page/example-phone-light.png b/public/docs/changelog/refer-program-page/example-phone-light.png
new file mode 100644
index 00000000..fb8c7352
Binary files /dev/null and b/public/docs/changelog/refer-program-page/example-phone-light.png differ
diff --git a/public/docs/changelog/refer-program-page/example-raw.png b/public/docs/changelog/refer-program-page/example-raw.png
new file mode 100644
index 00000000..18df509b
Binary files /dev/null and b/public/docs/changelog/refer-program-page/example-raw.png differ
diff --git a/public/docs/changelog/refer-program-page/link-dark.png b/public/docs/changelog/refer-program-page/link-dark.png
new file mode 100644
index 00000000..265a53a0
Binary files /dev/null and b/public/docs/changelog/refer-program-page/link-dark.png differ
diff --git a/public/docs/changelog/refer-program-page/link-light.png b/public/docs/changelog/refer-program-page/link-light.png
new file mode 100644
index 00000000..450d9308
Binary files /dev/null and b/public/docs/changelog/refer-program-page/link-light.png differ
diff --git a/public/docs/changelog/refer-program-page/link-phone-dark.png b/public/docs/changelog/refer-program-page/link-phone-dark.png
new file mode 100644
index 00000000..d7bf223e
Binary files /dev/null and b/public/docs/changelog/refer-program-page/link-phone-dark.png differ
diff --git a/public/docs/changelog/refer-program-page/link-phone-light.png b/public/docs/changelog/refer-program-page/link-phone-light.png
new file mode 100644
index 00000000..7e647c84
Binary files /dev/null and b/public/docs/changelog/refer-program-page/link-phone-light.png differ
diff --git a/public/docs/changelog/refer-program-page/link-raw.png b/public/docs/changelog/refer-program-page/link-raw.png
new file mode 100644
index 00000000..f80d124e
Binary files /dev/null and b/public/docs/changelog/refer-program-page/link-raw.png differ