diff -ru a/modules/org.openbravo.module.remittance/src/org/openbravo/module/remittance/ad_actionbutton/CreateFile.java b/modules/org.openbravo.module.remittance/src/org/openbravo/module/remittance/ad_actionbutton/CreateFile.java
--- a/modules/org.openbravo.module.remittance/src/org/openbravo/module/remittance/ad_actionbutton/CreateFile.java	2015-10-21 10:45:11.257611000 +0200
+++ b/modules/org.openbravo.module.remittance/src/org/openbravo/module/remittance/ad_actionbutton/CreateFile.java	2015-10-21 10:13:54.261598000 +0200
@@ -45,6 +45,7 @@
 import org.openbravo.model.ad.ui.ProcessTrl;
 import org.openbravo.module.remittance.Instruction;
 import org.openbravo.module.remittance.Remittance;
+import org.openbravo.module.remittance.RemittanceTypeParameter;
 import org.openbravo.module.remittance.utility.REM_RemittanceCreateFile;
 import org.openbravo.service.db.DalConnectionProvider;
 import org.openbravo.xmlEngine.XmlDocument;
@@ -208,7 +209,8 @@
     if (createFile != null) {
       createFile.init(remittance);
       strFile = createFile.generate(remittance);
-      String strFileName = "BANK.DAT";
+      String strFileName = getFileName(remittance);
       if (createFile.getFilename() != null && !"".equals(createFile.getFilename())) {
         strFileName = createFile.getFilename();
       }
@@ -223,6 +225,31 @@
     return;
   }
 
+  private String getFileName(Remittance remittance) {
+    try {
+      OBContext.setAdminMode(true);
+
+      String fileName = remittance.getDocumentNo() + "_" + remittance.getName();
+      fileName = replaceStrangeCharacters(fileName);
+
+      OBCriteria<RemittanceTypeParameter> obcRemTypeParam = OBDal.getInstance().createCriteria(
+          RemittanceTypeParameter.class);
+      obcRemTypeParam.add(Restrictions.eq(RemittanceTypeParameter.PROPERTY_REMITTANCETYPE,
+          remittance.getRemittanceType()));
+      obcRemTypeParam.add(Restrictions.eq(RemittanceTypeParameter.PROPERTY_NAME, "FILE_EXTENSION"));
+      obcRemTypeParam.setMaxResults(1);
+      if (obcRemTypeParam.list().isEmpty()) {
+        return fileName + ".DAT";
+      } else {
+        return fileName + "." + obcRemTypeParam.list().get(0).getValue().toLowerCase();
+      }
+    } catch (Exception e) {
+      return "BANK.DAT";
+    } finally {
+      OBContext.restorePreviousMode();
+    }
+  }
+
   private void printPageFile(HttpServletResponse response, VariablesSecureApp vars,
       StringBuffer strFile, String strFileName) throws IOException, ServletException {
     response.setContentType("application/rtf");
@@ -258,6 +285,36 @@
     return message;
   }
 
+  /**
+   * Returns a string replacing all the strange characters
+   * 
+   * @param originalStr
+   * @return
+   */
+  public static String replaceStrangeCharacters(final String originalStr) {
+    String fileName = originalStr;
+    fileName = fileName.replaceAll("[áàäâ]", "a");
+    fileName = fileName.replaceAll("[ÁÀÄÂ]", "A");
+    fileName = fileName.replaceAll("[éèëê]", "e");
+    fileName = fileName.replaceAll("[ÉÈËÊ]", "E");
+    fileName = fileName.replaceAll("[íìïî]", "i");
+    fileName = fileName.replaceAll("[ÍÌÏÎ]", "I");
+    fileName = fileName.replaceAll("[óòöô]", "o");
+    fileName = fileName.replaceAll("[ÓÒÖÔ]", "O");
+    fileName = fileName.replaceAll("[úùüû]", "u");
+    fileName = fileName.replaceAll("[ÚÙÜÛ]", "U");
+    fileName = fileName.replaceAll("[ç]", "c");
+    fileName = fileName.replaceAll("[Ç]", "C");
+    fileName = fileName.replaceAll("[ñ]", "n");
+    fileName = fileName.replaceAll("[Ñ]", "N");
+    fileName = fileName.replace("\\", "/");
+    fileName = fileName.replaceAll("[º]", ".");
+    fileName = fileName.replaceAll("[ª]", ".");
+    fileName = fileName.replaceAll(" ", "_");
+    // fileName = fileName.replaceAll("[^a-zA-Z0-9.]", "");
+    return fileName;
+  }
+
   public String getServletInfo() {
     return "Servlet for the generation of files for banks";
   } // end of getServletInfo() method
