diff --git a/erpnext/accounts/doctype/subscriptions/subscriptions.py b/erpnext/accounts/doctype/subscriptions/subscriptions.py
index 457b277..bee1a05 100644
--- a/erpnext/accounts/doctype/subscriptions/subscriptions.py
+++ b/erpnext/accounts/doctype/subscriptions/subscriptions.py
@@ -22,10 +22,14 @@
 		self.set_current_invoice_end()
 
 	def set_current_invoice_start(self, date=None):
-		if not date:
-			self.current_invoice_start = nowdate()
-		elif self.trial_period_start and self.is_trialling():
+		if self.trial_period_start and self.is_trialling():
 			self.current_invoice_start = self.trial_period_start
+		elif not date:
+			current_invoice = self.get_current_invoice()
+			if not current_invoice:
+				self.current_invoice_start = nowdate()
+			else:
+				self.current_invoice_start = current_invoice.posting_date
 
 	def set_current_invoice_end(self):
 		if self.is_trialling():
@@ -100,8 +104,6 @@
 
 	def generate_invoice(self):
 		invoice = self.create_invoice()
-		invoice.save()
-		invoice.submit()
 		self.append('invoices', {'invoice': invoice.name})
 		self.save()	# Validates all over again but we don't mind
 		self.subscription_updated(invoice)
@@ -125,14 +127,13 @@
 			invoice.taxes_and_charges = self.tax_template
 
 		# Due date
-		if cint(self.days_until_due):
-			invoice.append(
-				'payment_schedule', 
-				{
-					'due_date': add_days(nowdate(), cint(self.days_until_due)),
-					'invoice_portion': 100
-				}
-			)
+		invoice.append(
+			'payment_schedule', 
+			{
+				'due_date': add_days(self.current_invoice_end, cint(self.days_until_due)),
+				'invoice_portion': 100
+			}
+		)
 
 		# Discounts
 		if self.apply_additional_discount:
@@ -144,6 +145,9 @@
 		if self.additional_discount_amount:
 			invoice.additional_discount_amount = self.additional_discount_amount
 
+		invoice.save()
+		invoice.submit()
+
 		return invoice
 
 	def get_customer(self, subscriber_name):
@@ -160,4 +164,4 @@
 			return item_names
 
 	def subscription_updated(self, invoice):
-		pass
+		self.update_subscription_period()
diff --git a/erpnext/accounts/doctype/subscriptions/test_subscriptions.py b/erpnext/accounts/doctype/subscriptions/test_subscriptions.py
index 65c9423..1715042 100644
--- a/erpnext/accounts/doctype/subscriptions/test_subscriptions.py
+++ b/erpnext/accounts/doctype/subscriptions/test_subscriptions.py
@@ -5,7 +5,7 @@
 
 import frappe
 import unittest
-from frappe.utils.data import nowdate, add_days, get_last_day
+from frappe.utils.data import nowdate, add_days, get_last_day, cint, getdate
 
 
 class TestSubscriptions(unittest.TestCase):
@@ -54,8 +54,33 @@
 
 		self.assertEqual(subscription.trial_period_start, None)
 		self.assertEqual(subscription.trial_period_end, None)
-		self.assertEqual(subscription.current_invoice_start, nowdate())
+		self.assertEqual(subscription.current_invoice_start, getdate(nowdate()))
 		self.assertEqual(subscription.current_invoice_end, get_last_day(nowdate()))
 		self.assertEqual(len(subscription.invoices), 1)
 
+		subscription.delete()
+
+	def test_create_subscription_trial_with_wrong_dates(self):
+		subscription = frappe.new_doc('Subscriptions')
+		subscription.subscriber = '_Test Customer'
+		subscription.trial_period_end = nowdate()
+		subscription.trial_period_start = add_days(nowdate(), 30)
+		subscription.append('plans', {'plan': '_Test Plan Name'})
+
+		self.assertRaises(frappe.ValidationError, subscription.save)
+
+	def test_subscription_invoice_days_until_due(self):
+		subscription = frappe.new_doc('Subscriptions')
+		subscription.subscriber = '_Test Customer'
+		subscription.append('plans', {'plan': '_Test Plan Name'})
+		subscription.save()
+
+		generated_invoice_name = subscription.invoices[-1].invoice
+		invoice = frappe.get_doc('Sales Invoice', generated_invoice_name)
+
+		self.assertEqual(
+			invoice.due_date, 
+			add_days(subscription.current_invoice_end, cint(subscription.days_until_due))
+		)
+
 		subscription.delete()
\ No newline at end of file
