UCBC
Admin Guide

Invoicing and Online Payments

11 min read

UCBC generates invoices and receipts for your customers, lets them pay online with no login required, and can automatically keep your own accounting software up to date with every invoice and payment. This guide covers generating and viewing invoices, how a customer pays online, viewing payment history and receipts, and setting up your payment provider and accounting sync.

Overview#

  • Invoicing (Billing > Invoicing) generates and lists invoices and receipts for every customer domain.
  • Payments (Billing > Payment Settings) configures which payment provider processes customer card/mobile-money payments, and tracks every payment received.
  • Financial API (Billing > Financial API) connects your accounting software (Zoho Books or QuickBooks Online) so every invoice and payment syncs there automatically.
  • A customer domain has its own scoped views of the same information under its own Billing menu (Products, Payment, Invoice).

The Invoices list

Screenshot needed · invoices-list

How to Generate an Invoice#

  1. Go to Billing > Invoicing, Invoice tab, and click Generate Invoice.
  2. If you manage multiple domains, choose the domain (a domain-level admin generating their own invoice skips this — it's always their own domain).
  3. Set the Billing Period Start and Billing Period End (defaults to the current calendar month).
  4. Optionally enter one or more email addresses under Email Receipt to send a PDF copy of the invoice as soon as it's generated.
  5. Click Generate. The system automatically blocks generating a duplicate invoice for a period that's already been fully paid.
  6. A preview of the generated invoice appears directly on the same page.

An invoice can include:

  • Invoice Items — the domain's subscribed Product and its components (see the Billing Setup guide). A "rollup" item like Agent Center shows its total with a breakdown of the individual components (and their counts) underneath it.
  • Calls — a summary of call usage for Postpaid accounts (number of calls, total minutes, total cost).
  • Taxes — applied before and/or after the subtotal, each shown with its percentage.
  • Previous Balance — any unpaid balance rolled forward from an earlier invoice, broken down by which invoice(s) it came from.
  • Grand Total — the full amount due.

A prorated line (e.g. from a short first Month-End cycle, or a mid-cycle billing change) is marked with a note showing how many of the period's days were actually billed.

Viewing Invoices and Receipts#

  • Billing > Invoicing (platform-wide view): Invoice and Receipt tabs list every domain's documents, searchable by domain/number and filterable by date. A Billable Items tab shows each domain's currently assigned Product.
  • A customer domain's own Billing > Invoice / Billing > Payment menu shows the same Invoice/Receipt/Billable Items lists, scoped to just that domain.
  • Each row shows the invoice/receipt number, date, billing period, type, grand total, and status — including a color-coded Payment Status: Unpaid, Processing, Paid, or Failed.
  • Click a row to open the full document: all line items, the calls summary, taxes, the previous-balance breakdown, and the grand total, plus buttons to Download PDF and (if unpaid and a payment provider is active) Pay Now.

The "Pay Now" Flow — How a Customer Pays Online#

Every invoice carries a unique, secure payment link (the same link included in the emailed invoice, and behind the Pay Now button). The link itself works without any login — a long, unguessable code in the link is what authorizes it, the same way a password-reset link works.

  1. The customer opens the link and sees the invoice number and the exact amount due.
  2. They fill in a short form: their name (pre-filled if they're already a signed-in domain admin), and either their email address or mobile number, depending on which payment provider is active.
  3. Clicking Pay Now:
    • For Paystack, IT Consortium Transflow, or Hubtel, they're redirected to that provider's own secure checkout page to enter card or mobile money details.
    • For MTN Mobile Money, a payment prompt is pushed straight to their phone to approve, and the page shows a live "waiting for confirmation" screen.
  4. Once the provider confirms the payment:
    • The invoice is marked Paid (along with any other older unpaid invoices for that domain that were already rolled into this one's total — a customer paying their latest invoice settles their whole outstanding balance in one transaction).
    • If the domain had been suspended for non-payment, service is automatically restored and the billing cycle resumes with whatever time it had left — it does not restart from scratch.
    • A receipt is generated automatically.
    • A payment confirmation email is sent to the customer, and a payment alert email is sent to whichever addresses you've configured (see Wallet, below).
  5. If the invoice was already paid, opening the link again simply shows a "this invoice has already been paid" message.

The Domain's Own "Payment" Page#

A customer domain's Billing > Payment page is a simple at-a-glance view of what they currently owe:

  • One number: the total amount due across every unpaid invoice.
  • A Preview button shows the actual invoice behind that number.
  • A Pay Now button goes straight into the same payment flow described above.
  • If the account is currently suspended for non-payment, a banner explains this. Non-admin users on that domain (agents, supervisors, extension users) only see a "please contact your administrator" message — they never see the amount owed or payment controls.

Viewing Payment History and Receipts#

  • A domain's My Receipts / My Invoices pages list every invoice and receipt generated for that domain, searchable and filterable by date.
  • A receipt documents an actual payment received — an online Pay Now payment, a prepaid top-up, or the closing receipt generated when a postpaid account pays off its balance and is re-enabled.
  • As the platform owner, Payments > Wallet shows every successful customer payment platform-wide:
    • Totals for Confirmed vs Pending settlement (has the provider actually paid the money into your bank account yet, or is it still sitting with them).
    • A searchable transaction list, a date-range Check Sum calculator, and an Export to Excel option.
    • A Confirm action to mark a transaction's bank settlement as confirmed once you've verified the real deposit.
    • A Payment Alert button to set the email addresses that should be notified every time a customer payment is confirmed.

The customer-facing Pay Now payment page

Screenshot needed · pay-now-flow

Setting Up a Payment Provider#

Go to Billing > Payment Settings, Settings tab. Pick exactly one provider from the Active Payment Provider dropdown — only one provider can be active for the whole platform at a time. Check Active to actually start offering it on invoices. Every provider's own fields stay saved even while it's not the selected one, so switching back and forth never loses what you've typed. Switching providers while one is already active asks you to confirm, since it immediately stops offering the old one on new payment links.

Paystack#

  1. In your Paystack Dashboard, go to Settings > API Keys & Webhooks and copy your Secret Key (sk_test_... while testing, sk_live_... once live) and your Public Key.
  2. Paste both into the Paystack fields here.
  3. Copy the Callback URL and Webhook URL shown on this page and paste them into that same Paystack dashboard screen (set the Webhook URL for both Test and Live mode — the correct one is used automatically based on which key you've saved).

IT Consortium Transflow Checkout#

  1. Enter the API Key, Transflow ID, and Merchant Product ID provided to you by IT Consortium, plus the Base URL (a UAT/test URL is pre-filled; switch to the live URL when going live).
  2. IT Consortium has no self-service dashboard for registering your callback — this page generates a ready-made email template (already filled in with your webhook URL and IDs). Copy it and send it to your IT Consortium account manager to have it registered.

MTN Mobile Money#

  1. Enter the Subscription Key (from the Collections product on the MTN MoMo developer portal), your API User, API Key, Target Environment (sandbox for testing, or your live environment name once approved), and Base URL.
  2. When creating your MTN MoMo API user, register the exact Callback Host (a plain hostname, no https://) shown on this page. If the callback MTN sends doesn't match this exact host, MTN will silently drop your payment confirmations.

Hubtel#

  1. Enter your Client ID, Client Secret, Merchant Account Number, and POS Sales ID from your Hubtel merchant account.
  2. No manual webhook setup is needed — Hubtel's callback is sent automatically with every payment request.

Setting Up the Financial API (Accounting Sync)#

Go to Billing > Financial API. Pick exactly one accounting provider from the dropdown — only one can be active at a time — and check Active to start syncing. Once connected and active, every new invoice and every recorded payment is automatically pushed to that accounting software — there is nothing to export manually. A Recent Activity list on the same page shows the last invoices/payments the platform attempted to sync, which domain each was for, and whether it succeeded or failed.

Zoho Books#

  1. Enter your Region (which Zoho data center your organization is hosted in — com, eu, in, com.au, jp, ca, com.cn, or sa), your Organization ID (found in Zoho Books under Settings > Organization Profile), and the Client ID / Client Secret from a Self Client you register in the Zoho API Console (api-console.zoho.com).
  2. In that same Zoho API Console, generate a fresh Grant Token and paste it into the Grant Token field here, then click Save. It's exchanged immediately for a long-lived connection and then cleared from the form automatically.
  3. You only do this grant-token step once. Leave the Grant Token field blank on every save after the first successful connection — a green "Connected" indicator confirms the link is active.

QuickBooks Online#

  1. Enter your Environment (sandbox for testing, production once live), Client ID, and Client Secret from your Intuit developer app.
  2. Click Save first.
  3. Click Connect to QuickBooks — you'll be redirected to QuickBooks' own login/authorization screen. Approve the connection, and you'll be sent back here with the Company (Realm) ID filled in automatically and a green "Connected" indicator shown.

Switching the active accounting provider stops sending new invoices/payments to the old one; records already sent to it are not affected or re-sent.

Field Reference#

Invoice / Receipt List#

FieldDescription
DomainThe customer this document belongs to
NumberThe invoice or receipt number
DateWhen it was generated
Billing PeriodThe usage period this document covers
TypeThe invoice type
Grand TotalThe full amount
StatusThe document's own generation status
Payment StatusUnpaid, Processing, Paid, or Failed

Generate Invoice#

FieldDescription
DomainWhich customer to generate for (platform view only)
Billing Period Start / EndThe date range this invoice covers
Email ReceiptOptional email address(es) to send a PDF copy to immediately

Payment Settings — per provider#

ProviderCredentials you needWhere to get them
PaystackSecret Key, Public KeyPaystack Dashboard > Settings > API Keys & Webhooks
IT Consortium Transflow CheckoutAPI Key, Transflow ID, Merchant Product ID, Base URLProvided by your IT Consortium account manager
MTN Mobile MoneySubscription Key, API User, API Key, Target Environment, Base URLMTN MoMo developer portal (momodeveloper.mtn.com)
HubtelClient ID, Client Secret, Merchant Account Number, POS Sales IDYour Hubtel merchant account

Financial API — per provider#

ProviderCredentials you needWhere to get them
Zoho BooksRegion, Organization ID, Client ID, Client Secret, one-time Grant TokenZoho Books Settings + Zoho API Console (api-console.zoho.com)
QuickBooks OnlineEnvironment, Client ID, Client Secret, then "Connect to QuickBooks" (OAuth)Your Intuit developer app

Tips & Common Issues#

  • Pay Now button is missing on an invoice — no payment provider is currently set to Active. Check Billing > Payment Settings.
  • Generate Invoice is grayed out / blocked — the selected billing period has already been fully paid; you can't generate a duplicate invoice for an already-settled period.
  • Customer says the payment link says "invalid or expired" — the link's token didn't match, or the invoice was deleted/regenerated. Re-send the invoice to get a fresh link.
  • Switching payment providers mid-use — do this deliberately; it immediately removes the old provider from every new Pay Now link (already-sent links for an already-selected provider keep working if that transaction already started).
  • QuickBooks shows "Not connected" after entering credentials — Client ID/Secret must be saved first, then click "Connect to QuickBooks" to complete the OAuth authorization step; entering credentials alone doesn't connect it.
  • Zoho Books Grant Token looks like it didn't save — this is expected. The Grant Token is one-time-use and is always cleared from the form immediately after a successful connection; check the "Connected" indicator instead.
  • An invoice or payment isn't showing up in my accounting software — check the Recent Activity list on the Financial API page for that record's sync status and any error message.
💬 Chat with Ace: SIITS AI