diff --git a/moneyfield/fields.py b/moneyfield/fields.py
index <HASH>..<HASH> 100644
--- a/moneyfield/fields.py
+++ b/moneyfield/fields.py
@@ -255,6 +255,7 @@ class MoneyField(models.Field):
                 max_length=3,
                 default=currency_default,
                 choices=currency_choices,
+                validators=[currency_code_validator],
                 **kwargs
             )
     
diff --git a/tests/testapp/tests/test_models.py b/tests/testapp/tests/test_models.py
index <HASH>..<HASH> 100644
--- a/tests/testapp/tests/test_models.py
+++ b/tests/testapp/tests/test_models.py
@@ -221,6 +221,15 @@ class TestFreeCurrencyMoneyField(TestMoneyFieldMixin, TestCase):
         self.assertEqual(results.count(), 1)
         self.assertEqual(obj, results[0])
         self.assertEqual(obj.price, results[0].price)
+    
+    def test_invalid_currency_code(self):
+        obj = self.manager_create_instance()
+        obj.price_currency = "AA"
+        with self.assertRaises(ValidationError):
+            obj.full_clean()
+        obj.price_currency = "123"
+        with self.assertRaises(ValidationError):
+            obj.full_clean()
 
 
 class TestFreeCurrencyDefaultAmountMoneyField(TestFreeCurrencyMoneyField):
Validate currency format also at model field level