KHOLO LogoDocs v1.0
User Guides

Customer Master & Credit Control

E.164 WhatsApp numbers, price tiers, and credit hold enforcement.

This guide covers registering B2B buyers, managing WhatsApp phone bindings, enforcing credit hold policies, and setting price tiers in the Customer Portal (/customers).


1. Customer Directory Overview (/customers)

The Customer Directory (http://localhost:XXXX/customers) lists all approved wholesale accounts authorized to place orders via WhatsApp:

Customer Master Directory4 Accounts Active
+ New Customer
Trading NameWhatsApp NumberSage AccPrice TierCredit Status
Clerk (KwaMashu Spaza)+27 00 000 0000CUST-8832TIER_AActive
Supplier A+27 00 000 0000CUST-1049BULK_VIPActive
Mama Grace Tuckshop+27 00 000 0000CUST-4521DEFAULTActive
Zanele Fast Foods+27 00 000 0000CUST-3910DEFAULTCredit Hold

2. Phone Number Format (Strict E.164 Requirement)

Meta WhatsApp Cloud API identifies incoming messages using the sender's international E.164 phone number.

Rules for Phone Numbers:

  • Must begin with + followed by the country code (+27 for South Africa).
  • Strip the leading zero (000 000 0000 becomes +27 00 000 0000).
  • No spaces, hyphens, or parentheses in the stored value.

[!IMPORTANT] If a customer sends a message from a number not registered in Kholo, the order is flagged as UNREGISTERED_CUSTOMER. A clerk can link the number to an existing account with 1 click in the dashboard.


3. Credit Control: ACTIVE vs. HOLD

Wholesale cash-flow risk is managed through the customer's credit status:

ACTIVE
Normal Trading

Account in good standing with positive credit balance.

  • High-confidence orders (≥95%) auto-approve.
  • Standard 1-click ERP sync to Sage 200 Evolution.
  • Immediate warehouse pick slip dispatch.
HOLD
Credit Frozen

Account overdue or credit limit exceeded in Sage ERP.

  • Incoming orders flagged with bold red banner.
  • "Approve & Sync to Sage" button strictly disabled.
  • Requires financial clearance or manager override PIN.

Automated Credit Hold Workflow:

  1. When a message arrives from an account marked HOLD, Kholo still parses and matches the items so clerks see the order value.
  2. The order is automatically tagged with:

    ORDER BLOCKED: Customer account is on CREDIT HOLD in Sage Evolution.

  3. The clerk cannot push the order to the warehouse floor until finance clears the balance or a manager inputs their override PIN.

4. Multi-Tier Pricing

Wholesalers often charge different rates based on order volume or customer category:

Price TierTypical UsageDiscount / Rule
DEFAULTStandard walk-in spaza shops or low-volume traders.Standard catalog base price.
TIER_ARegular, high-loyalty retail clients.~5% discount below base price.
BULK_VIPHigh-volume supermarket groups or distributors.Volume price break (cost + tight markup).

When an order is parsed, Kholo calculates unit prices based on the customer's assigned tier.


5. Bulk Customer Ingestion CSV Format

To import your customer accounts from Sage or an Excel spreadsheet:

phoneNumber,name,erpCustomerId,priceTier,creditStatus
+27 00 000 0000,"Clerk (KwaMashu Spaza)",CUST-8832,TIER_A,ACTIVE
+27 00 000 0000,"Supplier A",CUST-1049,BULK_VIP,ACTIVE
+27 00 000 0000,"Mama Grace Tuckshop",CUST-4521,DEFAULT,ACTIVE
+27 00 000 0000,"Zanele Fast Foods",CUST-3910,DEFAULT,HOLD

On this page