What it does
Billing Suite is how you bill your clients — products, plans, subscriptions and invoices, right next to the update logs and uptime data that justify them. It works two ways, and you can switch at any time:
- Your own Stripe account. Paste a restricted API key from your Stripe dashboard. Products, prices, customers, subscriptions and invoices are created on your account; clients pay by card on Stripe's hosted invoice page; a webhook Stripe registers on your account keeps WPClientHub's copy in sync. The money goes straight to you.
- Direct invoicing (no Stripe). Invoices are native WPClientHub records with a sequential number (
INV-2026-0001), emailed to the client with your payment instructions (bank/ACH/wire/UPI/PayPal — whatever you write) and an optional payment link. You mark them paid when the money arrives.
Either way WPClientHub never touches the funds and charges no platform fee — on any plan.
How to
- Open Billing → Payments & Stripe. Under How clients pay you, write your payment instructions, add a default payment link if you have one, set your payment terms (net days) and pick your billing currency — it locks once your first product exists.
- Optional: to take card payments, create a restricted key at dashboard.stripe.com/apikeys with write access to Customers, Products, Prices, Subscriptions, Invoices and Webhook Endpoints, and read access to Account. Paste it under Your Stripe account → Connect Stripe. WPClientHub verifies the key, stores it encrypted and registers a webhook endpoint on your account. Test-mode keys work too and show a "Test mode" badge.
- Under Products & plans, click New product, then add a plan (recurring or one-time) to it.
- Under Subscriptions, click New subscription to put a client on a recurring plan. With Stripe connected, Stripe issues the invoices; without it, the first invoice goes out immediately and the next one is issued automatically at every period boundary.
- Under Invoices, click New invoice for one-off work — lines can come from your plans or be written free-form. Every invoice has a PDF (your name, logo and colour) and, while open, a Pay link. Use Mark paid (bank, payment link, cash, other) when a client pays outside Stripe.
- Clients see their own invoices in the client portal under Invoices — with the lines, a PDF download and a Pay button (Stripe's page, your payment link, or your written instructions).
- The Overview tab shows MRR, active and past-due subscriptions, revenue by client and the 12-month MRR chart — computed from your local records, Stripe or not.
Limits & defaults
| Setting | Default |
|---|---|
| Platform fee | None — on every plan, Stripe or direct |
| Stripe key permissions | Customers, Products, Prices, Subscriptions, Invoices, Webhook Endpoints: write · Account: read |
| Payment terms (net days) | 14, per organization (1–90) |
| Payment instructions | Up to 1,000 characters, plus an optional default payment link and a per-invoice link |
| Invoice numbers (direct) | INV-YYYY-0001, sequential per organization and year |
| Recurring direct invoices | Issued daily at the period boundary (monthly/yearly plans), one per period, emailed to the client contact |
| Currencies | USD, EUR, GBP, CAD, AUD, NZD, INR, SGD, AED, CHF, SEK, NOK, DKK, PLN, ZAR, HKD, MYR, PHP — locked per organization once the first product exists |
| Dunning reminders | 3, 7 and 14 days past due (Stripe and direct invoices alike) |
| Auto-suspension (opt-in) | A client's sites can be auto-suspended once an invoice is 21+ days past due |
| Permissions | Billing is for owners and admins only |
Troubleshooting
Stripe rejected my key
It must be a secret or restricted key (
rk_live_…, rk_test_…) with the permissions listed above — publishable keys (pk_…) don't work. Create a fresh restricted key at dashboard.stripe.com/apikeys and paste it again; the old one is replaced, and so is the webhook.A Stripe invoice was paid but still shows "open"
Status changes arrive through the webhook registered on your Stripe account. Check Payments & Stripe says "Webhook registered"; if not, reconnect the key to register it again. Under Developers → Webhooks in Stripe, the endpoint URL ends in your organization's own id.
I disconnected Stripe — what happens to my invoices?
Existing Stripe invoices stay as history (and still open Stripe's payment page); every new invoice becomes a direct invoice paid via your payment instructions. Subscriptions created on Stripe keep billing on Stripe until you cancel them there.
A client says they never got an invoice or reminder
Direct invoices and reminders go to the client's contact email, branded to your agency, with the PDF available from the client portal. Reminders go out at fixed day-past-due offsets (3/7/14). Stripe invoices are emailed by Stripe itself.
Why can't I change the billing currency?
It locks once your first product exists, so every plan and invoice agrees. Delete the (unused) products first if you set it wrong.