Skip to content
CogniYukti

Quote to cash

The worst pricing bug does not throw an error. It prices at zero.

Somebody sells into a new currency, no price exists for it, the lookup returns nothing, and the code treats nothing as zero. The quote goes out. Occasionally it gets accepted.

Refusing is the whole feature.

Reaching a price

A price in that currency, or a converted one, or an honest refusal.

Three rungs, in order. A price recorded in the currency being quoted. Else a conversion from the product's home price at your own recorded rate. Else nothing — and nothing means the line refuses rather than pricing at zero.

Every resolved price carries which of the three it was and which rate or which list it used, so a number on a quote can be traced back rather than argued about.

Pricing a line in a currency you sell in
  1. A price in that currencypriced directlySEK 74,000
  2. Converted from the home priceat your own recorded rateSEK 71,480
  3. Neitherthe line will not price at zerorefused
The third rung is the one that matters. A missing rate is an error the rep sees, not a zero that reaches the customer. And every priced line records which route it took.
Illustrative
  • The home price is mirrored both ways

    Change the product's base price and the home list follows; change the home list and the product follows. One number, two places to edit it, never two answers.

  • The home list cannot be deleted, and cannot be duplicated

    Adding a second list in the home currency is refused, as is removing the one that is mirrored.

  • A price dated in the future is not used yet

    Skipped at the moment of pricing rather than applied early.

  • Exchange rates are yours, dated, and annotated

    Recorded by you with a note — a central bank reference and a date — and resolved as the most recent one on or before today. No silent feed deciding what your contracts are worth.

Bundles

A bundle is not a product, and the difference is deliberate.

It has no price of its own and no currency. Dropping one onto a deal explodes it into one line per component, each priced through the same ladder and multiplied by the bundle's quantity.

Which means a bundle can never be quietly mispriced against the sum of its parts, and the customer sees what they are actually buying.

  • Tax is a named rate with one default

    Promoting one demotes the rest in the same act, so there is never a moment with two defaults or none.

  • The classification code is free text

    Because the official lists change quarterly and a dropdown we ship would be wrong within a season.

  • It is copied onto the line when the line is made

    So the document stays correct even if the product is later edited or removed.

Where is tax actually decided?

The rate is on the line. Whether a sale is treated as within one jurisdiction or across two is decided when the document is produced, by comparing the issuing entity's location with the customer's — and where either is missing, it deliberately falls to the treatment that protects the customer's ability to reclaim.

Is there subscription or usage-based pricing here?

Not in the quote-to-order path. A product is a price in a currency — no term, no billing frequency, no metering. Recurring billing, proration, recurring-revenue reporting and dunning all exist in the finance side of the platform; an order does not currently start a subscription, so that hand-off is a manual step today.

Are there tiered or volume prices?

No. One price per product per currency, with the discount applied on the line. Volume pricing is expressed as a discount rather than as a band.

Can a price list be named and assigned to a customer?

No — and the in-product help wrongly suggests otherwise. A price list here is one currency for one product, not a named set assignable to a customer or a territory.

Can I edit a product after creating it?

Products and rates are currently create-and-replace rather than editable — worth knowing before loading a catalogue. Deactivating is available.