diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+v0.10.0.0
+* New optional beneficiary ID field for withdrawal requests.
+
 v0.9.0.1
 * Compatibility with http-client-0.5.0 and http-client-tls-0.3.0.
 
diff --git a/bitx-bitcoin.cabal b/bitx-bitcoin.cabal
--- a/bitx-bitcoin.cabal
+++ b/bitx-bitcoin.cabal
@@ -1,5 +1,5 @@
 name:                bitx-bitcoin
-version:             0.9.0.1
+version:             0.10.0.0
 synopsis:            A Haskell library for working with the BitX bitcoin exchange.
 
 description:
diff --git a/src/Network/Bitcoin/BitX/Internal.hs b/src/Network/Bitcoin/BitX/Internal.hs
--- a/src/Network/Bitcoin/BitX/Internal.hs
+++ b/src/Network/Bitcoin/BitX/Internal.hs
@@ -50,8 +50,8 @@
 globalManager = NetCon.newManager NetCon.tlsManagerSettings
 
 psUrl :: MonadThrow m => String -> m Request
-#if MIN_VERSION_http_client(0,5,0)
-psUrl = NetCon.parseRequest
+#if MIN_VERSION_http_client(0,4,30)
+psUrl = NetCon.parseUrlThrow
 #else
 psUrl = NetCon.parseUrl
 #endif
diff --git a/src/Network/Bitcoin/BitX/Types.hs b/src/Network/Bitcoin/BitX/Types.hs
--- a/src/Network/Bitcoin/BitX/Types.hs
+++ b/src/Network/Bitcoin/BitX/Types.hs
@@ -126,7 +126,8 @@
     HasExercised(..),
     HasName(..),
     HasIsBuy(..),
-    HasStatus(..)
+    HasStatus(..),
+    HasBeneficiaryId(..)
   ) where
 
 import Data.Aeson (FromJSON(..))
@@ -389,13 +390,14 @@
 -- | A request to withdraw from an account.
 data NewWithdrawal = NewWithdrawal
         {newWithdrawalWithdrawalType :: WithdrawalType,
-         newWithdrawalAmount :: Scientific } deriving (Eq, Show)
+         newWithdrawalAmount :: Scientific,
+         newWithdrawalBeneficiaryId :: Maybe Text} deriving (Eq, Show)
 
 makeFields ''NewWithdrawal
 
 -- |@mkNewWithdrawal = NewWithdrawal ZAR_EFT 0@
 mkNewWithdrawal :: NewWithdrawal
-mkNewWithdrawal = NewWithdrawal ZAR_EFT 0
+mkNewWithdrawal = NewWithdrawal ZAR_EFT 0 Nothing
 
 -- | A request to send bitcoin to a bitcoin address or email address.
 data BitcoinSendRequest = BitcoinSendRequest
diff --git a/src/Network/Bitcoin/BitX/Types/Internal.hs b/src/Network/Bitcoin/BitX/Types/Internal.hs
--- a/src/Network/Bitcoin/BitX/Types/Internal.hs
+++ b/src/Network/Bitcoin/BitX/Types/Internal.hs
@@ -60,6 +60,10 @@
 -- prop> \ n -> (timeToTimestamp $ timestampParse_ $ _unUnixStampMS n) == _unUnixStampMS n
 --
 
+ifJustText :: ByteString -> Maybe Text -> [(ByteString, ByteString)]
+ifJustText lbl (Just a) = [(lbl, Txt.encodeUtf8 a)]
+ifJustText _   Nothing  = []
+
 class FromJSON (Aes recd) => BitXAesRecordConvert recd where
     type Aes recd
     aesToRec :: Aes recd -> recd
@@ -499,6 +503,7 @@
     postEncode nwthd =
         [("type", showableToBytestring_ (nwthd ^. Types.withdrawalType)),
          ("amount", realToDecimalByteString_ (nwthd ^. Types.amount))]
+         ++ ifJustText "beneficiary_id" (nwthd ^. Types.beneficiaryId)
 
 -------------------------------------- BitcoinSendRequest type -------------------------------------
 
@@ -506,12 +511,9 @@
     postEncode oreq =
         [("amount", realToDecimalByteString_ (oreq ^. Types.amount)),
          ("currency", showableToBytestring_ (oreq ^. Types.currency)),
-         ("address", Txt.encodeUtf8 (oreq ^. Types.address)),
-         ("description", Txt.encodeUtf8 . unjustText $ (oreq ^. Types.description)),
-         ("message", Txt.encodeUtf8 . unjustText $ (oreq ^. Types.message))]
-        where
-            unjustText (Just a) = a
-            unjustText Nothing  = ""
+         ("address", Txt.encodeUtf8 (oreq ^. Types.address))]
+         ++ ifJustText "description" (oreq ^. Types.description)
+         ++ ifJustText "message" (oreq ^. Types.message)
 
 ----------------------------------------- QuoteRequest type ----------------------------------------
 
diff --git a/test/Network/Bitcoin/BitX/Spec/Specs/LensSpec.hs b/test/Network/Bitcoin/BitX/Spec/Specs/LensSpec.hs
--- a/test/Network/Bitcoin/BitX/Spec/Specs/LensSpec.hs
+++ b/test/Network/Bitcoin/BitX/Spec/Specs/LensSpec.hs
@@ -141,9 +141,10 @@
 
 _newWithdrawal :: Maybe Int
 _newWithdrawal = do
-    let x = BitX.NewWithdrawal ZAR_EFT 0
+    let x = BitX.NewWithdrawal ZAR_EFT 0 Nothing
     let _ = x ^. BitX.withdrawalType
     let _ = x ^. BitX.amount
+    let _ = x ^. BitX.beneficiaryId
     Nothing
 
 _bitcoinSendRequest :: Maybe Int
diff --git a/test/Network/Bitcoin/BitX/Spec/Specs/PostSpec.hs b/test/Network/Bitcoin/BitX/Spec/Specs/PostSpec.hs
--- a/test/Network/Bitcoin/BitX/Spec/Specs/PostSpec.hs
+++ b/test/Network/Bitcoin/BitX/Spec/Specs/PostSpec.hs
@@ -27,11 +27,22 @@
         postEncode ZAR
       `shouldBe`
         [("asset", "ZAR")]
-    it "NewWithdrawal is post-encoded properly" $
+    it "NewWithdrawal is post-encoded properly with beneficiary" $
         postEncode
           NewWithdrawal
             {newWithdrawalWithdrawalType = ZAR_EFT,
-             newWithdrawalAmount = 83.02}
+             newWithdrawalAmount = 83.02,
+             newWithdrawalBeneficiaryId = Just "Some guy"}
+      `shouldBe`
+        [("type", "ZAR_EFT"),
+         ("amount", "83.02"),
+         ("beneficiary_id","Some guy")]
+    it "NewWithdrawal is post-encoded properly with no beneficiary" $
+        postEncode
+          NewWithdrawal
+            {newWithdrawalWithdrawalType = ZAR_EFT,
+             newWithdrawalAmount = 83.02,
+             newWithdrawalBeneficiaryId = Nothing}
       `shouldBe`
         [("type", "ZAR_EFT"),
          ("amount", "83.02")]
