Menu
Feedback
Start here
Tutorials
Developer portal

Known Issues
Support Rules
Troubleshooting

Frequently Asked Questions
Announcements
Known issues
Promotions microrounding divergence
Promotions microrounding divergence
ID: 957369
Backlog
Published on 12/22/2023
Last update on 12/22/2023

Summary

The promotions module rounds discounts in up to 3 significative digits, which can, in very specific scenarios, amount to slight divergences in the final price of a cart.

For instance, let's say we have the following, example scenario:

Item 1 - $10 Item 2 - $20 Item 3 - $32


Total - $62

And 2 promotions applying in all of them:

Promotion A - $15 OFF Promotion B - 10% OFF.

Usually, the discount to be calculated is sequential, with the nominal value off coming first:

$62 - $15 = $47 Then $47 * 0.9 = $42.3

However, the discounts are distributed, even for the nominal discount, proportionally in the cart, so what really happens is:

item 1: Original value = $10 Nominal discount (15 * 10/62 of the cart) = -$2.41935484 Percentual expected discount (12.5806452 * 0.9) = -$1.25806452 Percentual real discount = -$1.258

item 2: Original value = $20 Nominal discount (15 * 20/62 of the cart) = -$4.83870968 Percentual expected discount (15.1612903 * 0.9) = -$1.51612903 Percentual real discount = -$1.516

item 3: Original value = $32 Nominal discount (15 * 32/62 of the cart) = -$7.74193548 Percentual expected discount (24.2580645 * 0.9) = -$2.42580645 Percentual real discount = -$2.426

🔎 total diference: 0.00006452 + 0.000012903 + 0.000019355 = 0.0000270973

We can see, above, that a "micro" difference was created.

If, several items were added, with distinct prices, to this example cart, this difference could amount to 1 cent (0.01) or more.

Simulation

There are a multitude of ways to eventually recreate the case Fortunately, all of them are extremely specific.

Given that, it's hard to replicate the issue, but, mostly, it's necesary to create a cart with several (~10+) different items and all of them with 2+ promotions, ideally, one of them being a nominal discount and the other one, a percentual discount.

Workaround

n/a

Contributors
2
Photo of the contributor
Photo of the contributor
+ 2 contributors
Contributors
2
Photo of the contributor
Photo of the contributor
+ 2 contributors
On this page
Still got questions?
Ask the community
Find solutions and share ideas in the VTEX community.
Join our community
Request support from VTEX
For personalized assistance, contact our experts.
Open a support ticket
GithubDeveloper portalCommunityFeedback