Supply Chain & Importing: From Purchase Request to True Landed Cost

Most importers price off the invoice and discover the truth too late. This guide walks the full import cycle inside Hunt ERP — from low-stock signals through customs clearance to landed cost, with a worked numeric example.

Hunt ERP Team 14 min read 2026-08-02 2
Supply Chain & Importing: From Purchase Request to True Landed Cost

If your company imports, you know this scenario well: the shipment left China in March, reached the port in May, cleared customs in June, and entered the warehouse in July. Between those four dates, dozens of payments piled up — the invoice value in dollars, ocean freight, insurance, customs duty, VAT, storage charges, container demurrage, clearing agent fees, inland transport, loading and unloading. Each one was paid on a different date, sometimes in a different currency, and always at a different exchange rate.

Then comes the question that stops the whole company: "What does this carton actually cost us?"

In most companies the answer is a guess. An Excel sheet, a rough percentage — "we add 7% on top of the invoice price" — and a pricing decision built on instinct rather than a number. The result is that the company may be selling at an imaginary profit, or losing on one item and covering it with another without ever knowing.

A supply chain is not a chain of goods movement — it is a chain of cost accumulation. Whoever loses control of the second loses their margin, even if they mastered the first.

This article walks through the complete import and supply chain cycle inside Hunt ERP: from the moment the warehouse tells you an item is running low, to the moment the system writes the final landed unit cost into the item's purchase price after every shipment expense. At the end, we also cover exports briefly.

The full map: nine connected links

Before the details, this is the journey an item takes inside the system:

#StageWhat happens
1PlanningMinimum stock level · Low-stock screen · Purchase planning
2RequisitionAuto-numbered purchase request → quotations → approval
3ContractingPurchase order · supplier contract · down payment
4ImportShipment file + ACI number + bill of lading + Incoterm
5InvoicesInitial import invoice → final, in foreign currency
6PaymentsSupplier payments + shipment expenses + journal entries
7ClearanceArrival → shipping → inspection → customs → release → delivery → container return
8ReceivingAutomatic warehouse-in voucher and distribution across warehouses
9CostingProportional expense allocation + purchase price update

None of these links is a standalone screen. Each is tied to what comes before and after it, and connected to the chart of accounts through journal entries posted automatically.

1. Planning: do not buy because you "felt" you needed to

The low-stock screen gives you priorities, not a list

Every item has a minimum level. The low-stock screen does not just show items that dropped below it — it calculates:

  • Shortage quantity = minimum level − actual balance
  • Stock status percentage = (balance ÷ minimum level) × 100

That percentage is what turns a list of items into a priority queue. An item at 90% of its minimum is not the same as an item at 12%. The first goes into the next purchasing cycle; the second needs a purchase order today — especially if it is an imported item with a 90-day lead time. You can also edit the minimum level from the same screen, which turns a report into a control tool.

Purchase planning: the decision is not made from stock alone

One screen brings together everything a buyer needs before deciding:

  • Items that genuinely need purchasing
  • Supplier payables — outstanding balances owed to them
  • Purchase reminders — scheduled tasks with dates

A supplier carrying a large overdue balance may not be the best choice for the next order, and a system that shows both facts on one screen prevents that mistake before it happens. For a related stock-accounting trap that distorts the same picture, read why consignment stock is not sales.

Purchase pricing

  • Bulk price updates across a group of items
  • Applying a profit margin to a selected group
  • Automatic propagation of the main unit price to all other units (carton / box / piece)

That last point solves a classic problem: an item bought by the carton and sold by the piece, where one unit price is forgotten and profit quietly turns into loss.

2. Suppliers: local and foreign — two different worlds

The system deliberately separates the two. A local supplier is tied to the chart of accounts through purchase orders, invoices and returns. A foreign supplier is an independent entity built specifically for importing.

Foreign supplier dataWhat it actually serves
CountryDetermining country of origin and studying trade agreements
ActivityClassifying the supplier by their field
Contact person and phoneOperational contact, separate from company details
Tax numberDocumentation and official correspondence
Active statusStop dealing without deleting history

Multi-currency accounts — not a luxury

A single supplier may carry a USD balance, a EUR balance and an EGP balance at the same time. The system keeps independent movements per currency, derives the current balance for each currency separately, and displays all balances together in one statement.

Why this matters: mixing currencies into a single balance produces a number with no meaning and makes reconciliation with the supplier impossible. Each foreign supplier also gets a full account statement, manual adjustment entries, print and export, and a consolidated supplier report.

Supplier contracts

A dedicated module stores the agreement itself, not just the invoices: contract type, start and end dates, status, and contract clauses as separate records, with an approval cycle. The practical benefit: when a dispute arises, you are not digging through a drawer for a paper copy — the clauses are in the system with their dates and approvals.

3. Purchase orders and purchase invoices: the accounting link

A purchase request is created with an automatic number in the format PR-YYYYMM-0001 that resets monthly, keeping numbering readable and archivable without manual effort. Purchase orders and purchase invoices both support:

  • Document states: draft → posted → cancelled
  • Payment methods: cash / credit / cheque / bank transfer / e-wallet
  • Payment status: paid / partially paid / unpaid
  • An independent down payment with its own method, its own source (treasury / bank / cheque / wallet) and its own status
  • VAT and withholding tax as separate fields
  • Cost center, branch, warehouse, currency and responsible employee
  • A link to the journal entry on posting
  • Automatic data scoping to the user's branch
  • Soft deletes — no document ever disappears from history

Separating the down payment from the main settlement, with independent sources and statuses, is exactly what lets the system handle the reality of importing: 30% paid on contract and 70% on document arrival — each with its own entry, date and source.

4. The import file: the heart of the module

The shipment file is the logical container that gathers everything related to one shipment.

FieldPractical meaning
Supplier (local or foreign)The system knows which one automatically and pulls the right data
CurrencyThe base contracting currency
Country of originDetermines duties and preferential agreements
Shipping countryMay differ from country of origin — a difference customs cares about
Shipping dateThe real clock starts here
Expected arrival dateThe basis for planning and follow-up
ACI numberAdvance Cargo Information registration — mandatory in Egypt
Bill of lading numberBill of Lading / Airway Bill
IncotermFOB / CIF / C&F / EX-WORK
Payment methodCash / credit / documents against payment / letter of credit

Why the Incoterm is a primary field, not a detail

Because it decides who bears what:

  • EX-WORK — you bear everything from the supplier's factory gate
  • FOB — the supplier delivers to the port and loads; you bear freight and insurance
  • C&F — the invoice price includes freight, not insurance
  • CIF — includes both freight and insurance

This field tells the accountant which expenses are still coming and which are already paid inside the invoice value. That knowledge alone is what prevents booking freight twice.

Shipment lifecycle: nine states

#StateWhat it means operationally
1InitialFile created, contract in place, not shipped yet
2ShippedGoods have left — the duration and financing clock starts
3Arrived at portArrived but not discharged — free days start counting
4ArrivedDischarge complete — storage charges start counting
5ReleasedOut of the customs zone
6Added to warehousePhysically in stock
7ReceivedQuantities and specifications matched
8Shipment closedCosting complete and the shipment closed in the books
9CancelledWith a mandatory written cancellation reason

This progression is not decoration. The dashboard immediately shows how many shipments are initial, in transit, and closed — so management knows the size of open commitments in seconds.

Changing the state is a separate permission from add and edit. A data-entry clerk cannot jump a shipment to "Received" to make life easier — that decision belongs to whoever holds the permission. And the mandatory cancellation reason means every cancelled shipment leaves behind a written, reviewable explanation rather than a blank.

5. Import invoices: from initial to final

A single shipment may contain more than one invoice and may be split across several warehouses. That is why the import invoice is an independent entity under the shipment, carrying: invoice number and date, target warehouse, currency and exchange rate to six decimal places, total, discount and net, plus detailed lines with item, detailed unit of measure, quantity, price and discount.

Two states: initial → final

  • Initial: the proforma/estimate before confirmation, still editable
  • Final: the approved invoice — and the only one eligible for transfer to warehouses

This separation prevents the most dangerous mistake in importing: booking goods into stock on data that was never approved.

Automatic calculation at line level

The system does not wait for anyone to press "calculate". Invoice lines recalculate themselves on create, update, save and delete:

  • Line total = (quantity × price) − discount
  • Invoice total = sum of lines
  • Net = total − invoice discount

The result: it is impossible to have an invoice whose total does not equal the sum of its lines. That entire class of errors is eliminated by design, not by relying on user discipline.

6. Payments and expenses: where the real cost is built

This is the smartest part of the module, and it rests on one idea: the system distinguishes between two fundamentally different kinds of cash outflow.

Type one: invoice payment

An amount paid to the supplier against specific invoices. You choose which invoices are being settled and the amount allocated to each, so you can settle one invoice partially, split a single payment across several invoices, and track the remaining balance per invoice.

Type two: shipment expense

An amount not paid to the supplier, yet an intrinsic part of the cost of goods: freight, insurance, customs duty, clearing fees, inland transport, handling, storage charges, penalties. It is classified with a flexible expense type, defaulting to "Other" so no expense is ever left unclassified.

Why this distinction is decisive

Because an invoice payment reduces your liability to the supplier, while a shipment expense increases the cost of the goods. A system that mixes them produces two wrong numbers at once: a wrong supplier balance and a wrong item cost. Separating them is what makes landed cost possible in the first place.

The exchange rate is recorded per payment

This is one of the most important details, and one of the most overlooked. A shipment spanning four months has its expenses paid in stages, and the exchange rate moves between them. The system does not use one exchange rate for the whole shipment — it stores the rate with each payment, then converts every amount to the base currency at its correct rate.

On a large shipment, the difference between the two approaches can run into thousands — the difference between profitable and loss-making pricing. Costing also relies only on posted payments that have an actual journal entry, so no unapproved draft leaks into item cost.

A complete audit trail

Every payment carries: payment type and source (treasury / bank / wallet), currency and exchange rate, journal entry number, status, who posted it and when, who cancelled it and when, and who created and modified it. Any amount in the shipment can be traced back to the person who entered it, the person who posted it, and the exact moment it happened.

7. Customs clearance: the most detailed unit

Here the system moves from "recording data" to running operations, through the concept of a clearance job that passes through predefined stages.

Job data includes: job number, customer, ACID number, job type (import or export), commodity, HS code, commodity type, import card number and type, exporter registry number, certificate of origin type, country of origin and destination, shipment type, port, shipping method, and bill of lading number.

The seven import stages

#StageContents
1Arrival & dischargeArrival and discharge dates, free days and their end date
2Shipping proceduresDelivery order (number and date), documents
3InspectionInspection items and regulatory authorities
4Customs & valuationCustoms declaration, value, duties, VAT
5ReleaseRelease number and date
6Delivery & transportCarrier, driver, truck, delivery location
7Container returnEmpty gate-out, return, and the critical dates

Four of them are mandatory and cannot be skipped: arrival, customs, release, delivery. The rest can be skipped depending on the shipment — a small air shipment has no container return, and an inspection-exempt shipment needs no inspection stage.

Storage charges and penalties: the silent killer of import margins

A stage in this system is not a "done / not done" checkbox. It carries detailed operational fields, and the most dangerous ones are these:

  • Free days and their end date
  • Daily storage rate and number of storage days
  • Demurrage — container delay penalty inside the port
  • Detention — container detention penalty outside the port
  • DHC — handling charges

Two days of delay preparing one document can cost more than the entire margin on the shipment. A system that knows the free-days end date and the daily rate can warn you before the penalty is incurred, not after.

There is also a hold reason field. That small field kills the most common sentence in importing companies: "the shipment is stuck in customs" — with nobody knowing why, who is responsible, or for how long.

Containers and LCL shipments

Each container carries: number, type, seal number, gross weight, net weight, temperature, gate-out date and empty return date. The temperature field means the system is built for refrigerated cargo — the highest-risk, most delay-sensitive shipments there are. Consolidated LCL shipments that do not fill a container have their own line items, separate from the container structure.

Documents, logs and reopening

  • Documents per stage — each file belongs to its stage, not to a generic folder
  • Inspection items — add, edit and delete
  • Stage log and job log — a full history of every change
  • Reopening a completed stage — because reality demands it: customs rejects a declaration, inspection is repeated, data is corrected. A system that blocks going back forces people to work outside it. But going back is never silent: every reopen is logged with who did it and when

Assigning jobs to clearing agents

The procedures screen shows active jobs, with assignment and unassignment, and automatic filtering by user: managers see everything, while an agent sees only their own jobs. That is not just security — it is focus. The agent opens the system and finds only their work.

Shipment expenses and client statements

Clearance expenses have a deeper structure: definable expense categories, amount and currency and exchange rate with the base-currency amount calculated and stored, who paid and the payment source, an attachment per expense (the receipt lives with the expense, not in a drawer), a journal entry link, and a confidential flag for expenses recorded internally that never appear on the client statement.

For clearing companies working on behalf of clients, there is a client statement containing: total expenses + total fees = grand total, paid and remaining amounts and payment status, with line consolidation (detailed or grouped display), a client display label, plus issuing and printing. The statement is treated like an invoice on the collection screen, so it enters the collection cycle directly.

8. The customs unit: tariff codes, ports and gates

HS codes

A tariff database where each code carries: the code, Arabic and English descriptions, unit of measure, duty rate, VAT rate, profit tax rate, other fees rate, agreement name and its preferential duty rate, the competent inspection authority, a fees note, a usage counter, and an active flag.

The real value of this unit is that it lets you calculate duties before buying. Before signing a purchase order you can look up the code and see the expected duty and VAT, so the purchasing decision is built on expected landed cost rather than invoice price alone.

Having the agreement rate next to the standard rate is a strategic planning tool: the same item from a country with a preferential agreement can save millions compared with another source — and the system puts both numbers in front of the buyer on the same screen. The inspection authority tells you in advance which regulator you will face, so their paperwork is ready before arrival. And the usage counter reveals the codes that recur most in your business — exactly the ones worth negotiating or re-sourcing.

Ports and gate entries/exits

A manageable ports database, plus a full operational unit for vehicle movement at border points: entry with driver details and nationality, truck and trailer numbers, vehicle type and load, direction, entry date and time, weighbridge and weight, receipt number, country and port, customs numbers and licence dates. Exit is linked to the entry record, pulls its data automatically, and issues a service invoice on the way out, priced from a central approved tariff rather than a gate clerk's judgement.

9. From shipment to warehouse: automatic transfer

When the goods arrive, the user presses "Transfer to warehouses", and the system performs the whole operation inside a single database transaction:

  1. Select only eligible invoices — final invoices not transferred before. No goods are added twice, and no unapproved invoice is added at all.
  2. Create a warehouse-in voucher per invoice in the correct warehouse, with an automatic reference note: "Transferred from import shipment no. X — invoice Y".
  3. Full reference linking — reference type, shipment number and source.
  4. Merge duplicate lines — the same item in the same unit across multiple lines is merged into one line with a combined quantity.
  5. Handle numbering collisions — if two vouchers collide on the same number (two users working at the same instant), the system retries up to five times with a random delay instead of failing.
  6. Update the shipment state to "Added to warehouse".

Why this matters: manual entry of inbound goods is the number one source of stock variances. Eliminating it removes an entire class of errors. And reference linking means any stock balance can be traced back to the shipment, invoice and supplier it came from.

10. Landed cost: the big prize

This is the moment that answers the opening question. Let us walk through it with real numbers.

The inputs

A shipment of three items, invoiced at USD 50,000, at an exchange rate of 48.50 at settlement:

ItemQuantityPrice ($)Total ($)Share of shipment
Item A400 cartons6024,00048%
Item B1,000 cartons1616,00032%
Item C2,000 pieces510,00020%
Total50,000100%

So the invoice value in EGP = 50,000 × 48.50 = EGP 2,425,000.

Shipment expenses

ExpenseAmount (EGP)
Ocean freight180,000
Insurance25,000
Customs duty315,000
VAT210,000
Storage charges and penalties45,000
Clearing fees30,000
Inland transport20,000
Total825,000

Proportional allocation and unit cost

The system allocates the 825,000 across items by value:

ItemInvoice cost (EGP)Expense share (EGP)Total cost (EGP)Unit cost
A (400 cartons)1,164,000396,0001,560,0003,900
B (1,000 cartons)776,000264,0001,040,0001,040
C (2,000 pieces)485,000165,000650,000325
Total2,425,000825,0003,250,000

And here is the gap that eats your profit

If you priced off the invoice alone, Item A costs you EGP 2,910 per carton. Add a 20% margin and you sell at EGP 3,492.

But your real cost is EGP 3,900. You are losing EGP 408 on every carton while believing you made 582. Across 400 cartons that is EGP 163,200 of losses on one item in one shipment.

And this gap is not an outlier — expenses are 34% of invoice value in this example, which is entirely normal in importing.

Why allocate by value and not by quantity?

If the 825,000 were allocated by quantity, Item C (2,000 pieces out of 3,400 total units) would absorb 58.8% of expenses = EGP 485,000, which is EGP 242 loaded onto a piece whose invoice cost is EGP 242 — doubling its cost. Item A would absorb only 11.8%.

That is a complete distortion that leads to disastrous pricing. Allocation by value is also the same logic customs itself applies when charging duty on value, so the system's logic matches reality.

The final step: updating purchase prices

With one click, the system writes the calculated unit cost into the item's purchase price at unit-of-measure level, and logs the old price, the new price and the total cost in an update record.

And with that the loop closes: cost becomes live data the system builds margins, selling prices, inventory valuation and cost of goods sold on — not a number in a report an accountant reads. To understand the effect on your financial statements, read our guides on the value of real-time financial reports.

All of it is crowned by a shipment cost report showing each item's cost in both currencies, its share of the shipment, its expense allocation and final unit cost, plus a shipment summary — with print, PDF and Excel export.

11. Governance: what makes these numbers trustworthy

None of the above matters if any user can change anything. That is why the system is built on:

  • Permissions at action level, not screen level — view, add, edit, delete, and state change as a separate permission
  • A separate approval/posting permission — whoever enters is not necessarily whoever approves
  • Automatic branch scoping of data
  • Assignment-based filtering — an agent sees only their own jobs
  • Soft deletes on sensitive documents
  • A complete audit trail — who created, edited, posted, cancelled, and when
  • Database transactions — an operation either fully succeeds or fully fails; there is no half-operation

If this matters to your business, also read why you should never hire a freelancer to build your ERP.

12. What about exports?

Exporting is the mirror image of importing, but not a simple reversal. Let us be precise about what exists today and what does not.

What already exists

The customs clearance module does support export jobs — the job type accepts import or export, and exports follow their own stage path: arrival → shipping procedures → inspection → customs & valuation → release → delivery (six stages, without the container-return stage specific to imports).

Job data already includes explicitly export-side fields: exporter registry number, certificate of origin type and destination country — documents that only make sense in exporting. In other words, the logistics and customs side of exporting is covered, and a clearing company working in exports can run its jobs, expenses and client statements in the system today.

What is missing: the full commercial export cycle

What is not yet covered is the commercial and financial side of exporting as a company activity — the mirror of the import file:

Required for exportIts import counterpart
Export shipment file with its own statesThe import file with its nine states
Foreign customer with multi-currency accountsForeign supplier
Commercial invoiceImport invoice
Packing listInvoice line items
Certificate of origin and health certificatesImport documents
Outgoing letter of creditIncoming letter of credit
Automatic stock-out voucherAutomatic warehouse-in voucher
Foreign currency collection and FX differencesSupplier payments
Export shipment profitabilityImport shipment cost

The fundamental difference in logic

  • In importing the question is: what does this cost me? → expenses are added to cost. In exporting: what did I make? → expenses are deducted from revenue, and you measure shipment profitability, not shipment cost.
  • In importing you pay in foreign currency and buy dollars; in exporting you collect in foreign currency and repatriate proceeds, with FX handling running in the opposite direction.
  • In importing the critical document is the inbound customs declaration; in exporting it is the certificate of origin, the chamber-of-commerce certified invoice and conformity certificates — and any gap in them halts the shipment or blocks collection from the importer's bank.

The good news is that the foundation is ready to extend: an entity like "foreign supplier" with its multi-currency accounts is exactly the model a "foreign customer" needs, and the proportional cost allocation engine is the same engine that computes export shipment profitability with the sign reversed. What remains is building the commercial and financial face on top of a logistics foundation that already exists — not starting from zero.

Conclusion

If you had to summarise the philosophy of this module:

  • One source of truth: no number is entered twice. Lines produce the invoice, invoices produce the warehouse voucher, invoices and expenses produce the cost, and the cost produces the purchase price.
  • Separating what must be separated: supplier payment ≠ shipment expense. Initial invoice ≠ final. Local supplier ≠ foreign. Down payment ≠ settlement. Each separation prevents a specific accounting error.
  • Currency precision: an exchange rate per payment, to six decimals, stored at the moment of execution.
  • The details that cost money: free days, storage charges, delay penalties, container returns, temperature.
  • Automation where it is dangerous: line calculation, stock-in, cost allocation, price updates.
  • Governance as a first-class layer: trust in a number comes from being able to trace it, not from believing it.

The difference between a company that imports profitably and one that imports at a loss is not supplier quality or invoice price — it is the ability to know its real cost at the right time. That is precisely what the supply chain and import module in Hunt ERP was built for: turning the question from "what do you think it costs?" into "it costs exactly this — and here is every pound that went into it."

Want to see it running on your own data? Explore the plans and modules or request a demo, and we will walk you through a full shipment from contract to final landed cost.

Ready to see your company reports done right? Request a custom quote or start with a free trial .

Share:

Ready to Apply Hunt ERP?

Book a free demo or contact our team

Book Free Demo

📚 More Articles