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
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
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:
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:
- Company Type Company for corporate buyers. This affects how the contact name prints on commercial invoices and shipping documents. For individual buyers (rare in B2B export), use Individual.
- Country Critical for export compliance. Set the buyer's country. Odoo uses this with fiscal positions to automatically determine that this is a zero-VAT export sale. Without the correct country, VAT may be applied incorrectly on the invoice.
- Currency Set to USD, EUR, GBP, or the buyer's trading currency. All quotations and invoices for this buyer will default to this currency. Odoo converts to BDT in the accounting layer using the rate on the document date.
- Fiscal Position Assign "Export — Zero VAT" to all foreign buyers. This maps the standard 15% VAT to 0%, and changes the revenue account from "Domestic Sales" to "Export Sales". Without this, every export invoice will incorrectly include 15% VAT.
- Payment Terms Set the agreed payment terms: LC at Sight, LC 90 Days DP, TT 30 days, etc. This populates the invoice due date automatically and drives the Aged Receivables report. Accurate payment terms are the foundation of export cash flow management.
- Incoterm (default) Set the buyer's standard Incoterm (FOB Chittagong, CIF Destination, etc.). This prints on quotations and invoices — important for freight responsibility and LC compliance. Can be overridden per Sales Order if terms vary by shipment.
- Salesperson Assign the responsible salesperson. This links all opportunities, orders, and invoices for this buyer to the salesperson's performance report — essential for export commission tracking.
Quotations & Sales Orders
Sales → Orders → Quotations → New. For a Bangladesh export quotation:
- Select customer — fiscal position, currency, payment terms, and Incoterm auto-populate from the customer record.
- Set the order date and expiry — export quotes typically have a 15–30 day validity. Set expiry date on the quotation.
- 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.
- Shipping & delivery tab — set the commitment date, delivery address (port), and Incoterm. For LC sales, the commitment date must match the LC shipment deadline.
- 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.
- 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.
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.
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:
- Enable multi-currency — Settings → Accounting → Currencies → tick "Multi-Currencies". Activate USD, EUR, GBP (and any other currencies you trade in).
- 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.
- 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.
- 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 / KPI | Where to find | Why 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 |
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.