diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for irc-core
 
+## 2.1.0.0  -- 2016-08-13
+
+* Add BatchStart and BatchEnd messages
+
 ## 2.0.0.0  -- 2016-08-08
 
 * Extracted from glirc-2.5
diff --git a/irc-core.cabal b/irc-core.cabal
--- a/irc-core.cabal
+++ b/irc-core.cabal
@@ -1,5 +1,5 @@
 name:                irc-core
-version:             2.0.0.0
+version:             2.1.0.0
 synopsis:            IRC core library for glirc
 description:         IRC core library for glirc
                      .
diff --git a/src/Irc/Message.hs b/src/Irc/Message.hs
--- a/src/Irc/Message.hs
+++ b/src/Irc/Message.hs
@@ -62,6 +62,8 @@
   | Ping [Text] -- ^ parameters
   | Pong [Text] -- ^ parameters
   | Error !Text -- ^ message
+  | BatchStart Text Text [Text] -- ^ reference-id type parameters
+  | BatchEnd   Text             -- ^ reference-id
   deriving Show
 
 -- | Sub-commands of the CAP command
@@ -147,6 +149,14 @@
     "ERROR" | [reason] <- view msgParams msg ->
             Error reason
 
+    "BATCH" | refid : ty : params <- view msgParams msg
+            , Just ('+',refid') <- Text.uncons refid ->
+            BatchStart refid' ty params
+
+    "BATCH" | [refid] <- view msgParams msg
+            , Just ('-',refid') <- Text.uncons refid ->
+            BatchEnd refid'
+
     _      -> UnknownMsg msg
 
 -- | Parse a CTCP encoded message:
@@ -195,6 +205,8 @@
     Error{}                       -> TargetNetwork
     Cap{}                         -> TargetNetwork
     Reply{}                       -> TargetNetwork
+    BatchStart{}                  -> TargetHidden
+    BatchEnd{}                    -> TargetHidden
 
 -- | 'UserInfo' of the user responsible for a message.
 msgActor :: IrcMsg -> Maybe UserInfo
@@ -218,6 +230,8 @@
     Pong{}        -> Nothing
     Error{}       -> Nothing
     Cap{}         -> Nothing
+    BatchStart{}  -> Nothing
+    BatchEnd{}    -> Nothing
 
 -- | Text representation of an IRC message to be used for matching with
 -- regular expressions.
@@ -242,6 +256,8 @@
     Cap _ xs       -> Text.unwords xs
     Error t        -> t
     Authenticate{} -> ""
+    BatchStart{}   -> ""
+    BatchEnd{}     -> ""
 
 -- nickname   =  ( letter / special ) *8( letter / digit / special / "-" )
 -- letter     =  %x41-5A / %x61-7A       ; A-Z / a-z
