This is the long form of every rule the record states in a line. The page itself carries only what a reader must see to keep from drawing a false conclusion: a mark on a questioned reading, a label on a restructured series, the date beside a carried price. Everything that explains why a rule exists — the thresholds, the corroboration, the taxonomies, the pass-through arithmetic — is here, because a reader who wants it will come looking and a reader who does not never wanted it in the middle of a price.
Most of what is here is not new: every passage below the six rules was on the record page until it was moved, and it is reproduced rather than summarised.
The six rules
Every figure on this site comes from a document that can be opened, and every one of those documents has been kept. There is no model here and no house view. Six rules govern what gets published.
-
The arithmetic must close
Each subtotal is recomputed from the rows it claims to add. The steps that carry the price to the pump — the price before levies, the price before sales tax and the total — must agree to within a paisa (Rs 0.01). If one does not, the day is withheld and listed in the integrity log with its residual. OGRA’s earlier steps, in dollars and at the port, carry its own rounding of the figures it prints, so a paisa or two there is recorded, not withheld.
-
Nothing is filled in
No interpolation between notified days, no averaging, no carrying a figure forward without saying so. A price held from an earlier notification is shown with the date it was notified on, because a figure without that date claims a day it has not earned. A missing line stays missing.
-
Contradictions are shown, not resolved
Where two publishers give different figures for the same effective date, both are archived and neither is drawn. Where a reading contradicts the notifications either side of it, it is published exactly as notified and marked. This record is not the arbiter.
-
Only what can be read is published
OGRA — the Oil and Gas Regulatory Authority — published the inside of a litre long before 21 July 2026 — the import-parity working, and a full ex-depot build-up for kerosene, roughly every fortnight — and it published all of it as scanned images with no text layer. Those documents are catalogued here and not one figure is taken from them, because a figure lifted off a picture cannot be checked against the arithmetic printed beside it. What is drawn is what a parser read and a guard tested.
-
The source is kept, and the copy is what is linked
Each publication is downloaded within minutes, hashed with SHA-256 and stored byte for byte. OGRA rewrites its listing on every publication, so a document drops out of view within weeks: it goes on being served under an id nothing on OGRA’s site links to, and nothing undertakes that it will keep being served. Links here point at the copy whose digest is published.
-
The grouping is the only editorial act
Sorting OGRA’s rupee lines into three groups is a choice, and the one place this record departs from the order OGRA prints. Customs duty is the clearest case: OGRA charges it above the ex-refinery price, and it is counted here with the Government, because the groups answer where the money goes rather than where the row sits. The choice is reversible — every group names the rows inside it, and the lettered table is one click away.
Four companion documents sit beside this one, at Notes. The day OGRA restructured the diesel build-up is the write-up of the one change OGRA has made to the shape of its own publication since this record began, with the two letter schemes side by side and the digests of the two documents that prove it, and it records every smaller variation at its foot. The historical price build-up covers what was published before daily pricing began, and why the chart stops where it stops. What OGRA serves is the map of the regulator’s own document id space, and the correction of two things this site used to claim about it. Reading the scans is how the photographed kerosene documents were read and what a figure has to survive before it is published.
What each published line is
The record page prints a short note under each line of the build-up — enough to keep the figure beside it from being misread. Here is each one at length, in the three groups the page reads them in.
Dollar figures that lead to cost and freight
These rows are not lines of their own and belong to no group. They lead to cost and freight, which OGRA prints as one rupee figure.
- Platts quotation
- A seven-working-day rolling average of a Platts Arab Gulf mean quotation, converted at the State Bank’s rolling rate over the same seven days. Which quotation is averaged is named in the day’s own document, and it is not the same one for both products — see which quotation the fuel group starts from.
- Premium including freight
- What the supplier charges above the Platts quotation, shipping included. This line exists on a build-up priced from a finished product; the restructured diesel build-up splits it in two.
- Crude premium
- Aramco’s crude oil premium for Arab Extra Light for Asia, notified monthly and quoted in dollars a barrel. It is a differential over the crude quotation, not a surcharge: it can be negative, and it has been. Freight used to be folded in with it and is now published beside it.
- Freight and insurance
- The approved cost of shipping and insuring a crude cargo from the Gulf, quoted in dollars a barrel alongside the crude itself. Before 20 August 2026 it sat inside the premium line rather than beside it.
- Crack spread
- What it costs to turn crude into diesel: the gap between the international price of the two, quoted in dollars a barrel. Published for the first time on 20 August 2026 — before that it was inside a single finished-product quotation and could not be seen at all.
The fuel, shipped to Pakistan
- Cost and freight, in rupees
- The dollar rows above, converted: OGRA’s dollar total for the cargo times the State Bank’s rate, divided by the litres in a barrel. It is the fuel group’s largest line.
- Incidentals
- A per-litre charge OGRA adds between the landed cargo and the cost at Karachi port.
- Ocean loss or gain
- Product lost, or occasionally gained, between loading and discharge. OGRA publishes it as a plus or a minus.
- Exchange rate adjustment
- A correction applied after the cargo has already been converted at the rolling rate. It can be either way.
- Domestic refinery blend
- Not all diesel is imported. On a day OGRA prints a blend table, the import price is the weighted average of the domestic refinery price and the import price, and this line is the difference. It appears only on those days.
Getting it to the pump
- Inland freight equalisation (IFEM)
- The cost of moving product inland, averaged across the country so that the price is the same at every pump.
- OMC margin
- What the marketing company keeps on every litre it sells.
- Dealer commission
- What the pump keeps on every litre it sells.
Government
- Customs duty
- Duty charged on the product at import. OGRA prints it above the ex-refinery price, among the costs of getting the cargo here; this record counts it with the Government, because a duty is a tax whichever row it is printed in and the groups answer where the money goes.
- Petroleum levy
- A federal levy set in rupees a litre rather than as a percentage, so it does not follow the oil price down. Only the government moves it.
- Climate support levy
- A second federal levy, also set in rupees a litre, charged on top of the Petroleum Levy.
- Sales tax
- General sales tax on petroleum products, currently nil. A zero the state chose, not a line that is missing. It is shown as nil rather than left out.
The three groups
The record reads OGRA’s table in three groups. Each is a sum of lines OGRA prints, and together they add up to OGRA’s printed total exactly.
- The fuel, shipped to Pakistan: the import price less customs duty, L − K on petrol’s table, and N − M on diesel’s table since 20 August 2026. It holds cost and freight, incidentals, ocean loss or gain, the exchange rate adjustment and, on a blend day, the blend line.
- Getting it to the pump: M + N + O on petrol’s table, and O + P + Q on diesel’s table since 20 August 2026. That is inland freight equalisation, the oil company’s margin and the dealer’s commission.
- Government: K + Q + R + S on petrol’s table, and M + S + T + V on diesel’s table since 20 August 2026. That is customs duty, the petroleum levy, the climate support levy and sales tax.
Before 20 August 2026, diesel’s table used petrol’s letters.
The fuel group starts from a quotation, and in two of the three cases it is not a quotation for crude.
- Petrol is priced from Gasoline 92 RON, a finished fuel.
- Diesel was priced from Gas Oil, also finished, until 20 August 2026, and from Dubai crude since.
The groups sort the printed lines by where the money goes, not by what was quoted; the day’s own document names the quotation, and the record page repeats that name beside the figure rather than the group’s.
The restructure that changed diesel’s quotation is written up in full, with both letter schemes side by side and the digests of the two documents, in The day OGRA restructured the diesel build-up.
Before conversion: dollars a barrel into rupees a litre
Every other figure on the record page is rupees a litre. Two are not: OGRA quotes the market in US dollars a barrel and converts it at the State Bank’s own rolling rate. Both are published in the day’s document, and the page shows that conversion.
Cost and freight in rupees is OGRA’s dollar total for the cargo multiplied by the exchange rate, then divided by the number of litres in a barrel.
Which days exist, and which do not
Working days
OGRA notifies a price at the close of each working day, and it takes effect at midnight. Weekends carry no notification, and neither do public holidays, which cannot be known in advance. Between notifications the previous price stands. That is why the record is stepped rather than daily, and why a price carried across a weekend is labelled with the day it was actually notified.
Why a date can be missing
A date this record has no price for is one of three things, and they are not the same.
- A date in the published list was published and passed every guard.
- A date in the withheld list was published by OGRA and refused here, because its own arithmetic did not close.
- A date in neither was never published at all — a weekend, a holiday, or a day before daily pricing began.
There is a fourth case, and it belongs to the twenty-year tail rather than to OGRA’s daily build-up: a contested date, where PSO — Pakistan State Oil — holds, in its own archive, more than one notification for a single day, each stating a different price. Nothing is drawn on those dates either. They are described under a contested date.
A gap looks identical in every one of those cases, so the counts are stated in the colophon rather than left to be inferred, and the withheld list is in the history file with the reason each day was refused.
Kerosene and light diesel oil
Kerosene and light diesel oil are drawn from PSO’s notified price alone. They come from PSO, whose archive of its own notifications reaches back to 2006 and carries them for every day it covers. A carried price is shown with the date it was notified on, because a figure without that date claims a day it has not earned.
Kerosene is the one product where “no build-up is published” would be the wrong sentence, and this document used to carry it. OGRA does itemise kerosene — the fortnightly ex-depot computation described under before 21 July 2026, and the gazette notifications, one of which prints six kerosene components and a signature. A correction to that correction, because the first one was itself imprecise: what OGRA itemises there is the maximum ex-depot sale price, which is a different quantity from the pump price this site draws. They are not two readings of one figure and must never be presented as though they were. So the narrow sentence is the true one: OGRA publishes no build-up of either product’s pump price, and what it does publish for kerosene is a build-up of a different price, kept apart.
Before 21 July 2026
Before 21 July 2026 OGRA published no build-up for petrol or high-speed diesel. It did publish the inside of a litre, though, and this document said otherwise for as long as it was live. Every fortnight OGRA issued a detail computation of ex-depot sale price: an Annex-I giving the Arab Gulf mean quotations product by product with the daily selling exchange rate, the premium, the C&F, the 7.5% tariff and the conversion factor, and an Annex-II giving a complete ex-depot build-up — for kerosene, and for kerosene alone. Documents 10000 and 10445 are two of them. Its gazette notifications itemise kerosene too: document 8020, dated 15 August 2022, prints the prescribed price, the petroleum levy, the inland freight margin, the distributors’ margin and the maximum ex-depot price, signed.
All of it is scanned images with no text layer. A PDF reader extracts zero characters from either page of document 10000. Nothing here is taken from those documents, because a figure read off a picture cannot be checked against the arithmetic printed beside it, and this record publishes nothing it has not checked. They are catalogued, and they are the only route to a build-up older than a month — by optical character recognition and a second source, which is a different project with a different standard of proof.
What runs back twenty years, and is drawn, is PSO’s own archive of its notifications: a pump price and nothing else.
Nothing is interpolated and nothing is estimated. A notified price is held until the next notification rather than drawn through the days between, so every step on the chart is as wide as the days that price was actually in force.
The marks on the record
The record’s three marks on a reading are shapes, not colours: an open ring for a reading the rule questioned and nothing has answered, the same ring filled for one a second publisher has since confirmed, and a stem from one figure to the other where the two publishers print different prices — a mark whose length is the size of the disagreement rather than a token standing for it. Selecting a marked reading on the chart says what is wrong with that reading in particular.
A questioned reading
Some readings in PSO’s archive stand a tenth or more clear of the notifications either side of them — a price that goes out and comes straight back, which is not usually what a price does when it moves. Every one is drawn exactly as PSO published it and carries a mark.
A mark nothing has answered is left out of the record’s Highest, Lowest and Price changes; a mark a second publisher has answered is counted like any other reading. A marked reading is a reading this project questioned, not a reading it calls wrong. Nothing is corrected here, because nothing here is ours to correct.
The threshold is ten per cent clear of the quantity either side. It is chosen to catch an out-and-back, which is the shape of a transcription error in an archive, rather than to catch a large move, which is the shape of a real one.
Clear of, exactly. Take the notification before the reading and the one after it. Average those two. Then take whichever of the two the reading is nearer to, and measure the distance to it as a fraction of that average. Ten per cent or more, and the reading is marked. Both neighbours have to be out-argued, and it is the nearer one that decides — a reading that stands clear of the further neighbour alone is not marked at all.
So diesel on 22 October 2010, notified at 113.29 between 73.82 and 78.33: the average of the neighbours is 76.075, the nearer of them is 78.33, the distance to it is 34.96, and 34.96 of 76.075 is 46 per cent. That is the figure the integrity log prints beside it. Where the two neighbours happen to be the same price the average is that price and the arithmetic collapses to the obvious one — which is most of the marked readings, and is why the general rule is worth writing down.
An answered mark
Some marked readings were questioned and turned out to be right.
On 8 July 2009 OGRA’s own build-up prints the same petrol and kerosene prices PSO notified, with its levy column at nought: a levy was suspended for a week, so the price genuinely fell and genuinely came back. Our rule was right to ask and wrong to conclude, and one headline moves back onto a figure it had put aside.
It is the clearest thing in this record about why a second source is worth having, and the mark stays — filled rather than removed — so that the question and its answer are both visible.
A disputed date
The two public records of Pakistan’s own fuel prices do not agree about every date. PSO’s notification states one price and OGRA’s published build-up states another for the same day, almost always on a reading no rule had questioned, and nothing on either page says which supersedes which.
Both figures are held exactly as their publishers printed them, neither is preferred, and no third number was worked out. What is drawn is PSO’s, because that series is PSO’s archive and swapping the other figure in on some dates and not others would make it neither source’s record. The dates are marked on the chart and both figures are shown when one is selected.
That is a finding about the sources, not a fault in either.
Where six dates or fewer are disputed in the window on screen, the page names them. Past that the note gives the count and the span instead, because nineteen dates printed in a row is a paragraph nobody reads and it would bury the sentence that says what the disagreement is. The chart’s own marks are how a reader finds the individual date.
A contested date
PSO’s archive sometimes holds more than one notification for a single date, each stating a different price, and nothing on the page says which superseded which. No price is drawn on those dates: none was chosen, none was averaged, and the previous notification is held across them. They are marked on the chart.
Cross-checking a day
Every figure is read from OGRA’s daily notification. PSO republishes the same price on its own site, so the two are compared: a mismatch would mean this record misread OGRA’s PDF, not that PSO set a different price. PSO is not a second authority on the price, only a second copy of it. Where PSO’s copy has not arrived for a date, there is nothing to compare yet.
That is normal on the newest day: PSO posts to its own archive some hours after OGRA publishes, and the day closes itself when it arrives. Every arithmetic guard still ran, and OGRA’s own reconciliation still closed. A day that is not cross-checked is published, not withheld, and the page says which is which rather than implying that all are confirmed.
Read off photographs: the second kind of record
Everything above this heading was read exactly. A machine opened a document, asked for the characters in it, and got them back; two runs return the same bytes, and the parse either finds a figure or refuses. There is now a second body of readings on this site that is not like that, and this section exists so that nobody quotes one of them believing it is.
OGRA publishes kerosene’s ex-depot build-up fortnightly, in two documents — a detail computation of ex-depot sale price and the gazette notification that puts the same prices in force — and it publishes most of them as photographs of paper with no text layer at all. Those have now been read, by a machine, off the pictures. Sixty-nine days, 1 March 2020 to 19 August 2026. Forty-two are corroborated by the second document, twenty-one are unanswered, six are withheld. They are kept in a record of their own.
Why it is a separate record and not a marked column
An OCR figure is a model’s opinion about what some ink says, and no amount of care makes that the same kind of fact as a figure a parser read. The failure worth designing against is not somebody mislabelling one — it is a figure ending up inside a series that somebody then quotes, at which point the label is three joins away and nobody is looking at it. A label can be dropped in transit; a separate table cannot.
So they have their own tables, with no foreign key into the day record or out of it in either direction, asserted against the database’s own structure rather than left to code that could change. Their own file, their own endpoint, and their own nested block in the counts, so that a caller adding up the numbers beside it cannot include these by accident. The word verified is unreachable from those tables by check constraint: a scanned day is corroborated, unanswered or withheld, and no code path can give it any other status however confident the reader was.
Unanswered means nobody checked. Twenty-one of these days have no second document, so nothing has agreed and nothing has disagreed. That is not the same as cleared and is never drawn as if it were — the same distinction the notified series already carries, where a contradiction with nothing answering it means the question is still open.
And it is a different quantity as well as a weaker one. What OGRA itemises in these documents is the maximum ex-depot sale price, which is not the pump price the rest of this site draws. The two are never compared, never averaged and never charted together.
What is deliberately not read
Annex-I, the ex-refinery sale price calculation on the first page of the same document. It carries the Arab Gulf quotations for ten working days across eight products, the daily exchange rate, the premium, the tariff and the import parity price — it is the top of the petrol and diesel build-up, and it is the most valuable page in the whole scanned archive.
It is refused precisely because it is valuable: it is the one place here where machine reading is most dangerous rather than least. Everywhere else a misread digit breaks a sum and the day is withheld. There, eighty quotation cells average into one figure the page states, and a misread digit moves that mean by a hundredth and passes every check this project owns — so a wrong figure would be published, confidently, with nothing to catch it. It stays unread until a second source exists. It was declined deliberately; it was not overlooked.
Where those documents are
They are archived, under the same rule as everything else here: the source is kept rather than linked. A document is written to the archive only if its SHA-256 matches the digest recorded when its figures were read from it, and a document that comes back different is reported as a finding rather than saved. That check matters more here than anywhere else on this site — every other figure could be re-derived by re-reading a text layer, and these could not.
Not every copy is here yet, and the page tells you which. Where a document is held you can open it; where it is not, the page says so rather than showing a link that would not resolve.
What the archive is, and what it is not
Every figure traces to a document archived here with its SHA-256 digest. The published lines add to the pump price exactly. Nothing is derived, estimated, interpolated or filled in.
This is not the only copy of those documents, and the page used to
say that it was. OGRA goes on serving each publication at
/download/<id> long after it has left the listing: every
one of the publications held here was re-fetched by its id and came back
byte for byte identical to the copy on this disk. What turns over is the
listing — about twenty entries, newest first, no pagination, no search and no
index behind it — so a publication becomes unfindable within a few
weeks rather than unavailable. That is a real loss and it is a different loss.
The id space is not a published interface, OGRA has never undertaken to keep
it, and it can stop answering without notice.
What is kept here, and is kept nowhere else, is the record: each publication filed by the date it takes effect, with the digest it had when its figures were read, itemised, compared with the copy PSO republishes, and refused when it did not close.
- OGRA publishes the build-up.
- PSO notifies the pump price and keeps every notification it has issued since 2006.
Public record. No account and no key needed. Readers are counted without cookies, here and by the network that serves this site.
This document is in English only.