Simple discount rounding errors persist

I found a closed thread from January 2024 about discount rounding errors in Square for Retail. The problem is a beginner's programming error that should have been fixed in version 1 of the software, but it remains a problem today. Here's what it looks like.

 

Suppose I have a $3.25 item with a 15% discount. 3.25 * .85 = 2.7625 which rounds to $2.76. With 1 instance of the item in the cart, all is good:

 

IMG_5039.PNG

 
If I add another, still good. 2 x 2.76 = 5.52:
 

dummy.png

 
If I add a third, the problem manifests. 3 x 2.76 = 8.28, but the software was not rounding/truncating properly, so we instead get 3 x 2.7625 = 8.29:
 

IMG_5041.PNG

 
You should easily be able to duplicate it with any item with a discount that yields a fractional penny. The size of the fraction will determine how many item units you’ll need to add to to manifest the error.
 
As I said, this is a beginner's programming error.
 
Hello, Square QA?
1,905 Views
Message 1 of 11
Report
1 Solution
Square Champion

Solution

First, everyone needs to get on the same page here and compare apples to apples.  It helps to keep in mind that Square applies item-level discounts to the TOTAL QUANTITY of each item purchased.  It does NOT apply it to each of any duplicated item individually, but rather in total. 

 

If three of the same item are purchased, the discount is applied to the total of all three.

If one each of different items priced at $3.25 are purchased, the discount is applied to EACH of the items individually.

 

The difference between those two is what you are calling a rounding error, but is in reality just a difference in applying the discounts.  But it is not a rounding error at all.  Here's a screen shot of a spreadsheet I made showing both.

 

This is why it is never a good idea to advertise percentage discounts in exact dollar terms -- depending on the items and item mix purchased, this sort of thing happens all the time.  It's basic math.  It can be easily solved by just advertising the sale as 15% and then no one can complain because they will always get 15%.

 

Image 9-3-25 at 3.50 PM.jpeg

Chip A.
Square Expert & Innovator and member of the Square Champions group. (But NOT a Square employee, just a seller like you)

Was my post helpful? Take a moment to mark it as a solution. Marked solutions help other sellers find possible resolutions to similar problems. Also, if you find your solution elsewhere (say, through Support), it is helpful to come back to your post and tell us about it, then mark that as a Solution. Solutions are what this Community is all about!

View Solution >

1,645 Views
Message 7 of 11
Report
10 REPLIES 10
Square Champion

@4CFC 9.75 × 0.85 = 8.287500 → 8.29

This isn’t a rounding error — it’s just a different way of applying a discount. Square Retail calculates certain percentage discounts at the cart/subtotal level, not on each individual item line.

In the example:

  • 3 items × $3.25 = $9.75 subtotal

  • Apply 15% off once to that subtotal → $8.2875

  • Rounded to the nearest cent → $8.29

If you instead apply the discount to each item, round it, then multiply, you’d get $8.28. That’s a one-penny difference, in this case, in the business owner’s favor.

 

Why it’s done this way:

  • This approach ensures the total discount amount is exact to the percentage applied on the subtotal.

  • It also avoids compounding rounding on large orders.

  • Many retail POS systems do the same for cart-level percentage discounts.

Best practice?
It depends on the discount type and your market:

  • If the discount is advertised as “X% off your order,” subtotal-level calculation is the norm.

  • If it’s “X% off each item,” then line-level rounding is expected in some jurisdictions.

From a business perspective, this method generally results in keeping a few extra pennies over time, but it’s not a bug. It’s just how Square applies subtotal discounts, and it’s consistent with how many POS systems handle percentage-off-the-total promotions.

 

I think the biggest thing here is precision, if you round at each item, that mathematical imprecision is compounded as you get closer to the end.

 

 

Donnie
Multi-Unit Manager
Order Up Cafe/Tombras Cafe/Riverview Cafe/City County Cafe
Roddy Vending Company, Inc.
www.OrderUpCafe.com

Using Square since July, 2017
Square Champion
Breaker of Things

"Good judgment comes from experience, and experience comes from bad judgment."

"You can have everything in life you want, if you will just help other people get what they want." Z.Z.
Do you want to have great restaurant menus that are easy to edit and don't cost a fortune? I use MustHaveMenus and you can too!
MustHaveMenus
1,886 Views
Message 2 of 11
Report

Another undesirable side effect of Square's approach is that 2 different customers can see different discounted prices for the exact same item. That's actually how I discovered this problem. I had 5 different items in the cart, each with a discount. The cream cheese should have been $2.76 but was listed at $2.77. The example I posted was just easier to explain.

Are the total discounted prices per item properly truncated to 2 decimal places when placed in the cart? (I assume Square must be calculating discounts per item since different items might have different discounts.) If not, is it possible that the total price will not exactly equal the sum of the line prices?

1,881 Views
Message 3 of 11
Report

So when we advertise the discounted price, we should say something like "now only $2.76 or so depending on how many and what else you buy". Got it!

1,885 Views
Message 4 of 11
Report

I've noticed a rounding error too. It showed up when I was using Excel to work up some stats of my own and discovered that Square values for some taxes (and some Square Fees?) weren't the same as what Excel computed.

We normally only sell individual items so the previous conversation doesn't apply. HOWEVER if the item price is such that the sales taxes results in a 1/2 cent ($X.xx5) Square rounds it DOWN, where standard math says that a .5 of something is to be rounded UP.

Example 1: Item of $45.00 has a Colorado State Sales tax of 2.6% which computes to $1.305 which should round UP to $1.31. But Square rounds it DOWN to $1.30.

Example 2: That same item of $45.00 has a Town Sales Tax of 4.5% which computes to $2.025 which should round UP to $2.03, but Square rounds down to $2.02.

This leads to a problem when we have to actually pay our sales taxes and the amount is a higher that what Square charged the customer. For us, that's only a few pennies here and a few pennies there, but it adds up!

I know, this isn't a big deal, especially for a business as small as ours, but it's not right!

What gives?

1,670 Views
Message 5 of 11
Report

My bad - Colorado State Sales Tax is 2.9% (not 2.6% as previously stated). Sorry 'bout that.

The result of the calculation was using the correct 2.9%. The main theme of the report is the same.

1,653 Views
Message 6 of 11
Report
Square Champion

Solution

First, everyone needs to get on the same page here and compare apples to apples.  It helps to keep in mind that Square applies item-level discounts to the TOTAL QUANTITY of each item purchased.  It does NOT apply it to each of any duplicated item individually, but rather in total. 

 

If three of the same item are purchased, the discount is applied to the total of all three.

If one each of different items priced at $3.25 are purchased, the discount is applied to EACH of the items individually.

 

The difference between those two is what you are calling a rounding error, but is in reality just a difference in applying the discounts.  But it is not a rounding error at all.  Here's a screen shot of a spreadsheet I made showing both.

 

This is why it is never a good idea to advertise percentage discounts in exact dollar terms -- depending on the items and item mix purchased, this sort of thing happens all the time.  It's basic math.  It can be easily solved by just advertising the sale as 15% and then no one can complain because they will always get 15%.

 

Image 9-3-25 at 3.50 PM.jpeg

Chip A.
Square Expert & Innovator and member of the Square Champions group. (But NOT a Square employee, just a seller like you)

Was my post helpful? Take a moment to mark it as a solution. Marked solutions help other sellers find possible resolutions to similar problems. Also, if you find your solution elsewhere (say, through Support), it is helpful to come back to your post and tell us about it, then mark that as a Solution. Solutions are what this Community is all about!
1,646 Views
Message 7 of 11
Report

Thanks for the explanations of how Square is applying item discounts.

As I mentioned earlier in this thread (with no response), one side effect is that different receipts will show different discounted prices for the same item depending on the quantity of that item or any other items with the same discount.

We'll hope that none of our customers are paying that close attention nor comparing receipts with other customers. Otherwise, we'll have to teach our cashiers how to explain the algorithm.

1,567 Views
Message 8 of 11
Report

Do you happen to know where to find the settings to have square NOT distribute the discount across all the items in a transaction/on the same receipt?

1,130 Views
Message 9 of 11
Report
Square Champion

@NPohinaThere is no such setting.  But a little explanation might help you decide the your best practices for adding discounts to carts.  

 

There are two methods of adding discounts to a transaction -- at the item level and at the transaction level.  If a discount is added to a specific item (as it is added to the cart), then Square receipts ONLY show it as discount that item.  However, if a ticket-level discount is added (using the transaction level discount function), then it shows how that transaction discount applied to each item.  It actually makes sense when you think about it that way.

 

Lastly, this is a different topic than the original topic of this thread.  In order not to confuse people in the future, when you have a new question, don't hijack an existing thread but instead please start a different thread that you own.  You can do that by clicking Help > (select the appropriate help board) > Start a Topic.

Chip A.
Square Expert & Innovator and member of the Square Champions group. (But NOT a Square employee, just a seller like you)

Was my post helpful? Take a moment to mark it as a solution. Marked solutions help other sellers find possible resolutions to similar problems. Also, if you find your solution elsewhere (say, through Support), it is helpful to come back to your post and tell us about it, then mark that as a Solution. Solutions are what this Community is all about!
1,109 Views
Message 10 of 11
Report
Square Champion

@NPohina Also, to clarify what I said..... IF you want a discount to apply ONLY to an item then when you add the item to the cart you must specify the discount to be applied for that item.  But IF you add a discount to the transaction, instead, it automatically is spread out among all eligible items in that transaction.

Chip A.
Square Expert & Innovator and member of the Square Champions group. (But NOT a Square employee, just a seller like you)

Was my post helpful? Take a moment to mark it as a solution. Marked solutions help other sellers find possible resolutions to similar problems. Also, if you find your solution elsewhere (say, through Support), it is helpful to come back to your post and tell us about it, then mark that as a Solution. Solutions are what this Community is all about!
1,107 Views
Message 11 of 11
Report