0104·Sales tax does not match the calculated amount

Tax calculationVery common

What this means

This is the standard-rate counterpart to the Third Schedule mismatch. FBR takes the excluding-tax sales value you submitted, applies the rate you submitted, and compares the result to the tax you submitted. Any discrepancy fails the line.

Why it happens

  • Discount was deducted from the sales value in your system but the tax was computed before the discount, or vice versa.
  • Tax was computed at full precision internally and then submitted rounded, while the sales value was submitted at a different precision.
  • Further tax or extra tax was folded into the sales tax figure. These are separate fields and must not be added into the sales tax amount.
  • The rate string and the rate actually used in your calculation differ — for example calculating at 18% while submitting a reduced-rate label.
  • Values were built from a display-formatted string rather than the stored amount, truncating precision on the way out.

How to fix it

  1. 1Recompute tax as sales value × rate using the exact figures you are about to submit, not the ones held internally.
  2. 2Round both the sales value and the tax to two decimal places before the multiplication check, so your arithmetic matches FBR's.
  3. 3Keep further tax, extra tax, and FED in their own fields — sales tax covers sales tax and FED in sales tax mode only.
  4. 4Decide once whether discount reduces the taxable base, and apply that consistently to both the value and the tax.

How Ordyoo handles this

All amounts are stored at four decimal places and rounded to two only at the API boundary, so the figures FBR receives are internally consistent. Display formatting never round-trips back into a submitted value — a lesson learned from an earlier payment-allocation bug.

Scenarios where this appears

Sandbox scenarios that commonly produce 0104.

Related errors

Stop debugging FBR payloads by hand

Ordyoo builds and submits compliant invoices so most of these rejections never reach you. Start free.

Start free