UCBC
Admin Guide

Billing Setup and Rates

13 min read

UCBC's Billing menu is where you configure how each of your customers (domains) is charged for calls and services, set the prices you charge, and keep an eye on usage. This guide covers setting up a customer's billing account, understanding billing cycles and grace periods, setting your rates and product prices, and what happens when an account goes unpaid.

Overview#

Every customer domain automatically gets its own billing account the moment the domain is created — there's nothing to manually add. Billing account types that can be assigned include:

  • Prepaid — the customer pays before they call. Outbound calling is capped to their live balance in real time, and calls are cut off the moment the balance runs out.
  • Postpaid — usage is tracked and accumulated with no real-time cap (the balance can run into the negative). The customer is billed on a recurring billing cycle (e.g. every 7 days, every month, or calendar-month-aligned), and an invoice is generated automatically at the end of each cycle.
  • Infinity — the same unlimited calling as Postpaid, but with no billing cycle at all. It is never automatically billed or disabled for non-payment — only a manual admin action can turn its outbound calling off.

The billing type itself is set from the customer's domain record (its Invoice Type) — it isn't changed from the billing account page directly, though the billing account page shows it and reacts to it.

A Billing Status panel shows whether the billing engine itself is running and reachable, and how many domains currently have billing/outbound calling enabled — useful as a first check if something seems off platform-wide.

A domain's Billing Account screen

Screenshot needed · billing-account-overview

How to Set Up a Domain's Billing Account#

  1. Go to Billing > Accounts & Balances. Every domain is already listed here — there is no "Add" step.
  2. Click a domain's row to open its billing account.
  3. Review/set the Billing Tenant and Billing Account ID (these default to the domain name and identify the account inside the billing engine — leave as-is unless you have a specific reason to change them).
  4. If the account is (or is being switched to) Prepaid, enter an amount in Top-Up to add starting balance. A positive top-up is required the moment an account is switched to Prepaid — otherwise it would start at $0 and be treated as "credit exhausted" immediately.
  5. Set Outbound Enabled / Inbound Enabled as needed (see below — Outbound is also auto-managed by the billing system itself).
  6. For a Postpaid account, set the Billing Cycle (how often it's billed) and Grace Period (extra time allowed after the cycle ends before the account is disabled for non-payment) — see the next section.
  7. Optionally fill in Description and Billing Contact Name (the name shown for this customer in your connected accounting software — see the Invoicing guide).
  8. Click Save.

If the domain itself is currently disabled, every field on its billing account is locked and shown grayed out. Re-enable the domain first (on the domain's own page), then come back here to make changes.

Re-enabling a Disabled Postpaid Account#

Turning Outbound Enabled back on for a Postpaid account that was switched off starts a brand-new billing cycle immediately and resumes outbound calling right away. You'll be asked to confirm before this happens. If the account had already accrued unpaid usage, that usage is closed out and documented (as a paid receipt, since re-enabling it this way represents the customer having settled up).

Understanding the Billing Cycle and Grace Period#

A Postpaid account's billing cycle starts the moment Postpaid billing begins (or the last time the cycle genuinely restarted) and runs for whatever length you configure, in one of these units:

Billing Cycle unitMeaning
Minutes / Hours / DaysA simple rolling period of that length (e.g. "Every 7 Days")
MonthsA rolling period measured in calendar months from the start date
Month-EndBills on real calendar-month boundaries rather than a rolling count — see below

Grace Period is extra time allowed, in the same unit as the Billing Cycle, after the cycle ends before the account is automatically disabled for non-payment. A 30-minute billing cycle gets a grace period measured in minutes, not a flat multi-day grace regardless of scale.

Month-End (Calendar-Aligned) Billing#

Month-End billing is designed to always land on real calendar-month boundaries, not a rolling N-day count:

  • The very first cycle runs only from the day Postpaid billing starts through the end of that same calendar month — a short first period, billed at a prorated fraction of each item's normal price for just those few days (the invoice clearly shows this, e.g. "prorated: 12 of 30 days").
  • Every cycle after that runs a full calendar month (the 1st through the last day of the month).
  • The number you enter for the cycle means "every N calendar months" — so entering 3 bills quarterly, not every 3 days.

Cycle Status#

On the account's own page, a status banner shows where the account currently stands:

StatusMeaning
NormalCycle is active; shows the date it ends
Ending SoonThe cycle is nearing its end (the reminder window scales with the cycle's own length) — a heads-up that payment will be due soon
GraceThe cycle has ended; the account is in its grace period and outbound calling continues
OverdueThe grace period has also ended; the account is disabled for non-payment

If you manually disable a domain partway through a cycle, the billing clock pauses for exactly as long as the domain stays disabled — no paid time is lost, and re-enabling it picks the countdown back up with the same time remaining. Only an actual payment (or a fresh re-enable of a previously auto-disabled account) genuinely restarts the cycle.

Changing the Billing Cycle's own length or unit while a cycle is already running closes out the old cycle as its own invoice (covering exactly the usage/time up to that moment, left unpaid and automatically carried forward as arrears on the next invoice) and starts the new cycle immediately — the account is never disabled just because the cycle definition changed.

The Billing Cycle status view

Screenshot needed · billing-cycle

Setting Rates#

Go to Billing > Rates. This page has two top-level tabs — Rates (your call pricing) and Destinations/Currency (supporting lists) — with the Rates tab further split into Call Rate and Product Rate.

Call Rate#

Each rate defines what you charge for calls to a given set of destinations:

FieldMeaning
Rate IDA name for this rate plan
DestinationsWhich destination groups (countries/prefixes) this rate applies to
Connect FeeA flat fee charged once per call, if any
PriceWhat you charge the customer, per billing unit
Termination RateYour own wholesale cost for completing the call — shown so you can confirm your margin; if it's not lower than your Price, it's flagged in red
On-Net RateAn optional discounted rate for calls that stay on your own network; same-network calls fall back to the regular rate if this isn't set
Unit / IncrementThe billing unit (e.g. per-second) and increment calls are rounded up to

Destinations and Currency#

Destinations are named groups of dialing prefixes (e.g. "UK Mobile") that Call Rates attach to. Currency is the list of currencies available to assign to a domain — each domain picks one currency (on its own billing account), and every money figure shown for that domain uses that currency's symbol.

Product Rate#

This is where you price the packaged Products a customer domain can subscribe to (see "Products," below) — things like Agent Center, Siptrunk, and their individual components.

  • The price you enter for each item is your own margin, added on top of a wholesale base cost that is managed separately. Next to each price field you'll see "Base: [amount] · Your price: [amount]" — the Base is the underlying wholesale cost, and "Your price" is the real total your customer is actually charged (wholesale + your margin).
  • Some products are broken down into individual priced components. For example, Siptrunk is priced by its Channels and DIDs; Agent Center is priced by Queue - Ticket, Agent Accounts, and Supervisor Account. The product's own total is simply the sum of its components — you don't set a price on the product itself, only on each component.
  • UCBC Meet is always free and its price field is locked at 0.
  • Saving a price change here updates it live on every domain's existing invoice line for that item — not just future ones.

Products a Customer Can Subscribe To#

Under a domain's own Billing > Products page, a customer admin (or you, on their behalf) picks exactly one Product for that domain — choosing a different one replaces whatever was selected before. Available products depend on whether the domain is a Virtual PBX or a SIP Trunk domain:

Domain typeAvailable Products
Virtual PBXExtension + IVR + UCBC Meet; Extension + IVR + UCBC Meet + Siptrunk; Agent Center + Meet + Trunk; Full UCBC vPBX
SIP TrunkSip Trunk Service

Selecting a Product automatically creates (or updates) that domain's billable line items to match — each with a real, live-counted quantity (number of extensions, DIDs, concurrent channels, queues, agent/supervisor accounts, etc.), ready to appear on that domain's invoices.

Reviewing Call Usage (CDRs)#

Billing > CDRs lets you browse the raw call detail records behind your billing, for troubleshooting or verifying a customer's usage:

  • Filter by date range, direction (inbound/outbound/local), domain, caller ID, destination number, trunk, call type, duration range, cost range, or a free-text search.
  • Filter by disposition (hangup cause) — including a distinct entry for calls that were cut off by the billing system itself (insufficient funds, or a destination with no rate configured), shown plainly rather than as a cryptic code.
  • Each row shows the date/time, direction, caller ID, destination, trunk, duration, call type, disposition, cost, resulting balance, and domain.
  • Export the filtered results to CSV, or click a row to open the full call detail record.

What Happens If an Account Goes Unpaid#

Prepaid: outbound calling is cut off in real time the instant the balance reaches zero (a call in progress may run slightly past zero before the next check catches it). Topping up restores calling immediately.

Postpaid:

  1. As the billing cycle nears its end, the account shows an "Ending Soon" reminder.
  2. Once the cycle ends, the account enters its Grace Period — outbound calling continues uninterrupted.
  3. Once the grace period also ends, the account is automatically disabled: Outbound Enabled is switched off and outbound calls are blocked. Inbound calls are never affected by non-payment — Inbound Enabled is a separate, always-manual setting.
  4. A domain admin who tries to turn Outbound Enabled back on themselves is instead redirected to that domain's own Payment page to pay the balance due.
  5. Once payment is confirmed (see the Invoicing and Online Payments guide for the full Pay Now flow), the account is automatically restored, the billing cycle resumes with its full remaining time rather than restarting from scratch, a receipt is generated, and a confirmation email is sent.

Infinity accounts are never auto-disabled for non-payment — only a manual admin action can stop their outbound calling.

Field Reference#

Billing Account#

FieldDescription
Billing TenantThe billing tenant this domain is billed under (defaults to the domain name)
Billing Account IDThe billing account ID this domain is billed under (defaults to the domain name)
Domain CurrencySet on the domain itself; shown here read-only. Every money value for this domain is shown in this currency
Top-UpAmount to add to the current balance (Prepaid only)
Outbound EnabledEnables real-time billing / outbound calling. Auto-managed by the billing system (prepaid cap, postpaid overdue auto-disable) as well as settable manually
Inbound EnabledWhether the domain can receive inbound calls on its own DIDs — a purely manual setting, never auto-disabled for non-payment
Billing TypePrepaid / Postpaid / Infinity — set from the domain's own Invoice Type, shown here read-only
Billing CycleHow often a Postpaid account is expected to pay (value + unit: Minutes/Hours/Days/Months/Month-End)
Grace PeriodExtra time, in the same unit as the Billing Cycle, allowed after the cycle ends before auto-disable
DescriptionFree-text note
Billing Contact NameCustomer/company name shown in your connected accounting software; falls back to the domain name

Call Rate#

FieldDescription
Rate IDName of this rate plan
DestinationsDestination group(s) this rate covers
Connect FeeFlat fee per call, if any
PriceWhat you charge the customer
Termination RateYour own wholesale cost (for your reference/margin check)
On-Net RateOptional discounted same-network rate
Unit / IncrementBilling unit and rounding increment

Product Rate#

FieldDescription
Sub-product / ComponentThe priced item (a whole product, or one of its components, e.g. Channels, DIDs, Agent Accounts)
Unit PriceYour margin added on top of the wholesale base cost
Base / Your priceThe underlying wholesale cost, and the resulting combined price your customer is actually charged

Tips & Common Issues#

  • A domain's billing fields are grayed out — the domain itself is disabled. Re-enable it on the domain's own page first.
  • Switching an account to Prepaid fails — you must enter a positive Top-Up amount at the same time; a Prepaid account can't start at $0.
  • "Current billing cycle ends..." disappeared — this only shows for an active, enabled Postpaid account; it's hidden once the domain is disabled since the cycle is effectively paused.
  • Re-enabling outbound on a Postpaid account warns about starting a new cycle — this is expected; it's the same action as "this customer paid, start the next cycle."
  • A rate's Termination Rate shows in red — your configured Price isn't higher than your own wholesale cost for that destination, meaning no margin (or a loss). Adjust the Price.
  • Product Rate prices look different from what the customer pays — remember the number you type is your margin only; the "Base: ... · Your price: ..." note shows the real combined customer-facing total.
💬 Chat with Ace: SIITS AI