           (->> attributes
                (resolve-account context)
                (resolve-reconciliation-transaction-item-ids context)
-               (reconciliations/create storage)))
+               (reconciliations/create storage)
+               throw-on-invalid))
         reconciliations))
 
 (defn- realize-reconciliations

  (:require [clojure.pprint :refer [pprint]]
            [clj-money.util :refer [pprint-and-return]]
            [clj-money.models.helpers :refer [with-transacted-storage]]
            [clj-money.models.users :as users]
            [clj-money.models.entities :as entities]
            [clj-money.models.accounts :as accounts]
            [clj-money.models.budgets :as budgets]
            [clj-money.models.transactions :as transactions]
            [clj-money.models.reconciliations :as reconciliations]))

(defn- create-users
  [storage users]

  (update-in context [:budgets] #(create-budgets storage context %)))

(defn- resolve-transaction-item-ids
  [context account-id items]
  (mapv (fn [{:keys [transaction-date amount]}]
          (->> context
               :transactions
               (filter #(= transaction-date (:transaction-date %)))
               (mapcat :items)
               (filter #(and (= account-id (:account-id %))
                             (= amount (:amount %))))
               (map :id)
               first))
        items))

(defn- resolve-reconciliation-transaction-item-ids
  [context reconciliation]
  (update-in reconciliation
             [:item-ids]
             #(resolve-transaction-item-ids context
                                            (:account-id reconciliation)
                                            %)))

(defn- create-reconciliations
  [storage context reconciliations]
