diff --git a/Makefile b/Makefile
index 3018ed2e9ec0b3f12c30572af5b76c15cc1ab522..0a22fc76f885a37727f4b0195817119a9f8b8945 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 BASE=ordernumber
 PLUGINTYPE=vmshopper
-VERSION=4.0
+VERSION=4.0.1
 
 PLUGINFILES=$(BASE).php ordernumber_helper_joomla.php $(BASE).script.php $(BASE).xml index.html library/
 
diff --git a/ordernumber.php b/ordernumber.php
index c6df509d447beaac880173610f4a61ad5eef3a9f..287b1cfc9f2e701fd2f8c81b61492550abecf129 100644
--- a/ordernumber.php
+++ b/ordernumber.php
@@ -210,6 +210,8 @@ class plgVmShopperOrdernumber extends vmShopperPlugin {
             );
             $customvars = $this->helper->transposeCustomVariables($this->params->get ('replacements', array()));
             $number = $this->helper->createNumber ($fmt, $type, $order, $customvars, $ctrsettings);
+			JPluginHelper::importPlugin('vmshopper');
+			JDispatcher::getInstance()->trigger('onVmOrdernumberPostprocessNumber',array(&$number, $type, $order));
             return $number;
         } else {
             return false;
diff --git a/ordernumber.xml b/ordernumber.xml
index 0ad01ace513aad332e9ea82cf3afe55cf35943c6..cd5418b9f02a0558c1b1e660af452704e2093a66 100644
--- a/ordernumber.xml
+++ b/ordernumber.xml
@@ -7,7 +7,7 @@
     <authorUrl>http://www.open-tools.net/</authorUrl>
     <copyright>Copyright (C) 2012-2015 Reinhold Kainhofer. All rights reserved.</copyright>
     <license>http://www.gnu.org/licenses/gpl-3.0.html GNU/GPLv3</license>
-    <version>4.0</version>
+    <version>4.0.1</version>
     <releaseDate>2015-05-23</releaseDate>
     <releaseType>Minor update</releaseType>
     <downloadUrl>http://open-tools.net/virtuemart/advanced-ordernumbers.html</downloadUrl>
diff --git a/plugins/ordernumber_checksum/Makefile b/plugins/ordernumber_checksum/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..960da882558fd02d4d0b9a88bc338a34f662db6f
--- /dev/null
+++ b/plugins/ordernumber_checksum/Makefile
@@ -0,0 +1,17 @@
+BASE=ordernumber_checksum
+PLUGINTYPE=vmshopper
+ZIPBASE=opentools_vmshopper
+VERSION=1.0
+
+PLUGINFILES=$(BASE).php $(BASE).xml index.html
+
+ZIPFILE=plg_$(ZIPBASE)_$(BASE)_v$(VERSION).zip
+
+all: zip
+
+zip: $(PLUGINFILES) $(ADVANCEDFILES)
+	@echo "Packing all files into distribution file $(ZIPFILE):"
+	@zip -r $(ZIPFILE) $(PLUGINFILES)
+
+clean:
+	rm -f $(ZIPFILE)
diff --git a/plugins/ordernumber_checksum/index.html b/plugins/ordernumber_checksum/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/plugins/ordernumber_checksum/ordernumber_checksum.php b/plugins/ordernumber_checksum/ordernumber_checksum.php
new file mode 100644
index 0000000000000000000000000000000000000000..ff9b4e928446e3d6ab871176a54ebf974d21129f
--- /dev/null
+++ b/plugins/ordernumber_checksum/ordernumber_checksum.php
@@ -0,0 +1,44 @@
+<?php
+
+defined ('_JEXEC') or die('Restricted access');
+
+/**
+ * Plugin providing checksums for the VM Ordernumber plugin
+ *
+ * @copyright Copyright (C) 2016 Reinhold Kainhofer, office@open-tools.net
+ * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.txt
+ * VirtueMart is free software. This version may have been modified pursuant
+ * to the GNU General Public License, and as distributed it includes or
+ * is derivative of works licensed under the GNU General Public License or
+ * other free or open source software licenses.
+ *
+ * http://open-tools.net/
+ *
+ */
+if (!class_exists('vmShopperPlugin')) 
+    require(JPATH_VM_PLUGINS . DS . 'vmshopperplugin.php');
+
+/** Extension plugin for the Ordernumber plugin for VirtueMart
+ */
+class plgVmShopperOrdernumber_checksum extends VmShopperPlugin {
+    // Unfortunately, this dummy function needs to be implementd, because it's abstract in the parent class!
+    public function plgVmOnUpdateOrderBEShopper($_orderID) {}
+
+	/**  Trigger to postprocess generated numbers (e.g. to add checksums or call 
+	  *  external bookkeeping systems to store an invoice number).
+	  *  The number can be changed by simply assigning a new value to $number.
+	  *
+	  *  Possible values for $type are "ordernumber", "invoice_number", "customer_number", etc.
+	  */
+	function onVmOrdernumberPostprocessNumber(&$number, $type, $order) {
+		// Example: Append the length of the number to the number
+error_log("Called onVmOrdernumberPostprocessNumber with number $number and type $type");
+		if ($type=="order_number") {
+			$checksum = strlen($number);
+			$number .= $checksum;
+		}
+	}
+
+}
+
+// No closing tag
diff --git a/plugins/ordernumber_checksum/ordernumber_checksum.xml b/plugins/ordernumber_checksum/ordernumber_checksum.xml
new file mode 100644
index 0000000000000000000000000000000000000000..da805d974bf0f8100031fc5e66fe2254260adf85
--- /dev/null
+++ b/plugins/ordernumber_checksum/ordernumber_checksum.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<extension version="2.5" type="plugin" group="vmshopper" method="upgrade">
+    <name>VM Advanced Ordernumbers - Append Checksum</name>
+    <creationDate>2016-04-27</creationDate>
+    <author>Reinhold Kainhofer, Open Tools</author>
+    <authorUrl>http://www.open-tools.net</authorUrl>
+    <copyright>Copyright (C) 2016, Reinhold Kainhofer</copyright>
+    <license>GPL v3+</license>
+    <version>1.0</version>
+    <description>Appends a customized checksum to order numbers generated by the Advanced Ordernumbers plugin for VirtueMart.</description>
+    <files>
+        <filename plugin="ordernumber_checksum">ordernumber_checksum.php</filename>
+    </files>
+
+    <!-- Joomla 2.x and 3.x support (fields rather than params): -->
+    <config></config>
+
+</extension>
diff --git a/plugins/ordernumber_checksum/plg_opentools_vmshopper_ordernumber_checksum_v1.0.zip b/plugins/ordernumber_checksum/plg_opentools_vmshopper_ordernumber_checksum_v1.0.zip
new file mode 100644
index 0000000000000000000000000000000000000000..07a3043c1d7eab43ed53341699b86ee073c59668
Binary files /dev/null and b/plugins/ordernumber_checksum/plg_opentools_vmshopper_ordernumber_checksum_v1.0.zip differ
diff --git a/plugins/template/YOUR_PLUGIN_NAME.php b/plugins/template/YOUR_PLUGIN_NAME.php
index a226baed4806cf0344e3786d88de59359e6aa21b..0ef26babf4f61062224290aa0ef272cd344f4ab8 100644
--- a/plugins/template/YOUR_PLUGIN_NAME.php
+++ b/plugins/template/YOUR_PLUGIN_NAME.php
@@ -23,6 +23,7 @@ if (!class_exists('vmShopperPlugin'))
 class plgVmShopperYOUR_PLUGIN_NAME extends VmShopperPlugin {
     // Unfortunately, this dummy function needs to be implementd, because it's abstract in the parent class!
     public function plgVmOnUpdateOrderBEShopper($_orderID) {}
+
 	/**  Trigger to add variables to be used in the number formats
 	  *  You can add new variables to the $cartvals array or modify existing ones. They will be directly 
 	  *  available in all formats. This trigger will be called whenever the ordernumber plugin creates a 
@@ -44,6 +45,26 @@ class plgVmShopperYOUR_PLUGIN_NAME extends VmShopperPlugin {
         // You can also modify existing variables:
         $reps['[second]'] = $reps['[second]'] + 15;
 	}
+
+	/**  Trigger to postprocess generated numbers (e.g. to add checksums or call 
+	  *  external bookkeeping systems to store an invoice number).
+	  *  The number can be changed by simply assigning a new value to $number.
+	  *
+	  *  Possible values for $type are "order_number", "order_password", "invoice_number", "customer_number", etc.
+	  */
+	function onVmOrdernumberPostprocessNumber(&$number, $type, $order) {
+		// Example: Append the length of the number to the number
+		if ($type=="order_number") {
+			$checksum=strlen($number);
+			$number .= $checksum;
+		}
+		// Example 2: Store the invoice number in an external bookkeeping system
+		if ($type=="invoice_number") {
+			// simply take $number and trigger a webservice call sending that value 
+			// (and e.g. the order ID stored in the $order object) to the bookkeeping system
+		}
+	}
+
 }
 
 // No closing tag
diff --git a/releases/plg_vmshopper_ordernumber_v4.0.1.zip b/releases/plg_vmshopper_ordernumber_v4.0.1.zip
new file mode 100644
index 0000000000000000000000000000000000000000..abe1f3f5c1dd14784a3c11083aaeeb279858cc2f
Binary files /dev/null and b/releases/plg_vmshopper_ordernumber_v4.0.1.zip differ