Client Portal

Availableportal.erp.io/billing/invoices

Billing

The portal takes the money. It is where your clients pay you, and it is also how the platform bills you.

Invoices
Client-facing
Subscriptions
Recurring services
Coupons
Discounts
Also
The platform payment rail

What it does

ScreenFor
InvoicesClient invoices raised here, payable by card.
SubscriptionsRecurring services, billed on a schedule.
CouponsDiscounts, fixed or percentage, with expiry.
Payment accountsThe processor configuration money arrives through.

A client pays through their own portal, under your brand. The payment is recorded here and settles against the invoice — and where Accounting is also in use, the settlement flows back so the ledger and the portal agree.

portal.erp.io/billing/invoices
Invoices

£62,400 outstanding across 41 clients

OpenOverdue7Paid
InvoiceClientBrandAmountState
NW-2041Meridian GroupNorthwind Trading£1,200.00Paid
NW-2040Acme IncNorthwind Trading£850.00Sent
NS-0311Coastline LtdNorthwind Studio£2,400.009 days late
NW-2038Fielding & CoNorthwind Trading£450.00Paid
Client invoices in the portal. Paid, sent, overdue — the client sees only their own.

It is also the platform's payment rail

This module is where erp.io itself collects money. The shell decides what your workspace owes — it owns the membership records, so it is the only thing that can count seats — and the portal collects it, because the payment processor relationship already lives here behind a webhook that has been taking money for a long time.

The split is deliberate. Standing up a second payment integration in the shell would have meant two services holding live keys for the same processor account, two webhook endpoints to keep in step, and two answers to "did they pay". One writer, one answer. See Billing and plans.

Which is why self-serve purchase can be unavailable

If the payment rail is not configured for a deployment, the plan cards say "Talk to us" instead of offering a button that would fail. That is a deliberate choice — a customer who has decided to pay should not discover the failure after clicking.

What this does not do

No dunning ladder

Overdue is a state and a reminder. There is no escalating collections workflow.

No tax engine

Tax is applied as configured, not computed by jurisdiction.

No partial payments on an invoice

An invoice is paid or it is not.

No direct debit or bank transfer collection

Card payment through the processor.

No client-side payment method management

Cards are entered at payment time.

Questions

Do clients see other brands' invoices?

No — their own company, their own brand.

Can we issue a credit note?

Yes, against an invoice.

Does this replace Accounting?

No. The portal collects; the ledger records. Use both if you keep books.