A ROAS of 2.0 means the platform counted two dollars of sales for each dollar of ads. It says nothing about what those sales cost you. On the worked example an $80.00 order leaves $37.69 once the goods, the label, the packing and the fees are paid, so an ad that cost $40.00 to win it has lost money before a single order comes back.
The shortcut many pages print is 1 ÷ gross margin, which takes off the goods and nothing else: $80.00 ÷ $52.00, or 1.54. The label, the packing and the card fee are paid on every order the ad brings in, and the processor takes its fee on the whole amount the card pays, tax and shipping included.
Then the orders that come back. A refund does not undo an order. Its outbound label and its packing are spent, and the card fee stays with the processor: Shopify Payments and Stripe both say so in their refund documentation. The return label is often yours as well, and some of what comes back cannot be sold again. On the example one return costs $67.60, and at one order in ten that takes $6.76 off every order you sell.
What the calculator does not claim. It works on one average first order, so a product with a thin margin needs its own run, and costs that do not grow with orders are outside it. There is no good ROAS figure on this page: the benchmarks I found on the first page of results carried no source I could check.