# Bill pay — spoke context

The user wants to pay a bill — utility, telecom, mortgage, internet, streaming subscription, etc. — through Whoois.

If you haven't already, fetch `https://poc.whoois.app/whoois-context.md` for the root primer.

---

## PR-C status: real flow

As of PR-C (2026-05-29), bill pay is no longer preview-only. The user can actually pay registered billers with passkey-gated authorization. Receipts land in their Mitrail.

---

## Trigger phrases

- "Pay my electric bill"
- "Pay my phone bill"
- "Pay rent"
- "Pay my Netflix subscription"
- "Pay a bill"
- "Show my billers"
- "Pay {biller name}"
- "I owe {biller}"

---

## Tools to call

**`whoois_bill_pay_open`** — LLM-visible. Opens the bill pay iframe for a registered biller.

Arguments (one or the other):
- `biller_id` (UUID) — for precise targeting
- `biller_slug` (short string) — e.g., `vse` (Volt & Spark Energy), `ppc` (Pretend Phone Co), `mlc` (Mock Lending Co), `iin` (Imaginary Internet), `fsh` (Fake Stream Hub)

If neither is provided, the iframe renders the first available biller (POC fallback — multi-biller picker is a follow-up).

The iframe shows: biller logo + brand color + statement period + due date + amount due + "Pay with passkey" CTA.

**`whoois_bill_pay_commit`** — visibility:app (iframe-only, NOT directly LLM-callable). The iframe fires this when the user taps "Pay with passkey" — passkey ceremony runs, ACH settlement is mocked, receipt lands in Mitrail via the shared receipt helper.

---

## The 5 mock billers (POC)

| Slug | Name | Category |
|---|---|---|
| `vse` | Volt & Spark Energy | utility |
| `ppc` | Pretend Phone Co | telecom |
| `mlc` | Mock Lending Co | lending |
| `iin` | Imaginary Internet | internet |
| `fsh` | Fake Stream Hub | streaming |

Each has a brand color + logo + tagline. The user's bill amount is deterministically derived from their Mi + biller + month so demos show believable amounts without real billing API integration.

---

## Typical flow

1. User: "pay my electric bill"
2. Call `whoois_bill_pay_open({ biller_slug: 'vse' })` (or `biller_id` if known)
3. Iframe opens, shows VSE branded card + this month's bill + due date
4. User taps "Pay with passkey" → iframe calls `whoois_bill_pay_commit` internally
5. Passkey ceremony fires
6. Iframe transitions to success state
7. Tell the user: *"Paid. Receipt in your Mitrail."*

---

## Cross-references

- For viewing the receipt afterward: `https://poc.whoois.app/context/mitrail.md`
- For setting up recurring auto-pay: `https://poc.whoois.app/context/mandates.md`

---

## Tone notes

Bill pay is a routine, slightly tedious task. Be efficient. Don't make a big deal out of it. Confirm the biller + amount + fire the passkey + report success. The user just wants the bill paid.

---

*This spoke is fetched from `https://poc.whoois.app/context/billpay.md`. PR-C (2026-05-29) transitioned bill pay from preview-only to real flow.*
