diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
 # CHANGELOG
 
+## master
+
+
+## v0.1.0.1
+
+* Remove newlines at end of generated CSV files to fix non-fatal errors when
+  importing into CoinTracking.
+
+
 ## v0.1.0.0
 
 * Initial release
diff --git a/cointracking-imports.cabal b/cointracking-imports.cabal
--- a/cointracking-imports.cabal
+++ b/cointracking-imports.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           cointracking-imports
-version:        0.1.0.0
+version:        0.1.0.1
 synopsis:       Generate CSV & XLSX files for importing into CoinTracking.
 description:    @cointracking-imports@ is a library for generating CSV & XLSX files to use
                 with <https://cointracking.info CoinTracking>'s Import feature. You
diff --git a/src/Web/CoinTracking/Imports.hs b/src/Web/CoinTracking/Imports.hs
--- a/src/Web/CoinTracking/Imports.hs
+++ b/src/Web/CoinTracking/Imports.hs
@@ -65,8 +65,13 @@
 
 -- | Generate the CoinTracking CSV Import for the data, prepended by
 -- a header row.
+--
+-- Note: the resulting 'LBS.ByteString' has it's final newline removed, as
+-- CoinTracking's Import creates a double entry with newlines at the end of
+-- an import file.
 coinTrackingCsvImport :: [CTImportData] -> LBS.ByteString
-coinTrackingCsvImport = (headerRow <>) . encodeWith csvEncodingOptions
+coinTrackingCsvImport =
+    (headerRow <>) . LBC.init . encodeWith csvEncodingOptions
 
 -- | The CSV header row to prepend to the generated output.
 headerRow :: LBS.ByteString
