Skip to content
teamsleek.ai

Module · Sales and quotations

Sales and quotation software: the process, flow by flow

This module runs a distributor's sales work from the first enquiry to the hand-off to finance: logging and matching the enquiry, pricing and approving the quote, chasing and revising it, turning the customer's PO into a confirmed order, and delivering it in one or more parts. The examples use Harbourline Supplies Pte Ltd, a hardware and fittings distributor with its main warehouse in Tuas and a showroom in Ubi, selling to fit-out contractors and kitchen makers on account terms.

The process usually breaks between steps. Enquiries sit in personal inboxes, prices come from memory or an old quote, the customer's PO is keyed in without being compared with the quote, stock that showed as free at quote has gone by the time the order is confirmed, and the balance of a part delivery is tracked on paper. Each flow below shows where the check sits, the rule that decides it, and who decides when the rule cannot.

Process

The flows, step by step

Each step names who does it: a person, an agent, or the system applying a fixed rule. Agents draft and wait for approval. Payments, deletions and messages to customers or suppliers always stop at a person.

Agents in these flows: quotation agent and document intake agent. Sales and quotations is one part of the AI ERP.

End to end

  1. System

    Enquiry arrives

    Email with a PDF item list

  2. Agent prepares

    Enquiry recorded

    Customer and items matched

  3. Agent prepares

    Quote drafted

    Account prices, stock checked

  4. Person decides

    Quote approved and sent

    Sales executive

  5. Agent prepares

    Order drafted from the PO

    Checked against the quote

  6. Person decides

    Order confirmed

    Stock reserved for delivery

Sample data. Harbourline Supplies Pte Ltd is not a real company.

Flow 01

Enquiry intake

Enquiries arrive as emails, PDF item lists, photos of handwritten lists and phone calls, usually to whichever salesperson the customer knows. In personal inboxes nobody else can see what is waiting, two salespeople can quote the same job, and an enquiry sent to someone on leave goes unanswered. This flow puts every enquiry in one list, with a customer, matched items and an owner, before anyone prices it.

Starts when
An email reaches the shared sales inbox, a file is uploaded to the intake page, or a salesperson logs a phone call.
Ends with
A confirmed enquiry with the customer, matched lines, the original documents and an owner, queued for the quotation agent.
  1. 1.System: System

    Opens an enquiry for each new email or upload, with the original email and attachments attached.

    • An email from the same sender with an identical attachment within 14 days is linked to the first enquiry instead of opening a second one.
    • An email from an address that matches no customer contact still opens an enquiry, marked "sender not matched".
  2. 2.Agent: Document intake agent

    Reads the email body and attachments and lists each requested line with its description, quantity and unit as written.

    • A quantity it cannot read, or a vague one such as "a few boxes", is left blank and flagged.
    • When the document states a line count or a total, the lines read are counted against it, so a missed second page shows up.
  3. 3.Agent: Document intake agent

    Matches the sender to a customer account, by email address first and then by the company name and UEN on the letterhead.

    • A match on a known contact's email address is accepted. A match on company name alone is shown as a suggestion for a person to confirm.
    • With no match, the customer is left blank. The agent never creates a customer account.
  4. 4.Agent: Document intake agent

    Matches each line to an item, looking up the customer's own part numbers first, then Harbourline item codes, then supplier part numbers, then description and size.

    • A description match is accepted only when exactly one item fits. When two or more fit, all candidates are shown and the line stays unmatched.
    • Units are converted with the item's unit table (1 carton of sealant = 24 tubes). A unit with no conversion is flagged.
  5. 5.System: System

    Assigns the enquiry to the account manager on the customer record, or to the sales manager's queue when the sender is unknown or the account manager is on leave.

  6. 6.Person: Sales executive

    Checks the draft against the original side by side, resolves every flagged line and confirms the enquiry.

    • Each flagged line must end as matched to an item, marked non-stock for purchasing to price, or dropped with a reason. An enquiry with an open flag cannot be confirmed.
    • Corrections to the agent's matches are logged against the draft, and a corrected customer part number can be saved to the customer's account for the next enquiry.
  7. 7.System: System

    Sets the response target and passes the confirmed enquiry to the quotation agent.

    • Target: a quote the same working day for enquiries confirmed before 3 pm, and by the end of the next working day for the rest.
    • Enquiries past their target show at the top of the sales manager's list.

Exceptions

The enquiry comes by phone
The salesperson logs it on the enquiry form with the customer and items. It skips the reading steps and joins the same list with the same response target.
A line matches no item
It stays on the enquiry as unmatched. The salesperson picks the right item, marks it non-stock so purchasing is asked for a supplier price, or drops it with a reason that can be given to the customer.
The sender is not a customer
The enquiry opens with the customer blank. The salesperson links it to an existing account or starts a new customer record. A quote can go out at list price, but an order needs credit terms set by finance first.
The document is a purchase order
The agent drafts a sales order instead of an enquiry and passes it to the quote to order flow, linked to the quote the PO refers to.
The customer sends a revised list
The new list is attached to the same enquiry, with added, removed and changed lines shown against the first list. If a quote has already gone out, the change becomes a new quote version.
The document intake agent is switched off
Emails still open enquiries with their attachments, and the salesperson types the lines in. The rest of the flow is unchanged.

Worked example

Enquiry from Verano Kitchens, a PDF list of 6 lines

  • "Runner 450 FE x 40 prs": matched to RUN-450 through the part number saved on Verano's account, 40 pairs.
  • "35mm soft close hinge x 80": one item fits, the soft-close hinge HNG-SC35, 80 pieces.
  • "Clear silicone x 1 ctn": matched to the 300 ml clear sealant and converted to 24 tubes.
  • "M10 hex bolt x 2 bx": matched to M10 hex bolts, box of 100, 2 boxes.
  • "128mm handle matt black x 60": two items fit, aluminium and zinc, so the line is left unmatched with both shown.
  • "LED strip 5m warm white x 10": no item fits, so the line is left unmatched.
  • The sales executive calls Verano, picks the aluminium handle, marks the LED strip non-stock for purchasing to price, and confirms the enquiry with 6 lines.

Sample data. Harbourline Supplies Pte Ltd is not a real company.

Flow 02

Quotation pricing and approval

A distributor can hold several prices for one item: a contract price for some accounts, account price lists, volume breaks and the list price. When salespeople pick a price from memory or from the last quote in their sent folder, two customers on the same terms pay different prices, and margin falls without anyone deciding to cut it. This flow prices every line from the same sources in the same order, checks margin and discount, and routes the quote to the person with the authority to approve it.

Starts when
An enquiry is confirmed, a salesperson asks for a draft, or a customer asks to requote an expired quote.
Ends with
An approved, numbered quotation with the price source, margin and stock position on every line, sent to the customer by a person and logged.
  1. 1.Agent: Quotation agent

    Resolves a unit price for each line from the first price source that applies.

    • Order of sources: an active contract price for this customer and item, then the customer's account price list, then the last price quoted to this customer in the past 90 days, then the volume break for the quantity, then the list price.
    • The first source with a price wins, and the draft shows the source on every line.
    • A last price quoted is used only if that quote was approved without a discount exception and the price still clears the margin floor.
  2. 2.Agent: Quotation agent

    Calculates the margin on each line and on the whole quote, using the higher of the item's average cost and its last purchase cost.

    • Margin = (unit price minus cost) divided by unit price.
    • Any line under the 18% floor is flagged, and the quote goes to the sales manager even when the whole quote is above 18%.
  3. 3.Agent: Quotation agent

    Checks free stock for each line and proposes a delivery date.

    • Free stock = on hand minus stock reserved for confirmed orders, checked at Tuas first and then at the Ubi showroom.
    • Where free stock is short, the date is the expected receipt date on the open PO plus one working day. With no open PO, it is today plus the supplier's lead time.
    • Availability is shown with the time it was checked, because a quote reserves nothing.
  4. 4.Agent: Quotation agent

    Adds the delivery charge, payment terms and validity date, then calculates GST at 9% on the subtotal.

    • Delivery is S$45.00 when the goods total is under S$1,500.00 before GST, and free from S$1,500.00.
    • Payment terms come from the customer account. New customers default to cash on delivery until finance sets terms.
    • The quote is valid for 30 days from the date it is sent.
    • The total including GST is printed at least as prominently as any amount before GST, and a note such as "prices subject to GST" is never used on its own. That layout also meets the IRAS rule that prices quoted to the public include GST.
  5. 5.System: System

    Routes the draft to an approver using the approval matrix.

    • Order of checks: a total above S$50,000.00 before GST goes to the director; any discount above 10% or any line under the 18% floor goes to the sales manager; everything else goes to the account's sales executive.
    • When several rules apply, the most senior approver decides and sees every rule that applied.
  6. 6.Person: Sales executive

    Reviews the draft line by line, edits what needs changing, and approves it or passes it to the approver the rules named.

    • A price typed over the resolved price counts as a discount from the resolved price and is checked again against the 10% limit and the margin floor.
    • Every edit is logged against the agent's draft, so the record shows what the agent proposed, what the person changed and who approved.
  7. 7.Person: Sales manager

    Approves or rejects quotes that hit a discount or margin rule, with a reason.

    • The reason is stored on the quote and listed in the monthly exceptions report by salesperson and customer.
  8. 8.Person: Sales executive

    Sends the approved quote to the customer from the system.

    • The quote number is assigned at approval, so drafts that never go out leave no gaps in the numbering.
    • Only a person can send it. The quotation agent cannot email a customer.

Exceptions

A line has no price in any source
The agent leaves the price blank and marks the line "needs pricing". The quote cannot be approved until a person prices it, and an item that will sell again is passed to whoever owns the list price.
The volume break is lower than the customer's account price
The account price is still used, because it comes first. The draft shows the lower volume-break price, and if the salesperson matches it, the difference counts as a discount and goes through the usual limits.
Cost has risen since the account price was set
Lines that fall under the floor go to the sales manager with the old cost, the new cost and the supplier bill behind it. The manager approves this quote at the lower margin or asks for the account price list to be reviewed.
The item is custom or made to order
Items marked "priced by a person" are never priced by the agent. The line goes to the salesperson with the supplier's last cost and lead time attached.
The customer is on credit hold
The quote can still be drafted and sent. The salesperson sees a note that an order would be held until finance releases the account.

Worked example

Q-2611 for Corallis Fit-Out

  • Soft-close hinge, 40 at S$6.80 from the Corallis account price list: S$272.00. Cost S$4.60, margin 32.4%.
  • Drawer runner 450 mm, 60 pairs at S$11.50 from the Corallis account price list: S$690.00. Cost S$7.05, margin 38.7%.
  • Delivery S$45.00, because the goods total of S$962.00 is under S$1,500.00.
  • Subtotal S$1,007.00, GST 9% S$90.63, total S$1,097.63.
  • Goods margin S$355.00 on S$962.00, or 36.9%. No discount, every line above 18% and the total under S$50,000.00, so the sales executive approves it.
  • Both items show as in stock at Tuas, checked at the time of drafting. Nothing is reserved yet.

Sample data. Harbourline Supplies Pte Ltd is not a real company.

Flow 03

Follow-up, revisions and expiry

Many quotes need a chase or a revision before the customer decides. Without a follow-up list, quotes are chased when someone remembers, revisions go out as edited PDFs with no record of what changed, and an expired quote gets accepted weeks later at prices that no longer cover cost. This flow keeps one record per quote with every version, a follow-up date, a validity date and a reason when the quote is lost.

Starts when
A quote is sent, the customer asks for a change, or a follow-up or validity date arrives.
Ends with
The quote with every version kept read-only, its follow-up history, and a final status: accepted, expired, split, or lost with a reason.
  1. 1.System: System

    Sets the follow-up dates when the quote is sent and puts the quote in its owner's follow-up list.

    • Follow-ups at 3 and 10 working days after sending and 7 days before the validity date, stopped as soon as the customer replies.
  2. 2.Agent: Quotation agent

    Drafts a follow-up email for each quote due that day, with the quote attached and any change in stock since it was sent.

    • Stock is checked again. If a quoted line no longer has free stock for the quoted date, the draft says so and proposes a new date.
    • The draft waits for the salesperson. Messages to customers always stop at a person.
  3. 3.Person: Sales executive

    Sends, edits or skips the follow-up, and logs the customer's response.

    • A skipped follow-up needs a reason or a new date, so overdue follow-ups cannot pile up unseen.
  4. 4.Person: Sales executive

    Records a change the customer asks for, which creates a new version of the quote.

    • A change to an item, quantity, price, discount, terms or validity creates version 2, 3 and so on under the same quote number. Header notes and contact details can change without a new version.
    • Earlier versions stay read-only, and the customer's copy shows the version number.
  5. 5.Agent: Quotation agent

    Prices the new version and shows the difference from the previous version line by line.

    • Unchanged lines keep the previous version's price while the quote is within its validity date. After that date every line is priced again from today's sources.
    • Each new version goes through the same margin, discount and value checks as a new quote.
  6. 6.System: System

    Marks the quote expired at the end of its validity date and takes it out of the open pipeline.

    • An expired version cannot become an order. It has to be requoted as a new version with current prices and a new validity date.
  7. 7.Person: Sales executive

    Closes the quote as lost, with a reason from a fixed list, when the customer declines or stops replying.

    • Reasons: price, delivery date, item not available, bought elsewhere, project cancelled, no reply after the last follow-up.
    • A "price" reason asks for the competing price if the customer gave one, so the lost-on-price report shows the gap.

Exceptions

The customer accepts after the validity date
The expired version cannot become an order. The salesperson requotes it as a new version at current prices. Honouring the old prices is entered as a discount and goes through the usual limits.
The customer asks for a discount at follow-up
The salesperson creates a new version with the discount, and it routes by the approval matrix, as in the example below.
The customer wants the quote split by site or phase
The lines are copied into separate quotes linked to the original, and the original closes as "split" so the pipeline does not count the value twice.
Two customers ask about the same project
Quotes carry an optional project name. When open quotes from different customers share a project, both owners see each other's quote, so the project is priced the same way for both contractors.
A price list changes while quotes are open
Open quotes keep their prices until their validity date. The follow-up list flags each open quote affected, so the salesperson knows the next version will be priced differently.

Worked example

Northgate Joinery asks for 5% off Q-2615

  • Version 1: S$8,640.00 before GST, cost S$6,912.00, margin 20.0%. Approved by the sales executive and valid for 30 days.
  • At the first follow-up, 3 working days after sending, the customer asks for 5% off.
  • Version 2: S$8,640.00 less 5% is S$8,208.00. Margin is S$1,296.00 on S$8,208.00, or 15.8%.
  • The 5% is inside the sales executive's 10% limit, but the margin is under 18%, so version 2 goes to the sales manager.
  • The sales manager rejects version 2 with the reason "under floor, offer 2%".
  • Version 3 at 2% off: S$8,467.20, margin 18.4%, GST S$762.05, total S$9,229.25. It clears both rules, so the sales executive approves and sends it.

Sample data. Harbourline Supplies Pte Ltd is not a real company.

Flow 04

Quote to sales order

The customer's PO is the document they will pay against, and it often differs from the quote: an old price, a dropped delivery charge, a changed quantity. Keying the PO in by hand copies those differences into the order unnoticed, and they surface weeks later as a short payment or a credit note. This flow checks the PO against the accepted quote line by line, checks credit, and reserves stock before the order is confirmed.

Starts when
A customer PO arrives by email, or the customer accepts a quote in writing.
Ends with
A confirmed sales order linked to the accepted quote version and the customer PO, with stock reserved, backorders linked to purchasing, and a confirmation sent by a person.
  1. 1.Agent: Document intake agent

    Reads the customer PO and drafts a sales order with the PO number, lines, prices, delivery address and requested date.

    • The PO is linked to the quote by the quote number printed on it. Without one, open quotes for the same customer and items are shown as suggestions for a person to pick.
    • A PO number already used on another order for this customer is blocked as a duplicate.
  2. 2.System: System

    Compares the PO with the accepted quote version, line by line.

    • Compared per line: item, unit, quantity and unit price. Then charges, payment terms and the quote's validity date.
    • Any PO price below the quote price is a difference, whatever the amount. A PO price above the quote is flagged too, because it often means the customer used a different quote.
    • A higher PO quantity is checked again for stock. A lower quantity is accepted, and priced again if it falls below a volume break the quote used.
    • An order cannot be made from an expired quote version.
  3. 3.Person: Sales admin

    Resolves each difference by keeping the quote's term, accepting the PO's, or querying the customer.

    • Accepting a lower PO price is a discount from the quote and goes through the same 10% and 18% rules.
    • A query to the customer is drafted for the sales admin to send. The system does not send it.
  4. 4.System: System

    Checks the customer's credit exposure against the credit limit.

    • Exposure = unpaid invoices + delivered but not yet invoiced + confirmed orders not yet delivered + this order, all including GST.
    • The order is held and routed to the finance manager if exposure is over the limit. Any invoice more than 60 days past its due date flags the account for the finance manager to decide on a hold.
  5. 5.Person: Sales admin

    Confirms the sales order once every difference is resolved and the credit check has passed or been released.

  6. 6.System: System

    Reserves free stock for each line at the moment the order is confirmed.

    • Reserved at the order's fulfilment location only. Free stock at the other location is shown on the order but is reserved for it only after a transfer linked to the order is confirmed. Stock already reserved for other orders is never taken.
    • A line without enough free stock is reserved in part. The balance is backordered against an open PO, or passed to purchasing as a request tied to the order when there is no PO.
  7. 7.Person: Sales admin

    Sends the order confirmation to the customer, with the delivery date for reserved lines and the expected date for backordered ones.

  8. 8.System: System

    Puts the order on the delivery list for its promised date.

    • The customer PO number and the quote version are carried onto every delivery order and invoice for the order.

Exceptions

The order is over the credit limit
The order is held with the exposure shown, and its stock is reserved for 2 working days. The finance manager releases it, asks for overdue invoices to be paid first, or approves a part delivery up to the headroom. If nobody decides within 2 working days, the reservation lapses and the order stays held.
The PO has no quote behind it
The order is priced from the price sources exactly as a quote would be, and goes through the same margin and discount checks before it can be confirmed.
An item on the PO is not on the quote
It is added as a new line priced from the price sources and flagged for the sales admin to accept or query.
The customer sends an amended PO
A PO marked as an amendment updates the order, and every change is logged. Increases go through stock and credit again, reductions release reserved stock, and lines already picked or delivered can only be returned.
The customer cancels the order
Reservations are released. Purchase requests and POs raised for backordered lines are not cancelled automatically: purchasing is told and decides with the supplier.

Worked example

Corallis Fit-Out's PO against Q-2611 becomes SO-1206

  • PO lines: 40 soft-close hinges at S$6.80 and 60 pairs of 450 mm drawer runners at S$11.50, both matching Q-2611.
  • The PO leaves out the S$45.00 delivery charge. PO total S$1,048.58 against S$1,097.63 on the quote, a difference of S$49.05 including GST.
  • The sales admin keeps the charge, which the accepted quote states, and notes it on the order confirmation.
  • Credit: unpaid invoices S$17,850.40 + delivered not invoiced S$0.00 + confirmed orders S$5,412.00 + this order S$1,097.63 = S$24,360.03, within the S$25,000.00 limit with S$639.97 to spare.
  • Stock at confirmation: 60 runners free at Tuas, all reserved. Only 20 hinges free, because another order reserved the rest after Q-2611 was sent: 20 reserved, 20 backordered against PO-0421.
  • SO-1206 confirmed at S$1,097.63 for delivery on 12 Nov.

Sample data. Harbourline Supplies Pte Ltd is not a real company.

Flow 05

Delivery orders, part deliveries and backorders

The delivery order records what left the warehouse and what the customer signed for, line by line against the sales order. When part deliveries are tracked on paper, the balance owed to each customer depends on someone's memory, backordered stock is sold to the next customer who asks, and the invoice is raised for the full order whether or not it all arrived. This flow ties each delivery to the order lines, keeps the balance open and passes on only what was signed for.

Starts when
A confirmed order reaches its delivery date with stock reserved, or stock for a backorder arrives.
Ends with
Signed delivery orders linked to the order lines, stock deducted at dispatch, open balances kept as backorders, and confirmed deliveries passed to invoicing.
  1. 1.System: System

    Builds the day's delivery orders from confirmed orders due that day, one per order and delivery address, with the reserved quantities only.

    • A line goes on the delivery order up to its reserved quantity. Any unreserved balance stays on the order as a backorder.
    • Orders for customers whose account says "no part deliveries" wait until every line is reserved.
  2. 2.System: System

    Checks credit again before the delivery orders are released to the warehouse.

    • Same exposure rule as at order confirmation. A hold here stops the pick and goes to the finance manager.
  3. 3.Person: Storekeeper

    Picks each line from the bin shown and confirms the picked quantity.

    • The picked quantity can never exceed the reserved quantity.
    • A short pick reduces the delivery order line and returns the shortfall to backorder, with a reason such as bin empty or damaged.
  4. 4.System: System

    Deducts the picked stock when the delivery order is dispatched, and prints the delivery order with the customer PO number.

    • Stock leaves the books at dispatch, because that is when it leaves the bins. A failed delivery is booked back in.
  5. 5.Person: Driver

    Delivers the goods, has the delivery order signed and photographs the signed copy.

    • The customer writes any shortage or rejected item on the delivery order before signing.
  6. 6.Agent: Document intake agent

    Reads the photo of the signed copy and drafts the delivered quantities, the signature date and any handwritten remarks against the delivery order.

    • A handwritten quantity that differs from the printed one is flagged, never accepted as read.
    • A remark it cannot read is flagged for a person to read.
  7. 7.Person: Sales admin

    Confirms the delivered quantities against the signed copy.

    • The confirmed quantity on a line can never exceed the dispatched quantity.
    • Rejected items go back to an inspection location and do not count as free stock until they are checked.
  8. 8.System: System

    Updates the balance on each order line and passes the confirmed delivery to invoicing.

    • Balance = ordered minus confirmed delivered. A line with a balance stays open as a backorder with its expected date.
  9. 9.System: System

    Allocates stock arriving on a goods receipt to open backorders, oldest promised date first, before any of it shows as free to sell.

    • Backorder lines keep the order price, whatever the price list says when the stock arrives.
    • A backorder delivery carries no second delivery charge. The charge is billed once, with the first delivery.

Exceptions

The customer rejects damaged goods at delivery
The driver brings them back. The sales admin records the rejected quantity, the stock goes to inspection, and the line balance reopens for redelivery unless the customer cancels it.
Nobody is on site to receive
The delivery is marked failed and the goods are booked back into Tuas with the reservation kept. The sales admin agrees a new date with the customer, and a redelivery charge applies only if the customer's account terms say so.
The expected date for a backorder slips
When purchasing changes the expected date on the PO, every order line waiting on it is flagged, and a message to each customer is drafted for the salesperson to check and send.
The customer no longer wants the backorder
The sales admin cancels the balance and the reservation is released. Purchasing is told, because the PO may still be needed for stock.
Another customer wants stock allocated to a backorder
It is not free stock. The sales manager can release the allocation to the new order, with a reason logged, and the backordered order moves to the next receipt.
The signed copy shows more than was dispatched
The line is flagged as an error, because the confirmed quantity cannot exceed what left the warehouse. The sales admin checks with the driver before confirming.

Worked example

SO-1206 delivered in two parts

  • 12 Nov, DO-1412: 60 pairs of drawer runners and 20 hinges, with the S$45.00 delivery charge. Signed in full.
  • Passed to invoicing: S$690.00 + S$136.00 + S$45.00 = S$871.00, GST S$78.39, total S$949.39.
  • 13 Nov, PO-0421 received at Tuas. 20 hinges allocated to SO-1206 before any show as free to sell.
  • 16 Nov, DO-1419: the 20 backordered hinges at the order price of S$6.80, with no delivery charge.
  • Passed to invoicing: S$136.00, GST S$12.24, total S$148.24.
  • Both deliveries: S$1,007.00 before GST, S$90.63 GST, S$1,097.63 in total, the same as Q-2611 and SO-1206.

Sample data. Harbourline Supplies Pte Ltd is not a real company.

Flow 06

Hand-off to invoicing

Finance owns the invoice: its number, GST treatment and collection. This flow hands finance exactly what the customer signed for, at the order price, on the day the delivery is confirmed. Billing from the order instead of the delivery is the usual source of credit notes on part deliveries.

Starts when
A delivery order is confirmed as delivered.
Ends with
Draft invoice lines matching the signed deliveries, an issued invoice in finance linked to the order and delivery orders, and the order marked invoiced when complete.
  1. 1.System: System

    Drafts invoice lines from the confirmed delivery order at the sales order's prices.

    • Quantity to invoice on a line = confirmed delivered minus already invoiced. It can never exceed what was delivered.
    • Prices, discounts, payment terms and the customer PO number come from the sales order, which came from the accepted quote version.
  2. 2.System: System

    Adds the charges that fall due with this delivery under the order's rules.

    • The delivery charge goes on the first invoice for the order only.
  3. 3.Person: Finance executive

    Reviews the draft and issues the tax invoice in the finance module.

    • For a GST-registered customer, IRAS requires the tax invoice within 30 days from the time of supply, which for most sales is the earlier of the invoice date or a payment.
    • In general, IRAS does not treat a sales order or a pro-forma invoice as an invoice for GST purposes, so neither starts the GST timing unless it is used as the bill for payment.
  4. 4.System: System

    Links the invoice to the sales order and the delivery order, and marks the order invoiced once every line is billed in full.

  5. 5.System: System

    Passes the invoice to receivables, or to the accounting package the client keeps, where collections take over.

Exceptions

The customer paid a deposit with the PO
The deposit is recorded against the order and passed to finance the day it arrives. A deposit that is part payment counts as payment received under IRAS time of supply rules, so finance accounts for GST on it then, and later invoices show it as already paid.
The customer is billed once a month
Confirmed delivery orders for that account collect until month end, and finance issues one invoice that lists each delivery order.
Goods are returned after invoicing
The sales admin records the return against the delivery order and finance issues the credit note. The sales module never changes an issued invoice.
The customer PO number is missing
The draft is held until the sales admin gets the PO number from the customer, because customers who require one on the invoice can refuse to process an invoice without it.

Design decisions

Why the flows work this way

The choices behind the order of the steps and the checks, and what each one trades off.
  • Stock is reserved when the order is confirmed. A quote only checks it.

    Reserving at quote would lock free stock behind quotes that may never convert, for their full 30-day validity, and the warehouse would show items as unavailable while they sit in the bins. The cost is that availability shown on a quote can be gone by the time the PO arrives: Q-2611 showed every hinge in stock, and by confirmation of SO-1206 only 20 of the 40 were free. The quote shows when stock was checked, and the order step checks again and backorders the shortfall, so the gap shows up at confirmation, before the warehouse tries to pick it.

  • The first price source that applies sets the price. The system does not search for the lowest.

    Taking the lowest price across contract, account list, volume break and list price gives away margin that nobody approved, and a customer's price would change whenever any list changed. With a fixed order, the person who owns each price list controls the outcome, and every quoted line traces to one source. The trade-off is that a large order on an account list can miss a better volume break, so the draft shows the lower figure and the salesperson can match it as a discount inside the normal limits.

  • The margin floor and the discount limit are separate checks, and either one sends a quote to the sales manager.

    A discount limit alone misses a quote whose margin is already thin, whether from a low account price or a rise in cost: a 5% discount inside the sales executive's 10% limit took Q-2615 from 20.0% to 15.8% margin. A margin floor alone misses large discounts on high-margin items that the business still wants a manager to see. Running both sends more quotes to the manager, so the floor can be set per item group, which keeps low-margin commodity lines such as fasteners sold by the carton from routing every time.

  • A sent quote is never edited. Every change after sending is a new version, and the order records which version the customer accepted.

    Customers accept a specific document, and a price dispute at invoice time comes down to which version they had. Read-only versions mean the PO check in the quote to order flow always compares against what the customer actually received. The cost is more versions on the record, so header notes and contact details can change without creating one.

  • Credit is checked on total exposure, at order confirmation and again before picking.

    Unpaid invoices alone understate the risk, because confirmed orders and delivered goods not yet billed become invoices within days. Orders are often confirmed a week or more before delivery, and an account can go over its limit or overdue in that time, so the second check stops goods leaving for an account finance would hold. The trade-off is an occasional hold on the morning of delivery; the check runs when the delivery list is built, before anything is picked, and the finance manager can release it from the hold queue.

  • Arriving stock fills backorders first, oldest promised date first, before it shows as free to sell.

    Without this, stock bought for a customer who has already waited goes to whoever orders next, often on the day it lands, and the backordered customer waits for the following shipment. Allocating at goods receipt keeps the date given at order confirmation. The trade-off is that a new order cannot take that stock even when it is larger or more urgent; the sales manager can release an allocation, and the release is logged with a reason.

Scoping

Settings we agree with you before the build

Each of these changes how the flows behave. We settle them on the scoping call and write them into the phase plan.
Price source order
OptionsContract price, account price list, last price quoted, volume break and list price in any order, with first match or lowest price
Usual startContract, account list, volume break, then list price, first match wins, with last price quoted added only where the sales team already honours it (Harbourline uses 90 days).
Margin floor and cost basis
OptionsOne floor, or floors by item group or customer group; cost from average cost, last purchase cost or the higher of the two
Usual startOne company floor (18% in the sample) with lower floors for named commodity groups, checked against the higher of average and last purchase cost so a recent supplier increase is not hidden by older stock.
Quote validity and follow-ups
OptionsValidity of 7, 14, 30 or 60 days; follow-ups a set number of working days after sending and before expiry
Usual start30 days, with follow-ups at 3 and 10 working days and 7 days before expiry, shortened for item groups whose supplier prices change more often.
When stock is reserved
OptionsAt quote, at order confirmation or at picking
Usual startAt order confirmation, with an optional short hold on named quotes that the sales manager approves.
Part deliveries and delivery charges
OptionsPart deliveries allowed for all customers, set per customer or set per order; delivery charge once per order or per delivery
Usual startAllowed unless the customer's account says otherwise, with the delivery charge billed once per order, since the customer did not choose the split.
Credit check
OptionsExposure from unpaid invoices only, or including delivered but not invoiced and open orders; overdue hold after a set number of days; who can release
Usual startFull exposure including open orders, with an order over the limit held until the finance manager releases it, and the account flagged for the finance manager's hold decision when any invoice is more than 60 days past due.
Invoice timing
OptionsOne invoice per delivery order, per completed sales order, or one per customer per month
Usual startOne per delivery order, so cash for goods already delivered is not held back by a backorder.
Intake channels and document types
OptionsShared inboxes, an upload page, forwarded phone photos; enquiries, customer POs and signed delivery orders
Usual startOne shared sales inbox and the upload page, reading enquiries and customer POs first, with signed delivery orders added in a later phase once the team is used to checking drafts.

Key records

The records it holds

Each record lives once in the shared database, so other modules and agents read the same version.
  • Customer

    • Account terms
    • Credit limit
    • Price list
    • Contacts
  • Item and price list

    • Item code
    • Unit price
    • Volume breaks
    • Margin floor
  • Enquiry

    • Source document
    • Items asked for
    • Owner
    • Status
  • Quotation

    • Lines and GST
    • Version
    • Valid until
    • Approval
  • Sales order

    • Customer PO
    • Reserved stock
    • Due date
    • Status
  • Delivery order

    • Items delivered
    • Balance owed
    • Signed copy

Approvals

Who approves what, and above which amount

Agent drafts and staff drafts follow the same rules. The matrix is built to your roles and limits.
SampleApproval matrix for sales and quotations
Quotation at list or account priceWhenAny amountWho approvesSales executive
Quotation with a discountWhenUp to 10%Who approvesSales executive
Quotation with a discountWhenAbove 10%, or margin under 18%Who approvesSales manager
Quotation totalWhenAbove S$50,000Who approvesDirector
Order over the customer's credit limitWhenAny amountWho approvesFinance manager

A sample matrix for a distributor. Amounts are before GST. Yours follows your own roles and limits.

Sample data. Harbourline Supplies Pte Ltd is not a real company.

Connects to

What it shares with the other modules

The records below are read and written by both modules, so nothing is typed twice.

Planning

Which phase it usually ships in

Often in the first phase

Quoting is where many distributors lose the most time to re-keying and chasing, so sales and quotations often leads the first phase, together with inventory.

Planning guidance from how we usually scope, not a rule. Your written phase plan sets the actual scope, price and go-live date before you sign.

Price bands

  • Quick build

    2 to 3 days of build

    From S$15k

    One workflow or one agent, on your data.

  • Build

    4 to 5 days of build

    S$30k to S$40k

    A set of modules and agents around one part of the business.

  • Enterprise programme

    Months, in phases

    Around S$150k

    A full ERP programme, delivered phase by phase.

No per-user licence fees. You own the full source code of what we build.

Industries

Industries that use it

Industry pages bundle this module with the others each trade usually starts with. See all industries.

FAQ

Sales and quotations questions

Can the quotation agent use our customer-specific prices?

+
Yes. Account price lists, volume breaks, discounts and margin floors are records in the module, built to your rules. The agent reads them when it drafts, and the draft shows which price it used.

Will the agent send quotes to customers on its own?

+
No. By default, the agent drafts and a person approves. Messages to customers always stop at a person, so a quote leaves only when someone on your team sends it.

What happens to enquiries that arrive by email or as PDFs?

+
The document intake agent reads them and drafts an enquiry with the items it found, flagging anything it could not match to your item list. A person checks the draft before it becomes a record.

Can we keep our quotation layout, terms and numbering?

+
Yes. We build around how you work, so the layout, terms and numbering can match what your customers already receive, or change if you want them to.

Can discounts and low margins need a manager's approval?

+
Yes. You set the rules, such as any discount above 10% or any margin under your floor, and those quotes go to the person you name. The sample matrix on this page shows one way to set it up.

Does it cover orders and deliveries, or just quotes?

+
Both. An accepted quote becomes a sales order, then delivery orders, in full or in parts. With the inventory module, stock is reserved when the order is confirmed.

How long does it take to build?

+
One quoting workflow on your data can be a Quick build, with 2 to 3 days of build. The full module goes into a written phase plan with its scope and price before you sign.

Add this to your first phase

Bring the sales and quotations workflow that hurts most. In 30 minutes we show how it would run as an approval queue on sample data, and what a first phase would cost.