diff --git a/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainBlocks.java b/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainBlocks.java
index a834a8d69cb2f779d8cf93a2decf73e5f464cde9..16d895420d5367114d90e862ff0e44602a90261c 100644
--- a/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainBlocks.java
+++ b/duniter4j-core-client/src/main/java/org/duniter/core/client/model/bma/BlockchainBlocks.java
@@ -89,10 +89,18 @@ public final class BlockchainBlocks {
                             .sum();
 
                     long outputSum = Arrays.stream(tx.getOutputs())
-                            .map(TX_OUTPUT_PATTERN::matcher)
-                            .filter(Matcher::matches)
-                            .filter(matcher -> issuer.equals(matcher.group(3)))
-                            .mapToLong(matcher -> powBase(Long.parseLong(matcher.group(1)), Integer.parseInt(matcher.group(2))))
+                            .mapToLong(outputStr -> {
+                                try {
+                                    TxOutput txOutput = parseOutput(outputStr);
+                                    if (issuer.equals(txOutput.recipient)) {
+                                        return powBase(txOutput.amount, txOutput.unitbase);
+                                    }
+                                }
+                                catch (InvalidFormatException e) {
+                                    // not a simple unlock condition
+                                }
+                                return 0;
+                            })
                             .sum();
 
                     return (inputSum - outputSum);
diff --git a/duniter4j-core-client/src/test/java/org/duniter/core/client/model/BlockchainBlocksTest.java b/duniter4j-core-client/src/test/java/org/duniter/core/client/model/BlockchainBlocksTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..e6e5201335fe6ee45704401767a540deb49563ab
--- /dev/null
+++ b/duniter4j-core-client/src/test/java/org/duniter/core/client/model/BlockchainBlocksTest.java
@@ -0,0 +1,22 @@
+package org.duniter.core.client.model;
+
+import org.duniter.core.client.model.bma.BlockchainBlock;
+import org.duniter.core.client.model.bma.BlockchainBlocks;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Created by benoit on 27/11/17.
+ */
+public class BlockchainBlocksTest {
+
+    @Test
+    public void getTxAmount_issue30() {
+
+        // This test should detect when TX.inputs format is invalid - see #19
+        BlockchainBlock block = BlockFileUtils.readBlockFile("block_issue_30.json");
+        long txAmount = BlockchainBlocks.getTxAmount(block.getTransactions()[0]);
+        Assert.assertEquals(72000l, txAmount);
+
+    }
+}
diff --git a/duniter4j-core-client/src/test/java/org/duniter/core/client/model/MovementsTest.java b/duniter4j-core-client/src/test/java/org/duniter/core/client/model/MovementsTest.java
index 32459bb9988c04af1da4dfd93d1c9f78f586e007..6e84f7e5fcd61c857aab1b4970a435a9af325710 100644
--- a/duniter4j-core-client/src/test/java/org/duniter/core/client/model/MovementsTest.java
+++ b/duniter4j-core-client/src/test/java/org/duniter/core/client/model/MovementsTest.java
@@ -65,4 +65,15 @@ public class MovementsTest {
         }
 
     }
+
+    @Test
+    public void getMovements_issue30() {
+
+        // This test should detect when TX.inputs format is invalid - see #19
+        BlockchainBlock block = BlockFileUtils.readBlockFile("block_issue_30.json");
+        List<Movement> mov = Movements.getMovements(block);
+        Assert.assertEquals(1, mov.size());
+        Assert.assertEquals(72000l, mov.get(0).getAmount());
+
+    }
 }
diff --git a/duniter4j-core-client/src/test/resources/block_issue_30.json b/duniter4j-core-client/src/test/resources/block_issue_30.json
new file mode 100644
index 0000000000000000000000000000000000000000..fbb94a5ff229a8ec30aa18657c398534a9c9f74d
--- /dev/null
+++ b/duniter4j-core-client/src/test/resources/block_issue_30.json
@@ -0,0 +1,60 @@
+{
+  "version": 10,
+  "nonce": 10400000001617,
+  "number": 72871,
+  "powMin": 86,
+  "time": 1511772509,
+  "medianTime": 1511768858,
+  "membersCount": 464,
+  "monetaryMass": 56593557,
+  "unitbase": 0,
+  "issuersCount": 32,
+  "issuersFrame": 161,
+  "issuersFrameVar": 0,
+  "currency": "g1",
+  "issuer": "FEkbc4BfJukSWnCU6Hed6dgwwTuPFTVdgz5LpL4iHr9J",
+  "signature": "JfN4QQAwcZJ2tnILNyV+hQAGTyrH4rzueyAlGG3YUewAA7j/MhwxDtlN7HxlATkRwGgmcGPzD3BBvdV9MvKNAQ==",
+  "hash": "000004ED642BB8DFE5F61E9A81EA5B9CF95A7414CCEB3DFB834E050FA5467EA8",
+  "parameters": "",
+  "previousHash": "000002F718601968487B55074919687A69189496EB29592402F9A7573EC95C11",
+  "previousIssuer": "GEWmVzmiKM6RGJsNaE7VcdNdf2T31xSnu6nHXdxuoSmd",
+  "inner_hash": "659ADA7EBBC15CAB80E7F1D3DB5AFE650CDA32B4891EEC8E41E50A6D4800413C",
+  "dividend": null,
+  "identities": [],
+  "joiners": [],
+  "actives": [],
+  "leavers": [],
+  "revoked": [],
+  "excluded": [],
+  "certifications": [],
+  "transactions": [
+    {
+      "version": 10,
+      "currency": "g1",
+      "locktime": 0,
+      "hash": "B04C62C3DA0F872697B3BF5BF388D068F549B949FA4602DCA68A844FDFB2708F",
+      "blockstamp": "72867-0000010483B9E9DE5B1DB4F1AE671988AB02B76DD287D0664C62112DC92192BE",
+      "blockstampTime": 0,
+      "issuers": [
+        "Hi6geHkDVUn1NTwfrp8UMgUVPrgTiiGmZL82dnRoN5My"
+      ],
+      "inputs": [
+        "38300:0:T:F0360D0C87A06ED78193600230054F20CC6943BF17763C17F22BC6CFCEB4EF73:1",
+        "1068650:0:T:1D8BBA768B4AD390866445C1FAF6711CD7637C6F473E50D248D2664D908C5A18:1"
+      ],
+      "outputs": [
+        "72000:0:SIG(Be1eVp7etVfA7cT6er6dcJ9d5KxGJVY2tzCGGCAz3yG)",
+        "1034950:0:SIG(Hi6geHkDVUn1NTwfrp8UMgUVPrgTiiGmZL82dnRoN5My)"
+      ],
+      "unlocks": [
+        "0:SIG(0)",
+        "1:SIG(0)"
+      ],
+      "signatures": [
+        "YCbiwVOxeWl0C+wkuC+badq2bX0ub3mtqPLoQKJGJ8YpntfNy/ZTYc12ufjxiWIDW7aFK83raOX8QcLwbO8lCg=="
+      ],
+      "comment": "Encheres RML10 G1 / Cartes Jeu Geconomicus"
+    }
+  ],
+  "raw": "Version: 10\nType: Block\nCurrency: g1\nNumber: 72871\nPoWMin: 86\nTime: 1511772509\nMedianTime: 1511768858\nUnitBase: 0\nIssuer: FEkbc4BfJukSWnCU6Hed6dgwwTuPFTVdgz5LpL4iHr9J\nIssuersFrame: 161\nIssuersFrameVar: 0\nDifferentIssuersCount: 32\nPreviousHash: 000002F718601968487B55074919687A69189496EB29592402F9A7573EC95C11\nPreviousIssuer: GEWmVzmiKM6RGJsNaE7VcdNdf2T31xSnu6nHXdxuoSmd\nMembersCount: 464\nIdentities:\nJoiners:\nActives:\nLeavers:\nRevoked:\nExcluded:\nCertifications:\nTransactions:\nTX:10:1:2:2:2:1:0\n72867-0000010483B9E9DE5B1DB4F1AE671988AB02B76DD287D0664C62112DC92192BE\nHi6geHkDVUn1NTwfrp8UMgUVPrgTiiGmZL82dnRoN5My\n38300:0:T:F0360D0C87A06ED78193600230054F20CC6943BF17763C17F22BC6CFCEB4EF73:1\n1068650:0:T:1D8BBA768B4AD390866445C1FAF6711CD7637C6F473E50D248D2664D908C5A18:1\n0:SIG(0)\n1:SIG(0)\n72000:0:SIG(Be1eVp7etVfA7cT6er6dcJ9d5KxGJVY2tzCGGCAz3yG)\n1034950:0:SIG(Hi6geHkDVUn1NTwfrp8UMgUVPrgTiiGmZL82dnRoN5My)\nEncheres RML10 G1 / Cartes Jeu Geconomicus\nYCbiwVOxeWl0C+wkuC+badq2bX0ub3mtqPLoQKJGJ8YpntfNy/ZTYc12ufjxiWIDW7aFK83raOX8QcLwbO8lCg==\nInnerHash: 659ADA7EBBC15CAB80E7F1D3DB5AFE650CDA32B4891EEC8E41E50A6D4800413C\nNonce: 10400000001617\n"
+}
\ No newline at end of file