diff --git a/src/box/txn.c b/src/box/txn.c
index 75dacff390631cbd32ce281170b7da9845242091..daf6264fca66203ea033df580b8b63a31812da3b 100644
--- a/src/box/txn.c
+++ b/src/box/txn.c
@@ -988,8 +988,10 @@ txn_prepare(struct txn *txn)
 	 * we have a bunch of IPROTO_NOP statements.
 	 */
 	if (txn->engine != NULL) {
-		if (engine_prepare(txn->engine, txn) != 0)
+		if (engine_prepare(txn->engine, txn) != 0) {
+			txn->psn = 0;
 			return -1;
+		}
 	}
 
 	trigger_clear(&txn->fiber_on_stop);