> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voiceaiwrapper.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Client Portal

> What clients see on their Billing page and how to read each section.

## Overview

When a client user logs in and navigates to **Billing**, they see the **External Billing** page. The page is read-only from the client's perspective: they can view their plan, track usage, see available add-on packs, and review their payment history. All changes (starting subscriptions, applying packs, marking payments) are done by the agency.

The page subtitle reads: *"Your current plan, usage, and available add-ons."*

***

## Status banners

Banners appear at the top of the page when there is a billing issue. They are shown in order of severity.

### Outstanding balance (soft warning)

Shown when the subscription is **Active** but there are unpaid amounts that have not yet become overdue:

> **Outstanding balance**
> *"You have an unpaid invoice on your account. Please contact your provider to arrange payment."*

The unpaid amounts by currency are listed below the message.

### Payment overdue - access restricted

Shown when the subscription is **Past Due**:

> **Payment overdue - access restricted**
> *"There is an outstanding payment on your account. Your access and campaigns are paused. Please contact your provider to resolve this."*

### Subscription suspended

Shown when the subscription is **Blocked**:

> **Subscription suspended**
> *"Your subscription has been suspended due to an unpaid balance. Please contact your provider to restore access."*

***

## Current Plan card

The **Current Plan** card shows the client's active subscription details. The status badge in the top-right corner shows **Active**, **Past Due**, or **Blocked** with a tooltip explaining what each means:

* **Active** - *"Subscription is active and in good standing."*
* **Past Due** - *"Payment is overdue. Your access and campaigns are paused until payment is received."*
* **Blocked** - *"Grace period has expired. Contact your provider to restore access."*

### Pricing grid

Inside the card, a two-column grid shows the plan's snapshotted values:

| Left                 | Right                                                             |
| -------------------- | ----------------------------------------------------------------- |
| **Recurring fee**    | Amount + currency + per period                                    |
| **Included minutes** | Number of minutes per period (with chat equivalent if applicable) |
| **Overage rate**     | Per-minute rate + currency (with chat equivalent if applicable)   |

### Billing period

At the bottom of the card: **"Billing period: {start} – {end}"**

***

## Usage This Period card

Appears alongside the **Current Plan** card. Shows the client's consumption for the current billing period.

### Included minutes

A progress bar with the label:

```
{used} used · {remaining} remaining
```

Below the bar: `{used} / {limit} minutes`

If chat is enabled, a chat-equivalent line is shown in blue: `≈ {used} / {total} chats`

### Add-on balance

Shown only when the balance is greater than zero:

```
Add-on balance    {N} minutes
```

### Billable usage

Shown only when billable minutes have accrued (minutes used beyond included + wallet, with a per-minute rate):

```
Billable usage    {N} minutes
```

### Period note

At the bottom: *"Period: {start} – {end}"*

If there is no usage recorded yet: *"No usage recorded yet."*

***

## Available Add-On Packs

Appears only when the subscription plan has **Add-on packs · On** and the agency has assigned at least one pack.

Heading: **Available Add-On Packs**

Sub-heading: *"Contact your provider to purchase any of these add-on packs."*

Each pack is shown as a card with:

* Pack name
* Description (if set)
* Price and currency
* Number of minutes

Clients cannot purchase packs directly from their portal - they contact the agency, and the agency applies the pack from the admin view.

***

## Payment requests table

At the bottom of the page, a table titled **Payment requests** shows all charges. The description reads:

> *"Invoices and charges for your plan and add-ons. Contact your provider to pay or if you have questions. Use the info icon next to status for due dates and grace details."*

### Columns

| Column             | What it shows                                                                                                                                       |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Created**        | Date and time the request was created, plus last updated time                                                                                       |
| **Request**        | Type (Cycle or Pack) badge, Kind (Recurring or Usage) badge, subscription name, canceled-sub badge if applicable, line item summary, period covered |
| **Product / pack** | The billing plan or add-on pack name the request is for                                                                                             |
| **Amount**         | The charge amount                                                                                                                                   |
| **Due & paid**     | Due date; "Grace until {date}" for cycle requests; paid date once paid                                                                              |
| **Status**         | Badge (Pending, Paid, Overdue, Failed, Canceled) with an info tooltip                                                                               |

### Status info tooltip

Clicking the info (**i**) icon next to any status opens a tooltip with:

* A plain-English explanation of what the status means.
* The **Due** date.
* The **Grace ends** date (for Cycle requests only). For Pack requests: *"Grace periods apply to subscription cycle charges, not add-on pack purchases."*
