Skip to content
DetSol

Business software in Pakistan

What “built for Pakistan” actually means in business software

· 7 min read · DetSol

Software written for another market does not announce itself. It arrives as a settings page you have to fix, a phone field that rejects a real number, and a tax box with the wrong name on it. Here is what each of those four defaults costs, and what getting them right looks like.

Localisation is not translation

Most business software sold into Pakistan is not translated at all, and does not need to be — English is the working language of most of the businesses buying it. What it needs is something less visible and much harder to retrofit: the assumption set underneath the interface. Currency, timezone, phone number shape and tax identifier are each a decision the software made once, early, for a country that was not this one.

Individually, each is a small irritation. Together they produce a system where the defaults are wrong on every new record, where a new member of staff has to be taught which fields to ignore, and where the data slowly fills with values entered to get past a validation rule rather than because they are true. That is the real cost, and it is not recoverable by changing a setting later.

Currency: PKR is not a display preference

The obvious part is the symbol. The part that causes damage is everything downstream of it. Software with a USD default tends to hard-code two decimal places into its money handling, assume a comma as the thousands separator, and size its input fields and table columns for numbers with four or five digits. Pakistani rupee amounts routinely run to seven or eight digits, are commonly written to zero decimal places, and are frequently grouped in lakh and crore in conversation even when stored in Western grouping.

So the symptoms are: totals that wrap or truncate in reports, invoice PDFs whose amount column overflows, and rounding that accumulates a visible drift across a long order. None of those are fixed by a currency dropdown, because the dropdown changes the symbol and not the assumptions.

A correct default means PKR is what a new company, a new product, a new invoice and a new report all start as — and that the layout was designed against realistic Pakistani amounts rather than against $1,299.00.

Timezone: Asia/Karachi, and why the identifier matters

Asia/Karachi is the IANA time zone identifier covering all of Pakistan — Lahore, Islamabad, Peshawar and Quetta included. It is not a reference to the city of Karachi and should never be “corrected” to match wherever the business actually sits. Pakistan does not currently observe daylight saving time, which makes this simpler than it is in many markets, but it does not make it safe to ignore.

Systems defaulted to UTC produce a specific, recognisable failure: a sale entered at 9pm lands on tomorrow's date. Every daily report is then wrong at the edges, and the further into the evening a business trades, the more transactions fall on the wrong side of a day boundary. Month-end is where this becomes expensive, because the sales figure and the ledger disagree by exactly the transactions recorded in the last few hours of the last day.

The general rule, and it is not Pakistan-specific: store timestamps in UTC, but do every piece of date arithmetic that a human will read — day boundaries, month buckets, report ranges — in the business's own zone. A system that stores local time is broken differently, but it is still broken.

Phone numbers: +92, and the validation trap

A phone field built around a ten-digit North American number will reject or mangle a Pakistani mobile number. Staff work around it the way people always work around validation: they enter something that passes. What ends up in the database is a mix of numbers with the country code, without it, with a leading zero, with spaces, with dashes, and occasionally with a note in the field explaining which of two numbers actually works.

That mess only becomes visible later, when someone tries to send the customer an invoice by SMS, or to deduplicate a party list, or to hand the contacts to anything else. The fix is cheap at the point the field is designed and expensive afterwards: accept and store the international form, +92 followed by the national number, and format for display rather than for storage.

Tax identity: NTN is a named thing, not a generic “Tax ID”

In Pakistan, the National Tax Number (NTN) is issued by the Federal Board of Revenue and is what identifies a registered business for tax purposes. Sales tax registration is a separate step that follows from it. Software that offers a generic “VAT number” or “Tax ID” field is not wrong exactly, but it is unhelpful in a way that has consequences: the person filling it in has to decide what belongs there, different people decide differently, and the invoice template prints a label that means nothing to the customer receiving it.

The distinction matters most at the document layer. An invoice that has to be shown to a counterparty, or kept for a tax position, should carry the identifier under the name that jurisdiction uses. Getting the label right costs nothing at build time. Getting it wrong means every historical document carries the wrong label, and reprinting them is rarely an option.

What a correct default actually looks like

The test is simple, and it is worth applying to any system before buying it: create a new company, a new customer, a new product and a new invoice, and change nothing. Then look at what the system chose on your behalf.

  1. Is the currency PKR, with Rs, and does a seven-digit amount fit in the column?
  2. Is the timezone Asia/Karachi, and does an order entered at 9pm carry today's date?
  3. Does the phone field accept a real +92 number without being reformatted or rejected?
  4. Does the tax field say NTN, and does the printed invoice say NTN too?

Four questions, four minutes. A system that passes all four was built with this market in mind. A system that fails them can usually be configured into passing — but every one of those settings is a thing someone has to know to change, and a thing that resets on the next new record, the next new company, the next integration.

This is the distinction we mean by Pakistan-first rather than Pakistan-localised, and it is the reason Stockroot was built rather than configured out of something else.

Sources