cash_rounding_mode field in every transaction response tells you which method was applied.
Rounding methods
swedish_rounding
Rounds the transaction total to the nearest 5 cents using the Swedish rounding algorithm:
| Cents ending | Direction | Result |
|---|---|---|
| 0 | No change | Stays at 0 |
| 1, 2 | Round down | → 0 |
| 3, 4 | Round up | → 5 |
| 5 | No change | Stays at 5 |
| 6, 7 | Round down | → 5 |
| 8, 9 | Round up | → 10 |
symmetrical_rounding
Rounds 0–2 cents down, 3–7 cents to the nearest nickel, and 8–9 cents up. This method is designed to be revenue-neutral over a high volume of transactions.
Used in: Tennessee HB 1744 (voluntary safe harbor), Washington SHB 2334 (permissive)
mandatory_round_down
Always rounds the transaction total down to the nearest 5 cents, regardless of the trailing digit. This method always favors the customer.
mandatory_round_up
Always rounds the transaction total up to the nearest 5 cents, regardless of the trailing digit. This method always favors the merchant.
nearest_nickel
Rounds to the nearest nickel using standard rounding rules (round half up). This is a general-purpose method available for jurisdictions that specify nickel-based rounding without prescribing a directional rule.
none
No rounding is applied. The ledger total is passed through unchanged as the cash total.
Applied when: payment method is card, ebt, or mobile; or when the transaction is in a state with no enacted legislation.
Indiana operator choice
Indiana SB 243 is permissive: it gives the operator a choice of three approved rounding methods rather than mandating a single one. When the engine resolves a transaction to an Indiana jurisdiction, it applies the method your platform has configured for that merchant. Contact Centsless support to configure the method for your Indiana merchants.The cash_rounding_mode enum
The full set of values accepted by the API:
cash_rounding_mode explicitly in a transaction request to override jurisdiction resolution — for example, during integration testing. In production, omit the field and let the engine resolve it.
Card and EBT transactions always use
cash_rounding_mode: none regardless of jurisdiction. This is enforced by the engine and cannot be overridden.