Skip to content

Sales Workflow

“Do I have to raise a sales order before I can invoice?” No. Which documents a company uses is a decision about how it sells, and across BigLedger most companies invoice with no order in front of the invoice. What the system fixes is what each document does the moment it goes FINAL, and the names are a poor guide to it: a Sales GIN moves nothing, a Sales GIN Stock Out moves stock, a Sales Invoice No Stock Out posts the sale and moves none, and a credit note brings no goods back.

This page is the map of the folder for the person who decides which documents a company raises, and for the accounts person who answers for the numbers they produce. For each document it says whose screen it is and what FINAL writes into stock, the general ledger, the cashbook and the e-invoice queue; then when to pick which; then what to check. Each applet’s own page, listed below, carries its fields, settings and failure modes. The module view is Sales, and the till is Point of Sale.

What each document writes when it goes FINAL

Nothing happens on Save. FINAL is a separate call that queues one primary job processor, and that processor fans out to the secondaries that write stock lines, the journal, cashbook lines and the e-invoice queue, each in its own job and each a moment after the button. So a document can be FINAL with one of these missing, and nobody is told at the time.

DocumentWhose screenStockGeneral ledgerCashbooke-Invoice
Sales InquiryThe sales desk, before there is a price; a sales agent is required on the formNothingNothingNothing. Convert turns its collection lines into a receipt voucherNo
Sales QuotationSales staff preparing quotesNothing, and not in available eitherNothingNothing on the quotationNo
Sales OrderSales administratorsNothing in the balance. Its un-invoiced balance lowers available, and a line can hold a reservationNothingA deposit on its Settlement tab, where the tenant’s cashbook job runs for ordersNo
Sales Proforma InvoiceWhoever quotes a job or asks for a deposit; its page names no roleNothingNothing from its item lines. A Payment-tab line is signed as a payment and can post—No
Delivery OrderThe office that raises deliveries for the warehouse and the driverNothing. The goods stay in stock until the invoice; the open lines count as committed stock and against the customer’s available creditNothingNothingNo
Sales InvoiceSales administrators and accounts staffOutThe receivable, against Sales and Output Tax. No cost lineOne line per Payment-tab lineQueued
POS General cash billCashiers; supervisors for sessions and the Z reportOutThe same as an invoiceThe tender, one line per settlement lineQueued. Consolidated by branch or individual; RM 10,000 and above is always individual
Sales Invoice No Stock OutFinance billing services and recharges. Not in the applet store; reached through the APINothing, whatever the caller sendsThe same journal as an invoiceSettlement linesNot an e-invoice type
Sales GIN Stock OutNot in the applet store; reached through the APIOutJournalled like a sale—Not an e-invoice type
Sales GIN, Sales GRNWarehouse and sales operations, as a recordNothingNothingNothing. A settlement row on a GRN is a recordNo
Sales ReturnSales or customer service raise it, the warehouse receives against it, finance settles itInYour Sales Returns account, against the receivableThe refund on its Payment tab, which is what brings its balance to zeroQueued
Sales Refund NoteIts page names no role; in practice the desk that settles returnsInYour Sales account, not Sales ReturnsRefund lines on its Payment tabQueued
Sales Credit NoteAccounts-receivable staffNothingSales and Output Tax reduced, against the receivableA refund paid out on its Settlement tabQueued
Sales Debit NoteIts page names no role; in practice the same desk as the credit noteNothingSales and Output Tax raised, against the receivableSettlement linesQueued
Customer ConsignmentWarehouse or store staffOut of your location into the customer’s consignment location, and backNothingNothingNo. The sale is an ordinary Sales Invoice when the customer reports what sold
Consignment BillingThe buyer’s accounts-payable clerk. A purchase document filed in this folderNothingPurchases against the supplier, and the consignment liability cleared—Not an e-invoice type

The other applets in the folder write none of this themselves. Recurring Sales Invoice, SO Consolidation and JS Consolidation produce a draft Sales Invoice, and the posting happens when someone finalises it there. Job Sheet and Car Workshop record the work; the money taken on a job sheet is a record inside it, not a receipt voucher. Sales Commission counts FINAL orders, invoices and cash bills, pays through a payment voucher, and ignores credit and refund notes, so a returned sale keeps its commission. Sales Report, Sales Report Supplier Access and Daily Cashier Report read; Custom Processor queues FINAL documents for a system outside BigLedger.

Where the figures in that table come from

  • The direction (in, out, nothing) is written by the server onto every line each time the document is saved, from the document type alone. No applet setting and no API caller changes it.
  • The account a goods line posts to is the first found of: a GL code on the line, one on the header, the item’s company GL link, the company default. Only a Sales Return line takes the SALES_RETURN default; a Sales Refund Note line lands on SALES, so a returns analysis built on the Sales Returns account misses every refund note.
  • The receivable side comes from the customer’s AR/AP type, read from the customer record when the journal is built, not from the snapshot the document keeps. A customer typed AP_TRADE (a supplier you also sell to) has the sale posted against your creditors, netting what you owe them.
  • Cost of sales is on no sales document. The unit cost stored on a finalised line is written back by the costing job after the stock line exists, and a back-dated purchase rewrites it; the cost-of-sales journal is written once a period by the close, from the stock ledger.
  • A cashbook line is one per settlement line on a FINAL document, written by the cashbook job. A settlement method with no cashbook, or a cashbook with no GL code, fails that job, not the save.
  • The LHDN queue takes six sales types: invoice, cash bill, credit note, debit note, refund note and return. At FINAL the document’s Skip E-Invoice flag is resolved from the document, then its branch, then its customer, and the entry gate then needs the company ENABLED and the document not already queued. When any of that fails, nothing is written and no error is shown. The buyer on the e-invoice is the document’s own buyer block when one is filled, otherwise the customer snapshot the document took when it was raised. A sales invoice or cash bill of RM 10,000 or more is always submitted individually, whatever the company’s submission type.

Which document to raise

An order first, or straight to the invoice

The order is optional, and most companies skip it. What a FINAL order buys you: its un-invoiced balance is taken off available in Stock Availability so nobody promises the same unit twice, a line can hold a reservation, the invoice is raised by knock-off rather than retyped (part now, part later, with the balance held on the order), and SO Consolidation can bill a month of orders as one invoice per customer. One condition sits under all of it: FINAL opens an order for knock-off and availability only for the source-to-target pairs in the company’s Knock Off Configuration. With no SO → Sales Invoice pair, the order is FINAL, the invoice’s KO For picker is empty, and available is untouched.

Delivery order before the invoice, or after

Stock leaves on the invoice, whichever order you raise them in. A delivery order dated in March and invoiced in April leaves the goods in March’s closing stock and puts the sale and its cost in April — the worked example is on Inventory’s related applets. What the delivery order does carry is credit: its open lines count against the customer’s available credit and as committed stock. Few companies across BigLedger use it at all; the invoice is the delivery document for most.

Invoice or cash bill

The cash bill is an invoice settled on the spot, posting the same journal and the same stock-out plus the tender, raised at the till by a cashier rather than in the office. Retail does not make a walk-in open an account, so the sale goes to a generic cash customer and finalises there, and the applet offers no way to change the customer afterwards. When that customer comes back days later wanting an e-invoice in their company’s name, the cheap answer is to complete the e-invoice buyer block in My E-Invoice Admin while the bill is still waiting to be reported, or to let them key it in the buyer portal. The expensive answer, a return, a new invoice under the right account and a contra, is needed only when the account itself must change, and it is the only answer once the consolidated run has swept the bill in.

Taking goods back: return, refund note or credit note

“How do I take goods back — refund, credit note or exchange?” Three documents, three different things, and across BigLedger credit notes are raised in far more companies and far more often than sales returns, so a share of them are returns recorded on the wrong document.

You needRaiseStockPosts toMoney
Goods back, and the money or a creditSales ReturnInSales ReturnsThe refund on its Payment tab, or a contra. With SALES_RETURN_WITH_PAYMENT on, FINAL waits until the return’s balance is zero
Goods back and cash back, booked against SalesSales Refund NoteInSalesRefund lines on its Payment tab
Money off, goods stay with the customerSales Credit NoteNothingSalesContra against open invoices, or a refund on its Settlement tab
You underchargedSales Debit NoteNothingSalesCollected like an invoice

The sales module’s reversal decision adds VOID for an invoice nothing has moved on yet. At a company enabled for e-invoicing, VOID is refused on a credit note and on a return; the correction is a further note, or a cancellation on the e-invoice side.

Billing without moving stock, and issuing without billing

Two document types do the halves separately: Sales Invoice No Stock Out posts the sale and holds every line at no stock movement, and Sales GIN Stock Out takes stock out and is journalled like a sale. Neither is in the applet store; both are reached through the API, and a GIN Stock Out and a Sales Invoice for the same goods not knocked off against each other take the stock out twice. A plain Sales GIN or Sales GRN is a record only. From a screen, a service fee or a recharge goes on an ordinary Sales Invoice with a service item: the sale posts and nothing moves. (A basic item with no inventory item is not the way to do it — it is given one the first time it posts, and then moves stock.)

A Saturday at GS-KV-03

A customer bought wireless earbuds for RM 399 on Wednesday, one side is dead, and she wants her money back now. The counter raises a Sales Return against Wednesday’s cash bill and records RM 399 cash on its Payment tab. Under the surface the goods lines are signed −1 and the refund line +1, so the return opens at zero and FINAL is allowed; the stock job puts the pair back at GS-KV-03’s location, the journal debits Sales Returns and Output Tax against the cash customer, the cashbook job writes RM 399 out of the till’s cashbook, and the e-invoice gate queues the return against the original bill.

Had the cashier raised a Sales Credit Note instead, the ledger would be right and the shelf wrong: the earbuds go back on display and the system still counts them as sold, so the next count at GS-KV-03 finds one pair more than it holds. Had she raised a Sales Refund Note, the stock and the cash would match the return, and the RM 399 would land on Sales rather than Sales Returns, so the branch’s returns figure would be short by one pair. All three finalise without complaint. The choice is the counter’s, made before FINAL, and the supervisor’s check is the day’s credit notes against what went back on the shelf.

When a sales number is wrong

What you seeThe usual causeCheck firstFix
Every invoice finalises and none of them postThe company has no default GL code for the customer’s receivable account, usually the second or third company in a groupFinancial Report Trace Document › Missing Journal › Resolve, which shows the reasonMap DEBTOR (or DEBTOR_NON_TRADE) in Chart of Account, then Resolve each invoice
A customer’s sales are missing from the debtor reports and sitting in creditorsThe customer carries an AP type, on its record or on its Company Linking row for that companyThe customer’s AR/AP type and the company rowCorrect the type, then rebuild each posted document’s journal with Repost in Trace Document, agreed with whoever closed the month
Goods came back and the system still counts them as soldThe return went on a credit noteThe credit notes for that itemRaise a Sales Return for the goods. Keep the credit note only if it was for money off
The returns figure on the Sales Returns account is shortRefund notes post to SalesThe period’s refund notesNone in the ledger. Read Sales Returns plus the refund notes, or code the refund note’s line GL to the returns account
The order still shows a quantity outstanding after it was invoiced in fullThe outstanding figure is a stored row per downstream document type, and three ordinary things leave it highThe order still shows a quantity outstandingAs the guide says
The invoice’s KO For picker is empty, and the order is FINALNo SO → Sales Invoice row in the company’s Knock Off ConfigurationOrganization › the company › Knock Off ConfigAdd the row. Orders finalised before it existed are re-queued from Data Fix › Generic Documents › Missing Open Queue (or by BigLedger support if you do not hold that applet)
Finalised, and nothing was submitted to LHDNUsually queued and waiting for the scheduled run. Otherwise the entry gate dropped it: company not ENABLED at the time, Skip set on the document, branch or customer, or a type the gate does not takePools and routing; then the discrepancy reportA dropped document needs support to push it into the Posting Queue; enable the company before finalising
The salesperson field is greyed out on a FINAL invoice, and it used to be editableThe field is locked after FINAL unless ALLOW_EDIT_SALES_AGENT_FINAL is on for the tenantThe invoice applet’s settingsAsk the tenant administrator to turn it on. The posting does not read the field
The margin report and the profit and loss disagreeNo sales document posts cost of sales, and a back-dated purchase rewrites the cost on earlier linesThe margin report and the P&LRead the margin after the period close

What these documents will not do

Each holds whichever applet raised the document and through the API. After each one, who does the job.

  • No sales document writes a cost-of-sales line. The accountant runs the period close in Financial Report and reads the margin after it.
  • A credit note brings nothing back into stock, and a delivery order takes nothing out. The counter raises a Sales Return for goods that came back; the accountant lists delivery orders dated in the period with no invoice and invoices or accrues them before the close.
  • Nothing approves a sales document. The approval engine covers purchase orders, requisitions and stock requisitions only, and the FINAL validator asks no approval question. Control over an invoice is who holds the finalise permission, and the manager decides who that is.
  • The credit limit is a check in the Sales Order and Sales Invoice screens, one company at a time. A cash bill, a delivery order and a document that arrives by API are not measured, and no figure adds up what a customer owes the group. The one server-side stop is the blacklist, on cash bills, invoices, orders and outbound delivery orders. Deciding credit is the credit controller’s job, with Deciding on Credit.
  • A failed posting leaves the document FINAL. Stock, journal, cashbook and e-invoice are separate jobs, and a missing account or cashbook fails the job silently. The accountant runs the check below before each close.
  • The invoice applet does not change the customer or the date after FINAL. The server keeps back-office routes a support engineer or an integration can call, and the invoice page says what each refuses. From the screen, the e-invoice buyer is completed on the e-invoice side, and the account changes by return, re-issue and contra.
  • A reservation on an order outlives the order’s VOID. The void chain has no reservation step; whoever voids the order releases its reservations in Stock Reservation.

How you know the sales documents are right before the close

About ten minutes per company, before each close.

  1. Nothing is FINAL without a journal. In Ledger And Journal Error Checking › Missing Journal, run the period for INTERNAL_SALES_INVOICE, INTERNAL_SALES_CASHBILL, INTERNAL_SALES_CREDIT_NOTE, INTERNAL_SALES_DEBIT_NOTE, INTERNAL_SALES_RETURN and INTERNAL_SALES_REFUND_NOTE. You are done when each list is empty.
  2. Every refund reached the cashbook. For each sales return and credit note with a refund line, run Trace Document’s Missing Cashbook. You are done when none reports a missing line.
  3. Returns are on return documents. List the period’s credit notes; for each one where goods came back there is a Sales Return or Refund Note for the same goods. You are done when every returned item has one.
  4. Every e-invoiceable sale is in the pipeline. Run the discrepancy report for the period and read Exists in ERP, Missing in E-invoice. A document you skipped on purpose appears here too, so you are done when every row is one you can name as skipped. Foreign-currency documents are not examined by this report, so list them separately.

Where to go next

Every applet in this folder

Reference for the Sales Credit Note (Internal) applet: reduce what a customer owes after invoicing, with contra and settlement, without touching stock.
Reference for the Sales Inquiry (Internal) applet: a pre-sales document with customer, line, collection and contra detail that moves no stock and posts no journal, plus its settings, fields, the Convert action that deletes the inquiry, and the parts of the screen that are mock-ups.
Reference for the Sales Order (Internal) applet: order entry, approval, stock reservation, pick-pack and delivery planning, marketplace sync, and knock-off into invoices.
Reference card for sales administrators and accounts staff who operate the Sales Invoice (Internal) applet: screens, every exposed setting, form fields, what FINAL and VOID post, and the real failure modes.
Reference for the Sales Invoice No Stock Out (Internal) document: bills a customer and posts the sale, with quantity signum 0 so no stock moves. Not separately installable — there is no applet registry row.
Reference for the Delivery Order (Internal) applet: the outbound delivery order workspace, knock-off from sales and purchase documents, the pick-pack queue, intercompany processing queues, and the settings that govern them.
Reference for the Consignment Billing Applet (Internal): the purchase invoice you raise to the consignor once consignment stock has been sold — its screens, the settings that actually render, its fields, the journal it posts (and the stock it does not move), and the failure modes that are in the code.
Reference for the Sales Contract applet: contract templates, agreement (mail-merge) templates, the contract folder a template is initialised into, and the recurring sales invoices a folder bills through.
Reference for the Sales GIN (Internal) applet: record a goods issue note against an internal sale, with lines, settlement and contra. The document carries no stock movement and no journal.
Reference for the Sales GIN Stock Out (Internal) document: a sales-side goods issue that takes stock out and posts against the SALES ledger group. Not separately installable — there is no applet registry row.
Reference for the Daily Cashier Reports applet: the back-office Cashier Collection and Z Report, which documents each adds up, why every figure is worked out again at SEARCH so last night's printed copy and this morning's run can differ, and the next-morning check that proves a branch's day.
Reference for the Sales Return (Internal) applet: bring goods back into stock, reverse the sale and the receivable, refund or contra, and link the return to the original e-Invoice.
Reference card for sales staff and administrators who operate the Sales Quotation (Internal) applet: screens, every exposed setting, form fields, what FINAL does (nothing posts), the convert-to-receipt-voucher action, and the real failure modes.
The sales-side note that charges a customer more after the invoice has gone out (amount signum +1, quantity signum 0): why it is not a sign-flipped credit note, what FINAL sets off, where each number comes from, and the two settings screens that save values nothing reads.
Reference for the Sales Refund Note (Internal) applet: refund a customer against an invoice or cash bill, with LHDN e-Invoice refund-note submission (document type 04), intercompany routing, and file import and export. Covers screens, settings, fields, what FINAL posts, and the failure modes in the code.
Reference for the Sales Report applet: sixteen grid reports over FINAL sales, return, trade-in, receipt and payment documents — by item, document, salesman, hour, day/week/month, branch, collection, card receipt, serial number and voucher — with cost basis, gross profit and delta columns gated by settings and permissions.
Reference for the Sales GRN (Internal) applet: a paper goods-received note on the sales side. It moves no stock, writes no journal, and no tenant in the estate has ever created one — the return workflows in daily use are Sales Return and the purchase-side GRN.
Hand-off queue for external integrations: Processor Filters pick FINAL sales documents of a given type and company, the backend queues them for an external processor, and the applet shows the queue, the processing history and the price-tag (electronic shelf label) sync history.
Reference for the Sales Commission applet: the cycle, the three-stage processor that turns finalised sales documents into commission reports, the payment voucher that pays them out, the exact documents and conditions the calculation uses, and the four settings that actually work.
Reference for the Customer Consignment Applet: send stock you still own to a customer's premises (Transfer Out), bring it back (Transfer Receive), and see what is still out there (Transfer Queue). Stock only, no journal.
Reference for the Sales Proforma Invoice (Internal) applet: the pre-billing document that quotes a price without posting or moving stock, its workflow-status routing, its settings, and the two actions that do not work at this commit.
Reference for the Sales Report Supplier Access applet: one sold-quantity-and-cost report a supplier's own login can open, scoped server-side to the supplier entities that login is linked to, plus the branch whitelist that controls which branches they may filter on.
The shopper-facing second screen for a POS counter: the live cash-bill line list and totals, and an idle carousel of images and a message when the counter is between sales.
Turns many finalised sales orders into one sales invoice per customer, either on demand from a run or on a repeating schedule, with the selection driven by company, branch, customer and sales agent filters.
Bills many finished job sheets at once: gathers the lines of job sheets at FINAL and raises one draft sales invoice per company, branch, customer and sales agent, from a run you create or a dated event.
Reference for the Job Sheet (Internal) applet: the service record for a job — who, which unit, which technician, which parts and labour — with payment, contra and workflow status. It moves no stock and posts no journal.
Reference for the POS General applet: the retail checkout counter that creates cash bills, settles them by cash, card, e-wallet, voucher, points or contra, posts stock and journal on FINAL, and gives supervisors Z Report, Cashier Collection, settlement adjustment and serial-number swap tools.
Reference card for service advisors, technicians and administrators who operate the Car Workshop applet: the consultation record, its checklists and vehicle link, the documents it spawns (quotation, jobsheet, invoices, receipt), every exposed setting, and the real failure modes.
Reference for the Recurring Sales Invoice applet: how a recurrence rule is expanded into a series of pending invoices at save time, how a backend job turns each one into a real sales invoice when its date arrives, and what the applet can and cannot do to them.

29 pages — this list is read from the folder when the site is built, so it cannot fall behind what is in it.