diff --git a/km3buu/ctrl.py b/km3buu/ctrl.py
index f4bf85eea8cf9af8e3ca954c8b72d5a31dd87b59..b587306c9c6f99322a001df66c4faf1d7b3225d0 100644
--- a/km3buu/ctrl.py
+++ b/km3buu/ctrl.py
@@ -92,6 +92,8 @@ def run_jobcard(jobcard, outdir, fluxfile=None):
         bind=[outdir, input_dir.name],
         return_result=True,
     )
+    with open(join(outdir, jobcard.filename), "w") as f:
+        f.write(str(jobcard))
     msg = output["message"]
     if isinstance(msg, str):
         log.info("GiBUU output:\n %s" % msg)
diff --git a/km3buu/jobcard.py b/km3buu/jobcard.py
index c9faadcaa367621e3c60b27315a5e051423822bc..646500187c412181af8930cd7867ec7cfb4afb14 100644
--- a/km3buu/jobcard.py
+++ b/km3buu/jobcard.py
@@ -13,6 +13,7 @@ __email__ = "jschumann@km3net.de"
 __status__ = "Development"
 
 import f90nml
+from os.path import basename
 
 try:
     from StringIO import StringIO
@@ -21,6 +22,8 @@ except ImportError:
 
 INPUT_PATH = "/opt/buuinput2019/"
 
+DEFAULT_JOBCARD_FILENAME = "jobcard.job"
+
 PROCESS_LOOKUP = {"cc": 2, "nc": 3, "anticc": -2, "antinc": -3}
 FLAVOR_LOOKUP = {"electron": 1, "muon": 2, "tau": 3}
 PDGID_LOOKUP = {1: 12, 2: 14, 3: 16}
@@ -56,6 +59,11 @@ class Jobcard(f90nml.Namelist):
         The input path pointing to the GiBUU lookup data which should be used
     """
     def __init__(self, *args, **kwargs):
+        if "filename" in kwargs:
+            self.filename = kwargs["filename"]
+            del kwargs["filename"]
+        else:
+            self.filename = DEFAULT_JOBCARD_FILENAME
         super(Jobcard, self).__init__(*args, **kwargs)
         if "input_path" in kwargs:
             self.input_path = str(input_path)
@@ -82,17 +90,17 @@ class Jobcard(f90nml.Namelist):
 
 
 def read_jobcard(filepath):
-    return Jobcard(f90nml.read(filepath))
+    return Jobcard(f90nml.read(filepath), filename=basename(filepath))
 
 
 def generate_neutrino_jobcard_template(
-        process,
-        flavour,
-        energy,
-        target,
-        write_events=False,
-        do_decay=False,
-        input_path=INPUT_PATH):  # pragma: no cover
+    process,
+    flavour,
+    energy,
+    target,
+    write_events=False,
+    do_decay=False,
+    input_path=INPUT_PATH):  # pragma: no cover
     """
     Generate a jobcard for neutrino interaction