WooCommerce Hook: Content get’s displayed twice and not AFTER the order total

In case it helps anyone, the do_action(‘woocommerce_review_order_after_order_total’) is called in the middle of a table in the template and expects a table row to be echoed by the add_action hook. If you just echo text or, as in the question, an input, it falls outside the table, appears before not after the table and presumably gets left behind on ajax updates so appears more than once. So, something like the following will work in the add_action hook (the table has 2 columns):

echo '<tr><td colspan="2">My after totals text</td></tr>';