diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index a74872d4a98..1383b6221b9 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -3498,6 +3498,7 @@ class Form
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
/**
* Return list of payment methods
+ * Constant MAIN_DEFAULT_PAYMENT_TYPE_ID can used to set default value but scope is all application, probably not what you want.
*
* @param string $selected Id du mode de paiement pre-selectionne
* @param string $htmlname Nom de la zone select
@@ -3513,7 +3514,7 @@ class Form
public function select_types_paiements($selected = '', $htmlname = 'paiementtype', $filtertype = '', $format = 0, $empty = 1, $noadmininfo = 0, $maxlength = 0, $active = 1, $morecss = '')
{
// phpcs:enable
- global $langs, $user;
+ global $langs, $user, $conf;
dol_syslog(__METHOD__." ".$selected.", ".$htmlname.", ".$filtertype.", ".$format, LOG_DEBUG);
@@ -3523,6 +3524,9 @@ class Form
elseif ($filtertype != '' && $filtertype != '-1') $filterarray = explode(',', $filtertype);
$this->load_cache_types_paiements();
+
+ // Set default value if not already set by caller
+ if (empty($selected) && !empty($conf->global->MAIN_DEFAULT_PAYMENT_TYPE_ID)) $selected = $conf->global->MAIN_DEFAULT_PAYMENT_TYPE_ID;
print '