diff --git a/src/convert.js b/src/convert.js
index ddf4282..e54a466 100644
--- a/src/convert.js
+++ b/src/convert.js
@@ -158,6 +158,10 @@ function wordArrayToBytes(wordArray) {
   return wordsToBytes(wordArray.words)
 }
 
+function reverseEndian (hex) {
+  return bytesToHex(hexToBytes(hex).reverse())
+}
+
 module.exports = {
   lpad: lpad,
   bytesToHex: bytesToHex,
@@ -175,5 +179,6 @@ module.exports = {
   bytesToWords: bytesToWords,
   wordsToBytes: wordsToBytes,
   bytesToWordArray: bytesToWordArray,
-  wordArrayToBytes: wordArrayToBytes
+  wordArrayToBytes: wordArrayToBytes,
+  reverseEndian: reverseEndian
 }
diff --git a/src/wallet.js b/src/wallet.js
index da3aa79..63486cd 100644
--- a/src/wallet.js
+++ b/src/wallet.js
@@ -60,6 +60,26 @@ var Wallet = function (seed, options) {
         return this.changeAddresses[this.changeAddresses.length - 1]
     }
 
+    this.getUnspentOutputs = function() {
+      var utxo = []
+
+      for(var key in this.outputs){
+        var hashAndIndex = key.split(":")
+        var output = this.outputs[key]
+
+        utxo.push({
+          hash: hashAndIndex[0],
+          hashLittleEndian: convert.reverseEndian(hashAndIndex[0]),
+          outputIndex: parseInt(hashAndIndex[1]),
+          scriptPubKey: output.scriptPubKey,
+          address: output.address,
+          value: output.value
+        })
+      }
+
+      return utxo
+    }
+
     // Processes a transaction object
     // If "verified" is true, then we trust the transaction as "final"
     this.processTx = function(tx, verified) {
diff --git a/test/convert.js b/test/convert.js
index efa4a82..4727692 100644
--- a/test/convert.js
+++ b/test/convert.js
@@ -93,4 +93,13 @@ describe('convert', function() {
         }
       })
     })
+
+    describe('reverseEndian', function() {
+        it('works', function() {
+            var bigEndian = "6a4062273ac4f9ea4ffca52d9fd102b08f6c32faa0a4d1318e3a7b2e437bb9c7"
+            var littleEdian = "c7b97b432e7b3a8e31d1a4a0fa326c8fb002d19f2da5fc4feaf9c43a2762406a"
+            assert.deepEqual(convert.reverseEndian(bigEndian), littleEdian)
+            assert.deepEqual(convert.reverseEndian(littleEdian), bigEndian)
+        })
+    })
 })
diff --git a/test/wallet.js b/test/wallet.js
index b72e2d7..e02b10d 100644
--- a/test/wallet.js
+++ b/test/wallet.js
@@ -6,17 +6,13 @@ var SHA256 = require('crypto-js/sha256')
 var Crypto = require('crypto-js')
 
 describe('Wallet', function() {
-  var seed;
+  var seed, wallet;
   beforeEach(function(){
     seed = convert.wordArrayToBytes(SHA256("don't use a string seed like this in real life"))
+    wallet = new Wallet(seed)
   })
 
   describe('constructor', function() {
-    var wallet;
-    beforeEach(function() {
-      wallet = new Wallet(seed)
-    })
-
     it('defaults to Bitcoin mainnet', function() {
       assert.equal(wallet.getMasterKey().network, 'mainnet')
     })
@@ -47,7 +43,6 @@ describe('Wallet', function() {
     })
 
     describe('constructor options', function() {
-      var wallet;
       beforeEach(function() {
         wallet = new Wallet(seed, {network: 'testnet'})
       })
@@ -149,6 +144,36 @@ describe('Wallet', function() {
     })
   })
 
+  describe('Unspent Outputs', function(){
+    var expectedUtxo, expectedOutputKey;
+    beforeEach(function(){
+      expectedUtxo = [
+          {
+            "hash":"6a4062273ac4f9ea4ffca52d9fd102b08f6c32faa0a4d1318e3a7b2e437bb9c7",
+            "hashLittleEndian":"c7b97b432e7b3a8e31d1a4a0fa326c8fb002d19f2da5fc4feaf9c43a2762406a",
+            "outputIndex": 0,
+            "scriptPubKey":"76a91468edf28474ee22f68dfe7e56e76c017c1701b84f88ac",
+            "address" : "1azpkpcfczkduetfbqul4mokqai3m3hmxv",
+            "value": 20000
+          }
+        ]
+      expectedOutputKey = expectedUtxo[0].hash + ":" + expectedUtxo[0].outputIndex
+    })
+
+    describe('getUnspentOutputs', function(){
+      it('parses wallet outputs to the expect format', function(){
+        wallet.outputs[expectedOutputKey] = {
+          output: expectedOutputKey,
+          scriptPubKey: expectedUtxo[0].scriptPubKey,
+          address: expectedUtxo[0].address,
+          value: expectedUtxo[0].value
+        }
+
+        assert.deepEqual(wallet.getUnspentOutputs(), expectedUtxo)
+      })
+    })
+  })
+
   function assertEqual(obj1, obj2){
     assert.equal(obj1.toString(), obj2.toString())
   }