The server prices the order, not the browser
The checkout request physically contains no price, no total and no delivery fee — only dish identifiers and quantities. The server re-reads every price from the database and recomputes the total. A tampered page cannot underpay, and a three-week-old cart cannot order at last month's prices.
Money is stored in whole tetri, so rounding drift is impossible by construction.



