Ask anyone who's dealt with a batch of rejected FBR invoices what caused it, and the answer is very often the same two culprits: HS codes and units of measurement. They sound like small administrative details. In practice, they're the fields most likely to stop an otherwise perfect invoice from going through.
Why HS codes matter more than they seem to
The Harmonized System (HS) code identifies exactly what an item is, using an internationally standardized classification. FBR uses HS codes to determine which tax rate and rules apply to a given item – which means an incorrect code doesn't just look untidy, it can pull in the wrong tax rate entirely, or get flagged because the code doesn't exist in FBR's schedule.
The difficulty is scale: there are thousands of PCT (Pakistan Customs Tariff) codes, and many products could plausibly fall under two or three neighboring codes depending on exact composition or use. Guessing, or reusing a code that "seemed close enough" on a previous invoice, is the most common source of silent errors – the kind that don't get caught until FBR rejects the submission.
Units of measurement: report in what FBR expects
UOM (Unit of Measurement) issues show up differently. Many businesses sell in one unit – a carton, a dozen, a roll – but FBR expects reporting in a specific base unit from its accepted list. If your invoicing system doesn't record the right UOM, you're left manually reconciling quantities for every invoice, which is slow and error-prone at any real volume.
| You sell in | FBR expects | What has to happen |
|---|---|---|
| Cartons | Pieces | Record the unit FBR expects, or set the quantity to match |
| Dozens | Pieces | Enter the quantity in pieces (1 dozen = 12 pieces) on the line item |
| Rolls (meters) | Meters | No conversion – but the UOM label itself must match FBR's accepted list |
| Kilograms | Grams | Enter the quantity in the unit FBR expects for that item |
Getting it right without slowing down your team
The practical fix isn't asking your sales or invoicing staff to memorize PCT codes – it's building the mapping once, at the item level, and letting the system apply it automatically from then on.
- Set the HS code once per item, in your item master, not per invoice. Use autocomplete search rather than free-text entry to avoid typos and near-miss codes.
- Set the correct UOM per item, matching FBR's accepted list, in your item master – not per invoice. Pick the unit FBR expects so quantities report correctly.
- Validate before submission, not after. A pre-submit check against FBR's live rate and code tables catches a stale or invalid HS code before it becomes a rejected invoice.
- Review rejections for patterns. If the same HS code keeps getting flagged, that's a sign the item master needs a correction, not that you're doing something wrong per-invoice.
How this works in Fast Invoices
Fast Invoices includes HS code autocomplete across the full PCT code list, so items are tagged correctly once and reused on every invoice. Each item carries the UOM that FBR expects, set once in the item master, so quantities report correctly without per-invoice fiddling. Combined with pre-submit validation, this is what turns HS codes and UOM from a recurring headache into a one-time setup task. See the full breakdown on the features page.