Technical Lab · 0017

Odoo Sales & CRM for Bangladesh exporters — the B2B pipeline setup.

Pipeline stages for long export sales cycles, multi-currency quotations, proforma invoices for LC opening, customer master with fiscal positions, and the sales reports that matter. Built from cycle export, RMG, and textile deployments.

Most Bangladesh exporters I work with have a common problem: the sales process lives in WhatsApp, email, and the MD's notebook. Prices, samples, buyer feedback, order quantities, delivery commitments — all scattered across personal channels. When I ask "what's in the pipeline?", the answer is usually a gut feeling rather than data.

Odoo's CRM and Sales modules change this — but they need to be configured for the export B2B context: long sales cycles, multi-currency pricing, proforma invoices for LC opening, and fiscal positions that auto-apply zero VAT for foreign buyers. This guide covers the full setup.

A pipeline is only useful when it reflects reality. Garbage data in CRM is worse than no CRM — it generates false confidence.

CRM vs Sales — what each module does

Pre-commitment

CRM (Customer Relationship Management)

  • Manage buyer enquiries as Leads → Opportunities
  • Track pipeline stages from first contact to order commitment
  • Log activities: calls, emails, factory visits, sample shipments
  • Assign salespeople and track response times
  • Win/loss analysis by buyer, product, and salesperson
  • Revenue forecast from pipeline probability
Post-commitment

Sales (Order Management)

  • Create quotations and Sales Orders (SO) once price is agreed
  • Issue proforma invoices for LC opening
  • Trigger delivery / shipment from confirmed SO
  • Create customer invoices (commercial invoice)
  • Track payment against invoices
  • Sales reports: revenue by product, customer, period

For Bangladesh exporters, the CRM-to-Sales handover typically happens when the buyer issues a Purchase Order or a Letter of Credit is opened. Until then, the opportunity lives in CRM. Once the LC is in hand, it moves to a confirmed Sales Order.

Pipeline stages for B2B export

The default Odoo CRM pipeline stages (New, Qualified, Proposition, Won) are too generic for export manufacturing. Here are the stages I configure for Bangladesh garment, textile, and cycle export businesses:

Enquiry Received
Buyer contacted us or we approached them. Log the enquiry in CRM as an Opportunity. Record: buyer company, country, product category, estimated annual volume, and who referred them. Assign a salesperson and set the first follow-up activity.
10%
Sample Sent
Samples dispatched to buyer. This is the investment stage — samples cost money and time. Record the sample number, product details, and expected feedback date. Most Bangladesh export enquiries stall here. Follow-up activities are critical.
25%
Sample Approved
Buyer has approved the sample. Price negotiation begins. Create a draft Quotation from the Opportunity — link the CRM opportunity to the Sales Order. Log all price revision rounds as activities. This is where costing accuracy matters most.
40%
Price Agreed
Price and delivery terms confirmed. Buyer's PI (Purchase Intent) or email confirmation received. Confirm the Sales Order in Odoo. If LC payment: issue the Proforma Invoice for LC opening. If TT payment: confirm order and schedule production.
70%
LC / PO Received
LC or Purchase Order officially in hand. LC details are logged against the Sales Order (LC number, expiry date, amount, bank). Production scheduling begins. This stage triggers the Manufacturing Order if using Make to Order route.
85%
Won
Goods shipped and documents submitted. Sales Order is fulfilled and invoiced. Mark the CRM opportunity as Won. The commercial invoice, packing list, and bill of lading are uploaded against the Sales Order record.
100%

Configure these stages in CRM → Configuration → Stages. The "probability" column on the right is used by Odoo's revenue forecasting — make sure it reflects your actual win rates per stage, not just round numbers.

Customer master setup

Every buyer (foreign or domestic) is a Contact in Odoo. For export customers, configure these fields carefully — they control how Odoo generates invoices, applies tax, and handles currency:

Quotations & Sales Orders

Sales → Orders → Quotations → New. For a Bangladesh export quotation:

  1. Select customer — fiscal position, currency, payment terms, and Incoterm auto-populate from the customer record.
  2. Set the order date and expiry — export quotes typically have a 15–30 day validity. Set expiry date on the quotation.
  3. Add product lines — product, quantity (in export units: pcs, dozens, cartons), unit price in the buyer's currency. Odoo calculates the total in both foreign currency and BDT.
  4. Shipping & delivery tab — set the commitment date, delivery address (port), and Incoterm. For LC sales, the commitment date must match the LC shipment deadline.
  5. Send by email — Odoo generates a formatted PDF quotation. Send directly from Odoo so the email is logged against the record — no more "I sent it but can't find the email" situations.
  6. Confirm the Sales Order — when the buyer confirms. A delivery order (outgoing shipment) is created automatically. If using Make to Order, a Manufacturing Order is also triggered.
Accounting integration

Odoo Sales and Accounting share the same customer database, fiscal positions, and currency settings. If your accounting setup is correct (see my Odoo Accounting setup guide), the invoice generated from a Sales Order will automatically: apply 0% VAT for export customers, post to the Export Sales revenue account, and show the BDT equivalent at the correct exchange rate — with no manual intervention.

Proforma invoices for LC

For export buyers opening a Letter of Credit, a proforma invoice is the document the buyer presents to their bank. It must show: exporter details, buyer details, product description, quantity, unit price, total value, currency, Incoterm, and shipment terms. It does not create an accounting entry.

To enable proforma invoices in Odoo: Settings → Sales → Invoicing → tick "Proforma Invoice". After enabling, the Sales Order will have a "Send Pro Forma Invoice" button — click it to generate and email the proforma directly from the order.

For LC compliance, the proforma invoice must match the LC terms exactly — product description, quantity, amount, and Incoterm must be identical to what the buyer declared to their bank. Any discrepancy will cause a document discrepancy when you present shipping documents for payment. Build a proforma review step into your sales process before sending to the buyer.

Note · Export manufacturer, first Odoo shipmentLC document presentation
The riskiest moment in moving an exporter onto Odoo is not the first quotation — it is the first LC. On one deployment, the proforma invoice sent before go-live used a slightly different product description than the commercial invoice Odoo later generated from the Sales Order. The buyer's bank had opened the LC against the proforma wording; the mismatch became a document discrepancy at presentation, and payment stalled while the buyer waived it. Nobody had done anything wrong — two documents were simply authored at different times by different hands. The fix was a rule: the proforma and the commercial invoice both come from the same Sales Order, and the product description on that order is locked once the LC is opened.
Multi-company note

If your group has a trading entity that sells to buyers and a manufacturing entity that produces, the Sales Order may be raised in the trading company but fulfilled by the factory. This requires an intercompany Sales Order-to-Purchase Order flow. For the full intercompany configuration, see my Odoo multi-company setup guide.

Multi-currency configuration

For Bangladesh exporters, multi-currency is not optional — it is mandatory. Here is the full configuration:

  1. Enable multi-currency — Settings → Accounting → Currencies → tick "Multi-Currencies". Activate USD, EUR, GBP (and any other currencies you trade in).
  2. Set exchange rates — Accounting → Configuration → Currencies → select USD → set the Rate. Options: manual update, automatic from a currency rate provider. For Bangladesh, update manually from the Bangladesh Bank official rate, or use a third-party provider that pulls the BB rate. Update weekly at minimum.
  3. Currency exchange accounts — Accounting → Configuration → Settings → Currency Exchange Gain/Loss accounts. These accounts receive the exchange rate differences when the payment rate differs from the invoice rate. Every Bangladesh exporter will have exchange gain/loss entries every month.
  4. Foreign currency invoices — when you invoice a USD customer, the invoice shows amounts in USD. The BDT equivalent is shown in a separate column. The accounting entry posts in BDT at the invoice date rate. When the payment arrives and you book it (at the actual rate on the payment date), the rate difference posts automatically to gain/loss.

Sales reporting & KPIs

Odoo Sales provides built-in reporting. The KPIs most useful for Bangladesh export businesses:

Report / KPIWhere to findWhy it matters
Pipeline by Stage CRM → Pipeline → Kanban view Visualise deal velocity — how fast opportunities move from Sample to LC
Revenue Forecast CRM → Reporting → Forecast Expected revenue this quarter weighted by stage probability — production planning input
Sales by Customer Sales → Reporting → Sales Analysis → group by Customer Buyer concentration risk — if 60%+ of revenue is from one buyer, that's a business continuity risk
Sales by Product Sales → Reporting → Sales Analysis → group by Product Which products / styles drive revenue — informs next season's development
Sales by Salesperson Sales → Reporting → Sales Analysis → group by Salesperson Commission calculation and performance review
Aged Receivables Accounting → Reporting → Partner Ledger → Aged Receivables Export payments overdue — critical for LC tracking and bank relationship management
Next step

CRM and Sales setup for export businesses involves configuration choices that compound into the accounting and inventory modules. If you're setting up from scratch or cleaning up an existing deployment, book a scoping call and I'll map out the right configuration for your business →

Frequently asked questions

What is the difference between Odoo CRM and Odoo Sales?

CRM manages the pre-sale process: leads, opportunities, pipeline stages, sample tracking, and follow-up activities. Sales manages post-commitment: quotations, Sales Orders, deliveries, invoicing, and payment tracking. For Bangladesh exporters, CRM handles the buyer until the LC or PO is confirmed; Sales handles the order and fulfillment. Both share the same customer database and can be linked via the "Create Quotation from CRM" flow.

How do I generate a proforma invoice in Odoo for a Letter of Credit?

Enable proforma invoices in Settings → Sales → Invoicing → tick "Proforma Invoice". From any confirmed (or draft) Sales Order, use the "Send Pro Forma Invoice" button. Odoo generates a PDF with your company details, buyer details, products, quantities, unit prices, total value, currency, and Incoterm — everything a buyer's bank needs to open the LC. No accounting entry is created by the proforma.

How does Odoo handle multi-currency sales for Bangladesh exporters?

Enable multi-currencies in Settings → Accounting → Currencies. Assign USD (or relevant currency) to each export customer. Sales Orders and invoices for that customer will be in the buyer's currency. Odoo converts to BDT using the exchange rate on the invoice date and posts the BDT equivalent to your accounting. When payment arrives at a different rate, Odoo automatically calculates and posts the exchange gain or loss to your configured exchange accounts.

Can Odoo track pipeline for fashion seasons and annual buyer calendars?

Yes — use Odoo CRM's Tags feature to tag opportunities by season (SS2027, AW2027) and buyer category. Create custom pipeline stages that reflect your seasonal sales cycle. The Revenue Forecast report can be filtered by tag, giving you a seasonal pipeline view. For factories on a buyer-style-season workflow, adding the style number and season as mandatory fields on the Opportunity form keeps data clean for reporting.