Skip to content

E-Commerce Module

E-commerce in BigLedger is two different ways for an order to arrive, feeding the same sales documents. A customer on your own Customer Portal storefront fills a shopping cart, pays through a payment gateway, and the server converts the cart into a sales order. A customer on Lazada, Shopee, TikTok Shop or Shopify buys from your shop there, and a background job pulls the order in as a sales order on a marketplace branch — in TEMP status, with no running number until somebody opens and saves it; the job creates the record, a person makes it a document (Ecomsync, step 12). From that point on, the order is an ordinary Sales Order (Internal) and belongs to the Sales module: invoicing, delivery, returns and stock all happen there.

This page is a map, not a manual. Each applet’s own reference page carries its screens, settings, fields and failure modes. This page says which applets are in the module, what each one is for, and — the thing this module gets wrong most often — what becomes a sales order, and the fact that nothing in this module posts to the ledger or moves stock.

Applets in this module

Membership is an editorial judgement — the product has no module↔applet relationship in its data — and it is written down in planning/specs/module-applet-membership.md. E-Commerce owns 12 registry applets. Eight have a reference page; four do not, and the end of this list says why.

The storefront — your own web and mobile shop

The Customer Portal (CP Commerce) is BigLedger’s own storefront: a website and mobile app that a tenant configures rather than builds. Everything a shopper sees is configured in one applet and stored in a handful of others.

AppletWhat it is for
CP Commerce AdminThe console behind every storefront: the Website record (pricing model, menus, layouts, sign-in providers, shipping, legal agreements, linked accounts), plus ratings, newsletter topics, push notifications, dynamic forms, B2B spending limits, blocked customers and the facilities / activities booking engine. Configuration only — it posts nothing
Shopping Cart (Internal)The back-office listing of INTERNAL_SHOPPING_CART documents — carts raised by staff, by customer logins, or by storefront checkouts. Staff correct a cart and set it FINAL so a sales order can be raised against it. Amount and quantity signums 0: a cart is a pre-order, not an accounting document
Shopping Cart Customer Access (Internal)The same cart document, opened by a customer login rather than staff: one open cart per customer entity, scoped by the login’s link on the customer record. Its FINAL converts the cart in place into a sales order through the storefront service — a call the backend currently rejects from this applet
Shipping PricebookConditional delivery charges — who qualifies, which lines count, what is charged. Master data with exactly one consumer: the storefront evaluates it in the shopper’s browser at checkout and writes the fee as a service-item line on the cart. Filed under master data; owned here (spec §5, A7)
Content Management SystemThe older content editor for the same CMS tables the storefront reads — themes, pages, widgets, menus and categories
Media Library AppletTenant file drives and categories: the images and documents that storefront pages, posts and facilities link to

The marketplaces — Lazada, Shopee, TikTok Shop, Shopify

There is no EcomSync applet you open. The screens are spread across three standard applets and the synchronisation runs as server-side jobs; the index page ties them together.

AppletWhat it holds for the marketplaces
EcomSync Related AppletsThe index: which applet holds each setup step, which marketplaces have a full sync cycle, the background jobs, the troubleshooting table. Start here
OrganisationBranch → Marketplace tabThe marketplace branch: marketplace type, shop authorisation, the stock rule (mode, buffer, how open sales orders are treated), settlement method, default pricing scheme, the publish queue. Owned by Core
Doc Item MaintenanceMarketplace tab, Scheduler, Ecomsync ManagementThe listings: which shops an item is linked to, the shop’s own identifiers, the category and brand pulls, the Lazada / Shopee job schedules. Owned by Core
Sales Order (Internal)Ecomsync menu and tabThe orders: marketplace orders arrive as TEMP sales orders on the marketplace branch; the Lazada / Shopee dashboards, review replies, and the bulk status update back to the marketplace. Owned by Sales
Tiktok Sales Order AppletA marketplace-oriented build of Sales Order (Internal) that keeps only the Sales Order, Line Items, SO Detailed Report and Ecomsync menus. Same INTERNAL_SALES_ORDER document; its code, bundle path and routes still say Shopee

Sellers and merchants — other businesses trading through you

AppletWhat it is for
Seller AppletThe seller-side workspace of the marketplace tables: a login linked to a merchant entity maintains that seller’s marketplace products and store stock balances, sees the seller orders allocated to it out of your sales orders, and the purchase invoices and payment vouchers you settle with. A seller order is a marketplace-table record, not a finance document
Merchant AdminWhere the merchant entity itself is created, with its gateway credentials, contracts, rate cards and monthly transaction report. Owned by Core; listed here because every seller is a merchant entity

Registry applets with no reference page yet

Four ACTIVE registry rows belong to this module and have no page, for two different reasons. Their names are given so nobody mistakes them for phantoms; none of them may be described on a module page beyond what is stated here.

Registry appletWhy there is no page
Payment Channel (paymentchannelApplet) and Merchant Access (MerchantAccessApplet)Real, live applets — Payment Channel maintains the payment channels, payment providers and gateway contracts the storefront’s Settlement Method choices are read from; Merchant Access is the merchant’s own window on the rate cards and monthly reports that Merchant Admin maintains. No source repository for either exists in any GitHub organisation this wiki can read (only the compiled bundle), so neither can be documented to the applet standard. Q-0321 asks where the source lives
Ecom Sync (ecomSyncApplet) and Ecom Sync Organisation (ecomSyncOrganisationApplet)Compiled bundles of the original standalone EcomSync applets (2020), still registered and still served. Their screens are the item editor and the company / branch editor that today live inside Doc Item Maintenance and Organisation; the organisation build calls a token endpoint the current backend no longer has. Q-0320 asks whether both rows are superseded and should leave the catalogue

Two names you may meet elsewhere are not registry applets and are not counted: Seller Admin is a maintained repository that has no registry row (F-0186 — it cannot be installed from the Applet Store), and E-Commerce Catalog was a placeholder for what is in fact the item master behind CP Commerce Admin (F-0118). Their former pages were unpublished under ADR-0008.

What becomes a sales order, and what posts

    flowchart LR
  subgraph STORE["Your storefront (CP Commerce)"]
    W["Website<br/>CP Commerce Admin"] --> CART["Shopping cart<br/>INTERNAL_SHOPPING_CART · qty 0 · amt 0"]
    SP["Shipping Pricebook"] -.fee line.-> CART
    CART -->|"gateway payment<br/>(bl_fi_generic_doc_pgw_txn)"| SO1["Sales order<br/>INTERNAL_SALES_ORDER · qty 0 · amt 0"]
    CART -->|"staff FINAL, then knock-off<br/>in Sales Order (Internal)"| SO1
  end
  subgraph MKT["Marketplaces"]
    LZ["Lazada · Shopee · TikTok Shop · Shopify"] -->|"order-ingestion jobs"| SO2["Sales order on the<br/>marketplace branch · TEMP"]
    LZ -->|"payout / settlement jobs"| RV["Receipt voucher<br/>INTERNAL_RECEIPT_VOUCHER · amt −1"]
  end
  SO1 --> POS["Sales module:<br/>invoice (posts, stock out) · delivery · return"]
  SO2 --> POS
  RV --> FA["Financial Accounting: bank and debtor"]
  

Three facts on this diagram decide most support questions:

  • A shopping cart and a sales order both carry amount signum 0 and quantity signum 0 (ServerDocTypes.INTERNAL_SHOPPING_CART(0,0), INTERNAL_SALES_ORDER(0,0)). Neither writes a journal; neither moves stock. A sales order counts against available stock and it can hold a reservation through the Stock Reservation applet, but nothing in this module reserves stock as a side effect of a checkout. The first document that posts and moves stock is the Sales Invoice (quantity −1, amount +1), which belongs to Sales.
  • Two paths turn a storefront cart into a sales order. A paid checkout is converted on the server (CpCommerceShoppingCartService.convertShoppingCartToSalesOrder) without anyone opening the cart applet; a cart that staff set FINAL is instead offered to the Sales Order applet’s Search Shopping Cart knock-off tab — and only if the company’s Knock Off Configuration has a Shopping Cart → Sales Order row.
  • Money from a gateway lands as a receipt voucher, by a job. A gateway callback queues GEN_DOC_PGW_RECEIPT_VOUCHER_PROCESSOR, which creates the receipt voucher and contras it against the document that was paid; the marketplace payout jobs (Shopee payout, TikTok settlement, Lazada receipt) create receipt vouchers against the marketplace branch. There is no gateway-fee accounting in the module: the merchant rate cards in Merchant Admin price the fee for the monthly merchant report, and nothing posts it.

Module pages

  1. Core Concepts — the cart, the two order paths, what a marketplace sees as available stock, how a gateway payment is recorded, websites versus marketplace branches, sellers versus merchants, and what the module has no engine for.
  2. Configuration — the setup order that makes the first storefront order and the first marketplace order land where you expect.
  3. Use Cases — the shapes the module is used in, on the running example.
  4. API Reference — the one API, the document types this module produces, the endpoint families and the integrations that exist.
  5. Best Practices — advice that follows from the mechanics.
  6. Reports — the reports that exist, and the ones people ask for that do not.
  7. Related Applets — what this module needs from Core, Sales, Inventory, Financial Accounting, Membership and CRM, and what it supplies.