diff --git a/soap.cabal b/soap.cabal
--- a/soap.cabal
+++ b/soap.cabal
@@ -1,5 +1,5 @@
 name:                soap
-version:             0.2.0.3
+version:             0.2.0.4
 synopsis:            SOAP client tools
 description:
   Tools to build SOAP clients using xml-conduit.
@@ -63,7 +63,7 @@
     Network.SOAP.Parsing.Stream
   build-depends:
     base ==4.*,
-    http-conduit >=1.9.0, resourcet, tls-extra, http-types,
+    http-conduit >=1.9.0, resourcet, tls-extra, http-types, configurator,
     xml-conduit-writer, xml-conduit, xml-types, conduit, data-default,
     text, bytestring, iconv,
     unordered-containers, mtl
diff --git a/src/Network/SOAP/Transport/HTTP/Conduit.hs b/src/Network/SOAP/Transport/HTTP/Conduit.hs
--- a/src/Network/SOAP/Transport/HTTP/Conduit.hs
+++ b/src/Network/SOAP/Transport/HTTP/Conduit.hs
@@ -6,7 +6,7 @@
 module Network.SOAP.Transport.HTTP.Conduit
     (
       -- * Initialization
-      initTransport, initTransport_
+      initTransport, initTransport_, confTransport
     , EndpointURL
       -- * Making a request
     , RequestP, clientCert, traceRequest
@@ -20,14 +20,19 @@
 import Network.HTTP.Conduit
 import Network.HTTP.Types(Status(..))
 import Control.Monad.Trans.Resource
+
+import           Data.Configurator (require, lookupDefault)
+import           Data.Configurator.Types (Config)
 import           Codec.Text.IConv (EncodingName, convertFuzzy, Fuzzy(Transliterate))
 import qualified Network.TLS.Extra as TLS
 
+import           Data.Text (Text)
 import qualified Data.ByteString.Char8 as BS
 import           Data.ByteString.Lazy.Char8 (ByteString, unpack, fromChunks)
 
 import Debug.Trace (trace)
 import Control.Exception as E
+import Data.Monoid ((<>))
 
 import Network.SOAP.Transport
 import Network.SOAP.Exception
@@ -55,6 +60,37 @@
 -- | Create a transport without any request and body processing.
 initTransport_ :: EndpointURL -> IO Transport
 initTransport_ url = initTransport url id id
+
+-- | Load common transport parameters from a configurator file.
+--
+-- > soap {
+-- >   url = "https://vendor.tld/service/"
+-- >   client_cert = "etc/client.pem"
+-- >   client_key = "etc/client.key"
+-- >   trace = true
+-- > }
+--
+-- Only url field is required.
+--
+-- > import Data.Configurator (load, Worth(Required))
+-- > main = do
+-- >     transport <- confTransport "soap" =<< load [Required "etc/example.conf"]
+confTransport :: Text -> Config -> IO Transport
+confTransport section conf = do
+    url <- require conf (section <> ".url")
+
+    cCert <- lookupDefault "" conf (section <> ".client_cert")
+    cKey <- lookupDefault "" conf (section <> ".client_key")
+    cc <- if null cCert
+              then return id
+              else clientCert cCert cKey
+
+    tracer <- lookupDefault False conf (section <> ".trace")
+    let (tr, tb) = if tracer
+                       then (traceRequest, traceBody)
+                       else (id, id)
+
+    initTransport url (tr . cc) tb
 
 -- | Render document, submit it as a POST request and retrieve a body.
 runQuery :: Manager
