diff --git a/contrib/pylightning/lightning-pay b/contrib/pylightning/lightning-pay
index 8ba33ea19..400fd3120 100755
--- a/contrib/pylightning/lightning-pay
+++ b/contrib/pylightning/lightning-pay
@@ -3,12 +3,14 @@
 import argparse
 import os
 import sys
+import json
 from lightning import LightningRpc
 
 parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
 parser.add_argument("bolt11_or_destination_id")
 parser.add_argument("amount_in_milli_satoshi", default=None, type=int, nargs="?")
 parser.add_argument("payment_hash", nargs="?")
+parser.add_argument("min_final_cltv_expiry", nargs="?")
 args = parser.parse_args()
 
 
@@ -23,32 +25,49 @@ rpc_path = os.path.join(default_configdir(), "lightning-rpc")
 ld = LightningRpc(rpc_path)
 
 assert len(args.bolt11_or_destination_id) > 2, "argument bolt11_or_destination_id is invalid"
-prefix = args.bolt11_or_destination_id[:2]
 
-if prefix == "ln":
+# Bolt11 passed if prefix is 'ln'
+use_bolt11 = args.bolt11_or_destination_id[:2] == "ln"
+
+if use_bolt11:
     bolt11 = ld.decodepay(args.bolt11_or_destination_id)
+    print("Bolt11 decoded:\n%s" % json.dumps(bolt11, indent=4))
     id_ = bolt11["payee"]
     payment_hash = bolt11["payment_hash"]
     if "msatoshi" in bolt11:
+        amount_included_in_bolt = True
         amount = bolt11["msatoshi"]
     else:
         assert args.amount_in_milli_satoshi, "need argument amount_in_milli_satoshi"
         amount = args.amount_in_milli_satoshi
+        amount_included_in_bolt = False
+
+    reply = input("Pay %s msatoshi [Y/n]? " % amount)
+
+    if reply in ["y", "Y"]:
+        if amount_included_in_bolt:
+            ld.pay(args.bolt11_or_destination_id)
+        else:
+            ld.pay(args.bolt11_or_destination_id, amount)
+    else:
+        print("Not sending.")
+
 else:
     assert args.amount_in_milli_satoshi, "need argument amount_in_milli_satoshi"
     assert args.payment_hash, "need argument payment_hash"
+    assert args.min_final_cltv_expiry, "need argument min_final_cltv_expiry"
     amount = args.amount_in_milli_satoshi
     id_ = args.bolt11_or_destination_id
     payment_hash = args.payment_hash
+    min_cltv_expiry = args.min_final_cltv_expiry
 
-route = ld.getroute(id_, amount, 1)
-
-fee = route["route"][0]["msatoshi"] - amount
+    route = ld.getroute(id_, amount, 1, min_cltv_expiry)
+    fee = route["route"][0]["msatoshi"] - amount
 
-reply = input("Paying fee %s on amount %s (%.3f%%). Send [Y/n]?" % (fee, amount, fee / amount * 100.0))
+    reply = input("Paying fee %s on amount %s (%.3f%%). Send [Y/n]? " % (fee, amount, fee / amount * 100.0))
 
-if reply in ["y", "Y"]:
-    ld.sendpay(route["route"], payment_hash)
-else:
-    print("Not sending.")
-    sys.exit(1)
+    if reply in ["y", "Y"]:
+        ld.sendpay(route["route"], payment_hash)
+    else:
+        print("Not sending.")
+        sys.exit(1)