SambaPOS Rounding Features

Hello. In this tutorial I’ll show you some rounding features of SambaPOS. I’ll demonstrate different rounding methods here so you can choose that fits fine to your business needs.

##Method 1: Automatic Rounding to Nearest Value

Automatic rounding to nearest value means it can both increase or decrease ticket amount. So we’ll need two account transactions and ticket calculations here. By default SambaPOS has Discount and Rounding accounts. We’ll create two additional account transactions to differ them from manual discounts.

We’ll start by creating a new Account Transaction for rounding ticket amount to upper values.

… and another one that decreases ticket amount.

On next step we’ll configure calculation types.

This calculation will work if ticket amount needs to be increased. We want to round to nearest 0.50 dollar so we need to configure Rate or Amount value as 0.5

This one works if ticket amount needs to be decreased.

Finally we’ll configure a Calculation Selector to enable calculations.

We’ll leave button header empty because this calculation works automatically without the need of clicking a button. I’ve added both calculation types and SambaPOS will enable appropriate calculation.

As always we shouldn’t forget mapping.

Let’s see how it works.

On this sample ticket balance automatically increases from 6.49 to 6.50

To demonstrate the opposite case I’ll add %15 discount. It automatically decreases by 0.02 and Ticket Balance becomes 5.50.

As the result SambaPOS creates that transaction document. I wont describe it in detail but if you have questions about that feel free to ask.

###Side Note: Payment Screen Prices

As you know you can settle tickets by clicking orders on payment screen. You’ll notice when we have both auto rounding and a discount, payment screen prices becomes too fractional.

You can round these prices too. Change Settings > Program Settings > Payment Screen Settings > Auto Rounding to round these prices.

Changing it to 0.25 will round each order prices to nearest 25 cent.

Prices are better now. SambaPOS does some magic calculations here to fix prices without changing ticket total. Since it does not change ticket total this rounding is only useful to display rounded prices on payment screen.

##Method 2: Rounding by Lowering Ticket Amount.

If increasing ticket amounts for rounding is not appropriate for your business you can use this method. On this sample I’ll start with a fresh database.

Since we won’t increase ticket amount we only need a Transaction Type that works with discount account.

The calculation type will be slightly different.

We’ll enable Decrease Amount and choose Round Ticket Total Exactly calculation method. Since we want it to round to 50 cents I’ll set Rate or Amount value to 0.5. You can change this value. For example if you want it to round by 5 cents you need to enter 0.05 here.

Finally we’ll configure Calculation Selector. Don’t forget mapping it.

Now we can create a ticket to see how it works. To demonstrate the difference I’ll create the exact same ticket that we created on method 1.

You’ll remember ticket amount increased to 6.50 when we used method 1 but this time ticket amount decreased to 6.00 because we forced it to round ticket amount with discount.

##Method 3: Rounding by Payment Type

Instead of rounding ticket amount automatically you can prefer rounding it when a specific payment type selected. In this tutorial I’ll change Method 2 configuration to work when ticket paid with Cash.

I’ll delete Calculation Selector since I don’t want to apply Auto Round calculation automatically.

Auto Round Calculation type should disappear.

I’ll change Cash payment type to add a Payment Processor. Navigate to Tickets > Payment Types and double click Cash to edit.

Click Payment Processors.

Click Add and choose Add Calculation processor.

Highlight Add Calculation row by clicking on it and click Settings.

On previous tutorial you’ll remember we’ve configured a Calculation Template named Auto Round. Type it’s name and set an rounding amount. We already have an amount configured for Auto Round template but I can alter that value here. To test it with a different value I’ll type 0.25 here.

Save it and create a ticket to see what will happen.

Balance did not changed. Click Settle button.

SambaPOS notifies me if I settle with cash ticket amount will become 6.25.

I’ll Tender $10 and click Cash.

When I click Cash SambaPOS will warn me about customer will pay 6.25. We can skip this confirmation by unsetting Confirm setting while configuring payment processor.

When I click Yes ticket amount decreases to 6.25.

##Method 4: Rounding Manually

I’ll start a new default database to demonstrate this feature. Instead of rounding ticket amounts you can prefer doing it manually. SambaPOS automatically creates Round button to round ticket amounts by typing a rounding amount but since you need to type rounding value it is a little harder to use and it does not support rounding by increasing ticket total.

I’ll demonstrate an alternative solution here.

Since we need to support both increasing and decreasing ticket amount we’ll start by creating two account transactions.

First one for increasing ticket amount.

Second one for decreasing ticket amount.

We’ll also create two Calculation Types.

This one will work when ticket amount increases. I want to show something different here. I’ve typed Template Name as Service so it will be displayed as Service when we increase ticket amount.

Please notice I’ve selected Fixed amount from ticket total as Calculation Method. I’ll create another one to decrease ticket amount.

When I decrease ticket amount it will appear as Rounding. Please note I’ve enabled Decrease Amount setting here.

Now I’ll create a Calculation Selector.

This time I’ll set a Button Header value. When I type a Button Header it will display a button instead of applying calculation automatically.

Add a mapping and save it.

On payment screen we’ll have Auto Round button. You can label is as you want.

By using this button I can change ticket amount by typing a target amount. That means if I type 7 and click Auto Round ticket amount becomes 7.

0.51 added to Ticket and it appears as Service.

If I type 6 and click Auto Round

… ticket amount becomes 6 and it displays as Rounding.

Clicking Auto Round without typing a target value will remove calculation.

While configuring calculation selector you can include a single calculation type to support only decreasing or increasing values. You can also configure mapping to display this button to specific users or or ticket types.

Thank you for reading.


Auto Round (670 Bytes)

For Database Tools module users this is the import file for Auto Round button.

1 Like

I’m not really sure but shouldn’t default target account be Rounding rather than Discount?

It is configured as discount as it works for negative rounding. Of course creating separate accounts will be a better idea as it may not work fine when % discount & (-) rounding used together.


I have followed Method 1 and managed to achieve the Auto Rounding. Can you also please guide me how to print out Receipt with Rounding?