diff --git a/test/functional/abc-mempool-coherence-on-activations.py b/test/functional/abc-mempool-coherence-on-activations.py
--- a/test/functional/abc-mempool-coherence-on-activations.py
+++ b/test/functional/abc-mempool-coherence-on-activations.py
@@ -79,7 +79,7 @@
     # Fund transaction
     script = CScript([public_key, OP_CHECKSIG])
     txfund = create_tx_with_script(
-        spend.tx, spend.n, b'', 50 * COIN, script)
+        spend.tx, spend.n, b'', amount=50 * COIN, script_pub_key=script)
     txfund.rehash()
 
     # Activation specific spending tx
@@ -207,7 +207,7 @@
         # spendable output for further chaining.
         def create_always_valid_chained_tx(spend):
             tx = create_tx_with_script(
-                spend.tx, spend.n, b'', spend.tx.vout[0].nValue - 1000, CScript([OP_TRUE]))
+                spend.tx, spend.n, b'', amount=spend.tx.vout[0].nValue - 1000, script_pub_key=CScript([OP_TRUE]))
             tx.rehash()
             return tx, PreviousSpendableOutput(tx, 0)
 
diff --git a/test/functional/abc-minimaldata.py b/test/functional/abc-minimaldata.py
--- a/test/functional/abc-minimaldata.py
+++ b/test/functional/abc-minimaldata.py
@@ -141,7 +141,8 @@
             value = spendfrom.vout[0].nValue
 
             # Fund transaction
-            txfund = create_tx_with_script(spendfrom, 0, b'', value, script)
+            txfund = create_tx_with_script(
+                spendfrom, 0, b'', amount=value, script_pub_key=script)
             txfund.rehash()
             fundings.append(txfund)
 
diff --git a/test/functional/abc-replay-protection.py b/test/functional/abc-replay-protection.py
--- a/test/functional/abc-replay-protection.py
+++ b/test/functional/abc-replay-protection.py
@@ -155,7 +155,7 @@
             # Fund transaction
             script = CScript([public_key, OP_CHECKSIG])
             txfund = create_tx_with_script(
-                spend.tx, spend.n, b'', 50 * COIN - 1000, script)
+                spend.tx, spend.n, b'', amount=50 * COIN - 1000, script_pub_key=script)
             txfund.rehash()
 
             # Spend transaction
diff --git a/test/functional/abc-schnorr.py b/test/functional/abc-schnorr.py
--- a/test/functional/abc-schnorr.py
+++ b/test/functional/abc-schnorr.py
@@ -165,7 +165,8 @@
             value = spendfrom.vout[0].nValue
 
             # Fund transaction
-            txfund = create_tx_with_script(spendfrom, 0, b'', value, script)
+            txfund = create_tx_with_script(
+                spendfrom, 0, b'', amount=value, script_pub_key=script)
             txfund.rehash()
             fundings.append(txfund)
 
diff --git a/test/functional/abc-schnorrmultisig.py b/test/functional/abc-schnorrmultisig.py
--- a/test/functional/abc-schnorrmultisig.py
+++ b/test/functional/abc-schnorrmultisig.py
@@ -165,7 +165,8 @@
             value = spendfrom.vout[0].nValue
 
             # Fund transaction
-            txfund = create_tx_with_script(spendfrom, 0, b'', value, script)
+            txfund = create_tx_with_script(
+                spendfrom, 0, b'', amount=value, script_pub_key=script)
             txfund.rehash()
             fundings.append(txfund)
 
diff --git a/test/functional/feature_cltv.py b/test/functional/feature_cltv.py
--- a/test/functional/feature_cltv.py
+++ b/test/functional/feature_cltv.py
@@ -102,7 +102,7 @@
             "Test that an invalid-according-to-CLTV transaction can still appear in a block")
 
         fundtx = create_transaction(self.nodes[0], self.coinbase_txids[0],
-                                    self.nodeaddress, 49.99)
+                                    self.nodeaddress, amount=49.99)
         fundtx, spendtx = cltv_lock_to_height(
             self.nodes[0], fundtx, self.nodeaddress, 49.98)
 
@@ -139,7 +139,7 @@
         block.nVersion = 4
 
         fundtx = create_transaction(self.nodes[0], self.coinbase_txids[1],
-                                    self.nodeaddress, 49.99)
+                                    self.nodeaddress, amount=49.99)
         fundtx, spendtx = cltv_lock_to_height(
             self.nodes[0], fundtx, self.nodeaddress, 49.98)
 
@@ -189,7 +189,7 @@
         self.log.info(
             "Test that a version 4 block with a valid-according-to-CLTV transaction is accepted")
         fundtx = create_transaction(self.nodes[0], self.coinbase_txids[2],
-                                    self.nodeaddress, 49.99)
+                                    self.nodeaddress, amount=49.99)
         fundtx, spendtx = cltv_lock_to_height(
             self.nodes[0], fundtx, self.nodeaddress, 49.98, CLTV_HEIGHT)
 
diff --git a/test/functional/feature_csv_activation.py b/test/functional/feature_csv_activation.py
--- a/test/functional/feature_csv_activation.py
+++ b/test/functional/feature_csv_activation.py
@@ -92,7 +92,7 @@
     return height >= 576
 
 
-def create_transaction(node, txid, to_address, amount):
+def create_transaction(node, txid, to_address, *, amount):
     inputs = [{"txid": txid, "vout": 0}]
     outputs = {to_address: amount}
     rawtx = node.createrawtransaction(inputs, outputs)
@@ -109,7 +109,7 @@
 
 def spend_tx(node, prev_tx, address):
     spendtx = create_transaction(
-        node, prev_tx.hash, address, (prev_tx.vout[0].nValue - 1000) / COIN)
+        node, prev_tx.hash, address, amount=(prev_tx.vout[0].nValue - 1000) / COIN)
     spendtx.nVersion = prev_tx.nVersion
     pad_tx(spendtx)
     spendtx.rehash()
@@ -118,7 +118,7 @@
 
 def create_bip112special(node, input, txversion, address):
     tx = create_transaction(
-        node, input, address, Decimal("49.98"))
+        node, input, address, amount=Decimal("49.98"))
     tx.nVersion = txversion
     tx.vout[0].scriptPubKey = CScript(
         [-1, OP_CHECKSEQUENCEVERIFY, OP_DROP, OP_TRUE])
@@ -130,9 +130,8 @@
 
 
 def send_generic_input_tx(node, coinbases, address):
-    amount = Decimal("49.99")
     return node.sendrawtransaction(ToHex(sign_transaction(node, create_transaction(
-        node, node.getblock(coinbases.pop())['tx'][0], address, amount))))
+        node, node.getblock(coinbases.pop())['tx'][0], address, amount=Decimal("49.99")))))
 
 
 def create_bip68txs(node, bip68inputs, txversion, address, locktime_delta=0):
@@ -142,7 +141,7 @@
     for i, (sdf, srhb, stf, srlb) in enumerate(product(*[[True, False]] * 4)):
         locktime = relative_locktime(sdf, srhb, stf, srlb)
         tx = create_transaction(
-            node, bip68inputs[i], address, Decimal("49.98"))
+            node, bip68inputs[i], address, amount=Decimal("49.98"))
         tx.nVersion = txversion
         tx.vin[0].nSequence = locktime + locktime_delta
         tx = sign_transaction(node, tx)
@@ -160,7 +159,7 @@
     for i, (sdf, srhb, stf, srlb) in enumerate(product(*[[True, False]] * 4)):
         locktime = relative_locktime(sdf, srhb, stf, srlb)
         tx = create_transaction(
-            node, bip112inputs[i], address, Decimal("49.98"))
+            node, bip112inputs[i], address, amount=Decimal("49.98"))
         if (varyOP_CSV):  # if varying OP_CSV, nSequence is fixed
             tx.vin[0].nSequence = BASE_RELATIVE_LOCKTIME + locktime_delta
         else:  # vary nSequence instead, OP_CSV is fixed
@@ -323,11 +322,11 @@
         # BIP113 test transaction will be modified before each use to
         # put in appropriate block time
         bip113tx_v1 = create_transaction(
-            self.nodes[0], bip113input, self.nodeaddress, Decimal("49.98"))
+            self.nodes[0], bip113input, self.nodeaddress, amount=Decimal("49.98"))
         bip113tx_v1.vin[0].nSequence = 0xFFFFFFFE
         bip113tx_v1.nVersion = 1
         bip113tx_v2 = create_transaction(
-            self.nodes[0], bip113input, self.nodeaddress, Decimal("49.98"))
+            self.nodes[0], bip113input, self.nodeaddress, amount=Decimal("49.98"))
         bip113tx_v2.vin[0].nSequence = 0xFFFFFFFE
         bip113tx_v2.nVersion = 2
 
diff --git a/test/functional/feature_dersig.py b/test/functional/feature_dersig.py
--- a/test/functional/feature_dersig.py
+++ b/test/functional/feature_dersig.py
@@ -72,7 +72,7 @@
         block.nVersion = 3
 
         spendtx = create_transaction(self.nodes[0], self.coinbase_txids[1],
-                                     self.nodeaddress, 1.0)
+                                     self.nodeaddress, amount=1.0)
         unDERify(spendtx)
         spendtx.rehash()
 
@@ -99,7 +99,7 @@
         self.log.info(
             "Test that a version 3 block with a DERSIG-compliant transaction is accepted")
         block.vtx[1] = create_transaction(self.nodes[0],
-                                          self.coinbase_txids[1], self.nodeaddress, 1.0)
+                                          self.coinbase_txids[1], self.nodeaddress, amount=1.0)
         block.hashMerkleRoot = block.calc_merkle_root()
         block.rehash()
         block.solve()
diff --git a/test/functional/mempool_reorg.py b/test/functional/mempool_reorg.py
--- a/test/functional/mempool_reorg.py
+++ b/test/functional/mempool_reorg.py
@@ -43,11 +43,11 @@
         b = [self.nodes[0].getblockhash(n) for n in range(101, 105)]
         coinbase_txids = [self.nodes[0].getblock(h)['tx'][0] for h in b]
         spend_101_raw = create_raw_transaction(
-            self.nodes[0], coinbase_txids[1], node1_address, 49.99)
+            self.nodes[0], coinbase_txids[1], node1_address, amount=49.99)
         spend_102_raw = create_raw_transaction(
-            self.nodes[0], coinbase_txids[2], node0_address, 49.99)
+            self.nodes[0], coinbase_txids[2], node0_address, amount=49.99)
         spend_103_raw = create_raw_transaction(
-            self.nodes[0], coinbase_txids[3], node0_address, 49.99)
+            self.nodes[0], coinbase_txids[3], node0_address, amount=49.99)
 
         # Create a transaction which is time-locked to two blocks in the future
         timelock_tx = self.nodes[0].createrawtransaction(
@@ -73,9 +73,9 @@
 
         # Create 102_1 and 103_1:
         spend_102_1_raw = create_raw_transaction(
-            self.nodes[0], spend_102_id, node1_address, 49.98)
+            self.nodes[0], spend_102_id, node1_address, amount=49.98)
         spend_103_1_raw = create_raw_transaction(
-            self.nodes[0], spend_103_id, node1_address, 49.98)
+            self.nodes[0], spend_103_id, node1_address, amount=49.98)
 
         # Broadcast and mine 103_1:
         spend_103_1_id = self.nodes[0].sendrawtransaction(spend_103_1_raw)
diff --git a/test/functional/mempool_resurrect.py b/test/functional/mempool_resurrect.py
--- a/test/functional/mempool_resurrect.py
+++ b/test/functional/mempool_resurrect.py
@@ -30,7 +30,7 @@
 
         b = [self.nodes[0].getblockhash(n) for n in range(1, 4)]
         coinbase_txids = [self.nodes[0].getblock(h)['tx'][0] for h in b]
-        spends1_raw = [create_raw_transaction(self.nodes[0], txid, node0_address, 49.99)
+        spends1_raw = [create_raw_transaction(self.nodes[0], txid, node0_address, amount=49.99)
                        for txid in coinbase_txids]
         spends1_id = [self.nodes[0].sendrawtransaction(tx)
                       for tx in spends1_raw]
@@ -38,7 +38,7 @@
         blocks = []
         blocks.extend(self.nodes[0].generate(1))
 
-        spends2_raw = [create_raw_transaction(self.nodes[0], txid, node0_address, 49.98)
+        spends2_raw = [create_raw_transaction(self.nodes[0], txid, node0_address, amount=49.98)
                        for txid in spends1_id]
         spends2_id = [self.nodes[0].sendrawtransaction(tx)
                       for tx in spends2_raw]
diff --git a/test/functional/mempool_spend_coinbase.py b/test/functional/mempool_spend_coinbase.py
--- a/test/functional/mempool_spend_coinbase.py
+++ b/test/functional/mempool_spend_coinbase.py
@@ -34,7 +34,7 @@
         # is too immature to spend.
         b = [self.nodes[0].getblockhash(n) for n in range(101, 103)]
         coinbase_txids = [self.nodes[0].getblock(h)['tx'][0] for h in b]
-        spends_raw = [create_raw_transaction(self.nodes[0], txid, node0_address, 49.99)
+        spends_raw = [create_raw_transaction(self.nodes[0], txid, node0_address, amount=49.99)
                       for txid in coinbase_txids]
 
         spend_101_id = self.nodes[0].sendrawtransaction(spends_raw[0])
diff --git a/test/functional/test_framework/blocktools.py b/test/functional/test_framework/blocktools.py
--- a/test/functional/test_framework/blocktools.py
+++ b/test/functional/test_framework/blocktools.py
@@ -93,8 +93,8 @@
     return coinbase
 
 
-def create_tx_with_script(prevtx, n, script_sig=b"",
-                          amount=1, script_pub_key=CScript()):
+def create_tx_with_script(prevtx, n, script_sig=b"", *,
+                          amount, script_pub_key=CScript()):
     """Return one-input, one-output transaction object
        spending the prevtx's n-th output with the given amount.
 
@@ -109,26 +109,25 @@
     return tx
 
 
-def create_transaction(node, txid, to_address, amount):
+def create_transaction(node, txid, to_address, *, amount):
     """ Return signed transaction spending the first output of the
         input txid. Note that the node must be able to sign for the
         output that is being spent, and the node must not be running
         multiple wallets.
     """
-    raw_tx = create_raw_transaction(node, txid, to_address, amount)
+    raw_tx = create_raw_transaction(node, txid, to_address, amount=amount)
     tx = FromHex(CTransaction(), raw_tx)
     return tx
 
 
-def create_raw_transaction(node, txid, to_address, amount):
+def create_raw_transaction(node, txid, to_address, *, amount):
     """ Return raw signed transaction spending the first output of the
         input txid. Note that the node must be able to sign for the
         output that is being spent, and the node must not be running
         multiple wallets.
     """
-    inputs = [{"txid": txid, "vout": 0}]
-    outputs = {to_address: amount}
-    rawtx = node.createrawtransaction(inputs, outputs)
+    rawtx = node.createrawtransaction(
+        inputs=[{"txid": txid, "vout": 0}], outputs={to_address: amount})
     signresult = node.signrawtransactionwithwallet(rawtx)
     assert_equal(signresult["complete"], True)
     return signresult['hex']