Skip to main content
Each enacted state mandates a specific rounding method, and in some cases gives the operator a choice between approved methods. Centsless applies the correct method automatically based on jurisdiction resolution — you do not select a method at integration time. The 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 endingDirectionResult
0No changeStays at 0
1, 2Round down→ 0
3, 4Round up→ 5
5No changeStays at 5
6, 7Round down→ 5
8, 9Round up→ 10
Mandated by: Arizona HB 2938 (mandatory for all retail cash transactions)

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:
swedish_rounding
mandatory_round_down
mandatory_round_up
symmetrical_rounding
nearest_nickel
none
You can pass 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.