Rounding variance handling helps balance web store sales where the amount paid by the customer is slightly different to the order total calculated in Retail Express.This can occur when an online sales channel, such as Shopify, calculates rounding differently to Retail Express.
For example, the web store may round the final order total, while Retail Express calculates and rounds each item line before adding the sale total. This feature/enhancement will solve that “gap” by posting a rounding variance automatically to balance the sale.
This applies to invoices and sales created via:
OrderCreateByChannel method from the SOAP Webstore and EDS APIs- Web store integrations, such as Shopify
- Any external sales channel using this method
When rounding variance handling applies
Rounding variance handling applies to sales created through web store and external sales channel integrations using the OrderCreateByChannel method.
This includes:
- Shopify web store orders
- SOAP Webstore API orders
- EDS API orders
- External sales channels using
OrderCreateByChannel
This behaviour applies when the Enabling Rounding Variances for Webstore Orders feature flag is enabled and the difference in payment is ≤ $0.05
Example
- Customer places an order online for $100.00
- Customer pays $100.00 via the online channel
- Retail Express calculates the order total as $99.99
Retail Express will record: A payment of $100.00 A rounding variance of -$0.01
This allows the order to balance correctly while preserving the actual amount paid by the customer. Previously it remained “awaiting payment” and was a nuance for reporting purposes.
How does this Scenario occur? Why are the two systems calcualting differently?
One Example Scenario | Calculation method | Result |
|---|
Web store / Shopify | Calculates total first (3 × $33.33), then applies final rounding adjustments | $100.00 |
Retail Express | Calculates per item ($33.33), then sums (3 × $33.33) | $99.99 |
Difference | | -$0.01 rounding variance |
|---|
Key point: The web store may round at the final total, while Retail Express rounds at the line level, resulting in a small difference.
- The opposite scenario can also occur, where the online system calculates a lower total and Retail Express calculates a slightly higher value.
- For example:
- Online system total and payment: $99.97
- Retail Express calculated total: $99.99
- Rounding variance: +$0.02
- In this case, the customer has only paid $99.97, which is what is recorded and must be honoured.
- If a refund is processed, the online system will still only refund the original paid amount ($99.97).
- To ensure the order balances correctly in Retail Express:
- A contra entry is automatically posted to reverse the rounding variance
- This ensures the final order balance returns to $0.00
- This behaviour is consistent regardless of whether the variance is positive or negative, ensuring alignment between Retail Express and the originating sales channel.
How rounding variances are handled with the new feature
When a qualifying order is created:
- Retail Express detects the small difference (≤ 5 cents)
- A rounding variance entry is automatically posted
- The order is considered fully paid and balanced internally
This behaviour ensures:
- The original channel payment is preserved
- Retail Express financials remain accurate
Rounding variances are also visible in the Income Report, where they appear similarly to cash rounding, but are grouped separately under their own method. Similarly, also appears during the Cash Up/End of Day process for ease of reconciling.
Refund via API behaviour
If the order is later refunded:
- The full original payment amount is refunded (e.g. $100.00)
- Retail Express automatically posts a contra rounding entry to reverse the original variance
Example
Original order:
- Payment: $100.00
- Order total: $99.98
- Rounding variance: -$0.02
Refund:
- Refund amount: $100.00
- Rounding variance reversal: +$0.02
- Final Refund balance: $99.98
API behaviour
For all channel orders and refunds:
- The API reflects the actual payment/refund amount only
- Rounding variances and reversals are handled internally within Retail Express
- They are not returned as separate payment lines in API responses
Reporting and accounting
Rounding variances (and reversals):
- Are posted consistently with existing rounding variance logic
- Flow through to:
- Income reporting
- Accounting exports
- Other financial areas
Variance limits
This logic applies only when the variance is 5 cents or less.
- Overpayment > $0.05 → Error
- Underpayment > $0.05 → Order remains Awaiting Payment
- ≤ $0.05 → Rounding variance automatically applied
Key points
- Applies to all webstore / external channel orders, not just refunds
- Preserves the exact amount paid by the customer
- Automatically balances small rounding differences
- Refunds always match the original payment amount
- Rounding variances are automatically reversed on refund
- API responses only show real payments, not internal variance handling