{"section":"known-issues","requestedLocale":"en","requestedSlug":"roundingmode-changes-do-not-work-for-percentual-discounts","locale":"en","slug":"roundingmode-changes-do-not-work-for-percentual-discounts","path":"docs/en/known-issues/Pricing & Promotions/roundingmode-changes-do-not-work-for-percentual-discounts.md","branch":"main","content":"## Summary\n\nCurrently, when a user wants to control how a promotion rounds discounts, VTEX offers four rounding modes:\n\n- `none` → default rounding\n- `ceiling` → rounds discounts up (e.g., 14.56 → 14.6)\n- `floor` → rounds discounts down (e.g., 14.56 → 14.5)\n- `precise` → skips rounding of intermediate values and rounds only the final result\n\nFor **percentage discounts**, `ceiling` and `floor` do not work as expected. Both produce the same result as `none`. `precise` is not affected and works correctly for both **nominal and percentage discounts**.\n\nThis behavior is related to the calculation flow:\n\n- `none`, `ceiling`, and `floor` round the unit discount first and then multiply it by the quantity. The `ceiling` and `floor` rounding logic is only triggered for nominal discounts. For percentage discounts, it is not triggered, so the calculation falls back to the default `none` behavior.\n- `precise` multiplies the full, unrounded value first and rounds only the final result. This calculation path is independent of the discount type, so it works correctly for both nominal and percentage discounts.\n\n\nTherefore, the issue is **limited to** `ceiling` **and** `floor` **when used with percentage discounts**. `precise` is not affected.\n\n## Simulation\n\nA rounding mode change must first be requested from the VTEX Support team. After the rounding mode is changed, create a promotion with a percentage discount and test the following all modes behavior. `none`, `ceiling`, and `floor` will produce the same result, while `precise` will produce a different result according to its own calculation logic. For comparison, the same test can be performed with a nominal discount, where `ceiling` and `floor` will apply the expected rounding.\n\n## Workaround\n\nN/A"}