diff --git a/delivery_partner_fedex/README.rst b/delivery_partner_fedex/README.rst
new file mode 100644
index 00000000..17dfbcfd
--- /dev/null
+++ b/delivery_partner_fedex/README.rst
@@ -0,0 +1,28 @@
+***************************************
+Hibou - FedEx Partner Shipping Accounts
+***************************************
+
+Adds FedEx shipping accounts.
+
+For more information and add-ons, visit `Hibou.io `_.
+
+
+=============
+Main Features
+=============
+
+* Adds FedEx to the delivery type selection field.
+* Validates entered FedEx account numbers are the correct length.
+
+.. image:: https://user-images.githubusercontent.com/15882954/41176817-b7353356-6b16-11e8-8545-3e59b7b350ae.png
+ :alt: 'Register Payment Detail'
+ :width: 988
+ :align: left
+
+=======
+License
+=======
+
+Please see `LICENSE `_.
+
+Copyright Hibou Corp. 2018
diff --git a/delivery_partner_fedex/__init__.py b/delivery_partner_fedex/__init__.py
new file mode 100644
index 00000000..0ee8b507
--- /dev/null
+++ b/delivery_partner_fedex/__init__.py
@@ -0,0 +1,2 @@
+from . import models
+from . import tests
diff --git a/delivery_partner_fedex/__manifest__.py b/delivery_partner_fedex/__manifest__.py
new file mode 100755
index 00000000..e149d0a4
--- /dev/null
+++ b/delivery_partner_fedex/__manifest__.py
@@ -0,0 +1,18 @@
+{
+ 'name': 'Fedex Partner Shipping Accounts',
+ 'author': 'Hibou Corp. ',
+ 'version': '12.0.1.0.0',
+ 'category': 'Stock',
+ 'sequence': 95,
+ 'summary': 'Fedex Partner Shipping Accounts',
+ 'description': """
+ """,
+ 'website': 'https://hibou.io/',
+ 'depends': [
+ 'delivery_partner',
+ ],
+ 'data': [
+ ],
+ 'installable': True,
+ 'application': False,
+}
diff --git a/delivery_partner_fedex/models/__init__.py b/delivery_partner_fedex/models/__init__.py
new file mode 100644
index 00000000..be8cabd6
--- /dev/null
+++ b/delivery_partner_fedex/models/__init__.py
@@ -0,0 +1 @@
+from . import delivery
diff --git a/delivery_partner_fedex/models/delivery.py b/delivery_partner_fedex/models/delivery.py
new file mode 100644
index 00000000..f6da8910
--- /dev/null
+++ b/delivery_partner_fedex/models/delivery.py
@@ -0,0 +1,17 @@
+import re
+
+from odoo import fields, models
+from odoo.exceptions import ValidationError
+
+
+class PartnerShippingAccount(models.Model):
+ _inherit = 'partner.shipping.account'
+
+ delivery_type = fields.Selection(selection_add=[('fedex', 'FedEx')])
+
+ def fedex_check_validity(self):
+ m = re.search(r'^\d{9}$', self.name or '')
+ if not m:
+ raise ValidationError('FedEx Account numbers must be 9 decimal numbers.')
+
+
diff --git a/delivery_partner_fedex/tests/__init__.py b/delivery_partner_fedex/tests/__init__.py
new file mode 100644
index 00000000..7e86b3ce
--- /dev/null
+++ b/delivery_partner_fedex/tests/__init__.py
@@ -0,0 +1 @@
+from . import test_fedex_account
diff --git a/delivery_partner_fedex/tests/test_fedex_account.py b/delivery_partner_fedex/tests/test_fedex_account.py
new file mode 100644
index 00000000..5fa8726d
--- /dev/null
+++ b/delivery_partner_fedex/tests/test_fedex_account.py
@@ -0,0 +1,29 @@
+from odoo.tests.common import TransactionCase
+from odoo.exceptions import ValidationError
+
+
+class TestAccount(TransactionCase):
+
+ def setUp(self):
+ super(TestAccount, self).setUp()
+ self.PartnerShippingAccount = self.env['partner.shipping.account']
+
+ def test_fedex_account_information(self):
+ # Create object and confirm that validation error raises if fedex account is blank or not 8 digits
+ with self.assertRaises(ValidationError):
+ wrong_account_number = self.PartnerShippingAccount.create({
+ 'name': '12345678',
+ 'description': 'Error Account',
+ 'partner_id': 5,
+ 'delivery_type': 'fedex',
+ 'note': 'This is a note'
+ })
+
+ with self.assertRaises(ValidationError):
+ no_account_number = self.PartnerShippingAccount.create({
+ 'name': '',
+ 'description': 'Error Account',
+ 'partner_id': 5,
+ 'delivery_type': 'fedex',
+ 'note': 'This is a note'
+ })