B2B.Africa

Templates for a safe B2B deal in Africa

Figures checked before publication on 2 Nov 2026

Six ready-to-adapt templates for a cross-border B2B deal — a purchase order with a signed, fixed price, a proforma invoice, a milestone payment schedule, a pre-shipment inspection clause, a bank-details change confirmation letter, and a checklist for never paying a tender fee.

2026-11-02 · Every factual claim on this page was checked against its source before publication. The figures are not updated after that.

These six documents are what to start from for a cross-border B2B deal in Africa: a purchase order that fixes the price once it is signed, a proforma invoice, a milestone payment schedule, a pre-shipment inspection clause, a letter to confirm a change of bank details, and a checklist for one rule that never changes — never pay a tender fee. Each template is a starting point to adapt with your own contract and your own counsel.

Why does the price need to be fixed by a signed purchase order?

A signed purchase order is what separates a fixed price from a moving one — and it protects whichever side of the table you sit on. In March 2025, a group of importers in Morocco paid a 30% deposit to two Chinese exporters of home appliances against a quote that read "price valid for 10 days" in small print. Once the deposit was paid, the sellers went back on the price, the goods didn't match the order, and complaints about the same exporters were already on record with Chinese customs — a reported loss of around MAD 28 million (Hespress English).

If you are the seller, that case is the argument for your own paperwork rather than against it: a quote with an expiry clause tied to payment timing is not a fixed price, and a buyer who has been burned once will ask you for exactly the document below. Don't rely on a quote — rely on a signed purchase order that states the final price, the goods, the delivery terms and the payment schedule, with no clause that lets either side change the price after money has moved.

Template 1: Purchase order with the price fixed by signature

Adapt to your contract and local law.

  • Buyer and seller, full legal names and registration numbers
  • Goods, quantity, specification and HS code
  • Total price, in a named currency, with a clause: "This price is fixed once this document is signed by both parties and does not change during the term of this order."
  • Delivery terms (Incoterm), delivery address and delivery date
  • Payment schedule, referencing the milestone schedule below
  • Signatures of both parties, with date and place of signing

Template 2: Proforma invoice

Adapt to your contract and local law.

  • Seller's full legal name, address and bank details
  • Invoice number and date
  • Buyer's full legal name and address
  • Description of goods, quantity, unit price and total
  • Delivery terms (Incoterm) and estimated shipping date
  • Validity period of the invoice
  • A line stating: "This is a proforma invoice for the buyer's reference and is not a demand for payment ahead of the agreed schedule."

Template 3: Milestone payment schedule

Adapt to your contract and local law.

  • Deposit due on signature of the purchase order, before production starts
  • A second payment due on completion of production, confirmed by photos or a pre-shipment inspection report
  • Balance due against shipping documents (for example, a copy of the bill of lading), not after the goods have already been collected
  • A line stating which party pays any bank transfer fees
  • A line stating that the payment schedule does not change without a signed amendment to the purchase order

Template 4: Pre-shipment inspection clause

Adapt to your contract and local law.

Suggested wording: "Before the goods are shipped, the buyer or an independent third-party inspector of the buyer's choosing may inspect the goods at the seller's premises against the specification in the purchase order. The seller will give notice of readiness for inspection with reasonable advance warning. Inspection is a condition of final payment, not a courtesy."

  • Name and contact of whoever will conduct the inspection
  • What happens if the goods fail inspection (rework, replacement or partial refund)
  • Who pays for the inspection

Template 5: Bank details change confirmation letter

Adapt to your contract and local law.

Suggested wording: "We are writing to confirm, through a channel independent of email, that [seller's legal name] has changed its bank account details. Before you send any further payment to a new account, please call us on a phone number you already have on file for us — not one provided in this letter — to verbally confirm this change. We will never ask you to change payment details by email alone."

  • Old bank details, for reference and comparison
  • New bank details, in full
  • A phone number the buyer already has, not a new one provided in the same message
  • Signature and company stamp, if your company uses one

Template 6: Checklist — never pay a tender fee

Adapt to your contract and local law.

  • No genuine buyer, government office or tender committee ever asks you to pay a fee, deposit or charge before releasing a payment that is already owed to you.
  • A request to wire money to a third party "to release" a contract or payment is a scheme, whatever title the requester uses.
  • An order you did not negotiate at all is a reason to ask more questions, not fewer.
  • A change of bank details always gets a phone call to a number you already had, before a single payment moves.
  • If in doubt, do the deal through a channel that keeps a written record of every term, rather than by phone or a side chat.

Country-specific context for the same deal: South Africa, Kenya and Nigeria.

And one rule that applies to us, not only to them:

B2B.Africa never asks you to pay a buyer, a tender committee or an agent.

This is general information, not legal advice.

Sources

  1. [1] Hespress English, Moroccan importers lose millions to Chinese exporters
Add your company

Data: National Treasury eTenders (OCDS), CC BY 4.0