diff --git a/src-db/database/sourcedata/AD_MESSAGE.xml b/src-db/database/sourcedata/AD_MESSAGE.xml
index 1df118d..357e2db 100644
--- a/src-db/database/sourcedata/AD_MESSAGE.xml
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml
@@ -168,6 +168,18 @@
 <!--D7C45CB9A458422FB7E6ADF96B05A849-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
 <!--D7C45CB9A458422FB7E6ADF96B05A849--></AD_MESSAGE>
 
+<!--E290EAB2406F4895B1989A7E760E9EEE--><AD_MESSAGE>
+<!--E290EAB2406F4895B1989A7E760E9EEE-->  <AD_MESSAGE_ID><![CDATA[E290EAB2406F4895B1989A7E760E9EEE]]></AD_MESSAGE_ID>
+<!--E290EAB2406F4895B1989A7E760E9EEE-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--E290EAB2406F4895B1989A7E760E9EEE-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--E290EAB2406F4895B1989A7E760E9EEE-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--E290EAB2406F4895B1989A7E760E9EEE-->  <VALUE><![CDATA[OBRETCO_FinancialAccEventType]]></VALUE>
+<!--E290EAB2406F4895B1989A7E760E9EEE-->  <MSGTEXT><![CDATA[It is mandatory to select a Financial Account if Event Type is equal to IN or OUT]]></MSGTEXT>
+<!--E290EAB2406F4895B1989A7E760E9EEE-->  <MSGTYPE><![CDATA[I]]></MSGTYPE>
+<!--E290EAB2406F4895B1989A7E760E9EEE-->  <AD_MODULE_ID><![CDATA[50BF0CEB5D7E438CBBE80688EDB68039]]></AD_MODULE_ID>
+<!--E290EAB2406F4895B1989A7E760E9EEE-->  <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
+<!--E290EAB2406F4895B1989A7E760E9EEE--></AD_MESSAGE>
+
 <!--FBF3173F260C49FCB619EBCDB7C40183--><AD_MESSAGE>
 <!--FBF3173F260C49FCB619EBCDB7C40183-->  <AD_MESSAGE_ID><![CDATA[FBF3173F260C49FCB619EBCDB7C40183]]></AD_MESSAGE_ID>
 <!--FBF3173F260C49FCB619EBCDB7C40183-->  <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src/org/openbravo/retail/config/event/CashManagementEventsEventHandler.java b/src/org/openbravo/retail/config/event/CashManagementEventsEventHandler.java
new file mode 100644
index 0000000..5c15975
--- /dev/null
+++ b/src/org/openbravo/retail/config/event/CashManagementEventsEventHandler.java
@@ -0,0 +1,58 @@
+/*
+ ************************************************************************************
+ * Copyright (C) 2022 Openbravo S.L.U.
+ * Licensed under the Openbravo Commercial License version 1.0
+ * You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
+ * or in the legal folder of this module distribution.
+ ************************************************************************************
+ */
+
+package org.openbravo.retail.config.event;
+
+import javax.enterprise.event.Observes;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.openbravo.base.exception.OBException;
+import org.openbravo.base.model.Entity;
+import org.openbravo.base.model.ModelProvider;
+import org.openbravo.client.kernel.event.EntityNewEvent;
+import org.openbravo.client.kernel.event.EntityPersistenceEventObserver;
+import org.openbravo.client.kernel.event.EntityUpdateEvent;
+import org.openbravo.erpCommon.utility.OBMessageUtils;
+import org.openbravo.model.financialmgmt.payment.FIN_FinancialAccount;
+import org.openbravo.retail.config.CashManagementEvents;
+
+public class CashManagementEventsEventHandler extends EntityPersistenceEventObserver {
+  private static Entity[] entities = {
+      ModelProvider.getInstance().getEntity(CashManagementEvents.ENTITY_NAME) };
+  protected Logger logger = LogManager.getLogger();
+
+  @Override
+  protected Entity[] getObservedEntities() {
+    return entities;
+  }
+
+  public void onUpdate(@Observes EntityUpdateEvent event) {
+    if (!isValidEvent(event)) {
+      return;
+    }
+    checkFinancialAccount((FIN_FinancialAccount) event.getTargetInstance().get("financialAccount"),
+        (String) event.getTargetInstance().get("eventtype"));
+  }
+
+  public void onSave(@Observes EntityNewEvent event) {
+    if (!isValidEvent(event)) {
+      return;
+    }
+    checkFinancialAccount((FIN_FinancialAccount) event.getTargetInstance().get("financialAccount"),
+        (String) event.getTargetInstance().get("eventtype"));
+  }
+
+  private void checkFinancialAccount(FIN_FinancialAccount financialAccount, String eventType) {
+    if (financialAccount == null && (eventType.equals("IN") || eventType.equals("OUT"))) {
+      throw new OBException(OBMessageUtils.messageBD("OBRETCO_FinancialAccEventType"));
+    }
+  }
+
+}
