A wholesaler doesn't sell product. They sell credit and payment terms.
Volume lists, customer-negotiated terms, multi-currency collections and a fistful of recurring contracts nobody should track in spreadsheets. cifraHQ models all of it as first-class modules.
The four pains of a pure wholesaler
- Volume and per-customer price lists. Customer A has a negotiated list, customer B uses the public list with a volume rebate, customer C has a yearly contract at frozen pricing. Spreadsheets lose this. Pricing models lists with versioned effective dates, per customer, per territory and per volume band — and preserves the version that applied at order time.
- Credit and exposure per customer. Sales promises, the warehouse ships, finance discovers the problem at close. The Commercial cluster enforces credit limits at order creation; an order over the limit stays in
HoldForCreditand aging decides whether it releases. - Recurring revenue and real MRR. Standing-supply contracts belong in a dedicated document, not in calendar reminders. The Recurring/MRR domain generates scheduled invoices, supports escalations and surfaces churn before it hits the income statement.
- USD and PAB payments with correct differences posted. The customer pays in USD for an invoice issued in PAB (or vice versa elsewhere).
Paymentsapplies at the day's FX rate and posts FX gain/loss — no manual month-end adjustments.
Three concrete mechanisms
Versioned volume bands
Lists per customer, territory and band. Each version with <code>EffectiveFrom</code>/<code>EffectiveTo</code>. The order from yesterday reconstructs with yesterday's price.
Limit enforced at order
The <code>Order</code> queries exposure in real time. Over the limit, it lands in <code>HoldForCredit</code>. Aging and disputes centralized, not scattered in email.
Contract as a document
Dedicated domain for standing supply. Scheduled invoicing, escalations, churn detection. MRR reported as a business metric, not hand-derived.
From the big order to the applied payment
- Order with correct pricing. The system evaluates per-customer list, then per-territory list, then volume table — and the order lands with the price actually negotiated.
- Threshold approval. Orders above a configured amount route through approval; the
Sales.OverridePricepermission logs adjustments on the compliance dashboard. - Invoice with ITBMS and withholdings. Panama solved; fiscal evidence emits without a side step.
- Payment application with foreign currency. A USD payment against an invoice issued in another currency applies at day's rate; the difference posts as
FXGainorFXLossto the right account automatically. - Recurring with scheduled invoices. Hangfire generates the month's invoices in a batch; each enters the normal approval flow and posts with the same audit trail as any other.
Talk to sales for wholesalers
Bring your current list and credit table; we'll recreate the flow with your three toughest customers in one session.