diff --git a/invoice/src/main/resources/org/killbill/billing/invoice/migration/V20190222142211__invoice_history_tables.sql b/invoice/src/main/resources/org/killbill/billing/invoice/migration/V20190222142211__invoice_history_tables.sql
new file mode 100644
index 0000000..d50647a
--- /dev/null
+++ b/invoice/src/main/resources/org/killbill/billing/invoice/migration/V20190222142211__invoice_history_tables.sql
@@ -0,0 +1,104 @@
+DROP TABLE IF EXISTS invoice_tracking_id_history;
+CREATE TABLE invoice_tracking_id_history (
+ record_id serial unique,
+ id varchar(36) NOT NULL,
+ target_record_id bigint /*! unsigned */ not null,
+ tracking_id varchar(128) NOT NULL,
+ invoice_id varchar(36) NOT NULL,
+ subscription_id varchar(36),
+ unit_type varchar(255) NOT NULL,
+ record_date date NOT NULL,
+ is_active boolean default true,
+ change_type varchar(6) NOT NULL,
+ created_by varchar(50) NOT NULL,
+ created_date datetime NOT NULL,
+ updated_by varchar(50) NOT NULL,
+ updated_date datetime NOT NULL,
+ account_record_id bigint /*! unsigned */ not null,
+ tenant_record_id bigint /*! unsigned */ not null default 0,
+ PRIMARY KEY(record_id)
+) /*! CHARACTER SET utf8 COLLATE utf8_bin */;
+CREATE INDEX invoice_tracking_id_history_target_record_id ON invoice_tracking_id_history(target_record_id);
+CREATE INDEX invoice_tracking_id_history_tenant_record_id ON invoice_tracking_id_history(tenant_record_id);
+
+DROP TABLE IF EXISTS invoice_item_history;
+CREATE TABLE invoice_item_history (
+ record_id serial unique,
+ id varchar(36) NOT NULL,
+ target_record_id bigint /*! unsigned */ not null,
+ type varchar(24) NOT NULL,
+ invoice_id varchar(36) NOT NULL,
+ account_id varchar(36) NOT NULL,
+ child_account_id varchar(36),
+ bundle_id varchar(36),
+ subscription_id varchar(36),
+ description varchar(255),
+ product_name varchar(255),
+ plan_name varchar(255),
+ phase_name varchar(255),
+ usage_name varchar(255),
+ start_date date,
+ end_date date,
+ amount numeric(15,9) NOT NULL,
+ rate numeric(15,9) NULL,
+ currency varchar(3) NOT NULL,
+ linked_item_id varchar(36),
+ quantity int,
+ item_details text,
+ change_type varchar(6) NOT NULL,
+ created_by varchar(50) NOT NULL,
+ created_date datetime NOT NULL,
+ account_record_id bigint /*! unsigned */ not null,
+ tenant_record_id bigint /*! unsigned */ not null default 0,
+ PRIMARY KEY(record_id)
+) /*! CHARACTER SET utf8 COLLATE utf8_bin */;
+CREATE INDEX invoice_item_history_target_record_id ON invoice_item_history(target_record_id);
+CREATE INDEX invoice_item_history_tenant_record_id ON invoice_item_history(tenant_record_id);
+
+
+DROP TABLE IF EXISTS invoice_history;
+CREATE TABLE invoice_history (
+ record_id serial unique,
+ id varchar(36) NOT NULL,
+ target_record_id bigint /*! unsigned */ not null,
+ account_id varchar(36) NOT NULL,
+ invoice_date date NOT NULL,
+ target_date date,
+ currency varchar(3) NOT NULL,
+ status varchar(15) NOT NULL DEFAULT 'COMMITTED',
+ migrated bool NOT NULL,
+ parent_invoice bool NOT NULL DEFAULT FALSE,
+ change_type varchar(6) NOT NULL,
+ created_by varchar(50) NOT NULL,
+ created_date datetime NOT NULL,
+ account_record_id bigint /*! unsigned */ not null,
+ tenant_record_id bigint /*! unsigned */ not null default 0,
+ PRIMARY KEY(record_id)
+) /*! CHARACTER SET utf8 COLLATE utf8_bin */;
+CREATE INDEX invoice_history_target_record_id ON invoice_history(target_record_id);
+CREATE INDEX invoice_history_tenant_record_id ON invoice_history(tenant_record_id);
+
+DROP TABLE IF EXISTS invoice_payment_history;
+CREATE TABLE invoice_payment_history (
+ record_id serial unique,
+ id varchar(36) NOT NULL,
+ target_record_id bigint /*! unsigned */ not null,
+ type varchar(24) NOT NULL,
+ invoice_id varchar(36) NOT NULL,
+ payment_id varchar(36),
+ payment_date datetime NOT NULL,
+ amount numeric(15,9) NOT NULL,
+ currency varchar(3) NOT NULL,
+ processed_currency varchar(3) NOT NULL,
+ payment_cookie_id varchar(255) DEFAULT NULL,
+ linked_invoice_payment_id varchar(36) DEFAULT NULL,
+ success bool DEFAULT true,
+ change_type varchar(6) NOT NULL,
+ created_by varchar(50) NOT NULL,
+ created_date datetime NOT NULL,
+ account_record_id bigint /*! unsigned */ not null,
+ tenant_record_id bigint /*! unsigned */ not null default 0,
+ PRIMARY KEY(record_id)
+) /*! CHARACTER SET utf8 COLLATE utf8_bin */;
+CREATE INDEX invoice_payment_history_target_record_id ON invoice_payment_history(target_record_id);
+CREATE INDEX invoice_payment_history_tenant_record_id ON invoice_payment_history(tenant_record_id);