---
schema_version: "1"
id: 8f6314134c6ca23db5bcd4349f6728d4c954612d78e58bb851aa30ae480eb38d
title: Currency Rounding in the POS app
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/commerce/264-0-0/rt_pos_checkout_cash_rounding_in_retail_pos.md
canonical_url: https://help.salesforce.com/s/articleView?id=commerce.rt_pos_checkout_cash_rounding_in_retail_pos.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 6625c43f8f28a655080437b8f997d9e3e81d12cb60f5e77645ecda4ec5c71b6a
description: Currency rounding is the practice of rounding order totals to some monetary increment. Currency rounding is common in countries where rounding is legally required (like Canada, Australia, South Korea), and in other countries where smaller coins are phased out. Salesforce POS supports multiple rounding scenarios, including calculation-driven, cash, currency specific, and currency conversions. This support ensures smoother cash handling and accurate change, enhancing customer shopping experiences and precise transactions for accurate sales reporting. Configure cash rounding in CMS and review rounding behavior for sales, returns, and exchanges.
products:
  - Commerce
release: "264"
---
# Currency Rounding in the POS app

Currency rounding is the practice of rounding order totals to some monetary increment. Currency rounding is common in countries where rounding is legally required (like Canada, Australia, South Korea), and in other countries where smaller coins are phased out. Salesforce POS supports multiple rounding scenarios, including calculation-driven, cash, currency specific, and currency conversions. This support ensures smoother cash handling and accurate change, enhancing customer shopping experiences and precise transactions for accurate sales reporting. Configure cash rounding in CMS and review rounding behavior for sales, returns, and exchanges.

## Prerequisites

- Modern POS app build: 5.11.3 or above
- Platform Support: iPhone
- Offline Support: Yes
- Technical Prerequisites: No

Salesforce POS supports these currency rounding types:

- **Calculation-driven rounding:** Rounds values during cart calculations to match the currency precision. Calculation-driven rounding uses the round-half-even method as the default rounding method. The round-half even-method rounds values that are exactly halfway between two integers to the nearest even integer. For example, 2.5 rounds to 2 and 3.5 rounds to 4. Values that aren't exactly halfway between two integers are rounded to the nearest whole integer. Calculation-driven rounding supports these scenarios:
    
    - Tax engine rounding
    - Pricing, discounts, and promotions
    - Exchanges and returns
- **Cash rounding (tender-based rounding):** Rounds the amount collected or refunded in cash to the nearest required increment depending on the currency.
- **Currency specific (zero decimal) rounding:** Regardless of how the customer paid (cash, credit card, debit card) the final total rounds to the nearest whole integer. This rounding is common for zero decimal currencies like the Japan Yen or Korean Won.

To configure the number of decimal places supported by your currency and cash rounding, see [Configure Currency Rounding for POS](https://help.salesforce.com/s/articleView?id=commerce.rt_pos_checkout_cash_rounding_in_retail_pos.htm&language=en_US&type=5#rt_pos_checkout_cash_rounding_configure).

## Supported Regions for Cash Rounding

This table lists the countries where Salesforce POS applies mandatory cash rounding, along with the corresponding rounding factors.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
          <colgroup>
            <col style="width:33.33333333333333%">
            <col style="width:33.33333333333333%">
            <col style="width:33.33333333333333%">
          </colgroup>
          <thead class="slds-text-title_caps ">
            <tr class="">
              <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d231692e125">Supported regions</th>
              <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d231692e128">rounding factor</th>
              <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d231692e131">example</th>
            </tr>
          </thead>
          <tbody>
            <tr class="">
              <td data-label="Supported regions" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e125 ">Australia, Canada, Eurozone, Switzerland, United States</td>

              <td data-label="rounding factor" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e128 ">Nearest 5 in a two-decimal environment</td>

              <td data-label="example" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e131 ">
                <ul>
                  <li>
                    <p>20.01 =&gt; 20.00</p>
                  </li>

                  <li>
                    <p>20.03 =&gt; 20.05</p>
                  </li>

                  <li>
                    <p>20.07 =&gt; 20.05</p>
                  </li>

                  <li>
                    <p>20.08 =&gt; 20.10</p>
                  </li>

                </ul>
              </td>

            </tr>
            <tr class="">
              <td data-label="Supported regions" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e125 ">Sweden</td>

              <td data-label="rounding factor" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e128 ">Nearest whole in a two-decimal environment</td>

              <td data-label="example" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e131 ">
                <ul>
                  <li>
                    <p>20.12 =&gt; 20.00</p>
                  </li>

                  <li>
                    <p>20.66 =&gt; 21.00</p>
                  </li>

                </ul>
              </td>

            </tr>
            <tr class="">
              <td data-label="Supported regions" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e125 ">South Korea</td>

              <td data-label="rounding factor" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e128 ">Nearest 10 in a zero-decimal environment</td>

              <td data-label="example" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e131 ">
                <ul>
                  <li>
                    <p>11 =&gt; 10</p>
                  </li>

                  <li>
                    <p>14 =&gt; 10</p>
                  </li>

                  <li>
                    <p>15 =&gt; 20</p>
                  </li>

                  <li>
                    <p>18 =&gt; 20</p>
                  </li>

                </ul>
              </td>

            </tr>
            <tr class="">
              <td data-label="Supported regions" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e125 ">Hong Kong</td>

              <td data-label="rounding factor" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e128 ">Nearest 10 in a two-decimal environment</td>

              <td data-label="example" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e131 ">
                <ul>
                  <li>
                    <p>20.02 =&gt; 20.00</p>
                  </li>

                  <li>
                    <p>20.04 =&gt; 20.00</p>
                  </li>

                  <li>
                    <p>20.05 =&gt; 20.10</p>
                  </li>

                  <li>
                    <p>20.09 =&gt; 20.10</p>
                  </li>

                </ul>
              </td>

            </tr>
          </tbody>
        </table>

## Configure Currency Rounding for POS

Configure currency rounding in Salesforce POS to align transaction amounts with standard currency decimal places. In countries that require cash rounding, such as Canada, POS applies cash rounding even if you disable cash rounding.

1. Enable cash rounding.
    1. In CMS, go to **Store Management** | **Store Settings** | **Transaction**.
    2. Enable the flag, **Cash Rounding for Cash Related Transactions**.
    3. Save your changes.
2. Configure decimal places.
    
    This setting is required to configure the number of decimals supported by currency (for example, the US supports two decimals in $10.45, while KOR supports zero decimals in W345). The default value is two decimals.
    
    1. In CMS, go to **Store Management** | **Store Settings** | **System**.
    2. Configure decimal places at Number of Decimals Supported by Currency.
    3. Save your changes.

## POS Cash Rounding Behavior for Sales, Returns, and Exchanges

Salesforce POS automatically applies cash rounding during sales and returns when the payment or refund tender is cash in a currency that requires cash rounding. For all other currencies, you can optionally turn on cash rounding. For multitender sales, the associate rounds the cash portion to the nearest increment as required. With exchanges, the prerounding amount from the original sale carries over as a credit on the new sale.

### Sale and Return Transactions

During sales, POS applies the rounding automatically to cash payments. For multitender sales (for example, a sale where a customer pays with a credit card and cash), the associate rounds the cash portion to the nearest increment as required by the applicable rounding rule. The associate can view the cash-rounded amount in the POS when specifying the cash payment amount for a sale, whether the transaction is cash-only or multitender.

During return transactions, POS applies the rounding automatically if the refund tender is cash. Associates can issue return refunds to the original payment method or a configured alternate tender. See Returns Policy Configuration. To understand these types of returns and how cash rounding processes, consider these examples. When an associate selects the refund method for returns, the cash amount rounded in each option is displayed.

![Example](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-commerce-retail-264-0-0-production-enus/17d647fb-8988-49fb-9add-c4f4cc79c9e4/images/icon_example.png)

Example

Consider a multitender sale, where the order total is $40.03, consisting of $20.02 assigned to a credit card tender and $20.01 assigned to a cash tender. After rounding $20.01 to $20.00, the order total becomes $40.02 with $0.01 of cash rounded.

Now, consider a return for that same order. If refunding to the original payment methods, $20.02 is refunded to the credit card and $20.00 (rounded down from $20.01) is refunded to the customer in cash.

If returning entirely to cash (assuming your policy permits this type of return), then $40.05 (rounded up from the sale order total of $40.03) is refunded to the customer.

### Reporting

The [Electronic Journal](https://help.salesforce.com/s/articleView?id=commerce.rt_cms_reports_electronic_journal_overview.htm&language=en_US&type=5#rt_cms_reports_electronic_journal_overview) includes acolumn labeled “Penny Rounding” that shows the amount of cash rounded for a given transaction.

### Cash Rounding Behavior

Assume all references to rounding indicate that the amount is rounded to the nearest monetary increment per regional requirements. For example: round 50.94 up to 50.95and round 10.11 down to 10.10. In all exchanges, the prerounding amount from the original sale of items carries over as a credit on the new sale. The POS calculates the absolute difference between the prerounding amount and the new sale total.

This table shows cash rounding scenarios for sales transactions.

Sales   
| Payment type | credit card amount | cash amount |
| --- | --- | --- |
| Multitender | No rounding: charge entered amount | Rounded |
| Cash | None | Rounded |
| Credit card | No rounding: charge entered amount | None |

Returns   
| Original Payment type | return to | existing |
| --- | --- | --- |
| Cash | Cash | Rounded |
| Cash | Gift Card | Not rounded |
| Cash | Gift Card (unreferenced) | Not Rounded |

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small " summary="Exchanges">
            <caption>Exchanges</caption>
            <colgroup>
              <col style="width:33.33333333333333%">
              <col style="width:33.33333333333333%">
              <col style="width:33.33333333333333%">
            </colgroup>
            <thead class="slds-text-title_caps ">
              <tr class="">
                <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d231692e618">Scenario</th>
                <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d231692e621">Example</th>
                <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d231692e624">result</th>
              </tr>
            </thead>
            <tbody>
              <tr class="">
                <td data-label="Scenario" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e618 ">If the new purchase items cost less than the cost before rounding, the remaining is
                  returned to the customer (with cash-applicable rounding as described in the Returns
                  table).</td>

                <td data-label="Example" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e621 ">
                  <ul>
                    <li>Prerounding amount from original sale = $50</li>

                    <li>New sale total = $40</li>

                    <li>Absolute difference = |$50 - $40| = $10</li>

                  </ul>
                </td>

                <td data-label="result" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e624 ">Because the new purchase items cost less than the prerounding cost of the returned
                  items, the remainder ($10) is returned to the customer.</td>

              </tr>
              <tr class="">
                <td data-label="Scenario" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e618 ">If the new purchase items cost more than the prerounding cost of the returned items,
                  the remainder is collected from the customer (with cash-applicable rounding as described in
                  the Sales table).</td>

                <td data-label="Example" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e621 ">
                  <ul>
                    <li>Prerounding amount from original sale = $60</li>

                    <li>New sale total = $80</li>

                    <li>Absolute difference = |$60 - $80| = $20</li>

                  </ul>
                </td>

                <td data-label="result" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e624 ">Because the new purchase items cost more than the prerounding cost of the returned
                  items, the remainder ($20) is collected from the customer.</td>

              </tr>
              <tr class="">
                <td data-label="Scenario" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e618 ">If the new purchase items cost the same as the prerounding cost of the returned items,
                  then no payment is required.</td>

                <td data-label="Example" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e621 ">
                  <ul>
                    <li>Prerounding amount from original sale = $30</li>

                    <li>New sale total = $30</li>

                    <li>Absolute difference = |$30 - $30| = $0</li>

                  </ul>
                </td>

                <td data-label="result" class="slds-cell-wrap" style="vertical-align:top;" headers="d231692e624 ">Because the new purchase items cost the same as the prerounding cost of the returned
                  items, no payment is required.</td>

              </tr>
            </tbody>
          </table>