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

# Usage, wallet, and invoices

> How BizBionic charges SMS usage, funds your wallet via Stripe, and what you see on campaigns and invoices.

# Usage, wallet, and invoices

Who this is for: operators, partners, and agents who need a clear answer to **“What did I pay for?”**

## The one rule

BizBionic uses a **prepaid wallet**.

| Money in                                                                                      | Money out                                      |
| --------------------------------------------------------------------------------------------- | ---------------------------------------------- |
| Stripe Checkout, subscription invoices, portal top-ups (and partner/ops grants where enabled) | Each SMS **accepted by the messaging network** |

You are charged when a message is **successfully submitted** to the network—not only when the recipient’s phone shows delivered.

## When you are charged

| What happened                                                         | Do you pay?                           |
| --------------------------------------------------------------------- | ------------------------------------- |
| Message blocked before send (consent, quiet hours, cancel, preflight) | **No**                                |
| Network rejects the send                                              | **No**                                |
| Network accepts the send                                              | **Yes** (your retail rate × segments) |
| Later: phone delivered                                                | Already charged — no second charge    |
| Later: unreachable or delivery failed                                 | **Still charged** — not auto-refunded |
| Ops mistake on our side (rare)                                        | Support credit, case by case          |

This matches industry **attempt-based** messaging billing: once the network accepts the attempt, the attempt is paid.

## Wallet vs Stripe invoice

* **Stripe** is how you **add funds** or pay a **plan**. That money lands in your BizBionic wallet.
* **SMS usage** **debits the wallet** when sends are accepted.
* A Stripe invoice is **not** a line-by-line list of every SMS. Your usage trail lives in BizBionic (balance, history, campaign spend).

**Simple reconstruction:**

```text theme={null}
wallet balance ≈ money you added − SMS usage
campaign cost  = sum of charges for accepted messages in that campaign
```

## What you can call (A2A)

| Skill                               | Purpose                                                                       |
| ----------------------------------- | ----------------------------------------------------------------------------- |
| `billing.balance`                   | Current wallet, holds, available                                              |
| `billing.history`                   | Ledger of top-ups and usage debits                                            |
| `billing.cost`                      | Estimate cost before send / launch                                            |
| `billing.plans` / checkout / portal | Fund the wallet via Stripe                                                    |
| `analytics.campaign`                | Campaign delivery + **usage** spend for that mission                          |
| `messages.send`                     | 1:1 send; response `cost_cents` is the **amount charged** (0 if not accepted) |

```bash theme={null}
curl -sS https://app.bizbionic.com/rpc \
  -H "Authorization: Bearer bb_…" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"billing.balance","params":{}}'
```

```bash theme={null}
curl -sS https://app.bizbionic.com/rpc \
  -H "Authorization: Bearer bb_…" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"billing.cost","params":{"segments":1,"recipient_count":100}}'
```

Same numbers appear in **Operator Studio → Account → Billing** (cx-parity: UI and agents share one ledger).

## Campaign and Live views

* **Compose preflight** estimates cost and checks available balance before launch.
* **Live / campaign analytics** show how many messages were accepted, delivered, or failed, and **usage cost** for accepted attempts.
* “Failed after accept” (unreachable) still counts toward **usage money**; it may show as a failed delivery status for ops quality—not as free SMS.

## Common questions

**Why was I charged if the phone never got the text?**\
The network accepted the send. Handset unreachable is a delivery outcome after charge, same as typical carrier attempt billing.

**Why is my campaign cost lower than “all recipients × rate”?**\
Blocked or never-submitted rows are free. Only accepted attempts debit the wallet.

**Does Stripe show every SMS?**\
No. Stripe shows wallet funding / plan payment. SMS usage is prepaid debit inside BizBionic.

**Can the same top-up credit me twice?**\
No. Grants are idempotent on the Stripe session or invoice id.

**What if balance is too low?**\
Launch and send paths return `credits_insufficient` (or a payment hold if a subscription invoice failed). Top up, then retry.

## Related

* [Trust Setup](/compliance/trust-setup) — credits are part of first-send readiness
* [Errors](/errors) — `credits_insufficient`, `payment_hold`
* [Operator Studio](/connect/operator-studio) — where humans manage Account billing
* [A2A RPC](/connect/a2a-rpc) — call skills from agents
* [API Reference](/api-reference) — full `billing.*` catalog
