Invoices, payments, customers, quotes and credit notes
Invoices are the core of the sales module. Go to Sales → Invoices.
Invoice created but not yet committed. No stock is deducted. You can freely edit line items. Safe to use while building an order.
Invoice is committed. Stock is deducted from the warehouse. Invoice number is assigned. PDF is auto-generated in the background. Invoice can no longer be edited.
A payment has been recorded but it does not cover the full balance. Both the amount paid and remaining balance are tracked.
All payments received — balance is zero. A receipt PDF is auto-generated and emailed to the customer for each payment.
Invoice cancelled. Stock is automatically returned to the warehouse. Finance ledger entries are reversed. Only unpaid invoices can be voided — record a credit note for invoices with payments.
Open a finalized invoice and click Record Payment. Fill in:
| Field | Notes |
|---|---|
| Amount | Defaults to the full outstanding balance. Enter less for a partial payment |
| Payment Method | Cash, MPesa, Bank Transfer, Cheque, or Credit |
| Split Payment | Toggle on to pay with multiple methods (e.g., part Cash + part M-Pesa). Each split creates separate finance ledger entries |
| Reference | MPesa transaction code, cheque number, or bank reference — used for reconciliation |
| Date | Defaults to today. Can be backdated |
After recording a payment, a Receipt PDF is automatically generated and emailed to the customer. No manual action needed.
Manage your customer database at Sales → Customers.
Key fields:
On the customer detail page, the Statement tab shows a running list of all invoices, payments, and credit notes with a running balance. Use the Generate Statement button to download or email a PDF statement to the customer.
Quotes are sales proposals sent to customers before they commit to a purchase. Go to Sales → Quotes. Once a customer accepts, convert the quote to an invoice with one click — all line items carry over.
Quote statuses: Draft → Sent → Accepted / Rejected / Expired → Converted
Use Sales → Credit Notes to issue a credit against a previous invoice — for returns, overcharges, or goodwill adjustments.
Amount stays on the customer's account as a credit for future purchases. Revenue is reversed in the ledger.
Customer exchanges returned goods for different products. Credit stays on account to be applied to a new invoice.
Cash is returned to the customer. Creates a cash outflow entry in the finance ledger. Only available when the return policy allows it.
StockPulse uses clear, human-friendly status labels throughout the sales module. The underlying values are unchanged for developers, but the UI shows friendlier names:
The invoice form automatically adapts based on the items you add:
Warehouse selection and stock indicators are hidden. No branch needed. Perfect for consulting, repairs, or any non-stocked work.
Full warehouse/branch selection is shown with stock levels and availability badges for each line item.
Warehouse selection is shown for stocked items. Service line items display a "Service" pill so you can tell them apart at a glance.
Need to create a similar invoice? Open any invoice and click the Duplicate button. StockPulse creates a new draft with the same customer, line items, and notes — but with a fresh invoice number and today's dates. Edit anything you need before finalizing.
Draft invoices can be edited at any time. Open the draft and click Edit to re-open the invoice form, pre-filled with the existing data. Make your changes and choose Save Changes to keep it as a draft, or Save & Finalize to commit and deduct stock in one step.
Every finalized invoice gets a shareable public URL that your customer can view without logging in. The link is auto-generated on finalization, or you can generate one on-demand via the Get Link button on the invoice detail page.
stockpulse.co.ke/invoice/{token} — unique, unguessable token per invoice
Full invoice details with your company branding, line items, totals, and a Download PDF button. No login required.
Chase overdue payments without the awkwardness. StockPulse offers both manual and automatic reminders.
Open any unpaid or overdue invoice and click Send Reminder. The reminder is sent via WhatsApp first (if the customer has a phone number), with email as a fallback. The message includes the invoice number, amount due, and a link to view the invoice.
Enable automatic reminders in Settings → Company. Configure how many days after the due date reminders should be sent (e.g., 3, 7, 14, and 30 days). StockPulse sends reminders at 9am EAT daily, up to 20 per tenant per run to avoid spamming.
lastReminderAt timestamp on each invoice ensures the same customer is not reminded too frequently.For customers you bill regularly, set up recurring invoices to automate the process.
Manage all recurring invoices at Sales → Invoices → Recurring. Pause, resume, or end any recurring template at any time.
Need to send a proforma instead of a quote? Proformas use the same feature as quotations but with a different label and "PRO" number prefix. When creating a quote, select Proforma Invoice as the document type. The workflow is identical — send, accept, convert to a real invoice.
Track sales team performance against monthly targets at Sales → Targets. Set a target amount per salesperson per month and monitor progress in real time.