Skip to content

Customer Invoices

The Customer Invoices page (/customer-invoices) is a read-only cross-merchant view of every invoice that merchants in your network have issued to their customers. It surfaces commercial activity across all your merchants in one place — useful for monitoring platform value, auditing receivables risk, and supporting merchants when they have questions about a specific invoice.

NeedWhat to do
See total invoice volume across your merchant networkOpen the list — the footer shows the count for the current page.
Find a specific invoice by numberType the invoice number (e.g. INV-2026-0001) into the search field.
Review one merchant’s invoice activityFrom the merchant detail page (/merchants/:id), the embedded Customer Invoices section shows that merchant’s recent invoices. To see the full filtered view, navigate to /customer-invoices?business_id=<merchantId>.
Audit an invoice’s lifecycleClick any row to open the detail page. The Lifecycle section and Audit Timeline track every state change.
ColumnDescription
Invoice #Merchant-issued invoice number, formatted INV-YYYY-NNNN. Monospace font for scanability.
BusinessName of the merchant who issued the invoice.
CustomerName of the customer the invoice was issued to.
StatusColoured badge: Draft, Sent, Partial, Paid, Cancelled, Refunded.
TotalTotal invoice amount in Naira.
BalanceRemaining unpaid balance. Equals Total for Sent, 0 for Paid, partial for Partial.
IssuedInvoice date (the date the merchant created/sent the invoice).

Click any row to open the invoice detail page.

Filters narrow the cross-merchant list. Changing any filter resets pagination to the first page.

FilterTypeOptions
Search invoice #Text inputPartial match on the invoice number. Debounced 300ms; minimum 2 characters before it queries.
StatusDropdownAll statuses, Draft, Sent, Partially paid, Paid, Cancelled, Refunded.
KindDropdownAll kinds, Invoice, Tax Invoice, Proforma.
FromDateIssued on or after this date.
ToDateIssued on or before this date.

The list uses cursor-based pagination — the backend does not return a total count because the dataset spans every merchant in your network and counting is expensive at scale. Instead:

  • The Next button advances using the cursor returned by the current page.
  • The Previous button walks back through cursors visited so far in this session.
  • Page size is fixed at 20 invoices per page.

The footer shows Showing N invoice(s) for the current page (no overall total).

When you open a merchant’s detail page (/merchants/:id), the Customer Invoices section shows that merchant’s recent invoices in an embedded table — page size 10. The summary line shows status breakdown counts (e.g. DRAFT · 1 SENT · 1 PARTIALLY_PAID · 1 PAID · 1) and the Naira volume on the page. Each row is clickable and opens the cross-merchant detail page.

For a fully-filtered cross-merchant view scoped to a single merchant, navigate to:

/customer-invoices?business_id=<merchantId>

This pre-applies the business_id filter so other filters (status, kind, date range) compose on top.

Clicking any invoice — from the cross-merchant list or from a merchant’s embedded section — opens the detail page (/customer-invoices/:id).

The header shows the invoice number, status badge, and kind label (Invoice / Tax Invoice / Proforma). Subtitle: “Read-only partner view · No actions”.

FieldSource
Namebusinesses.name
Business IDUUID (clickable to copy)
Created byusers.name of the merchant staff who created the invoice
FieldSource
Namecustomers.name
Customer IDUUID

Subtotal, Total, Amount paid, and Balance. Tax and discount fields render only when nonzero.

Timestamps for the invoice’s state transitions:

FieldDescription
IssuedInvoice date (merchant-set)
DueDue date for payment
SharedWhen the merchant shared the invoice with the customer (if shared)
PaidWhen the invoice was fully paid (if paid)
CreatedWhen the invoice record was first created

Each line shows: Product, Qty, Unit Price, Total.

Each payment recorded against the invoice shows: Method (cash, POS, transfer, etc.), Amount, Reference (provider reference or merchant-entered note), Received (timestamp).

When the invoice has no payments, a “No payments recorded.” empty state appears.

The bottom of the page lists audit events for this invoice — each entry shows the action (e.g. CUSTOMER_INVOICE_CREATED, CUSTOMER_INVOICE_SHARED, CUSTOMER_INVOICE_MARKED_PAID), the actor (merchant user email), the timestamp, and an optional reason.

When the invoice has no audit history yet, an “No audit events recorded yet.” empty state appears.

Partners are intentionally read-only on customer invoice data. The portal cannot:

  • Create, edit, or void a merchant’s invoice.
  • Mark an invoice as paid.
  • Send the invoice to a customer.
  • Issue a refund.

Those actions belong to the merchant. If you need a change made to an invoice, contact the merchant directly through the channels you maintain with them.

  1. Search for the invoice number in the list.
  2. Click the row to open the detail page.
  3. Scroll to the Lifecycle card to see when the invoice transitioned states.
  4. Scroll to the Audit Timeline at the bottom for the full per-action history (actor, timestamp, optional reason).

Find every overdue invoice across your network

Section titled “Find every overdue invoice across your network”
  1. Set Status to Sent (sent but not yet paid).
  2. Set To to today’s date minus your overdue threshold (e.g. 30 days ago).
  3. Page through the results to identify outstanding balances.

Drill from a single merchant into their invoices

Section titled “Drill from a single merchant into their invoices”
  1. Open /merchants and search for the merchant.
  2. Click the merchant row to open their detail page.
  3. The Customer Invoices section near the bottom shows up to 10 recent invoices for that merchant.
  4. Click any row to open the cross-merchant detail page; or visit /customer-invoices?business_id=<merchantId> for a filtered cross-merchant list.
ProblemPossible CauseSolution
List is empty for a merchant you know has invoicesWrong filter combinationClick All statuses and clear the date range to confirm. Then narrow back down.
Search by invoice number returns nothingPartial match needs 2+ charactersType at least 2 characters of the invoice number; the search is debounced 300ms.
Detail page says “Invoice not found”Invoice deleted by merchant or belongs to a merchant not under your partnerVerify the invoice ID and that the issuing merchant is in your network.
Cannot edit or refund an invoiceRead-only by designContact the merchant directly. The portal does not expose write actions on customer invoice data.