eklitrePrice alerts

The day OGRA restructured the diesel build-up

On 20 August 2026 OGRA replaced the price build-up for high-speed diesel and left petrol’s alone. What changed, which published figures moved, what became visible for the first time, and how this archive caught it on the day rather than publishing a diesel pump price of five rupees.

Published 22 August 2026.

In this note
  1. What changedTwenty rows became twenty-three, and three things changed in substance rather than in wording.
  2. The two letter schemes, side by sideBoth diesel pages as published, row for row, on the two consecutive days.
  3. What became newly visible: the crack spreadThe refining margin in a Pakistani diesel litre, readable off a published document for the first time.
  4. What disappeared: the domestic refinery blend tableAn absence treated as an absence, and why the residual is called rounding rather than a blend.
  5. How the change was caughtWhich guards fired, what the misreading would have published, and the three properties of the pipeline that made the difference.
  6. The archived documentsBoth publications, with their OGRA ids, their paths and their digests.
  7. Earlier variationsEvery other change in how these documents are written, each one recorded because it broke a parser or would have.

On the publication effective 20 August 2026 OGRA replaced the price build-up for high-speed diesel and left petrol's alone. Every letter from D onward changed meaning overnight; a cost that had never been published in Pakistan appeared as a row of its own; and this archive's parser refused the day rather than publish what it would otherwise have read off it, which was a diesel pump price of five rupees a litre.

What follows is what changed, which published figures moved as a result, and which archived documents each claim can be checked against. Every figure is read from one of the archived OGRA documents, listed in the OGRA manifest, and every one of those documents has its SHA-256 digest recorded here, so any claim on this page can be verified against the bytes it came from. The last section records every other change OGRA has made to the shape of its publication since this archive began on 21 July 2026.

20 August 2026 — the diesel build-up was restructured

On the publication effective 20 August 2026, 00:00 hours, OGRA replaced the high-speed diesel price build-up. The petrol build-up in the same document was not changed at all.

The old diesel build-up had twenty rows, lettered A to T. The new one has twenty-three, lettered A to W. Every letter from D onward now names a different quantity than it named the day before: on 19 August, K was the customs duty and T was the pump price; on 20 August, K is the cost at Karachi port, M is the customs duty, and the pump price is W.

Three things changed in substance, and one in presentation.

  1. Diesel is no longer priced off a quotation for diesel. Row A was “Diesel Platts Arab Gulf Mean Average” — a seven-working-day rolling average of the Platts quotation for finished gas oil. It is now “Dubai Crude Oil Platts Arab Gulf Mean Average”, a rolling average of the quotation for Dubai crude.
  2. The refining margin is published. Because A is now crude, the cost of turning crude into diesel has to be added explicitly, and it is: row D, “HSD Crack”, described on the page as “Difference of international price of HSD and crude”. On 20 August it is 41.89 US dollars a barrel.
  3. Freight and insurance is its own row. Row B was “Premium including Freight”. It is now “Aramco Crude Oil Premium” — the premium alone, and negative on this day — with freight and insurance stated separately as row C.
  4. A subtotal was added. The old build-up went straight from the price before levies to the total. The new one states a price before sales tax (row U) in between.

The petrol build-up is untouched: still A to T, still priced off the Platts quotation for petrol (gasoline 92 RON), still with the premium and the freight bundled into one row. So from 20 August 2026 the two pages of a single OGRA publication are laid out differently from one another.

The two letter schemes, side by side

The left half is the diesel page of 19 August 2026; the right half is the diesel page of 20 August 2026. Values are as published.

OldOld label19 AugNewNew label20 Aug
ADiesel Platts Arab Gulf Mean Average (USD/bbl)152.80ADubai Crude Oil Platts Arab Gulf Mean Average (USD/bbl)89.46
BPremium including Freight (USD/bbl)5.10BAramco Crude Oil Premium (USD/bbl)−1.00
———CFreight and Insurance (USD/bbl)8.00
———DHSD Crack (USD/bbl)41.89
CCost & Freight = {A+B} (USD/bbl)157.90ECost & Freight = {A+B+C+D} (USD/bbl)138.35
DSBP Avg Exchange Rate (Rs/USD)277.80FSBP Avg Exchange Rate (Rs/USD)277.79
EConversion Factor (ltr/bbl)158.98GConversion Factor (ltr/bbl)158.98
FCost & Freight in Pak Rs. = {C*D/E}275.91HCost & Freight in Pak Rs. = {E*F/G}241.73
GIncidentals0.20IIncidentals0.20
HOcean Loss/(Gain)0.39JOcean Loss/(Gain)0.00
IDiesel Cost at Karachi Port = {F+G+H}276.50KDiesel Cost at Karachi Port = {H+I+J}241.93
JExchange Rate Adjustment0.00LExchange Rate Adjustment0.00
KCustoms Duty15.68MCustoms Duty15.68
LEx-Refinery/Import Price = {I+J+K}291.96NEx-Refinery/Import Price = {K+L+M}257.61
MIFEM3.94OIFEM3.94
NOMC’s Margin7.87POMC’s Margin7.87
ODealer’s Margin8.64QDealer’s Margin8.64
PPrice before PL, CSL & ST = {L+M+N+O}312.41RPrice before PL, CSL & ST = {N+O+P+Q}278.06
QPetroleum Levy (PL)78.28SPetroleum Levy (PL)80.00
RClimate Support Levy (CSL)5.00TClimate Support Levy (CSL)5.00
———UPrice before Sales Tax = [R+S+T]363.06
SSales Tax (ST)0.00VSales Tax (ST)0.00
TTotal Diesel Price (excl. Secondary Freight) = {P+Q+R+S}395.69WTotal Diesel Price (excl. Secondary Freight) = {U+V}363.06

All figures are rupees per litre except where a unit is given. Row U is written with square brackets, U=[R+S+T], where every other formula on the same page is written with braces. That is OGRA’s own inconsistency and not a transcription error; the same thing happened to row F in every issue from 21 July to 1 August 2026, and this archive’s parser has treated the two bracket styles as interchangeable since.

Which concept moved where

ConceptOld letterNew letter
International quotation, per barrelA (finished diesel)A (Dubai crude)
Supplier premiumB (premium including freight)B (Aramco crude premium)
Freight and insuranceinside BC
Refining margin (crack spread)inside AD
Cost and freight, US dollarsCE
Exchange rateDF
Conversion factorEG
Cost and freight, rupees per litreFH
IncidentalsGI
Ocean loss or gainHJ
Cost at Karachi portIK
Exchange rate adjustmentJL
Customs dutyKM
Ex-refinery / import priceLN
IFEMMO
OMC marginNP
Dealer marginOQ
Price before leviesPR
Petroleum LevyQS
Climate Support LevyRT
Price before sales taxnot publishedU
Sales taxSV
Total, excluding secondary freightTW

Ten of the twenty-three rows are unchanged in substance and changed in letter. Two rows are genuinely new as published quantities — the freight and insurance, and the crack spread — and one, the price before sales tax, is a subtotal of rows that already existed.

What became newly visible: the crack spread

Under the old build-up, diesel was priced from a Platts quotation for finished diesel. The cost of refining crude into diesel was inside that quotation, so it appeared nowhere on the page and could not be separated from the cost of the crude itself. On the page as published, the refining margin did not exist.

Under the new build-up it is row D, a published figure. On 20 August 2026 it is 41.89 US dollars a barrel, which at the same page’s exchange rate of 277.79 and conversion factor of 158.98 is 73.20 rupees a litre, or 20.2 per cent of the pump price. That is the first day on which the refining margin in a Pakistani diesel litre can be read off a published document rather than inferred.

The consequence for this archive’s own presentation is that the crude oil line means something different on either side of the change, and the two are not comparable as a series:

Diesel, per litre19 August 202620 August 2026
Crude oil line267.00 (67.5%) — a quotation for finished diesel156.32 (43.1%) — a quotation for Dubai crude
Crude premium—−1.75
Freight and insurance—13.98
Crack spreadnot published73.20 (20.2%)
Premium including freight8.91—
Incidentals0.200.20
Ocean loss or gain0.390.00
Exchange rate adjustment0.000.00
Customs duty15.6815.68
Domestic refinery blend−0.22not published
Published rounding—−0.01
IFEM3.943.94
OMC margin7.877.87
Dealer margin8.648.64
Petroleum Levy78.2880.00
Climate Support Levy5.005.00
Sales tax0.000.00
Total395.69363.06

Grouped into the four buckets this project draws:

BucketDiesel, 19 AugustDiesel, 20 August
Crude oil267.00156.32
Refining and freight9.2885.61
Distribution and dealers20.4520.45
Government levies98.96100.68

The customs duty of 15.68 is inside the levies on both days. It used to be inside the refining bucket, on the argument that OGRA’s own table charges it before the ex-refinery price; that read the buckets as an index of OGRA’s layout, and they are not — they answer where the money goes, and a duty is a tax whichever row it is printed in. The change moves 15.68 between two buckets on every day in the record and moves no published figure at all.

Nothing about how a litre of diesel is made changed overnight. What changed is where the published document draws the line between the cost of the crude and the cost of turning it into diesel. The crude bucket falling by 110.68 and the refining bucket rising by 76.33 is a change of accounting, not of supply — and it is exactly the sort of thing a reader of a chart would misread as a market event if the change were not written down.

What disappeared: the domestic refinery blend table

Diesel pages from 12 to 19 August 2026 carried a small unlettered table below the main build-up, reconciling imported diesel against domestic refinery output. On 19 August it read:

Row19 August 2026
HSD (Ex-Refinery Price)291.79484
HSD (Import Price)292.18210
Weighted Average Price291.96
Extra Margin0.16516

That table explained why the lettered chain reached 292.18 while the notified ex-refinery/import price was 291.96: the notified figure was the weighted average of imported and domestically refined product, and the 0.22 gap was the saving from the domestic share.

The 20 August diesel page carries no such table. This archive treats its absence as an absence rather than a fault, for the same reason it did before 12 August: no diesel page carried one until 12 August, and the table was optional from the day it first appeared — the 12 August issue published three of its four rows, omitting the extra margin. Where no blend table is published, the small residual between the lettered chain and the notified ex-refinery/import price is the accumulated rounding of OGRA’s own published figures. On 20 August that residual is one paisa, and this archive labels it published rounding rather than a refinery blend, because calling it a blend would be a confident statement about how diesel is priced that the document does not support.

The notified prices either side

Stated as published, without any claim about why they moved.

Product19 August 202620 August 2026Change
Petrol334.54337.51+2.97
High-speed diesel395.69363.06−32.63

Two published inputs to diesel also moved between the two documents: the Petroleum Levy from 78.28 to 80.00 rupees a litre, and the SBP average exchange rate from 277.80 to 277.79 rupees to the dollar. The customs duty, IFEM, OMC margin, dealer margin, Climate Support Levy and sales tax are identical on both days. This archive does not attribute the change in the pump price to the restructure, to the levy, or to anything else; it records that the build-up changed shape and the notified price changed on the same day.

One further wording change is worth recording because it concerns provenance rather than arithmetic. The old row B was explained on the page as “Freight and margin based on G-to-G agreement with Kuwait Petroleum Corporation”. The new row B is explained as “Aramco’s crude oil premium for Arab Extra Light for Asia notified on monthly basis”, and the new row C as “Federal Government approved Freight & Insurance cost for crude vessel imports from Gulf Region”.

How the change was caught

This archive noticed the restructure automatically, on the day it happened, without anybody reading the document first.

The 20 August publication was discovered and downloaded at 19:08 UTC on 19 August 2026 — a few minutes past midnight in Pakistan, which is when the price takes effect. The parser read the diesel page under the only build-up it knew, so it took the twenty rows A to T at face value and left the three rows after them unread; from D onward, every value it collected sat under a letter that no longer meant what the parser assumed. The arithmetic guards then failed, because a build-up read under the wrong scheme does not close. Two checks are fatal, and both fired:

  • diesel: P is 7.87 but L + M + N + O is 277.23; difference 269.36
  • diesel: T is 5.00 but P + Q + R + S is 374.57; difference 369.57

Three non-fatal checks recorded the same disagreement further up the chain: C against A + B was out by 80.46, F against C × D ÷ E by 275.37, and I against F + G + H by 678.30.

Because a fatal check fired, the day was marked unverified and withheld from the site rather than published. The misreading it would otherwise have published was a diesel pump price of 5.00 rupees a litre — the figure sitting in the row the old scheme called T, which the new scheme uses for the Climate Support Levy.

Three properties of the pipeline are what made this a caught error rather than a published one. Every letter A to T had to be present or the day stopped, so the parse could not silently drop the rows it did not understand. The two identities that carry the price to the pump had to close, so a build-up read out of order could not pass. And a day that fails a fatal check is written to disk in full, withheld from the site, and named in the published record as withheld with its reasons — so the failure was diagnosable from the record without going back to the source, and a reader of the site could tell a day nobody published from a day this project would not publish.

Petrol passed every check on the same document, which is itself evidence: the failure was specific to the page that changed.

How the parser now tells the two apart

The scheme a page uses is decided from what is printed on the page, never from its date. OGRA reissues documents, and a date cutoff would misread the reissue of an older publication on the day it appeared.

What identifies a page is the set of formulae OGRA prints beside the rows it computes. The old build-up prints six of them — C={A+B}, F={CD/E}, I={F+G+H}, L={I+J+K}, P={L+M+N+O} and T={P+Q+R+S}. The new one prints seven — E={A+B+C+D}, H={EF/G}, K={H+I+J}, N={K+L+M}, R={N+O+P+Q}, U=[R+S+T] and W={U+V}. A page is read under the one scheme whose whole set it carries. The sets describe arithmetic rather than wording, they are written by OGRA rather than inferred by this project, they cannot both be satisfied at once, and the bracket style is discarded before they are compared. A page carrying neither set is refused and the day is withheld, which is the correct outcome for a third restructure: it should stop the pipeline, not be read as the nearest thing this project already knows.

Each page of a document is identified separately, which is what allows petrol and diesel to be read under different schemes from the same file.

The archived documents

Both documents are served from this site and can be checked against these digests.

Effective dateOGRA documentArchived atSHA-256
19 August 202615402`data/source/ogra/2026-08-19.pdf`b8cb6831bb8344a4be031e43315f57b682ffeb2a749fb18b0ce015567a8a673b
20 August 202615453`data/source/ogra/2026-08-20.pdf`490b234769de58c2fdd2e9ec008d0fdedea1309e0dfa550050bacb1256d14b3b

The 19 August document was downloaded at 13:52:33 UTC on 19 August 2026 from https://www.ogra.org.pk/download/15402?lang=en; the 20 August document at 19:08:06 UTC on 19 August 2026 from https://www.ogra.org.pk/download/15453?lang=en. OGRA rewrites its listing page each time it publishes, so a publication drops out of view within a few weeks; the document itself goes on being served under an id nothing links to. These archived copies are what keeps them findable, and fixed — see What OGRA serves, which maps OGRA’s whole document id space and corrects what this project used to say about it. The text extracted from both is kept verbatim as well, so the reader that produced the figures above is pinned against the exact bytes described here and cannot quietly drift from them.

What this changed in the published data

Day records and the history now name the scheme each product page was read under, beside the letters, because the letters mean nothing without it. Records written before 20 August 2026 name no scheme and are read as the old one, which is the only scheme that existed when they were written.

The itemisation gained three line keys, all on the new diesel build-up: crude_premium, freight_and_insurance and crack_spread. The old build-up’s premium_and_freight line is not reused for the new premium, because the new premium does not include the freight and saying it did would be wrong. A page in the new scheme therefore itemises to fifteen lines where a page in the old one itemises to thirteen. Both still sum exactly to the published pump price, and both still group into the same four buckets.

The flat export at data/daily.csv gained three columns for those keys, at the end, so the existing columns did not move. A product that does not publish a given line leaves its column empty rather than writing a zero: an empty cell means the document states no such figure, and a zero means it states one, as petrol’s sales tax does.

Earlier variations

These are changes in how the publications are written rather than in what they publish. They are recorded because each one broke, or would have broken, a parser that assumed the documents were uniform.

FromChange
Before 21 July 2026There is no build-up. OGRA’s price publication family runs weekly back through the spring of 2026, but those documents are one-page price-change notices — the old price, the new price and the difference, for diesel and petrol — with nothing about what is inside either. Established by sweeping OGRA’s document id space and reading every member of the family; see What OGRA serves.
21 July 2026The archive begins, and so does the build-up: this is the first document in the family that carries the lettered rows. Both products use the A-to-T build-up. OGRA serves this day’s document under two ids, 14557 and 14672, and the bytes are identical.
21 July – 1 August 2026Row F’s formula is written in square brackets, F=[C*D/E], where the other five formulae on the same page use braces. From 4 August it is written in braces like the rest. A parser that blanked only braces read no F at all and treated ten of the first twenty publications as missing a mandatory row.
12 August 2026The diesel page begins carrying the domestic refinery blend table. This first issue published three of its four rows, omitting the extra margin; every issue from 13 to 19 August carried all four.
20 August 2026The diesel build-up is restructured, as above. The blend table is not carried.

Throughout, the filenames OGRA serves these documents under have appeared in four different spellings, and one title carries a stray comma. Nothing in this project is keyed on a filename, a title or a row label for that reason.

Read next

  • The state’s share of a litreAbout Rs 106 of a Rs 349 litre of petrol — near a third — is the state: petroleum levy, climate support levy, customs duty and sales tax, on petrol and diesel alike. Each line itemised from OGRA’s build-up, and how the 2026 IMF measures built it.
  • The plan to stop setting the petrol pricePakistan set a tentative June 2027 target to deregulate petrol prices and let oil companies set the pump rate, with diesel to follow — what it would change for OGRA’s build-up.
  • The price here, and the price at the pumpOGRA’s notified price is the legal maximum, the dealer’s margin already inside the build-up, so a pump charging more than the petrol or diesel figure here is overcharging.

Know the new price before you reach the pump

OGRA notifies late at night. We post each new price as soon as we read it.