diff --git a/duniterpy/documents/block.py b/duniterpy/documents/block.py
index 802b95b383a2cc225941725745a9fccb9b371a7d..d93fa412b0fb4446964a8e80a912288df146febf 100644
--- a/duniterpy/documents/block.py
+++ b/duniterpy/documents/block.py
@@ -313,17 +313,23 @@ class Block(Document):
         ]
         # joiners: List[Membership]
         arguments["joiners"] = [
-            Membership.from_inline("IN", i + "\n", version=version, currency=currency)
+            Membership.from_inline(
+                i + "\n", version=version, currency=currency, membership_type="IN"
+            )
             for i in arguments["joiners"]
         ]
         # actives: List[Membership]
         arguments["actives"] = [
-            Membership.from_inline("IN", i + "\n", version=version, currency=currency)
+            Membership.from_inline(
+                i + "\n", version=version, currency=currency, membership_type="IN"
+            )
             for i in arguments["actives"]
         ]
         # leavers: List[Membership]
         arguments["leavers"] = [
-            Membership.from_inline("OUT", i + "\n", version=version, currency=currency)
+            Membership.from_inline(
+                i + "\n", version=version, currency=currency, membership_type="OUT"
+            )
             for i in arguments["leavers"]
         ]
         # revokations: List[Revocation]
@@ -448,7 +454,7 @@ class Block(Document):
             n += 1
             while Block.re_actives.match(lines[n]) is None:
                 membership = Membership.from_inline(
-                    "IN", lines[n], version=version, currency=currency
+                    lines[n], version=version, currency=currency, membership_type="IN"
                 )
                 joiners.append(membership)
                 n += 1
@@ -457,7 +463,7 @@ class Block(Document):
             n += 1
             while Block.re_leavers.match(lines[n]) is None:
                 membership = Membership.from_inline(
-                    "IN", lines[n], version=version, currency=currency
+                    lines[n], version=version, currency=currency, membership_type="IN"
                 )
                 actives.append(membership)
                 n += 1
@@ -466,7 +472,7 @@ class Block(Document):
             n += 1
             while Block.re_revoked.match(lines[n]) is None:
                 membership = Membership.from_inline(
-                    "OUT", lines[n], version=version, currency=currency
+                    lines[n], version=version, currency=currency, membership_type="OUT"
                 )
                 leavers.append(membership)
                 n += 1
diff --git a/duniterpy/documents/membership.py b/duniterpy/documents/membership.py
index 3c57df49bf4e9bb21174b8fd788090dcc7aa73e8..3c9663578d385e9064aeb3dce48682f071dd9778 100644
--- a/duniterpy/documents/membership.py
+++ b/duniterpy/documents/membership.py
@@ -86,24 +86,24 @@ class Membership(Document):
         self,
         issuer: str,
         membership_ts: BlockUID,
-        membership_type: str,
         uid: str,
         identity_ts: BlockUID,
         signing_key: SigningKey = None,
         version: int = VERSION,
         currency: str = G1_CURRENCY_CODENAME,
+        membership_type: str = "IN",
     ) -> None:
         """
         Create a membership document
 
         :param issuer: Public key of the issuer
         :param membership_ts: BlockUID of this membership
-        :param membership_type: "IN" or "OUT" to enter or quit the community
         :param uid: Unique identifier of the identity
         :param identity_ts:  BlockUID of the identity
         :param signing_key: SigningKey instance to sign the document (default=None)
         :param version: Document version (default=membership.VERSION)
         :param currency: Currency codename (default=constants.CURRENCY_CODENAME_G1)
+        :param membership_type: "IN" or "OUT" to enter or quit the community. Default "IN"
         """
         super().__init__(version, currency)
 
@@ -119,18 +119,18 @@ class Membership(Document):
     @classmethod
     def from_inline(
         cls: Type[MembershipType],
-        membership_type: str,
         inline: str,
         version: int = VERSION,
         currency: str = G1_CURRENCY_CODENAME,
+        membership_type: str = "IN",
     ) -> MembershipType:
         """
         Return Membership instance from inline format
 
-        :param membership_type: "IN" or "OUT" to enter or exit membership
         :param inline: Inline string format
         :param version: Document version (default=membership.VERSION)
         :param currency: Currency codename (default=constants.CURRENCY_CODENAME_G1)
+        :param membership_type: "IN" or "OUT" to enter or exit membership. Default "IN"
         :return:
         """
         data = Membership.re_inline.match(inline)
@@ -144,11 +144,11 @@ class Membership(Document):
         membership = cls(
             issuer,
             membership_blockstamp,
-            membership_type,
             uid,
             identity_blockstamp,
             version=version,
             currency=currency,
+            membership_type=membership_type,
         )
 
         # return membership with signature
@@ -200,11 +200,11 @@ class Membership(Document):
         membership = cls(
             issuer,
             membership_blockstamp,
-            membership_type,
             uid,
             identity_blockstamp,
             version=version,
             currency=currency,
+            membership_type=membership_type,
         )
 
         # return membership with signature
diff --git a/examples/send_membership.py b/examples/send_membership.py
index 68a45edad59a3b41ace19a4437c7f44425afdaab..dfb69f833e9e830ec77ed798e5371aa6f5945238 100644
--- a/examples/send_membership.py
+++ b/examples/send_membership.py
@@ -33,18 +33,18 @@ BMAS_ENDPOINT = "BMAS g1-test.duniter.org 443"
 
 
 def get_membership_document(
-    membership_type: str,
     current_block: dict,
     identity: dict,
     key: SigningKey,
+    membership_type: str = "IN",
 ) -> Membership:
     """
     Get a Membership document
 
-    :param membership_type: "IN" to ask for membership or "OUT" to cancel membership
     :param current_block: Current block data
     :param identity: identity card from /wot/lookup
     :param key: cryptographic key to sign documents
+    :param membership_type: "IN" to ask for membership or "OUT" to cancel membership. Default "IN"
 
     :rtype: Membership
     """
@@ -60,11 +60,11 @@ def get_membership_document(
     membership = Membership(
         issuer=key.pubkey,
         membership_ts=timestamp,
-        membership_type=membership_type,
         uid=uid,
         identity_ts=identity_timestamp,
         signing_key=key,
         currency=current_block["currency"],
+        membership_type=membership_type,
     )
 
     return membership
@@ -99,7 +99,7 @@ def send_membership():
     identity = identities["results"][0]
 
     # create a membership demand document
-    membership = get_membership_document("IN", current_block, identity, key)
+    membership = get_membership_document(current_block, identity, key)
 
     # send the membership signed raw document to the node
     try:
diff --git a/tests/documents/test_membership.py b/tests/documents/test_membership.py
index 37830d0fc51d8646455dbcc40fe47197786cc983..12b50e14484e7215fc3fe66bf8c8ba4e97a2cc27 100644
--- a/tests/documents/test_membership.py
+++ b/tests/documents/test_membership.py
@@ -36,7 +36,7 @@ dkaXIiCYUJtCg8Feh/BKvPYf4uFH9CJ/zY6J4MlA9BsjmcMe4YAblvNt/gJy31b1aGq3ue3h14mLMCu8
 class TestMembership(unittest.TestCase):
     def test_frominline(self):
         membership = Membership.from_inline(
-            "IN", membership_inline, version=2, currency="zeta_brousouf"
+            membership_inline, version=2, currency="zeta_brousouf"
         )
         self.assertEqual(
             membership.issuer, "HnFcSms8jzwngtVomTTnzudZx7SHUQY8sVE1y8yBmULk"